mirror of
https://github.com/dragonpilot/dragonpilot.git
synced 2026-06-26 00:12:05 +08:00
display mode - init
This commit is contained in:
@@ -119,4 +119,5 @@ inline static std::unordered_map<std::string, uint32_t> keys = {
|
||||
{"Version", PERSISTENT},
|
||||
{"dp_device_last_log", CLEAR_ON_MANAGER_START},
|
||||
{"dp_device_reset_conf", CLEAR_ON_MANAGER_START},
|
||||
{"dp_ui_display_mode", PERSISTENT},
|
||||
};
|
||||
|
||||
@@ -173,6 +173,11 @@ void DPPanel::add_ui_toggles() {
|
||||
"",
|
||||
},
|
||||
};
|
||||
std::vector<QString> display_off_mode_texts{tr("Std."), tr("MAIN+"), tr("OP+"), tr("MAIN-"), tr("OP-")};
|
||||
ButtonParamControl* display_off_mode_setting = new ButtonParamControl("dp_ui_display_mode", tr("Display Mode"),
|
||||
tr("Std. - Stock behavior.\nMAIN+ - ACC MAIN on = Display ON.\nOP+ - OP enabled = Display ON.\nMAIN- - ACC MAIN on = Display OFF\nOP- - OP enabled = Display OFF."),
|
||||
"",
|
||||
display_off_mode_texts, 200);
|
||||
|
||||
QWidget *label = nullptr;
|
||||
bool has_toggle = false;
|
||||
@@ -181,6 +186,8 @@ void DPPanel::add_ui_toggles() {
|
||||
if (param.isEmpty()) {
|
||||
label = new LabelControl(title, "");
|
||||
addItem(label);
|
||||
addItem(display_off_mode_setting);
|
||||
has_toggle = true;
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
+58
-1
@@ -65,6 +65,7 @@ static void update_state(UIState *s) {
|
||||
void ui_update_params(UIState *s) {
|
||||
auto params = Params();
|
||||
s->scene.is_metric = params.getBool("IsMetric");
|
||||
s->scene.display_mode = std::atoi(params.get("dp_ui_display_mode").c_str());
|
||||
}
|
||||
|
||||
void UIState::updateStatus() {
|
||||
@@ -172,6 +173,62 @@ void Device::updateBrightness(const UIState &s) {
|
||||
}
|
||||
}
|
||||
|
||||
// Display Mode
|
||||
// 0 Std. - Stock behavior.
|
||||
// 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
|
||||
bool Device::applyDisplayMode(const UIState &s, int timeout) {
|
||||
// standard
|
||||
if (s.scene.display_mode == 0 || !s.scene.ignition) {
|
||||
return (s.scene.ignition || timeout > 0);
|
||||
}
|
||||
|
||||
bool cruise_available = false;
|
||||
bool cruise_enabled = false;
|
||||
|
||||
auto &sm = *(s.sm);
|
||||
if (sm.updated("carState")) {
|
||||
auto cs = sm["carState"].getCarState().getCruiseState();
|
||||
cruise_available = cs.getAvailable();
|
||||
cruise_enabled = cs.getEnabled();
|
||||
}
|
||||
|
||||
if (sm["selfdriveState"].getSelfdriveState().getAlertSize() != cereal::SelfdriveState::AlertSize::NONE) {
|
||||
resetInteractiveTimeout(5);
|
||||
return true;
|
||||
}
|
||||
|
||||
// 1 MAIN+ - ACC MAIN on = Display ON
|
||||
if (s.scene.display_mode == 1 && cruise_available) {
|
||||
return s.scene.ignition;
|
||||
}
|
||||
|
||||
// 2 OP+ - OP enabled = Display ON
|
||||
if (s.scene.display_mode == 2 && cruise_enabled) {
|
||||
return s.scene.ignition;
|
||||
}
|
||||
|
||||
// 3 MAIN- - ACC MAIN on = Display OFF
|
||||
if (s.scene.display_mode == 3 && cruise_available) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// 4 OP- - OP enabled = Display OFF
|
||||
if (s.scene.display_mode == 4 && cruise_enabled) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (s.scene.display_mode >= 3) {
|
||||
// 3,4
|
||||
return s.scene.ignition;
|
||||
} else {
|
||||
// 1,2
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
void Device::updateWakefulness(const UIState &s) {
|
||||
bool ignition_just_turned_off = !s.scene.ignition && ignition_on;
|
||||
ignition_on = s.scene.ignition;
|
||||
@@ -182,7 +239,7 @@ void Device::updateWakefulness(const UIState &s) {
|
||||
emit interactiveTimeout();
|
||||
}
|
||||
|
||||
setAwake(s.scene.ignition || interactive_timeout > 0);
|
||||
setAwake(applyDisplayMode(s, interactive_timeout));
|
||||
}
|
||||
|
||||
UIState *uiState() {
|
||||
|
||||
@@ -60,6 +60,7 @@ typedef struct UIScene {
|
||||
float light_sensor = -1;
|
||||
bool started, ignition, is_metric;
|
||||
uint64_t started_frame;
|
||||
int display_mode;
|
||||
} UIScene;
|
||||
|
||||
class UIState : public QObject {
|
||||
@@ -113,6 +114,7 @@ private:
|
||||
FirstOrderFilter brightness_filter;
|
||||
QFuture<void> brightness_future;
|
||||
|
||||
bool applyDisplayMode(const UIState &s, int timeout);
|
||||
void updateBrightness(const UIState &s);
|
||||
void updateWakefulness(const UIState &s);
|
||||
void setAwake(bool on);
|
||||
|
||||
@@ -41,6 +41,7 @@ def manager_init() -> None:
|
||||
("OpenpilotEnabledToggle", "1"),
|
||||
("LongitudinalPersonality", str(log.LongitudinalPersonality.standard)),
|
||||
("DisableLogging", "0"),
|
||||
("dp_ui_display_mode", "0"),
|
||||
]
|
||||
|
||||
if params.get_bool("RecordFrontLock"):
|
||||
|
||||
Reference in New Issue
Block a user