From 037bf886b83729d657653530aa221e023108e8e6 Mon Sep 17 00:00:00 2001 From: Rick Lan Date: Wed, 16 Apr 2025 22:51:14 +0800 Subject: [PATCH] Audiable Alert Mode - 2025-05-28 --- common/params_keys.h | 1 + selfdrive/ui/qt/offroad/dp_panel.cc | 9 +++++++++ selfdrive/ui/soundd.py | 10 ++++++++++ system/manager/manager.py | 1 + 4 files changed, 21 insertions(+) diff --git a/common/params_keys.h b/common/params_keys.h index b576f1a97..adb8b3748 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_device_audible_alert_mode", PERSISTENT}, }; diff --git a/selfdrive/ui/qt/offroad/dp_panel.cc b/selfdrive/ui/qt/offroad/dp_panel.cc index 548b02be5..05b71394f 100644 --- a/selfdrive/ui/qt/offroad/dp_panel.cc +++ b/selfdrive/ui/qt/offroad/dp_panel.cc @@ -206,6 +206,11 @@ void DPPanel::add_device_toggles() { "", }, }; + std::vector audible_alert_mode_texts{tr("Std."), tr("Warning"), tr("Off")}; + ButtonParamControl* audible_alert_mode_setting = new ButtonParamControl("dp_device_audible_alert_mode", tr("Audible Alert Mode"), + tr("Warning - Only emits sound when there is a warning.\nOff - Does not emit any sound at all."), + "", + audible_alert_mode_texts); QWidget *label = nullptr; bool has_toggle = false; @@ -224,6 +229,10 @@ void DPPanel::add_device_toggles() { addItem(toggle); toggles[param.toStdString()] = toggle; } + if !(getenv("DISABLE_DRIVER")) { // lite check + addItem(audible_alert_mode_setting); + has_toggle = true; + } // If no toggles were added, hide the label if (!has_toggle && label) { diff --git a/selfdrive/ui/soundd.py b/selfdrive/ui/soundd.py index 8b5fc8bd0..d231fb4a6 100644 --- a/selfdrive/ui/soundd.py +++ b/selfdrive/ui/soundd.py @@ -10,6 +10,7 @@ from openpilot.common.filter_simple import FirstOrderFilter from openpilot.common.realtime import Ratekeeper from openpilot.common.retry import retry from openpilot.common.swaglog import cloudlog +from openpilot.common.params import Params from openpilot.system import micd @@ -62,6 +63,11 @@ class Soundd: self.spl_filter_weighted = FirstOrderFilter(0, 2.5, FILTER_DT, initialized=False) + try: + self._dp_device_audible_alert_mode = int(Params().get("dp_device_audible_alert_mode")) + except: + self._dp_device_audible_alert_mode = 0 + def load_sounds(self): self.loaded_sounds: dict[int, np.ndarray] = {} @@ -96,6 +102,10 @@ class Soundd: written_frames += frames_to_write self.current_sound_frame += frames_to_write + # dp - set vol to 0 instead + if self._dp_device_audible_alert_mode == 2 or (self._dp_device_audible_alert_mode == 1 and self.current_alert in [AudibleAlert.engage, AudibleAlert.disengage]): + self.current_volume = 0 + return ret * self.current_volume def callback(self, data_out: np.ndarray, frames: int, time, status) -> None: diff --git a/system/manager/manager.py b/system/manager/manager.py index 9fe81947f..33041c8f7 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_device_audible_alert_mode", "0"), ] if params.get_bool("RecordFrontLock"):