Fixup CRC16 to detect missing sequences of zeros

This commit is contained in:
Sassa NF
2024-11-03 19:26:14 +00:00
parent 47ca534d86
commit 4851702130
3 changed files with 6 additions and 3 deletions

View File

@@ -50,6 +50,7 @@ def parse_line(line):
POLY = 0x1021
def crc16(s, c):
c = c ^ 0xffff
for ch in s:
c = c ^ (ord(ch) << 8)
for i in range(8):
@@ -58,7 +59,7 @@ def crc16(s, c):
else:
c = (c << 1) & 0xffff
return c
return c ^ 0xffff
def main():
parser = argparse.ArgumentParser(formatter_class=RawTextHelpFormatter, description='''\

View File

@@ -123,6 +123,7 @@ String _wrap_str(String);
#define POLY 0x1021
uint16_t crc16(String v, uint16_t c)
{
c ^= 0xffff;
for (int i = 0; i < v.length(); i++)
{
uint16_t ch = v.charAt(i);
@@ -140,7 +141,7 @@ uint16_t crc16(String v, uint16_t c)
}
}
return c;
return c ^ 0xffff;
}
void ReadlineComms::_onReceive()

View File

@@ -13,6 +13,7 @@ typedef struct {
#define POLY 0x1021
uint16_t crc16(char *p, char *end, uint16_t c) {
c ^= 0xffff;
if (end == NULL) {
end = strchr(p, 0);
}
@@ -29,7 +30,7 @@ uint16_t crc16(char *p, char *end, uint16_t c) {
}
}
return c;
return c ^ 0xffff;
}
#define BUFSIZE 102400