nfc_worker.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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. NfcWorkerStateDetect,
  11. NfcWorkerStateEmulate,
  12. NfcWorkerStateReadEMVApp,
  13. NfcWorkerStateReadEMVData,
  14. NfcWorkerStateEmulateApdu,
  15. NfcWorkerStateField,
  16. NfcWorkerStateReadMifareUltralight,
  17. NfcWorkerStateEmulateMifareUltralight,
  18. NfcWorkerStateReadMifareClassic,
  19. NfcWorkerStateEmulateMifareClassic,
  20. NfcWorkerStateReadMifareDesfire,
  21. // Transition
  22. NfcWorkerStateStop,
  23. } NfcWorkerState;
  24. typedef enum {
  25. // Reserve first 50 events for application events
  26. NfcWorkerEventReserved = 50,
  27. // Nfc worker common events
  28. NfcWorkerEventSuccess,
  29. NfcWorkerEventFail,
  30. NfcWorkerEventNoCardDetected,
  31. // Mifare Classic events
  32. NfcWorkerEventNoDictFound,
  33. NfcWorkerEventDetectedClassic1k,
  34. NfcWorkerEventDetectedClassic4k,
  35. NfcWorkerEventNewSector,
  36. NfcWorkerEventFoundKeyA,
  37. NfcWorkerEventFoundKeyB,
  38. NfcWorkerEventStartReading,
  39. } NfcWorkerEvent;
  40. typedef void (*NfcWorkerCallback)(NfcWorkerEvent event, void* context);
  41. NfcWorker* nfc_worker_alloc();
  42. NfcWorkerState nfc_worker_get_state(NfcWorker* nfc_worker);
  43. void nfc_worker_free(NfcWorker* nfc_worker);
  44. void nfc_worker_start(
  45. NfcWorker* nfc_worker,
  46. NfcWorkerState state,
  47. NfcDeviceData* dev_data,
  48. NfcWorkerCallback callback,
  49. void* context);
  50. void nfc_worker_stop(NfcWorker* nfc_worker);