You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.4 KiB
44 lines
1.4 KiB
#!/usr/bin/env python3
|
|
import argparse
|
|
import time
|
|
import cereal.messaging as messaging
|
|
from opendbc.car.carlog import carlog
|
|
from opendbc.car.ecu_addrs import get_all_ecu_addrs
|
|
from openpilot.common.params import Params
|
|
from openpilot.selfdrive.car.card import can_comm_callbacks, obd_callback
|
|
|
|
|
|
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()
|
|
|
|
if args.debug:
|
|
carlog.setLevel('DEBUG')
|
|
|
|
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)
|
|
|
|
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)
|
|
|