picopass_poller.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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. } PicopassPollerMode;
  17. typedef struct {
  18. PicopassPollerMode mode;
  19. } PicopassPollerEventDataRequestMode;
  20. typedef union {
  21. PicopassPollerEventDataRequestMode req_mode;
  22. } PicopassPollerEventData;
  23. typedef struct {
  24. PicopassPollerEventType type;
  25. PicopassPollerEventData* data;
  26. } PicopassPollerEvent;
  27. typedef NfcCommand (*PicopassPollerCallback)(PicopassPollerEvent event, void* context);
  28. typedef struct PicopassPoller PicopassPoller;
  29. PicopassPoller* picopass_poller_alloc(Nfc* nfc);
  30. void picopass_poller_free(PicopassPoller* instance);
  31. void picopass_poller_start(
  32. PicopassPoller* instance,
  33. PicopassPollerCallback callback,
  34. void* context);
  35. void picopass_poller_stop(PicopassPoller* instance);
  36. uint8_t* picopass_poller_get_csn(PicopassPoller* instance);
  37. PicopassError picopass_poller_send_frame(
  38. PicopassPoller* instance,
  39. BitBuffer* tx_buffer,
  40. BitBuffer* rx_buffer,
  41. uint32_t fwt_fc);
  42. #ifdef __cplusplus
  43. }
  44. #endif