diff --git a/selfdrive/car/car_helpers.py b/selfdrive/car/car_helpers.py index c7737bcea5..c2b4237779 100644 --- a/selfdrive/car/car_helpers.py +++ b/selfdrive/car/car_helpers.py @@ -81,7 +81,7 @@ def can_fingerprint(can_recv: CanRecvCallable) -> tuple[str | None, dict[int, di # **** for use live only **** -def fingerprint(can_recv: CanRecvCallable, can_send: CanSendCallable, set_obd_multiplexing: ObdCallback, num_pandas: int, cached_params_raw: bytes | None): +def fingerprint(can_recv: CanRecvCallable, can_send: CanSendCallable, set_obd_multiplexing: ObdCallback, num_pandas: int, cached_params: CarParams | None): fixed_fingerprint = os.environ.get('FINGERPRINT', "") skip_fw_query = os.environ.get('SKIP_FW_QUERY', False) disable_fw_cache = os.environ.get('DISABLE_FW_CACHE', False) @@ -89,12 +89,6 @@ def fingerprint(can_recv: CanRecvCallable, can_send: CanSendCallable, set_obd_mu start_time = time.monotonic() if not skip_fw_query: - cached_params = None - if cached_params_raw is not None: - with car.CarParams.from_bytes(cached_params_raw) as cached_params: - if cached_params.carName == "mock": - cached_params = None - if cached_params is not None and len(cached_params.carFw) > 0 and \ cached_params.carVin is not VIN_UNKNOWN and not disable_fw_cache: carlog.warning("Using cached CarParams") @@ -159,7 +153,7 @@ def get_car_interface(CP): def get_car(can_recv: CanRecvCallable, can_send: CanSendCallable, set_obd_multiplexing: ObdCallback, experimental_long_allowed: bool, - num_pandas: int = 1, cached_params: bytes | None = None): + num_pandas: int = 1, cached_params: CarParams | None = None): candidate, fingerprints, vin, car_fw, source, exact_match = fingerprint(can_recv, can_send, set_obd_multiplexing, num_pandas, cached_params) if candidate is None: diff --git a/selfdrive/car/card.py b/selfdrive/car/card.py index 93d8d553e1..25ca105427 100755 --- a/selfdrive/car/card.py +++ b/selfdrive/car/card.py @@ -88,7 +88,14 @@ class Car: experimental_long_allowed = self.params.get_bool("ExperimentalLongitudinalEnabled") num_pandas = len(messaging.recv_one_retry(self.sm.sock['pandaStates']).pandaStates) - cached_params = self.params.get("CarParamsCache") + + cached_params = None + cached_params_raw = self.params.get("CarParamsCache") + if cached_params_raw is not None: + with car.CarParams.from_bytes(cached_params_raw) as _cached_params: + # TODO: even more generic? + cached_params = CarParams(carName=_cached_params.carName, carFw=_cached_params.carFw, carVin=_cached_params.carVin) + self.CI = get_car(*self.can_callbacks, obd_callback(self.params), experimental_long_allowed, num_pandas, cached_params) self.CP = self.CI.CP