set_time: use python library (#27827)

* set_time: use python library

* unused import

---------

Co-authored-by: Comma Device <device@comma.ai>
pull/27832/head
Adeeb Shihadeh 2 years ago committed by GitHub
parent 5f6a122c24
commit d551a4c18e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      panda
  2. 38
      selfdrive/boardd/set_time.py

@ -1 +1 @@
Subproject commit 6f852b44a9ef1ee119fabf6aa2a9c477ed594a46 Subproject commit 878e0077ac077c5325b37710b8df856468d85674

@ -1,11 +1,9 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
import datetime
import os import os
import struct import datetime
import usb1 from panda import Panda
REQUEST_IN = usb1.ENDPOINT_IN | usb1.TYPE_VENDOR | usb1.RECIPIENT_DEVICE MIN_DATE = datetime.datetime(year=2023, month=4, day=1)
MIN_DATE = datetime.datetime(year=2021, month=4, day=1)
def set_time(logger): def set_time(logger):
sys_time = datetime.datetime.today() sys_time = datetime.datetime.today()
@ -14,24 +12,28 @@ def set_time(logger):
return return
try: try:
ctx = usb1.USBContext() ps = Panda.list()
dev = ctx.openByVendorIDAndProductID(0xbbaa, 0xddcc) if len(ps) == 0:
if dev is None: logger.error("Failed to set time, no pandas found")
logger.info("No panda found")
return return
# Set system time from panda RTC time for s in ps:
dat = dev.controlRead(REQUEST_IN, 0xa0, 0, 0, 8) with Panda(serial=s) as p:
a = struct.unpack("HBBBBBB", dat) if not p.is_internal():
panda_time = datetime.datetime(a[0], a[1], a[2], a[4], a[5], a[6]) continue
if panda_time > MIN_DATE:
logger.info(f"adjusting time from '{sys_time}' to '{panda_time}'") # Set system time from panda RTC time
os.system(f"TZ=UTC date -s '{panda_time}'") panda_time = p.get_datetime()
logger.info(f"adjusting time from '{sys_time}' to '{panda_time}'")
if panda_time > MIN_DATE:
logger.info(f"adjusting time from '{sys_time}' to '{panda_time}'")
os.system(f"TZ=UTC date -s '{panda_time}'")
break
except Exception: except Exception:
logger.warn("Failed to fetch time from panda") logger.exception("Failed to fetch time from panda")
if __name__ == "__main__": if __name__ == "__main__":
import logging import logging
logging.basicConfig(level=logging.INFO) logging.basicConfig(level=logging.DEBUG)
set_time(logging) set_time(logging)

Loading…
Cancel
Save