nfc_worker.h 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. #pragma once
  2. #include "nfc_device.h"
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6. typedef struct NfcWorker NfcWorker;
  7. typedef enum {
  8. // Init states
  9. NfcWorkerStateNone,
  10. NfcWorkerStateReady,
  11. // Main worker states
  12. NfcWorkerStateRead,
  13. NfcWorkerStateUidEmulate,
  14. NfcWorkerStateMfUltralightEmulate,
  15. NfcWorkerStateMfClassicEmulate,
  16. NfcWorkerStateMfClassicWrite,
  17. NfcWorkerStateMfClassicUpdate,
  18. NfcWorkerStateReadMfUltralightReadAuth,
  19. NfcWorkerStateMfClassicDictAttack,
  20. NfcWorkerStateAnalyzeReader,
  21. NfcWorkerStateNfcVEmulate,
  22. NfcWorkerStateNfcVUnlock,
  23. NfcWorkerStateNfcVUnlockAndSave,
  24. NfcWorkerStateNfcVSniff,
  25. // Debug
  26. NfcWorkerStateEmulateApdu,
  27. NfcWorkerStateField,
  28. // Transition
  29. NfcWorkerStateStop,
  30. } NfcWorkerState;
  31. typedef enum {
  32. // Reserve first 50 events for application events
  33. NfcWorkerEventReserved = 50,
  34. // Nfc read events
  35. NfcWorkerEventReadUidNfcB,
  36. NfcWorkerEventReadUidNfcV,
  37. NfcWorkerEventReadUidNfcF,
  38. NfcWorkerEventReadUidNfcA,
  39. NfcWorkerEventReadMfUltralight,
  40. NfcWorkerEventReadMfDesfire,
  41. NfcWorkerEventReadMfClassicDone,
  42. NfcWorkerEventReadMfClassicLoadKeyCache,
  43. NfcWorkerEventReadMfClassicDictAttackRequired,
  44. NfcWorkerEventReadBankCard,
  45. NfcWorkerEventReadNfcV,
  46. // Nfc worker common events
  47. NfcWorkerEventSuccess,
  48. NfcWorkerEventFail,
  49. NfcWorkerEventAborted,
  50. NfcWorkerEventCardDetected,
  51. NfcWorkerEventNoCardDetected,
  52. NfcWorkerEventWrongCardDetected,
  53. // Read Mifare Classic events
  54. NfcWorkerEventNoDictFound,
  55. NfcWorkerEventNewSector,
  56. NfcWorkerEventNewDictKeyBatch,
  57. NfcWorkerEventFoundKeyA,
  58. NfcWorkerEventFoundKeyB,
  59. NfcWorkerEventKeyAttackStart,
  60. NfcWorkerEventKeyAttackStop,
  61. NfcWorkerEventKeyAttackNextSector,
  62. // Write Mifare Classic events
  63. NfcWorkerEventWrongCard,
  64. // Detect Reader events
  65. NfcWorkerEventDetectReaderDetected,
  66. NfcWorkerEventDetectReaderLost,
  67. NfcWorkerEventDetectReaderMfkeyCollected,
  68. // Mifare Ultralight events
  69. NfcWorkerEventMfUltralightPassKey, // NFC worker requesting manual key
  70. NfcWorkerEventMfUltralightPwdAuth, // Reader sent auth command
  71. NfcWorkerEventNfcVPassKey, // NFC worker requesting manual key
  72. NfcWorkerEventNfcVCommandExecuted,
  73. NfcWorkerEventNfcVContentChanged,
  74. } NfcWorkerEvent;
  75. typedef bool (*NfcWorkerCallback)(NfcWorkerEvent event, void* context);
  76. NfcWorker* nfc_worker_alloc();
  77. NfcWorkerState nfc_worker_get_state(NfcWorker* nfc_worker);
  78. void nfc_worker_free(NfcWorker* nfc_worker);
  79. void nfc_worker_start(
  80. NfcWorker* nfc_worker,
  81. NfcWorkerState state,
  82. NfcDeviceData* dev_data,
  83. NfcWorkerCallback callback,
  84. void* context);
  85. void nfc_worker_stop(NfcWorker* nfc_worker);
  86. void nfc_worker_nfcv_unlock(NfcWorker* nfc_worker);
  87. void nfc_worker_nfcv_emulate(NfcWorker* nfc_worker);
  88. void nfc_worker_nfcv_sniff(NfcWorker* nfc_worker);
  89. #ifdef __cplusplus
  90. }
  91. #endif