From 7ca1d6cacaeb0f0a914f08458c1a5bb1dc725b4e Mon Sep 17 00:00:00 2001 From: firestar5683 <168790843+firestar5683@users.noreply.github.com> Date: Mon, 6 Apr 2026 19:14:44 -0500 Subject: [PATCH] Merry Crisis --- opendbc_repo/opendbc/car/chrysler/carstate.py | 13 +++++++++---- .../opendbc/car/tests/test_car_interfaces.py | 9 +++++++++ 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/opendbc_repo/opendbc/car/chrysler/carstate.py b/opendbc_repo/opendbc/car/chrysler/carstate.py index 24cc24eb..19850326 100644 --- a/opendbc_repo/opendbc/car/chrysler/carstate.py +++ b/opendbc_repo/opendbc/car/chrysler/carstate.py @@ -30,6 +30,14 @@ class CarState(CarStateBase): self.lkas_button = 0 + @staticmethod + def get_lkas_button(pt_signals, is_ram: bool) -> bool: + if is_ram: + return bool(pt_signals.get("Center_Stack_1", {}).get("LKAS_Button", 0) or + pt_signals.get("Center_Stack_2", {}).get("LKAS_Button", 0)) + + return pt_signals.get("TRACTION_BUTTON", {}).get("TOGGLE_LKAS", 0) == 1 + def update(self, can_parsers, starpilot_toggles) -> structs.CarState: cp = can_parsers[Bus.pt] cp_cam = can_parsers[Bus.cam] @@ -106,10 +114,7 @@ class CarState(CarStateBase): fp_ret = custom.StarPilotCarState.new_message() self.prev_lkas_button = self.lkas_button - if self.CP.carFingerprint in RAM_CARS: - self.lkas_button = cp.vl["Center_Stack_1"]["LKAS_Button"] or cp.vl["Center_Stack_2"]["LKAS_Button"] - else: - self.lkas_button = cp.vl["TRACTION_BUTTON"]["TOGGLE_LKAS"] == 1 + self.lkas_button = self.get_lkas_button(cp.vl, self.CP.carFingerprint in RAM_CARS) buttonEvents += [ *create_button_events(self.lkas_button, self.prev_lkas_button, {1: ButtonType.lkas}), diff --git a/opendbc_repo/opendbc/car/tests/test_car_interfaces.py b/opendbc_repo/opendbc/car/tests/test_car_interfaces.py index 2a36ff75..05746c4c 100644 --- a/opendbc_repo/opendbc/car/tests/test_car_interfaces.py +++ b/opendbc_repo/opendbc/car/tests/test_car_interfaces.py @@ -8,6 +8,7 @@ from typing import Any from opendbc.car import DT_CTRL, CanData, structs from opendbc.car.car_helpers import interfaces +from opendbc.car.chrysler.carstate import CarState as ChryslerCarState from opendbc.car.fingerprints import FW_VERSIONS from opendbc.car.fw_versions import FW_QUERY_CONFIGS from opendbc.car.gm.values import CAR as GM_CAR, CanBus as GMCanBus, GMSafetyFlags @@ -58,6 +59,14 @@ def get_fuzzy_car_interface(car_name: str, draw: DrawType) -> CarInterfaceBase: class TestCarInterfaces: + def test_chrysler_missing_lkas_signal_defaults_unpressed(self): + assert not ChryslerCarState.get_lkas_button({"TRACTION_BUTTON": {"TRACTION_OFF": 1}}, is_ram=False) + assert ChryslerCarState.get_lkas_button({"TRACTION_BUTTON": {"TOGGLE_LKAS": 1}}, is_ram=False) + assert ChryslerCarState.get_lkas_button({ + "Center_Stack_1": {"LKAS_Button": 0}, + "Center_Stack_2": {"LKAS_Button": 1}, + }, is_ram=True) + def test_gm_bolt_gen2_pedal_safety_flags(self): CarInterface = interfaces[GM_CAR.CHEVROLET_BOLT_ACC_2022_2023_PEDAL]