From aa9f830bf4e747f487af74567c7e2218f75ced8c Mon Sep 17 00:00:00 2001 From: DevTekVE Date: Sun, 5 Jan 2025 22:28:26 +0100 Subject: [PATCH] Update model manager logic and handle offroad transitions Added is_onroad state tracking in SoftwarePanelSP to handle offroad transitions. Updated model manager conditions for improved bundle validation. Removed unnecessary clear operation for ModelManager_DownloadIndex during offroad transitions to optimize behavior. --- common/params.cc | 2 +- selfdrive/ui/sunnypilot/qt/offroad/settings/software_panel.cc | 4 ++++ selfdrive/ui/sunnypilot/qt/offroad/settings/software_panel.h | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/common/params.cc b/common/params.cc index edf002f10c..bface21619 100644 --- a/common/params.cc +++ b/common/params.cc @@ -212,7 +212,7 @@ std::unordered_map keys = { // Model Manager params {"ModelManager_ActiveBundle", PERSISTENT}, - {"ModelManager_DownloadIndex", CLEAR_ON_MANAGER_START | CLEAR_ON_OFFROAD_TRANSITION | CLEAR_ON_ONROAD_TRANSITION}, + {"ModelManager_DownloadIndex", CLEAR_ON_MANAGER_START | CLEAR_ON_ONROAD_TRANSITION}, {"ModelManager_LastSyncTime", CLEAR_ON_MANAGER_START | CLEAR_ON_OFFROAD_TRANSITION}, {"ModelManager_ModelsCache", PERSISTENT | BACKUP}, diff --git a/selfdrive/ui/sunnypilot/qt/offroad/settings/software_panel.cc b/selfdrive/ui/sunnypilot/qt/offroad/settings/software_panel.cc index 6bbef9fb94..f5d510de58 100644 --- a/selfdrive/ui/sunnypilot/qt/offroad/settings/software_panel.cc +++ b/selfdrive/ui/sunnypilot/qt/offroad/settings/software_panel.cc @@ -19,6 +19,10 @@ SoftwarePanelSP::SoftwarePanelSP(QWidget *parent) : SoftwarePanel(parent) { currentModelLblBtn = new ButtonControlSP(tr("Current Model"), tr("SELECT"), current_model); currentModelLblBtn->setValue(current_model); + connect(uiStateSP(), &UIStateSP::offroadTransition, [=](bool offroad) { + is_onroad = !offroad; + }); + connect(currentModelLblBtn, &ButtonControlSP::clicked, this, &SoftwarePanelSP::handleCurrentModelLblBtnClicked); QObject::connect(uiStateSP(), &UIStateSP::uiUpdate, this, &SoftwarePanelSP::updateLabels); AddWidgetAt(0, currentModelLblBtn); diff --git a/selfdrive/ui/sunnypilot/qt/offroad/settings/software_panel.h b/selfdrive/ui/sunnypilot/qt/offroad/settings/software_panel.h index fd837e31fa..7dd9bbc5ec 100644 --- a/selfdrive/ui/sunnypilot/qt/offroad/settings/software_panel.h +++ b/selfdrive/ui/sunnypilot/qt/offroad/settings/software_panel.h @@ -24,7 +24,7 @@ private: const SubMaster &sm = *(uiStateSP()->sm); const auto model_manager = sm["modelManagerSP"].getModelManagerSP(); - if (!model_manager.hasSelectedBundle()) { + if (!model_manager.hasSelectedBundle() || !sm.updated("modelManagerSP")) { return false; }