nfc_worker.h 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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. // Write Mifare Classic events
  52. NfcWorkerEventWrongCard,
  53. // Detect Reader events
  54. NfcWorkerEventDetectReaderDetected,
  55. NfcWorkerEventDetectReaderLost,
  56. NfcWorkerEventDetectReaderMfkeyCollected,
  57. // Mifare Ultralight events
  58. NfcWorkerEventMfUltralightPassKey,
  59. } NfcWorkerEvent;
  60. typedef bool (*NfcWorkerCallback)(NfcWorkerEvent event, void* context);
  61. NfcWorker* nfc_worker_alloc();
  62. NfcWorkerState nfc_worker_get_state(NfcWorker* nfc_worker);
  63. void nfc_worker_free(NfcWorker* nfc_worker);
  64. void nfc_worker_start(
  65. NfcWorker* nfc_worker,
  66. NfcWorkerState state,
  67. NfcDeviceData* dev_data,
  68. NfcWorkerCallback callback,
  69. void* context);
  70. void nfc_worker_stop(NfcWorker* nfc_worker);