From b4af4441c5f0fa54508e3023bf5007bd98f41b86 Mon Sep 17 00:00:00 2001
From: Scott Lahteine <sourcetree@thinkyhead.com>
Date: Tue, 13 Oct 2015 03:57:36 -0700
Subject: [PATCH] Clean up watchdog impl.

---
 Marlin/Marlin_main.cpp | 11 +++++++++--
 Marlin/temperature.cpp | 13 +++++++++----
 Marlin/watchdog.cpp    | 42 +++++++++++++-----------------------------
 Marlin/watchdog.h      | 17 +++++++----------
 4 files changed, 38 insertions(+), 45 deletions(-)

diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp
index cc1d3c5b4c..44102ef180 100644
--- a/Marlin/Marlin_main.cpp
+++ b/Marlin/Marlin_main.cpp
@@ -45,13 +45,16 @@
 #include "stepper.h"
 #include "temperature.h"
 #include "cardreader.h"
-#include "watchdog.h"
 #include "configuration_store.h"
 #include "language.h"
 #include "pins_arduino.h"
 #include "math.h"
 #include "buzzer.h"
 
+#if ENABLED(USE_WATCHDOG)
+  #include "watchdog.h"
+#endif
+
 #if ENABLED(BLINKM)
   #include "blinkm.h"
   #include "Wire.h"
@@ -681,7 +684,11 @@ void setup() {
 
   tp_init();    // Initialize temperature loop
   plan_init();  // Initialize planner;
-  watchdog_init();
+
+  #if ENABLED(USE_WATCHDOG)
+    watchdog_init();
+  #endif
+
   st_init();    // Initialize stepper, this enables interrupts!
   setup_photpin();
   servo_init();
diff --git a/Marlin/temperature.cpp b/Marlin/temperature.cpp
index 3b257f062c..e58ecf4816 100644
--- a/Marlin/temperature.cpp
+++ b/Marlin/temperature.cpp
@@ -21,11 +21,13 @@
 #include "Marlin.h"
 #include "ultralcd.h"
 #include "temperature.h"
-#include "watchdog.h"
 #include "language.h"
-
 #include "Sd2PinMap.h"
 
+#if ENABLED(USE_WATCHDOG)
+  #include "watchdog.h"
+#endif
+
 //===========================================================================
 //================================== macros =================================
 //===========================================================================
@@ -819,8 +821,11 @@ static void updateTemperaturesFromRawValues() {
   #if HAS_FILAMENT_SENSOR
     filament_width_meas = analog2widthFil();
   #endif
-  //Reset the watchdog after we know we have a temperature measurement.
-  watchdog_reset();
+
+  #if ENABLED(USE_WATCHDOG)
+    // Reset the watchdog after we know we have a temperature measurement.
+    watchdog_reset();
+  #endif
 
   CRITICAL_SECTION_START;
   temp_meas_ready = false;
diff --git a/Marlin/watchdog.cpp b/Marlin/watchdog.cpp
index c30cb54c58..e763279716 100644
--- a/Marlin/watchdog.cpp
+++ b/Marlin/watchdog.cpp
@@ -1,25 +1,14 @@
 #include "Marlin.h"
 
 #if ENABLED(USE_WATCHDOG)
-#include <avr/wdt.h>
 
 #include "watchdog.h"
-#include "ultralcd.h"
 
-//===========================================================================
-//============================ private variables ============================
-//===========================================================================
-
-//===========================================================================
-//================================ functions ================================
-//===========================================================================
-
-
-/// intialise watch dog with a 4 sec interrupt time
+// Initialize watchdog with a 4 sec interrupt time
 void watchdog_init() {
   #if ENABLED(WATCHDOG_RESET_MANUAL)
-    //We enable the watchdog timer, but only for the interrupt.
-    //Take care, as this requires the correct order of operation, with interrupts disabled. See the datasheet of any AVR chip for details.
+    // We enable the watchdog timer, but only for the interrupt.
+    // Take care, as this requires the correct order of operation, with interrupts disabled. See the datasheet of any AVR chip for details.
     wdt_reset();
     _WD_CONTROL_REG = _BV(_WD_CHANGE_BIT) | _BV(WDE);
     _WD_CONTROL_REG = _BV(WDIE) | WDTO_4S;
@@ -28,23 +17,18 @@ void watchdog_init() {
   #endif
 }
 
-/// reset watchdog. MUST be called every 1s after init or avr will reset.
-void watchdog_reset() {
-  wdt_reset();
-}
-
 //===========================================================================
 //=================================== ISR ===================================
 //===========================================================================
 
-//Watchdog timer interrupt, called if main program blocks >1sec and manual reset is enabled.
+// Watchdog timer interrupt, called if main program blocks >1sec and manual reset is enabled.
 #if ENABLED(WATCHDOG_RESET_MANUAL)
-ISR(WDT_vect) {
-  SERIAL_ERROR_START;
-  SERIAL_ERRORLNPGM("Something is wrong, please turn off the printer.");
-  kill(PSTR("ERR:Please Reset")); //kill blocks //16 characters so it fits on a 16x2 display
-  while (1); //wait for user or serial reset
-}
-#endif//RESET_MANUAL
-
-#endif//USE_WATCHDOG
+  ISR(WDT_vect) {
+    SERIAL_ERROR_START;
+    SERIAL_ERRORLNPGM("Something is wrong, please turn off the printer.");
+    kill(PSTR("ERR:Please Reset")); //kill blocks //16 characters so it fits on a 16x2 display
+    while (1); //wait for user or serial reset
+  }
+#endif //WATCHDOG_RESET_MANUAL
+
+#endif //USE_WATCHDOG
diff --git a/Marlin/watchdog.h b/Marlin/watchdog.h
index 6416f13dec..c8a671fe80 100644
--- a/Marlin/watchdog.h
+++ b/Marlin/watchdog.h
@@ -2,16 +2,13 @@
 #define WATCHDOG_H
 
 #include "Marlin.h"
+#include <avr/wdt.h>
 
-#if ENABLED(USE_WATCHDOG)
-  // initialize watch dog with a 1 sec interrupt time
-  void watchdog_init();
-  // pad the dog/reset watchdog. MUST be called at least every second after the first watchdog_init or AVR will go into emergency procedures..
-  void watchdog_reset();
-#else
-  //If we do not have a watchdog, then we can have empty functions which are optimized away.
-  FORCE_INLINE void watchdog_init() {};
-  FORCE_INLINE void watchdog_reset() {};
-#endif
+// Initialize watchdog with a 4 second interrupt time
+void watchdog_init();
+
+// Reset watchdog. MUST be called at least every 4 seconds after the
+// first watchdog_init or AVR will go into emergency procedures.
+inline void watchdog_reset() { wdt_reset(); }
 
 #endif
-- 
GitLab