2020-11-12 12:44:35 +03:00
|
|
|
#pragma once
|
|
|
|
|
2021-07-02 16:44:10 +03:00
|
|
|
#include "nfc_device.h"
|
2021-06-30 20:43:29 +03:00
|
|
|
|
FL-53: new NFC worker, A/B/F/V poll and display. (#283)
* GUI: view. Flooper-blooper fix compilation error.
* GUI: view and viewdispatcher bones
* GUI: view implementation, view models, view dispatcher
* GUI: view navigation, model refinement. Power: use view, view dispatcher.
* HAL Flash: proper page write. Dolphin: views. Power: views
* Dolphin: transition idle scree to Views
* Dolphin: input events on stats view. Format sources.
* HAL: flash erase. Dolphin: permanent state storage.
* Dolphin: first start welcome. HAL: flash operation status, errata 2.2.9 crutch.
* NFC: rewrite worker
* NFC: add support for B,F,V.
* NFC: replace rfal irq hanlder with realtime thread, more details about cards.
* Bootloader: LSE and RTS shenanigans, LED control, morse code for LSE failure error.
* F4: stop in Error_Handler
* BLE: handle working FUS, but empty radio stack.
* HAL: alive FUS is now sufficient for flash controller access
* Dolphin: update model after state load
* NFC: detect navigation
* RFAL: use osPriorityISR for isr thread
* NFC: emulation
* Bootloader: rollback incorrectly merged rename
* Dolphin: rollback incorrectly merged changes
* RFAL: remove volatile from thread attr
* RFAL: do not call platform ErrorHandler, error codes is enough
* NFC: improved error handling
* Format sources
* NFC: reset detect view model on start
* Format sources
* update codeowners
* NFC: hide last info if no card detected
2021-01-11 15:42:25 +03:00
|
|
|
typedef struct NfcWorker NfcWorker;
|
|
|
|
|
2021-06-24 11:46:37 +03:00
|
|
|
typedef enum {
|
|
|
|
// Init states
|
|
|
|
NfcWorkerStateNone,
|
|
|
|
NfcWorkerStateReady,
|
|
|
|
// Main worker states
|
2022-07-26 18:30:49 +03:00
|
|
|
NfcWorkerStateRead,
|
|
|
|
NfcWorkerStateUidEmulate,
|
|
|
|
NfcWorkerStateMfUltralightEmulate,
|
|
|
|
NfcWorkerStateMfClassicEmulate,
|
2022-10-28 19:10:16 +03:00
|
|
|
NfcWorkerStateMfClassicWrite,
|
|
|
|
NfcWorkerStateMfClassicUpdate,
|
2022-08-07 18:09:00 +03:00
|
|
|
NfcWorkerStateReadMfUltralightReadAuth,
|
2022-08-03 20:07:35 +03:00
|
|
|
NfcWorkerStateMfClassicDictAttack,
|
2022-09-03 15:25:36 +03:00
|
|
|
NfcWorkerStateAnalyzeReader,
|
2022-07-26 18:30:49 +03:00
|
|
|
// Debug
|
2021-08-04 21:58:11 +03:00
|
|
|
NfcWorkerStateEmulateApdu,
|
2021-06-24 11:46:37 +03:00
|
|
|
NfcWorkerStateField,
|
|
|
|
// Transition
|
|
|
|
NfcWorkerStateStop,
|
|
|
|
} NfcWorkerState;
|
|
|
|
|
2022-03-24 01:14:34 +03:00
|
|
|
typedef enum {
|
2022-03-28 16:57:36 +03:00
|
|
|
// Reserve first 50 events for application events
|
|
|
|
NfcWorkerEventReserved = 50,
|
|
|
|
|
2022-07-26 18:30:49 +03:00
|
|
|
// Nfc read events
|
|
|
|
NfcWorkerEventReadUidNfcB,
|
|
|
|
NfcWorkerEventReadUidNfcV,
|
|
|
|
NfcWorkerEventReadUidNfcF,
|
|
|
|
NfcWorkerEventReadUidNfcA,
|
|
|
|
NfcWorkerEventReadMfUltralight,
|
|
|
|
NfcWorkerEventReadMfDesfire,
|
|
|
|
NfcWorkerEventReadMfClassicDone,
|
|
|
|
NfcWorkerEventReadMfClassicLoadKeyCache,
|
|
|
|
NfcWorkerEventReadMfClassicDictAttackRequired,
|
|
|
|
NfcWorkerEventReadBankCard,
|
|
|
|
|
2022-03-28 16:57:36 +03:00
|
|
|
// Nfc worker common events
|
2022-03-24 01:14:34 +03:00
|
|
|
NfcWorkerEventSuccess,
|
|
|
|
NfcWorkerEventFail,
|
2022-07-26 18:30:49 +03:00
|
|
|
NfcWorkerEventAborted,
|
|
|
|
NfcWorkerEventCardDetected,
|
2022-03-24 01:14:34 +03:00
|
|
|
NfcWorkerEventNoCardDetected,
|
2022-08-07 18:09:00 +03:00
|
|
|
NfcWorkerEventWrongCardDetected,
|
2022-07-26 18:30:49 +03:00
|
|
|
|
2022-10-28 19:10:16 +03:00
|
|
|
// Read Mifare Classic events
|
2022-03-24 01:14:34 +03:00
|
|
|
NfcWorkerEventNoDictFound,
|
|
|
|
NfcWorkerEventNewSector,
|
2022-08-03 20:07:35 +03:00
|
|
|
NfcWorkerEventNewDictKeyBatch,
|
2022-03-24 01:14:34 +03:00
|
|
|
NfcWorkerEventFoundKeyA,
|
|
|
|
NfcWorkerEventFoundKeyB,
|
2022-12-27 12:14:03 +03:00
|
|
|
NfcWorkerEventKeyAttackStart,
|
|
|
|
NfcWorkerEventKeyAttackStop,
|
|
|
|
NfcWorkerEventKeyAttackNextSector,
|
2022-08-07 18:09:00 +03:00
|
|
|
|
2022-10-28 19:10:16 +03:00
|
|
|
// Write Mifare Classic events
|
|
|
|
NfcWorkerEventWrongCard,
|
|
|
|
|
2022-09-03 15:25:36 +03:00
|
|
|
// Detect Reader events
|
2022-10-06 19:58:17 +03:00
|
|
|
NfcWorkerEventDetectReaderDetected,
|
|
|
|
NfcWorkerEventDetectReaderLost,
|
2022-09-03 15:25:36 +03:00
|
|
|
NfcWorkerEventDetectReaderMfkeyCollected,
|
|
|
|
|
2022-08-07 18:09:00 +03:00
|
|
|
// Mifare Ultralight events
|
2022-11-28 21:16:22 +03:00
|
|
|
NfcWorkerEventMfUltralightPassKey, // NFC worker requesting manual key
|
|
|
|
NfcWorkerEventMfUltralightPwdAuth, // Reader sent auth command
|
2022-03-24 01:14:34 +03:00
|
|
|
} NfcWorkerEvent;
|
|
|
|
|
2022-07-26 18:30:49 +03:00
|
|
|
typedef bool (*NfcWorkerCallback)(NfcWorkerEvent event, void* context);
|
2021-06-24 11:46:37 +03:00
|
|
|
|
2021-06-30 20:43:29 +03:00
|
|
|
NfcWorker* nfc_worker_alloc();
|
FL-53: new NFC worker, A/B/F/V poll and display. (#283)
* GUI: view. Flooper-blooper fix compilation error.
* GUI: view and viewdispatcher bones
* GUI: view implementation, view models, view dispatcher
* GUI: view navigation, model refinement. Power: use view, view dispatcher.
* HAL Flash: proper page write. Dolphin: views. Power: views
* Dolphin: transition idle scree to Views
* Dolphin: input events on stats view. Format sources.
* HAL: flash erase. Dolphin: permanent state storage.
* Dolphin: first start welcome. HAL: flash operation status, errata 2.2.9 crutch.
* NFC: rewrite worker
* NFC: add support for B,F,V.
* NFC: replace rfal irq hanlder with realtime thread, more details about cards.
* Bootloader: LSE and RTS shenanigans, LED control, morse code for LSE failure error.
* F4: stop in Error_Handler
* BLE: handle working FUS, but empty radio stack.
* HAL: alive FUS is now sufficient for flash controller access
* Dolphin: update model after state load
* NFC: detect navigation
* RFAL: use osPriorityISR for isr thread
* NFC: emulation
* Bootloader: rollback incorrectly merged rename
* Dolphin: rollback incorrectly merged changes
* RFAL: remove volatile from thread attr
* RFAL: do not call platform ErrorHandler, error codes is enough
* NFC: improved error handling
* Format sources
* NFC: reset detect view model on start
* Format sources
* update codeowners
* NFC: hide last info if no card detected
2021-01-11 15:42:25 +03:00
|
|
|
|
|
|
|
NfcWorkerState nfc_worker_get_state(NfcWorker* nfc_worker);
|
|
|
|
|
|
|
|
void nfc_worker_free(NfcWorker* nfc_worker);
|
|
|
|
|
2021-06-24 11:46:37 +03:00
|
|
|
void nfc_worker_start(
|
|
|
|
NfcWorker* nfc_worker,
|
|
|
|
NfcWorkerState state,
|
2021-07-22 09:05:07 +03:00
|
|
|
NfcDeviceData* dev_data,
|
2021-06-24 11:46:37 +03:00
|
|
|
NfcWorkerCallback callback,
|
|
|
|
void* context);
|
FL-53: new NFC worker, A/B/F/V poll and display. (#283)
* GUI: view. Flooper-blooper fix compilation error.
* GUI: view and viewdispatcher bones
* GUI: view implementation, view models, view dispatcher
* GUI: view navigation, model refinement. Power: use view, view dispatcher.
* HAL Flash: proper page write. Dolphin: views. Power: views
* Dolphin: transition idle scree to Views
* Dolphin: input events on stats view. Format sources.
* HAL: flash erase. Dolphin: permanent state storage.
* Dolphin: first start welcome. HAL: flash operation status, errata 2.2.9 crutch.
* NFC: rewrite worker
* NFC: add support for B,F,V.
* NFC: replace rfal irq hanlder with realtime thread, more details about cards.
* Bootloader: LSE and RTS shenanigans, LED control, morse code for LSE failure error.
* F4: stop in Error_Handler
* BLE: handle working FUS, but empty radio stack.
* HAL: alive FUS is now sufficient for flash controller access
* Dolphin: update model after state load
* NFC: detect navigation
* RFAL: use osPriorityISR for isr thread
* NFC: emulation
* Bootloader: rollback incorrectly merged rename
* Dolphin: rollback incorrectly merged changes
* RFAL: remove volatile from thread attr
* RFAL: do not call platform ErrorHandler, error codes is enough
* NFC: improved error handling
* Format sources
* NFC: reset detect view model on start
* Format sources
* update codeowners
* NFC: hide last info if no card detected
2021-01-11 15:42:25 +03:00
|
|
|
|
|
|
|
void nfc_worker_stop(NfcWorker* nfc_worker);
|