gen1a_poller_i.h 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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. Gen1aPollerStateDumpDataRequest,
  24. Gen1aPollerStateDump,
  25. Gen1aPollerStateSuccess,
  26. Gen1aPollerStateFail,
  27. Gen1aPollerStateNum,
  28. } Gen1aPollerState;
  29. typedef enum {
  30. Gen1aPollerSessionStateIdle,
  31. Gen1aPollerSessionStateStarted,
  32. Gen1aPollerSessionStateStopRequest,
  33. } Gen1aPollerSessionState;
  34. struct Gen1aPoller {
  35. Nfc* nfc;
  36. Gen1aPollerState state;
  37. Gen1aPollerSessionState session_state;
  38. uint16_t current_block;
  39. NfcDevice* mfc_device;
  40. BitBuffer* tx_buffer;
  41. BitBuffer* rx_buffer;
  42. Gen1aPollerEvent gen1a_event;
  43. Gen1aPollerEventData gen1a_event_data;
  44. Gen1aPollerCallback callback;
  45. void* context;
  46. };
  47. Gen1aPollerError gen1a_poller_wupa(Gen1aPoller* instance);
  48. Gen1aPollerError gen1a_poller_data_access(Gen1aPoller* instance);
  49. Gen1aPollerError
  50. gen1a_poller_write_block(Gen1aPoller* instance, uint8_t block_num, const MfClassicBlock* block);
  51. Gen1aPollerError
  52. gen1a_poller_read_block(Gen1aPoller* instance, uint8_t block_num, MfClassicBlock* block);
  53. #ifdef __cplusplus
  54. }
  55. #endif