picopass_worker.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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. PicopassWorkerStateWriteKey,
  13. // Transition
  14. PicopassWorkerStateStop,
  15. } PicopassWorkerState;
  16. typedef enum {
  17. // Reserve first 50 events for application events
  18. PicopassWorkerEventReserved = 50,
  19. // Picopass worker common events
  20. PicopassWorkerEventSuccess,
  21. PicopassWorkerEventFail,
  22. PicopassWorkerEventNoCardDetected,
  23. PicopassWorkerEventSeEnabled,
  24. PicopassWorkerEventStartReading,
  25. } PicopassWorkerEvent;
  26. typedef void (*PicopassWorkerCallback)(PicopassWorkerEvent event, void* context);
  27. PicopassWorker* picopass_worker_alloc();
  28. PicopassWorkerState picopass_worker_get_state(PicopassWorker* picopass_worker);
  29. void picopass_worker_free(PicopassWorker* picopass_worker);
  30. void picopass_worker_start(
  31. PicopassWorker* picopass_worker,
  32. PicopassWorkerState state,
  33. PicopassDeviceData* dev_data,
  34. PicopassWorkerCallback callback,
  35. void* context);
  36. void picopass_worker_stop(PicopassWorker* picopass_worker);