picopass_worker.h 1.3 KB

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