diff --git a/laser_control/protocol.py b/laser_control/protocol.py index 262826a..9b1e6cc 100644 --- a/laser_control/protocol.py +++ b/laser_control/protocol.py @@ -404,12 +404,12 @@ class Protocol: def get_int_word(num: int) -> int: return int(get_word(num), 16) - # CRC check: XOR over words 1..13, compare with word 14 + # CRC check: XOR over words 1..13 (wire order), compare with word 14 (wire order) crc_words = [hex_str[i:i+4] for i in range(4, len(hex_str)-4, 4)] computed = int(crc_words[0], 16) for w in crc_words[1:]: computed ^= int(w, 16) - stored = get_int_word(14) + stored = int(hex_str[56:60], 16) if computed != stored: raise CRCError(expected=computed, received=stored) diff --git a/tests/conftest.py b/tests/conftest.py index 2527de3..6160309 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -76,8 +76,8 @@ def make_valid_response( for w in crc_words[1:]: crc_val ^= int(w, 16) - # Replace CRC word - hex_str = hex_str[:56] + _flipfour(_int_to_hex4(crc_val)) + # Replace CRC word (stored in wire order, no flipfour) + hex_str = hex_str[:56] + _int_to_hex4(crc_val) return bytes.fromhex(hex_str)