nfc_worker.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. #pragma once
  2. #include "nfc_device.h"
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6. typedef struct NfcWorker NfcWorker;
  7. typedef enum {
  8. // Init states
  9. NfcWorkerStateNone,
  10. NfcWorkerStateReady,
  11. // Main worker states
  12. NfcWorkerStateRead,
  13. NfcWorkerStateUidEmulate,
  14. NfcWorkerStateMfClassicEmulate,
  15. NfcWorkerStateMfClassicWrite,
  16. NfcWorkerStateMfClassicUpdate,
  17. NfcWorkerStateMfClassicDictAttack,
  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. NfcWorkerEventReadMfClassicDone,
  33. NfcWorkerEventReadMfClassicLoadKeyCache,
  34. NfcWorkerEventReadMfClassicDictAttackRequired,
  35. // Nfc worker common events
  36. NfcWorkerEventSuccess,
  37. NfcWorkerEventFail,
  38. NfcWorkerEventAborted,
  39. NfcWorkerEventCardDetected,
  40. NfcWorkerEventNoCardDetected,
  41. NfcWorkerEventWrongCardDetected,
  42. // Read Mifare Classic events
  43. NfcWorkerEventNoDictFound,
  44. NfcWorkerEventNewSector,
  45. NfcWorkerEventNewDictKeyBatch,
  46. NfcWorkerEventFoundKeyA,
  47. NfcWorkerEventFoundKeyB,
  48. NfcWorkerEventKeyAttackStart,
  49. NfcWorkerEventKeyAttackStop,
  50. NfcWorkerEventKeyAttackNextSector,
  51. // Write Mifare Classic events
  52. NfcWorkerEventWrongCard,
  53. } NfcWorkerEvent;
  54. typedef bool (*NfcWorkerCallback)(NfcWorkerEvent event, void* context);
  55. NfcWorker* nfc_worker_alloc();
  56. NfcWorkerState nfc_worker_get_state(NfcWorker* nfc_worker);
  57. void nfc_worker_free(NfcWorker* nfc_worker);
  58. void nfc_worker_start(
  59. NfcWorker* nfc_worker,
  60. NfcWorkerState state,
  61. NfcDeviceData* dev_data,
  62. NfcWorkerCallback callback,
  63. void* context);
  64. void nfc_worker_stop(NfcWorker* nfc_worker);
  65. #ifdef __cplusplus
  66. }
  67. #endif