picopass_worker.h 1.4 KB

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