From d5fe0fb02b40311f00c2355df25400f139eb34f4 Mon Sep 17 00:00:00 2001
From: Scott Lahteine <github@thinkyhead.com>
Date: Sat, 9 Sep 2017 00:18:43 -0500
Subject: [PATCH] Consolidate PrintCounter

---
 Marlin/src/Marlin.cpp               | 10 ++--------
 Marlin/src/Marlin.h                 | 13 -------------
 Marlin/src/feature/tmc2130.cpp      |  3 ++-
 Marlin/src/gcode/gcode.cpp          |  1 +
 Marlin/src/lcd/ultralcd.cpp         |  4 ++--
 Marlin/src/lcd/ultralcd_impl_DOGM.h |  5 ++++-
 Marlin/src/module/printcounter.cpp  | 18 +++++++++++++++---
 Marlin/src/module/printcounter.h    |  7 +++++++
 8 files changed, 33 insertions(+), 28 deletions(-)

diff --git a/Marlin/src/Marlin.cpp b/Marlin/src/Marlin.cpp
index edcc9d4a505..51de309d3ec 100644
--- a/Marlin/src/Marlin.cpp
+++ b/Marlin/src/Marlin.cpp
@@ -39,12 +39,12 @@
 #include "module/temperature.h"
 #include "sd/cardreader.h"
 #include "module/configuration_store.h"
+#include "module/printcounter.h" // PrintCounter or Stopwatch
 #ifdef ARDUINO
   #include <pins_arduino.h>
 #endif
 #include <math.h>
 #include "libs/nozzle.h"
-#include "libs/duration_t.h"
 
 #include "gcode/gcode.h"
 #include "gcode/parser.h"
@@ -125,6 +125,7 @@
   #include "feature/tmc2130.h"
 #endif
 
+
 bool Running = true;
 
 /**
@@ -166,13 +167,6 @@ millis_t previous_cmd_ms = 0;
 static millis_t max_inactive_time = 0;
 static millis_t stepper_inactive_time = (DEFAULT_STEPPER_DEACTIVE_TIME) * 1000UL;
 
-// Print Job Timer
-#if ENABLED(PRINTCOUNTER)
-  PrintCounter print_job_timer = PrintCounter();
-#else
-  Stopwatch print_job_timer = Stopwatch();
-#endif
-
 #if ENABLED(Z_DUAL_ENDSTOPS)
   float z_endstop_adj;
 #endif
diff --git a/Marlin/src/Marlin.h b/Marlin/src/Marlin.h
index 3a118e790d6..9e69068cfd7 100644
--- a/Marlin/src/Marlin.h
+++ b/Marlin/src/Marlin.h
@@ -32,12 +32,6 @@
   #include "gcode/parser.h"
 #endif
 
-#if ENABLED(PRINTCOUNTER)
-  #include "module/printcounter.h"
-#else
-  #include "libs/stopwatch.h"
-#endif
-
 void stop();
 
 void idle(
@@ -234,13 +228,6 @@ extern volatile bool wait_for_heatup;
   extern int lpq_len;
 #endif
 
-// Print job timer
-#if ENABLED(PRINTCOUNTER)
-  extern PrintCounter print_job_timer;
-#else
-  extern Stopwatch print_job_timer;
-#endif
-
 #if ENABLED(MIXING_EXTRUDER)
   extern float mixing_factor[MIXING_STEPPERS];
   #if MIXING_VIRTUAL_TOOLS > 1
diff --git a/Marlin/src/feature/tmc2130.cpp b/Marlin/src/feature/tmc2130.cpp
index 082d6e7f595..a2623a45ca2 100644
--- a/Marlin/src/feature/tmc2130.cpp
+++ b/Marlin/src/feature/tmc2130.cpp
@@ -27,8 +27,9 @@
 #include "tmc2130.h"
 #include "../Marlin.h"
 
-#include "../libs/duration_t.h"
 #include "../module/stepper_indirection.h"
+#include "../module/printcounter.h"
+#include "../libs/duration_t.h"
 
 #ifdef AUTOMATIC_CURRENT_CONTROL
   bool auto_current_control = 0;
diff --git a/Marlin/src/gcode/gcode.cpp b/Marlin/src/gcode/gcode.cpp
index 2acdcb73de5..3d92736aeed 100644
--- a/Marlin/src/gcode/gcode.cpp
+++ b/Marlin/src/gcode/gcode.cpp
@@ -31,6 +31,7 @@ GcodeSuite gcode;
 #include "parser.h"
 #include "queue.h"
 #include "../module/motion.h"
+#include "../module/printcounter.h"
 
 #if ENABLED(PRINTCOUNTER)
   #include "../module/printcounter.h"
diff --git a/Marlin/src/lcd/ultralcd.cpp b/Marlin/src/lcd/ultralcd.cpp
index fca4f414619..49ce24d5b8f 100644
--- a/Marlin/src/lcd/ultralcd.cpp
+++ b/Marlin/src/lcd/ultralcd.cpp
@@ -32,14 +32,14 @@
 #include "../module/stepper.h"
 #include "../module/motion.h"
 #include "../module/probe.h"
+#include "../module/printcounter.h"
 #include "../gcode/gcode.h"
 #include "../gcode/queue.h"
 #include "../module/configuration_store.h"
 
 #include "../Marlin.h"
 
-#if ENABLED(PRINTCOUNTER)
-  #include "../module/printcounter.h"
+#if ENABLED(PRINTCOUNTER) && ENABLED(LCD_INFO_MENU)
   #include "../libs/duration_t.h"
 #endif
 
diff --git a/Marlin/src/lcd/ultralcd_impl_DOGM.h b/Marlin/src/lcd/ultralcd_impl_DOGM.h
index 8f1ec1f373d..6f01e29975e 100644
--- a/Marlin/src/lcd/ultralcd_impl_DOGM.h
+++ b/Marlin/src/lcd/ultralcd_impl_DOGM.h
@@ -47,7 +47,10 @@
 #endif
 
 #include "dogm/dogm_bitmaps.h"
-#include "../libs/duration_t.h"
+
+#if ENABLED(SDSUPPORT)
+  #include "../libs/duration_t.h"
+#endif
 
 #include <U8glib.h>
 
diff --git a/Marlin/src/module/printcounter.cpp b/Marlin/src/module/printcounter.cpp
index 261fd302865..8b27b3c43db 100644
--- a/Marlin/src/module/printcounter.cpp
+++ b/Marlin/src/module/printcounter.cpp
@@ -20,6 +20,10 @@
  *
  */
 
+#include "../inc/MarlinConfig.h"
+
+#if ENABLED(PRINTCOUNTER)
+
 #include "printcounter.h"
 
 #include "../Marlin.h"
@@ -95,7 +99,6 @@ void PrintCounter::saveStats() {
 
 void PrintCounter::showStats() {
   char buffer[21];
-  duration_t elapsed;
 
   SERIAL_PROTOCOLPGM(MSG_STATS);
 
@@ -112,7 +115,7 @@ void PrintCounter::showStats() {
   SERIAL_EOL();
   SERIAL_PROTOCOLPGM(MSG_STATS);
 
-  elapsed = this->data.printTime;
+  duration_t elapsed = this->data.printTime;
   elapsed.toString(buffer);
 
   SERIAL_ECHOPGM("Total time: ");
@@ -231,5 +234,14 @@ void PrintCounter::reset() {
       SERIAL_ECHOLNPGM("()");
     }
   }
-
 #endif
+
+
+PrintCounter print_job_timer = PrintCounter();
+
+#else
+
+#include "../libs/stopwatch.h"
+Stopwatch print_job_timer = Stopwatch();
+
+#endif // PRINTCOUNTER
diff --git a/Marlin/src/module/printcounter.h b/Marlin/src/module/printcounter.h
index 032cab7e0da..ab5902a52ee 100644
--- a/Marlin/src/module/printcounter.h
+++ b/Marlin/src/module/printcounter.h
@@ -175,4 +175,11 @@ class PrintCounter: public Stopwatch {
     #endif
 };
 
+// Print Job Timer
+#if ENABLED(PRINTCOUNTER)
+  extern PrintCounter print_job_timer;
+#else
+  extern Stopwatch print_job_timer;
+#endif
+
 #endif // PRINTCOUNTER_H