Skip to content

Commit b2e402e

Browse files
committed
Fixed task_wdt: esp_task_wdt_reset(707): task not found
1 parent 41270ff commit b2e402e

1 file changed

Lines changed: 15 additions & 9 deletions

File tree

src/ESPNetwork.cpp

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@
55
#include <ESPmDNS.h>
66
#include <esp_task_wdt.h>
77
#include "esp_log.h"
8+
9+
// Only reset the WDT if the current task is actually subscribed.
10+
// setConnected() is called from the WiFi event task which is not registered.
11+
static inline void safe_wdt_reset() {
12+
if (esp_task_wdt_status(NULL) == ESP_OK) esp_task_wdt_reset();
13+
}
814
#include "ConfigSettings.h"
915
#include "ESPNetwork.h"
1016
#include "Web.h"
@@ -230,7 +236,7 @@ void ESPNetwork::emitSockets(uint8_t num) {
230236
this->emitHeap(num);
231237
}
232238
void ESPNetwork::setConnected(conn_types_t connType) {
233-
esp_task_wdt_reset();
239+
safe_wdt_reset();
234240
this->connType = connType;
235241
this->connectTime = millis();
236242
connectRetries = 0;
@@ -261,7 +267,7 @@ void ESPNetwork::setConnected(conn_types_t connType) {
261267
#endif // CONFIG_IDF_TARGET_ESP32C6
262268
// NET: Begin this in the startup.
263269
//sockEmit.begin();
264-
esp_task_wdt_reset();
270+
safe_wdt_reset();
265271

266272
if(this->connectAttempts == 1) {
267273
if(this->connType == conn_types_t::wifi) {
@@ -284,15 +290,15 @@ void ESPNetwork::setConnected(conn_types_t connType) {
284290
settings.IP.dns1 = ETH.dnsIP(0);
285291
settings.IP.dns2 = ETH.dnsIP(1);
286292
}
287-
esp_task_wdt_reset();
293+
safe_wdt_reset();
288294
JsonSockEvent *json = sockEmit.beginEmit("ethernet");
289295
json->beginObject();
290296
json->addElem("connected", this->connected());
291297
json->addElem("speed", ETH.linkSpeed());
292298
json->addElem("fullduplex", ETH.fullDuplex());
293299
json->endObject();
294300
sockEmit.endEmit();
295-
esp_task_wdt_reset();
301+
safe_wdt_reset();
296302
}
297303
#endif
298304
}
@@ -311,7 +317,7 @@ void ESPNetwork::setConnected(conn_types_t connType) {
311317
SSDP.setChipId(0, this->getChipId());
312318
SSDP.setDeviceType(0, "urn:schemas-rstrouse-org:device:ESPSomfyRTS:1");
313319
SSDP.setName(0, settings.hostname);
314-
320+
315321
//SSDP.setSerialNumber(0, "C2496952-5610-47E6-A968-2FC19737A0DB");
316322
//SSDP.setUUID(0, settings.uuid);
317323
SSDP.setModelName(0, "ESPSomfy RTS");
@@ -326,24 +332,24 @@ void ESPNetwork::setConnected(conn_types_t connType) {
326332
SSDP.setManufacturerURL(0, "https://github.com/rstrouse");
327333
SSDP.setURL(0, "/");
328334
SSDP.setActive(0, true);
329-
esp_task_wdt_reset();
335+
safe_wdt_reset();
330336
if(MDNS.begin(settings.hostname)) {
331337
ESP_LOGI(TAG, "MDNS Responder Started: serverId=%s", settings.serverId);
332338
MDNS.addService("http", "tcp", 80);
333339
//MDNS.addServiceTxt("http", "tcp", "board", "ESP32");
334340
//MDNS.addServiceTxt("http", "tcp", "model", "ESPSomfyRTS");
335-
341+
336342
MDNS.addService("espsomfy_rts", "tcp", 8080);
337343
MDNS.addServiceTxt("espsomfy_rts", "tcp", "serverId", String(settings.serverId));
338344
MDNS.addServiceTxt("espsomfy_rts", "tcp", "model", "ESPSomfyRTS");
339345
MDNS.addServiceTxt("espsomfy_rts", "tcp", "version", String(settings.fwVersion.name));
340346
}
341347
if(settings.ssdpBroadcast) {
342-
esp_task_wdt_reset();
348+
safe_wdt_reset();
343349
SSDP.begin();
344350
}
345351
else if(SSDP.isStarted) SSDP.end();
346-
esp_task_wdt_reset();
352+
safe_wdt_reset();
347353
this->emitSockets();
348354
settings.printAvailHeap();
349355
this->needsBroadcast = true;

0 commit comments

Comments
 (0)