Show Driver Camera When In Reverse

This commit is contained in:
James
2025-12-01 12:00:00 -07:00
parent 2f31c511f0
commit 7919e10c10
6 changed files with 23 additions and 7 deletions
+1
View File
@@ -56,4 +56,5 @@ void FrogPilotUIState::update() {
update_state(this);
frogpilot_scene.conditional_status = frogpilot_scene.enabled ? params_memory.getInt("CEStatus") : 0;
frogpilot_scene.driver_camera_timer = frogpilot_scene.reverse && frogpilot_scene.frogpilot_toggles.value("driver_camera_in_reverse").toBool() ? frogpilot_scene.driver_camera_timer + 1 : 0;
}
+1
View File
@@ -17,6 +17,7 @@ struct FrogPilotUIScene {
bool standstill;
int conditional_status;
int driver_camera_timer;
int started_timer;
QJsonObject frogpilot_toggles;
+4 -1
View File
@@ -1,9 +1,12 @@
#!/usr/bin/env python3
import cereal.messaging as messaging
from opendbc.car import structs
from openpilot.common.params import Params
from openpilot.common.realtime import config_realtime_process
from openpilot.selfdrive.monitoring.helpers import DriverMonitoring
GearShifter = structs.CarState.GearShifter
def dmonitoringd_thread():
config_realtime_process([0, 1, 2, 3], 5)
@@ -43,7 +46,7 @@ def dmonitoringd_thread():
# load live always-on toggle
if sm['driverStateV2'].frameId % 40 == 1:
DM.always_on = params.get_bool("AlwaysOnDM")
demo_mode = params.get_bool("IsDriverViewEnabled")
demo_mode = params.get_bool("IsDriverViewEnabled") and sm["carState"].gearShifter != GearShifter.reverse
# save rhd virtual toggle every 5 mins
if (sm['driverStateV2'].frameId % 6000 == 0 and not demo_mode and
+15 -4
View File
@@ -70,9 +70,18 @@ void HomeWindow::updateState(const UIState &s, const FrogPilotUIState &fs) {
const QJsonObject &frogpilot_toggles = frogpilot_scene.frogpilot_toggles;
if (s.scene.started) {
developer_sidebar->setVisible(frogpilot_toggles.value("developer_sidebar").toBool());
if (frogpilot_scene.driver_camera_timer >= UI_FREQ / 2) {
showDriverView(true, true);
} else {
if (driver_view->isVisible()) {
sidebar->setVisible(params.getBool("Sidebar") || frogpilot_toggles.value("debug_mode").toBool());
slayout->setCurrentWidget(onroad);
}
frogpilotUIState()->frogpilot_scene.sidebars_open = developer_sidebar->isVisible() && sidebar->isVisible();
developer_sidebar->setVisible(frogpilot_toggles.value("developer_sidebar").toBool());
frogpilotUIState()->frogpilot_scene.sidebars_open = developer_sidebar->isVisible() && sidebar->isVisible();
}
}
}
@@ -94,9 +103,11 @@ void HomeWindow::offroadTransition(bool offroad) {
}
}
void HomeWindow::showDriverView(bool show) {
void HomeWindow::showDriverView(bool show, bool started) {
if (show) {
emit closeSettings();
if (!started) {
emit closeSettings();
}
slayout->setCurrentWidget(driver_view);
} else {
slayout->setCurrentWidget(home);
+1 -1
View File
@@ -58,7 +58,7 @@ signals:
public slots:
void offroadTransition(bool offroad);
void showDriverView(bool show);
void showDriverView(bool show, bool started=false);
void showSidebar(bool show);
protected:
+1 -1
View File
@@ -92,7 +92,7 @@ bool MainWindow::eventFilter(QObject *obj, QEvent *event) {
case QEvent::MouseButtonPress:
case QEvent::MouseMove: {
// ignore events when device is awakened by resetInteractiveTimeout
ignore = !device()->isAwake();
ignore = !device()->isAwake() || frogpilot_scene.driver_camera_timer >= UI_FREQ / 2;
device()->resetInteractiveTimeout(frogpilot_toggles.value("screen_timeout").toInt(), frogpilot_toggles.value("screen_timeout_onroad").toInt());
break;
}