rfal_picopass.h 935 B

1234567891011121314151617181920212223242526272829303132
  1. #pragma once
  2. #include <furi_hal_nfc.h>
  3. #define RFAL_PICOPASS_UID_LEN 8
  4. #define RFAL_PICOPASS_MAX_BLOCK_LEN 8
  5. enum {
  6. RFAL_PICOPASS_CMD_ACTALL = 0x0A,
  7. RFAL_PICOPASS_CMD_IDENTIFY = 0x0C,
  8. RFAL_PICOPASS_CMD_SELECT = 0x81,
  9. RFAL_PICOPASS_CMD_READCHECK = 0x88,
  10. RFAL_PICOPASS_CMD_CHECK = 0x05,
  11. RFAL_PICOPASS_CMD_READ4 = 0x06,
  12. RFAL_PICOPASS_CMD_READ = 0x0C,
  13. RFAL_PICOPASS_CMD_WRITE = 0x87,
  14. };
  15. typedef struct {
  16. uint8_t CSN[RFAL_PICOPASS_UID_LEN]; // Anti-collision CSN
  17. uint8_t crc[2];
  18. } rfalPicoPassIdentifyRes;
  19. typedef struct {
  20. uint8_t CSN[RFAL_PICOPASS_UID_LEN]; // Real CSN
  21. uint8_t crc[2];
  22. } rfalPicoPassSelectRes;
  23. FuriHalNfcReturn rfalPicoPassPollerInitialize(void);
  24. FuriHalNfcReturn rfalPicoPassPollerCheckPresence(void);
  25. FuriHalNfcReturn rfalPicoPassPollerIdentify(rfalPicoPassIdentifyRes* idRes);
  26. FuriHalNfcReturn rfalPicoPassPollerSelect(uint8_t* csn, rfalPicoPassSelectRes* selRes);