From 976627d5ba2939ffcdf34b68d620b566ba1afa93 Mon Sep 17 00:00:00 2001 From: Martin Holst Swende Date: Thu, 16 Jul 2015 23:50:41 +0200 Subject: [PATCH] Fixed (?) issues from PR #129 --- armsrc/appmain.c | 1 + client/cmdlfawid.c | 10 +++++++--- client/cmdlft55xx.c | 5 +++++ 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 37899f57..e5d448da 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -667,6 +667,7 @@ void UsbPacketReceived(uint8_t *packet, int len) break; case CMD_T55XX_WRITE_BLOCK: T55xxWriteBlock(c->arg[0], c->arg[1], c->arg[2], c->d.asBytes[0]); + cmd_send(CMD_ACK,0,0,0,0,0); break; case CMD_T55XX_READ_TRACE: T55xxReadTrace(); diff --git a/client/cmdlfawid.c b/client/cmdlfawid.c index 17837a11..06397e70 100644 --- a/client/cmdlfawid.c +++ b/client/cmdlfawid.c @@ -16,7 +16,7 @@ #include "cmdparser.h" // CmdsParse, CmdsHelp #include "cmdlfawid.h" // AWID function declarations #include "lfdemod.h" // parityTest - +#include "cmdmain.h" 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; uint8_t BitStream[12]; uint8_t *BS=BitStream; - UsbCommand c; - + UsbCommand c, resp; if (sscanf(Cmd, "%u %u", &fc, &cn ) != 2) { return usage_lf_awid_clone(); @@ -206,6 +205,11 @@ int CmdAWIDClone(const char *Cmd) c.arg[1] = i; c.arg[2] = 0; SendCommand(&c); + if (!WaitForResponseTimeout(CMD_ACK, &resp, 1000)){ + PrintAndLog("Error occurred, device did not respond during write operation."); + return -1; + } + } } return 0; diff --git a/client/cmdlft55xx.c b/client/cmdlft55xx.c index b357e71c..0007f175 100644 --- a/client/cmdlft55xx.c +++ b/client/cmdlft55xx.c @@ -670,6 +670,7 @@ int CmdT55xxWriteBlock(const char *Cmd) } UsbCommand c = {CMD_T55XX_WRITE_BLOCK, {data, block, 0}}; + UsbCommand resp; c.d.asBytes[0] = 0x0; PrintAndLog("Writing to block: %d data : 0x%08X", block, data); @@ -681,6 +682,10 @@ int CmdT55xxWriteBlock(const char *Cmd) PrintAndLog("pwd : 0x%08X", password); } 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; } -- 2.39.2