1
0

xrd protocol

This commit is contained in:
2026-02-20 17:47:38 +01:00
parent 8e11d6239d
commit 9576fbae3a
5 changed files with 222 additions and 38 deletions

View File

@@ -49,8 +49,8 @@ class I2CPCClient:
body = resp_len_raw + response[:-1]
if crc8(body) != received_crc: raise ValueError("CRC mismatch")
response = response[:-1]
return response
if response[0] == 0xff and resp_len == 1: raise Exception(f"Error from device: {response[1]}")
return response[1:]
def set_clock(self, clock_hz: int):
@@ -59,18 +59,18 @@ class I2CPCClient:
def write_i2c(self, addr: int, data: bytes):
payload = bytes([1, addr]) + data
return self._send_packet(payload)
return self._send_packet(payload, False)
def write_read_i2c(self, addr: int, write_data: bytes, read_len: int):
payload = bytes([2, addr, len(write_data)]) + write_data + bytes([read_len])
return self._send_packet(payload)
return self._send_packet(payload, False)
def write_eeprom(self, addr: int, data: bytes):
payload = bytes([7, (addr >> 8) & 0xff, addr & 0xff]) + data
return self._send_packet(payload)
return self._send_packet(payload, False)
def read_eeprom(self, addr: int, len: int):
payload = bytes([8, (addr >> 8) & 0xff, addr & 0xff, len])
return self._send_packet(payload)
return self._send_packet(payload, False)
def version(self): return self._send_packet(bytes([4]))