diff --git a/selfdrive/ui/qt/offroad/settings.cc b/selfdrive/ui/qt/offroad/settings.cc index 65b617458c..b3e4686560 100644 --- a/selfdrive/ui/qt/offroad/settings.cc +++ b/selfdrive/ui/qt/offroad/settings.cc @@ -453,6 +453,24 @@ DevicePanel::DevicePanel(SettingsWindow *parent) : ListWidget(parent) { }); addItem(deleteDrivingDataBtn); + // Reset toggles to default button + auto resetTogglesBtn = new ButtonControl(tr("Reset Toggles To Default"), tr("RESET"), tr("Reset your toggle settings back to their default settings.")); + connect(resetTogglesBtn, &ButtonControl::clicked, [=]() { + if (ConfirmationDialog::confirm(tr("Are you sure you want to completely reset all of your toggle settings?"), tr("Reset"), this)) { + std::thread([&] { + resetTogglesBtn->setValue(tr("Resetting toggles...")); + params.putBool("DoToggleReset", true); + std::this_thread::sleep_for(std::chrono::seconds(2)); + resetTogglesBtn->setValue(tr("Reset!")); + std::this_thread::sleep_for(std::chrono::seconds(2)); + resetTogglesBtn->setValue(tr("Rebooting...")); + std::this_thread::sleep_for(std::chrono::seconds(3)); + Hardware::reboot(); + }).detach(); + } + }); + addItem(resetTogglesBtn); + // Panda flashing button auto flashPandaBtn = new ButtonControl(tr("Flash Panda"), tr("FLASH"), tr("Use this button to troubleshoot and update the Panda device's firmware.")); connect(flashPandaBtn, &ButtonControl::clicked, [=]() { diff --git a/system/manager/manager.py b/system/manager/manager.py index 31d6d53c6e..af90c78413 100755 --- a/system/manager/manager.py +++ b/system/manager/manager.py @@ -320,9 +320,11 @@ def manager_init(frogpilot_functions) -> None: # set unset params for k, v in default_params: - if params.get(k) is None: + if params.get(k) is None or params.get_bool("DoToggleReset"): params.put(k, v) + params.put_bool("DoToggleReset", False) + # Create folders needed for msgq try: os.mkdir("/dev/shm")