picopass_worker.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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. PicopassWorkerEventSeEnabled,
  23. PicopassWorkerEventStartReading,
  24. } PicopassWorkerEvent;
  25. typedef void (*PicopassWorkerCallback)(PicopassWorkerEvent event, void* context);
  26. PicopassWorker* picopass_worker_alloc();
  27. PicopassWorkerState picopass_worker_get_state(PicopassWorker* picopass_worker);
  28. void picopass_worker_free(PicopassWorker* picopass_worker);
  29. void picopass_worker_start(
  30. PicopassWorker* picopass_worker,
  31. PicopassWorkerState state,
  32. PicopassDeviceData* dev_data,
  33. PicopassWorkerCallback callback,
  34. void* context);
  35. void picopass_worker_stop(PicopassWorker* picopass_worker);