|
|
@ -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(); |
|
|
|
|
|
} |
|
|
|