nfc_worker.h 1.5 KB

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