From 2e89685154dbae09f97dc4ac95022cad56b40365 Mon Sep 17 00:00:00 2001
From: Scott Lahteine <github@thinkyhead.com>
Date: Sun, 17 Sep 2017 18:34:04 -0500
Subject: [PATCH] Move TMC2130 g-codes to cpp

---
 Marlin/src/Marlin.cpp                         | 21 +++----------
 .../feature/trinamic/{M906.h => M906.cpp}     | 16 ++++++++--
 .../feature/trinamic/{M911.h => M911.cpp}     | 14 +++++++--
 .../feature/trinamic/{M912.h => M912.cpp}     | 14 +++++++--
 .../feature/trinamic/{M913.h => M913.cpp}     | 17 ++++++++--
 .../feature/trinamic/{M914.h => M914.cpp}     | 16 ++++++++--
 Marlin/src/gcode/gcode.cpp                    | 31 +++----------------
 7 files changed, 73 insertions(+), 56 deletions(-)
 rename Marlin/src/gcode/feature/trinamic/{M906.h => M906.cpp} (85%)
 rename Marlin/src/gcode/feature/trinamic/{M911.h => M911.cpp} (86%)
 rename Marlin/src/gcode/feature/trinamic/{M912.h => M912.cpp} (85%)
 rename Marlin/src/gcode/feature/trinamic/{M913.h => M913.cpp} (83%)
 rename Marlin/src/gcode/feature/trinamic/{M914.h => M914.cpp} (77%)

diff --git a/Marlin/src/Marlin.cpp b/Marlin/src/Marlin.cpp
index 1204f944f1..6aaaa73c06 100644
--- a/Marlin/src/Marlin.cpp
+++ b/Marlin/src/Marlin.cpp
@@ -95,6 +95,10 @@
   #include "HAL/HAL_endstop_interrupts.h"
 #endif
 
+#if ENABLED(HAVE_TMC2130)
+  #include "feature/tmc2130.h"
+#endif
+
 #if ENABLED(SDSUPPORT)
   CardReader card;
 #endif
@@ -114,10 +118,6 @@
   #include "feature/bedlevel/bedlevel.h"
 #endif
 
-#if ENABLED(SENSORLESS_HOMING)
-  #include "feature/tmc2130.h"
-#endif
-
 #if ENABLED(ADVANCED_PAUSE_FEATURE) && ENABLED(PAUSE_PARK_NO_STEPPER_TIMEOUT)
   #include "feature/pause.h"
 #endif
@@ -359,19 +359,6 @@ void quickstop_stepper() {
   SYNC_PLAN_POSITION_KINEMATIC();
 }
 
-#if ENABLED(HAVE_TMC2130)
-  #include "feature/tmc2130.h"
-  #include "gcode/feature/trinamic/M906.h"
-  #include "gcode/feature/trinamic/M911.h"
-  #include "gcode/feature/trinamic/M912.h"
-  #if ENABLED(HYBRID_THRESHOLD)
-    #include "gcode/feature/trinamic/M913.h"
-  #endif
-  #if ENABLED(SENSORLESS_HOMING)
-    #include "gcode/feature/trinamic/M914.h"
-  #endif
-#endif
-
 #include "gcode/feature/digipot/M907.h"
 
 #if HAS_DIGIPOTSS || ENABLED(DAC_STEPPER_CURRENT)
diff --git a/Marlin/src/gcode/feature/trinamic/M906.h b/Marlin/src/gcode/feature/trinamic/M906.cpp
similarity index 85%
rename from Marlin/src/gcode/feature/trinamic/M906.h
rename to Marlin/src/gcode/feature/trinamic/M906.cpp
index cb5c7883d6..ec3fcfe556 100644
--- a/Marlin/src/gcode/feature/trinamic/M906.h
+++ b/Marlin/src/gcode/feature/trinamic/M906.cpp
@@ -20,12 +20,20 @@
  *
  */
 
