2023-09-27 15:45:31 -07:00
|
|
|
#pragma once
|
|
|
|
|
2024-02-21 23:02:43 +00:00
|
|
|
uint8_t crc_checksum(const uint8_t *dat, int len, const uint8_t poly) {
|
2023-09-27 15:45:31 -07:00
|
|
|
uint8_t crc = 0xFFU;
|
|
|
|
int i;
|
|
|
|
int j;
|
|
|
|
for (i = len - 1; i >= 0; i--) {
|
|
|
|
crc ^= dat[i];
|
|
|
|
for (j = 0; j < 8; j++) {
|
|
|
|
if ((crc & 0x80U) != 0U) {
|
|
|
|
crc = (uint8_t)((crc << 1) ^ poly);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
crc <<= 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return crc;
|
|
|
|
}
|