diff options
Diffstat (limited to 'lib/nfc/nfc_worker.h')
-rwxr-xr-x | lib/nfc/nfc_worker.h | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/lib/nfc/nfc_worker.h b/lib/nfc/nfc_worker.h new file mode 100755 index 00000000..f6df406b --- /dev/null +++ b/lib/nfc/nfc_worker.h @@ -0,0 +1,71 @@ +#pragma once + +#include "nfc_device.h" + +typedef struct NfcWorker NfcWorker; + +typedef enum { + // Init states + NfcWorkerStateNone, + NfcWorkerStateBroken, + NfcWorkerStateReady, + // Main worker states + NfcWorkerStateRead, + NfcWorkerStateUidEmulate, + NfcWorkerStateMfUltralightEmulate, + NfcWorkerStateMfClassicEmulate, + NfcWorkerStateMfClassicUserDictAttack, + NfcWorkerStateMfClassicFlipperDictAttack, + // Debug + NfcWorkerStateEmulateApdu, + NfcWorkerStateField, + // Transition + NfcWorkerStateStop, +} NfcWorkerState; + +typedef enum { + // Reserve first 50 events for application events + NfcWorkerEventReserved = 50, + + // Nfc read events + NfcWorkerEventReadUidNfcB, + NfcWorkerEventReadUidNfcV, + NfcWorkerEventReadUidNfcF, + NfcWorkerEventReadUidNfcA, + NfcWorkerEventReadMfUltralight, + NfcWorkerEventReadMfDesfire, + NfcWorkerEventReadMfClassicDone, + NfcWorkerEventReadMfClassicLoadKeyCache, + NfcWorkerEventReadMfClassicDictAttackRequired, + NfcWorkerEventReadBankCard, + + // Nfc worker common events + NfcWorkerEventSuccess, + NfcWorkerEventFail, + NfcWorkerEventAborted, + NfcWorkerEventCardDetected, + NfcWorkerEventNoCardDetected, + + // Mifare Classic events + NfcWorkerEventNoDictFound, + NfcWorkerEventNewSector, + NfcWorkerEventFoundKeyA, + NfcWorkerEventFoundKeyB, +} NfcWorkerEvent; + +typedef bool (*NfcWorkerCallback)(NfcWorkerEvent event, void* context); + +NfcWorker* nfc_worker_alloc(); + +NfcWorkerState nfc_worker_get_state(NfcWorker* nfc_worker); + +void nfc_worker_free(NfcWorker* nfc_worker); + +void nfc_worker_start( + NfcWorker* nfc_worker, + NfcWorkerState state, + NfcDeviceData* dev_data, + NfcWorkerCallback callback, + void* context); + +void nfc_worker_stop(NfcWorker* nfc_worker); |