20 #if defined(ARDUINO_ARCH_AVR) || defined(ARDUINO_ARCH_SAMD)
21 #include <avr/pgmspace.h>
30 namespace crc16ccitt_nibble {
37 static const crc_t crc_table[16] PROGMEM = {
38 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7,
39 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef
43 crc_t crc_update(
crc_t crc,
const void *data,
size_t data_len)
45 const unsigned char *d = (
const unsigned char *)data;
49 tbl_idx = (crc >> 12) ^ (*d >> 4);
50 crc = (pgm_read_word(crc_table + (tbl_idx & 0x0f))) ^ (crc << 4);
51 tbl_idx = (crc >> 12) ^ (*d >> 0);
52 crc = (pgm_read_word(crc_table + (tbl_idx & 0x0f))) ^ (crc << 4);
uint16_t crc_t
The type of the CRC values.
Functions and types for CRC checks.
uint16_t crc_t
The type of the CRC values.