From 8e8618c989297f173e06b64201bf909324078399 Mon Sep 17 00:00:00 2001 From: kormax Date: Thu, 16 Jun 2022 22:31:32 +0300 Subject: [PATCH] Replace rf reset with an s-block deselect when using 'hf 14a reader --ecp' --- armsrc/iso14443a.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index d6d365764..c897aa691 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -2445,6 +2445,7 @@ static int GetATQA(uint8_t *resp, uint8_t *resp_par, bool use_ecp, bool use_mags #define ECP_RETRY_TIMEOUT 100 #define WUPA_RETRY_TIMEOUT 10 // 10ms + // 0x26 - REQA // 0x52 - WAKE-UP // 0x7A - MAGESAFE WAKE UP @@ -2456,9 +2457,11 @@ static int GetATQA(uint8_t *resp, uint8_t *resp_par, bool use_ecp, bool use_mags } if (use_ecp) { - // We drop the field to bring the phone back into an 'IDLE' state - switch_off(); - set_tracing(true); + // In case a device was already selected, we send a S-BLOCK deselect to bring it into an idle state so it can be selected again + uint8_t deselect_cmd[] = {0xc2, 0xe0, 0xb4}; + ReaderTransmit(deselect_cmd, sizeof(deselect_cmd), NULL); + // Read response if present + ReaderReceive(resp, resp_par); } uint32_t save_iso14a_timeout = iso14a_get_timeout();