nfc_worker.h 2.4 KB

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