picopass_worker.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #pragma once
  2. #include "picopass_device.h"
  3. typedef struct PicopassWorker PicopassWorker;
  4. typedef enum {
  5. // Init states
  6. PicopassWorkerStateNone,
  7. PicopassWorkerStateBroken,
  8. PicopassWorkerStateReady,
  9. // Main worker states
  10. PicopassWorkerStateDetect,
  11. PicopassWorkerStateWrite,
  12. // Transition
  13. PicopassWorkerStateStop,
  14. } PicopassWorkerState;
  15. typedef enum {
  16. // Reserve first 50 events for application events
  17. PicopassWorkerEventReserved = 50,
  18. // Picopass worker common events
  19. PicopassWorkerEventSuccess,
  20. PicopassWorkerEventFail,
  21. PicopassWorkerEventNoCardDetected,
  22. PicopassWorkerEventStartReading,
  23. } PicopassWorkerEvent;
  24. typedef void (*PicopassWorkerCallback)(PicopassWorkerEvent event, void* context);
  25. PicopassWorker* picopass_worker_alloc();
  26. PicopassWorkerState picopass_worker_get_state(PicopassWorker* picopass_worker);
  27. void picopass_worker_free(PicopassWorker* picopass_worker);
  28. void picopass_worker_start(
  29. PicopassWorker* picopass_worker,
  30. PicopassWorkerState state,
  31. PicopassDeviceData* dev_data,
  32. PicopassWorkerCallback callback,
  33. void* context);
  34. void picopass_worker_stop(PicopassWorker* picopass_worker);