AceCRC  1.0
Cyclic Redundancy Check (CRC) algorithms (e.g. crc16ccitt, crc32) programmatically converted from C99 code generated by pycrc (https://pycrc.org) to Arduino C++ using namespaces and PROGMEM flash memory.
crc32_nibblem.cpp
Go to the documentation of this file.
1 
20 #include "crc32_nibblem.hpp" // header file converted by AceCRC
21 #include <stdlib.h>
22 #include <stdint.h>
23 
24 namespace ace_crc {
25 namespace crc32_nibblem {
26 
27 
28 
32 static const crc_t crc_table[16] = {
33  0x00000000, 0x1db71064, 0x3b6e20c8, 0x26d930ac, 0x76dc4190, 0x6b6b51f4, 0x4db26158, 0x5005713c,
34  0xedb88320, 0xf00f9344, 0xd6d6a3e8, 0xcb61b38c, 0x9b64c2b0, 0x86d3d2d4, 0xa00ae278, 0xbdbdf21c
35 };
36 
37 
38 crc_t crc_update(crc_t crc, const void *data, size_t data_len)
39 {
40  const unsigned char *d = (const unsigned char *)data;
41  uint8_t tbl_idx;
42 
43  while (data_len--) {
44  tbl_idx = crc ^ *d;
45  crc = crc_table[tbl_idx & 0x0f] ^ (crc >> 4);
46  tbl_idx = crc ^ (*d >> 4);
47  crc = crc_table[tbl_idx & 0x0f] ^ (crc >> 4);
48  d++;
49  }
50  return crc & 0xffffffff;
51 }
52 
53 } // crc32_nibblem
54 } // ace_crc
crc32_nibblem.hpp
ace_crc::crc16ccitt_bit::crc_t
uint16_t crc_t
The type of the CRC values.
Definition: crc16ccitt_bit.hpp:68
ace_crc::crc32_nibblem::crc_t
uint32_t crc_t
The type of the CRC values.
Definition: crc32_nibblem.hpp:68