Skip to content

Commit 43fd883

Browse files
committed
refactoring of the CRC calculation
1 parent e03b096 commit 43fd883

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

bridge/packet.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,18 +46,23 @@ class CRC:
4646
def __init__(self, file):
4747
self.result = 0xFFFF
4848
self.file = file
49+
50+
def crc_update(crc, data):
51+
crc = crc & 0xFFFF
52+
data = data & 0xFF
53+
data = data ^ (crc & 0xFF)
54+
tmp = (data << 4) & 0xFF
55+
data = data ^ tmp
56+
hi8 = (crc >> 8) & 0xFF
57+
return (((data << 8) | hi8) ^ (data >> 4) ^ (data << 3)) & 0xFFFF
4958

5059
def write(self, data):
5160
while len(data) > 0:
5261
if not self.file is None:
5362
self.file.write(data[0])
54-
tmp = data
55-
tmp = chr(ord(tmp[0]) ^ (self.result & 0xFF))
56-
tmp = chr(ord(tmp[0]) ^ ((ord(tmp[0]) << 4) & 0xFF))
57-
self.result = (((ord(tmp[0]) << 8) & 0xFFFF) | (self.result >> 8)) ^ ((ord(tmp[0]) >> 4) & 0xFF) ^ ((ord(tmp[0]) << 3) & 0xFFFF)
63+
self.result = self.crc_update(self.result, ord(data[0]))
5864
data = data[1:]
5965

60-
6166
def write_crc(self):
6267
#print hex(self.result)
6368
stdout.write(chr(self.result >> 8))

0 commit comments

Comments
 (0)