picopass_poller.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #pragma once
  2. #include <nfc/nfc.h>
  3. #include "picopass_protocol.h"
  4. #ifdef __cplusplus
  5. extern "C" {
  6. #endif
  7. typedef enum {
  8. PicopassPollerEventTypeRequestMode,
  9. PicopassPollerEventTypeCardDetected,
  10. PicopassPollerEventTypeCardLost,
  11. PicopassPollerEventTypeSuccess,
  12. PicopassPollerEventTypeFail,
  13. } PicopassPollerEventType;
  14. typedef enum {
  15. PicopassPollerModeRead,
  16. PicopassPollerModeWrite,
  17. PicopassPollerModeWriteKey,
  18. } PicopassPollerMode;
  19. typedef struct {
  20. PicopassPollerMode mode;
  21. } PicopassPollerEventDataRequestMode;
  22. typedef union {
  23. PicopassPollerEventDataRequestMode req_mode;
  24. } PicopassPollerEventData;
  25. typedef struct {
  26. PicopassPollerEventType type;
  27. PicopassPollerEventData* data;
  28. } PicopassPollerEvent;
  29. typedef NfcCommand (*PicopassPollerCallback)(PicopassPollerEvent event, void* context);
  30. typedef struct PicopassPoller PicopassPoller;
  31. PicopassPoller* picopass_poller_alloc(Nfc* nfc);
  32. void picopass_poller_free(PicopassPoller* instance);
  33. void picopass_poller_start(
  34. PicopassPoller* instance,
  35. PicopassPollerCallback callback,
  36. void* context);
  37. void picopass_poller_stop(PicopassPoller* instance);
  38. #ifdef __cplusplus
  39. }
  40. #endif