From 5939164635a8b45b2d2f296a50c99020497878f7 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 21 Jan 2018 18:34:29 +0100 Subject: [PATCH] FIX: 'hf 15' timouts bugs when wait is set == 0... thanks @lnv42 for fix https://github.com/lnv42/proxmark3/commit/84cb4f6bbf8811ba389cd5affa994d837f712894 --- armsrc/iso15693.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/armsrc/iso15693.c b/armsrc/iso15693.c index 33752a614..e23f2c4fe 100644 --- a/armsrc/iso15693.c +++ b/armsrc/iso15693.c @@ -228,7 +228,6 @@ static void TransmitTo15693Tag(const uint8_t *cmd, int len, int *samples, int *w FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_READER_TX); if (wait) { - if (*wait < 10) { *wait = 10; } for (c = 0; c < *wait;) { if (AT91C_BASE_SSC->SSC_SR & (AT91C_SSC_TXRDY)) { AT91C_BASE_SSC->SSC_THR = 0x00; // For exact timing! @@ -242,9 +241,7 @@ static void TransmitTo15693Tag(const uint8_t *cmd, int len, int *samples, int *w } c = 0; - for(;;) { - WDT_HIT(); - + for(;;) { if (AT91C_BASE_SSC->SSC_SR & (AT91C_SSC_TXRDY)) { AT91C_BASE_SSC->SSC_THR = cmd[c]; if( ++c >= len) break; @@ -252,6 +249,7 @@ static void TransmitTo15693Tag(const uint8_t *cmd, int len, int *samples, int *w if (AT91C_BASE_SSC->SSC_SR & (AT91C_SSC_RXRDY)) { r = AT91C_BASE_SSC->SSC_RHR; (void)r; } + WDT_HIT(); } if (samples) { @@ -271,7 +269,6 @@ static void TransmitTo15693Reader(const uint8_t *cmd, int len, int *samples, int FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_SIMULATOR|FPGA_HF_SIMULATOR_MODULATE_424K); if (wait) { - if (*wait < 10) { *wait = 10; } for (c = 0; c < *wait;) { if (AT91C_BASE_SSC->SSC_SR & (AT91C_SSC_TXRDY)) { AT91C_BASE_SSC->SSC_THR = 0x00; // For exact timing! @@ -286,7 +283,6 @@ static void TransmitTo15693Reader(const uint8_t *cmd, int len, int *samples, int c = 0; for(;;) { - WDT_HIT(); if(AT91C_BASE_SSC->SSC_SR & (AT91C_SSC_TXRDY)) { AT91C_BASE_SSC->SSC_THR = cmd[c]; if( ++c >= len) break; @@ -294,6 +290,7 @@ static void TransmitTo15693Reader(const uint8_t *cmd, int len, int *samples, int if(AT91C_BASE_SSC->SSC_SR & (AT91C_SSC_RXRDY)) { r = AT91C_BASE_SSC->SSC_RHR; (void)r; } + WDT_HIT(); } if (samples) { if (wait)