From b4802247dfe97dbfb3e4028de5d95c219d8c6a85 Mon Sep 17 00:00:00 2001 From: g3gg0 Date: Thu, 17 Nov 2022 01:45:22 +0100 Subject: [PATCH] always save file even when tag was not locked --- .../main/nfc/scenes/nfc_scene_nfcv_unlock.c | 2 +- lib/nfc/nfc_worker.c | 46 +++++++++---------- 2 files changed, 23 insertions(+), 25 deletions(-) diff --git a/applications/main/nfc/scenes/nfc_scene_nfcv_unlock.c b/applications/main/nfc/scenes/nfc_scene_nfcv_unlock.c index 4fabd2d99..96293a7c6 100644 --- a/applications/main/nfc/scenes/nfc_scene_nfcv_unlock.c +++ b/applications/main/nfc/scenes/nfc_scene_nfcv_unlock.c @@ -43,7 +43,7 @@ void nfc_scene_nfcv_unlock_set_state(Nfc* nfc, NfcSceneNfcVUnlockState state) { popup_reset(popup); if(nfc_worker_get_state(nfc->worker) == NfcWorkerStateNfcVUnlockAndSave) { - nfc_text_store_set(nfc, "SLIX-L_%02X%02X%02X%02X%02X%02X%02X%02X", + nfc_text_store_set(nfc, "SLIX_%02X%02X%02X%02X%02X%02X%02X%02X", nfc_data->uid[0], nfc_data->uid[1], nfc_data->uid[2], nfc_data->uid[3], nfc_data->uid[4], nfc_data->uid[5], nfc_data->uid[6], nfc_data->uid[7]); diff --git a/lib/nfc/nfc_worker.c b/lib/nfc/nfc_worker.c index ea1c72514..6533cc94c 100644 --- a/lib/nfc/nfc_worker.c +++ b/lib/nfc/nfc_worker.c @@ -164,7 +164,27 @@ void nfc_worker_nfcv_unlock(NfcWorker* nfc_worker) { ret = nfcv_inventory(NULL); if(ret == ERR_NONE) { - /* chip is also visible, so no action required */ + /* chip is also visible, so no action required, just save */ + if(nfc_worker->state == NfcWorkerStateNfcVUnlockAndSave) { + NfcVReader reader; + + if(!nfcv_read_card(&reader, &nfc_worker->dev_data->nfc_data, nfcv_data)) { + furi_hal_console_printf(" => failed, wait for chip to disappear.\r\n"); + snprintf(nfcv_data->error, sizeof(nfcv_data->error), "Read card\nfailed"); + nfc_worker->callback(NfcWorkerEventWrongCardDetected, nfc_worker->context); + } else { + furi_hal_console_printf(" => success, wait for chip to disappear.\r\n"); + nfc_worker->callback(NfcWorkerEventCardDetected, nfc_worker->context); + } + } else { + furi_hal_console_printf(" => success, wait for chip to disappear.\r\n"); + nfc_worker->callback(NfcWorkerEventCardDetected, nfc_worker->context); + } + + while(slix_l_get_random(NULL) == ERR_NONE) { + furi_delay_ms(100); + } + furi_hal_console_printf(" => chip is already visible, wait for chip to disappear.\r\n"); nfc_worker->callback(NfcWorkerEventAborted, nfc_worker->context); while(slix_l_get_random(NULL) == ERR_NONE) { @@ -200,29 +220,7 @@ void nfc_worker_nfcv_unlock(NfcWorker* nfc_worker) { ret = slix_l_unlock(4, rand, 0x0F0F0F0F); } } - if(ret == ERR_NONE) { - /* unlock succesful */ - if(nfc_worker->state == NfcWorkerStateNfcVUnlockAndSave) { - NfcVReader reader; - - if(!nfcv_read_card(&reader, &nfc_worker->dev_data->nfc_data, nfcv_data)) { - furi_hal_console_printf(" => failed, wait for chip to disappear.\r\n"); - snprintf(nfcv_data->error, sizeof(nfcv_data->error), "Read card\nfailed"); - nfc_worker->callback(NfcWorkerEventWrongCardDetected, nfc_worker->context); - } else { - furi_hal_console_printf(" => success, wait for chip to disappear.\r\n"); - nfc_worker->callback(NfcWorkerEventCardDetected, nfc_worker->context); - } - } else { - furi_hal_console_printf(" => success, wait for chip to disappear.\r\n"); - nfc_worker->callback(NfcWorkerEventCardDetected, nfc_worker->context); - } - - while(slix_l_get_random(NULL) == ERR_NONE) { - furi_delay_ms(100); - } - - } else { + if(ret != ERR_NONE) { /* unlock failed */ furi_hal_console_printf(" => failed, wait for chip to disappear.\r\n"); snprintf(nfcv_data->error, sizeof(nfcv_data->error), "Passwords not\naccepted");