|
|
|
@ -4,16 +4,19 @@ from selfdrive.config import Conversions as CV |
|
|
|
|
from selfdrive.car.interfaces import CarStateBase |
|
|
|
|
from opendbc.can.parser import CANParser |
|
|
|
|
from opendbc.can.can_define import CANDefine |
|
|
|
|
from selfdrive.car.volkswagen.values import DBC, CANBUS, BUTTON_STATES, CarControllerParams |
|
|
|
|
from selfdrive.car.volkswagen.values import DBC, CANBUS, NWL, TRANS, GEAR, BUTTON_STATES, CarControllerParams |
|
|
|
|
|
|
|
|
|
class CarState(CarStateBase): |
|
|
|
|
def __init__(self, CP): |
|
|
|
|
super().__init__(CP) |
|
|
|
|
can_define = CANDefine(DBC[CP.carFingerprint]['pt']) |
|
|
|
|
self.shifter_values = can_define.dv["Getriebe_11"]['GE_Fahrstufe'] |
|
|
|
|
if CP.transmissionType == TRANS.automatic: |
|
|
|
|
self.shifter_values = can_define.dv["Getriebe_11"]['GE_Fahrstufe'] |
|
|
|
|
elif CP.transmissionType == TRANS.direct: |
|
|
|
|
self.shifter_values = can_define.dv["EV_Gearshift"]['GearPosition'] |
|
|
|
|
self.buttonStates = BUTTON_STATES.copy() |
|
|
|
|
|
|
|
|
|
def update(self, pt_cp): |
|
|
|
|
def update(self, pt_cp, cam_cp, acc_cp, trans_type): |
|
|
|
|
ret = car.CarState.new_message() |
|
|
|
|
# Update vehicle speed and acceleration from ABS wheel speeds. |
|
|
|
|
ret.wheelSpeeds.fl = pt_cp.vl["ESP_19"]['ESP_VL_Radgeschw_02'] * CV.KPH_TO_MS |
|
|
|
@ -212,22 +215,67 @@ class CarState(CarStateBase): |
|
|
|
|
("Einheiten_01", 1), # From J??? not known if gateway, cluster, or BCM |
|
|
|
|
] |
|
|
|
|
|
|
|
|
|
return CANParser(DBC[CP.carFingerprint]['pt'], signals, checks, CANBUS.pt) |
|
|
|
|
if CP.transmissionType == TRANS.automatic: |
|
|
|
|
signals += [("GE_Fahrstufe", "Getriebe_11", 0)] # Auto trans gear selector position |
|
|
|
|
checks += [("Getriebe_11", 20)] # From J743 Auto transmission control module |
|
|
|
|
elif CP.transmissionType == TRANS.direct: |
|
|
|
|
signals += [("GearPosition", "EV_Gearshift", 0)] # EV gear selector position |
|
|
|
|
checks += [("EV_Gearshift", 10)] # From J??? unknown EV control module |
|
|
|
|
elif CP.transmissionType == TRANS.manual: |
|
|
|
|
signals += [("MO_Kuppl_schalter", "Motor_14", 0), # Clutch switch |
|
|
|
|
("BCM1_Rueckfahrlicht_Schalter", "Gateway_72", 0)] # Reverse light from BCM |
|
|
|
|
checks += [("Motor_14", 10)] # From J623 Engine control module |
|
|
|
|
|
|
|
|
|
if CP.networkLocation == NWL.fwdCamera: |
|
|
|
|
# Extended CAN devices other than the camera are here on CANBUS.pt |
|
|
|
|
# FIXME: gate SWA_01 checks on module being detected, and reduce duplicate network location code |
|
|
|
|
signals += [("AWV2_Priowarnung", "ACC_10", 0), # FCW related |
|
|
|
|
("AWV2_Freigabe", "ACC_10", 0), # FCW related |
|
|
|
|
("ANB_Teilbremsung_Freigabe", "ACC_10", 0), # AEB related |
|
|
|
|
("ANB_Zielbremsung_Freigabe", "ACC_10", 0), # AEB related |
|
|
|
|
("SWA_Infostufe_SWA_li", "SWA_01", 0), # Blindspot object info, left |
|
|
|
|
("SWA_Warnung_SWA_li", "SWA_01", 0), # Blindspot object warning, left |
|
|
|
|
("SWA_Infostufe_SWA_re", "SWA_01", 0), # Blindspot object info, right |
|
|
|
|
("SWA_Warnung_SWA_re", "SWA_01", 0), # Blindspot object warning, right |
|
|
|
|
("ACC_Wunschgeschw", "ACC_02", 0)] # ACC set speed |
|
|
|
|
checks += [("ACC_10", 50), # From J428 ACC radar control module |
|
|
|
|
("SWA_01", 20), # From J1086 Lane Change Assist module |
|
|
|
|
("ACC_02", 17)] # From J428 ACC radar control module |
|
|
|
|
|
|
|
|
|
# A single signal is monitored from the camera CAN bus, and then ignored, |
|
|
|
|
# so the presence of CAN traffic can be verified with cam_cp.valid. |
|
|
|
|
return CANParser(DBC[CP.carFingerprint]['pt'], signals, checks, CANBUS.pt) |
|
|
|
|
|
|
|
|
|
@staticmethod |
|
|
|
|
def get_cam_can_parser(CP): |
|
|
|
|
|
|
|
|
|
# FIXME: gate LDW_02 checks on module being detected |
|
|
|
|
signals = [ |
|
|
|
|
# sig_name, sig_address, default |
|
|
|
|
("Kombi_Lamp_Green", "LDW_02", 0), # Lane Assist status LED |
|
|
|
|
("LDW_SW_Warnung_links", "LDW_02", 0), # Blind spot in warning mode on left side due to lane departure |
|
|
|
|
("LDW_SW_Warnung_rechts", "LDW_02", 0), # Blind spot in warning mode on right side due to lane departure |
|
|
|
|
("LDW_Seite_DLCTLC", "LDW_02", 0), # Direction of most likely lane departure (left or right) |
|
|
|
|
("LDW_DLC", "LDW_02", 0), # Lane departure, distance to line crossing |
|
|
|
|
("LDW_TLC", "LDW_02", 0), # Lane departure, time to line crossing |
|
|
|
|
] |
|
|
|
|
|
|
|
|
|
checks = [ |
|
|
|
|
# sig_address, frequency |
|
|
|
|
("LDW_02", 10) # From R242 Driver assistance camera |
|
|
|
|
("LDW_02", 10), # From R242 Driver assistance camera |
|
|
|
|
] |
|
|
|
|
|
|
|
|
|
if CP.networkLocation == NWL.gateway: |
|
|
|
|
# All Extended CAN devices are here on CANBUS.cam |
|
|
|
|
# FIXME: gate SWA_01 checks on module being detected, and reduce duplicate network location code |
|
|
|
|
signals += [("AWV2_Priowarnung", "ACC_10", 0), # FCW related |
|
|
|
|
("AWV2_Freigabe", "ACC_10", 0), # FCW related |
|
|
|
|
("ANB_Teilbremsung_Freigabe", "ACC_10", 0), # AEB related |
|
|
|
|
("ANB_Zielbremsung_Freigabe", "ACC_10", 0), # AEB related |
|
|
|
|
("SWA_Infostufe_SWA_li", "SWA_01", 0), # Blindspot object info, left |
|
|
|
|
("SWA_Warnung_SWA_li", "SWA_01", 0), # Blindspot object warning, left |
|
|
|
|
("SWA_Infostufe_SWA_re", "SWA_01", 0), # Blindspot object info, right |
|
|
|
|
("SWA_Warnung_SWA_re", "SWA_01", 0), # Blindspot object warning, right |
|
|
|
|
("ACC_Wunschgeschw", "ACC_02", 0)] # ACC set speed |
|
|
|
|
checks += [("ACC_10", 50), # From J428 ACC radar control module |
|
|
|
|
("SWA_01", 20), # From J1086 Lane Change Assist module |
|
|
|
|
("ACC_02", 17)] # From J428 ACC radar control module |
|
|
|
|
|
|
|
|
|
return CANParser(DBC[CP.carFingerprint]['pt'], signals, checks, CANBUS.cam) |
|
|
|
|