disable tasks before ota update

This commit is contained in:
Yurii
2023-12-04 08:48:02 +03:00
parent c5434e0a45
commit 7740d9c4c7
2 changed files with 21 additions and 0 deletions

View File

@@ -37,9 +37,15 @@ class WifiManagerTask : public Task {
public:
WifiManagerTask(bool _enabled = false, unsigned long _interval = 0) : Task(_enabled, _interval) {}
WifiManagerTask* addTaskForDisable(Task* task) {
this->tasksForDisable.push_back(task);
return this;
}
protected:
bool connected = false;
unsigned long lastArpGratuitous = 0;
std::vector<Task*> tasksForDisable;
const char* getTaskName() {
return "WifiManager";
@@ -142,6 +148,14 @@ protected:
wm.setAPClientCheck(true);
wm.setConfigPortalBlocking(false);
wm.setSaveParamsCallback(saveParamsCallback);
wm.setPreOtaUpdateCallback([this] {
for (Task* task : this->tasksForDisable) {
if (task->isEnabled()) {
task->disable();
}
}
this->delay(10);
});
wm.setConfigPortalTimeout(wm.getWiFiIsSaved() ? 180 : 0);
wm.setDisableConfigPortal(false);

View File

@@ -97,6 +97,13 @@ void setup() {
tMain = new MainTask(true, 100);
Scheduler.start(tMain);
tWm
->addTaskForDisable(tMain)
->addTaskForDisable(tMqtt)
->addTaskForDisable(tOt)
->addTaskForDisable(tSensors)
->addTaskForDisable(tRegulator);
Scheduler.begin();
}