From 837c14e0810e80e3beb26dcc6f39908836981555 Mon Sep 17 00:00:00 2001 From: Brian Hanson Date: Sun, 3 May 2026 22:45:04 -0500 Subject: [PATCH] register clearpilot memory params and seed defaults in manager_init MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Scaffolding for the upcoming UI port. Registers the keys the new C++ UI and SpeedState daemon will read/write, and seeds /dev/shm/params defaults at manager start so first-readers don't see missing keys before writers spin up. Keys registered: CarIsMetric, ClearpilotCruiseWarning, ClearpilotCruiseWarningSpeed, ClearpilotHasSpeed, ClearpilotIsMetric, ClearpilotPlayDing, ClearpilotShowHealthMetrics, ClearpilotSpeedDisplay, ClearpilotSpeedLimitDisplay, ClearpilotSpeedUnit, DashcamFrames, DashcamShutdown, DashcamState, IsDaylight, ModelFps, ModelStandby, ModelStandbyTs, ScreenRecorderDebug, ShutdownTouchReset, TelemetryEnabled, VpnEnabled. PERSISTENT registration here is purely a no-op placeholder: the actual storage is /dev/shm/params (tmpfs), which clears on every reboot regardless. Bench-mode keys (Bench*, ClpUiState, LogDirInitialized) not registered yet — they'll come with their respective features. --- common/params.cc | 24 ++++++++++++++++++++++++ selfdrive/manager/manager.py | 26 ++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) diff --git a/common/params.cc b/common/params.cc index 13da6a0..cce31fb 100755 --- a/common/params.cc +++ b/common/params.cc @@ -243,6 +243,30 @@ std::unordered_map keys = { {"CPTLkasButtonAction", PERSISTENT}, {"ScreenDisplayMode", PERSISTENT}, + + // CLEARPILOT memory params (live at /dev/shm/params; tmpfs is volatile so + // these reset on reboot regardless of registration flag). + {"CarIsMetric", PERSISTENT}, + {"ClearpilotCruiseWarning", PERSISTENT}, + {"ClearpilotCruiseWarningSpeed", PERSISTENT}, + {"ClearpilotHasSpeed", PERSISTENT}, + {"ClearpilotIsMetric", PERSISTENT}, + {"ClearpilotPlayDing", PERSISTENT}, + {"ClearpilotShowHealthMetrics", PERSISTENT}, + {"ClearpilotSpeedDisplay", PERSISTENT}, + {"ClearpilotSpeedLimitDisplay", PERSISTENT}, + {"ClearpilotSpeedUnit", PERSISTENT}, + {"DashcamFrames", PERSISTENT}, + {"DashcamShutdown", PERSISTENT}, + {"DashcamState", PERSISTENT}, + {"IsDaylight", PERSISTENT}, + {"ModelFps", PERSISTENT}, + {"ModelStandby", PERSISTENT}, + {"ModelStandbyTs", PERSISTENT}, + {"ScreenRecorderDebug", PERSISTENT}, + {"ShutdownTouchReset", PERSISTENT}, + {"TelemetryEnabled", PERSISTENT}, + {"VpnEnabled", PERSISTENT}, {"RadarDist", PERSISTENT}, {"ModelDist", PERSISTENT}, diff --git a/selfdrive/manager/manager.py b/selfdrive/manager/manager.py index 70b6487..101f65d 100755 --- a/selfdrive/manager/manager.py +++ b/selfdrive/manager/manager.py @@ -301,6 +301,32 @@ def manager_init(frogpilot_functions) -> None: else: params_storage.put(k, params.get(k)) + # CLEARPILOT memory-param defaults. /dev/shm/params is on tmpfs so these + # reset on every boot anyway; we still set them so first-readers don't see + # missing keys before the writer process has spun up. + params_memory = Params("/dev/shm/params") + for k, v in [ + ("CarIsMetric", "0"), + ("ClearpilotCruiseWarning", ""), + ("ClearpilotCruiseWarningSpeed", ""), + ("ClearpilotHasSpeed", "0"), + ("ClearpilotIsMetric", "0"), + ("ClearpilotPlayDing", "0"), + ("ClearpilotSpeedDisplay", ""), + ("ClearpilotSpeedLimitDisplay", "0"), + ("ClearpilotSpeedUnit", "mph"), + ("DashcamFrames", "0"), + ("DashcamShutdown", "0"), + ("DashcamState", "stopped"), + ("ModelFps", "20"), + ("ModelStandby", "0"), + ("ModelStandbyTs", "0"), + ("ShutdownTouchReset", "0"), + ("TelemetryEnabled", "0"), + ("VpnEnabled", "1"), + ]: + params_memory.put(k, v) + # Create folders needed for msgq try: os.mkdir("/dev/shm")