2026-01-29 10:41:27 +08:00
|
|
|
#include "watchdogThread.h"
|
|
|
|
|
#include "configuration.h"
|
|
|
|
|
|
|
|
|
|
#ifdef HAS_HARDWARE_WATCHDOG
|
|
|
|
|
WatchdogThread *watchdogThread;
|
|
|
|
|
|
|
|
|
|
WatchdogThread::WatchdogThread() : OSThread("Watchdog")
|
|
|
|
|
{
|
|
|
|
|
setup();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void WatchdogThread::feedDog(void)
|
2026-01-29 05:56:19 -06:00
|
|
|
{
|
2026-01-29 10:41:27 +08:00
|
|
|
digitalWrite(HARDWARE_WATCHDOG_DONE, HIGH);
|
|
|
|
|
delay(1);
|
|
|
|
|
digitalWrite(HARDWARE_WATCHDOG_DONE, LOW);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int32_t WatchdogThread::runOnce()
|
|
|
|
|
{
|
|
|
|
|
LOG_DEBUG("Feeding hardware watchdog");
|
|
|
|
|
feedDog();
|
|
|
|
|
return HARDWARE_WATCHDOG_TIMEOUT_MS;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool WatchdogThread::setup()
|
|
|
|
|
{
|
|
|
|
|
LOG_DEBUG("init hardware watchdog");
|
|
|
|
|
pinMode(HARDWARE_WATCHDOG_WAKE, INPUT);
|
|
|
|
|
pinMode(HARDWARE_WATCHDOG_DONE, OUTPUT);
|
|
|
|
|
delay(1);
|
|
|
|
|
digitalWrite(HARDWARE_WATCHDOG_DONE, LOW);
|
|
|
|
|
delay(1);
|
|
|
|
|
feedDog();
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
#endif
|