rfal_picopass.h 1.9 KB

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