X-Git-Url: http://cvs.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/daf8b85cdaed21ace94bae1a49526d09ea389c73..5b59bf20c73825e3732185d74142c8b955e68758:/client/cmdlft55xx.c

diff --git a/client/cmdlft55xx.c b/client/cmdlft55xx.c
index b357e71c..3f865b1d 100644
--- a/client/cmdlft55xx.c
+++ b/client/cmdlft55xx.c
@@ -50,11 +50,11 @@ int usage_t55xx_config(){
 }
 int usage_t55xx_read(){
 	PrintAndLog("Usage:  lf t55xx read <block> <password>");
-	PrintAndLog("     <block>, block number to read. Between 0-7");
-	PrintAndLog("     <password>, OPTIONAL password (8 hex characters)");
-	PrintAndLog("");
+    PrintAndLog("     <block>, block number to read. Between 0-7");
+    PrintAndLog("     <password>, OPTIONAL password (8 hex characters)");
+    PrintAndLog("");
 	PrintAndLog("Examples:");
-	PrintAndLog("      lf t55xx read 0           - read data from block 0");
+    PrintAndLog("      lf t55xx read 0           - read data from block 0");
 	PrintAndLog("      lf t55xx read 0 feedbeef  - read data from block 0 password feedbeef");
 	PrintAndLog("");
 	return 0;
@@ -63,8 +63,8 @@ int usage_t55xx_write(){
 	PrintAndLog("Usage:  lf t55xx wr <block> <data> [password]");
 	PrintAndLog("     <block>, block number to write. Between 0-7");
 	PrintAndLog("     <data>,  4 bytes of data to write (8 hex characters)");
-	PrintAndLog("     [password], OPTIONAL password 4bytes (8 hex characters)");
-	PrintAndLog("");
+    PrintAndLog("     [password], OPTIONAL password 4bytes (8 hex characters)");
+    PrintAndLog("");
 	PrintAndLog("Examples:");
 	PrintAndLog("      lf t55xx wr 3 11223344           - write 11223344 to block 3");
 	PrintAndLog("      lf t55xx wr 3 11223344 feedbeef  - write 11223344 to block 3 password feedbeef");
@@ -242,6 +242,7 @@ int CmdT55xxReadBlock(const char *Cmd) {
 		c.d.asBytes[0] = 0x1; 
 	}
 
+	clearCommandBuffer();
 	SendCommand(&c);
 	if ( !WaitForResponseTimeout(CMD_ACK,NULL,2500) ) {
 		PrintAndLog("command execution time out");
@@ -666,9 +667,10 @@ int CmdT55xxWriteBlock(const char *Cmd)
 
 	if (block > 7) {
 		PrintAndLog("Block number must be between 0 and 7");
-		return 1;
+		return 2;
 	}
 	
+	UsbCommand resp;
 	UsbCommand c = {CMD_T55XX_WRITE_BLOCK, {data, block, 0}};
  	c.d.asBytes[0] = 0x0; 
 
@@ -680,7 +682,12 @@ int CmdT55xxWriteBlock(const char *Cmd)
 		c.d.asBytes[0] = 0x1; 
 		PrintAndLog("pwd   : 0x%08X", password);
 	}
+	clearCommandBuffer();
 	SendCommand(&c);
+	if (!WaitForResponseTimeout(CMD_ACK, &resp, 1000)){
+		PrintAndLog("Error occurred, device did not ACK write operation. (May be due to old firmware)");
+		return -1;
+	}
 	return 0;
 }
 
@@ -878,6 +885,7 @@ int AquireData( uint8_t block ){
 		// c.d.asBytes[0] = 0x1; 
 	// }
 
+	clearCommandBuffer();
 	SendCommand(&c);
 	if ( !WaitForResponseTimeout(CMD_ACK,NULL,2500) ) {
 		PrintAndLog("command execution time out");
@@ -1050,6 +1058,7 @@ char * GetSelectedModulationStr( uint8_t id){
 	return buf;
 }
 
+/*
 uint32_t PackBits(uint8_t start, uint8_t len, uint8_t* bits){
 	
 	int i = start;
@@ -1063,7 +1072,7 @@ uint32_t PackBits(uint8_t start, uint8_t len, uint8_t* bits){
 
 	return tmp;
 }
-
+*/
 static command_t CommandTable[] =
 {
   {"help",   CmdHelp,           1, "This help"},