diff --git a/Production/Firmware/aic_pico.uf2 b/Production/Firmware/aic_pico.uf2 index 366867c..2ab7020 100644 Binary files a/Production/Firmware/aic_pico.uf2 and b/Production/Firmware/aic_pico.uf2 differ diff --git a/firmware/src/lib/pn5180.c b/firmware/src/lib/pn5180.c index 5fb664d..356b772 100644 --- a/firmware/src/lib/pn5180.c +++ b/firmware/src/lib/pn5180.c @@ -364,6 +364,16 @@ bool pn5180_poll_felica(uint8_t uid[8], uint8_t pmm[8], uint8_t syscode[2], bool memcpy(uid, out.idm, 8); memcpy(pmm, out.pmm, 8); memcpy(syscode, out.syscode, 2); + + /* double check the result */ + pn5180_send_data(cmd, sizeof(cmd), 0x00); + sleep_ms(1); + pn5180_read_data((uint8_t *)&out, sizeof(out)); + if ((out.len != sizeof(out)) || (out.cmd != 0x01) || + (memcmp(uid, out.idm, 8) != 0)) { + return false; + } + memcpy(idm_cache, uid, 8); return true; } diff --git a/firmware/src/main.c b/firmware/src/main.c index d1bf017..8b8e3f1 100644 --- a/firmware/src/main.c +++ b/firmware/src/main.c @@ -199,15 +199,6 @@ static void cardio_run() nfc_card_t card = nfc_detect_card(); nfc_rf_field(false); - /* Double check ID, some module gives random false data */ - nfc_rf_field(true); - nfc_card_t card_confirm = nfc_detect_card(); - nfc_rf_field(false); - - if (memcmp(&card, &card_confirm, sizeof(card)) != 0) { - return; - } - if (memcmp(&old_card, &card, sizeof(old_card)) == 0) { return; }