move live fingerprint debugging code to debug/car (#33308)
* remove cereal from fw_versions
* fix it
* do ecu_addrs and vin
* do last one
* move executable-ness
* notexe
* nice test
old-commit-hash: 2ed567b0f5
pull/33314/head
parent
915524d408
commit
51ea9f5799
10 changed files with 149 additions and 151 deletions
@ -0,0 +1,15 @@ |
||||
#!/usr/bin/env python3 |
||||
import time |
||||
import cereal.messaging as messaging |
||||
from openpilot.selfdrive.car.card import can_comm_callbacks |
||||
from openpilot.selfdrive.car.disable_ecu import disable_ecu |
||||
|
||||
if __name__ == "__main__": |
||||
sendcan = messaging.pub_sock('sendcan') |
||||
logcan = messaging.sub_sock('can') |
||||
can_callbacks = can_comm_callbacks(logcan, sendcan) |
||||
time.sleep(1) |
||||
|
||||
# honda bosch radar disable |
||||
disabled = disable_ecu(*can_callbacks, bus=1, addr=0x18DAB0F1, com_cont_req=b'\x28\x83\x03', timeout=0.5, debug=False) |
||||
print(f"disabled: {disabled}") |
@ -0,0 +1,40 @@ |
||||
#!/usr/bin/env python3 |
||||
import argparse |
||||
import time |
||||
import cereal.messaging as messaging |
||||
from openpilot.common.params import Params |
||||
from openpilot.selfdrive.car.card import can_comm_callbacks, obd_callback |
||||
from openpilot.selfdrive.car.ecu_addrs import get_all_ecu_addrs |
||||
|
||||
|
||||
if __name__ == "__main__": |
||||
parser = argparse.ArgumentParser(description='Get addresses of all ECUs') |
||||
parser.add_argument('--debug', action='store_true') |
||||
parser.add_argument('--bus', type=int, default=1) |
||||
parser.add_argument('--no-obd', action='store_true') |
||||
parser.add_argument('--timeout', type=float, default=1.0) |
||||
args = parser.parse_args() |
||||
|
||||
logcan = messaging.sub_sock('can') |
||||
sendcan = messaging.pub_sock('sendcan') |
||||
can_callbacks = can_comm_callbacks(logcan, sendcan) |
||||
|
||||
# Set up params for pandad |
||||
params = Params() |
||||
params.remove("FirmwareQueryDone") |
||||
params.put_bool("IsOnroad", False) |
||||
time.sleep(0.2) # thread is 10 Hz |
||||
params.put_bool("IsOnroad", True) |
||||
|
||||
obd_callback(params)(not args.no_obd) |
||||
|
||||
print("Getting ECU addresses ...") |
||||
ecu_addrs = get_all_ecu_addrs(*can_callbacks, args.bus, args.timeout, debug=args.debug) |
||||
|
||||
print() |
||||
print("Found ECUs on rx addresses:") |
||||
for addr, subaddr, _ in ecu_addrs: |
||||
msg = f" {hex(addr)}" |
||||
if subaddr is not None: |
||||
msg += f" (sub-address: {hex(subaddr)})" |
||||
print(msg) |
@ -0,0 +1,70 @@ |
||||
#!/usr/bin/env python3 |
||||
import time |
||||
import argparse |
||||
import cereal.messaging as messaging |
||||
from cereal import car |
||||
from openpilot.common.params import Params |
||||
from openpilot.selfdrive.car.card import can_comm_callbacks, obd_callback |
||||
from openpilot.selfdrive.car.fw_versions import get_fw_versions, match_fw_to_car |
||||
from openpilot.selfdrive.car.vin import get_vin |
||||
from typing import Any |
||||
|
||||
Ecu = car.CarParams.Ecu |
||||
|
||||
if __name__ == "__main__": |
||||
parser = argparse.ArgumentParser(description='Get firmware version of ECUs') |
||||
parser.add_argument('--scan', action='store_true') |
||||
parser.add_argument('--debug', action='store_true') |
||||
parser.add_argument('--brand', help='Only query addresses/with requests for this brand') |
||||
args = parser.parse_args() |
||||
|
||||
logcan = messaging.sub_sock('can') |
||||
pandaStates_sock = messaging.sub_sock('pandaStates') |
||||
sendcan = messaging.pub_sock('sendcan') |
||||
can_callbacks = can_comm_callbacks(logcan, sendcan) |
||||
|
||||
# Set up params for pandad |
||||
params = Params() |
||||
params.remove("FirmwareQueryDone") |
||||
params.put_bool("IsOnroad", False) |
||||
time.sleep(0.2) # thread is 10 Hz |
||||
params.put_bool("IsOnroad", True) |
||||
set_obd_multiplexing = obd_callback(params) |
||||
|
||||
extra: Any = None |
||||
if args.scan: |
||||
extra = {} |
||||
# Honda |
||||
for i in range(256): |
||||
extra[(Ecu.unknown, 0x18da00f1 + (i << 8), None)] = [] |
||||
extra[(Ecu.unknown, 0x700 + i, None)] = [] |
||||
extra[(Ecu.unknown, 0x750, i)] = [] |
||||
extra = {"any": {"debug": extra}} |
||||
|
||||
num_pandas = len(messaging.recv_one_retry(pandaStates_sock).pandaStates) |
||||
|
||||
t = time.time() |
||||
print("Getting vin...") |
||||
set_obd_multiplexing(True) |
||||
vin_rx_addr, vin_rx_bus, vin = get_vin(*can_callbacks, (0, 1), debug=args.debug) |
||||
print(f'RX: {hex(vin_rx_addr)}, BUS: {vin_rx_bus}, VIN: {vin}') |
||||
print(f"Getting VIN took {time.time() - t:.3f} s") |
||||
print() |
||||
|
||||
t = time.time() |
||||
fw_vers = get_fw_versions(*can_callbacks, set_obd_multiplexing, query_brand=args.brand, extra=extra, num_pandas=num_pandas, debug=args.debug, progress=True) |
||||
_, candidates = match_fw_to_car(fw_vers, vin) |
||||
|
||||
print() |
||||
print("Found FW versions") |
||||
print("{") |
||||
padding = max([len(fw.brand) for fw in fw_vers] or [0]) |
||||
for version in fw_vers: |
||||
subaddr = None if version.subAddress == 0 else hex(version.subAddress) |
||||
print(f" Brand: {version.brand:{padding}}, bus: {version.bus}, OBD: {version.obdMultiplexing} - " + |
||||
f"(Ecu.{version.ecu}, {hex(version.address)}, {subaddr}): [{version.fwVersion}]") |
||||
print("}") |
||||
|
||||
print() |
||||
print("Possible matches:", candidates) |
||||
print(f"Getting fw took {time.time() - t:.3f} s") |
@ -0,0 +1,22 @@ |
||||
#!/usr/bin/env python3 |
||||
import argparse |
||||
import time |
||||
import cereal.messaging as messaging |
||||
from openpilot.selfdrive.car.card import can_comm_callbacks |
||||
from openpilot.selfdrive.car.vin import get_vin |
||||
|
||||
if __name__ == "__main__": |
||||
parser = argparse.ArgumentParser(description='Get VIN of the car') |
||||
parser.add_argument('--debug', action='store_true') |
||||
parser.add_argument('--bus', type=int, default=1) |
||||
parser.add_argument('--timeout', type=float, default=0.1) |
||||
parser.add_argument('--retry', type=int, default=5) |
||||
args = parser.parse_args() |
||||
|
||||
sendcan = messaging.pub_sock('sendcan') |
||||
logcan = messaging.sub_sock('can') |
||||
can_callbacks = can_comm_callbacks(logcan, sendcan) |
||||
time.sleep(1) |
||||
|
||||
vin_rx_addr, vin_rx_bus, vin = get_vin(*can_callbacks, (args.bus,), args.timeout, args.retry, debug=args.debug) |
||||
print(f'RX: {hex(vin_rx_addr)}, BUS: {vin_rx_bus}, VIN: {vin}') |
Loading…
Reference in new issue