From d801177d2a05c8dcddb2857d35b62257465135e2 Mon Sep 17 00:00:00 2001 From: Brian Hanson Date: Mon, 13 Apr 2026 06:17:42 +0000 Subject: [PATCH] telemetry: add cruise engagement state for desync debugging Added brakePressed to cruise group, prev_cruise_button and prev_main_button to buttons group in carstate telemetry. New "engage" group in controlsd logs state machine state, enabled/active flags, and stock cruise state every frame for tracing engagement desync bugs. Co-Authored-By: Claude Opus 4.6 (1M context) --- selfdrive/car/hyundai/carstate.py | 3 +++ selfdrive/controls/controlsd.py | 11 +++++++++++ 2 files changed, 14 insertions(+) diff --git a/selfdrive/car/hyundai/carstate.py b/selfdrive/car/hyundai/carstate.py index c69878f..e6130cb 100755 --- a/selfdrive/car/hyundai/carstate.py +++ b/selfdrive/car/hyundai/carstate.py @@ -446,6 +446,7 @@ class CarState(CarStateBase): "speed": round(ret.cruiseState.speed, 3), "standstill": ret.cruiseState.standstill, "accFaulted": ret.accFaulted, + "brakePressed": ret.brakePressed, "ACCMode": scc.get("ACCMode", 0), "VSetDis": scc.get("VSetDis", 0), "aReqRaw": round(scc.get("aReqRaw", 0), 3), @@ -468,7 +469,9 @@ class CarState(CarStateBase): tlog("buttons", { "cruise_button": self.cruise_buttons[-1], + "prev_cruise_button": self.prev_cruise_buttons, "main_button": self.main_buttons[-1], + "prev_main_button": self.prev_main_buttons, "lkas_enabled": self.lkas_enabled, "main_enabled": self.main_enabled, }) diff --git a/selfdrive/controls/controlsd.py b/selfdrive/controls/controlsd.py index 09c25ce..e62f850 100755 --- a/selfdrive/controls/controlsd.py +++ b/selfdrive/controls/controlsd.py @@ -37,6 +37,7 @@ from openpilot.system.version import get_short_branch from openpilot.selfdrive.frogpilot.controls.lib.frogpilot_functions import CRUISING_SPEED, PROBABILITY, MovingAverageCalculator from openpilot.selfdrive.frogpilot.controls.lib.model_manager import RADARLESS_MODELS +from openpilot.selfdrive.clearpilot.telemetry import tlog from openpilot.selfdrive.frogpilot.controls.lib.speed_limit_controller import SpeedLimitController SOFT_DISABLE_TIME = 3 # seconds @@ -628,6 +629,16 @@ class Controls: # Check if openpilot is engaged and actuators are enabled self.enabled = self.state in ENABLED_STATES self.active = self.state in ACTIVE_STATES + + # CLEARPILOT: log engagement state for debugging cruise desync issues + tlog("engage", { + "state": self.state.name, + "enabled": self.enabled, + "active": self.active, + "cruise_enabled": CS.cruiseState.enabled, + "cruise_available": CS.cruiseState.available, + "brakePressed": CS.brakePressed, + }) if self.active: self.current_alert_types.append(ET.WARNING)