get_present_ecus: check available pandas (#27181)

* add num_pandas to get_present_ecus

* always bugged me

* move this to function signature
old-commit-hash: 2a6de71cc0
beeps
Shane Smiskol 2 years ago committed by GitHub
parent 67b7af075d
commit d41cd812d7
  1. 2
      selfdrive/car/car_helpers.py
  2. 2
      selfdrive/car/ecu_addrs.py
  3. 8
      selfdrive/car/fw_versions.py

@ -99,7 +99,7 @@ def fingerprint(logcan, sendcan, num_pandas):
else: else:
cloudlog.warning("Getting VIN & FW versions") cloudlog.warning("Getting VIN & FW versions")
vin_rx_addr, vin = get_vin(logcan, sendcan, bus) vin_rx_addr, vin = get_vin(logcan, sendcan, bus)
ecu_rx_addrs = get_present_ecus(logcan, sendcan) ecu_rx_addrs = get_present_ecus(logcan, sendcan, num_pandas=num_pandas)
car_fw = get_fw_versions_ordered(logcan, sendcan, ecu_rx_addrs, num_pandas=num_pandas) car_fw = get_fw_versions_ordered(logcan, sendcan, ecu_rx_addrs, num_pandas=num_pandas)
cached = False cached = False

@ -87,5 +87,5 @@ if __name__ == "__main__":
for addr, subaddr, bus in ecu_addrs: for addr, subaddr, bus in ecu_addrs:
msg = f" 0x{hex(addr)}" msg = f" 0x{hex(addr)}"
if subaddr is not None: if subaddr is not None:
msg += f" (sub-address: 0x{hex(subaddr)})" msg += f" (sub-address: {hex(subaddr)})"
print(msg) print(msg)

@ -146,12 +146,16 @@ def match_fw_to_car(fw_versions, allow_exact=True, allow_fuzzy=True):
return True, set() return True, set()
def get_present_ecus(logcan, sendcan): def get_present_ecus(logcan, sendcan, num_pandas=1) -> Set[Tuple[int, Optional[int], int]]:
queries = list() queries = list()
parallel_queries = list() parallel_queries = list()
responses = set() responses = set()
for brand, r in REQUESTS: for brand, r in REQUESTS:
# Skip query if no panda available
if r.bus > num_pandas * 4 - 1:
continue
for brand_versions in VERSIONS[brand].values(): for brand_versions in VERSIONS[brand].values():
for ecu_type, addr, sub_addr in brand_versions: for ecu_type, addr, sub_addr in brand_versions:
# Only query ecus in whitelist if whitelist is not empty # Only query ecus in whitelist if whitelist is not empty
@ -171,7 +175,7 @@ def get_present_ecus(logcan, sendcan):
queries.insert(0, parallel_queries) queries.insert(0, parallel_queries)
ecu_responses: Set[Tuple[int, Optional[int], int]] = set() ecu_responses = set()
for query in queries: for query in queries:
ecu_responses.update(get_ecu_addrs(logcan, sendcan, set(query), responses, timeout=0.1)) ecu_responses.update(get_ecu_addrs(logcan, sendcan, set(query), responses, timeout=0.1))
return ecu_responses return ecu_responses

Loading…
Cancel
Save