diff --git a/openpilot/common/params_keys.h b/openpilot/common/params_keys.h index 625977867d..f66ecc03d5 100644 --- a/openpilot/common/params_keys.h +++ b/openpilot/common/params_keys.h @@ -155,6 +155,7 @@ inline static std::unordered_map keys = { {"CustomAccShortPressIncrement", {PERSISTENT | BACKUP, INT, "1"}}, {"DeviceBootMode", {PERSISTENT | BACKUP, INT, "0"}}, {"DevUIInfo", {PERSISTENT | BACKUP, INT, "0"}}, + {"DrawRadarTracks", {PERSISTENT | BACKUP, BOOL, "0"}}, {"EnableCopyparty", {PERSISTENT | BACKUP, BOOL}}, {"EnableGithubRunner", {PERSISTENT | BACKUP, BOOL}}, {"GreenLightAlert", {PERSISTENT | BACKUP, BOOL, "0"}}, diff --git a/openpilot/selfdrive/ui/layouts/settings/toggles.py b/openpilot/selfdrive/ui/layouts/settings/toggles.py index 86f9510512..63151ee549 100644 --- a/openpilot/selfdrive/ui/layouts/settings/toggles.py +++ b/openpilot/selfdrive/ui/layouts/settings/toggles.py @@ -118,6 +118,12 @@ class TogglesLayout(Widget): selected_index=self._params.get("RadarTracks", return_default=True), ) self._toggles["RadarTracks"] = self._radar_tracks_setting + self._toggle_defs["DrawRadarTracks"] = ( + lambda: tr("Draw Radar Tracks"), + tr_noop("Show radar tracks on the driving screen. Disabling this does not disable radar processing."), + "", + False, + ) self._locked_toggles = set() for param, (title, desc, icon, needs_restart) in self._toggle_defs.items(): toggle = toggle_item( diff --git a/openpilot/selfdrive/ui/mici/layouts/settings/toggles.py b/openpilot/selfdrive/ui/mici/layouts/settings/toggles.py index dc6f9a431a..5f48cae46d 100644 --- a/openpilot/selfdrive/ui/mici/layouts/settings/toggles.py +++ b/openpilot/selfdrive/ui/mici/layouts/settings/toggles.py @@ -22,9 +22,11 @@ class TogglesLayoutMici(NavScroller): record_mic = BigParamControl("record & upload mic audio", "RecordAudio", toggle_callback=restart_needed_callback) enable_openpilot = BigParamControl("enable sunnypilot", "OpenpilotEnabledToggle", toggle_callback=restart_needed_callback) radar_tracks = BigMultiParamToggle("radar tracks", "RadarTracks", ["off", "lead only", "full radar"]) + draw_radar_tracks = BigParamControl("draw radar tracks", "DrawRadarTracks") self._scroller.add_widgets([ radar_tracks, + draw_radar_tracks, self._personality_toggle, self._experimental_btn, is_metric_toggle, @@ -38,6 +40,7 @@ class TogglesLayoutMici(NavScroller): # Toggle lists self._refresh_toggles = ( ("RadarTracks", radar_tracks), + ("DrawRadarTracks", draw_radar_tracks), ("ExperimentalMode", self._experimental_btn), ("IsMetric", is_metric_toggle), ("IsLdwEnabled", ldw_toggle), diff --git a/openpilot/selfdrive/ui/mici/onroad/model_renderer.py b/openpilot/selfdrive/ui/mici/onroad/model_renderer.py index 93d41dc12f..5375fff109 100644 --- a/openpilot/selfdrive/ui/mici/onroad/model_renderer.py +++ b/openpilot/selfdrive/ui/mici/onroad/model_renderer.py @@ -135,7 +135,7 @@ class ModelRenderer(Widget, ModelRendererSP): model = sm['modelV2'] radar_state = sm['radarState'] if sm.valid['radarState'] else None lead_one = radar_state.leadOne if radar_state else None - render_lead_indicator = ui_state.radar_tracks != 0 and radar_state is not None + render_lead_indicator = ui_state.draw_radar_tracks and ui_state.radar_tracks != 0 and radar_state is not None # Update model data when needed model_updated = sm.updated['modelV2'] @@ -158,7 +158,7 @@ class ModelRenderer(Widget, ModelRendererSP): self._draw_lane_lines() self._draw_path(sm) - if sm.valid['liveTracks'] and sm.recv_frame['liveTracks'] >= ui_state.started_frame: + if ui_state.draw_radar_tracks and sm.valid['liveTracks'] and sm.recv_frame['liveTracks'] >= ui_state.started_frame: if (sm.updated['liveTracks'] or sm.updated['liveCalibration'] or transform_updated or not self.radar_tracks.projection_initialized): self.radar_tracks.update_radar_tracks( diff --git a/openpilot/selfdrive/ui/onroad/model_renderer.py b/openpilot/selfdrive/ui/onroad/model_renderer.py index b95ec55536..f129b85c88 100644 --- a/openpilot/selfdrive/ui/onroad/model_renderer.py +++ b/openpilot/selfdrive/ui/onroad/model_renderer.py @@ -119,7 +119,7 @@ class ModelRenderer(Widget, ChevronMetrics, ModelRendererSP): model = sm['modelV2'] radar_state = sm['radarState'] if sm.valid['radarState'] else None lead_one = radar_state.leadOne if radar_state else None - render_lead_indicator = ui_state.radar_tracks != 0 and radar_state is not None + render_lead_indicator = ui_state.draw_radar_tracks and ui_state.radar_tracks != 0 and radar_state is not None # Update model data when needed model_updated = sm.updated['modelV2'] @@ -141,7 +141,7 @@ class ModelRenderer(Widget, ChevronMetrics, ModelRendererSP): self._draw_lane_lines() self._draw_path(sm) - if sm.valid['liveTracks'] and sm.recv_frame['liveTracks'] >= ui_state.started_frame: + if ui_state.draw_radar_tracks and sm.valid['liveTracks'] and sm.recv_frame['liveTracks'] >= ui_state.started_frame: if (sm.updated['liveTracks'] or sm.updated['liveCalibration'] or transform_updated or not self.radar_tracks.projection_initialized): self.radar_tracks.update_radar_tracks( diff --git a/openpilot/selfdrive/ui/sunnypilot/ui_state.py b/openpilot/selfdrive/ui/sunnypilot/ui_state.py index 91ae0df477..55e8845d19 100644 --- a/openpilot/selfdrive/ui/sunnypilot/ui_state.py +++ b/openpilot/selfdrive/ui/sunnypilot/ui_state.py @@ -43,6 +43,7 @@ class UIStateSP: self.chevron_metrics = None self.custom_interactive_timeout: int = 0 self.developer_ui = None + self.draw_radar_tracks: bool = self.params.get_bool("DrawRadarTracks") self.hide_v_ego_ui: bool = False self.radar_tracks: int = self.params.get("RadarTracks", return_default=True) self.onroad_brightness: int = 0 @@ -152,6 +153,7 @@ class UIStateSP: self.chevron_metrics = self.params.get("ChevronInfo") self.custom_interactive_timeout = self.params.get("InteractivityTimeout", return_default=True) self.developer_ui = self.params.get("DevUIInfo") + self.draw_radar_tracks = self.params.get_bool("DrawRadarTracks") self.hide_v_ego_ui = self.params.get_bool("HideVEgoUI") self.radar_tracks = self.params.get("RadarTracks", return_default=True) self.onroad_brightness = int(float(self.params.get("OnroadScreenOffBrightness", return_default=True)))