diff --git a/panda b/panda index bdb591f5e6..c89c8db650 160000 --- a/panda +++ b/panda @@ -1 +1 @@ -Subproject commit bdb591f5e68f12c5b5fad60f331192abc2e1fd92 +Subproject commit c89c8db65098570335c10d8f25e0a6d3da86b731 diff --git a/selfdrive/common/params.cc b/selfdrive/common/params.cc index eab476a74b..e53d03f87b 100644 --- a/selfdrive/common/params.cc +++ b/selfdrive/common/params.cc @@ -142,6 +142,7 @@ std::unordered_map keys = { {"NavdRender", PERSISTENT}, {"OpenpilotEnabledToggle", PERSISTENT}, {"PandaHeartbeatLost", CLEAR_ON_MANAGER_START | CLEAR_ON_IGNITION_OFF}, + {"PandaSignatures", CLEAR_ON_MANAGER_START}, {"Passive", PERSISTENT}, {"PrimeRedirected", PERSISTENT}, {"RecordFront", PERSISTENT}, diff --git a/selfdrive/pandad.py b/selfdrive/pandad.py index 3df2c1ec24..1f9fddab7a 100755 --- a/selfdrive/pandad.py +++ b/selfdrive/pandad.py @@ -75,9 +75,12 @@ def panda_sort_cmp(a: Panda, b: Panda): def main() -> NoReturn: first_run = True + params = Params() while True: try: + params.delete("PandaSignatures") + # Flash all Pandas in DFU mode for p in PandaDFU.list(): cloudlog.info(f"Panda in DFU mode found, flashing recovery {p}") @@ -99,7 +102,7 @@ def main() -> NoReturn: for panda in pandas: health = panda.health() if health["heartbeat_lost"]: - Params().put_bool("PandaHeartbeatLost", True) + params.put_bool("PandaHeartbeatLost", True) cloudlog.event("heartbeat lost", deviceState=health, serial=panda.get_usb_serial()) if first_run: @@ -110,6 +113,9 @@ def main() -> NoReturn: pandas.sort(key=cmp_to_key(panda_sort_cmp)) panda_serials = list(map(lambda p: p.get_usb_serial(), pandas)) + # log panda fw versions + params.put("PandaSignatures", b','.join(p.get_signature() for p in pandas)) + # close all pandas for p in pandas: p.close()