diff --git a/opendbc/car/fingerprints.py b/opendbc/car/fingerprints.py index 1670ac6342..1f6aea4574 100644 --- a/opendbc/car/fingerprints.py +++ b/opendbc/car/fingerprints.py @@ -3,6 +3,7 @@ from opendbc.car.chrysler.values import CAR as CHRYSLER from opendbc.car.ford.values import CAR as FORD from opendbc.car.gm.values import CAR as GM +from opendbc.car.gwm.values import CAR as GWM from opendbc.car.honda.values import CAR as HONDA from opendbc.car.hyundai.values import CAR as HYUNDAI from opendbc.car.mazda.values import CAR as MAZDA @@ -340,5 +341,6 @@ def all_legacy_fingerprint_cars(): "SKODA_SCALA_MK1": VW.SKODA_KAMIQ_MK1, "SKODA SUPERB 3RD GEN": VW.SKODA_SUPERB_MK3, + "GWM HAVAL H6 PHEV 3RD GEN": GWM.GWM_HAVAL_H6_PHEV_3RD_GEN, "mock": MOCK.MOCK, } diff --git a/opendbc/car/gwm/__init__.py b/opendbc/car/gwm/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/opendbc/car/gwm/carcontroller.py b/opendbc/car/gwm/carcontroller.py new file mode 100644 index 0000000000..459a50cc56 --- /dev/null +++ b/opendbc/car/gwm/carcontroller.py @@ -0,0 +1,29 @@ +from opendbc.car.interfaces import CarControllerBase +from opendbc.car.gwm.values import CarControllerParams + +class CarController(CarControllerBase): + def __init__(self, dbc_name, CP): + self.CP = CP + self.CCP = CarControllerParams(self.CP) + + self.frame = 0 + + def update(self, CC, CS, now_nanos): + actuators = CC.actuators + new_actuators = actuators + can_sends = [] + + # **** Steering Controls ******************************************* # + # TODO + + # **** Acceleration Controls *************************************** # + # TODO + + # **** HUD Controls ************************************************ # + # TODO + + # **** Stock ACC Button Controls *********************************** # + # TODO + + self.frame += 1 + return new_actuators, can_sends \ No newline at end of file diff --git a/opendbc/car/gwm/carstate.py b/opendbc/car/gwm/carstate.py new file mode 100644 index 0000000000..9e964c38d8 --- /dev/null +++ b/opendbc/car/gwm/carstate.py @@ -0,0 +1,108 @@ +import numpy as np +from opendbc.car import structs +from opendbc.car.interfaces import CarStateBase +from opendbc.can.parser import CANParser +from opendbc.car.gwm.values import DBC, CANBUS, CarControllerParams + + +GearShifter = structs.CarState.GearShifter + + +class CarState(CarStateBase): + def __init__(self, CP): + super().__init__(CP) + self.frame = 0 + self.CCP = CarControllerParams(CP) + self.button_states = {button.event_type: False for button in self.CCP.BUTTONS} + + def create_button_events(self, cp, buttons): + button_events = [] + for button in buttons: + state = cp.vl[button.can_addr][button.can_msg] in button.values + if self.button_states[button.event_type] != state: + event = structs.CarState.ButtonEvent() + event.type = button.event_type + event.pressed = state + button_events.append(event) + self.button_states[button.event_type] = state + return button_events + + def update(self, cp, cam_cp, _, __, loopback_cp) -> structs.CarState: + ret = structs.CarState() + + ret.wheelSpeeds = self.get_wheel_speeds( + cp.vl["WHEEL_SPEEDS"]["FRONT_LEFT_WHEEL_SPEED"], + cp.vl["WHEEL_SPEEDS"]["FRONT_RIGHT_WHEEL_SPEED"], + cp.vl["WHEEL_SPEEDS"]["REAR_LEFT_WHEEL_SPEED"], + cp.vl["WHEEL_SPEEDS"]["REAR_RIGHT_WHEEL_SPEED"], + ) + ret.vEgoRaw = float(np.mean([ret.wheelSpeeds.fl, ret.wheelSpeeds.fr, ret.wheelSpeeds.rl, ret.wheelSpeeds.rr])) + ret.vEgo, ret.aEgo = self.update_speed_kf(ret.vEgoRaw) + ret.standstill = abs(ret.vEgoRaw) < 1e-3 + + ret.steeringAngleDeg = cp.vl["STEER_AND_AP_STALK"]["STEERING_ANGLE"] * (-1 if cp.vl["STEER_AND_AP_STALK"]["STEERING_DIRECTION"] else 1) + ret.steeringRateDeg = 0 # TODO + ret.steeringTorque = cp.vl["STEER_AND_AP_STALK"]["STEERING_TORQUE"] * (-1 if cp.vl["STEER_AND_AP_STALK"]["STEERING_DIRECTION"] else 1) * 73 + ret.steeringPressed = abs(ret.steeringTorque) > 10 + # ret.yawRate = NOT ABSOLUTE NECESSARY + # ret.steerFaultTemporary, ret.steerFaultPermanent = CRITICAL SAFETY TODO, CRITICAL SAFETY TODO + + ret.gas = cp.vl["CAR_OVERALL_SIGNALS2"]["GAS_POSITION"] + ret.gasPressed = ret.gas > 0 + ret.brake = cp.vl["BRAKE"]["BRAKE_PRESSURE"] + ret.brakePressed = cp.vl["BRAKE"]["BRAKE_PRESSURE"] > 0 + ret.parkingBrake = cp.vl["CAR_OVERALL_SIGNALS"]["DRIVE_MODE"] == 0 + + # begin toyota brakePressed TODO clean-after-port + # ret.brakePressed = cp.vl["COROLLA_BRAKE_MODULE"]["BRAKE_PRESSED"] != 0 + # end TODO clean-after-port + + ret.gearShifter = GearShifter.drive if int(cp.vl["CAR_OVERALL_SIGNALS"]["DRIVE_MODE"]) == 1 else \ + GearShifter.neutral if int(cp.vl["CAR_OVERALL_SIGNALS"]["DRIVE_MODE"]) == 2 else \ + GearShifter.reverse if int(cp.vl["CAR_OVERALL_SIGNALS"]["DRIVE_MODE"]) == 3 else \ + GearShifter.park + + ret.doorOpen = any([cp.vl["DOOR_DRIVER"]["DOOR_REAR_RIGHT_OPEN"], + cp.vl["DOOR_DRIVER"]["DOOR_FRONT_RIGHT_OPEN"], + cp.vl["DOOR_DRIVER"]["DOOR_REAR_LEFT_OPEN"], + cp.vl["DOOR_DRIVER"]["DOOR_DRIVER_OPEN"]]) + ret.seatbeltUnlatched = cp.vl["SEATBELT"]["SEAT_BELT_DRIVER_STATE"] != 1 + + ret.cruiseState.available = True #CRITICAL SAFETY TODO + # ret.cruiseState.enabled = TODO + # ret.cruiseState.speed = TODO + + ret.leftBlinker, ret.rightBlinker = self.update_blinker_from_lamp(50, cp.vl["LIGHTS"]["LEFT_TURN_SIGNAL"], + cp.vl["LIGHTS"]["RIGHT_TURN_SIGNAL"]) + ret.buttonEvents = self.create_button_events(cp, self.CCP.BUTTONS) + # ret.espDisabled = TODO + + self.frame += 1 + return ret + + + @staticmethod + def get_can_parser(CP): + messages = [ + # COROLLA: + # ("COROLLA_BRAKE_MODULE", 40), + + # HAVAL: + ("BRAKE", 50), + ("CAR_OVERALL_SIGNALS", 50), + ("CAR_OVERALL_SIGNALS2", 100), + ("DOOR_DRIVER", 20), + ("LIGHTS", 20), + ("SEATBELT", 2), + ("STEER_AND_AP_STALK", 100), + ("WHEEL_SPEEDS", 50), + ] + + return CANParser(DBC[CP.carFingerprint]["pt"], messages, CANBUS.pt) + + + @staticmethod + def get_cam_can_parser(CP): + messages = [] + + return CANParser(DBC[CP.carFingerprint]["pt"], messages, CANBUS.cam) \ No newline at end of file diff --git a/opendbc/car/gwm/fingerprints.py b/opendbc/car/gwm/fingerprints.py new file mode 100644 index 0000000000..07f158e2f0 --- /dev/null +++ b/opendbc/car/gwm/fingerprints.py @@ -0,0 +1,12 @@ +from opendbc.car.structs import CarParams +from opendbc.car.gwm.values import CAR + +Ecu = CarParams.Ecu + +FW_VERSIONS = { + CAR.GWM_HAVAL_H6_PHEV_3RD_GEN: { + (Ecu.engine, 0x7e0, None): [ + b'PLACEHOLDER', + ], + }, +} \ No newline at end of file diff --git a/opendbc/car/gwm/gwmcan.py b/opendbc/car/gwm/gwmcan.py new file mode 100644 index 0000000000..2ae28399f5 --- /dev/null +++ b/opendbc/car/gwm/gwmcan.py @@ -0,0 +1 @@ +pass diff --git a/opendbc/car/gwm/interface.py b/opendbc/car/gwm/interface.py new file mode 100644 index 0000000000..a775bf47a3 --- /dev/null +++ b/opendbc/car/gwm/interface.py @@ -0,0 +1,26 @@ +from opendbc.car import get_safety_config, structs +from opendbc.car.interfaces import CarInterfaceBase +from opendbc.car.gwm.values import CAR + +class CarInterface(CarInterfaceBase): + @staticmethod + def _get_params(ret: structs.CarParams, candidate: CAR, fingerprint, car_fw, experimental_long, docs) -> structs.CarParams: + ret.carName = "gwm" + ret.radarUnavailable = True + + # Set global parameters + + ret.safetyConfigs = [get_safety_config(structs.CarParams.SafetyModel.allOutput,1)] + + # Global lateral tuning defaults, can be overriden per-vehicle + + ret.steerLimitTimer = 0.4 + ret.steerActuatorDelay = 0.2 + CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning) + + # Global longitudinal tuning defaults, can be overridden per-vehicle + + # ret.pcmCruise = not ret.openpilotLongitudinalControl + ret.pcmCruise = False # TODO clean-after-port MOCK engagement + + return ret \ No newline at end of file diff --git a/opendbc/car/gwm/radar_interface.py b/opendbc/car/gwm/radar_interface.py new file mode 100644 index 0000000000..6e552bf618 --- /dev/null +++ b/opendbc/car/gwm/radar_interface.py @@ -0,0 +1,4 @@ +from opendbc.car.interfaces import RadarInterfaceBase + +class RadarInterface(RadarInterfaceBase): + pass diff --git a/opendbc/car/gwm/values.py b/opendbc/car/gwm/values.py new file mode 100644 index 0000000000..71e22c1f80 --- /dev/null +++ b/opendbc/car/gwm/values.py @@ -0,0 +1,67 @@ +from collections import namedtuple +from dataclasses import dataclass, field + +from opendbc.car import dbc_dict, CarSpecs, DbcDict, PlatformConfig, Platforms, structs +from opendbc.car.docs_definitions import CarHarness, CarDocs, CarParts +from opendbc.car.fw_query_definitions import FwQueryConfig, Request, StdQueries + +Button = namedtuple('Button', ['event_type', 'can_addr', 'can_msg', 'values']) + +class CarControllerParams: + def __init__(self, CP): + self.BUTTONS = [ + Button(structs.CarState.ButtonEvent.Type.setCruise, "STEER_AND_AP_STALK", "AP_ENABLE_COMMAND", [1]), + # Button(structs.CarState.ButtonEvent.Type.resumeCruise, "STEER_AND_AP_STALK", "AP_ENABLE_COMMAND", [1]), + Button(structs.CarState.ButtonEvent.Type.accelCruise, "STEER_AND_AP_STALK", "AP_INCREASE_SPEED_COMMAND", [1]), + Button(structs.CarState.ButtonEvent.Type.decelCruise, "STEER_AND_AP_STALK", "AP_DECREASE_SPEED_COMMAND", [1]), + Button(structs.CarState.ButtonEvent.Type.cancel, "STEER_AND_AP_STALK", "AP_CANCEL_COMMAND", [1]), + Button(structs.CarState.ButtonEvent.Type.gapAdjustCruise, "STEER_AND_AP_STALK", "AP_INCREASE_DISTANCE_COMMAND", [1]), + ] + + +class CANBUS: + pt = 0 + cam = 2 + + +@dataclass +class GwmPlatformConfig(PlatformConfig): + dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('gwm_haval_h6_mk3_generated', None)) + + +@dataclass(frozen=True, kw_only=True) +class GwmCarSpecs(CarSpecs): + centerToFrontRatio: float = 0.45 + steerRatio: float = 15.6 + + +@dataclass +class GwmCarDocs(CarDocs): + package: str = "Adaptive Cruise Control (ACC) & Lane Assist" + car_parts: CarParts = field(default_factory=CarParts.common([CarHarness.custom])) + + +class CAR(Platforms): + config: GwmPlatformConfig + + GWM_HAVAL_H6_PHEV_3RD_GEN = GwmPlatformConfig( + [ + GwmCarDocs("GWM Haval H6 hybrid plug-in 2020-24"), + ], + GwmCarSpecs(mass=2050, wheelbase=2.74), + ) + + +FW_QUERY_CONFIG = FwQueryConfig( + requests=[ + # TODO: + Request( + [StdQueries.MANUFACTURER_SOFTWARE_VERSION_REQUEST], + [StdQueries.MANUFACTURER_SOFTWARE_VERSION_RESPONSE], + bus=0, + ), + ], +) + + +DBC = CAR.create_dbc_map() \ No newline at end of file diff --git a/opendbc/car/tests/routes.py b/opendbc/car/tests/routes.py index 6695b4cbc2..217926b0c5 100644 --- a/opendbc/car/tests/routes.py +++ b/opendbc/car/tests/routes.py @@ -1,6 +1,7 @@ from typing import NamedTuple from opendbc.car.chrysler.values import CAR as CHRYSLER +from opendbc.car.gwm.values import CAR as GWM from opendbc.car.gm.values import CAR as GM from opendbc.car.ford.values import CAR as FORD from opendbc.car.honda.values import CAR as HONDA @@ -58,6 +59,8 @@ class CarTestRoute(NamedTuple): CarTestRoute("37998aa0fade36ab/00000000--48f927c4f5", FORD.FORD_RANGER_MK2), #TestRoute("f1b4c567731f4a1b|2018-04-30--10-15-35", FORD.FUSION), + CarTestRoute("5046371b6e9f0f3e/0000006f--fed43edbf9", GWM.GWM_HAVAL_H6_PHEV_3RD_GEN), + CarTestRoute("7cc2a8365b4dd8a9|2018-12-02--12-10-44", GM.GMC_ACADIA), CarTestRoute("aa20e335f61ba898|2019-02-05--16-59-04", GM.BUICK_REGAL), CarTestRoute("75a6bcb9b8b40373|2023-03-11--22-47-33", GM.BUICK_LACROSSE), diff --git a/opendbc/car/torque_data/override.toml b/opendbc/car/torque_data/override.toml index f4142ba1df..4c3615505a 100644 --- a/opendbc/car/torque_data/override.toml +++ b/opendbc/car/torque_data/override.toml @@ -64,6 +64,7 @@ legend = ["LAT_ACCEL_FACTOR", "MAX_LAT_ACCEL_MEASURED", "FRICTION"] "HYUNDAI_CUSTIN_1ST_GEN" = [2.5, 2.5, 0.1] "LEXUS_GS_F" = [2.5, 2.5, 0.08] "HYUNDAI_STARIA_4TH_GEN" = [1.8, 2.0, 0.15] +"GWM_HAVAL_H6_PHEV_3RD_GEN" = [1.5, 1.5, 0.1] # Dashcam or fallback configured as ideal car "MOCK" = [10.0, 10, 0.0] diff --git a/opendbc/car/values.py b/opendbc/car/values.py index e2e378d8f9..6e5e955c68 100644 --- a/opendbc/car/values.py +++ b/opendbc/car/values.py @@ -3,6 +3,7 @@ from opendbc.car.chrysler.values import CAR as CHRYSLER from opendbc.car.ford.values import CAR as FORD from opendbc.car.gm.values import CAR as GM +from opendbc.car.gwm.values import CAR as GWM from opendbc.car.honda.values import CAR as HONDA from opendbc.car.hyundai.values import CAR as HYUNDAI from opendbc.car.mazda.values import CAR as MAZDA @@ -12,7 +13,7 @@ from opendbc.car.toyota.values import CAR as TOYOTA from opendbc.car.volkswagen.values import CAR as VOLKSWAGEN -Platform = BODY | CHRYSLER | FORD | GM | HONDA | HYUNDAI | MAZDA | MOCK | NISSAN | SUBARU | TOYOTA | VOLKSWAGEN +Platform = BODY | CHRYSLER | FORD | GM | GWM | HONDA | HYUNDAI | MAZDA | MOCK | NISSAN | SUBARU | TOYOTA | VOLKSWAGEN BRANDS = get_args(Platform) PLATFORMS: dict[str, Platform] = {str(platform): platform for brand in BRANDS for platform in brand} diff --git a/opendbc/dbc/generator/gwm/gwm_haval_h6_mk3.dbc b/opendbc/dbc/generator/gwm/gwm_haval_h6_mk3.dbc new file mode 100644 index 0000000000..a8f51e15ff --- /dev/null +++ b/opendbc/dbc/generator/gwm/gwm_haval_h6_mk3.dbc @@ -0,0 +1,187 @@ +BO_ 96 CAR_OVERALL_SIGNALS2: 64 XXX + SG_ CRC1 : 7|8@0+ (1,0) [0|255] "" XXX + SG_ COUNTER1 : 59|4@0+ (1,0) [0|15] "" XXX + SG_ CRC2 : 71|8@0+ (1,0) [0|255] "" XXX + SG_ GAS_POSITION : 79|8@0+ (0.393700787,0) [0|255] "%" XXX + SG_ BRAKE_SIGNAL : 86|1@0+ (1,0) [0|1] "" XXX + SG_ ACC_GAS_POSITION : 103|8@0+ (0.393700787,0) [0|255] "%" XXX + SG_ COUNTER2 : 123|4@0+ (1,0) [0|15] "" XXX + SG_ CRC3 : 135|8@0+ (1,0) [0|255] "" XXX + SG_ COUNTER3 : 187|4@0+ (1,0) [0|15] "" XXX + +BO_ 147 IMPRECISE_SPEED_INFORMATION: 8 XXX + SG_ IMPRECISE_SPEED : 15|8@0+ (3.5,0) [0|255] "kph" XXX + SG_ COUNTER : 59|4@0+ (1,0) [0|15] "" XXX + +BO_ 161 STEER_AND_AP_STALK: 8 XXX + SG_ CRC : 7|8@0+ (1,0) [0|255] "" XXX + SG_ STEERING_ANGLE : 13|13@0+ (0.05,0) [0|65535] "degs" XXX + SG_ STEERING_DIRECTION : 16|1@0+ (1,0) [0|1] "" XXX + SG_ STEERING_TORQUE : 29|12@0+ (1,0) [0|4095] "" XXX + SG_ EPS_ACTUATING : 33|2@0+ (1,0) [0|3] "" XXX + SG_ AP_REDUCE_DISTANCE_COMMAND : 44|1@0+ (1,0) [0|1] "" XXX + SG_ AP_INCREASE_DISTANCE_COMMAND : 45|1@0+ (1,0) [0|1] "AUTOPILOT_STALK" XXX + SG_ AP_CANCEL_COMMAND : 46|1@0+ (1,0) [0|1] "" XXX + SG_ AP_ENABLE_COMMAND : 47|1@0+ (1,0) [0|1] "" XXX + SG_ AP_DECREASE_SPEED_COMMAND : 50|1@0+ (1,0) [0|1] "" XXX + SG_ AP_INCREASE_SPEED_COMMAND : 51|1@0+ (1,0) [0|1] "" XXX + SG_ COUNTER : 59|4@0+ (1,0) [0|255] "" XXX + +BO_ 259 SPEED: 64 XXX + SG_ CRC : 199|8@0+ (1,0) [0|255] "" XXX + SG_ ODD_GAS_POSITION : 231|8@0+ (1,0) [0|255] "" XXX + SG_ SPEED : 239|8@0+ (1,0) [0|255] "Khp" XXX + SG_ COUNTER2 : 251|4@0+ (1,0) [0|15] "" XXX + +BO_ 273 UNDEFINED_2: 8 XXX + SG_ CRC : 7|8@0+ (1,0) [0|255] "" XXX + SG_ COUNTER : 59|4@0+ (1,0) [0|15] "" XXX + +BO_ 288 BRAKE2: 64 XXX + SG_ CRC : 7|8@0+ (1,0) [0|255] "" XXX + SG_ ODD_BRAKE_PRESSURE : 39|8@0+ (1,-27) [0|255] "" XXX + SG_ COUNTER : 59|4@0+ (1,0) [0|15] "" XXX + +BO_ 303 CAR_OVERALL_SIGNALS: 64 XXX + SG_ CRC1 : 71|8@0+ (1,0) [0|255] "" XXX + SG_ DRIVE_MODE_SIGNAL : 73|1@0+ (1,0) [0|1] "" XXX + SG_ GAS_SIGNAL : 86|1@0+ (1,0) [0|1] "" XXX + SG_ COUNTER1 : 123|4@0+ (1,0) [0|15] "" XXX + SG_ CRC2 : 135|8@0+ (1,0) [0|255] "" XXX + SG_ DRIVER_MODE_SIGNAL2 : 161|1@0+ (1,0) [0|1] "" XXX + SG_ DRIVE_MODE_P : 162|1@0+ (1,0) [0|1] "" XXX + SG_ DRIVE_MODE_D : 163|1@0+ (1,0) [0|1] "" XXX + SG_ DRIVE_MODE : 166|2@0+ (1,0) [0|3] "" XXX + SG_ BRAKE_SIGNAL : 176|1@0+ (1,0) [0|1] "" XXX + SG_ COUNTER2 : 187|4@0+ (1,0) [0|15] "" XXX + +BO_ 311 BRAKE: 64 XXX + SG_ CRC1 : 71|8@0+ (1,0) [0|255] "" XXX + SG_ COUNTER1 : 123|4@0+ (1,0) [0|15] "" XXX + SG_ CRC2 : 135|8@0+ (1,0) [0|255] "" XXX + SG_ BRAKE_SIGNAL1 : 152|1@0+ (1,0) [0|1] "" XXX + SG_ BRAKE_SIGNAL2 : 155|1@0+ (1,0) [0|1] "" XXX + SG_ COUNTER2 : 187|4@0+ (1,0) [0|15] "" XXX + SG_ CRC3 : 199|8@0+ (1,0) [0|255] "" XXX + SG_ BRAKE_PRESSURE : 207|13@0+ (1,0) [0|8191] "" XXX + SG_ COUNTER3 : 251|4@0+ (1,0) [0|15] "" XXX + SG_ CRC4 : 263|8@0+ (1,0) [0|255] "" XXX + +BO_ 315 WHEEL_SPEEDS: 64 XXX + SG_ FRONT_CRC : 7|8@0+ (1,0) [0|255] "" XXX + SG_ FRONT_LEFT_WHEEL_SPEED : 12|13@0+ (0.05924739,0) [0|8191] "Kph" XXX + SG_ FRONT_RIGHT_WHEEL_SPEED : 28|13@0+ (0.05924739,0) [0|8191] "Kph" XXX + SG_ FRONT_COUNTER : 59|4@0+ (1,0) [0|15] "" XXX + SG_ REAR_CRC : 327|8@0+ (1,0) [0|255] "" XXX + SG_ REAR_LEFT_WHEEL_SPEED : 332|13@0+ (0.05924739,0) [0|8191] "Kph" XXX + SG_ REAR_RIGHT_WHEEL_SPEED : 348|13@0+ (0.05924739,0) [0|8191] "Kph" XXX + SG_ REAR_COUNTER : 379|4@0+ (1,0) [0|15] "" XXX + +BO_ 323 SPEED2: 64 XXX + SG_ NEW_SIGNAL_1 : 71|8@0+ (1,0) [0|255] "" XXX + SG_ SPEED_REAL : 119|8@0+ (1,0) [0|255] "Kph" XXX + SG_ COUNTER : 123|4@0+ (1,0) [0|15] "" XXX + SG_ CRC2 : 135|8@0+ (1,0) [0|255] "" XXX + +BO_ 327 NEW_MSG_147: 64 XXX + +BO_ 347 NEW_MSG_15B: 64 XXX + +BO_ 357 NEW_MSG_165: 8 XXX + +BO_ 367 NEW_MSG_16F: 64 XXX + +BO_ 412 LIGHTS: 16 XXX + SG_ BRAKE_LIGHTS : 24|3@0+ (1,0) [0|7] "" XXX + SG_ RIGHT_TURN_SIGNAL : 30|1@0+ (1,0) [0|1] "ON/OFF ACCORDINGLY LIGHT" XXX + SG_ LEFT_TURN_SIGNAL : 31|1@0+ (1,0) [0|1] "ON/OFF ACCORDINGLY LIGHT" XXX + +BO_ 550 COROLLA_BRAKE_MODULE: 8 XXX + SG_ BRAKE_PRESSURE : 0|9@0+ (1,0) [0|511] "" XXX + SG_ BRAKE_POSITION : 16|9@0+ (1,0) [0|511] "" XXX + SG_ BRAKE_PRESSED : 37|1@0+ (1,0) [0|1] "" XXX + +BO_ 581 NEW_MSG_245: 8 XXX + SG_ IMU_LONGITUDINAL_ACCELERATION : 13|13@0+ (1,0) [0|15] "" XXX + SG_ IMU_LATERAL_ACCELERATION : 29|13@0+ (1,-2718) [0|1] "" XXX + SG_ IMU_YAW : 45|14@0+ (1,-8721) [0|1] "" XXX + +BO_ 649 DRIVE_MODE: 64 XXX + SG_ DRIVE_MODE_ENABLED : 382|1@0+ (1,0) [0|1] "" XXX + SG_ DRIVE_MODE_DISABLED : 383|1@0+ (1,0) [0|1] "" XXX + +BO_ 683 ACC: 64 XXX + SG_ COUNTER1 : 123|4@0+ (1,0) [0|15] "" XXX + SG_ CRC1 : 135|8@0+ (1,0) [0|255] "" XXX + SG_ CAR_DISTANCE_SELECTION : 170|3@0+ (1,0) [0|7] "" XXX + SG_ ACC_SPEED_SELECTION : 183|8@0+ (1,0) [0|255] "Kph" XXX + SG_ COUNTER2 : 187|4@0+ (1,0) [0|15] "" XXX + +BO_ 714 BUTTONS: 8 XXX + SG_ LOCK_DOORS_BUTTON : 16|1@0+ (1,0) [0|1] "" XXX + +BO_ 793 DOOR_DRIVER: 16 XXX + SG_ REQ_REVIEW_CAR_STATE : 16|1@0+ (1,0) [0|1] "" XXX + SG_ DOOR_REAR_RIGHT_OPEN : 19|1@0+ (1,0) [0|1] "" XXX + SG_ DOOR_FRONT_RIGHT_OPEN : 20|1@0+ (1,0) [0|1] "" XXX + SG_ DOOR_REAR_LEFT_OPEN : 21|1@0+ (1,0) [0|1] "" XXX + SG_ DOOR_DRIVER_OPEN : 22|1@0+ (1,0) [0|1] "" XXX + +BO_ 837 DOOR_LOCK_STATES: 16 XXX + SG_ DOOR_LOCK_STATE : 13|1@0+ (1,0) [0|1] "" XXX + SG_ DOOR_LOCK_STATE2 : 34|1@0+ (1,0) [0|1] "" XXX + +BO_ 849 SEATBELT: 16 XXX + SG_ CRC : 7|8@0+ (1,0) [0|255] "" XXX + SG_ SEAT_BELT_DRIVER_STATE : 11|1@0+ (1,0) [0|1] "" XXX + SG_ SEAT_BELT_DRIVER_STATE2 : 24|1@0+ (1,0) [0|1] "" XXX + SG_ COUNTER : 59|4@0+ (1,0) [0|15] "" XXX + +BO_ 1568 BODY_CONTROL_STATE: 8 XXX + SG_ METER_DIMMED : 38|1@0+ (1,0) [0|1] "" XXX + SG_ DOOR_OPEN_RL : 42|1@0+ (1,0) [0|1] "" XXX + SG_ DOOR_OPEN_RR : 43|1@0+ (1,0) [0|1] "" XXX + SG_ DOOR_OPEN_FR : 44|1@0+ (1,0) [0|1] "" XXX + SG_ DOOR_OPEN_FL : 45|1@0+ (1,0) [0|1] "" XXX + SG_ PARKING_BRAKE : 60|1@0+ (1,0) [0|1] "" XXX + SG_ SEATBELT_DRIVER_UNLATCHED : 62|1@0+ (1,0) [0|1] "" XXX + +CM_ SG_ 96 GAS_POSITION "0 - 100%"; +CM_ SG_ 96 BRAKE_SIGNAL "1 = BRAKE PRESSED"; +CM_ SG_ 96 ACC_GAS_POSITION "0 - 100% | WHEN ACC REMAINS INFORMATION"; +CM_ SG_ 147 IMPRECISE_SPEED "lower precision, reverse is positive as well"; +CM_ SG_ 161 STEERING_ANGLE "0 CENTER, NO LEFT / RIGHT SIGNAL"; +CM_ SG_ 161 STEERING_DIRECTION "0 is counterclockwise and 1 is clockwise"; +CM_ SG_ 161 STEERING_TORQUE "Peak identified 3680, 0 = stopped"; +CM_ SG_ 161 AP_REDUCE_DISTANCE_COMMAND "AUTOPILOT STALK"; +CM_ SG_ 161 AP_CANCEL_COMMAND "AUTOPILOT STALK - FRONT MOVEMENT = CANCEL COMMAND"; +CM_ SG_ 161 AP_ENABLE_COMMAND "AUTOPILOT STALK - REAR MOVEMENT = ENABLE COMMAND"; +CM_ SG_ 161 AP_DECREASE_SPEED_COMMAND "AUTOPILOT STALK - MOVEMENT"; +CM_ SG_ 161 AP_INCREASE_SPEED_COMMAND "AUTOPILOT STALK - DOWN MOVEMENT]"; +CM_ SG_ 259 ODD_GAS_POSITION "17 = 0, 253 = FULL, SOMETIMES 4"; +CM_ SG_ 259 SPEED "PRECISE, KPH, DASHBOARD SPEED, BIT LOWER THAN GPS SPEED"; +CM_ SG_ 288 ODD_BRAKE_PRESSURE "ODD BRAKE PRESSURE, NEGATIVE/OFFSET"; +CM_ SG_ 303 DRIVE_MODE_SIGNAL "D/R = 0 | N/P = 1"; +CM_ SG_ 303 GAS_SIGNAL "1 = GAS PRESSED"; +CM_ SG_ 303 DRIVER_MODE_SIGNAL2 "D/R = 1 | N/P=0"; +CM_ SG_ 303 DRIVE_MODE "0 = P | 1 = D | 2 = N | 3 = R (GOOD SIGNAL)"; +CM_ SG_ 303 BRAKE_SIGNAL "1 BRAKE PRESSED"; +CM_ SG_ 311 BRAKE_SIGNAL1 "0 = NO | 1 = BRAKE PRESSED"; +CM_ SG_ 311 BRAKE_SIGNAL2 "0 NO | 1 = BRAKE PRESSED"; +CM_ SG_ 311 BRAKE_PRESSURE "MAX PRESSURE IDENTIFIED = 4184 | 0 = NO PRESSURE"; +CM_ SG_ 315 FRONT_LEFT_WHEEL_SPEED "Based on the car's dashboard speed"; +CM_ SG_ 315 FRONT_RIGHT_WHEEL_SPEED "Based on the car's dashboard speed"; +CM_ SG_ 315 REAR_LEFT_WHEEL_SPEED "Based on the car's dashboard speed"; +CM_ SG_ 315 REAR_RIGHT_WHEEL_SPEED "Based on the car's dashboard speed"; +CM_ SG_ 323 SPEED_REAL "PRECISE, EQUAL GPS SPEED"; +CM_ SG_ 412 BRAKE_LIGHTS "POSSIBLE 3 DIFFERENT LIGHTS"; +CM_ SG_ 412 LEFT_TURN_SIGNAL "ON/OFF ACCORDINGLY LIGHT"; +CM_ BO_ 649 "FRONT"; +CM_ SG_ 649 DRIVE_MODE_ENABLED "DRIVE = 1 | OTHER MODES = 0"; +CM_ SG_ 649 DRIVE_MODE_DISABLED "D = 0 | OTHER MODES = 0"; +CM_ SG_ 683 CAR_DISTANCE_SELECTION "AUTOPILOT CAR DISTANCE SELECTED BY DRIVER, OPTIONS 1, 2, 3, 4"; +CM_ SG_ 714 LOCK_DOORS_BUTTON "1 = PRESSED"; +CM_ SG_ 837 DOOR_LOCK_STATE "0 = LOCKED / 1 = UNLOCKED"; +CM_ SG_ 837 DOOR_LOCK_STATE2 "0 = LOCKED / 1 = UNLOCKED"; +CM_ SG_ 849 SEAT_BELT_DRIVER_STATE "0 = Fastened / 1 = Released"; +CM_ SG_ 849 SEAT_BELT_DRIVER_STATE2 "0 = Fastened / 1 = Released"; diff --git a/opendbc/dbc/gwm_haval_h6_mk3_generated.dbc b/opendbc/dbc/gwm_haval_h6_mk3_generated.dbc new file mode 100644 index 0000000000..8fb6d3b5fd --- /dev/null +++ b/opendbc/dbc/gwm_haval_h6_mk3_generated.dbc @@ -0,0 +1,190 @@ +CM_ "AUTOGENERATED FILE, DO NOT EDIT"; + +CM_ "gwm_haval_h6_mk3.dbc starts here"; +BO_ 96 CAR_OVERALL_SIGNALS2: 64 XXX + SG_ CRC1 : 7|8@0+ (1,0) [0|255] "" XXX + SG_ COUNTER1 : 59|4@0+ (1,0) [0|15] "" XXX + SG_ CRC2 : 71|8@0+ (1,0) [0|255] "" XXX + SG_ GAS_POSITION : 79|8@0+ (0.393700787,0) [0|255] "%" XXX + SG_ BRAKE_SIGNAL : 86|1@0+ (1,0) [0|1] "" XXX + SG_ ACC_GAS_POSITION : 103|8@0+ (0.393700787,0) [0|255] "%" XXX + SG_ COUNTER2 : 123|4@0+ (1,0) [0|15] "" XXX + SG_ CRC3 : 135|8@0+ (1,0) [0|255] "" XXX + SG_ COUNTER3 : 187|4@0+ (1,0) [0|15] "" XXX + +BO_ 147 IMPRECISE_SPEED_INFORMATION: 8 XXX + SG_ IMPRECISE_SPEED : 15|8@0+ (3.5,0) [0|255] "kph" XXX + SG_ COUNTER : 59|4@0+ (1,0) [0|15] "" XXX + +BO_ 161 STEER_AND_AP_STALK: 8 XXX + SG_ CRC : 7|8@0+ (1,0) [0|255] "" XXX + SG_ STEERING_ANGLE : 13|13@0+ (0.05,0) [0|65535] "degs" XXX + SG_ STEERING_DIRECTION : 16|1@0+ (1,0) [0|1] "" XXX + SG_ STEERING_TORQUE : 29|12@0+ (1,0) [0|4095] "" XXX + SG_ EPS_ACTUATING : 33|2@0+ (1,0) [0|3] "" XXX + SG_ AP_REDUCE_DISTANCE_COMMAND : 44|1@0+ (1,0) [0|1] "" XXX + SG_ AP_INCREASE_DISTANCE_COMMAND : 45|1@0+ (1,0) [0|1] "AUTOPILOT_STALK" XXX + SG_ AP_CANCEL_COMMAND : 46|1@0+ (1,0) [0|1] "" XXX + SG_ AP_ENABLE_COMMAND : 47|1@0+ (1,0) [0|1] "" XXX + SG_ AP_DECREASE_SPEED_COMMAND : 50|1@0+ (1,0) [0|1] "" XXX + SG_ AP_INCREASE_SPEED_COMMAND : 51|1@0+ (1,0) [0|1] "" XXX + SG_ COUNTER : 59|4@0+ (1,0) [0|255] "" XXX + +BO_ 259 SPEED: 64 XXX + SG_ CRC : 199|8@0+ (1,0) [0|255] "" XXX + SG_ ODD_GAS_POSITION : 231|8@0+ (1,0) [0|255] "" XXX + SG_ SPEED : 239|8@0+ (1,0) [0|255] "Khp" XXX + SG_ COUNTER2 : 251|4@0+ (1,0) [0|15] "" XXX + +BO_ 273 UNDEFINED_2: 8 XXX + SG_ CRC : 7|8@0+ (1,0) [0|255] "" XXX + SG_ COUNTER : 59|4@0+ (1,0) [0|15] "" XXX + +BO_ 288 BRAKE2: 64 XXX + SG_ CRC : 7|8@0+ (1,0) [0|255] "" XXX + SG_ ODD_BRAKE_PRESSURE : 39|8@0+ (1,-27) [0|255] "" XXX + SG_ COUNTER : 59|4@0+ (1,0) [0|15] "" XXX + +BO_ 303 CAR_OVERALL_SIGNALS: 64 XXX + SG_ CRC1 : 71|8@0+ (1,0) [0|255] "" XXX + SG_ DRIVE_MODE_SIGNAL : 73|1@0+ (1,0) [0|1] "" XXX + SG_ GAS_SIGNAL : 86|1@0+ (1,0) [0|1] "" XXX + SG_ COUNTER1 : 123|4@0+ (1,0) [0|15] "" XXX + SG_ CRC2 : 135|8@0+ (1,0) [0|255] "" XXX + SG_ DRIVER_MODE_SIGNAL2 : 161|1@0+ (1,0) [0|1] "" XXX + SG_ DRIVE_MODE_P : 162|1@0+ (1,0) [0|1] "" XXX + SG_ DRIVE_MODE_D : 163|1@0+ (1,0) [0|1] "" XXX + SG_ DRIVE_MODE : 166|2@0+ (1,0) [0|3] "" XXX + SG_ BRAKE_SIGNAL : 176|1@0+ (1,0) [0|1] "" XXX + SG_ COUNTER2 : 187|4@0+ (1,0) [0|15] "" XXX + +BO_ 311 BRAKE: 64 XXX + SG_ CRC1 : 71|8@0+ (1,0) [0|255] "" XXX + SG_ COUNTER1 : 123|4@0+ (1,0) [0|15] "" XXX + SG_ CRC2 : 135|8@0+ (1,0) [0|255] "" XXX + SG_ BRAKE_SIGNAL1 : 152|1@0+ (1,0) [0|1] "" XXX + SG_ BRAKE_SIGNAL2 : 155|1@0+ (1,0) [0|1] "" XXX + SG_ COUNTER2 : 187|4@0+ (1,0) [0|15] "" XXX + SG_ CRC3 : 199|8@0+ (1,0) [0|255] "" XXX + SG_ BRAKE_PRESSURE : 207|13@0+ (1,0) [0|8191] "" XXX + SG_ COUNTER3 : 251|4@0+ (1,0) [0|15] "" XXX + SG_ CRC4 : 263|8@0+ (1,0) [0|255] "" XXX + +BO_ 315 WHEEL_SPEEDS: 64 XXX + SG_ FRONT_CRC : 7|8@0+ (1,0) [0|255] "" XXX + SG_ FRONT_LEFT_WHEEL_SPEED : 12|13@0+ (0.05924739,0) [0|8191] "Kph" XXX + SG_ FRONT_RIGHT_WHEEL_SPEED : 28|13@0+ (0.05924739,0) [0|8191] "Kph" XXX + SG_ FRONT_COUNTER : 59|4@0+ (1,0) [0|15] "" XXX + SG_ REAR_CRC : 327|8@0+ (1,0) [0|255] "" XXX + SG_ REAR_LEFT_WHEEL_SPEED : 332|13@0+ (0.05924739,0) [0|8191] "Kph" XXX + SG_ REAR_RIGHT_WHEEL_SPEED : 348|13@0+ (0.05924739,0) [0|8191] "Kph" XXX + SG_ REAR_COUNTER : 379|4@0+ (1,0) [0|15] "" XXX + +BO_ 323 SPEED2: 64 XXX + SG_ NEW_SIGNAL_1 : 71|8@0+ (1,0) [0|255] "" XXX + SG_ SPEED_REAL : 119|8@0+ (1,0) [0|255] "Kph" XXX + SG_ COUNTER : 123|4@0+ (1,0) [0|15] "" XXX + SG_ CRC2 : 135|8@0+ (1,0) [0|255] "" XXX + +BO_ 327 NEW_MSG_147: 64 XXX + +BO_ 347 NEW_MSG_15B: 64 XXX + +BO_ 357 NEW_MSG_165: 8 XXX + +BO_ 367 NEW_MSG_16F: 64 XXX + +BO_ 412 LIGHTS: 16 XXX + SG_ BRAKE_LIGHTS : 24|3@0+ (1,0) [0|7] "" XXX + SG_ RIGHT_TURN_SIGNAL : 30|1@0+ (1,0) [0|1] "ON/OFF ACCORDINGLY LIGHT" XXX + SG_ LEFT_TURN_SIGNAL : 31|1@0+ (1,0) [0|1] "ON/OFF ACCORDINGLY LIGHT" XXX + +BO_ 550 COROLLA_BRAKE_MODULE: 8 XXX + SG_ BRAKE_PRESSURE : 0|9@0+ (1,0) [0|511] "" XXX + SG_ BRAKE_POSITION : 16|9@0+ (1,0) [0|511] "" XXX + SG_ BRAKE_PRESSED : 37|1@0+ (1,0) [0|1] "" XXX + +BO_ 581 NEW_MSG_245: 8 XXX + SG_ IMU_LONGITUDINAL_ACCELERATION : 13|13@0+ (1,0) [0|15] "" XXX + SG_ IMU_LATERAL_ACCELERATION : 29|13@0+ (1,-2718) [0|1] "" XXX + SG_ IMU_YAW : 45|14@0+ (1,-8721) [0|1] "" XXX + +BO_ 649 DRIVE_MODE: 64 XXX + SG_ DRIVE_MODE_ENABLED : 382|1@0+ (1,0) [0|1] "" XXX + SG_ DRIVE_MODE_DISABLED : 383|1@0+ (1,0) [0|1] "" XXX + +BO_ 683 ACC: 64 XXX + SG_ COUNTER1 : 123|4@0+ (1,0) [0|15] "" XXX + SG_ CRC1 : 135|8@0+ (1,0) [0|255] "" XXX + SG_ CAR_DISTANCE_SELECTION : 170|3@0+ (1,0) [0|7] "" XXX + SG_ ACC_SPEED_SELECTION : 183|8@0+ (1,0) [0|255] "Kph" XXX + SG_ COUNTER2 : 187|4@0+ (1,0) [0|15] "" XXX + +BO_ 714 BUTTONS: 8 XXX + SG_ LOCK_DOORS_BUTTON : 16|1@0+ (1,0) [0|1] "" XXX + +BO_ 793 DOOR_DRIVER: 16 XXX + SG_ REQ_REVIEW_CAR_STATE : 16|1@0+ (1,0) [0|1] "" XXX + SG_ DOOR_REAR_RIGHT_OPEN : 19|1@0+ (1,0) [0|1] "" XXX + SG_ DOOR_FRONT_RIGHT_OPEN : 20|1@0+ (1,0) [0|1] "" XXX + SG_ DOOR_REAR_LEFT_OPEN : 21|1@0+ (1,0) [0|1] "" XXX + SG_ DOOR_DRIVER_OPEN : 22|1@0+ (1,0) [0|1] "" XXX + +BO_ 837 DOOR_LOCK_STATES: 16 XXX + SG_ DOOR_LOCK_STATE : 13|1@0+ (1,0) [0|1] "" XXX + SG_ DOOR_LOCK_STATE2 : 34|1@0+ (1,0) [0|1] "" XXX + +BO_ 849 SEATBELT: 16 XXX + SG_ CRC : 7|8@0+ (1,0) [0|255] "" XXX + SG_ SEAT_BELT_DRIVER_STATE : 11|1@0+ (1,0) [0|1] "" XXX + SG_ SEAT_BELT_DRIVER_STATE2 : 24|1@0+ (1,0) [0|1] "" XXX + SG_ COUNTER : 59|4@0+ (1,0) [0|15] "" XXX + +BO_ 1568 BODY_CONTROL_STATE: 8 XXX + SG_ METER_DIMMED : 38|1@0+ (1,0) [0|1] "" XXX + SG_ DOOR_OPEN_RL : 42|1@0+ (1,0) [0|1] "" XXX + SG_ DOOR_OPEN_RR : 43|1@0+ (1,0) [0|1] "" XXX + SG_ DOOR_OPEN_FR : 44|1@0+ (1,0) [0|1] "" XXX + SG_ DOOR_OPEN_FL : 45|1@0+ (1,0) [0|1] "" XXX + SG_ PARKING_BRAKE : 60|1@0+ (1,0) [0|1] "" XXX + SG_ SEATBELT_DRIVER_UNLATCHED : 62|1@0+ (1,0) [0|1] "" XXX + +CM_ SG_ 96 GAS_POSITION "0 - 100%"; +CM_ SG_ 96 BRAKE_SIGNAL "1 = BRAKE PRESSED"; +CM_ SG_ 96 ACC_GAS_POSITION "0 - 100% | WHEN ACC REMAINS INFORMATION"; +CM_ SG_ 147 IMPRECISE_SPEED "lower precision, reverse is positive as well"; +CM_ SG_ 161 STEERING_ANGLE "0 CENTER, NO LEFT / RIGHT SIGNAL"; +CM_ SG_ 161 STEERING_DIRECTION "0 is counterclockwise and 1 is clockwise"; +CM_ SG_ 161 STEERING_TORQUE "Peak identified 3680, 0 = stopped"; +CM_ SG_ 161 AP_REDUCE_DISTANCE_COMMAND "AUTOPILOT STALK"; +CM_ SG_ 161 AP_CANCEL_COMMAND "AUTOPILOT STALK - FRONT MOVEMENT = CANCEL COMMAND"; +CM_ SG_ 161 AP_ENABLE_COMMAND "AUTOPILOT STALK - REAR MOVEMENT = ENABLE COMMAND"; +CM_ SG_ 161 AP_DECREASE_SPEED_COMMAND "AUTOPILOT STALK - MOVEMENT"; +CM_ SG_ 161 AP_INCREASE_SPEED_COMMAND "AUTOPILOT STALK - DOWN MOVEMENT]"; +CM_ SG_ 259 ODD_GAS_POSITION "17 = 0, 253 = FULL, SOMETIMES 4"; +CM_ SG_ 259 SPEED "PRECISE, KPH, DASHBOARD SPEED, BIT LOWER THAN GPS SPEED"; +CM_ SG_ 288 ODD_BRAKE_PRESSURE "ODD BRAKE PRESSURE, NEGATIVE/OFFSET"; +CM_ SG_ 303 DRIVE_MODE_SIGNAL "D/R = 0 | N/P = 1"; +CM_ SG_ 303 GAS_SIGNAL "1 = GAS PRESSED"; +CM_ SG_ 303 DRIVER_MODE_SIGNAL2 "D/R = 1 | N/P=0"; +CM_ SG_ 303 DRIVE_MODE "0 = P | 1 = D | 2 = N | 3 = R (GOOD SIGNAL)"; +CM_ SG_ 303 BRAKE_SIGNAL "1 BRAKE PRESSED"; +CM_ SG_ 311 BRAKE_SIGNAL1 "0 = NO | 1 = BRAKE PRESSED"; +CM_ SG_ 311 BRAKE_SIGNAL2 "0 NO | 1 = BRAKE PRESSED"; +CM_ SG_ 311 BRAKE_PRESSURE "MAX PRESSURE IDENTIFIED = 4184 | 0 = NO PRESSURE"; +CM_ SG_ 315 FRONT_LEFT_WHEEL_SPEED "Based on the car's dashboard speed"; +CM_ SG_ 315 FRONT_RIGHT_WHEEL_SPEED "Based on the car's dashboard speed"; +CM_ SG_ 315 REAR_LEFT_WHEEL_SPEED "Based on the car's dashboard speed"; +CM_ SG_ 315 REAR_RIGHT_WHEEL_SPEED "Based on the car's dashboard speed"; +CM_ SG_ 323 SPEED_REAL "PRECISE, EQUAL GPS SPEED"; +CM_ SG_ 412 BRAKE_LIGHTS "POSSIBLE 3 DIFFERENT LIGHTS"; +CM_ SG_ 412 LEFT_TURN_SIGNAL "ON/OFF ACCORDINGLY LIGHT"; +CM_ BO_ 649 "FRONT"; +CM_ SG_ 649 DRIVE_MODE_ENABLED "DRIVE = 1 | OTHER MODES = 0"; +CM_ SG_ 649 DRIVE_MODE_DISABLED "D = 0 | OTHER MODES = 0"; +CM_ SG_ 683 CAR_DISTANCE_SELECTION "AUTOPILOT CAR DISTANCE SELECTED BY DRIVER, OPTIONS 1, 2, 3, 4"; +CM_ SG_ 714 LOCK_DOORS_BUTTON "1 = PRESSED"; +CM_ SG_ 837 DOOR_LOCK_STATE "0 = LOCKED / 1 = UNLOCKED"; +CM_ SG_ 837 DOOR_LOCK_STATE2 "0 = LOCKED / 1 = UNLOCKED"; +CM_ SG_ 849 SEAT_BELT_DRIVER_STATE "0 = Fastened / 1 = Released"; +CM_ SG_ 849 SEAT_BELT_DRIVER_STATE2 "0 = Fastened / 1 = Released";