void kickExternalWatchdog(void) { static bool locked = false; static bool wdog_state = false; static bool wdog_configured = false; if (!wdog_configured) { pinMode(WATCHDOG_WOUT_PIN, OUTPUT); kickAllSoftwareWatchdogs(); SWWatchdog.attach_ms(300, softwareWatchdog); // Check for stuck tasks and kick external Watchdog // The external wdog trips after 1.6s, but the timing is sloppy for the ESP8266, need this as 300ms. wdog_configured = true; startedTime = millis(); Serial.println(F("Software watchdog initialized.")); } if (!locked) { locked = true; pinMode(WATCHDOG_WOUT_PIN, OUTPUT); if (wdog_state) { digitalWrite(WATCHDOG_WOUT_PIN, HIGH); wdog_state = false; } else { digitalWrite(WATCHDOG_WOUT_PIN, LOW); wdog_state = true; } locked = false; } }