diff --git a/variants/heltec_tower_v2/HeltecTowerV2Board.cpp b/variants/heltec_tower_v2/HeltecTowerV2Board.cpp index 04213bda8c..aa97e9adf1 100644 --- a/variants/heltec_tower_v2/HeltecTowerV2Board.cpp +++ b/variants/heltec_tower_v2/HeltecTowerV2Board.cpp @@ -58,6 +58,20 @@ void HeltecTowerV2Board::begin() { pinMode(PIN_GPS_STANDBY, OUTPUT); digitalWrite(PIN_GPS_STANDBY, HIGH); loRaFEMControl.init(); + +#ifdef HAS_HARDWARE_WATCHDOG + pinMode(HARDWARE_WATCHDOG_DONE, OUTPUT); + digitalWrite(HARDWARE_WATCHDOG_DONE, LOW); + pinMode(HARDWARE_WATCHDOG_WAKE, INPUT); + + watchdog_timer.begin(60000, [](TimerHandle_t xTimerID) { + (void)xTimerID; + MESH_DEBUG_PRINTLN("PWRMGT: Fed hardware watchdog (t=%lu ms)", millis()); + digitalWrite(HARDWARE_WATCHDOG_DONE, HIGH); + digitalWrite(HARDWARE_WATCHDOG_DONE, LOW); + }); + watchdog_timer.start(); +#endif } void HeltecTowerV2Board::onBeforeTransmit() { diff --git a/variants/heltec_tower_v2/HeltecTowerV2Board.h b/variants/heltec_tower_v2/HeltecTowerV2Board.h index 6912acdec7..816a88198b 100644 --- a/variants/heltec_tower_v2/HeltecTowerV2Board.h +++ b/variants/heltec_tower_v2/HeltecTowerV2Board.h @@ -21,4 +21,8 @@ class HeltecTowerV2Board : public NRF52BoardDCDC { uint16_t getBattMilliVolts() override; const char* getManufacturerName() const override; void powerOff() override; +#ifdef HAS_HARDWARE_WATCHDOG +private: + SoftwareTimer watchdog_timer; +#endif };