diff --git a/selfdrive/car/car_helpers.py b/selfdrive/car/car_helpers.py index 295275298f..5ee19214a3 100644 --- a/selfdrive/car/car_helpers.py +++ b/selfdrive/car/car_helpers.py @@ -9,19 +9,11 @@ from openpilot.selfdrive.car.fingerprints import eliminate_incompatible_cars, al from openpilot.selfdrive.car.vin import get_vin, is_valid_vin, VIN_UNKNOWN from openpilot.selfdrive.car.fw_versions import get_fw_versions_ordered, get_present_ecus, match_fw_to_car from openpilot.selfdrive.car.mock.values import CAR as MOCK -import cereal.messaging as messaging from openpilot.selfdrive.car import gen_empty_fingerprint FRAME_FINGERPRINT = 100 # 1s -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: @@ -138,9 +130,8 @@ def fingerprint(logcan, sendcan, set_obd_multiplexing, num_pandas, cached_params # CAN fingerprint # drain CAN socket so we get the latest messages - # messaging.drain_sock_raw(logcan) - logcan() - car_fingerprint, finger = can_fingerprint(lambda: get_one_can(logcan)) + logcan.drain() + car_fingerprint, finger = can_fingerprint(logcan.get_one_can) exact_match = True source = car.CarParams.FingerprintSource.can diff --git a/selfdrive/car/card.py b/selfdrive/car/card.py index e5dde9f1fc..ae9d36eb8f 100755 --- a/selfdrive/car/card.py +++ b/selfdrive/car/card.py @@ -1,6 +1,7 @@ #!/usr/bin/env python3 import os import time +from types import SimpleNamespace import cereal.messaging as messaging @@ -15,7 +16,7 @@ from openpilot.common.swaglog import cloudlog, ForwardingHandler from openpilot.selfdrive.pandad import can_list_to_can_capnp from openpilot.selfdrive.car import DT_CTRL, carlog, make_can_msg from openpilot.selfdrive.car.fw_versions import ObdCallback -from openpilot.selfdrive.car.car_helpers import get_car, get_one_can +from openpilot.selfdrive.car.car_helpers import get_car from openpilot.selfdrive.car.interfaces import CarInterfaceBase from openpilot.selfdrive.controls.lib.events import Events @@ -38,6 +39,13 @@ def obd_callback(params: Params) -> ObdCallback: return set_obd_multiplexing +def get_one_can(logcan): + while True: + can = messaging.recv_one_retry(logcan) + if len(can.can) > 0: + return can + + def can_recv_callbacks(logcan: messaging.SubSocket, sendcan: messaging.PubSocket): def can_recv(wait_for_one: bool = False) -> list[list[int, bytes, int]]: # call rx/tx? can_packets = messaging.drain_sock(logcan, wait_for_one=wait_for_one) @@ -46,7 +54,7 @@ def can_recv_callbacks(logcan: messaging.SubSocket, sendcan: messaging.PubSocket def can_send(msg: list[int, bytes, int]) -> None: sendcan.send(can_list_to_can_capnp([msg], msgtype='sendcan')) - return can_recv, can_send + return SimpleNamespace(drain=can_recv, get_one_can=lambda: get_one_can(logcan)), SimpleNamespace(send=can_send) class Car: