Fixed (?) issues from PR #129

This commit is contained in:
Martin Holst Swende 2015-07-16 23:50:41 +02:00
commit 976627d5ba
3 changed files with 13 additions and 3 deletions

View file

@ -667,6 +667,7 @@ void UsbPacketReceived(uint8_t *packet, int len)
break; break;
case CMD_T55XX_WRITE_BLOCK: case CMD_T55XX_WRITE_BLOCK:
T55xxWriteBlock(c->arg[0], c->arg[1], c->arg[2], c->d.asBytes[0]); T55xxWriteBlock(c->arg[0], c->arg[1], c->arg[2], c->d.asBytes[0]);
cmd_send(CMD_ACK,0,0,0,0,0);
break; break;
case CMD_T55XX_READ_TRACE: case CMD_T55XX_READ_TRACE:
T55xxReadTrace(); T55xxReadTrace();

View file

@ -16,7 +16,7 @@
#include "cmdparser.h" // CmdsParse, CmdsHelp #include "cmdparser.h" // CmdsParse, CmdsHelp
#include "cmdlfawid.h" // AWID function declarations #include "cmdlfawid.h" // AWID function declarations
#include "lfdemod.h" // parityTest #include "lfdemod.h" // parityTest
#include "cmdmain.h"
static int CmdHelp(const char *Cmd); static int CmdHelp(const char *Cmd);
@ -176,8 +176,7 @@ int CmdAWIDClone(const char *Cmd)
uint32_t fc=0,cn=0,blocks[4] = {0x00107060, 0, 0, 0x11111111}, i=0; uint32_t fc=0,cn=0,blocks[4] = {0x00107060, 0, 0, 0x11111111}, i=0;
uint8_t BitStream[12]; uint8_t BitStream[12];
uint8_t *BS=BitStream; uint8_t *BS=BitStream;
UsbCommand c; UsbCommand c, resp;
if (sscanf(Cmd, "%u %u", &fc, &cn ) != 2) { if (sscanf(Cmd, "%u %u", &fc, &cn ) != 2) {
return usage_lf_awid_clone(); return usage_lf_awid_clone();
@ -206,6 +205,11 @@ int CmdAWIDClone(const char *Cmd)
c.arg[1] = i; c.arg[1] = i;
c.arg[2] = 0; c.arg[2] = 0;
SendCommand(&c); SendCommand(&c);
if (!WaitForResponseTimeout(CMD_ACK, &resp, 1000)){
PrintAndLog("Error occurred, device did not respond during write operation.");
return -1;
}
} }
} }
return 0; return 0;

View file

@ -670,6 +670,7 @@ int CmdT55xxWriteBlock(const char *Cmd)
} }
UsbCommand c = {CMD_T55XX_WRITE_BLOCK, {data, block, 0}}; UsbCommand c = {CMD_T55XX_WRITE_BLOCK, {data, block, 0}};
UsbCommand resp;
c.d.asBytes[0] = 0x0; c.d.asBytes[0] = 0x0;
PrintAndLog("Writing to block: %d data : 0x%08X", block, data); PrintAndLog("Writing to block: %d data : 0x%08X", block, data);
@ -681,6 +682,10 @@ int CmdT55xxWriteBlock(const char *Cmd)
PrintAndLog("pwd : 0x%08X", password); PrintAndLog("pwd : 0x%08X", password);
} }
SendCommand(&c); 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; return 0;
} }