diff --git a/common/params_keys.h b/common/params_keys.h index 180a8e1e5..357524f16 100644 --- a/common/params_keys.h +++ b/common/params_keys.h @@ -134,7 +134,7 @@ inline static std::unordered_map keys = { {"dp_dev_monitoring_disabled", {PERSISTENT, BOOL, "0"}}, {"dp_dev_beep", {PERSISTENT, BOOL, "0"}}, {"dp_lat_alka", {PERSISTENT, BOOL, "0"}}, - {"dp_ui_display_mode_v2", {PERSISTENT, INT, "0"}}, + {"dp_ui_display_mode", {PERSISTENT, INT, "0"}}, {"dp_dev_model_selected", {PERSISTENT, STRING}}, {"dp_dev_model_list", {PERSISTENT, STRING}}, {"dp_lat_lca_speed", {PERSISTENT, INT, "20"}}, diff --git a/dragonpilot/selfdrive/ui/layouts/settings/dragonpilot.py b/dragonpilot/selfdrive/ui/layouts/settings/dragonpilot.py index 573cd201d..8130c82e3 100644 --- a/dragonpilot/selfdrive/ui/layouts/settings/dragonpilot.py +++ b/dragonpilot/selfdrive/ui/layouts/settings/dragonpilot.py @@ -224,12 +224,12 @@ class DragonpilotLayout(Widget): callback=lambda val: self._params.put_bool("dp_dev_beep", val), ) - self._toggles["dp_ui_display_mode_v2"] = text_spin_button_item( + self._toggles["dp_ui_display_mode"] = text_spin_button_item( title=lambda: tr("Display Mode"), - callback=lambda val: self._params.put("dp_ui_display_mode_v2", val), - options=["Std.", "OP+", "OP-"], - initial_index=int(self._params.get("dp_ui_display_mode_v2") or 0), - description=lambda: tr("Std.: Stock behavior.
OP+: OP enabled = Display ON.
OP-: OP enabled = Display OFF."), + callback=lambda val: self._params.put("dp_ui_display_mode", val), + options=["Std.", "MAIN+", "OP+", "MAIN-", "OP-"], + initial_index=int(self._params.get("dp_ui_display_mode") or 0), + description=lambda: tr("Std.: Stock behavior.
MAIN+: ACC MAIN on = Display ON.
OP+: OP enabled = Display ON.
MAIN-: ACC MAIN on = Display OFF
OP-: OP enabled = Display OFF."), ) if "LITE" not in os.environ: diff --git a/selfdrive/ui/ui_state.py b/selfdrive/ui/ui_state.py index 20602f722..b9f8d9e8d 100644 --- a/selfdrive/ui/ui_state.py +++ b/selfdrive/ui/ui_state.py @@ -162,7 +162,8 @@ class UIState: self.dp_alka_active = self.sm["dpControlsState"].alkaActive # dp - self.dp_ui_display_mode = int(self.params.get("dp_ui_display_mode_v2") or 0) + self.dp_ui_display_mode = int(self.params.get("dp_ui_display_mode") or 0) + self.dp_ui_display_mode_cruise_available = False self.dp_ui_display_mode_cruise_enabled = False def _update_status(self) -> None: @@ -191,12 +192,13 @@ class UIState: for callback in self._offroad_transition_callbacks: callback() + self._started_prev = self.started + # dp if self.sm.updated["carState"]: + self.dp_ui_display_mode_cruise_available = self.sm["carState"].cruiseState.available self.dp_ui_display_mode_cruise_enabled = self.sm["carState"].cruiseState.enabled - self._started_prev = self.started - def update_params(self) -> None: # For slower operations # Update longitudinal control state @@ -269,22 +271,38 @@ class Device: # // Display Mode # // 0 Std. - Stock behavior. - # // 1 OP+ - OP enabled = Display ON - # // 2 OP- - OP enabled = Display OFF + # // 1 MAIN+ - ACC MAIN on = Display ON + # // 2 OP+ - OP enabled = Display ON + # // 3 MAIN- - ACC MAIN on = Display OFF + # // 4 OP- - OP enabled = Display OFF def ignore_state_ovrride(self, ignition): # 0 stock behaviour or ignition is off if ui_state.dp_ui_display_mode == 0 or not ignition: return ignition - # 1 OP+ - OP enabled = Display ON + # 1 MAIN+ - ACC MAIN on = Display ON if ui_state.dp_ui_display_mode == 1: + if ui_state.dp_ui_display_mode_cruise_available: + return True + else: + return False + + # 2 OP+ - OP enabled = Display ON + if ui_state.dp_ui_display_mode == 2: if ui_state.dp_ui_display_mode_cruise_enabled: return True else: return False - # 2 OP- - OP enabled = Display OFF - if ui_state.dp_ui_display_mode == 2: + # 3 MAIN- - ACC MAIN on = Display OFF + if ui_state.dp_ui_display_mode == 3: + if ui_state.dp_ui_display_mode_cruise_available: + return False + else: + return True + + # 4 OP- - OP enabled = Display OFF + if ui_state.dp_ui_display_mode == 4: if ui_state.dp_ui_display_mode_cruise_enabled: return False else: