From 59608086e630c45167209e20d9a924f89e0908c6 Mon Sep 17 00:00:00 2001
From: Scott Lahteine <github@thinkyhead.com>
Date: Sun, 17 Sep 2017 18:48:55 -0500
Subject: [PATCH] Move M350_M351 to cpp

---
 Marlin/src/Marlin.cpp                         |  5 ---
 Marlin/src/gcode/control/M350.h               | 33 -------------------
 .../gcode/control/{M351.h => M350_M351.cpp}   | 23 ++++++++++++-
 Marlin/src/gcode/gcode.cpp                    | 15 ++-------
 4 files changed, 25 insertions(+), 51 deletions(-)
 delete mode 100644 Marlin/src/gcode/control/M350.h
 rename Marlin/src/gcode/control/{M351.h => M350_M351.cpp} (70%)

diff --git a/Marlin/src/Marlin.cpp b/Marlin/src/Marlin.cpp
index d371bf9b5f..9ccd57566c 100644
--- a/Marlin/src/Marlin.cpp
+++ b/Marlin/src/Marlin.cpp
@@ -358,11 +358,6 @@ void quickstop_stepper() {
   SYNC_PLAN_POSITION_KINEMATIC();
 }
 
-#if HAS_MICROSTEPS
-  #include "gcode/control/M350.h"
-  #include "gcode/control/M351.h"
-#endif
-
 #include "gcode/feature/caselight/M355.h"
 
 #if ENABLED(MIXING_EXTRUDER)
diff --git a/Marlin/src/gcode/control/M350.h b/Marlin/src/gcode/control/M350.h
deleted file mode 100644
index 32fdb97782..0000000000
--- a/Marlin/src/gcode/control/M350.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-/**
- * M350: Set axis microstepping modes. S sets mode for all drivers.
- *
- * Warning: Steps-per-unit remains unchanged.
- */
-void gcode_M350() {
-  if (parser.seen('S')) for (int i = 0; i <= 4; i++) stepper.microstep_mode(i, parser.value_byte());
-  LOOP_XYZE(i) if (parser.seen(axis_codes[i])) stepper.microstep_mode(i, parser.value_byte());
-  if (parser.seen('B')) stepper.microstep_mode(4, parser.value_byte());
-  stepper.microstep_readings();
-}
diff --git a/Marlin/src/gcode/control/M351.h b/Marlin/src/gcode/control/M350_M351.cpp
similarity index 70%
rename from Marlin/src/gcode/control/M351.h
rename to Marlin/src/gcode/control/M350_M351.cpp
index 1a8b2e6fd3..cd75e7b2b1 100644
--- a/Marlin/src/gcode/control/M351.h
+++ b/Marlin/src/gcode/control/M350_M351.cpp
@@ -20,11 +20,30 @@
  *
  */
 
+#include "../../inc/MarlinConfig.h"
+
+#if HAS_MICROSTEPS
+
+#include "../gcode.h"
+#include "../../module/stepper.h"
+
+/**
+ * M350: Set axis microstepping modes. S sets mode for all drivers.
+ *
+ * Warning: Steps-per-unit remains unchanged.
+ */
+void GcodeSuite::M350() {
+  if (parser.seen('S')) for (uint8_t i = 0; i <= 4; i++) stepper.microstep_mode(i, parser.value_byte());
+  LOOP_XYZE(i) if (parser.seen(axis_codes[i])) stepper.microstep_mode(i, parser.value_byte());
+  if (parser.seen('B')) stepper.microstep_mode(4, parser.value_byte());
+  stepper.microstep_readings();
+}
+
 /**
  * M351: Toggle MS1 MS2 pins directly with axis codes X Y Z E B
  *       S# determines MS1 or MS2, X# sets the pin high/low.
  */
-void gcode_M351() {
+void GcodeSuite::M351() {
   if (parser.seenval('S')) switch (parser.value_byte()) {
     case 1:
       LOOP_XYZE(i) if (parser.seenval(axis_codes[i])) stepper.microstep_ms(i, parser.value_byte(), -1);
@@ -37,3 +56,5 @@ void gcode_M351() {
   }
   stepper.microstep_readings();
 }
+
+#endif // HAS_MICROSTEPS
diff --git a/Marlin/src/gcode/gcode.cpp b/Marlin/src/gcode/gcode.cpp
index f899f700e2..971da19aac 100644
--- a/Marlin/src/gcode/gcode.cpp
+++ b/Marlin/src/gcode/gcode.cpp
@@ -119,8 +119,6 @@ void GcodeSuite::dwell(millis_t time) {
 extern void gcode_M163();
 extern void gcode_M164();
 extern void gcode_M165();
-extern void gcode_M350();
-extern void gcode_M351();
 extern void gcode_M355();
 extern void gcode_M999();
 extern void gcode_T(uint8_t tmp_extruder);
@@ -674,16 +672,9 @@ void GcodeSuite::process_next_command() {
       #endif
 
       #if HAS_MICROSTEPS
-
-        case 350: // M350: Set microstepping mode. Warning: Steps per unit remains unchanged. S code sets stepping mode for all drivers.
-          gcode_M350();
-          break;
-
-        case 351: // M351: Toggle MS1 MS2 pins directly, S# determines MS1 or MS2, X# sets the pin high/low.
-          gcode_M351();
-          break;
-
-      #endif // HAS_MICROSTEPS
+        case 350: M350(); break;    // M350: Set microstepping mode. Warning: Steps per unit remains unchanged. S code sets stepping mode for all drivers.
+        case 351: M351(); break;    // M351: Toggle MS1 MS2 pins directly, S# determines MS1 or MS2, X# sets the pin high/low.
+      #endif
 
       case 355: // M355 set case light brightness
         gcode_M355();