mirror of
https://github.com/UtilitechAS/amsreader-firmware.git
synced 2026-05-01 22:16:50 +00:00
crc
This commit is contained in:
@@ -12,6 +12,6 @@
|
|||||||
|
|
||||||
uint16_t crc16(const uint8_t* p, int len);
|
uint16_t crc16(const uint8_t* p, int len);
|
||||||
uint16_t crc16_x25(const uint8_t* p, int len);
|
uint16_t crc16_x25(const uint8_t* p, int len);
|
||||||
uint16_t crc16_ccit(const uint8_t* p, int len);
|
uint16_t crc16_1021(const uint8_t* p, int len);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -34,20 +34,23 @@ uint16_t crc16 (const uint8_t *p, int len) {
|
|||||||
return crc;
|
return crc;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t crc16_ccit(const uint8_t *p, int len)
|
uint16_t crc16_1021(const uint8_t *p, int len)
|
||||||
{
|
{
|
||||||
int crc;
|
uint16_t crc = 0x0000;
|
||||||
char i;
|
for(uint16_t i = 0; i < len; i++) {
|
||||||
crc = 0;
|
uint16_t mask = 0x80;
|
||||||
while (len--) {
|
while(mask > 0) {
|
||||||
uint8_t i;
|
crc <<= 1;
|
||||||
crc = crc ^ (uint8_t) *p++ << 8;
|
if (p[i] & mask) {
|
||||||
for (i = 0 ; i < 8 ; ++i) {
|
crc |= 1;
|
||||||
if (crc & 0x8000)
|
}
|
||||||
crc = crc << 1 ^ 0x1021;
|
mask>>=1;
|
||||||
else
|
if (crc & 0x10000) {
|
||||||
crc = crc << 1;
|
crc &= 0xffff;
|
||||||
|
crc ^= 0x1021;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return (crc);
|
return crc;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user