seader_worker.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #pragma once
  2. #include "seader_credential.h"
  3. #include "sub.h"
  4. typedef struct SeaderWorker SeaderWorker;
  5. typedef struct CCID_Message CCID_Message;
  6. typedef enum {
  7. // Init states
  8. SeaderWorkerStateNone,
  9. SeaderWorkerStateBroken,
  10. SeaderWorkerStateReady,
  11. // Main worker states
  12. SeaderWorkerStateCheckSam,
  13. SeaderWorkerStateReadPicopass,
  14. SeaderWorkerStateRead14a,
  15. // Transition
  16. SeaderWorkerStateStop,
  17. } SeaderWorkerState;
  18. typedef enum {
  19. // Reserve first 50 events for application events
  20. SeaderWorkerEventReserved = 50,
  21. // Seader worker common events
  22. SeaderWorkerEventSuccess,
  23. SeaderWorkerEventFail,
  24. SeaderWorkerEventSamPresent,
  25. SeaderWorkerEventSamWrong,
  26. SeaderWorkerEventSamMissing,
  27. SeaderWorkerEventNoCardDetected,
  28. SeaderWorkerEventStartReading,
  29. } SeaderWorkerEvent;
  30. typedef void (*SeaderWorkerCallback)(SeaderWorkerEvent event, void* context);
  31. SeaderWorker* seader_worker_alloc();
  32. SeaderWorkerState seader_worker_get_state(SeaderWorker* seader_worker);
  33. void seader_worker_free(SeaderWorker* seader_worker);
  34. void seader_worker_start(
  35. SeaderWorker* seader_worker,
  36. SeaderWorkerState state,
  37. SeaderUartBridge* uart,
  38. SeaderCredential* credential,
  39. SeaderWorkerCallback callback,
  40. void* context);
  41. void seader_worker_stop(SeaderWorker* seader_worker);
  42. void seader_worker_process_message(SeaderWorker* seader_worker, CCID_Message* message);