mirror of
https://github.com/MarekZegare4/MeshCore-Solo.git
synced 2026-09-14 15:16:40 +00:00
Add an instance of ExternalWatchdogManager to Tower V2
This commit is contained in:
@@ -14,6 +14,7 @@ VolatileRTCClock fallback_clock;
|
|||||||
AutoDiscoverRTCClock rtc_clock(fallback_clock);
|
AutoDiscoverRTCClock rtc_clock(fallback_clock);
|
||||||
MicroNMEALocationProvider nmea = MicroNMEALocationProvider(Serial1, &rtc_clock);
|
MicroNMEALocationProvider nmea = MicroNMEALocationProvider(Serial1, &rtc_clock);
|
||||||
EnvironmentSensorManager sensors = EnvironmentSensorManager(nmea);
|
EnvironmentSensorManager sensors = EnvironmentSensorManager(nmea);
|
||||||
|
TowerV2ExternalWatchdog external_watchdog;
|
||||||
|
|
||||||
#ifdef DISPLAY_CLASS
|
#ifdef DISPLAY_CLASS
|
||||||
DISPLAY_CLASS display;
|
DISPLAY_CLASS display;
|
||||||
@@ -29,3 +30,35 @@ mesh::LocalIdentity radio_new_identity() {
|
|||||||
RadioNoiseListener rng(radio);
|
RadioNoiseListener rng(radio);
|
||||||
return mesh::LocalIdentity(&rng);
|
return mesh::LocalIdentity(&rng);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool TowerV2ExternalWatchdog::begin() {
|
||||||
|
last_feed_watchdog = 0;
|
||||||
|
pinMode(EXTERNAL_WATCHDOG_WAKE_PIN, INPUT);
|
||||||
|
pinMode(EXTERNAL_WATCHDOG_DONE_PIN, OUTPUT);
|
||||||
|
delay(1);
|
||||||
|
digitalWrite(EXTERNAL_WATCHDOG_DONE_PIN, LOW);
|
||||||
|
delay(1);
|
||||||
|
feed();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TowerV2ExternalWatchdog::loop() {
|
||||||
|
if (millis() - last_feed_watchdog >= EXTERNAL_WATCHDOG_FEED_INTERVAL_MS) {
|
||||||
|
feed();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned long TowerV2ExternalWatchdog::getIntervalMs() const {
|
||||||
|
unsigned long elapsed_ms = millis() - last_feed_watchdog;
|
||||||
|
if (elapsed_ms >= EXTERNAL_WATCHDOG_FEED_INTERVAL_MS) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return EXTERNAL_WATCHDOG_FEED_INTERVAL_MS - elapsed_ms;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TowerV2ExternalWatchdog::feed() {
|
||||||
|
digitalWrite(EXTERNAL_WATCHDOG_DONE_PIN, HIGH);
|
||||||
|
delay(1);
|
||||||
|
digitalWrite(EXTERNAL_WATCHDOG_DONE_PIN, LOW);
|
||||||
|
last_feed_watchdog = millis();
|
||||||
|
}
|
||||||
|
|||||||
@@ -8,16 +8,27 @@
|
|||||||
#include <helpers/radiolib/RadioLibWrappers.h>
|
#include <helpers/radiolib/RadioLibWrappers.h>
|
||||||
#include <helpers/sensors/EnvironmentSensorManager.h>
|
#include <helpers/sensors/EnvironmentSensorManager.h>
|
||||||
#include <helpers/sensors/LocationProvider.h>
|
#include <helpers/sensors/LocationProvider.h>
|
||||||
|
#include <helpers/ExternalWatchdogManager.h>
|
||||||
|
|
||||||
#ifdef DISPLAY_CLASS
|
#ifdef DISPLAY_CLASS
|
||||||
#include <helpers/ui/MomentaryButton.h>
|
#include <helpers/ui/MomentaryButton.h>
|
||||||
#include "helpers/ui/NullDisplayDriver.h"
|
#include "helpers/ui/NullDisplayDriver.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
class TowerV2ExternalWatchdog : public ExternalWatchdogManager {
|
||||||
|
public:
|
||||||
|
TowerV2ExternalWatchdog() {}
|
||||||
|
bool begin() override;
|
||||||
|
void loop() override;
|
||||||
|
unsigned long getIntervalMs() const override;
|
||||||
|
void feed() override;
|
||||||
|
};
|
||||||
|
|
||||||
extern HeltecTowerV2Board board;
|
extern HeltecTowerV2Board board;
|
||||||
extern WRAPPER_CLASS radio_driver;
|
extern WRAPPER_CLASS radio_driver;
|
||||||
extern AutoDiscoverRTCClock rtc_clock;
|
extern AutoDiscoverRTCClock rtc_clock;
|
||||||
extern EnvironmentSensorManager sensors;
|
extern EnvironmentSensorManager sensors;
|
||||||
|
extern TowerV2ExternalWatchdog external_watchdog;
|
||||||
|
|
||||||
#ifdef DISPLAY_CLASS
|
#ifdef DISPLAY_CLASS
|
||||||
extern DISPLAY_CLASS display;
|
extern DISPLAY_CLASS display;
|
||||||
|
|||||||
@@ -85,7 +85,7 @@
|
|||||||
#define HAS_EXTERNAL_WATCHDOG
|
#define HAS_EXTERNAL_WATCHDOG
|
||||||
#define EXTERNAL_WATCHDOG_DONE_PIN (0 + 9)
|
#define EXTERNAL_WATCHDOG_DONE_PIN (0 + 9)
|
||||||
#define EXTERNAL_WATCHDOG_WAKE_PIN (0 + 10)
|
#define EXTERNAL_WATCHDOG_WAKE_PIN (0 + 10)
|
||||||
#define EXTERNAL_WATCHDOG_FEED_INTERNAL_MS (8 * 60 * 1000)
|
#define EXTERNAL_WATCHDOG_FEED_INTERVAL_MS (8 * 60 * 1000)
|
||||||
|
|
||||||
#define SERIAL_PRINT_PORT 0
|
#define SERIAL_PRINT_PORT 0
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user