diff --git a/cereal b/cereal index 29099e87a1..430cc73a3b 160000 --- a/cereal +++ b/cereal @@ -1 +1 @@ -Subproject commit 29099e87a1372694fb81b426faaa57e832bbe87a +Subproject commit 430cc73a3b7c31de902bd0a62fbac7cd3a05cf3e diff --git a/selfdrive/car/car_helpers.py b/selfdrive/car/car_helpers.py index 478db2375c..e79b03cc5c 100644 --- a/selfdrive/car/car_helpers.py +++ b/selfdrive/car/car_helpers.py @@ -27,6 +27,13 @@ def get_startup_event(car_recognized, controller_available): return event +def get_one_can(logcan): + while True: + can = messaging.recv_one_retry(logcan) + if len(can.can) > 0: + return can + + def load_interfaces(brand_names): ret = {} for brand_name in brand_names: @@ -114,7 +121,7 @@ def fingerprint(logcan, sendcan, has_relay): done = False while not done: - a = messaging.get_one_can(logcan) + a = get_one_can(logcan) for can in a.can: # need to independently try to fingerprint both bus 0 and 1 to work diff --git a/selfdrive/controls/controlsd.py b/selfdrive/controls/controlsd.py index 4c11c5e05a..5443f8d382 100755 --- a/selfdrive/controls/controlsd.py +++ b/selfdrive/controls/controlsd.py @@ -10,7 +10,7 @@ from common.params import Params, put_nonblocking import cereal.messaging as messaging from selfdrive.config import Conversions as CV from selfdrive.boardd.boardd import can_list_to_can_capnp -from selfdrive.car.car_helpers import get_car, get_startup_event +from selfdrive.car.car_helpers import get_car, get_startup_event, get_one_can from selfdrive.controls.lib.lane_planner import CAMERA_OFFSET from selfdrive.controls.lib.drive_helpers import update_v_cruise, initialize_v_cruise from selfdrive.controls.lib.longcontrol import LongControl, STARTING_TARGET_SPEED @@ -64,7 +64,7 @@ class Controls: hw_type = messaging.recv_one(self.sm.sock['health']).health.hwType has_relay = hw_type in [HwType.blackPanda, HwType.uno, HwType.dos] print("Waiting for CAN messages...") - messaging.get_one_can(self.can_sock) + get_one_can(self.can_sock) self.CI, self.CP = get_car(self.can_sock, self.pm.sock['sendcan'], has_relay) diff --git a/tools/carcontrols/debug_controls.py b/tools/carcontrols/debug_controls.py index 1f353e0666..cdb5e3af87 100755 --- a/tools/carcontrols/debug_controls.py +++ b/tools/carcontrols/debug_controls.py @@ -4,7 +4,7 @@ from common.params import Params from copy import copy from cereal import car, log import cereal.messaging as messaging -from selfdrive.car.car_helpers import get_car +from selfdrive.car.car_helpers import get_car, get_one_can from selfdrive.boardd.boardd import can_list_to_can_capnp HwType = log.HealthData.HwType @@ -28,7 +28,7 @@ def steer_thread(): hw_type = messaging.recv_one(health).health.hwType has_relay = hw_type in [HwType.blackPanda, HwType.uno, HwType.dos] print("Waiting for CAN messages...") - messaging.get_one_can(logcan) + get_one_can(logcan) CI, CP = get_car(logcan, sendcan, has_relay) Params().put("CarParams", CP.to_bytes())