X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/322f7eb111e0337e8a509fa104c23502081d6df5..f445df401eef592968a87247137930b3c3bf52fa:/client/cmdlft55xx.c?ds=sidebyside

diff --git a/client/cmdlft55xx.c b/client/cmdlft55xx.c
index 3134dde7..3f865b1d 100644
--- a/client/cmdlft55xx.c
+++ b/client/cmdlft55xx.c
@@ -61,13 +61,13 @@ int usage_t55xx_read(){
 }
 int usage_t55xx_write(){
 	PrintAndLog("Usage:  lf t55xx wr <block> <data> [password]");
-    PrintAndLog("     <block>, block number to read. Between 0-7");
+	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("Examples:");
-    PrintAndLog("      lf t55xx wd 3 11223344           - write 11223344 to block 3");
-	PrintAndLog("      lf t55xx wd 3 11223344 feedbeef  - write 11223344 to block 3 password feedbeef");
+	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");
 	PrintAndLog("");
 	return 0;
 }
@@ -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");
@@ -370,28 +371,28 @@ bool tryDetectModulation(){
 		if (clk>0) {
 			sprintf(cmdStr,"%d", clk/2);
 			CmdLtrim(cmdStr);
-			if ( ASKDemod("0 0 1", FALSE, FALSE, 1) && test(DEMOD_ASK, &tests[hits].offset, &bitRate)) {
+			if ( ASKDemod("0 0 0", FALSE, FALSE, 1) && test(DEMOD_ASK, &tests[hits].offset, &bitRate)) {
 				tests[hits].modulation = DEMOD_ASK;
 				tests[hits].bitrate = bitRate;
 				tests[hits].inverted = FALSE;
 				tests[hits].block0 = PackBits(tests[hits].offset, 32, DemodBuffer);
 				++hits;
 			}
-			if ( ASKDemod("0 1 1", FALSE, FALSE, 1)  && test(DEMOD_ASK, &tests[hits].offset, &bitRate)) {
+			if ( ASKDemod("0 1 0", FALSE, FALSE, 1)  && test(DEMOD_ASK, &tests[hits].offset, &bitRate)) {
 				tests[hits].modulation = DEMOD_ASK;
 				tests[hits].bitrate = bitRate;
 				tests[hits].inverted = TRUE;
 				tests[hits].block0 = PackBits(tests[hits].offset, 32, DemodBuffer);
 				++hits;
 			}
-			if ( ASKbiphaseDemod("0 0 0 1", FALSE) && test(DEMOD_BI, &tests[hits].offset, &bitRate) ) {
+			if ( ASKbiphaseDemod("0 0 0 0", FALSE) && test(DEMOD_BI, &tests[hits].offset, &bitRate) ) {
 				tests[hits].modulation = DEMOD_BI;
 				tests[hits].bitrate = bitRate;
 				tests[hits].inverted = FALSE;
 				tests[hits].block0 = PackBits(tests[hits].offset, 32, DemodBuffer);
 				++hits;
 			}
-			if ( ASKbiphaseDemod("0 0 1 1", FALSE) && test(DEMOD_BIa, &tests[hits].offset, &bitRate) ) {
+			if ( ASKbiphaseDemod("0 0 1 0", FALSE) && test(DEMOD_BIa, &tests[hits].offset, &bitRate) ) {
 				tests[hits].modulation = DEMOD_BIa;
 				tests[hits].bitrate = bitRate;
 				tests[hits].inverted = TRUE;
@@ -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"},