picopass_worker.h 1.5 KB

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