mirror of
https://github.com/infiniteCable2/opendbc.git
synced 2026-06-08 10:54:51 +08:00
VW MLB: Get door state and gearshift position from PT CAN (#3255)
This commit is contained in:
@@ -46,11 +46,12 @@ class CarState(CarStateBase):
|
||||
pt_cp = can_parsers[Bus.pt]
|
||||
cam_cp = can_parsers[Bus.cam]
|
||||
ext_cp = pt_cp if self.CP.networkLocation == NetworkLocation.fwdCamera else cam_cp
|
||||
alt_cp = can_parsers[Bus.alt]
|
||||
|
||||
if self.CP.flags & VolkswagenFlags.PQ:
|
||||
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)
|
||||
return self.update_mlb(pt_cp, cam_cp, ext_cp, alt_cp)
|
||||
|
||||
ret = structs.CarState()
|
||||
|
||||
@@ -230,7 +231,7 @@ class CarState(CarStateBase):
|
||||
self.frame += 1
|
||||
return ret
|
||||
|
||||
def update_mlb(self, pt_cp, cam_cp, ext_cp) -> structs.CarState:
|
||||
def update_mlb(self, pt_cp, cam_cp, ext_cp, alt_cp) -> structs.CarState:
|
||||
ret = structs.CarState()
|
||||
|
||||
self.parse_wheel_speeds(ret,
|
||||
@@ -241,7 +242,7 @@ class CarState(CarStateBase):
|
||||
)
|
||||
|
||||
ret.gasPressed = pt_cp.vl["Motor_03"]["MO_Fahrpedalrohwert_01"] > 0
|
||||
ret.gearShifter = self.parse_gear_shifter(self.CCP.shifter_values.get(pt_cp.vl["Getriebe_03"]["GE_Waehlhebel"], None))
|
||||
ret.gearShifter = self.parse_gear_shifter(self.CCP.shifter_values.get(alt_cp.vl["Getriebe_03"]["GE_Waehlhebel"], None))
|
||||
|
||||
# ACC okay but disabled (1), ACC ready (2), a radar visibility or other fault/disruption (6 or 7)
|
||||
# currently regulating speed (3), driver accel override (4), brake only (5)
|
||||
@@ -263,10 +264,10 @@ class CarState(CarStateBase):
|
||||
ret.rightBlinker = bool(pt_cp.vl["BCM"]["BLINKER_RIGHT"])
|
||||
|
||||
ret.seatbeltUnlatched = bool(pt_cp.vl["Airbag_01"]["AB_Gurtwarn_VF"])
|
||||
ret.doorOpen = any([pt_cp.vl["Gateway_05"]["FT_Tuer_geoeffnet"],
|
||||
pt_cp.vl["Gateway_05"]["BT_Tuer_geoeffnet"],
|
||||
pt_cp.vl["Gateway_05"]["HL_Tuer_geoeffnet"],
|
||||
pt_cp.vl["Gateway_05"]["HR_Tuer_geoeffnet"]])
|
||||
ret.doorOpen = any([alt_cp.vl["Gateway_05"]["FT_Tuer_geoeffnet"],
|
||||
alt_cp.vl["Gateway_05"]["BT_Tuer_geoeffnet"],
|
||||
alt_cp.vl["Gateway_05"]["HL_Tuer_geoeffnet"],
|
||||
alt_cp.vl["Gateway_05"]["HR_Tuer_geoeffnet"]])
|
||||
|
||||
# Consume blind-spot monitoring info/warning LED states, if available.
|
||||
# Infostufe: BSM LED on, Warnung: BSM LED flashing
|
||||
@@ -317,7 +318,7 @@ class CarState(CarStateBase):
|
||||
return CarState.get_can_parsers_pq(CP)
|
||||
|
||||
# manually configure some optional and variable-rate/edge-triggered messages
|
||||
pt_messages, cam_messages = [], []
|
||||
pt_messages, cam_messages, alt_messages = [], [], []
|
||||
|
||||
if not CP.flags & VolkswagenFlags.MLB:
|
||||
pt_messages += [
|
||||
@@ -331,6 +332,7 @@ class CarState(CarStateBase):
|
||||
return {
|
||||
Bus.pt: CANParser(DBC[CP.carFingerprint][Bus.pt], pt_messages, CanBus(CP).pt),
|
||||
Bus.cam: CANParser(DBC[CP.carFingerprint][Bus.pt], cam_messages, CanBus(CP).cam),
|
||||
Bus.alt: CANParser(DBC[CP.carFingerprint][Bus.pt], alt_messages, CanBus(CP).alt),
|
||||
}
|
||||
|
||||
@staticmethod
|
||||
@@ -338,4 +340,5 @@ class CarState(CarStateBase):
|
||||
return {
|
||||
Bus.pt: CANParser(DBC[CP.carFingerprint][Bus.pt], [], CanBus(CP).pt),
|
||||
Bus.cam: CANParser(DBC[CP.carFingerprint][Bus.pt], [], CanBus(CP).cam),
|
||||
Bus.alt: CANParser(DBC[CP.carFingerprint][Bus.pt], [], CanBus(CP).alt),
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user