mirror of
https://github.com/alexhopeoconnor/firmware.git
synced 2026-10-20 02:11:28 +10:00
Add a watchdog module to meshsolar. (#9337)
* add watchdog module * Restore the code in power.h --------- Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
#include "watchdogThread.h"
|
||||
#include "configuration.h"
|
||||
|
||||
#ifdef HAS_HARDWARE_WATCHDOG
|
||||
WatchdogThread *watchdogThread;
|
||||
|
||||
WatchdogThread::WatchdogThread() : OSThread("Watchdog")
|
||||
{
|
||||
setup();
|
||||
}
|
||||
|
||||
void WatchdogThread::feedDog(void)
|
||||
{
|
||||
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
|
||||
@@ -0,0 +1,19 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
#include "concurrency/OSThread.h"
|
||||
|
||||
#ifdef HAS_HARDWARE_WATCHDOG
|
||||
class WatchdogThread : private concurrency::OSThread
|
||||
{
|
||||
public:
|
||||
|
||||
WatchdogThread();
|
||||
void feedDog(void);
|
||||
virtual bool setup();
|
||||
virtual int32_t runOnce() override;
|
||||
|
||||
};
|
||||
|
||||
extern WatchdogThread *watchdogThread;
|
||||
#endif
|
||||
Reference in New Issue
Block a user