18const uint8_t ACK[6] = {0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00};
21uint16_t pc_pn532_build_frame(uint8_t tfi,
const uint8_t *data, uint8_t len, uint8_t *out, uint16_t cap)
27 uint16_t total = (uint16_t)(8 + len);
32 uint8_t frame_len = (uint8_t)(1 + len);
37 out[4] = (uint8_t)(0x100 - frame_len);
40 for (uint8_t i = 0; i < len; i++)
43 sum = (uint8_t)(sum + data[i]);
45 out[6 + len] = (uint8_t)(0x100 - sum);
50int pc_pn532_parse_frame(
const uint8_t *raw, uint16_t len, uint8_t *tfi,
const uint8_t **pdata, uint8_t *pdata_len)
64 if (raw[1] != 0x00 || raw[2] != 0xFF)
68 uint8_t frame_len = raw[3];
69 if ((uint8_t)(frame_len + raw[4]) != 0)
77 uint16_t total = (uint16_t)(7 + frame_len);
83 for (uint8_t i = 0; i < frame_len; i++)
85 sum = (uint8_t)(sum + raw[5 + i]);
87 if ((uint8_t)(sum + raw[5 + frame_len]) != 0)
101 *pdata_len = (uint8_t)(frame_len - 1);
106bool pc_pn532_is_ack(
const uint8_t *raw, uint16_t len)
112 for (uint8_t i = 0; i < 6; i++)
114 if (raw[i] != ACK[i])
122uint16_t pc_pn532_build_ack(uint8_t *out, uint16_t cap)
128 for (uint8_t i = 0; i < 6; i++)
PN532 NFC frame codec (PC_ENABLE_PN532) - NXP PN532 NFC/RFID controller.
#define PC_PN532_MAX_DATA
Reject a PN532 normal frame whose declared length exceeds this (framing sanity).