mirror of
https://github.com/rstrouse/ESPSomfy-RTS.git
synced 2026-10-31 13:52:15 +01:00
fix: only touch the task watchdog from tasks that are subscribed to it
Only loop() is subscribed. setConnected() runs on the WiFi event task and reached SocketEmitter::endEmit(), whose plain esp_task_wdt_reset() logged "esp_task_wdt_reset(707): task not found" on every boot. The web and socket handlers on async_tcp did the same. /scanaps on async_tcp called esp_task_wdt_add(NULL) after the scan, subscribing a task that nothing resets, so the board could panic 15 s after a scan from the UI. TaskWdt.h resets only a subscribed task and re-adds a task after a long call only when it was watched before. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
e9109c56e0
commit
609cd455c6
10 changed files with 154 additions and 57 deletions
|
|
@ -1,5 +1,5 @@
|
|||
#include <Preferences.h>
|
||||
#include <esp_task_wdt.h>
|
||||
#include "TaskWdt.h"
|
||||
#include "esp_log.h"
|
||||
#include "ConfigSettings.h"
|
||||
#include "Somfy.h"
|
||||
|
|
@ -78,7 +78,7 @@ bool SomfyShadeController::begin() {
|
|||
}
|
||||
void SomfyShadeController::commit() {
|
||||
if(git.lockFS) return;
|
||||
esp_task_wdt_reset(); // Make sure we don't reset inadvertently.
|
||||
resetTaskWdt(); // Make sure we don't reset inadvertently.
|
||||
ShadeConfigFile file;
|
||||
file.begin();
|
||||
file.save(this);
|
||||
|
|
@ -88,7 +88,7 @@ void SomfyShadeController::commit() {
|
|||
}
|
||||
void SomfyShadeController::writeBackup() {
|
||||
if(git.lockFS) return;
|
||||
esp_task_wdt_reset(); // Make sure we don't reset inadvertently.
|
||||
resetTaskWdt(); // Make sure we don't reset inadvertently.
|
||||
this->backupData = "";
|
||||
this->backupData.reserve(16384);
|
||||
ShadeConfigFile file;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue