diff --git a/selfdrive/car/fw_versions.py b/selfdrive/car/fw_versions.py index 19370d1bfe..f97a0a6899 100755 --- a/selfdrive/car/fw_versions.py +++ b/selfdrive/car/fw_versions.py @@ -231,15 +231,28 @@ def get_fw_versions(logcan, sendcan, query_brand=None, extra=None, timeout=0.1, # ECUs using a subaddress need be queried one by one, the rest can be done in parallel addrs = [] parallel_addrs = [] + logging_addrs = [] ecu_types = {} + # logging_addrs = defaultdict(list) for brand, brand_versions in versions.items(): - for c in brand_versions.values(): - for ecu_type, addr, sub_addr in c.keys(): + # print(brand, brand_versions.keys()) + # print(brand, brand_versions["debug"]) + for candidate, ecu in brand_versions.items(): + # if brand not in logging_addrs: + # logging_addrs[brand] = [] + # if car == "debug": + # logging_addrs.append() [brand].append(ecu) + # # logging_addrs[brand].append(ecu) + + for ecu_type, addr, sub_addr in ecu.keys(): a = (brand, addr, sub_addr) if a not in ecu_types: ecu_types[a] = ecu_type + if a not in logging_addrs and candidate == "debug": + logging_addrs.append(a) + if sub_addr is None: if a not in parallel_addrs: parallel_addrs.append(a) @@ -248,12 +261,14 @@ def get_fw_versions(logcan, sendcan, query_brand=None, extra=None, timeout=0.1, addrs.append([a]) addrs.insert(0, parallel_addrs) + print('logging', logging_addrs) # Get versions and build capnp list to put into CarParams car_fw = [] requests = [(brand, r) for brand, r in REQUESTS if query_brand is None or brand == query_brand] for addr in tqdm(addrs, disable=not progress): for addr_chunk in chunks(addr): + # print(addr_chunk) for brand, r in requests: # Skip query if no panda available if r.bus > num_pandas * 4 - 1: @@ -268,14 +283,15 @@ def get_fw_versions(logcan, sendcan, query_brand=None, extra=None, timeout=0.1, for (tx_addr, sub_addr), version in query.get_data(timeout).items(): f = car.CarParams.CarFw.new_message() - f.ecu = ecu_types.get((brand, tx_addr, sub_addr), Ecu.unknown) + ecu_key = (brand, tx_addr, sub_addr) + f.ecu = ecu_types.get(ecu_key, Ecu.unknown) f.fwVersion = version f.address = tx_addr f.responseAddress = uds.get_rx_addr_for_tx_addr(tx_addr, r.rx_offset) f.request = r.request f.brand = brand f.bus = r.bus - f.logging = r.logging + f.logging = r.logging or ecu_key in logging_addrs if sub_addr is not None: f.subAddress = sub_addr