12static const char *
const TAG =
"pn532_spi";
52 ESP_LOGV(TAG,
"Reading data");
57 data.insert(data.begin(), 0x01);
63 ESP_LOGV(TAG,
"Reading response");
73 std::vector<uint8_t> header(7);
78 if (header[0] != 0x00 && header[1] != 0x00 && header[2] != 0xFF) {
80 ESP_LOGV(TAG,
"read data invalid preamble!");
84 bool valid_header = (
static_cast<uint8_t
>(header[3] + header[4]) == 0 &&
86 header[6] == command + 1);
89 ESP_LOGV(TAG,
"read data invalid header!");
94 uint8_t full_len = header[3];
96 uint8_t
len = full_len - 1;
100 ESP_LOGV(TAG,
"Reading response of length %d",
len);
102 data.resize(
len + 1);
108 uint8_t
checksum = header[5] + header[6];
109 for (
int i = 0; i <
len - 1; i++) {
110 uint8_t dat = data[i];
116 ESP_LOGV(TAG,
"read data invalid checksum! %02X != %02X", data[
len - 1],
checksum);
120 if (data[
len] != 0x00) {
121 ESP_LOGV(TAG,
"read data invalid postamble!");
125 data.erase(data.end() - 2, data.end());
131 PN532::dump_config();
132 LOG_PIN(
" CS Pin: ", this->
cs_);
virtual void digital_write(bool value)=0
enum PN532ReadReady read_ready_(bool block)
bool write_data(const std::vector< uint8_t > &data) override
void dump_config() override
bool read_data(std::vector< uint8_t > &data, uint8_t len) override
bool is_read_ready() override
bool read_response(uint8_t command, std::vector< uint8_t > &data) override
void spi_setup() override
void write_byte(uint8_t data)
void write_array(const uint8_t *data, size_t length)
void read_array(uint8_t *data, size_t length)
Providing packet encoding functions for exchanging data with a remote host.
std::string format_hex_pretty(const uint8_t *data, size_t length, char separator, bool show_length)
Format a byte array in pretty-printed, human-readable hex format.
void IRAM_ATTR HOT delay(uint32_t ms)