-static void tmc2130_get_current(TMC2130Stepper &st, const char name) {
+#include "../../../inc/MarlinConfig.h"
+
+#if ENABLED(HAVE_TMC2130)
+
+#include "../../gcode.h"
+#include "../../../feature/tmc2130.h"
+#include "../../../module/stepper_indirection.h"
+
+inline void tmc2130_get_current(TMC2130Stepper &st, const char name) {
   SERIAL_CHAR(name);
   SERIAL_ECHOPGM(" axis driver current: ");
   SERIAL_ECHOLN(st.getCurrent());
 }
-static void tmc2130_set_current(TMC2130Stepper &st, const char name, const int mA) {
+inline void tmc2130_set_current(TMC2130Stepper &st, const char name, const int mA) {
   st.setCurrent(mA, R_SENSE, HOLD_MULTIPLIER);
   tmc2130_get_current(st, name);
 }
@@ -37,7 +45,7 @@ static void tmc2130_set_current(TMC2130Stepper &st, const char name, const int m
  * S1: Enable automatic current control
  * S0: Disable
  */
-void gcode_M906() {
+void GcodeSuite::M906() {
   uint16_t values[XYZE];
   LOOP_XYZE(i)
     values[i] = parser.intval(axis_codes[i]);
@@ -63,3 +71,5 @@ void gcode_M906() {
     if (parser.seen('S')) auto_current_control = parser.value_bool();
   #endif
 }
+
+#endif // HAVE_TMC2130
diff --git a/Marlin/src/gcode/feature/trinamic/M911.h b/Marlin/src/gcode/feature/trinamic/M911.cpp
similarity index 86%
rename from Marlin/src/gcode/feature/trinamic/M911.h
rename to Marlin/src/gcode/feature/trinamic/M911.cpp
index 26e85ee18e..9ffbbeae91 100644
--- a/Marlin/src/gcode/feature/trinamic/M911.h
+++ b/Marlin/src/gcode/feature/trinamic/M911.cpp
@@ -20,7 +20,15 @@
  *
  */
 
-static void tmc2130_report_otpw(TMC2130Stepper &st, const char name) {
+#include "../../../inc/MarlinConfig.h"
+
+#if ENABLED(HAVE_TMC2130)
+
+#include "../../gcode.h"
+#include "../../../feature/tmc2130.h"
+#include "../../../module/stepper_indirection.h"
+
+inline void tmc2130_report_otpw(TMC2130Stepper &st, const char name) {
   SERIAL_CHAR(name);
   SERIAL_ECHOPGM(" axis temperature prewarn triggered: ");
   serialprintPGM(st.getOTPW() ? PSTR("true") : PSTR("false"));
@@ -31,7 +39,7 @@ static void tmc2130_report_otpw(TMC2130Stepper &st, const char name) {
  * M911: Report TMC2130 stepper driver overtemperature pre-warn flag
  * The flag is held by the library and persist until manually cleared by M912
  */
-void gcode_M911() {
+void GcodeSuite::M911() {
   const bool reportX = parser.seen('X'), reportY = parser.seen('Y'), reportZ = parser.seen('Z'), reportE = parser.seen('E'),
            reportAll = (!reportX && !reportY && !reportZ && !reportE) || (reportX && reportY && reportZ && reportE);
   #if ENABLED(X_IS_TMC2130)
@@ -47,3 +55,5 @@ void gcode_M911() {
     if (reportE || reportAll) tmc2130_report_otpw(stepperE0, 'E');
   #endif
 }
+
+#endif // HAVE_TMC2130
diff --git a/Marlin/src/gcode/feature/trinamic/M912.h b/Marlin/src/gcode/feature/trinamic/M912.cpp
similarity index 85%
rename from Marlin/src/gcode/feature/trinamic/M912.h
rename to Marlin/src/gcode/feature/trinamic/M912.cpp
index 9a124d5cf5..2931623c7a 100644
--- a/Marlin/src/gcode/feature/trinamic/M912.h
+++ b/Marlin/src/gcode/feature/trinamic/M912.cpp
@@ -20,7 +20,15 @@
  *
  */
 
-static void tmc2130_clear_otpw(TMC2130Stepper &st, const char name) {
+#include "../../../inc/MarlinConfig.h"
+
+#if ENABLED(HAVE_TMC2130)
+
+#include "../../gcode.h"
+#include "../../../feature/tmc2130.h"
+#include "../../../module/stepper_indirection.h"
+
+inline void tmc2130_clear_otpw(TMC2130Stepper &st, const char name) {
   st.clear_otpw();
   SERIAL_CHAR(name);
   SERIAL_ECHOLNPGM(" prewarn flag cleared");
@@ -29,7 +37,7 @@ static void tmc2130_clear_otpw(TMC2130Stepper &st, const char name) {
 /**
  * M912: Clear TMC2130 stepper driver overtemperature pre-warn flag held by the library
  */
-void gcode_M912() {
+void GcodeSuite::M912() {
   const bool clearX = parser.seen('X'), clearY = parser.seen('Y'), clearZ = parser.seen('Z'), clearE = parser.seen('E'),
            clearAll = (!clearX && !clearY && !clearZ && !clearE) || (clearX && clearY && clearZ && clearE);
   #if ENABLED(X_IS_TMC2130)
@@ -45,3 +53,5 @@ void gcode_M912() {
     if (clearE || clearAll) tmc2130_clear_otpw(stepperE0, 'E');
   #endif
 }
+
+#endif // HAVE_TMC2130
diff --git a/Marlin/src/gcode/feature/trinamic/M913.h b/Marlin/src/gcode/feature/trinamic/M913.cpp
similarity index 83%
rename from Marlin/src/gcode/feature/trinamic/M913.h
rename to Marlin/src/gcode/feature/trinamic/M913.cpp
index c7ec3e4748..523f94b359 100644
--- a/Marlin/src/gcode/feature/trinamic/M913.h
+++ b/Marlin/src/gcode/feature/trinamic/M913.cpp
@@ -20,12 +20,21 @@
  *
  */
 
-static void tmc2130_get_pwmthrs(TMC2130Stepper &st, const char name, const uint16_t spmm) {
+#include "../../../inc/MarlinConfig.h"
+
+#if ENABLED(HAVE_TMC2130) && ENABLED(HYBRID_THRESHOLD)
+
+#include "../../gcode.h"
+#include "../../../feature/tmc2130.h"
+#include "../../../module/planner.h"
+#include "../../../module/stepper_indirection.h"
+
+inline void tmc2130_get_pwmthrs(TMC2130Stepper &st, const char name, const uint16_t spmm) {
   SERIAL_CHAR(name);
   SERIAL_ECHOPGM(" stealthChop max speed set to ");
   SERIAL_ECHOLN(12650000UL * st.microsteps() / (256 * st.stealth_max_speed() * spmm));
 }
-static void tmc2130_set_pwmthrs(TMC2130Stepper &st, const char name, const int32_t thrs, const uint32_t spmm) {
+inline void tmc2130_set_pwmthrs(TMC2130Stepper &st, const char name, const int32_t thrs, const uint32_t spmm) {
   st.stealth_max_speed(12650000UL * st.microsteps() / (256 * thrs * spmm));
   tmc2130_get_pwmthrs(st, name, spmm);
 }
@@ -33,7 +42,7 @@ static void tmc2130_set_pwmthrs(TMC2130Stepper &st, const char name, const int32
 /**
  * M913: Set HYBRID_THRESHOLD speed.
  */
-void gcode_M913() {
+void GcodeSuite::M913() {
   uint16_t values[XYZE];
   LOOP_XYZE(i)
     values[i] = parser.intval(axis_codes[i]);
@@ -55,3 +64,5 @@ void gcode_M913() {
     else tmc2130_get_pwmthrs(stepperE0, 'E', planner.axis_steps_per_mm[E_AXIS]);
   #endif
 }
+
+#endif // HAVE_TMC2130 && HYBRID_THRESHOLD
diff --git a/Marlin/src/gcode/feature/trinamic/M914.h b/Marlin/src/gcode/feature/trinamic/M914.cpp
similarity index 77%
rename from Marlin/src/gcode/feature/trinamic/M914.h
rename to Marlin/src/gcode/feature/trinamic/M914.cpp
index 7c5ef3bf30..25aefc1364 100644
--- a/Marlin/src/gcode/feature/trinamic/M914.h
+++ b/Marlin/src/gcode/feature/trinamic/M914.cpp
@@ -20,12 +20,20 @@
  *
  */
 
-static void tmc2130_get_sgt(TMC2130Stepper &st, const char name) {
+#include "../../../inc/MarlinConfig.h"
+
+#if ENABLED(HAVE_TMC2130) && ENABLED(SENSORLESS_HOMING)
+
+#include "../../gcode.h"
+#include "../../../feature/tmc2130.h"
+#include "../../../module/stepper_indirection.h"
+
+inline void tmc2130_get_sgt(TMC2130Stepper &st, const char name) {
   SERIAL_CHAR(name);
   SERIAL_ECHOPGM(" driver homing sensitivity set to ");
   SERIAL_ECHOLN(st.sgt());
 }
-static void tmc2130_set_sgt(TMC2130Stepper &st, const char name, const int8_t sgt_val) {
+inline void tmc2130_set_sgt(TMC2130Stepper &st, const char name, const int8_t sgt_val) {
   st.sgt(sgt_val);
   tmc2130_get_sgt(st, name);
 }
@@ -33,7 +41,7 @@ static void tmc2130_set_sgt(TMC2130Stepper &st, const char name, const int8_t sg
 /**
  * M914: Set SENSORLESS_HOMING sensitivity.
  */
-void gcode_M914() {
+void GcodeSuite::M914() {
   #if ENABLED(X_IS_TMC2130)
     if (parser.seen(axis_codes[X_AXIS])) tmc2130_set_sgt(stepperX, 'X', parser.value_int());
     else tmc2130_get_sgt(stepperX, 'X');
@@ -43,3 +51,5 @@ void gcode_M914() {
     else tmc2130_get_sgt(stepperY, 'Y');
   #endif
 }
+
+#endif // HAVE_TMC2130 && SENSORLESS_HOMING
diff --git a/Marlin/src/gcode/gcode.cpp b/Marlin/src/gcode/gcode.cpp
index 3df7179084..a2dc0cec0c 100644
--- a/Marlin/src/gcode/gcode.cpp
+++ b/Marlin/src/gcode/gcode.cpp
@@ -122,11 +122,6 @@ extern void gcode_M165();
 extern void gcode_M350();
 extern void gcode_M351();
 extern void gcode_M355();
-extern void gcode_M906();
-extern void gcode_M911();
-extern void gcode_M912();
-extern void gcode_M913();
-extern void gcode_M914();
 extern void gcode_M907();
 extern void gcode_M908();
 extern void gcode_M909();
@@ -660,12 +655,6 @@ void GcodeSuite::process_next_command() {
         case 900: M900(); break;  // M900: Set advance K factor.
       #endif
 
-      #if ENABLED(HAVE_TMC2130)
-        case 906: // M906: Set motor current in milliamps using axis codes X, Y, Z, E
-          gcode_M906();
-          break;
-      #endif
-
       case 907: // M907: Set digital trimpot motor current using axis codes.
         gcode_M907();
         break;
@@ -691,24 +680,14 @@ void GcodeSuite::process_next_command() {
       #endif // HAS_DIGIPOTSS || DAC_STEPPER_CURRENT
 
       #if ENABLED(HAVE_TMC2130)
-        case 911: // M911: Report TMC2130 prewarn triggered flags
-          gcode_M911();
-          break;
-
-        case 912: // M911: Clear TMC2130 prewarn triggered flags
-          gcode_M912();
-          break;
-
+        case 906: M906(); break;    // M906: Set motor current in milliamps using axis codes X, Y, Z, E
+        case 911: M911(); break;    // M911: Report TMC2130 prewarn triggered flags
+        case 912: M912(); break;    // M912: Clear TMC2130 prewarn triggered flags
         #if ENABLED(HYBRID_THRESHOLD)
-          case 913: // M913: Set HYBRID_THRESHOLD speed.
-            gcode_M913();
-            break;
+          case 913: M913(); break;  // M913: Set HYBRID_THRESHOLD speed.
         #endif
-
         #if ENABLED(SENSORLESS_HOMING)
-          case 914: // M914: Set SENSORLESS_HOMING sensitivity.
-            gcode_M914();
-            break;
+          case 914: M914(); break;  // M914: Set SENSORLESS_HOMING sensitivity.
         #endif
       #endif