Fixed task_wdt: esp_task_wdt_reset(707): task not found

This commit is contained in:
Shailen Sobhee 2026-04-11 23:48:19 +02:00
parent 41270fffb8
commit b2e402e20e

View file

@ -5,6 +5,12 @@
#include <ESPmDNS.h> #include <ESPmDNS.h>
#include <esp_task_wdt.h> #include <esp_task_wdt.h>
#include "esp_log.h" #include "esp_log.h"
// Only reset the WDT if the current task is actually subscribed.
// setConnected() is called from the WiFi event task which is not registered.
static inline void safe_wdt_reset() {
if (esp_task_wdt_status(NULL) == ESP_OK) esp_task_wdt_reset();
}
#include "ConfigSettings.h" #include "ConfigSettings.h"
#include "ESPNetwork.h" #include "ESPNetwork.h"
#include "Web.h" #include "Web.h"
@ -230,7 +236,7 @@ void ESPNetwork::emitSockets(uint8_t num) {
this->emitHeap(num); this->emitHeap(num);
} }
void ESPNetwork::setConnected(conn_types_t connType) { void ESPNetwork::setConnected(conn_types_t connType) {
esp_task_wdt_reset(); safe_wdt_reset();
this->connType = connType; this->connType = connType;
this->connectTime = millis(); this->connectTime = millis();
connectRetries = 0; connectRetries = 0;
@ -261,7 +267,7 @@ void ESPNetwork::setConnected(conn_types_t connType) {
#endif // CONFIG_IDF_TARGET_ESP32C6 #endif // CONFIG_IDF_TARGET_ESP32C6
// NET: Begin this in the startup. // NET: Begin this in the startup.
//sockEmit.begin(); //sockEmit.begin();
esp_task_wdt_reset(); safe_wdt_reset();
if(this->connectAttempts == 1) { if(this->connectAttempts == 1) {
if(this->connType == conn_types_t::wifi) { if(this->connType == conn_types_t::wifi) {
@ -284,7 +290,7 @@ void ESPNetwork::setConnected(conn_types_t connType) {
settings.IP.dns1 = ETH.dnsIP(0); settings.IP.dns1 = ETH.dnsIP(0);
settings.IP.dns2 = ETH.dnsIP(1); settings.IP.dns2 = ETH.dnsIP(1);
} }
esp_task_wdt_reset(); safe_wdt_reset();
JsonSockEvent *json = sockEmit.beginEmit("ethernet"); JsonSockEvent *json = sockEmit.beginEmit("ethernet");
json->beginObject(); json->beginObject();
json->addElem("connected", this->connected()); json->addElem("connected", this->connected());
@ -292,7 +298,7 @@ void ESPNetwork::setConnected(conn_types_t connType) {
json->addElem("fullduplex", ETH.fullDuplex()); json->addElem("fullduplex", ETH.fullDuplex());
json->endObject(); json->endObject();
sockEmit.endEmit(); sockEmit.endEmit();
esp_task_wdt_reset(); safe_wdt_reset();
} }
#endif #endif
} }
@ -311,7 +317,7 @@ void ESPNetwork::setConnected(conn_types_t connType) {
SSDP.setChipId(0, this->getChipId()); SSDP.setChipId(0, this->getChipId());
SSDP.setDeviceType(0, "urn:schemas-rstrouse-org:device:ESPSomfyRTS:1"); SSDP.setDeviceType(0, "urn:schemas-rstrouse-org:device:ESPSomfyRTS:1");
SSDP.setName(0, settings.hostname); SSDP.setName(0, settings.hostname);
//SSDP.setSerialNumber(0, "C2496952-5610-47E6-A968-2FC19737A0DB"); //SSDP.setSerialNumber(0, "C2496952-5610-47E6-A968-2FC19737A0DB");
//SSDP.setUUID(0, settings.uuid); //SSDP.setUUID(0, settings.uuid);
SSDP.setModelName(0, "ESPSomfy RTS"); SSDP.setModelName(0, "ESPSomfy RTS");
@ -326,24 +332,24 @@ void ESPNetwork::setConnected(conn_types_t connType) {
SSDP.setManufacturerURL(0, "https://github.com/rstrouse"); SSDP.setManufacturerURL(0, "https://github.com/rstrouse");
SSDP.setURL(0, "/"); SSDP.setURL(0, "/");
SSDP.setActive(0, true); SSDP.setActive(0, true);
esp_task_wdt_reset(); safe_wdt_reset();
if(MDNS.begin(settings.hostname)) { if(MDNS.begin(settings.hostname)) {
ESP_LOGI(TAG, "MDNS Responder Started: serverId=%s", settings.serverId); ESP_LOGI(TAG, "MDNS Responder Started: serverId=%s", settings.serverId);
MDNS.addService("http", "tcp", 80); MDNS.addService("http", "tcp", 80);
//MDNS.addServiceTxt("http", "tcp", "board", "ESP32"); //MDNS.addServiceTxt("http", "tcp", "board", "ESP32");
//MDNS.addServiceTxt("http", "tcp", "model", "ESPSomfyRTS"); //MDNS.addServiceTxt("http", "tcp", "model", "ESPSomfyRTS");
MDNS.addService("espsomfy_rts", "tcp", 8080); MDNS.addService("espsomfy_rts", "tcp", 8080);
MDNS.addServiceTxt("espsomfy_rts", "tcp", "serverId", String(settings.serverId)); MDNS.addServiceTxt("espsomfy_rts", "tcp", "serverId", String(settings.serverId));
MDNS.addServiceTxt("espsomfy_rts", "tcp", "model", "ESPSomfyRTS"); MDNS.addServiceTxt("espsomfy_rts", "tcp", "model", "ESPSomfyRTS");
MDNS.addServiceTxt("espsomfy_rts", "tcp", "version", String(settings.fwVersion.name)); MDNS.addServiceTxt("espsomfy_rts", "tcp", "version", String(settings.fwVersion.name));
} }
if(settings.ssdpBroadcast) { if(settings.ssdpBroadcast) {
esp_task_wdt_reset(); safe_wdt_reset();
SSDP.begin(); SSDP.begin();
} }
else if(SSDP.isStarted) SSDP.end(); else if(SSDP.isStarted) SSDP.end();
esp_task_wdt_reset(); safe_wdt_reset();
this->emitSockets(); this->emitSockets();
settings.printAvailHeap(); settings.printAvailHeap();
this->needsBroadcast = true; this->needsBroadcast = true;