mirror of
https://github.com/UtilitechAS/amsreader-firmware.git
synced 2026-01-14 07:49:01 +00:00
crc
This commit is contained in:
parent
2087c287bf
commit
f68666bd4a
@ -12,6 +12,6 @@
|
||||
|
||||
uint16_t crc16(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
|
||||
|
||||
@ -34,20 +34,23 @@ uint16_t crc16 (const uint8_t *p, int len) {
|
||||
return crc;
|
||||
}
|
||||
|
||||
uint16_t crc16_ccit(const uint8_t *p, int len)
|
||||
uint16_t crc16_1021(const uint8_t *p, int len)
|
||||
{
|
||||
int crc;
|
||||
char i;
|
||||
crc = 0;
|
||||
while (len--) {
|
||||
uint8_t i;
|
||||
crc = crc ^ (uint8_t) *p++ << 8;
|
||||
for (i = 0 ; i < 8 ; ++i) {
|
||||
if (crc & 0x8000)
|
||||
crc = crc << 1 ^ 0x1021;
|
||||
else
|
||||
crc = crc << 1;
|
||||
uint16_t crc = 0x0000;
|
||||
for(uint16_t i = 0; i < len; i++) {
|
||||
uint16_t mask = 0x80;
|
||||
while(mask > 0) {
|
||||
crc <<= 1;
|
||||
if (p[i] & mask) {
|
||||
crc |= 1;
|
||||
}
|
||||
mask>>=1;
|
||||
if (crc & 0x10000) {
|
||||
crc &= 0xffff;
|
||||
crc ^= 0x1021;
|
||||
}
|
||||
}
|
||||
}
|
||||
return (crc);
|
||||
}
|
||||
return crc;
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user