18const uint8_t ACK[6] = {0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00};
21uint16_t pn532_build_frame(uint8_t tfi,
const uint8_t *data, uint8_t len, uint8_t *out, uint16_t cap)
25 uint16_t total = (uint16_t)(8 + len);
28 uint8_t frame_len = (uint8_t)(1 + len);
33 out[4] = (uint8_t)(0x100 - frame_len);
36 for (uint8_t i = 0; i < len; i++)
39 sum = (uint8_t)(sum + data[i]);
41 out[6 + len] = (uint8_t)(0x100 - sum);
46int pn532_parse_frame(
const uint8_t *raw, uint16_t len, uint8_t *tfi,
const uint8_t **pdata, uint8_t *pdata_len)
54 if (raw[1] != 0x00 || raw[2] != 0xFF)
56 uint8_t frame_len = raw[3];
57 if ((uint8_t)(frame_len + raw[4]) != 0)
61 uint16_t total = (uint16_t)(7 + frame_len);
65 for (uint8_t i = 0; i < frame_len; i++)
66 sum = (uint8_t)(sum + raw[5 + i]);
67 if ((uint8_t)(sum + raw[5 + frame_len]) != 0)
74 *pdata_len = (uint8_t)(frame_len - 1);
78bool pn532_is_ack(
const uint8_t *raw, uint16_t len)
82 for (uint8_t i = 0; i < 6; i++)
88uint16_t pn532_build_ack(uint8_t *out, uint16_t cap)
92 for (uint8_t i = 0; i < 6; i++)
#define DETWS_PN532_MAX_DATA
Reject a PN532 normal frame whose declared length exceeds this (framing sanity).
PN532 NFC frame codec (DETWS_ENABLE_PN532) - NXP PN532 NFC/RFID controller.