nfc_worker.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #pragma once
  2. #include "nfc_device.h"
  3. typedef struct {
  4. union {
  5. NfcDeviceData nfc_detect_data;
  6. NfcEmvData nfc_emv_data;
  7. NfcMifareUlData nfc_mifare_ul_data;
  8. };
  9. } NfcWorkerResult;
  10. typedef struct NfcWorker NfcWorker;
  11. typedef enum {
  12. // Init states
  13. NfcWorkerStateNone,
  14. NfcWorkerStateBroken,
  15. NfcWorkerStateReady,
  16. // Main worker states
  17. NfcWorkerStateDetect,
  18. NfcWorkerStateEmulate,
  19. NfcWorkerStateReadEMV,
  20. NfcWorkerStateEmulateEMV,
  21. NfcWorkerStateField,
  22. NfcWorkerStateReadMfUltralight,
  23. // Transition
  24. NfcWorkerStateStop,
  25. } NfcWorkerState;
  26. typedef void (*NfcWorkerCallback)(void* context);
  27. NfcWorker* nfc_worker_alloc();
  28. NfcWorkerState nfc_worker_get_state(NfcWorker* nfc_worker);
  29. ReturnCode nfc_worker_get_error(NfcWorker* nfc_worker);
  30. void nfc_worker_set_emulation_params(NfcWorker* nfc_worker, NfcDeviceData* data);
  31. void nfc_worker_free(NfcWorker* nfc_worker);
  32. void nfc_worker_start(
  33. NfcWorker* nfc_worker,
  34. NfcWorkerState state,
  35. NfcWorkerResult* result_dest,
  36. NfcWorkerCallback callback,
  37. void* context);
  38. void nfc_worker_stop(NfcWorker* nfc_worker);