1
0

store rtc time offset

This commit is contained in:
2026-02-18 16:22:25 +01:00
parent bfb1e71d7d
commit eae1252493
2 changed files with 20 additions and 2 deletions

View File

@@ -35,6 +35,13 @@ class I2CPCClient:
payload = bytes([2, addr, len(write_data)]) + write_data + bytes([read_len])
return self._send_packet(payload)
def write_eeprom(self, addr: int, data: bytes):
payload = bytes([7, (addr >> 8) & 0xff, addr & 0xff]) + data
return self._send_packet(payload)
def read_eeprom(self, addr: int, len: int):
payload = bytes([8, (addr >> 8) & 0xff, addr & 0xff, len])
return self._send_packet(payload)
def version(self): return self._send_packet(bytes([4]))
def quit(self): return self._send_packet(bytes([3]))

13
rtc.py
View File

@@ -2,10 +2,16 @@ import datetime
from protocol import I2CPCClient
def sync_rtc(p: I2CPCClient):
TIMEOFFSET_ADDR = 2275
dtime = datetime.datetime.now(datetime.UTC)
utc_off = d.total_seconds() / 3600 if (d := datetime.datetime.now().astimezone().utcoffset()) else 0
if(p.version()[-1] >= 2): p.write_eeprom(TIMEOFFSET_ADDR, int(utc_off).to_bytes(1, signed=True))
else: dtime = datetime.datetime.now()
ADDRESS = 0x32
p.write_i2c(ADDRESS, b"\x1f\x40") # halt the clock
dtime = datetime.datetime.now()
def toBCD(val: int) -> int:
return ((val // 10) << 4) | (val % 10)
data = b"\x10"
@@ -19,3 +25,8 @@ def sync_rtc(p: I2CPCClient):
p.write_i2c(ADDRESS, data)
p.write_i2c(ADDRESS, b"\x1f\x00") # start the clock
p = I2CPCClient("COM17")
sync_rtc(p)
p.reboot()
p.close()