picopass_worker.h 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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. PicopassWorkerEventLoclassFileError,
  35. } PicopassWorkerEvent;
  36. typedef void (*PicopassWorkerCallback)(PicopassWorkerEvent event, void* context);
  37. PicopassWorker* picopass_worker_alloc();
  38. PicopassWorkerState picopass_worker_get_state(PicopassWorker* picopass_worker);
  39. void picopass_worker_free(PicopassWorker* picopass_worker);
  40. void picopass_worker_start(
  41. PicopassWorker* picopass_worker,
  42. PicopassWorkerState state,
  43. PicopassDeviceData* dev_data,
  44. PicopassWorkerCallback callback,
  45. void* context);
  46. void picopass_worker_stop(PicopassWorker* picopass_worker);