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

diff --git a/client/cmdlft55xx.c b/client/cmdlft55xx.c
index 2953e780..5dc5bbee 100644
--- a/client/cmdlft55xx.c
+++ b/client/cmdlft55xx.c
@@ -37,7 +37,7 @@ int usage_t55xx_config(){
 	PrintAndLog("Options:        ");
 	PrintAndLog("       h                        This help");
 	PrintAndLog("       b <8|16|32|40|50|64|100|128>     Set bitrate");
-	PrintAndLog("       d <FSK|FSK1|FSK1a|FSK2|FSK2a|ASK|PSK1|PSK2|NZ|BI|BIa>  Set demodulation FSK / ASK / PSK / NZ / Biphase / Biphase A");
+	PrintAndLog("       d <FSK|FSK1|FSK1a|FSK2|FSK2a|ASK|PSK1|PSK2|NRZ|BI|BIa>  Set demodulation FSK / ASK / PSK / NZ / Biphase / Biphase A");
 	PrintAndLog("       i [1]                            Invert data signal, defaults to normal");
 	PrintAndLog("       o [offset]                       Set offset, where data should start decode in bitstream");
 	PrintAndLog("");
@@ -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");
@@ -367,6 +368,7 @@ bool tryDetectModulation(){
 		}
 	} else {
 		clk = GetAskClock("", FALSE, FALSE);
+		
 		if (clk>0) {
 			sprintf(cmdStr,"%d", clk/2);
 			CmdLtrim(cmdStr);
@@ -666,9 +668,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 +683,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 +886,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");