From 128a859fd16b241b6a348928cb167e48dbce779a Mon Sep 17 00:00:00 2001 From: Rick Lan Date: Sat, 29 Jun 2024 11:30:38 +0800 Subject: [PATCH] =?UTF-8?q?Onroad/Offroad=20Button=20Co-authored-by:=20?= =?UTF-8?q?=E9=8C=A2=E7=BE=85=E5=9F=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/params.cc | 1 + selfdrive/ui/qt/offroad/settings.h | 2 ++ selfdrive/ui/qt/offroad/software_settings.cc | 18 ++++++++++++++++++ system/hardware/hardwared.py | 2 +- 4 files changed, 22 insertions(+), 1 deletion(-) diff --git a/common/params.cc b/common/params.cc index a3538375c..db4b2598b 100644 --- a/common/params.cc +++ b/common/params.cc @@ -235,6 +235,7 @@ std::unordered_map keys = { {"dp_device_dm_unavailable", PERSISTENT}, {"dp_toyota_enhanced_bsm", PERSISTENT}, {"dp_toyota_auto_brake_hold", PERSISTENT}, + {"dp_device_offroad", CLEAR_ON_MANAGER_START}, }; } // namespace diff --git a/selfdrive/ui/qt/offroad/settings.h b/selfdrive/ui/qt/offroad/settings.h index 35a044bdd..8d3bcc4f4 100644 --- a/selfdrive/ui/qt/offroad/settings.h +++ b/selfdrive/ui/qt/offroad/settings.h @@ -95,6 +95,8 @@ private: ButtonControl *installBtn; ButtonControl *downloadBtn; ButtonControl *targetBranchBtn; + // dp + ButtonControl *onOffBtn; Params params; ParamWatcher *fs_watch; diff --git a/selfdrive/ui/qt/offroad/software_settings.cc b/selfdrive/ui/qt/offroad/software_settings.cc index c8245205c..549ae529b 100644 --- a/selfdrive/ui/qt/offroad/software_settings.cc +++ b/selfdrive/ui/qt/offroad/software_settings.cc @@ -29,6 +29,16 @@ SoftwarePanel::SoftwarePanel(QWidget* parent) : ListWidget(parent) { versionLbl = new LabelControl(tr("Current Version"), ""); addItem(versionLbl); + // dp on/off btn + onOffBtn = new ButtonControl(tr("Onroad/Offroad Mode"), tr("Go Offroad")); + connect(onOffBtn, &ButtonControl::clicked, [&]() { + if (ConfirmationDialog::confirm(tr("Are you sure you want to switch driving mode?"), tr("CONFIRM"), this)) { + bool val = params.getBool("dp_device_offroad"); + params.putBool("dp_device_offroad", !val); + } + }); + addItem(onOffBtn); + // download update btn downloadBtn = new ButtonControl(tr("Download"), tr("CHECK")); connect(downloadBtn, &ButtonControl::clicked, [=]() { @@ -109,11 +119,19 @@ void SoftwarePanel::updateLabels() { fs_watch->addParam("UpdateFailedCount"); fs_watch->addParam("UpdaterState"); fs_watch->addParam("UpdateAvailable"); + fs_watch->addParam("dp_device_offroad"); if (!isVisible()) { return; } + // dp on/off btn + if (params.getBool("dp_device_offroad")) { + onOffBtn->setText(tr("Go Onroad")); + } else { + onOffBtn->setText(tr("Go Offroad")); + } + // updater only runs offroad onroadLbl->setVisible(is_onroad); downloadBtn->setVisible(!is_onroad); diff --git a/system/hardware/hardwared.py b/system/hardware/hardwared.py index 7ee664031..6976ba7ce 100755 --- a/system/hardware/hardwared.py +++ b/system/hardware/hardwared.py @@ -338,7 +338,7 @@ def hardware_thread(end_event, hw_queue) -> None: pass # Handle offroad/onroad transition - should_start = all(onroad_conditions.values()) + should_start = not params.get_bool("dp_device_offroad") and all(onroad_conditions.values()) if started_ts is None: should_start = should_start and all(startup_conditions.values())