nfc_worker.h 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #pragma once
  2. #include "nfc_device.h"
  3. typedef struct NfcWorker NfcWorker;
  4. typedef enum {
  5. // Init states
  6. NfcWorkerStateNone,
  7. NfcWorkerStateBroken,
  8. NfcWorkerStateReady,
  9. // Main worker states
  10. NfcWorkerStateRead,
  11. NfcWorkerStateUidEmulate,
  12. NfcWorkerStateMfUltralightEmulate,
  13. NfcWorkerStateMfClassicEmulate,
  14. NfcWorkerStateReadMfUltralightReadAuth,
  15. NfcWorkerStateMfClassicDictAttack,
  16. NfcWorkerStateAnalyzeReader,
  17. // Debug
  18. NfcWorkerStateEmulateApdu,
  19. NfcWorkerStateField,
  20. // Transition
  21. NfcWorkerStateStop,
  22. } NfcWorkerState;
  23. typedef enum {
  24. // Reserve first 50 events for application events
  25. NfcWorkerEventReserved = 50,
  26. // Nfc read events
  27. NfcWorkerEventReadUidNfcB,
  28. NfcWorkerEventReadUidNfcV,
  29. NfcWorkerEventReadUidNfcF,
  30. NfcWorkerEventReadUidNfcA,
  31. NfcWorkerEventReadMfUltralight,
  32. NfcWorkerEventReadMfDesfire,
  33. NfcWorkerEventReadMfClassicDone,
  34. NfcWorkerEventReadMfClassicLoadKeyCache,
  35. NfcWorkerEventReadMfClassicDictAttackRequired,
  36. NfcWorkerEventReadBankCard,
  37. // Nfc worker common events
  38. NfcWorkerEventSuccess,
  39. NfcWorkerEventFail,
  40. NfcWorkerEventAborted,
  41. NfcWorkerEventCardDetected,
  42. NfcWorkerEventNoCardDetected,
  43. NfcWorkerEventWrongCardDetected,
  44. // Mifare Classic events
  45. NfcWorkerEventNoDictFound,
  46. NfcWorkerEventNewSector,
  47. NfcWorkerEventNewDictKeyBatch,
  48. NfcWorkerEventFoundKeyA,
  49. NfcWorkerEventFoundKeyB,
  50. // Detect Reader events
  51. NfcWorkerEventDetectReaderDetected,
  52. NfcWorkerEventDetectReaderLost,
  53. NfcWorkerEventDetectReaderMfkeyCollected,
  54. // Mifare Ultralight events
  55. NfcWorkerEventMfUltralightPassKey,
  56. } NfcWorkerEvent;
  57. typedef bool (*NfcWorkerCallback)(NfcWorkerEvent event, void* context);
  58. NfcWorker* nfc_worker_alloc();
  59. NfcWorkerState nfc_worker_get_state(NfcWorker* nfc_worker);
  60. void nfc_worker_free(NfcWorker* nfc_worker);
  61. void nfc_worker_start(
  62. NfcWorker* nfc_worker,
  63. NfcWorkerState state,
  64. NfcDeviceData* dev_data,
  65. NfcWorkerCallback callback,
  66. void* context);
  67. void nfc_worker_stop(NfcWorker* nfc_worker);