nfc_worker.h 2.0 KB

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