diff --git a/selfdrive/ui/lib/starpilot_visuals.py b/selfdrive/ui/lib/starpilot_visuals.py index c21b0b201..c73d9962f 100644 --- a/selfdrive/ui/lib/starpilot_visuals.py +++ b/selfdrive/ui/lib/starpilot_visuals.py @@ -16,10 +16,9 @@ def get_border_width(base_width: int, params: Params | None = None) -> int: return max(1, int(round(base_width * scale / 100.0))) -def lead_indicator_enabled(params: Params | None = None) -> bool: +def lead_indicator_enabled(params: Params | None = None, *, hide_by_default: bool = False) -> bool: active_params = params if params is not None else Params() - return ( - active_params.get_bool("LeadIndicator", default=False) - and not active_params.get_bool("HideLeadMarker", default=False) - ) + if active_params.get("HideLeadMarker") is None: + return not hide_by_default + return not active_params.get_bool("HideLeadMarker") diff --git a/selfdrive/ui/mici/layouts/settings/visuals.py b/selfdrive/ui/mici/layouts/settings/visuals.py index a8b4bc032..8f55abb31 100644 --- a/selfdrive/ui/mici/layouts/settings/visuals.py +++ b/selfdrive/ui/mici/layouts/settings/visuals.py @@ -47,11 +47,10 @@ class LeadIndicatorBigButton(BigToggle): def _handle_mouse_release(self, mouse_pos): super()._handle_mouse_release(mouse_pos) - self.params.put_bool("LeadIndicator", self._checked) self.params.put_bool("HideLeadMarker", not self._checked) def refresh(self): - self.set_checked(lead_indicator_enabled(self.params)) + self.set_checked(lead_indicator_enabled(self.params, hide_by_default=True)) class VisualsLayoutMici(NavScroller): diff --git a/selfdrive/ui/mici/onroad/model_renderer.py b/selfdrive/ui/mici/onroad/model_renderer.py index 7d8d7fc8c..c8bf5cb7d 100644 --- a/selfdrive/ui/mici/onroad/model_renderer.py +++ b/selfdrive/ui/mici/onroad/model_renderer.py @@ -129,7 +129,7 @@ class ModelRenderer(Widget): 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 = self._longitudinal_control and radar_state is not None and lead_indicator_enabled(self._params) + render_lead_indicator = self._longitudinal_control and radar_state is not None and lead_indicator_enabled(self._params, hide_by_default=True) # Update model data when needed model_updated = sm.updated['modelV2'] diff --git a/selfdrive/ui/tests/test_starpilot_visuals.py b/selfdrive/ui/tests/test_starpilot_visuals.py index 5f57970bf..45cf8a1dc 100644 --- a/selfdrive/ui/tests/test_starpilot_visuals.py +++ b/selfdrive/ui/tests/test_starpilot_visuals.py @@ -15,6 +15,12 @@ class FakeParams: def __init__(self, values=None): self.values = values or {} + def get(self, key, block=False, return_default=False, encoding=None, default=None): + if key not in self.values: + return None + v = self.values[key] + return v if isinstance(v, bytes) else str(v).encode() + def get_bool(self, key, block=False, default=False): value = self.values.get(key, default) if isinstance(value, bool): @@ -23,14 +29,14 @@ class FakeParams: class TestStarPilotVisuals(unittest.TestCase): - def test_lead_indicator_disabled_by_default(self): - self.assertFalse(lead_indicator_enabled(FakeParams())) + def test_lead_indicator_enabled_by_default(self): + self.assertTrue(lead_indicator_enabled(FakeParams())) - def test_lead_indicator_can_be_enabled(self): - self.assertTrue(lead_indicator_enabled(FakeParams({"LeadIndicator": True}))) + def test_hide_lead_marker_disables(self): + self.assertFalse(lead_indicator_enabled(FakeParams({"HideLeadMarker": True}))) - def test_hide_lead_marker_suppresses_lead_indicator(self): - self.assertFalse(lead_indicator_enabled(FakeParams({"LeadIndicator": True, "HideLeadMarker": True}))) + def test_hide_by_default_returns_false_when_unset(self): + self.assertFalse(lead_indicator_enabled(FakeParams(), hide_by_default=True)) if __name__ == "__main__": diff --git a/starpilot/system/the_galaxy/the_galaxy.py b/starpilot/system/the_galaxy/the_galaxy.py index d4f09e858..807157915 100644 --- a/starpilot/system/the_galaxy/the_galaxy.py +++ b/starpilot/system/the_galaxy/the_galaxy.py @@ -2557,15 +2557,11 @@ def _get_lead_indicator_enabled(defaults_lookup=None): if defaults_lookup is None: defaults_lookup = _get_default_param_values() - lead_raw = _safe_params_get_live_raw("LeadIndicator") - if _is_blank_param_raw(lead_raw): - lead_raw = defaults_lookup.get("LeadIndicator", "0") - hide_raw = _safe_params_get_live_raw("HideLeadMarker") if _is_blank_param_raw(hide_raw): hide_raw = defaults_lookup.get("HideLeadMarker", "0") - return _coerce_param_value(lead_raw, bool) and not _coerce_param_value(hide_raw, bool) + return not _coerce_param_value(hide_raw, bool) def _get_custom_accel_profile_initialized():