gen1a_poller_i.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #pragma once
  2. #include "gen1a_poller.h"
  3. #include <nfc/protocols/nfc_generic_event.h>
  4. #include <nfc/nfc_device.h>
  5. #include <nfc/protocols/mf_classic/mf_classic.h>
  6. #ifdef __cplusplus
  7. extern "C" {
  8. #endif
  9. #define GEN1A_POLLER_MAX_BUFFER_SIZE (64U)
  10. #define GEN1A_POLLER_MAX_FWT (60000U)
  11. typedef enum {
  12. Gen1aPollerErrorNone,
  13. Gen1aPollerErrorTimeout,
  14. Gen1aPollerErrorNotPresent,
  15. Gen1aPollerErrorProtocol,
  16. } Gen1aPollerError;
  17. typedef enum {
  18. Gen1aPollerStateIdle,
  19. Gen1aPollerStateRequestMode,
  20. Gen1aPollerStateWipe,
  21. Gen1aPollerStateWriteDataRequest,
  22. Gen1aPollerStateWrite,
  23. Gen1aPollerStateSuccess,
  24. Gen1aPollerStateFail,
  25. Gen1aPollerStateNum,
  26. } Gen1aPollerState;
  27. typedef enum {
  28. Gen1aPollerSessionStateIdle,
  29. Gen1aPollerSessionStateStarted,
  30. Gen1aPollerSessionStateStopRequest,
  31. } Gen1aPollerSessionState;
  32. struct Gen1aPoller {
  33. Nfc* nfc;
  34. Gen1aPollerState state;
  35. Gen1aPollerSessionState session_state;
  36. uint16_t current_block;
  37. NfcDevice* mfc_device;
  38. BitBuffer* tx_buffer;
  39. BitBuffer* rx_buffer;
  40. Gen1aPollerEvent gen1a_event;
  41. Gen1aPollerEventData gen1a_event_data;
  42. Gen1aPollerCallback callback;
  43. void* context;
  44. };
  45. Gen1aPollerError gen1a_poller_wupa(Gen1aPoller* instance);
  46. Gen1aPollerError gen1a_poller_data_access(Gen1aPoller* instance);
  47. Gen1aPollerError
  48. gen1a_poller_write_block(Gen1aPoller* instance, uint8_t block_num, const MfClassicBlock* block);
  49. #ifdef __cplusplus
  50. }
  51. #endif