rfal_picopass.h 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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. RFAL_PICOPASS_CMD_WRITE = 0x0C,
  25. };
  26. typedef struct {
  27. uint8_t CSN[RFAL_PICOPASS_UID_LEN]; // Anti-collision CSN
  28. uint8_t crc[2];
  29. } rfalPicoPassIdentifyRes;
  30. typedef struct {
  31. uint8_t CSN[RFAL_PICOPASS_UID_LEN]; // Real CSN
  32. uint8_t crc[2];
  33. } rfalPicoPassSelectRes;
  34. typedef struct {
  35. uint8_t CCNR[8];
  36. } rfalPicoPassReadCheckRes;
  37. typedef struct {
  38. uint8_t mac[4];
  39. } rfalPicoPassCheckRes;
  40. typedef struct {
  41. uint8_t data[RFAL_PICOPASS_MAX_BLOCK_LEN];
  42. uint8_t crc[2];
  43. } rfalPicoPassReadBlockRes;
  44. ReturnCode rfalPicoPassPollerInitialize(void);
  45. ReturnCode rfalPicoPassPollerCheckPresence(void);
  46. ReturnCode rfalPicoPassPollerIdentify(rfalPicoPassIdentifyRes* idRes);
  47. ReturnCode rfalPicoPassPollerSelect(uint8_t* csn, rfalPicoPassSelectRes* selRes);
  48. ReturnCode rfalPicoPassPollerReadCheck(rfalPicoPassReadCheckRes* rcRes);
  49. ReturnCode rfalPicoPassPollerCheck(uint8_t* mac, rfalPicoPassCheckRes* chkRes);
  50. ReturnCode rfalPicoPassPollerReadBlock(uint8_t blockNum, rfalPicoPassReadBlockRes* readRes);
  51. ReturnCode rfalPicoPassPollerWriteBlock(uint8_t blockNum, uint8_t data[8], uint8_t mac[4]);
  52. #endif /* RFAL_PICOPASS_H */