mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-19 13:00:42 -07:00
rework 14b apdu timeout computations
This commit is contained in:
parent
204ae46bf7
commit
975034854d
2 changed files with 5 additions and 5 deletions
|
@ -1201,7 +1201,7 @@ static int Get14443bAnswerFromTag(uint8_t *response, uint16_t max_len, int timeo
|
||||||
|
|
||||||
if (Handle14443bSamplesFromTag(ci, cq)) {
|
if (Handle14443bSamplesFromTag(ci, cq)) {
|
||||||
|
|
||||||
*eof_time = dma_start_time + (samples) - DELAY_TAG_TO_ARM; // end of EOF
|
*eof_time = GetCountSspClkDelta(dma_start_time) - (DELAY_TAG_TO_ARM * 128); // end of EOF
|
||||||
|
|
||||||
if (Demod.len > Demod.max_len) {
|
if (Demod.len > Demod.max_len) {
|
||||||
ret = -2; // overflow
|
ret = -2; // overflow
|
||||||
|
@ -1209,7 +1209,7 @@ static int Get14443bAnswerFromTag(uint8_t *response, uint16_t max_len, int timeo
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (samples > timeout && Demod.state < DEMOD_PHASE_REF_TRAINING) {
|
if (((GetCountSspClkDelta(dma_start_time) >> 7) > timeout) && Demod.state < DEMOD_PHASE_REF_TRAINING) {
|
||||||
ret = -1;
|
ret = -1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1225,7 +1225,7 @@ static int Get14443bAnswerFromTag(uint8_t *response, uint16_t max_len, int timeo
|
||||||
- (Demod.len * (8 + 2)) // time for byte transfers
|
- (Demod.len * (8 + 2)) // time for byte transfers
|
||||||
- (12) // time for SOF transfer
|
- (12) // time for SOF transfer
|
||||||
- (12); // time for EOF transfer
|
- (12); // time for EOF transfer
|
||||||
LogTrace(Demod.output, Demod.len, (sof_time * 4), (*eof_time * 4), NULL, false);
|
LogTrace(Demod.output, Demod.len, sof_time, *eof_time, NULL, false);
|
||||||
}
|
}
|
||||||
return Demod.len;
|
return Demod.len;
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
#include "mifare/ndef.h" // NDEFRecordsDecodeAndPrint
|
#include "mifare/ndef.h" // NDEFRecordsDecodeAndPrint
|
||||||
|
|
||||||
#define TIMEOUT 2000
|
#define TIMEOUT 2000
|
||||||
#define APDU_TIMEOUT 4000
|
#define APDU_TIMEOUT 2000
|
||||||
|
|
||||||
// iso14b apdu input frame length
|
// iso14b apdu input frame length
|
||||||
static uint16_t apdu_frame_length = 0;
|
static uint16_t apdu_frame_length = 0;
|
||||||
|
@ -1450,7 +1450,7 @@ static int handle_14b_apdu(bool chainingin, uint8_t *datain, int datainlen, bool
|
||||||
SendCommandMIX(CMD_HF_ISO14443B_COMMAND, ISO14B_APDU | flags, 0, time_wait, NULL, 0);
|
SendCommandMIX(CMD_HF_ISO14443B_COMMAND, ISO14B_APDU | flags, 0, time_wait, NULL, 0);
|
||||||
|
|
||||||
PacketResponseNG resp;
|
PacketResponseNG resp;
|
||||||
if (WaitForResponseTimeout(CMD_HF_ISO14443B_COMMAND, &resp, APDU_TIMEOUT)) {
|
if (WaitForResponseTimeout(CMD_HF_ISO14443B_COMMAND, &resp, MAX(APDU_TIMEOUT, user_timeout))) {
|
||||||
uint8_t *recv = resp.data.asBytes;
|
uint8_t *recv = resp.data.asBytes;
|
||||||
int rlen = resp.oldarg[0];
|
int rlen = resp.oldarg[0];
|
||||||
uint8_t res = resp.oldarg[1];
|
uint8_t res = resp.oldarg[1];
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue