(partial) fix process replay fingerprintig for new API

pull/33208/head
Shane Smiskol 9 months ago
parent 594d0b7e16
commit abbb97a764
  1. 2
      selfdrive/car/car_helpers.py
  2. 1
      selfdrive/car/card.py
  3. 17
      selfdrive/test/process_replay/process_replay.py

@ -89,7 +89,7 @@ def fingerprint(can_recv: CanRecvCallable, can_send: CanSendCallable, set_obd_mu
start_time = time.monotonic()
if not skip_fw_query:
if cached_params is not None and len(cached_params.carFw) > 0 and \
if cached_params is not None and cached_params.carName != "mock" and len(cached_params.carFw) > 0 and \
cached_params.carVin is not VIN_UNKNOWN and not disable_fw_cache:
carlog.warning("Using cached CarParams")
vin_rx_addr, vin_rx_bus, vin = -1, -1, cached_params.carVin

@ -60,6 +60,7 @@ def can_comm_callbacks(logcan: messaging.SubSocket, sendcan: messaging.PubSocket
def convert_to_capnp(CP: CarParams) -> car.CarParams:
# TODO: better name or support CarState, CarControl, etc.
CP_dict = dataclasses.asdict(CP)
del CP_dict['lateralTuning']
CP_capnp = car.CarParams.new_message(**CP_dict)

@ -22,8 +22,9 @@ from openpilot.common.prefix import OpenpilotPrefix
from openpilot.common.timeout import Timeout
from openpilot.common.realtime import DT_CTRL
from panda.python import ALTERNATIVE_EXPERIENCE
from openpilot.selfdrive.car.card import can_comm_callbacks
from openpilot.selfdrive.car.card import can_comm_callbacks, convert_to_capnp
from openpilot.selfdrive.car.car_helpers import get_car, interfaces
from openpilot.selfdrive.car.data_structures import CarParams
from openpilot.system.manager.process_config import managed_processes
from openpilot.selfdrive.test.process_replay.vision_meta import meta_from_camera_state, available_streams
from openpilot.selfdrive.test.process_replay.migration import migrate_all
@ -349,8 +350,8 @@ def get_car_params_callback(rc, pm, msgs, fingerprint):
sendcan = DummySocket()
canmsgs = [msg for msg in msgs if msg.which() == "can"]
cached_params = params.get("CarParamsCache")
has_cached_cp = cached_params is not None
cached_params_raw = params.get("CarParamsCache")
has_cached_cp = cached_params_raw is not None
assert len(canmsgs) != 0, "CAN messages are required for fingerprinting"
assert os.environ.get("SKIP_FW_QUERY", False) or has_cached_cp, \
"CarParamsCache is required for fingerprinting. Make sure to keep carParams msgs in the logs."
@ -358,13 +359,19 @@ def get_car_params_callback(rc, pm, msgs, fingerprint):
for m in canmsgs[:300]:
can.send(m.as_builder().to_bytes())
can_callbacks = can_comm_callbacks(can, sendcan)
# TODO: clean this up a bit
cached_params = None
if has_cached_cp:
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)
CP = get_car(*can_callbacks, lambda obd: None, Params().get_bool("ExperimentalLongitudinalEnabled"), cached_params=cached_params).CP
if not params.get_bool("DisengageOnAccelerator"):
CP.alternativeExperience |= ALTERNATIVE_EXPERIENCE.DISABLE_DISENGAGE_ON_GAS
params.put("CarParams", CP.to_bytes())
return CP
params.put("CarParams", convert_to_capnp(CP).to_bytes())
# return CP # TODO: this isn't used?
def controlsd_rcv_callback(msg, cfg, frame):

Loading…
Cancel
Save