remove some more cereal from toyota + convert CarState to capnp

pull/33208/head
Shane Smiskol 9 months ago
parent e5efda90df
commit 07bc45c81c
  1. 30
      selfdrive/car/card.py
  2. 8
      selfdrive/car/interfaces.py
  3. 3
      selfdrive/car/toyota/carstate.py
  4. 2
      selfdrive/car/toyota/interface.py

@ -1,4 +1,5 @@
#!/usr/bin/env python3
import capnp
import dataclasses
import os
import time
@ -15,7 +16,7 @@ from openpilot.common.swaglog import cloudlog, ForwardingHandler
from openpilot.selfdrive.pandad import can_capnp_to_list, can_list_to_can_capnp
from openpilot.selfdrive.car import DT_CTRL, carlog
from openpilot.selfdrive.car.structs import CarParams
from openpilot.selfdrive.car.structs import CarParams, CarState
from openpilot.selfdrive.car.can_definitions import CanData, CanRecvCallable, CanSendCallable
from openpilot.selfdrive.car.fw_versions import ObdCallback
from openpilot.selfdrive.car.car_helpers import get_car
@ -59,19 +60,22 @@ def can_comm_callbacks(logcan: messaging.SubSocket, sendcan: messaging.PubSocket
return can_recv, can_send
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)
def convert_to_capnp(struct: CarParams | CarState) -> capnp.lib.capnp._DynamicStructBuilder:
struct_dict = dataclasses.asdict(struct)
# this is the only union, special handling
which = CP.lateralTuning.which()
CP_capnp.lateralTuning.init(which)
lateralTuning_dict = dataclasses.asdict(getattr(CP.lateralTuning, which))
setattr(CP_capnp.lateralTuning, which, lateralTuning_dict)
if isinstance(struct, CarParams):
del struct_dict['lateralTuning']
struct_capnp = car.CarParams.new_message(**struct_dict)
return CP_capnp
# this is the only union, special handling
which = struct.lateralTuning.which()
struct_capnp.lateralTuning.init(which)
lateralTuning_dict = dataclasses.asdict(getattr(struct.lateralTuning, which))
setattr(struct_capnp.lateralTuning, which, lateralTuning_dict)
else:
struct_capnp = car.CarState.new_message(**struct_dict)
return struct_capnp
class Car:
@ -161,7 +165,7 @@ class Car:
# Update carState from CAN
can_strs = messaging.drain_sock_raw(self.can_sock, wait_for_one=True)
CS = self.CI.update(self.CC_prev, can_capnp_to_list(can_strs))
CS = convert_to_capnp(self.CI.update(self.CC_prev, can_capnp_to_list(can_strs)))
self.sm.update(0)

@ -1,3 +1,4 @@
import copy
import json
import os
import numpy as np
@ -124,7 +125,8 @@ class CarInterfaceBase(ABC):
return cls.get_params(candidate, gen_empty_fingerprint(), list(), False, False)
@classmethod
def get_params(cls, candidate: str, fingerprint: dict[int, dict[int, int]], car_fw: list[structs.CarParams.CarFw], experimental_long: bool, docs: bool) -> structs.CarParams:
def get_params(cls, candidate: str, fingerprint: dict[int, dict[int, int]], car_fw: list[structs.CarParams.CarFw],
experimental_long: bool, docs: bool) -> structs.CarParams:
ret = CarInterfaceBase.get_std_params(candidate)
platform = PLATFORMS[candidate]
@ -257,7 +259,7 @@ class CarInterfaceBase(ABC):
# copy back for next iteration
if self.CS is not None:
self.CS.out = ret.as_reader()
self.CS.out = copy.deepcopy(ret)
return ret
@ -362,7 +364,7 @@ class CarStateBase(ABC):
def __init__(self, CP: structs.CarParams):
self.CP = CP
self.car_fingerprint = CP.carFingerprint
self.out = car.CarState.new_message()
self.out = structs.CarState()
self.cruise_buttons = 0
self.left_blinker_cnt = 0

@ -1,6 +1,5 @@
import copy
from cereal import car
from opendbc.can.can_define import CANDefine
from opendbc.can.parser import CANParser
from openpilot.selfdrive.car import DT_CTRL
@ -51,7 +50,7 @@ class CarState(CarStateBase):
self.lkas_hud = {}
def update(self, cp, cp_cam) -> structs.CarState:
ret = car.CarState.new_message()
ret = structs.CarState()
ret.doorOpen = any([cp.vl["BODY_CONTROL_STATE"]["DOOR_OPEN_FL"], cp.vl["BODY_CONTROL_STATE"]["DOOR_OPEN_FR"],
cp.vl["BODY_CONTROL_STATE"]["DOOR_OPEN_RL"], cp.vl["BODY_CONTROL_STATE"]["DOOR_OPEN_RR"]])

@ -8,7 +8,7 @@ from openpilot.selfdrive.car import structs
from openpilot.selfdrive.car.disable_ecu import disable_ecu
from openpilot.selfdrive.car.interfaces import CarInterfaceBase
ButtonType = car.CarState.ButtonEvent.Type
ButtonType = structs.CarState.ButtonEvent.Type
EventName = car.CarEvent.EventName
SteerControlType = structs.CarParams.SteerControlType

Loading…
Cancel
Save