picopass_poller_i.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #pragma once
  2. #include "rfal_picopass.h"
  3. #include "picopass_poller.h"
  4. #include "picopass_protocol.h"
  5. #include <nfc/helpers/iso13239_crc.h>
  6. #define PICOPASS_POLLER_BUFFER_SIZE (255)
  7. #define PICOPASS_CRC_SIZE (2)
  8. typedef enum {
  9. PicopassPollerSessionStateIdle,
  10. PicopassPollerSessionStateActive,
  11. PicopassPollerSessionStateStopRequest,
  12. } PicopassPollerSessionState;
  13. typedef enum {
  14. PicopassPollerStateRequestMode,
  15. PicopassPollerStateDetect,
  16. PicopassPollerStateSelect,
  17. PicopassPollerStateSuccess,
  18. PicopassPollerStateFail,
  19. PicopassPollerStateNum,
  20. } PicopassPollerState;
  21. struct PicopassPoller {
  22. Nfc* nfc;
  23. PicopassPollerSessionState session_state;
  24. PicopassPollerState state;
  25. PicopassPollerMode mode;
  26. PicopassColResSerialNum col_res_serial_num;
  27. PicopassSerialNum serial_num;
  28. PicopassMac mac;
  29. BitBuffer* tx_buffer;
  30. BitBuffer* rx_buffer;
  31. BitBuffer* tmp_buffer;
  32. PicopassPollerEvent event;
  33. PicopassPollerEventData event_data;
  34. PicopassPollerCallback callback;
  35. void* context;
  36. };
  37. PicopassError picopass_poller_actall(PicopassPoller* instance);
  38. PicopassError
  39. picopass_poller_identify(PicopassPoller* instance, PicopassColResSerialNum* col_res_serial_num);
  40. PicopassError picopass_poller_select(
  41. PicopassPoller* instance,
  42. PicopassColResSerialNum* col_res_serial_num,
  43. PicopassSerialNum* serial_num);