rfal_picopass.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #ifndef RFAL_PICOPASS_H
  2. #define RFAL_PICOPASS_H
  3. /*
  4. ******************************************************************************
  5. * INCLUDES
  6. ******************************************************************************
  7. */
  8. #include "platform.h"
  9. #include "rfal_rf.h"
  10. #include "rfal_crc.h"
  11. #include "st_errno.h"
  12. #define RFAL_PICOPASS_UID_LEN 8
  13. #define RFAL_PICOPASS_MAX_BLOCK_LEN 8
  14. #define RFAL_PICOPASS_TXRX_FLAGS \
  15. (RFAL_TXRX_FLAGS_CRC_TX_MANUAL | RFAL_TXRX_FLAGS_AGC_ON | RFAL_TXRX_FLAGS_PAR_RX_REMV | \
  16. RFAL_TXRX_FLAGS_CRC_RX_KEEP)
  17. enum {
  18. RFAL_PICOPASS_CMD_ACTALL = 0x0A,
  19. RFAL_PICOPASS_CMD_IDENTIFY = 0x0C,
  20. RFAL_PICOPASS_CMD_SELECT = 0x81,
  21. RFAL_PICOPASS_CMD_READCHECK = 0x88,
  22. RFAL_PICOPASS_CMD_CHECK = 0x05,
  23. RFAL_PICOPASS_CMD_READ = 0x0C,
  24. };
  25. typedef struct {
  26. uint8_t CSN[RFAL_PICOPASS_UID_LEN]; // Anti-collision CSN
  27. uint8_t crc[2];
  28. } rfalPicoPassIdentifyRes;
  29. typedef struct {
  30. uint8_t CSN[RFAL_PICOPASS_UID_LEN]; // Real CSN
  31. uint8_t crc[2];
  32. } rfalPicoPassSelectRes;
  33. typedef struct {
  34. uint8_t CCNR[8];
  35. } rfalPicoPassReadCheckRes;
  36. typedef struct {
  37. uint8_t mac[4];
  38. } rfalPicoPassCheckRes;
  39. typedef struct {
  40. uint8_t data[RFAL_PICOPASS_MAX_BLOCK_LEN];
  41. uint8_t crc[2];
  42. } rfalPicoPassReadBlockRes;
  43. ReturnCode rfalPicoPassPollerInitialize(void);
  44. ReturnCode rfalPicoPassPollerCheckPresence(void);
  45. ReturnCode rfalPicoPassPollerIdentify(rfalPicoPassIdentifyRes* idRes);
  46. ReturnCode rfalPicoPassPollerSelect(uint8_t* csn, rfalPicoPassSelectRes* selRes);
  47. ReturnCode rfalPicoPassPollerReadCheck(rfalPicoPassReadCheckRes* rcRes);
  48. ReturnCode rfalPicoPassPollerCheck(uint8_t* mac, rfalPicoPassCheckRes* chkRes);
  49. ReturnCode rfalPicoPassPollerReadBlock(uint8_t blockNum, rfalPicoPassReadBlockRes* readRes);
  50. #endif /* RFAL_PICOPASS_H */