VW: use flags for PQ (#31659)

pq use flags
pull/31663/head
Justin Newberry 2 years ago committed by GitHub
parent 2d2ba37b46
commit e576da1457
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 4
      selfdrive/car/volkswagen/carcontroller.py
  2. 8
      selfdrive/car/volkswagen/carstate.py
  3. 8
      selfdrive/car/volkswagen/interface.py
  4. 10
      selfdrive/car/volkswagen/values.py

@ -6,7 +6,7 @@ from openpilot.common.realtime import DT_CTRL
from openpilot.selfdrive.car import apply_driver_steer_torque_limits from openpilot.selfdrive.car import apply_driver_steer_torque_limits
from openpilot.selfdrive.car.interfaces import CarControllerBase from openpilot.selfdrive.car.interfaces import CarControllerBase
from openpilot.selfdrive.car.volkswagen import mqbcan, pqcan from openpilot.selfdrive.car.volkswagen import mqbcan, pqcan
from openpilot.selfdrive.car.volkswagen.values import CANBUS, PQ_CARS, CarControllerParams, VolkswagenFlags from openpilot.selfdrive.car.volkswagen.values import CANBUS, CarControllerParams, VolkswagenFlags
VisualAlert = car.CarControl.HUDControl.VisualAlert VisualAlert = car.CarControl.HUDControl.VisualAlert
LongCtrlState = car.CarControl.Actuators.LongControlState LongCtrlState = car.CarControl.Actuators.LongControlState
@ -16,7 +16,7 @@ class CarController(CarControllerBase):
def __init__(self, dbc_name, CP, VM): def __init__(self, dbc_name, CP, VM):
self.CP = CP self.CP = CP
self.CCP = CarControllerParams(CP) self.CCP = CarControllerParams(CP)
self.CCS = pqcan if CP.carFingerprint in PQ_CARS else mqbcan self.CCS = pqcan if CP.flags & VolkswagenFlags.PQ else mqbcan
self.packer_pt = CANPacker(dbc_name) self.packer_pt = CANPacker(dbc_name)
self.apply_steer_last = 0 self.apply_steer_last = 0

@ -3,7 +3,7 @@ from cereal import car
from openpilot.common.conversions import Conversions as CV from openpilot.common.conversions import Conversions as CV
from openpilot.selfdrive.car.interfaces import CarStateBase from openpilot.selfdrive.car.interfaces import CarStateBase
from opendbc.can.parser import CANParser from opendbc.can.parser import CANParser
from openpilot.selfdrive.car.volkswagen.values import DBC, CANBUS, PQ_CARS, NetworkLocation, TransmissionType, GearShifter, \ from openpilot.selfdrive.car.volkswagen.values import DBC, CANBUS, NetworkLocation, TransmissionType, GearShifter, \
CarControllerParams, VolkswagenFlags CarControllerParams, VolkswagenFlags
@ -31,7 +31,7 @@ class CarState(CarStateBase):
return button_events return button_events
def update(self, pt_cp, cam_cp, ext_cp, trans_type): def update(self, pt_cp, cam_cp, ext_cp, trans_type):
if self.CP.carFingerprint in PQ_CARS: if self.CP.flags & VolkswagenFlags.PQ:
return self.update_pq(pt_cp, cam_cp, ext_cp, trans_type) return self.update_pq(pt_cp, cam_cp, ext_cp, trans_type)
ret = car.CarState.new_message() ret = car.CarState.new_message()
@ -257,7 +257,7 @@ class CarState(CarStateBase):
@staticmethod @staticmethod
def get_can_parser(CP): def get_can_parser(CP):
if CP.carFingerprint in PQ_CARS: if CP.flags & VolkswagenFlags.PQ:
return CarState.get_can_parser_pq(CP) return CarState.get_can_parser_pq(CP)
messages = [ messages = [
@ -294,7 +294,7 @@ class CarState(CarStateBase):
@staticmethod @staticmethod
def get_cam_can_parser(CP): def get_cam_can_parser(CP):
if CP.carFingerprint in PQ_CARS: if CP.flags & VolkswagenFlags.PQ:
return CarState.get_cam_can_parser_pq(CP) return CarState.get_cam_can_parser_pq(CP)
messages = [] messages = []

@ -2,7 +2,7 @@ from cereal import car
from panda import Panda from panda import Panda
from openpilot.selfdrive.car import get_safety_config from openpilot.selfdrive.car import get_safety_config
from openpilot.selfdrive.car.interfaces import CarInterfaceBase from openpilot.selfdrive.car.interfaces import CarInterfaceBase
from openpilot.selfdrive.car.volkswagen.values import PQ_CARS, CANBUS, NetworkLocation, TransmissionType, GearShifter, VolkswagenFlags from openpilot.selfdrive.car.volkswagen.values import CAR, CANBUS, NetworkLocation, TransmissionType, GearShifter, VolkswagenFlags
ButtonType = car.CarState.ButtonEvent.Type ButtonType = car.CarState.ButtonEvent.Type
EventName = car.CarEvent.EventName EventName = car.CarEvent.EventName
@ -22,11 +22,11 @@ class CarInterface(CarInterfaceBase):
self.eps_timer_soft_disable_alert = False self.eps_timer_soft_disable_alert = False
@staticmethod @staticmethod
def _get_params(ret, candidate, fingerprint, car_fw, experimental_long, docs): def _get_params(ret, candidate: CAR, fingerprint, car_fw, experimental_long, docs):
ret.carName = "volkswagen" ret.carName = "volkswagen"
ret.radarUnavailable = True ret.radarUnavailable = True
if candidate in PQ_CARS: if ret.flags & VolkswagenFlags.PQ:
# Set global PQ35/PQ46/NMS parameters # Set global PQ35/PQ46/NMS parameters
ret.safetyConfigs = [get_safety_config(car.CarParams.SafetyModel.volkswagenPq)] ret.safetyConfigs = [get_safety_config(car.CarParams.SafetyModel.volkswagenPq)]
ret.enableBsm = 0x3BA in fingerprint[0] # SWA_1 ret.enableBsm = 0x3BA in fingerprint[0] # SWA_1
@ -72,7 +72,7 @@ class CarInterface(CarInterfaceBase):
# Global lateral tuning defaults, can be overridden per-vehicle # Global lateral tuning defaults, can be overridden per-vehicle
ret.steerLimitTimer = 0.4 ret.steerLimitTimer = 0.4
if candidate in PQ_CARS: if ret.flags & VolkswagenFlags.PQ:
ret.steerActuatorDelay = 0.2 ret.steerActuatorDelay = 0.2
CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning) CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning)
else: else:

@ -40,7 +40,7 @@ class CarControllerParams:
def __init__(self, CP): def __init__(self, CP):
can_define = CANDefine(DBC[CP.carFingerprint]["pt"]) can_define = CANDefine(DBC[CP.carFingerprint]["pt"])
if CP.carFingerprint in PQ_CARS: if CP.flags & VolkswagenFlags.PQ:
self.LDW_STEP = 5 # LDW_1 message frequency 20Hz self.LDW_STEP = 5 # LDW_1 message frequency 20Hz
self.ACC_HUD_STEP = 4 # ACC_GRA_Anzeige frequency 25Hz self.ACC_HUD_STEP = 4 # ACC_GRA_Anzeige frequency 25Hz
self.STEER_DRIVER_ALLOWANCE = 80 # Driver intervention threshold 0.8 Nm self.STEER_DRIVER_ALLOWANCE = 80 # Driver intervention threshold 0.8 Nm
@ -113,6 +113,9 @@ class VolkswagenFlags(IntFlag):
# Detected flags # Detected flags
STOCK_HCA_PRESENT = 1 STOCK_HCA_PRESENT = 1
# Static Flags
PQ = 2
@dataclass @dataclass
class VolkswagenMQBPlatformConfig(PlatformConfig): class VolkswagenMQBPlatformConfig(PlatformConfig):
@ -123,6 +126,9 @@ class VolkswagenMQBPlatformConfig(PlatformConfig):
class VolkswagenPQPlatformConfig(PlatformConfig): class VolkswagenPQPlatformConfig(PlatformConfig):
dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('vw_golf_mk4', None)) dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('vw_golf_mk4', None))
def init(self):
self.flags |= VolkswagenFlags.PQ
@dataclass(frozen=True, kw_only=True) @dataclass(frozen=True, kw_only=True)
class VolkswagenCarSpecs(CarSpecs): class VolkswagenCarSpecs(CarSpecs):
@ -360,8 +366,6 @@ class CAR(Platforms):
) )
PQ_CARS = {CAR.PASSAT_NMS, CAR.SHARAN_MK2}
# All supported cars should return FW from the engine, srs, eps, and fwdRadar. Cars # All supported cars should return FW from the engine, srs, eps, and fwdRadar. Cars
# with a manual trans won't return transmission firmware, but all other cars will. # with a manual trans won't return transmission firmware, but all other cars will.
# #

Loading…
Cancel
Save