diff --git a/panda/board/obj/body_h7.bin.signed b/panda/board/obj/body_h7.bin.signed index 7b9132c8..1598fe1a 100644 Binary files a/panda/board/obj/body_h7.bin.signed and b/panda/board/obj/body_h7.bin.signed differ diff --git a/panda/board/obj/body_h7/bootstub.elf b/panda/board/obj/body_h7/bootstub.elf index 0b35d589..e508479a 100755 Binary files a/panda/board/obj/body_h7/bootstub.elf and b/panda/board/obj/body_h7/bootstub.elf differ diff --git a/panda/board/obj/body_h7/main.bin b/panda/board/obj/body_h7/main.bin index f9cffe5d..eccee691 100755 Binary files a/panda/board/obj/body_h7/main.bin and b/panda/board/obj/body_h7/main.bin differ diff --git a/panda/board/obj/body_h7/main.elf b/panda/board/obj/body_h7/main.elf index f2478657..3b5eecba 100755 Binary files a/panda/board/obj/body_h7/main.elf and b/panda/board/obj/body_h7/main.elf differ diff --git a/panda/board/obj/bootstub.body_h7.bin b/panda/board/obj/bootstub.body_h7.bin index 405986fd..520fd463 100755 Binary files a/panda/board/obj/bootstub.body_h7.bin and b/panda/board/obj/bootstub.body_h7.bin differ diff --git a/panda/board/obj/bootstub.panda.bin b/panda/board/obj/bootstub.panda.bin index fef45ebd..3b33e5f6 100755 Binary files a/panda/board/obj/bootstub.panda.bin and b/panda/board/obj/bootstub.panda.bin differ diff --git a/panda/board/obj/bootstub.panda_h7.bin b/panda/board/obj/bootstub.panda_h7.bin index 41eb4011..5d32cf95 100755 Binary files a/panda/board/obj/bootstub.panda_h7.bin and b/panda/board/obj/bootstub.panda_h7.bin differ diff --git a/panda/board/obj/bootstub.panda_h7_remote.bin b/panda/board/obj/bootstub.panda_h7_remote.bin index 41eb4011..5d32cf95 100755 Binary files a/panda/board/obj/bootstub.panda_h7_remote.bin and b/panda/board/obj/bootstub.panda_h7_remote.bin differ diff --git a/panda/board/obj/bootstub.panda_jungle_h7.bin b/panda/board/obj/bootstub.panda_jungle_h7.bin index 3cec0e3a..bd12b00b 100755 Binary files a/panda/board/obj/bootstub.panda_jungle_h7.bin and b/panda/board/obj/bootstub.panda_jungle_h7.bin differ diff --git a/panda/board/obj/bootstub.panda_remote.bin b/panda/board/obj/bootstub.panda_remote.bin index fef45ebd..3b33e5f6 100755 Binary files a/panda/board/obj/bootstub.panda_remote.bin and b/panda/board/obj/bootstub.panda_remote.bin differ diff --git a/panda/board/obj/gitversion.h b/panda/board/obj/gitversion.h index b126a021..ceb48434 100644 --- a/panda/board/obj/gitversion.h +++ b/panda/board/obj/gitversion.h @@ -1,2 +1,2 @@ extern const uint8_t gitversion[19]; -const uint8_t gitversion[19] = "DEV-46d6d0ac-DEBUG"; +const uint8_t gitversion[19] = "DEV-ba4cca62-DEBUG"; diff --git a/panda/board/obj/panda.bin.signed b/panda/board/obj/panda.bin.signed index a866f028..3b66392f 100644 Binary files a/panda/board/obj/panda.bin.signed and b/panda/board/obj/panda.bin.signed differ diff --git a/panda/board/obj/panda/bootstub.elf b/panda/board/obj/panda/bootstub.elf index 92ad5446..c2cfaa35 100755 Binary files a/panda/board/obj/panda/bootstub.elf and b/panda/board/obj/panda/bootstub.elf differ diff --git a/panda/board/obj/panda/main.bin b/panda/board/obj/panda/main.bin index e9abc59a..3b585fba 100755 Binary files a/panda/board/obj/panda/main.bin and b/panda/board/obj/panda/main.bin differ diff --git a/panda/board/obj/panda/main.elf b/panda/board/obj/panda/main.elf index 53663207..8e1ed041 100755 Binary files a/panda/board/obj/panda/main.elf and b/panda/board/obj/panda/main.elf differ diff --git a/panda/board/obj/panda_h7.bin.signed b/panda/board/obj/panda_h7.bin.signed index 80fb8ab2..6ef5e23d 100644 Binary files a/panda/board/obj/panda_h7.bin.signed and b/panda/board/obj/panda_h7.bin.signed differ diff --git a/panda/board/obj/panda_h7/bootstub.elf b/panda/board/obj/panda_h7/bootstub.elf index 618eb930..6a58f5d4 100755 Binary files a/panda/board/obj/panda_h7/bootstub.elf and b/panda/board/obj/panda_h7/bootstub.elf differ diff --git a/panda/board/obj/panda_h7/main.bin b/panda/board/obj/panda_h7/main.bin index ebefdc73..d7512eac 100755 Binary files a/panda/board/obj/panda_h7/main.bin and b/panda/board/obj/panda_h7/main.bin differ diff --git a/panda/board/obj/panda_h7/main.elf b/panda/board/obj/panda_h7/main.elf index 65052ceb..0c3dae6d 100755 Binary files a/panda/board/obj/panda_h7/main.elf and b/panda/board/obj/panda_h7/main.elf differ diff --git a/panda/board/obj/panda_h7_remote.bin.signed b/panda/board/obj/panda_h7_remote.bin.signed index 52298b00..093edc78 100644 Binary files a/panda/board/obj/panda_h7_remote.bin.signed and b/panda/board/obj/panda_h7_remote.bin.signed differ diff --git a/panda/board/obj/panda_h7_remote/bootstub.elf b/panda/board/obj/panda_h7_remote/bootstub.elf index 650ecee1..c5834216 100755 Binary files a/panda/board/obj/panda_h7_remote/bootstub.elf and b/panda/board/obj/panda_h7_remote/bootstub.elf differ diff --git a/panda/board/obj/panda_h7_remote/main.bin b/panda/board/obj/panda_h7_remote/main.bin index fb8099f0..e639e59b 100755 Binary files a/panda/board/obj/panda_h7_remote/main.bin and b/panda/board/obj/panda_h7_remote/main.bin differ diff --git a/panda/board/obj/panda_h7_remote/main.elf b/panda/board/obj/panda_h7_remote/main.elf index 62332aca..97739f54 100755 Binary files a/panda/board/obj/panda_h7_remote/main.elf and b/panda/board/obj/panda_h7_remote/main.elf differ diff --git a/panda/board/obj/panda_jungle_h7.bin.signed b/panda/board/obj/panda_jungle_h7.bin.signed index e857029c..68ebbc1d 100644 Binary files a/panda/board/obj/panda_jungle_h7.bin.signed and b/panda/board/obj/panda_jungle_h7.bin.signed differ diff --git a/panda/board/obj/panda_jungle_h7/bootstub.elf b/panda/board/obj/panda_jungle_h7/bootstub.elf index fa5a7021..568f6058 100755 Binary files a/panda/board/obj/panda_jungle_h7/bootstub.elf and b/panda/board/obj/panda_jungle_h7/bootstub.elf differ diff --git a/panda/board/obj/panda_jungle_h7/main.bin b/panda/board/obj/panda_jungle_h7/main.bin index 47a1e877..a73555fd 100755 Binary files a/panda/board/obj/panda_jungle_h7/main.bin and b/panda/board/obj/panda_jungle_h7/main.bin differ diff --git a/panda/board/obj/panda_jungle_h7/main.elf b/panda/board/obj/panda_jungle_h7/main.elf index 5a42bdee..f51098d6 100755 Binary files a/panda/board/obj/panda_jungle_h7/main.elf and b/panda/board/obj/panda_jungle_h7/main.elf differ diff --git a/panda/board/obj/panda_remote.bin.signed b/panda/board/obj/panda_remote.bin.signed index 810ddba6..fb33773c 100644 Binary files a/panda/board/obj/panda_remote.bin.signed and b/panda/board/obj/panda_remote.bin.signed differ diff --git a/panda/board/obj/panda_remote/bootstub.elf b/panda/board/obj/panda_remote/bootstub.elf index e5cf0a7d..4a617368 100755 Binary files a/panda/board/obj/panda_remote/bootstub.elf and b/panda/board/obj/panda_remote/bootstub.elf differ diff --git a/panda/board/obj/panda_remote/main.bin b/panda/board/obj/panda_remote/main.bin index ee6170a9..616fdcb9 100755 Binary files a/panda/board/obj/panda_remote/main.bin and b/panda/board/obj/panda_remote/main.bin differ diff --git a/panda/board/obj/panda_remote/main.elf b/panda/board/obj/panda_remote/main.elf index 7bed694d..d1791d3d 100755 Binary files a/panda/board/obj/panda_remote/main.elf and b/panda/board/obj/panda_remote/main.elf differ diff --git a/panda/board/obj/version b/panda/board/obj/version index 8aa14db3..60c41194 100644 --- a/panda/board/obj/version +++ b/panda/board/obj/version @@ -1 +1 @@ -DEV-46d6d0ac-DEBUG \ No newline at end of file +DEV-ba4cca62-DEBUG \ No newline at end of file diff --git a/selfdrive/ui/layouts/settings/starpilot/device.py b/selfdrive/ui/layouts/settings/starpilot/device.py index 7e1ad80e..1faf4dd2 100644 --- a/selfdrive/ui/layouts/settings/starpilot/device.py +++ b/selfdrive/ui/layouts/settings/starpilot/device.py @@ -169,6 +169,8 @@ class StarPilotScreenLayout(StarPilotPanel): def _get_brightness(self, key): v = self._params.get_int(key) + if key == "ScreenBrightnessOnroad" and v == 0: + v = 1 if v == 0: return tr("Off") if v == 101: @@ -179,12 +181,20 @@ class StarPilotScreenLayout(StarPilotPanel): def on_close(res, val): if res == DialogResult.CONFIRM: new_v = int(val) + if key == "ScreenBrightnessOnroad": + new_v = max(new_v, 1) self._params.put_int(key, new_v) HARDWARE.set_brightness(new_v) self._rebuild_grid() + min_value = 1 if key == "ScreenBrightnessOnroad" else 0 + current_value = max(self._params.get_int(key), min_value) + labels = {101: tr("Auto")} + if min_value == 0: + labels[0] = tr("Off") + gui_app.set_modal_overlay( - AetherSliderDialog(tr(key), 0, 101, 1, self._params.get_int(key), on_close, unit="%", labels={0: tr("Off"), 101: tr("Auto")}, color="#D43D8A") + AetherSliderDialog(tr(key), min_value, 101, 1, current_value, on_close, unit="%", labels=labels, color="#D43D8A") ) def _show_timeout_selector(self, key): diff --git a/selfdrive/ui/ui b/selfdrive/ui/ui index 7f87991b..6f9cb6bc 100755 Binary files a/selfdrive/ui/ui and b/selfdrive/ui/ui differ diff --git a/selfdrive/ui/ui.cc b/selfdrive/ui/ui.cc index e8861caa..0ad80c1f 100644 --- a/selfdrive/ui/ui.cc +++ b/selfdrive/ui/ui.cc @@ -107,7 +107,20 @@ void UIState::updateStatus(StarPilotUIState *fs) { status = ss.getEnabled() ? STATUS_ENGAGED : STATUS_DISENGAGED; } - starpilot_scene.wake_up_screen = ss.getAlertStatus() != cereal::SelfdriveState::AlertStatus::NORMAL || (status != previous_status && status != STATUS_OVERRIDE); + const bool selfdrive_visible_alert = ss.getAlertSize() != cereal::SelfdriveState::AlertSize::NONE; + bool starpilot_visible_alert = false; + if (fs->sm->rcv_frame("starpilotSelfdriveState") > 0) { + const auto fpss = (*fs->sm)["starpilotSelfdriveState"].getStarpilotSelfdriveState(); + starpilot_visible_alert = fpss.getAlertSize() != cereal::StarPilotSelfdriveState::AlertSize::NONE; + } + + // Standby mode should wake for any visible onroad alert, not just elevated + // alert statuses. Calibration uses NORMAL status but still needs to wake. + starpilot_scene.wake_up_screen = + selfdrive_visible_alert || + starpilot_visible_alert || + ss.getAlertStatus() != cereal::SelfdriveState::AlertStatus::NORMAL || + (status != previous_status && status != STATUS_OVERRIDE); } if (engaged() != engaged_prev) { @@ -199,6 +212,8 @@ void Device::resetInteractiveTimeout(int timeout, int timeout_onroad) { void Device::updateBrightness(const UIState &s, const StarPilotUIState &fs) { const StarPilotUIScene &starpilot_scene = fs.starpilot_scene; const QJsonObject &starpilot_toggles = starpilot_scene.starpilot_toggles; + const int screen_brightness_onroad = starpilot_toggles.value("screen_brightness_onroad").toInt(); + const int clamped_onroad_brightness = std::clamp(screen_brightness_onroad, 1, 100); float clipped_brightness = offroad_brightness; if (s.scene.started && s.scene.light_sensor >= 0) { @@ -220,8 +235,10 @@ void Device::updateBrightness(const UIState &s, const StarPilotUIState &fs) { brightness = 0; } else if (s.scene.started && !starpilot_scene.wake_up_screen && interactive_timeout == 0 && starpilot_toggles.value("standby_mode").toBool()) { brightness = 0; - } else if (s.scene.started && starpilot_toggles.value("screen_brightness_onroad").toInt() != 101) { - brightness = interactive_timeout > 0 ? fmax(5, starpilot_toggles.value("screen_brightness_onroad").toInt()) : starpilot_toggles.value("screen_brightness_onroad").toInt(); + } else if (s.scene.started && screen_brightness_onroad != 101) { + // Guard against stale params that may still contain the old onroad "off" + // value. Standby mode is the only supported way to blank the screen onroad. + brightness = interactive_timeout > 0 ? std::max(5, clamped_onroad_brightness) : clamped_onroad_brightness; } else if (starpilot_toggles.value("screen_brightness").toInt() != 101) { brightness = starpilot_toggles.value("screen_brightness").toInt(); } @@ -252,11 +269,7 @@ void Device::updateWakefulness(const UIState &s, const StarPilotUIState &fs) { } if (ignition_state_changed) { - if (ignition_on && starpilot_toggles.value("screen_brightness_onroad").toInt() == 0 && !standby_mode) { - resetInteractiveTimeout(0, 0); - } else { - resetInteractiveTimeout(screen_timeout, screen_timeout_onroad); - } + resetInteractiveTimeout(screen_timeout, screen_timeout_onroad); } else if (interactive_timeout > 0 && --interactive_timeout == 0) { emit interactiveTimeout(); } diff --git a/starpilot/common/starpilot_variables.py b/starpilot/common/starpilot_variables.py index cdca3d06..5961f1b7 100644 --- a/starpilot/common/starpilot_variables.py +++ b/starpilot/common/starpilot_variables.py @@ -911,7 +911,7 @@ class StarPilotVariables: screen_management = self.get_value("ScreenManagement") toggle.screen_brightness = max(self.get_value("ScreenBrightness", cast=float, condition=screen_management), 1) - toggle.screen_brightness_onroad = self.get_value("ScreenBrightnessOnroad", cast=float, condition=(screen_management and not toggle.force_onroad)) + toggle.screen_brightness_onroad = self.get_value("ScreenBrightnessOnroad", cast=float, condition=(screen_management and not toggle.force_onroad), min=1) toggle.screen_recorder = self.get_value("ScreenRecorder", condition=screen_management) or toggle.debug_mode toggle.screen_timeout = self.get_value("ScreenTimeout", cast=float, condition=screen_management) toggle.screen_timeout_onroad = self.get_value("ScreenTimeoutOnroad", cast=float, condition=screen_management) diff --git a/starpilot/system/the_pond/assets/components/tools/device_settings.js b/starpilot/system/the_pond/assets/components/tools/device_settings.js index ba4cb601..20438227 100644 --- a/starpilot/system/the_pond/assets/components/tools/device_settings.js +++ b/starpilot/system/the_pond/assets/components/tools/device_settings.js @@ -268,7 +268,7 @@ function numericBounds(param) { return { min: 1, max: 101, step: 1 } } if (param.key === "ScreenBrightnessOnroad") { - return { min: 0, max: 101, step: 1 } + return { min: 1, max: 101, step: 1 } } // Personality jerk params are stored as percentage-style integers (25..200). diff --git a/starpilot/system/the_pond/assets/components/tools/device_settings_layout.json b/starpilot/system/the_pond/assets/components/tools/device_settings_layout.json index 75f8784a..01f38d0f 100644 --- a/starpilot/system/the_pond/assets/components/tools/device_settings_layout.json +++ b/starpilot/system/the_pond/assets/components/tools/device_settings_layout.json @@ -2317,6 +2317,8 @@ "description": "The screen brightness while not driving.", "data_type": "int", "ui_type": "numeric", + "min": 1.0, + "max": 101.0, "step": 1.0, "parent_key": "ScreenManagement" }, @@ -2326,6 +2328,8 @@ "description": "The screen brightness while driving.", "data_type": "int", "ui_type": "numeric", + "min": 1.0, + "max": 101.0, "step": 1.0, "parent_key": "ScreenManagement" }, diff --git a/starpilot/ui/qt/offroad/device_settings.cc b/starpilot/ui/qt/offroad/device_settings.cc index d59fd17d..cef39bf3 100644 --- a/starpilot/ui/qt/offroad/device_settings.cc +++ b/starpilot/ui/qt/offroad/device_settings.cc @@ -74,9 +74,9 @@ StarPilotDevicePanel::StarPilotDevicePanel(StarPilotSettingsWindow *parent, bool deviceToggle = screenToggle; } else if (param == "ScreenBrightness" || param == "ScreenBrightnessOnroad") { std::map brightnessLabels; - int minBrightness = (param == "ScreenBrightnessOnroad") ? 0 : 1; - for (int i = 0; i <= 101; ++i) { - brightnessLabels[i] = i == 0 ? tr("Screen Off") : i == 101 ? tr("Auto") : QString::number(i) + "%"; + const int minBrightness = 1; + for (int i = minBrightness; i <= 101; ++i) { + brightnessLabels[i] = i == 101 ? tr("Auto") : QString::number(i) + "%"; } deviceToggle = new StarPilotParamValueControl(param, title, desc, icon, minBrightness, 101, QString(), brightnessLabels, 1, true); } else if (param == "ScreenRecorder") {