nfc_worker.h 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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. NfcWorkerStateMfClassicWrite,
  15. NfcWorkerStateMfClassicUpdate,
  16. NfcWorkerStateReadMfUltralightReadAuth,
  17. NfcWorkerStateMfClassicDictAttack,
  18. NfcWorkerStateAnalyzeReader,
  19. // Debug
  20. NfcWorkerStateEmulateApdu,
  21. NfcWorkerStateField,
  22. // Transition
  23. NfcWorkerStateStop,
  24. } NfcWorkerState;
  25. typedef enum {
  26. // Reserve first 50 events for application events
  27. NfcWorkerEventReserved = 50,
  28. // Nfc read events
  29. NfcWorkerEventReadUidNfcB,
  30. NfcWorkerEventReadUidNfcV,
  31. NfcWorkerEventReadUidNfcF,
  32. NfcWorkerEventReadUidNfcA,
  33. NfcWorkerEventReadMfUltralight,
  34. NfcWorkerEventReadMfDesfire,
  35. NfcWorkerEventReadMfClassicDone,
  36. NfcWorkerEventReadMfClassicLoadKeyCache,
  37. NfcWorkerEventReadMfClassicDictAttackRequired,
  38. NfcWorkerEventReadBankCard,
  39. // Nfc worker common events
  40. NfcWorkerEventSuccess,
  41. NfcWorkerEventFail,
  42. NfcWorkerEventAborted,
  43. NfcWorkerEventCardDetected,
  44. NfcWorkerEventNoCardDetected,
  45. NfcWorkerEventWrongCardDetected,
  46. // Read Mifare Classic events
  47. NfcWorkerEventNoDictFound,
  48. NfcWorkerEventNewSector,
  49. NfcWorkerEventNewDictKeyBatch,
  50. NfcWorkerEventFoundKeyA,
  51. NfcWorkerEventFoundKeyB,
  52. // Write Mifare Classic events
  53. NfcWorkerEventWrongCard,
  54. // Detect Reader events
  55. NfcWorkerEventDetectReaderDetected,
  56. NfcWorkerEventDetectReaderLost,
  57. NfcWorkerEventDetectReaderMfkeyCollected,
  58. // Mifare Ultralight events
  59. NfcWorkerEventMfUltralightPassKey,
  60. } NfcWorkerEvent;
  61. typedef bool (*NfcWorkerCallback)(NfcWorkerEvent event, void* context);
  62. NfcWorker* nfc_worker_alloc();
  63. NfcWorkerState nfc_worker_get_state(NfcWorker* nfc_worker);
  64. void nfc_worker_free(NfcWorker* nfc_worker);
  65. void nfc_worker_start(
  66. NfcWorker* nfc_worker,
  67. NfcWorkerState state,
  68. NfcDeviceData* dev_data,
  69. NfcWorkerCallback callback,
  70. void* context);
  71. void nfc_worker_stop(NfcWorker* nfc_worker);