[FL-3122] Re-init NFC when starting the worker (#2399)

* Re-init NFC when starting the worker
* FuriHal: cleanup nfc init/deinit sequence
* FuriHal: a little bit more defensive nfc init

Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
Astra
2023-02-20 16:44:03 +02:00
committed by GitHub
parent 738e0df4f4
commit b15c4afea1
4 changed files with 26 additions and 3 deletions

View File

@@ -24,13 +24,29 @@ FuriEventFlag* event = NULL;
#define FURI_HAL_NFC_UID_INCOMPLETE (0x04)
void furi_hal_nfc_init() {
furi_assert(!event);
event = furi_event_flag_alloc();
ReturnCode ret = rfalNfcInitialize();
if(ret == ERR_NONE) {
furi_hal_nfc_start_sleep();
event = furi_event_flag_alloc();
FURI_LOG_I(TAG, "Init OK");
} else {
FURI_LOG_W(TAG, "Initialization failed, RFAL returned: %d", ret);
FURI_LOG_W(TAG, "Init Failed, RFAL returned: %d", ret);
}
}
void furi_hal_nfc_deinit() {
ReturnCode ret = rfalDeinitialize();
if(ret == ERR_NONE) {
FURI_LOG_I(TAG, "Deinit OK");
} else {
FURI_LOG_W(TAG, "Deinit Failed, RFAL returned: %d", ret);
}
if(event) {
furi_event_flag_free(event);
event = NULL;
}
}

View File

@@ -101,6 +101,10 @@ typedef struct {
*/
void furi_hal_nfc_init();
/** Deinit nfc
*/
void furi_hal_nfc_deinit();
/** Check if nfc worker is busy
*
* @return true if busy