Merge branch 'min-feat/ui/display-mode' into pre-patch

This commit is contained in:
Rick Lan
2025-11-25 09:49:14 +08:00
3 changed files with 32 additions and 14 deletions

View File

@@ -134,7 +134,7 @@ inline static std::unordered_map<std::string, ParamKeyAttributes> 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"}},

View File

@@ -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.<br>OP+: OP enabled = Display ON.<br>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.<br>MAIN+: ACC MAIN on = Display ON.<br>OP+: OP enabled = Display ON.<br>MAIN-: ACC MAIN on = Display OFF<br>OP-: OP enabled = Display OFF."),
)
if "LITE" not in os.environ:

View File

@@ -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: