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}
232238void 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