nfc_worker.h 1.9 KB

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