nfc_worker.h 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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. // Nfc worker common events
  38. NfcWorkerEventSuccess,
  39. NfcWorkerEventFail,
  40. NfcWorkerEventAborted,
  41. NfcWorkerEventCardDetected,
  42. NfcWorkerEventNoCardDetected,
  43. NfcWorkerEventWrongCardDetected,
  44. // Read Mifare Classic events
  45. NfcWorkerEventNoDictFound,
  46. NfcWorkerEventNewSector,
  47. NfcWorkerEventNewDictKeyBatch,
  48. NfcWorkerEventFoundKeyA,
  49. NfcWorkerEventFoundKeyB,
  50. NfcWorkerEventKeyAttackStart,
  51. NfcWorkerEventKeyAttackStop,
  52. NfcWorkerEventKeyAttackNextSector,
  53. // Write Mifare Classic events
  54. NfcWorkerEventWrongCard,
  55. // Detect Reader events
  56. NfcWorkerEventDetectReaderDetected,
  57. NfcWorkerEventDetectReaderLost,
  58. NfcWorkerEventDetectReaderMfkeyCollected,
  59. // Mifare Ultralight events
  60. NfcWorkerEventMfUltralightPassKey, // NFC worker requesting manual key
  61. NfcWorkerEventMfUltralightPwdAuth, // Reader sent auth command
  62. } NfcWorkerEvent;
  63. typedef bool (*NfcWorkerCallback)(NfcWorkerEvent event, void* context);
  64. NfcWorker* nfc_worker_alloc();
  65. NfcWorkerState nfc_worker_get_state(NfcWorker* nfc_worker);
  66. void nfc_worker_free(NfcWorker* nfc_worker);
  67. void nfc_worker_start(
  68. NfcWorker* nfc_worker,
  69. NfcWorkerState state,
  70. NfcDeviceData* dev_data,
  71. NfcWorkerCallback callback,
  72. void* context);
  73. void nfc_worker_stop(NfcWorker* nfc_worker);