nfc_worker.h 1.7 KB

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