From 07c7f009cdb2992252f0a97ac319062c7306c7b5 Mon Sep 17 00:00:00 2001 From: Rick Lan Date: Tue, 1 Apr 2025 11:19:57 +0800 Subject: [PATCH] Hide HUD - init --- common/params_keys.h | 1 + selfdrive/ui/qt/offroad/dp_panel.cc | 3 +++ selfdrive/ui/qt/onroad/annotated_camera.cc | 12 +++++++++--- selfdrive/ui/ui.cc | 1 + selfdrive/ui/ui.h | 1 + system/manager/manager.py | 1 + 6 files changed, 16 insertions(+), 3 deletions(-) diff --git a/common/params_keys.h b/common/params_keys.h index b576f1a97..727afc395 100644 --- a/common/params_keys.h +++ b/common/params_keys.h @@ -119,4 +119,5 @@ inline static std::unordered_map keys = { {"Version", PERSISTENT}, {"dp_device_last_log", CLEAR_ON_MANAGER_START}, {"dp_device_reset_conf", CLEAR_ON_MANAGER_START}, + {"dp_ui_hide_hud_speed_kph", PERSISTENT}, }; diff --git a/selfdrive/ui/qt/offroad/dp_panel.cc b/selfdrive/ui/qt/offroad/dp_panel.cc index 548b02be5..f34781077 100644 --- a/selfdrive/ui/qt/offroad/dp_panel.cc +++ b/selfdrive/ui/qt/offroad/dp_panel.cc @@ -173,6 +173,7 @@ void DPPanel::add_ui_toggles() { "", }, }; + auto hide_hud = new ParamSpinBoxControl("dp_ui_hide_hud_speed_kph", tr("Hide HUD When Moves above:"), tr("To prevent screen burn-in, hide Speed, MAX Speed, and Steering/DM Icons when the car moves.\nOff = Stock Behavior\n1 km/h ≈ 0.6 mph"), "", 0, 120, 5, tr(" km/h"), tr("Off")); QWidget *label = nullptr; bool has_toggle = false; @@ -181,6 +182,8 @@ void DPPanel::add_ui_toggles() { if (param.isEmpty()) { label = new LabelControl(title, ""); addItem(label); + addItem(hide_hud); + has_toggle = true; continue; } diff --git a/selfdrive/ui/qt/onroad/annotated_camera.cc b/selfdrive/ui/qt/onroad/annotated_camera.cc index f504ad69f..6491a3bf2 100644 --- a/selfdrive/ui/qt/onroad/annotated_camera.cc +++ b/selfdrive/ui/qt/onroad/annotated_camera.cc @@ -130,9 +130,15 @@ void AnnotatedCameraWidget::paintGL() { painter.setPen(Qt::NoPen); model.draw(painter, rect()); - dmon.draw(painter, rect()); - hud.updateState(*s); - hud.draw(painter, rect()); + bool hide_hud = s->scene.dp_ui_hide_hud_speed_kph > 0 && sm["carState"].getCarState().getVEgo() > s->scene.dp_ui_hide_hud_speed_kph * 0.278; + if (!hide_hud) { + dmon.draw(painter, rect()); + hud.updateState(*s); + hud.draw(painter, rect()); + experimental_btn->setVisible(true); + } else { + experimental_btn->setVisible(false); + } double cur_draw_t = millis_since_boot(); double dt = cur_draw_t - prev_draw_t; diff --git a/selfdrive/ui/ui.cc b/selfdrive/ui/ui.cc index ec3d40961..833059792 100644 --- a/selfdrive/ui/ui.cc +++ b/selfdrive/ui/ui.cc @@ -65,6 +65,7 @@ static void update_state(UIState *s) { void ui_update_params(UIState *s) { auto params = Params(); s->scene.is_metric = params.getBool("IsMetric"); + s->scene.dp_ui_hide_hud_speed_kph = std::atoi(params.get("dp_ui_hide_hud_speed_kph").c_str()); } void UIState::updateStatus() { diff --git a/selfdrive/ui/ui.h b/selfdrive/ui/ui.h index 6ff67cacd..a22a2c8f9 100644 --- a/selfdrive/ui/ui.h +++ b/selfdrive/ui/ui.h @@ -60,6 +60,7 @@ typedef struct UIScene { float light_sensor = -1; bool started, ignition, is_metric; uint64_t started_frame; + int dp_ui_hide_hud_speed_kph = 0; } UIScene; class UIState : public QObject { diff --git a/system/manager/manager.py b/system/manager/manager.py index 9fe81947f..af74d433a 100755 --- a/system/manager/manager.py +++ b/system/manager/manager.py @@ -41,6 +41,7 @@ def manager_init() -> None: ("OpenpilotEnabledToggle", "1"), ("LongitudinalPersonality", str(log.LongitudinalPersonality.standard)), ("DisableLogging", "0"), + ("dp_ui_hide_hud_speed_kph", "0"), ] if params.get_bool("RecordFrontLock"):