mirror of
https://jihulab.com/mr-one/openpilot.git
synced 2026-10-26 12:33:43 +08:00
Revert MQB EVO port (car port, safety, panda firmware, radar fixes)
This commit is contained in:
@@ -1,8 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
export ATHENA_HOST='ws://athena.mr-one.cn'
|
||||
export API_HOST='http://res.mr-one.cn'
|
||||
# TEMPORARY: this device hangs in the VIN/FW query, skip it
|
||||
export SKIP_FW_QUERY=1
|
||||
# Skip onboarding on startup
|
||||
echo -n "2" > /data/params/d/HasAcceptedTerms
|
||||
echo -n "1.0" > /data/params/d/HasAcceptedTermsSP
|
||||
|
||||
@@ -196,10 +196,6 @@ class CarInterfaceBase(ABC, CarInterfaceBaseSP):
|
||||
carlog.debug(f"Car {stock_cp.carFingerprint} does not have a _get_longitudinal_tuning_sp method, using defaults")
|
||||
return ret
|
||||
|
||||
@staticmethod
|
||||
def pre_init(CP: structs.CarParams, CP_SP: structs.CarParamsSP, can_recv: CanRecvCallable, can_send: CanSendCallable):
|
||||
"""Called before the car is set up, can adjust CarParams (e.g. dashcamOnly)"""
|
||||
|
||||
@staticmethod
|
||||
def init(CP: structs.CarParams, CP_SP: structs.CarParamsSP, can_recv: CanRecvCallable, can_send: CanSendCallable):
|
||||
"""Used to disable longitudinal ECUs as needed"""
|
||||
|
||||
@@ -53,9 +53,6 @@ non_tested_cars = [
|
||||
GM.CHEVROLET_TRAILBLAZER_NON_ACC_2ND_GEN,
|
||||
GM.CHEVROLET_MALIBU_NON_ACC_9TH_GEN,
|
||||
GM.CADILLAC_XT5_NON_ACC_1ST_GEN,
|
||||
VOLKSWAGEN.AUDI_A3_MK4,
|
||||
VOLKSWAGEN.VOLKSWAGEN_GOLF_MK8,
|
||||
VOLKSWAGEN.SEAT_LEON_MK4,
|
||||
]
|
||||
|
||||
|
||||
|
||||
@@ -117,8 +117,3 @@ legend = ["LAT_ACCEL_FACTOR", "MAX_LAT_ACCEL_MEASURED", "FRICTION"]
|
||||
# port extensions
|
||||
"HONDA_CLARITY" = [0.96, 0.4018518740819229, 0.19]
|
||||
"CHEVROLET_MALIBU_NON_ACC_9TH_GEN" = [1.85, 1.85, 0.075]
|
||||
|
||||
"VOLKSWAGEN_GOLF_MK8" = [nan, 2.5, nan]
|
||||
"SEAT_LEON_MK4" = [nan, 2.5, nan]
|
||||
|
||||
"AUDI_A3_MK4" = [nan, 2.5, nan]
|
||||
|
||||
@@ -44,7 +44,7 @@ class CarController(CarControllerBase):
|
||||
self.aeb_available = not CP.flags & VolkswagenFlags.PQ
|
||||
self.dp_avoid_eps_lockout = bool(self.CP_SP.flags & VolkswagenFlagsSP.AVOID_EPS_LOCKOUT)
|
||||
|
||||
if CP.flags & (VolkswagenFlags.MEB | VolkswagenFlags.MQB_EVO):
|
||||
if CP.flags & VolkswagenFlags.MEB:
|
||||
self.meb_long_state = mebcan.MebLongStateMachine(self.CP, self.CCP)
|
||||
|
||||
if CP.flags & VolkswagenFlags.PQ:
|
||||
@@ -72,7 +72,7 @@ class CarController(CarControllerBase):
|
||||
|
||||
if self.frame % self.CCP.STEER_STEP == 0:
|
||||
apply_torque = 0
|
||||
if self.CP.flags & (VolkswagenFlags.MEB | VolkswagenFlags.MQB_EVO):
|
||||
if self.CP.flags & VolkswagenFlags.MEB:
|
||||
# Logic to avoid HCA refused state:
|
||||
# * steering power as counter and near zero before OP lane assist deactivation
|
||||
# MEB rack can be used continuously without time limits
|
||||
@@ -135,7 +135,7 @@ class CarController(CarControllerBase):
|
||||
can_sends.append(self.CCS.create_eps_update(self.packer_pt, self.CAN.cam, CS.eps_stock_values, ea_simulated_torque))
|
||||
|
||||
# Emergency Assist intervention
|
||||
if self.CP.flags & (VolkswagenFlags.MEB | VolkswagenFlags.MQB_EVO) and self.CP.flags & VolkswagenFlags.STOCK_KLR_PRESENT:
|
||||
if self.CP.flags & VolkswagenFlags.MEB and self.CP.flags & VolkswagenFlags.STOCK_KLR_PRESENT:
|
||||
# send capacitive steering wheel hands-on message to keep ACC resume active and control Emergency Assist
|
||||
# MEB Emergency Assist brake jerks after 30s of continued hands-off time.
|
||||
# We send the stock wheeltouch message to start the stock DM timer when openpilot latches the critical driver monitoring alert
|
||||
@@ -148,7 +148,7 @@ class CarController(CarControllerBase):
|
||||
|
||||
if self.CP.openpilotLongitudinalControl:
|
||||
if self.frame % self.CCP.ACC_CONTROL_STEP == 0:
|
||||
if self.CP.flags & (VolkswagenFlags.MEB | VolkswagenFlags.MQB_EVO):
|
||||
if self.CP.flags & VolkswagenFlags.MEB:
|
||||
accel = float(np.clip(actuators.accel, self.CCP.ACCEL_MIN, self.CCP.ACCEL_MAX))
|
||||
accel, acc_status, acc_hold_type, braking_to_stop, leaving_standstill = self.meb_long_state.update(CS, CC, accel)
|
||||
can_sends.extend(mebcan.create_acc_accel_control(self.packer_pt, self.CAN.pt, self.CCP, CS.acc_type, CC.enabled,
|
||||
@@ -177,18 +177,14 @@ class CarController(CarControllerBase):
|
||||
hud_alert = 0
|
||||
if hud_control.visualAlert in (VisualAlert.steerRequired, VisualAlert.ldw):
|
||||
hud_alert = self.CCP.LDW_MESSAGES["laneAssistTakeOver"]
|
||||
if self.CP.flags & VolkswagenFlags.MQB_EVO_GEN2:
|
||||
can_sends.append(mebcan.create_lka_hud_control(self.packer_pt, self.CAN.pt, self.CP, CS.ldw_stock_values,
|
||||
CC.latActive, CS.out.steeringPressed, hud_alert, hud_control))
|
||||
else:
|
||||
can_sends.append(self.CCS.create_lka_hud_control(self.packer_pt, self.CAN.pt, CS.ldw_stock_values, CC.latActive,
|
||||
CS.out.steeringPressed, hud_alert, hud_control))
|
||||
can_sends.append(self.CCS.create_lka_hud_control(self.packer_pt, self.CAN.pt, CS.ldw_stock_values, CC.latActive,
|
||||
CS.out.steeringPressed, hud_alert, hud_control))
|
||||
|
||||
if hud_control.leadDistanceBars != self.lead_distance_bars_last:
|
||||
self.distance_bar_frame = self.frame
|
||||
|
||||
if self.frame % self.CCP.ACC_HUD_STEP == 0 and self.CP.openpilotLongitudinalControl:
|
||||
if self.CP.flags & (VolkswagenFlags.MEB | VolkswagenFlags.MQB_EVO):
|
||||
if self.CP.flags & VolkswagenFlags.MEB:
|
||||
fcw_alert = hud_control.visualAlert == VisualAlert.fcw
|
||||
show_distance_bars = self.frame - self.distance_bar_frame < 400
|
||||
lead_distance = 0
|
||||
|
||||
@@ -55,7 +55,7 @@ class CarState(CarStateBase):
|
||||
return self.update_pq(pt_cp, cam_cp, ext_cp)
|
||||
elif self.CP.flags & VolkswagenFlags.MLB:
|
||||
return self.update_mlb(pt_cp, cam_cp, ext_cp, alt_cp)
|
||||
elif self.CP.flags & (VolkswagenFlags.MEB | VolkswagenFlags.MQB_EVO):
|
||||
elif self.CP.flags & VolkswagenFlags.MEB:
|
||||
return self.update_meb(pt_cp, cam_cp, ext_cp)
|
||||
else:
|
||||
return self.update_mqb(pt_cp, cam_cp, ext_cp)
|
||||
@@ -153,8 +153,6 @@ class CarState(CarStateBase):
|
||||
# vEgo obtained from Bremse_1 vehicle speed rather than Bremse_3 wheel speeds because Bremse_3 isn't present on NSF
|
||||
ret.vEgoRaw = pt_cp.vl["Bremse_1"]["BR1_Rad_kmh"] * CV.KPH_TO_MS
|
||||
ret.vEgo, ret.aEgo = self.update_speed_kf(ret.vEgoRaw)
|
||||
if self.CP.flags & VolkswagenFlags.KOMBI_PRESENT:
|
||||
ret.vEgoCluster = pt_cp.vl["Kombi_01"]["KBI_angez_Geschw"] * CV.KPH_TO_MS
|
||||
ret.standstill = ret.vEgoRaw == 0
|
||||
|
||||
# Update EPS position and state info. For signed values, VW sends the sign in a separate signal.
|
||||
@@ -284,10 +282,7 @@ class CarState(CarStateBase):
|
||||
ret.espActive = bool(pt_cp.vl["ESP_21"]["ESP_Eingriff"])
|
||||
|
||||
self.acc_type = ext_cp.vl["ACC_18"]["ACC_Typ"]
|
||||
if self.CP.flags & VolkswagenFlags.MQB_EVO:
|
||||
self.esp_hold_confirmation = bool(pt_cp.vl["ESP_21"]["ESP_Haltebestaetigung"])
|
||||
else:
|
||||
self.esp_hold_confirmation = bool(pt_cp.vl["ESC_50"]["Standstill"])
|
||||
self.esp_hold_confirmation = bool(pt_cp.vl["ESC_50"]["Standstill"])
|
||||
self.travel_assist_available = bool(cam_cp.vl["TA_01"]["Travel_Assist_Available"])
|
||||
ret.stockFcw = bool(ext_cp.vl["AWV_03"]["FCW_Active"])
|
||||
ret.stockAeb = bool(ext_cp.vl["AWV_03"]["AEB_Active"])
|
||||
@@ -298,11 +293,7 @@ class CarState(CarStateBase):
|
||||
|
||||
tsk_faulted = pt_cp.vl["Motor_51"]["TSK_Status"] in (6, 7)
|
||||
engine_off = pt_cp.vl["Motor_54"]["Engine_On"] == 0
|
||||
# Long_Control_Inhibit is currently identified only in the MEB DBC, not in the MQB EVO one.
|
||||
# bool() is required: CP.flags is an int, so "& IntFlag" returns an IntFlag instance and the
|
||||
# False case (MQB EVO) would leak that object into the capnp bool field carNotReady.
|
||||
long_control_inhibit = (bool(self.CP.flags & VolkswagenFlags.MEB)
|
||||
and pt_cp.vl.get("VMM_02", {}).get("Long_Control_Inhibit", 0) == 2)
|
||||
long_control_inhibit = pt_cp.vl["VMM_02"]["Long_Control_Inhibit"] == 2
|
||||
ret.accFaulted = (self.update_acc_fault(tsk_faulted, engine_off, long_control_inhibit) or
|
||||
ext_cp.vl["AWV_03"]["AWV_Unavailable"] == 1) # AEB unavailable (i.e. radar covered)
|
||||
|
||||
@@ -315,7 +306,7 @@ class CarState(CarStateBase):
|
||||
pt_cp.vl["SMLS_01"]["BH_Blinker_re"])
|
||||
|
||||
if self.CP.enableBsm:
|
||||
bsm_cp = pt_cp if self.CP.flags & (VolkswagenFlags.MEB_GEN2 | VolkswagenFlags.MQB_EVO) else ext_cp
|
||||
bsm_cp = pt_cp if self.CP.flags & VolkswagenFlags.MEB_GEN2 else ext_cp
|
||||
ret.leftBlindspot = (bool(bsm_cp.vl["MEB_Side_Assist_01"]["Blind_Spot_Info_Driver"]) or
|
||||
bool(bsm_cp.vl["MEB_Side_Assist_01"]["Blind_Spot_Warn_Driver"]))
|
||||
ret.rightBlindspot = (bool(bsm_cp.vl["MEB_Side_Assist_01"]["Blind_Spot_Info_Passenger"]) or
|
||||
@@ -423,7 +414,7 @@ class CarState(CarStateBase):
|
||||
def get_can_parsers(CP, CP_SP):
|
||||
if CP.flags & VolkswagenFlags.PQ:
|
||||
return CarState.get_can_parsers_pq(CP)
|
||||
elif CP.flags & (VolkswagenFlags.MEB | VolkswagenFlags.MQB_EVO):
|
||||
elif CP.flags & VolkswagenFlags.MEB:
|
||||
return CarState.get_can_parsers_meb(CP)
|
||||
|
||||
# manually configure some optional and variable-rate/edge-triggered messages
|
||||
|
||||
@@ -8,62 +8,6 @@ Ecu = CarParams.Ecu
|
||||
|
||||
|
||||
FW_VERSIONS = {
|
||||
CAR.AUDI_A3_MK4: {
|
||||
(Ecu.engine, 0x7e0, None): [],
|
||||
(Ecu.transmission, 0x7e1, None): [],
|
||||
(Ecu.srs, 0x715, None): [],
|
||||
(Ecu.eps, 0x712, None): [],
|
||||
(Ecu.fwdRadar, 0x757, None): [
|
||||
b'\xf1\x871N3907567E \xf1\x890550',
|
||||
],
|
||||
},
|
||||
CAR.VOLKSWAGEN_GOLF_MK8: {
|
||||
(Ecu.engine, 0x7e0, None): [],
|
||||
(Ecu.transmission, 0x7e1, None): [],
|
||||
(Ecu.srs, 0x715, None): [],
|
||||
(Ecu.eps, 0x712, None): [],
|
||||
(Ecu.cornerRadar, 0x74e, None): [
|
||||
b'\xf1\x872Q0907686J \xf1\x890288',
|
||||
],
|
||||
(Ecu.adas, 0x769, None): [
|
||||
b'\xf1\x875WA980556C \xf1\x890314',
|
||||
b'\xf1\x875WA980556D \xf1\x890364',
|
||||
],
|
||||
(Ecu.parkingAdas, 0x70a, None): [],
|
||||
(Ecu.fwdRadar, 0x757, None): [
|
||||
b'\xf1\x875WA907572B \xf1\x890395',
|
||||
b'\xf1\x875WA907572C \xf1\x890461',
|
||||
],
|
||||
(Ecu.fwdCamera, 0x74f, None): [
|
||||
b'\xf1\x875WA980653C \xf1\x893301',
|
||||
b'\xf1\x875WA980653D \xf1\x893405',
|
||||
],
|
||||
},
|
||||
CAR.SEAT_LEON_MK4: {
|
||||
(Ecu.engine, 0x7e0, None): [],
|
||||
(Ecu.transmission, 0x7e1, None): [
|
||||
b'\xf1\x870CW906556JA\xf1\x890780',
|
||||
],
|
||||
(Ecu.srs, 0x715, None): [
|
||||
b'\xf1\x871EA959655CK\xf1\x890166',
|
||||
],
|
||||
(Ecu.eps, 0x712, None): [],
|
||||
(Ecu.cornerRadar, 0x74e, None): [
|
||||
b'\xf1\x872Q0907686E \xf1\x890284',
|
||||
],
|
||||
(Ecu.adas, 0x769, None): [
|
||||
b'\xf1\x875WA980556D \xf1\x890344',
|
||||
],
|
||||
(Ecu.parkingAdas, 0x70a, None): [
|
||||
b'\xf1\x875WA919298A \xf1\x890230',
|
||||
],
|
||||
(Ecu.fwdRadar, 0x757, None): [
|
||||
b'\xf1\x875WA907572B \xf1\x890395',
|
||||
],
|
||||
(Ecu.fwdCamera, 0x74f, None): [
|
||||
b'\xf1\x875WA980653A \xf1\x893129',
|
||||
],
|
||||
},
|
||||
CAR.VOLKSWAGEN_ARTEON_MK1: {
|
||||
(Ecu.engine, 0x7e0, None): [
|
||||
b'\xf1\x8704L906026TM\xf1\x896847',
|
||||
|
||||
@@ -1,14 +1,9 @@
|
||||
import time
|
||||
|
||||
from opendbc.car import Bus, get_safety_config, structs, uds
|
||||
from opendbc.car.carlog import carlog
|
||||
from opendbc.car import Bus, get_safety_config, structs
|
||||
from opendbc.car.interfaces import CarInterfaceBase
|
||||
from opendbc.car.isotp_parallel_query import IsoTpParallelQuery
|
||||
from opendbc.car.volkswagen.carcontroller import CarController
|
||||
from opendbc.car.volkswagen.carstate import CarState
|
||||
from opendbc.car.volkswagen.radar_interface import RadarInterface
|
||||
from opendbc.car.volkswagen.values import (CanBus, CAR, DBC, NetworkLocation, RADAR_DISABLE_STATE, TransmissionType,
|
||||
VolkswagenFlags, VolkswagenSafetyFlags)
|
||||
from opendbc.car.volkswagen.values import CanBus, CAR, DBC, NetworkLocation, TransmissionType, VolkswagenFlags, VolkswagenSafetyFlags
|
||||
|
||||
class CarInterface(CarInterfaceBase):
|
||||
CarState = CarState
|
||||
@@ -47,15 +42,10 @@ class CarInterface(CarInterfaceBase):
|
||||
ret.networkLocation = NetworkLocation.gateway
|
||||
ret.dashcamOnly = is_release # Release support needs HCA timeout fix, safety validation, revised J533 harness
|
||||
|
||||
elif ret.flags & (VolkswagenFlags.MEB | VolkswagenFlags.MQB_EVO):
|
||||
elif ret.flags & VolkswagenFlags.MEB:
|
||||
# Set global MEB parameters
|
||||
if ret.flags & VolkswagenFlags.MEB:
|
||||
safety_configs = [get_safety_config(structs.CarParams.SafetyModel.volkswagenMeb)]
|
||||
elif ret.flags & VolkswagenFlags.MQB_EVO:
|
||||
safety_configs = [get_safety_config(structs.CarParams.SafetyModel.volkswagenMqbEvo)]
|
||||
|
||||
if ret.flags & (VolkswagenFlags.MEB_GEN2 | VolkswagenFlags.MQB_EVO_GEN2):
|
||||
# Gen2 uses the alt CRC lengths for QFK_01/ESC_51/Motor_51
|
||||
safety_configs = [get_safety_config(structs.CarParams.SafetyModel.volkswagenMeb)]
|
||||
if ret.flags & VolkswagenFlags.MEB_GEN2:
|
||||
safety_configs[0].safetyParam |= VolkswagenSafetyFlags.MEB_ALT_CRC.value
|
||||
|
||||
ret.transmissionType = TransmissionType.direct
|
||||
@@ -71,30 +61,19 @@ class CarInterface(CarInterfaceBase):
|
||||
|
||||
if any(msg in fingerprint[1] for msg in (0x520, 0x86, 0xFD, 0x13D)): # Airbag_02, LWI_01, ESP_21, QFK_01
|
||||
ret.networkLocation = NetworkLocation.gateway
|
||||
# The filtered radar tracks are published as Strukturen_01 (0x24F); not every car
|
||||
# emits it, so only claim radar is available when it's actually on the bus.
|
||||
ret.radarUnavailable = 0x24F not in fingerprint[0]
|
||||
else:
|
||||
ret.networkLocation = NetworkLocation.fwdCamera
|
||||
ret.radarUnavailable = True
|
||||
|
||||
# The camera side of the relay can not see the radar, so openpilot disables it over UDS
|
||||
if ret.networkLocation == NetworkLocation.fwdCamera:
|
||||
ret.flags |= VolkswagenFlags.DISABLE_RADAR.value
|
||||
safety_configs[0].safetyParam |= VolkswagenSafetyFlags.DISABLE_RADAR.value
|
||||
|
||||
ret.enableBsm = 0x24C in fingerprint[0] # MEB_Side_Assist_01
|
||||
|
||||
if 0x25D in fingerprint[0]: # KLR_01
|
||||
ret.flags |= VolkswagenFlags.STOCK_KLR_PRESENT.value
|
||||
if 0x3DC in fingerprint[0]: # Gateway_73
|
||||
ret.flags |= VolkswagenFlags.ALT_GEAR.value
|
||||
if ret.flags & VolkswagenFlags.MQB_EVO and 0x30B in fingerprint[0]: # Kombi_01
|
||||
ret.flags |= VolkswagenFlags.KOMBI_PRESENT.value
|
||||
|
||||
# only allow gateway harness to escalate Emergency Assist
|
||||
if ret.flags & VolkswagenFlags.MEB:
|
||||
ret.dashcamOnly = ret.networkLocation == NetworkLocation.fwdCamera and not docs
|
||||
ret.dashcamOnly = ret.networkLocation == NetworkLocation.fwdCamera and not docs
|
||||
|
||||
else:
|
||||
# Set global MQB parameters
|
||||
@@ -124,7 +103,7 @@ class CarInterface(CarInterfaceBase):
|
||||
if ret.flags & VolkswagenFlags.PQ or ret.flags & VolkswagenFlags.MLB:
|
||||
ret.steerActuatorDelay = 0.2
|
||||
CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning)
|
||||
elif ret.flags & (VolkswagenFlags.MEB | VolkswagenFlags.MQB_EVO):
|
||||
elif ret.flags & VolkswagenFlags.MEB:
|
||||
ret.steerActuatorDelay = 0.3
|
||||
else:
|
||||
ret.steerActuatorDelay = 0.1
|
||||
@@ -136,10 +115,9 @@ class CarInterface(CarInterfaceBase):
|
||||
|
||||
# Global longitudinal tuning defaults, can be overridden per-vehicle
|
||||
|
||||
if ret.flags & (VolkswagenFlags.MEB | VolkswagenFlags.MQB_EVO):
|
||||
if ret.flags & VolkswagenFlags.MEB:
|
||||
ret.openpilotLongitudinalControl = True
|
||||
ret.longitudinalActuatorDelay = 0.3
|
||||
ret.radarDelay = 0.15
|
||||
ret.longitudinalTuning.kiBP = [0., 30.]
|
||||
ret.longitudinalTuning.kiV = [0.4, 0.]
|
||||
else:
|
||||
@@ -165,114 +143,3 @@ class CarInterface(CarInterfaceBase):
|
||||
ret.safetyConfigs = safety_configs
|
||||
|
||||
return ret
|
||||
|
||||
@staticmethod
|
||||
def pre_init(CP, CP_SP, can_recv, can_send):
|
||||
# check pre conditions for a successful radar disable
|
||||
# put the device into dashcam mode if necessary: no relay switching, no bus blocking with relay malfunction
|
||||
if CP.openpilotLongitudinalControl and (CP.flags & VolkswagenFlags.DISABLE_RADAR):
|
||||
if CP.flags & (VolkswagenFlags.MEB | VolkswagenFlags.MQB_EVO):
|
||||
if not CarInterface._is_engine_state_allowed_meb(can_recv):
|
||||
CP.dashcamOnly = True
|
||||
carlog.warning("Radar can not be disabled with engine on - dashcam only")
|
||||
|
||||
@staticmethod
|
||||
def init(CP, CP_SP, can_recv, can_send):
|
||||
# communication control can be rejected with engine on
|
||||
# uds.CONTROL_TYPE.ENABLE_RX_DISABLE_TX is lost with engine on transition for newer MEB and MQBevo cars
|
||||
# uds.CONTROL_TYPE.DISABLE_RX_DISABLE_TX is probably not lost but the radar has to be revived manually
|
||||
# -> deinit is not called in OP -> errors in dash, recovers after second ignition cycle
|
||||
# Programming session is also rejected while engine on but recovers after key off on
|
||||
if CP.openpilotLongitudinalControl and (CP.flags & VolkswagenFlags.DISABLE_RADAR):
|
||||
RADAR_DISABLE_STATE["error"] = False
|
||||
if CP.flags & (VolkswagenFlags.MEB | VolkswagenFlags.MQB_EVO):
|
||||
if CarInterface._is_engine_state_allowed_meb(can_recv): # prevent programming session request, it will not work
|
||||
carlog.warning("Trying to disable the radar")
|
||||
if not CarInterface._radar_communication_control(CP, can_recv, can_send):
|
||||
RADAR_DISABLE_STATE["error"] = True
|
||||
else:
|
||||
RADAR_DISABLE_STATE["error"] = True
|
||||
carlog.warning("The radar can not be disabled")
|
||||
|
||||
@staticmethod
|
||||
def deinit(CP, can_recv, can_send):
|
||||
# deinit is currently never executed in the current state of openpilot
|
||||
# CarD is just killed, no reaction handling on SIGINT
|
||||
if CP.openpilotLongitudinalControl and (CP.flags & VolkswagenFlags.DISABLE_RADAR):
|
||||
if CP.flags & (VolkswagenFlags.MEB | VolkswagenFlags.MQB_EVO):
|
||||
CarInterface._radar_communication_control(CP, can_recv, can_send, disable=False)
|
||||
|
||||
@staticmethod
|
||||
def _radar_communication_control(CP, can_recv, can_send, disable=True):
|
||||
# disable/enable radar tx
|
||||
bus = CanBus(CP).pt
|
||||
addr_radar, addr_diag, volkswagen_rx_offset = 0x757, 0x700, 0x6A
|
||||
retry, timeout = 3, 0.5
|
||||
|
||||
tp_req = bytes([uds.SERVICE_TYPE.TESTER_PRESENT, 0x00])
|
||||
tp_resp = bytes([uds.SERVICE_TYPE.TESTER_PRESENT + 0x40, 0x00])
|
||||
ext_diag_req = bytes([uds.SERVICE_TYPE.DIAGNOSTIC_SESSION_CONTROL, uds.SESSION_TYPE.EXTENDED_DIAGNOSTIC])
|
||||
ext_diag_resp = bytes([uds.SERVICE_TYPE.DIAGNOSTIC_SESSION_CONTROL + 0x40, uds.SESSION_TYPE.EXTENDED_DIAGNOSTIC])
|
||||
flash_req = bytes([uds.SERVICE_TYPE.DIAGNOSTIC_SESSION_CONTROL, uds.SESSION_TYPE.PROGRAMMING])
|
||||
empty_resp = b""
|
||||
|
||||
txt = "disable" if disable else "enable"
|
||||
|
||||
for i in range(retry):
|
||||
try:
|
||||
if disable:
|
||||
# Tester Present
|
||||
query = IsoTpParallelQuery(can_send, can_recv, bus, [(addr_radar, None)], [tp_req], [tp_resp],
|
||||
volkswagen_rx_offset, functional_addrs=[addr_diag])
|
||||
if not query.get_data(timeout):
|
||||
carlog.warning(f"Tester Present returned no data on attempt {i+1}")
|
||||
continue
|
||||
|
||||
# Extended Diagnostic Session
|
||||
query = IsoTpParallelQuery(can_send, can_recv, bus, [(addr_radar, None)], [ext_diag_req], [ext_diag_resp],
|
||||
volkswagen_rx_offset)
|
||||
if not query.get_data(timeout):
|
||||
carlog.warning(f"Radar extended session returned no data on attempt {i+1}")
|
||||
continue
|
||||
|
||||
# Programming Session
|
||||
query = IsoTpParallelQuery(can_send, can_recv, bus, [(addr_radar, None)], [flash_req], [empty_resp],
|
||||
volkswagen_rx_offset)
|
||||
# no waiting time, start sending our own commands as fast as possible to prevent cruise faults
|
||||
query.get_data(0)
|
||||
carlog.warning(f"Radar {txt} by programming session sent on attempt {i+1}")
|
||||
|
||||
return True
|
||||
|
||||
except Exception as e:
|
||||
carlog.error(f"Radar {txt} exception on attempt {i+1}: {repr(e)}")
|
||||
continue
|
||||
|
||||
carlog.error(f"Radar {txt} failed")
|
||||
return False
|
||||
|
||||
@staticmethod
|
||||
def _is_engine_state_allowed_meb(can_recv, timeout: float = 0.5) -> bool:
|
||||
# this is a safety measure
|
||||
# detect if the radar can be disabled in the current engine state
|
||||
# [Motor_54][Engine_On]
|
||||
end_time = time.monotonic() + timeout
|
||||
|
||||
while time.monotonic() < end_time:
|
||||
packets = can_recv(wait_for_one=True) or []
|
||||
for packet in packets:
|
||||
for msg in packet:
|
||||
if msg.address != 0x14C:
|
||||
continue
|
||||
|
||||
engine_on = bool((msg.dat[9] >> 5) & 0x01)
|
||||
|
||||
if engine_on:
|
||||
carlog.warning(f"Engine state is not allowed: Engine_On={engine_on}")
|
||||
return False
|
||||
else:
|
||||
carlog.warning(f"Engine state is allowed: Engine_On={engine_on}")
|
||||
return True
|
||||
|
||||
carlog.warning("Engine state unknown")
|
||||
return True
|
||||
@@ -1,7 +1,7 @@
|
||||
from opendbc.car import Bus, structs
|
||||
from opendbc.can import CANDefine
|
||||
from opendbc.car.common.conversions import Conversions as CV
|
||||
from opendbc.car.volkswagen.values import DBC, VolkswagenFlags
|
||||
from opendbc.car.volkswagen.values import DBC
|
||||
|
||||
LongCtrlState = structs.CarControl.Actuators.LongControlState
|
||||
|
||||
@@ -35,8 +35,8 @@ def create_eps_update(packer, bus, eps_stock_values, ea_simulated_torque):
|
||||
return packer.make_can_msg("LH_EPS_03", bus, values)
|
||||
|
||||
|
||||
def create_lka_hud_control(packer, bus, CP, ldw_stock_values, lat_active, steering_pressed, hud_alert, hud_control, sound_alert=False):
|
||||
display_mode = 1 if lat_active and not (CP.flags & VolkswagenFlags.CLUSTER_NO_TA_LANES) else 0 # travel assist style showing yellow lanes when op is active
|
||||
def create_lka_hud_control(packer, bus, ldw_stock_values, lat_active, steering_pressed, hud_alert, hud_control, sound_alert=False):
|
||||
display_mode = 1 if lat_active else 0 # travel assist style showing yellow lanes when op is active
|
||||
|
||||
values = {}
|
||||
if len(ldw_stock_values):
|
||||
@@ -168,12 +168,12 @@ def create_acc_accel_control(packer, bus, CCP, acc_type, acc_enabled, accel, acc
|
||||
commands = []
|
||||
|
||||
# ACC_Anhalteweg: when stopping: MEB: values <> 0 the car can execute a hard brake probably if target is too close, MQBEvo: value 0 results in hard brake
|
||||
terminal_rollout = 0.5 if CP.flags & VolkswagenFlags.MQB_EVO else 0
|
||||
terminal_rollout = 0
|
||||
|
||||
values = {
|
||||
"ACC_Typ": acc_type,
|
||||
"ACC_Status_ACC": acc_status,
|
||||
"ACC_StartStopp_Info": 2 if (acc_enabled and leaving_standstill and (CP.flags & VolkswagenFlags.MQB_EVO)) else (1 if acc_enabled else 0),
|
||||
"ACC_StartStopp_Info": acc_enabled,
|
||||
"ACC_Sollbeschleunigung_02": accel,
|
||||
"ACC_zul_Regelabw_unten": 0,
|
||||
"ACC_zul_Regelabw_oben": 0,
|
||||
|
||||
@@ -4,13 +4,6 @@ from opendbc.car.interfaces import RadarInterfaceBase
|
||||
from opendbc.car.volkswagen.values import DBC, VolkswagenFlags, CanBus
|
||||
|
||||
NO_OBJECT_ID = 0
|
||||
DISTANCE_STATUS_VALID = 0
|
||||
RADAR_UNAVAILABLE_THRESH = 5
|
||||
# radar object drel is not the end of the radar facing side but probably the longitudinal
|
||||
# center of the object; the DBC drel offset of -3.6 m is measured for a point mass (person)
|
||||
# type object, so statically subtract something between the first half and the end of a
|
||||
# typical car length.
|
||||
DREL_FRONT_EDGE_MARGIN = 1.5 # in m
|
||||
LANE_TYPES = ("Same_Lane", "Left_Lane", "Right_Lane")
|
||||
SIGNAL_SETS = tuple(
|
||||
(
|
||||
@@ -25,51 +18,24 @@ SIGNAL_SETS = tuple(
|
||||
)
|
||||
|
||||
|
||||
# The gateway harness does not expose the raw radar points, but the camera publishes filtered
|
||||
# tracks: two per lane, for the left, center and right lanes. MEB calls that message
|
||||
# MEB_Distance_01, while the MQB EVO DBC carries the exact same payload as Strukturen_01.
|
||||
RADAR_TRACK_MESSAGE = (
|
||||
(VolkswagenFlags.MEB, "MEB_Distance_01"),
|
||||
(VolkswagenFlags.MQB_EVO, "Strukturen_01"),
|
||||
)
|
||||
|
||||
|
||||
def get_radar_message(CP):
|
||||
if not (CP.flags & (VolkswagenFlags.MEB | VolkswagenFlags.MQB_EVO)):
|
||||
return None
|
||||
|
||||
if CP.flags & VolkswagenFlags.MQB_EVO_GEN2: # generation specific, no track message on the bus
|
||||
return None
|
||||
|
||||
for flag, message in RADAR_TRACK_MESSAGE:
|
||||
if CP.flags & flag:
|
||||
return message
|
||||
|
||||
return None
|
||||
|
||||
|
||||
class RadarInterface(RadarInterfaceBase):
|
||||
def __init__(self, CP, CP_SP):
|
||||
super().__init__(CP, CP_SP)
|
||||
|
||||
self.radar_off_can: bool = CP.radarUnavailable
|
||||
self.radar_unavailable_cnt: int = 0
|
||||
# With the MEB gateway harness, we do not have access to the raw points from the radar.
|
||||
# However, the camera publishes decent, albeit filtered, tracks. Two for each lane; left, center, and right.
|
||||
self.rcp: CANParser | None = None
|
||||
self.radar_message: str | None = get_radar_message(CP)
|
||||
|
||||
if self.radar_message is not None:
|
||||
self.rcp = CANParser(DBC[CP.carFingerprint][Bus.radar], [(self.radar_message, 25)], CanBus(CP).cam)
|
||||
if CP.flags & VolkswagenFlags.MEB and not self.CP.radarUnavailable:
|
||||
self.rcp = CANParser(DBC[CP.carFingerprint][Bus.radar], [("MEB_Distance_01", 25)], CanBus(CP).cam)
|
||||
|
||||
def update(self, can_strings):
|
||||
if self.radar_off_can or self.rcp is None:
|
||||
if self.rcp is None:
|
||||
return super().update(None)
|
||||
|
||||
self.rcp.update(can_strings)
|
||||
|
||||
if len(self.rcp.vl_all[self.radar_message]["Distance_Status"]) == 0:
|
||||
# The track message hasn't been seen yet. Keep publishing empty radar data instead of
|
||||
# nothing, so consumers waiting on radarTracks don't stall.
|
||||
return super().update(None)
|
||||
if len(self.rcp.vl_all["MEB_Distance_01"]["Distance_Status"]) == 0:
|
||||
return None
|
||||
|
||||
return self._update()
|
||||
|
||||
@@ -80,19 +46,11 @@ class RadarInterface(RadarInterfaceBase):
|
||||
ret.errors.canError = True
|
||||
return ret
|
||||
|
||||
msg = self.rcp.vl[self.radar_message]
|
||||
msg = self.rcp.vl["MEB_Distance_01"]
|
||||
|
||||
# Radar reports its overall validity via Distance_Status (0 = Valid, 3 = Invalid).
|
||||
# Treat consecutive invalid reports as a temporary radar unavailability, similar to Ford MRR.
|
||||
if msg["Distance_Status"] != DISTANCE_STATUS_VALID:
|
||||
self.radar_unavailable_cnt += 1
|
||||
else:
|
||||
self.radar_unavailable_cnt = 0
|
||||
|
||||
if self.radar_unavailable_cnt >= RADAR_UNAVAILABLE_THRESH:
|
||||
self.pts.clear()
|
||||
# Can be 3 when radar sensor is obstructed
|
||||
if msg["Distance_Status"] != 0:
|
||||
ret.errors.radarUnavailableTemporary = True
|
||||
return ret
|
||||
|
||||
seen_ids = set()
|
||||
for obj_id_sig, long_sig, lat_sig, vel_sig in SIGNAL_SETS:
|
||||
@@ -102,7 +60,7 @@ class RadarInterface(RadarInterfaceBase):
|
||||
|
||||
# We shouldn't see duplicate track ids
|
||||
if obj_id in seen_ids:
|
||||
ret.errors.canError = True
|
||||
ret.errors.radarFault = True
|
||||
return ret
|
||||
|
||||
seen_ids.add(obj_id)
|
||||
@@ -115,7 +73,7 @@ class RadarInterface(RadarInterfaceBase):
|
||||
else:
|
||||
pt = self.pts[obj_id]
|
||||
|
||||
pt.dRel = msg[long_sig] - DREL_FRONT_EDGE_MARGIN
|
||||
pt.dRel = msg[long_sig]
|
||||
pt.yRel = msg[lat_sig]
|
||||
pt.vRel = msg[vel_sig]
|
||||
|
||||
|
||||
@@ -16,8 +16,6 @@ TransmissionType = structs.CarParams.TransmissionType
|
||||
GearShifter = structs.CarState.GearShifter
|
||||
Button = namedtuple('Button', ['event_type', 'can_addr', 'can_msg', 'values'])
|
||||
|
||||
RADAR_DISABLE_STATE: dict[str, bool] = {"error": False}
|
||||
|
||||
|
||||
class CanBus(CanBusBase):
|
||||
def __init__(self, CP=None, fingerprint=None) -> None:
|
||||
@@ -102,7 +100,7 @@ class CarControllerParams:
|
||||
"laneAssistDeactivTrailer": 5, # "Lane Assist: no function with trailer"
|
||||
}
|
||||
|
||||
elif CP.flags & (VolkswagenFlags.MEB | VolkswagenFlags.MQB_EVO):
|
||||
elif CP.flags & VolkswagenFlags.MEB:
|
||||
self.LDW_STEP = 10 # LDW_02 message frequency 10Hz
|
||||
self.ACC_HUD_STEP = 6
|
||||
self.KLR_01_STEP = 6 # KLR_01 message frequency 17Hz
|
||||
@@ -217,7 +215,6 @@ class WMI(StrEnum):
|
||||
class VolkswagenSafetyFlags(IntFlag):
|
||||
LONG_CONTROL = 1
|
||||
MEB_ALT_CRC = 2
|
||||
DISABLE_RADAR = 8
|
||||
|
||||
|
||||
class VolkswagenFlags(IntFlag):
|
||||
@@ -232,10 +229,6 @@ class VolkswagenFlags(IntFlag):
|
||||
MLB = 8
|
||||
MEB = 16
|
||||
MEB_GEN2 = 128
|
||||
MQB_EVO = 256
|
||||
MQB_EVO_GEN2 = 8192
|
||||
DISABLE_RADAR = 2 ** 12
|
||||
CLUSTER_NO_TA_LANES = 65536
|
||||
|
||||
|
||||
@dataclass
|
||||
@@ -269,19 +262,6 @@ class VolkswagenMEBPlatformConfig(PlatformConfig):
|
||||
self.dbc_dict = {Bus.pt: 'vw_meb_2024_generated', Bus.radar: 'vw_meb_2024_generated'}
|
||||
|
||||
|
||||
|
||||
@dataclass
|
||||
class VolkswagenMQBevoPlatformConfig(PlatformConfig):
|
||||
dbc_dict: DbcDict = field(default_factory=lambda: {Bus.pt: 'vw_mqbevo', Bus.radar: 'vw_mqbevo'})
|
||||
chassis_codes: set[str] = field(default_factory=set)
|
||||
wmis: set[WMI] = field(default_factory=set)
|
||||
|
||||
def init(self):
|
||||
self.flags |= VolkswagenFlags.MQB_EVO
|
||||
if self.flags & VolkswagenFlags.MQB_EVO_GEN2:
|
||||
self.dbc_dict = {Bus.pt: 'vw_mqbevo_2024', Bus.radar: 'vw_mqbevo_2024'}
|
||||
|
||||
|
||||
@dataclass
|
||||
class VolkswagenPQPlatformConfig(VolkswagenMQBPlatformConfig):
|
||||
dbc_dict: DbcDict = field(default_factory=lambda: {Bus.pt: 'vw_pq'})
|
||||
@@ -404,12 +384,6 @@ class CAR(Platforms):
|
||||
chassis_codes={"5G", "AU", "BA", "BE"},
|
||||
wmis={WMI.VOLKSWAGEN_MEXICO_CAR, WMI.VOLKSWAGEN_EUROPE_CAR},
|
||||
)
|
||||
VOLKSWAGEN_GOLF_MK8 = VolkswagenMQBevoPlatformConfig(
|
||||
[VWCarDocs("Volkswagen Golf 2020-25")],
|
||||
VolkswagenCarSpecs(mass=1397, wheelbase=2.62),
|
||||
chassis_codes={"CD"},
|
||||
wmis={WMI.VOLKSWAGEN_EUROPE_CAR},
|
||||
)
|
||||
VOLKSWAGEN_ID4_MK1 = VolkswagenMEBPlatformConfig(
|
||||
[
|
||||
VWCarDocs("Volkswagen ID.4 2021-23"),
|
||||
@@ -527,13 +501,6 @@ class CAR(Platforms):
|
||||
chassis_codes={"8V", "FF"},
|
||||
wmis={WMI.AUDI_GERMANY_CAR, WMI.AUDI_SPORT, WMI.VOLKSWAGEN_CHINA_FAW},
|
||||
)
|
||||
AUDI_A3_MK4 = VolkswagenMQBevoPlatformConfig(
|
||||
[VWCarDocs("Audi RS3 2026")],
|
||||
VolkswagenCarSpecs(mass=1650, wheelbase=2.631),
|
||||
chassis_codes={"GY"},
|
||||
wmis={WMI.AUDI_EUROPE_MPV},
|
||||
flags=VolkswagenFlags.MQB_EVO_GEN2 | VolkswagenFlags.CLUSTER_NO_TA_LANES,
|
||||
)
|
||||
AUDI_Q2_MK1 = VolkswagenMQBPlatformConfig(
|
||||
[VWCarDocs("Audi Q2 2018")],
|
||||
VolkswagenCarSpecs(mass=1205, wheelbase=2.61),
|
||||
@@ -568,14 +535,6 @@ class CAR(Platforms):
|
||||
chassis_codes={"5F"},
|
||||
wmis={WMI.SEAT},
|
||||
)
|
||||
SEAT_LEON_MK4 = VolkswagenMQBevoPlatformConfig(
|
||||
[
|
||||
VWCarDocs("SEAT Leon 2020-25"),
|
||||
],
|
||||
VolkswagenCarSpecs(mass=1300, wheelbase=2.685),
|
||||
chassis_codes={"KL"},
|
||||
wmis={WMI.SEAT},
|
||||
)
|
||||
CUPRA_BORN_MK1 = VolkswagenMEBPlatformConfig(
|
||||
[VWCarDocs("CUPRA Born 2021-23"),],
|
||||
VolkswagenCarSpecs(mass=1956, wheelbase=2.766),
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,99 +0,0 @@
|
||||
CM_ "IMPORT _vw_mqbevo_common.dbc";
|
||||
|
||||
BO_ 252 ESC_51: 48 XXX
|
||||
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
|
||||
SG_ COUNTER : 8|4@1+ (1,0) [0|15] "" XXX
|
||||
SG_ NEW_SIGNAL_2 : 14|6@1+ (1,0) [0|3] "" XXX
|
||||
SG_ AEB_Breaking_01 : 24|8@1+ (1,0) [0|255] "" XXX
|
||||
SG_ AEB_Breaking_02 : 32|8@1+ (1,0) [0|255] "" XXX
|
||||
SG_ Accelerator_Higher_Speed : 40|1@0+ (1,0) [0|1] "" XXX
|
||||
SG_ Brake_Pressure : 42|9@1+ (0.195,0) [0|100] "Unit_Percent" XXX
|
||||
SG_ NEW_SIGNAL_1 : 52|8@1+ (1,0) [0|15] "" XXX
|
||||
SG_ HL_Radgeschw : 64|16@1+ (0.0075,0) [0|491.5125] "Unit_KilometerPerHour" XXX
|
||||
SG_ HR_Radgeschw : 80|16@1+ (0.0075,0) [0|491.5125] "Unit_KilometerPerHour" XXX
|
||||
SG_ VL_Radgeschw : 96|16@1+ (0.0075,0) [0|491.5125] "Unit_KilometerPerHour" XXX
|
||||
SG_ VR_Radgeschw : 112|16@1+ (0.0075,0) [0|491.5125] "Unit_KilometerPerHour" XXX
|
||||
SG_ NEW_SIGNAL_3 : 128|4@1+ (1,0) [0|15] "" XXX
|
||||
SG_ HL_Brake_Pressure : 152|8@1+ (1,0) [0|100] "" XXX
|
||||
SG_ HR_Brake_Pressure : 160|8@1+ (1,0) [0|100] "" XXX
|
||||
SG_ VL_Brake_Pressure : 168|8@1+ (1,0) [0|100] "" XXX
|
||||
SG_ VR_Brake_Pressure : 176|8@1+ (1,0) [0|100] "" XXX
|
||||
SG_ Steering_Wheel_CW : 184|8@1+ (1.67,0) [0|255] "" XXX
|
||||
SG_ Steering_Wheel_CCW : 192|8@1+ (1.67,0) [0|255] "" XXX
|
||||
SG_ ESC_v_Signal : 328|13@1+ (0.052,-107.016) [0|63] "" XXX
|
||||
SG_ NEW_SIGNAL_4 : 342|13@1+ (1,0) [0|3] "" XXX
|
||||
|
||||
BO_ 267 Motor_51: 32 XXX
|
||||
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
|
||||
SG_ COUNTER : 8|4@1+ (1,0) [0|15] "" XXX
|
||||
SG_ Accel_Pedal_Pressure : 12|9@1+ (0.4,0) [0|255] "" XXX
|
||||
SG_ Accel_Low_Pressed_Support : 21|1@1+ (1,0) [0|7] "" XXX
|
||||
SG_ TSK_Status : 88|3@1+ (1,0) [0|7] "" XXX
|
||||
SG_ TSK_Limiter_ausgewaehlt : 95|1@1+ (1,0) [0|3] "" XXX
|
||||
|
||||
BO_ 333 ACC_18: 32 XXX
|
||||
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
|
||||
SG_ COUNTER : 8|4@1+ (1,0) [0|15] "" XXX
|
||||
SG_ ACC_limitierte_Anfahrdyn : 12|1@1+ (1,0) [0|1] "" XXX
|
||||
SG_ ACC_nachtr_Stopp_Anf : 13|1@1+ (1,0) [0|1] "" XXX
|
||||
SG_ ACC_DynErhoehung : 14|1@1+ (1,0) [0|1] "" XXX
|
||||
SG_ ACC_Freilaufstrategie_TSK : 15|1@1+ (1,0) [0|1] "" XXX
|
||||
SG_ ACC_zul_Regelabw_unten : 16|6@1+ (0.024,0) [0|1.512] "Unit_MeterPerSeconSquar" XXX
|
||||
SG_ ACC_StartStopp_Info : 22|2@1+ (1,0) [0|3] "" XXX
|
||||
SG_ ACC_Sollbeschleunigung_02 : 24|11@1+ (0.005,-7.22) [-7.22|3.005] "Unit_MeterPerSeconSquar" XXX
|
||||
SG_ ACC_zul_Regelabw_oben : 35|5@1+ (0.0625,0) [0|1.9375] "Unit_MeterPerSeconSquar" XXX
|
||||
SG_ ACC_neg_Sollbeschl_Grad_02 : 40|8@1+ (0.05,0) [0|12.75] "Unit_MeterPerCubicSecon" XXX
|
||||
SG_ ACC_pos_Sollbeschl_Grad_02 : 48|8@1+ (0.05,0) [0|12.75] "Unit_MeterPerCubicSecon" XXX
|
||||
SG_ ACC_Anfahren : 56|1@1+ (1,0) [0|1] "" XXX
|
||||
SG_ ACC_Anhalten : 57|1@1+ (1,0) [0|1] "" XXX
|
||||
SG_ ACC_Typ : 58|2@1+ (1,0) [0|3] "" XXX
|
||||
SG_ ACC_Status_ACC : 60|3@1+ (1,0) [0|7] "" XXX
|
||||
SG_ ACC_Minimale_Bremsung : 63|1@1+ (1,0) [0|1] "" XXX
|
||||
SG_ ACC_Anhalteweg : 64|11@1+ (0.01,0) [0|2046] "" XXX
|
||||
SG_ ACC_Anforderung_HMS : 77|3@1+ (1,0) [0|7] "" XXX
|
||||
SG_ SET_ME_0XFE : 80|8@1+ (1,0) [0|255] "" XXX
|
||||
SG_ ACC_AKTIV_regelt : 90|1@0+ (1,0) [0|1] "" XXX
|
||||
SG_ SET_ME_0X1 : 92|1@0+ (1,0) [0|1] "" XXX
|
||||
SG_ SET_ME_0X9 : 232|4@1+ (1,0) [0|15] "" XXX
|
||||
SG_ Speed : 236|12@1+ (0.1,0) [0|15] "" XXX
|
||||
SG_ Accel_Boost : 248|6@1+ (1,0) [0|3] "" XXX
|
||||
SG_ Reversing : 254|1@0+ (1,0) [0|1] "" XXX
|
||||
|
||||
BO_ 588 MEB_Side_Assist_01: 16 XXX
|
||||
SG_ Blind_Spot_Passenger : 12|7@1+ (1,0) [0|15] "" XXX
|
||||
SG_ Blind_Spot_Driver : 19|7@1+ (1,0) [0|15] "" XXX
|
||||
SG_ Blind_Spot_Info_Passenger : 26|1@0+ (1,0) [0|1] "" XXX
|
||||
SG_ Blind_Spot_Warn_Passenger : 27|1@0+ (1,0) [0|1] "" XXX
|
||||
SG_ Blind_Spot_Info_Driver : 29|1@0+ (1,0) [0|1] "" XXX
|
||||
SG_ Blind_Spot_Warn_Driver : 30|1@0+ (1,0) [0|1] "" XXX
|
||||
SG_ Lower_Speed_01 : 32|1@0+ (1,0) [0|1] "" XXX
|
||||
SG_ Higher_Speed_01 : 33|1@0+ (1,0) [0|1] "" XXX
|
||||
SG_ Higher_Speed_02 : 83|1@0+ (1,0) [0|1] "" XXX
|
||||
SG_ Lower_Speed_02 : 84|1@0+ (1,0) [0|1] "" XXX
|
||||
SG_ Standstill : 86|1@0+ (1,0) [0|1] "" XXX
|
||||
SG_ NEW_SIGNAL_1 : 98|1@0+ (1,0) [0|1] "" XXX
|
||||
SG_ NEW_SIGNAL_6 : 119|1@0+ (1,0) [0|1] "" XXX
|
||||
|
||||
BO_ 619 TA_01: 8 XXX
|
||||
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
|
||||
SG_ COUNTER : 8|4@1+ (1,0) [0|15] "" XXX
|
||||
SG_ Travel_Assist_Status : 13|3@1+ (1,0) [0|3] "" XXX
|
||||
SG_ Travel_Assist_Request : 19|3@1+ (1,0) [0|7] "" XXX
|
||||
SG_ Travel_Assist_Available : 23|1@1+ (1,0) [0|1] "" XXX
|
||||
|
||||
VAL_ 267 TSK_Status 0 "init" 1 "disabled" 2 "enabled" 3 "regulating" 4 "accel_pedal_override" 5 "brake_only" 6 "temp_fault" 7 "perm_fault";
|
||||
VAL_ 333 ACC_limitierte_Anfahrdyn 0 "keine_Limitierung" 1 "Limitierung_Anfahrdynamik_angefordert";
|
||||
VAL_ 333 ACC_nachtr_Stopp_Anf 0 "nicht_angefordert" 1 "angefordert";
|
||||
VAL_ 333 ACC_StartStopp_Info 0 "Motorlauf_langfristig_nicht_notwendig_Stoppfreigabe" 1 "Motoranlauf_nicht_zwingend_notwendig_Stoppverbot_keine_Startanforderung" 2 "Motoranlauf_zwingend_notwendig_Startanforderung" 3 "Systemfehler";
|
||||
VAL_ 333 ACC_Sollbeschleunigung_02 2046 "Neutralwert" 2047 "Fehler";
|
||||
VAL_ 333 ACC_Anfahren 0 "keine_Anforderung_Anfahren" 1 "Anforderung_Anfahren";
|
||||
VAL_ 333 ACC_Anhalten 0 "kein_Anhalten_gewuenscht" 1 "Anhalten_gewuenscht";
|
||||
VAL_ 333 ACC_Typ 0 "Basis_ACC" 1 "ACC_mit_FollowToStop" 2 "ACC_mit_StopAndGo" 3 "ACC_nicht_codiert";
|
||||
VAL_ 333 ACC_Status_ACC 0 "ACC_OFF_Hauptschalter_aus" 1 "ACC_INIT" 2 "ACC_STANDBY" 3 "ACC_AKTIV_regelt" 4 "ACC_OVERRIDE" 5 "ACC_Abschaltreaktion" 6 "reversibler_Fehler_im_ACC_System" 7 "irreversibler_Fehler_im_ACC_System";
|
||||
VAL_ 333 ACC_Minimale_Bremsung 0 "Anforderung_Minimale_Bremsung_nicht_aktiv" 1 "Anforderung_Minimale_Bremsung_aktiv";
|
||||
VAL_ 333 ACC_Anhalteweg 2046 "Neutralwert" 2047 "Fehler";
|
||||
VAL_ 333 ACC_Anforderung_HMS 0 "keine_Anforderung" 1 "halten" 2 "parken" 3 "halten_Standby" 4 "anfahren" 5 "Loesen_ueber_Rampe";
|
||||
VAL_ 333 Accel_Boost 3 "Driving" 0 "Stop" 2 "Driving" 1 "Driving";
|
||||
VAL_ 619 Travel_Assist_Status 4 "enabled" 0 "disabled" 2 "ready" 3 "pre_ready";
|
||||
VAL_ 619 Travel_Assist_Request 4 "enable" 3 "disable" 0 "no_request" 1 "error";
|
||||
VAL_ 619 Travel_Assist_Available 0 "not_available" 1 "available";
|
||||
@@ -1,109 +0,0 @@
|
||||
CM_ "IMPORT _vw_mqbevo_common.dbc";
|
||||
|
||||
BO_ 252 ESC_51: 64 XXX
|
||||
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
|
||||
SG_ COUNTER : 8|4@1+ (1,0) [0|15] "" XXX
|
||||
SG_ NEW_SIGNAL_2 : 14|6@1+ (1,0) [0|3] "" XXX
|
||||
SG_ AEB_Breaking_01 : 24|8@1+ (1,0) [0|255] "" XXX
|
||||
SG_ AEB_Breaking_02 : 32|8@1+ (1,0) [0|255] "" XXX
|
||||
SG_ Accelerator_Higher_Speed : 40|1@0+ (1,0) [0|1] "" XXX
|
||||
SG_ Brake_Pressure : 42|9@1+ (0.195,0) [0|100] "Unit_Percent" XXX
|
||||
SG_ NEW_SIGNAL_1 : 52|8@1+ (1,0) [0|15] "" XXX
|
||||
SG_ HL_Radgeschw : 64|16@1+ (0.0075,0) [0|491.5125] "Unit_KilometerPerHour" XXX
|
||||
SG_ HR_Radgeschw : 80|16@1+ (0.0075,0) [0|491.5125] "Unit_KilometerPerHour" XXX
|
||||
SG_ VL_Radgeschw : 96|16@1+ (0.0075,0) [0|491.5125] "Unit_KilometerPerHour" XXX
|
||||
SG_ VR_Radgeschw : 112|16@1+ (0.0075,0) [0|491.5125] "Unit_KilometerPerHour" XXX
|
||||
SG_ NEW_SIGNAL_3 : 128|4@1+ (1,0) [0|15] "" XXX
|
||||
SG_ HL_Brake_Pressure : 152|8@1+ (1,0) [0|100] "" XXX
|
||||
SG_ HR_Brake_Pressure : 160|8@1+ (1,0) [0|100] "" XXX
|
||||
SG_ VL_Brake_Pressure : 168|8@1+ (1,0) [0|100] "" XXX
|
||||
SG_ VR_Brake_Pressure : 176|8@1+ (1,0) [0|100] "" XXX
|
||||
SG_ Steering_Wheel_CW : 184|8@1+ (1.67,0) [0|255] "" XXX
|
||||
SG_ Steering_Wheel_CCW : 192|8@1+ (1.67,0) [0|255] "" XXX
|
||||
SG_ ESC_v_Signal : 328|13@1+ (0.052,-107.016) [0|63] "" XXX
|
||||
SG_ NEW_SIGNAL_4 : 342|13@1+ (1,0) [0|3] "" XXX
|
||||
|
||||
BO_ 267 Motor_51: 48 XXX
|
||||
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
|
||||
SG_ COUNTER : 8|4@1+ (1,0) [0|15] "" XXX
|
||||
SG_ Accel_Pedal_Pressure : 12|9@1+ (0.4,0) [0|255] "" XXX
|
||||
SG_ Accel_Low_Pressed_Support : 21|1@1+ (1,0) [0|7] "" XXX
|
||||
SG_ TSK_Status : 88|3@1+ (1,0) [0|7] "" XXX
|
||||
SG_ TSK_Limiter_ausgewaehlt : 95|1@1+ (1,0) [0|3] "" XXX
|
||||
|
||||
BO_ 333 ACC_18: 32 XXX
|
||||
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
|
||||
SG_ COUNTER : 8|4@1+ (1,0) [0|15] "" XXX
|
||||
SG_ ACC_limitierte_Anfahrdyn : 12|1@1+ (1,0) [0|1] "" XXX
|
||||
SG_ ACC_nachtr_Stopp_Anf : 13|1@1+ (1,0) [0|1] "" XXX
|
||||
SG_ ACC_DynErhoehung : 14|1@1+ (1,0) [0|1] "" XXX
|
||||
SG_ ACC_Freilaufstrategie_TSK : 15|1@1+ (1,0) [0|1] "" XXX
|
||||
SG_ ACC_zul_Regelabw_unten : 16|6@1+ (0.024,0) [0|1.512] "Unit_MeterPerSeconSquar" XXX
|
||||
SG_ ACC_StartStopp_Info : 22|2@1+ (1,0) [0|3] "" XXX
|
||||
SG_ ACC_Sollbeschleunigung_02 : 24|11@1+ (0.005,-7.22) [-7.22|3.005] "Unit_MeterPerSeconSquar" XXX
|
||||
SG_ ACC_zul_Regelabw_oben : 35|5@1+ (0.0625,0) [0|1.9375] "Unit_MeterPerSeconSquar" XXX
|
||||
SG_ ACC_neg_Sollbeschl_Grad_02 : 40|8@1+ (0.05,0) [0|12.75] "Unit_MeterPerCubicSecon" XXX
|
||||
SG_ ACC_pos_Sollbeschl_Grad_02 : 48|8@1+ (0.05,0) [0|12.75] "Unit_MeterPerCubicSecon" XXX
|
||||
SG_ ACC_Anfahren : 56|1@1+ (1,0) [0|1] "" XXX
|
||||
SG_ ACC_Anhalten : 57|1@1+ (1,0) [0|1] "" XXX
|
||||
SG_ ACC_Typ : 58|2@1+ (1,0) [0|3] "" XXX
|
||||
SG_ ACC_Status_ACC : 60|3@1+ (1,0) [0|7] "" XXX
|
||||
SG_ ACC_Minimale_Bremsung : 63|1@1+ (1,0) [0|1] "" XXX
|
||||
SG_ ACC_Anhalteweg : 64|11@1+ (0.01,0) [0|2046] "" XXX
|
||||
SG_ ACC_Anforderung_HMS : 77|3@1+ (1,0) [0|7] "" XXX
|
||||
SG_ SET_ME_0XFE : 80|8@1+ (1,0) [0|255] "" XXX
|
||||
SG_ ACC_AKTIV_regelt : 90|1@0+ (1,0) [0|1] "" XXX
|
||||
SG_ SET_ME_0X1 : 92|1@0+ (1,0) [0|1] "" XXX
|
||||
SG_ SET_ME_0x2FE : 98|10@1+ (1,0) [0|63] "" XXX
|
||||
SG_ SET_ME_0X9 : 232|4@1+ (1,0) [0|15] "" XXX
|
||||
SG_ Speed : 236|12@1+ (0.1,0) [0|15] "" XXX
|
||||
SG_ Accel_Boost : 248|6@1+ (1,0) [0|3] "" XXX
|
||||
SG_ Reversing : 254|1@0+ (1,0) [0|1] "" XXX
|
||||
|
||||
BO_ 588 MEB_Side_Assist_01: 16 XXX
|
||||
SG_ Blind_Spot_Passenger : 12|7@1+ (1,0) [0|15] "" XXX
|
||||
SG_ Blind_Spot_Driver : 19|7@1+ (1,0) [0|15] "" XXX
|
||||
SG_ Blind_Spot_Info_Passenger : 26|1@0+ (1,0) [0|1] "" XXX
|
||||
SG_ Blind_Spot_Warn_Passenger : 27|1@0+ (1,0) [0|1] "" XXX
|
||||
SG_ Blind_Spot_Info_Driver : 29|1@0+ (1,0) [0|1] "" XXX
|
||||
SG_ Blind_Spot_Warn_Driver : 30|1@0+ (1,0) [0|1] "" XXX
|
||||
SG_ Lower_Speed_01 : 32|1@0+ (1,0) [0|1] "" XXX
|
||||
SG_ Higher_Speed_01 : 33|1@0+ (1,0) [0|1] "" XXX
|
||||
SG_ Higher_Speed_02 : 83|1@0+ (1,0) [0|1] "" XXX
|
||||
SG_ Lower_Speed_02 : 84|1@0+ (1,0) [0|1] "" XXX
|
||||
SG_ NEW_SIGNAL_1 : 98|1@0+ (1,0) [0|1] "" XXX
|
||||
SG_ NEW_SIGNAL_6 : 119|1@0+ (1,0) [0|1] "" XXX
|
||||
SG_ Motion_State : 171|2@0+ (1,0) [0|1] "" XXX
|
||||
|
||||
BO_ 619 TA_01: 8 XXX
|
||||
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
|
||||
SG_ COUNTER : 8|4@1+ (1,0) [0|15] "" XXX
|
||||
SG_ Travel_Assist_Status : 13|3@1+ (1,0) [0|3] "" XXX
|
||||
SG_ Speed_Mode_01 : 16|1@0+ (1,0) [0|1] "" XXX
|
||||
SG_ Speed_Mode_02 : 18|1@0+ (1,0) [0|1] "" XXX
|
||||
SG_ Travel_Assist_Request : 19|3@1+ (1,0) [0|7] "" XXX
|
||||
SG_ Init : 22|1@0+ (1,0) [0|1] "" XXX
|
||||
SG_ Travel_Assist_Available : 23|1@1+ (1,0) [0|1] "" XXX
|
||||
SG_ Unknown_01 : 26|1@0+ (1,0) [0|1] "" XXX
|
||||
SG_ Unknown_02 : 28|1@0+ (1,0) [0|1] "" XXX
|
||||
SG_ Unknown_03 : 31|1@0+ (1,0) [0|1] "" XXX
|
||||
SG_ Speed_Mode_Status : 32|3@1+ (1,0) [0|7] "" XXX
|
||||
SG_ Lane_Unsure : 37|2@1+ (1,0) [0|3] "" XXX
|
||||
|
||||
VAL_ 267 TSK_Status 0 "init" 1 "disabled" 2 "enabled" 3 "regulating" 4 "accel_pedal_override" 5 "brake_only" 6 "temp_fault" 7 "perm_fault";
|
||||
VAL_ 333 ACC_limitierte_Anfahrdyn 0 "keine_Limitierung" 1 "Limitierung_Anfahrdynamik_angefordert";
|
||||
VAL_ 333 ACC_nachtr_Stopp_Anf 0 "nicht_angefordert" 1 "angefordert";
|
||||
VAL_ 333 ACC_StartStopp_Info 0 "Motorlauf_langfristig_nicht_notwendig_Stoppfreigabe" 1 "Motoranlauf_nicht_zwingend_notwendig_Stoppverbot_keine_Startanforderung" 2 "Motoranlauf_zwingend_notwendig_Startanforderung" 3 "Systemfehler";
|
||||
VAL_ 333 ACC_Sollbeschleunigung_02 2046 "Neutralwert" 2047 "Fehler";
|
||||
VAL_ 333 ACC_Anfahren 0 "keine_Anforderung_Anfahren" 1 "Anforderung_Anfahren";
|
||||
VAL_ 333 ACC_Anhalten 0 "kein_Anhalten_gewuenscht" 1 "Anhalten_gewuenscht";
|
||||
VAL_ 333 ACC_Typ 0 "Basis_ACC" 1 "ACC_mit_FollowToStop" 2 "ACC_mit_StopAndGo" 3 "ACC_nicht_codiert";
|
||||
VAL_ 333 ACC_Status_ACC 0 "ACC_OFF_Hauptschalter_aus" 1 "ACC_INIT" 2 "ACC_STANDBY" 3 "ACC_AKTIV_regelt" 4 "ACC_OVERRIDE" 5 "ACC_Abschaltreaktion" 6 "reversibler_Fehler_im_ACC_System" 7 "irreversibler_Fehler_im_ACC_System";
|
||||
VAL_ 333 ACC_Minimale_Bremsung 0 "Anforderung_Minimale_Bremsung_nicht_aktiv" 1 "Anforderung_Minimale_Bremsung_aktiv";
|
||||
VAL_ 333 ACC_Anhalteweg 2046 "Neutralwert" 2047 "Fehler";
|
||||
VAL_ 333 ACC_Anforderung_HMS 0 "keine_Anforderung" 1 "halten" 2 "parken" 3 "halten_Standby" 4 "anfahren" 5 "Loesen_ueber_Rampe";
|
||||
VAL_ 333 Accel_Boost 3 "Driving" 0 "Stop" 2 "Driving" 1 "Driving";
|
||||
VAL_ 588 Motion_State 1 "Forwards" 2 "Reversing" 3 "Stopped";
|
||||
VAL_ 619 Travel_Assist_Status 4 "enabled" 0 "disabled" 2 "ready" 3 "pre_ready";
|
||||
VAL_ 619 Travel_Assist_Request 4 "enable" 3 "disable" 0 "no_request" 1 "error";
|
||||
VAL_ 619 Travel_Assist_Available 0 "not_available" 1 "available";
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -30,7 +30,6 @@
|
||||
#define SAFETY_FAW 26U
|
||||
#define SAFETY_BODY 27U
|
||||
#define SAFETY_HYUNDAI_CANFD 28U
|
||||
#define SAFETY_VOLKSWAGEN_MQBEVO 29U
|
||||
#define SAFETY_CHRYSLER_CUSW 30U
|
||||
#define SAFETY_PSA 31U
|
||||
#define SAFETY_RIVIAN 33U
|
||||
|
||||
@@ -1,19 +1,13 @@
|
||||
#pragma once
|
||||
|
||||
extern const uint16_t FLAG_VOLKSWAGEN_LONG_CONTROL;
|
||||
extern const uint16_t FLAG_VOLKSWAGEN_DISABLE_RADAR;
|
||||
|
||||
const uint16_t FLAG_VOLKSWAGEN_LONG_CONTROL = 1;
|
||||
const uint16_t FLAG_VOLKSWAGEN_DISABLE_RADAR = 8;
|
||||
|
||||
static uint8_t volkswagen_crc8_lut_8h2f[256]; // Static lookup table for CRC8 poly 0x2F, aka 8H2F/AUTOSAR
|
||||
|
||||
extern bool volkswagen_longitudinal;
|
||||
bool volkswagen_longitudinal = false;
|
||||
|
||||
extern bool volkswagen_disable_radar;
|
||||
bool volkswagen_disable_radar = false;
|
||||
|
||||
extern bool volkswagen_set_button_prev;
|
||||
bool volkswagen_set_button_prev = false;
|
||||
|
||||
@@ -46,7 +40,6 @@ bool volkswagen_brake_pressure_detected = false;
|
||||
|
||||
static void volkswagen_common_init(void) {
|
||||
volkswagen_longitudinal = false;
|
||||
volkswagen_disable_radar = false;
|
||||
volkswagen_set_button_prev = false;
|
||||
volkswagen_resume_button_prev = false;
|
||||
volkswagen_brake_pedal_switch = false;
|
||||
|
||||
@@ -12,8 +12,6 @@
|
||||
#define MSG_Motor_51 0x10BU // RX for TSK state and accel pedal
|
||||
#define MSG_KLR_01 0x25DU // TX, for capacitive steering wheel
|
||||
#define MSG_TA_01 0x26BU // TX by OP, Travel Assist status
|
||||
#define MSG_DIAGNOSTIC 0x700U // TX, functional tester present for the radar disable
|
||||
#define MSG_RADAR_DIAG 0x757U // TX, physical radar diagnostic address
|
||||
|
||||
// ACC_18.ACC_Anforderung_HMS, the states openpilot is allowed to request
|
||||
#define VOLKSWAGEN_MEB_HMS_KEINE_ANFORDERUNG 0U
|
||||
@@ -118,28 +116,10 @@ static safety_config volkswagen_meb_init(uint16_t param) {
|
||||
{MSG_TA_01, 0, 8, .check_relay = true},
|
||||
};
|
||||
|
||||
// With the radar disabled (camera side of the relay) openpilot needs the diagnostic
|
||||
// addresses to put the radar into a programming session
|
||||
static const CanMsg VOLKSWAGEN_MEB_TX_MSGS_NO_RADAR[] = {
|
||||
{MSG_HCA_03, 0, 24, .check_relay = true},
|
||||
{MSG_LDW_02, 0, 8, .check_relay = true},
|
||||
{MSG_KLR_01, 0, 8, .check_relay = false},
|
||||
{MSG_KLR_01, 2, 8, .check_relay = true},
|
||||
{MSG_ACC_19, 0, 48, .check_relay = true},
|
||||
{MSG_ACC_18, 0, 32, .check_relay = true},
|
||||
{MSG_TA_01, 0, 8, .check_relay = true},
|
||||
{MSG_DIAGNOSTIC, 0, 8, .check_relay = false},
|
||||
{MSG_RADAR_DIAG, 0, 8, .check_relay = false},
|
||||
};
|
||||
|
||||
volkswagen_common_init();
|
||||
const uint16_t FLAG_VOLKSWAGEN_MEB_ALT_CRC = 2;
|
||||
volkswagen_meb_alt_crc = GET_FLAG(param, FLAG_VOLKSWAGEN_MEB_ALT_CRC);
|
||||
|
||||
#ifdef ALLOW_DEBUG
|
||||
volkswagen_disable_radar = GET_FLAG(param, FLAG_VOLKSWAGEN_DISABLE_RADAR);
|
||||
#endif
|
||||
|
||||
safety_config ret;
|
||||
if (volkswagen_meb_alt_crc) {
|
||||
static RxCheck volkswagen_meb_gen2_rx_checks[] = {
|
||||
@@ -148,8 +128,7 @@ static safety_config volkswagen_meb_init(uint16_t param) {
|
||||
{.msg = {{MSG_ESC_51, 0, 64, 50U, .max_counter = 15U, .ignore_quality_flag = true}, { 0 }, { 0 }}},
|
||||
};
|
||||
|
||||
ret = volkswagen_disable_radar ? BUILD_SAFETY_CFG(volkswagen_meb_gen2_rx_checks, VOLKSWAGEN_MEB_TX_MSGS_NO_RADAR)
|
||||
: BUILD_SAFETY_CFG(volkswagen_meb_gen2_rx_checks, VOLKSWAGEN_MEB_TX_MSGS);
|
||||
ret = BUILD_SAFETY_CFG(volkswagen_meb_gen2_rx_checks, VOLKSWAGEN_MEB_TX_MSGS);
|
||||
} else {
|
||||
static RxCheck volkswagen_meb_rx_checks[] = {
|
||||
VOLKSWAGEN_MEB_COMMON_RX_CHECKS
|
||||
@@ -157,8 +136,7 @@ static safety_config volkswagen_meb_init(uint16_t param) {
|
||||
{.msg = {{MSG_ESC_51, 0, 48, 50U, .max_counter = 15U, .ignore_quality_flag = true}, { 0 }, { 0 }}},
|
||||
};
|
||||
|
||||
ret = volkswagen_disable_radar ? BUILD_SAFETY_CFG(volkswagen_meb_rx_checks, VOLKSWAGEN_MEB_TX_MSGS_NO_RADAR)
|
||||
: BUILD_SAFETY_CFG(volkswagen_meb_rx_checks, VOLKSWAGEN_MEB_TX_MSGS);
|
||||
ret = BUILD_SAFETY_CFG(volkswagen_meb_rx_checks, VOLKSWAGEN_MEB_TX_MSGS);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -414,7 +414,6 @@ int set_safety_hooks(uint16_t mode, uint16_t param) {
|
||||
{SAFETY_SUBARU, &subaru_hooks},
|
||||
{SAFETY_VOLKSWAGEN_MQB, &volkswagen_mqb_hooks},
|
||||
{SAFETY_VOLKSWAGEN_MEB, &volkswagen_meb_hooks},
|
||||
{SAFETY_VOLKSWAGEN_MQBEVO, &volkswagen_meb_hooks},
|
||||
{SAFETY_NISSAN, &nissan_hooks},
|
||||
{SAFETY_NOOUTPUT, &nooutput_hooks},
|
||||
{SAFETY_HYUNDAI_LEGACY, &hyundai_legacy_hooks},
|
||||
|
||||
@@ -4866,70 +4866,5 @@
|
||||
"2023"
|
||||
],
|
||||
"package": "Adaptive Cruise Control (ACC) & Lane Assist"
|
||||
},
|
||||
"Seat Leon 2020-25": {
|
||||
"platform": "SEAT_LEON_MK4",
|
||||
"make": "Volkswagen",
|
||||
"brand": "volkswagen",
|
||||
"model": "Leon IV",
|
||||
"year": [
|
||||
"2020",
|
||||
"2021",
|
||||
"2022",
|
||||
"2023",
|
||||
"2024",
|
||||
"2025"
|
||||
],
|
||||
"package": "Adaptive Cruise Control (ACC) & Lane Assist"
|
||||
},
|
||||
"Volkswagen Golf 2020-25": {
|
||||
"platform": "VOLKSWAGEN_GOLF_MK8",
|
||||
"make": "Volkswagen",
|
||||
"brand": "volkswagen",
|
||||
"model": "Golf 8",
|
||||
"year": [
|
||||
"2020",
|
||||
"2021",
|
||||
"2022",
|
||||
"2023",
|
||||
"2024",
|
||||
"2025"
|
||||
],
|
||||
"package": "Adaptive Cruise Control (ACC) & Lane Assist"
|
||||
},
|
||||
"Volkswagen MQBevo 2020-25": {
|
||||
"platform": "VOLKSWAGEN_GOLF_MK8",
|
||||
"make": "Volkswagen",
|
||||
"brand": "volkswagen",
|
||||
"model": "MQBevo",
|
||||
"year": [
|
||||
"2020",
|
||||
"2021",
|
||||
"2022",
|
||||
"2023",
|
||||
"2024",
|
||||
"2025"
|
||||
],
|
||||
"package": "Adaptive Cruise Control (ACC) & Lane Assist"
|
||||
},
|
||||
"Audi RS3 2026": {
|
||||
"platform": "AUDI_A3_MK4",
|
||||
"make": "Audi",
|
||||
"brand": "volkswagen",
|
||||
"model": "RS3",
|
||||
"year": [
|
||||
"2026"
|
||||
],
|
||||
"package": "Adaptive Cruise Control (ACC) & Lane Assist"
|
||||
},
|
||||
"Volkswagen MQBevo Gen 2 2026": {
|
||||
"platform": "AUDI_A3_MK4",
|
||||
"make": "Volkswagen",
|
||||
"brand": "volkswagen",
|
||||
"model": "MQBevo Gen 2",
|
||||
"year": [
|
||||
"2026"
|
||||
],
|
||||
"package": "Adaptive Cruise Control (ACC) & Lane Assist"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -130,9 +130,6 @@ class Car:
|
||||
# Dynamic Experimental Control
|
||||
self.dynamic_experimental_control = self.params.get_bool("DynamicExperimentalControl")
|
||||
|
||||
# let the interface adjust CarParams (e.g. dashcamOnly) before control availability is computed
|
||||
self.CI.pre_init(self.CP, self.CP_SP, *self.can_callbacks)
|
||||
|
||||
openpilot_enabled_toggle = self.params.get_bool("OpenpilotEnabledToggle")
|
||||
controller_available = self.CI.CC is not None and openpilot_enabled_toggle and not self.CP.dashcamOnly
|
||||
self.CP.passive = not controller_available or self.CP.dashcamOnly
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,2 +1,2 @@
|
||||
extern const uint8_t gitversion[19];
|
||||
const uint8_t gitversion[19] = "DEV-0389d815-DEBUG";
|
||||
const uint8_t gitversion[19] = "DEV-462b3a88-DEBUG";
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
||||
DEV-0389d815-DEBUG
|
||||
DEV-462b3a88-DEBUG
|
||||
Binary file not shown.
Reference in New Issue
Block a user