diff --git a/selfdrive/pandad/pandad.py b/selfdrive/pandad/pandad.py index a0bca3f23..bda349aec 100755 --- a/selfdrive/pandad/pandad.py +++ b/selfdrive/pandad/pandad.py @@ -32,8 +32,7 @@ def flash_panda(panda_serial: str) -> Panda: raise # skip flashing if the detected panda is not supported - supported_panda = check_panda_support(panda) - if not supported_panda: + if panda.get_type() not in Panda.SUPPORTED_DEVICES: cloudlog.warning(f"Panda {panda_serial} is not supported (hw_type: {panda.get_type()}), skipping flash...") return panda @@ -69,10 +68,19 @@ def flash_panda(panda_serial: str) -> Panda: return panda -def check_panda_support(panda) -> bool: - hw_type = panda.get_type() - if hw_type in Panda.SUPPORTED_DEVICES: - return True +def check_panda_support(panda_serials: list[str]) -> bool: + unsupported = [] + for serial in panda_serials: + panda = Panda(serial) + hw_type = panda.get_type() + panda.close() + if hw_type in Panda.SUPPORTED_DEVICES: + return True + + unsupported.append((serial, hw_type)) + + for serial, hw_type in unsupported: + cloudlog.warning(f"Panda {serial} is not supported (hw_type: {hw_type}), skipping...") return False @@ -126,6 +134,10 @@ def main() -> None: cloudlog.info(f"{len(panda_serials)} panda(s) found, connecting - {panda_serials}") + # skip flashing and health check if no supported panda is detected + if not check_panda_support(panda_serials): + continue + # Flash the first panda panda_serial = panda_serials[0] panda = flash_panda(panda_serial) @@ -143,12 +155,6 @@ def main() -> None: # log panda fw version params.put("PandaSignatures", panda.get_signature()) - # skip health check if the detected panda is not supported - supported_panda = check_panda_support(panda) - if not supported_panda: - cloudlog.warning(f"Panda {panda.get_usb_serial()} is not supported (hw_type: {panda.get_type()}), skipping health check...") - continue - # check health for lost heartbeat health = panda.health() if health["heartbeat_lost"]: