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) <noreply@anthropic.com>
This commit is contained in:
2026-04-13 06:17:42 +00:00
parent 77b2ecef20
commit d801177d2a
2 changed files with 14 additions and 0 deletions

View File

@@ -446,6 +446,7 @@ class CarState(CarStateBase):
"speed": round(ret.cruiseState.speed, 3), "speed": round(ret.cruiseState.speed, 3),
"standstill": ret.cruiseState.standstill, "standstill": ret.cruiseState.standstill,
"accFaulted": ret.accFaulted, "accFaulted": ret.accFaulted,
"brakePressed": ret.brakePressed,
"ACCMode": scc.get("ACCMode", 0), "ACCMode": scc.get("ACCMode", 0),
"VSetDis": scc.get("VSetDis", 0), "VSetDis": scc.get("VSetDis", 0),
"aReqRaw": round(scc.get("aReqRaw", 0), 3), "aReqRaw": round(scc.get("aReqRaw", 0), 3),
@@ -468,7 +469,9 @@ class CarState(CarStateBase):
tlog("buttons", { tlog("buttons", {
"cruise_button": self.cruise_buttons[-1], "cruise_button": self.cruise_buttons[-1],
"prev_cruise_button": self.prev_cruise_buttons,
"main_button": self.main_buttons[-1], "main_button": self.main_buttons[-1],
"prev_main_button": self.prev_main_buttons,
"lkas_enabled": self.lkas_enabled, "lkas_enabled": self.lkas_enabled,
"main_enabled": self.main_enabled, "main_enabled": self.main_enabled,
}) })

View File

@@ -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.frogpilot_functions import CRUISING_SPEED, PROBABILITY, MovingAverageCalculator
from openpilot.selfdrive.frogpilot.controls.lib.model_manager import RADARLESS_MODELS 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 from openpilot.selfdrive.frogpilot.controls.lib.speed_limit_controller import SpeedLimitController
SOFT_DISABLE_TIME = 3 # seconds SOFT_DISABLE_TIME = 3 # seconds
@@ -628,6 +629,16 @@ class Controls:
# Check if openpilot is engaged and actuators are enabled # Check if openpilot is engaged and actuators are enabled
self.enabled = self.state in ENABLED_STATES self.enabled = self.state in ENABLED_STATES
self.active = self.state in ACTIVE_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: if self.active:
self.current_alert_types.append(ET.WARNING) self.current_alert_types.append(ET.WARNING)