From 33e00b6cd60248d0399e63aa637eaca0b8f3e112 Mon Sep 17 00:00:00 2001
From: Scott Lahteine <github@thinkyhead.com>
Date: Sat, 16 Sep 2017 01:07:00 -0500
Subject: [PATCH] Move M3-M5 to cpp

---
 Marlin/src/Marlin.cpp                           |  4 ----
 Marlin/src/gcode/control/{M3-M5.h => M3-M5.cpp} | 17 +++++++++++++----
 Marlin/src/gcode/gcode.cpp                      | 16 +++++-----------
 3 files changed, 18 insertions(+), 19 deletions(-)
 rename Marlin/src/gcode/control/{M3-M5.h => M3-M5.cpp} (95%)

diff --git a/Marlin/src/Marlin.cpp b/Marlin/src/Marlin.cpp
index 6a30cd6d51..2493e3fdff 100644
--- a/Marlin/src/Marlin.cpp
+++ b/Marlin/src/Marlin.cpp
@@ -357,10 +357,6 @@ void suicide() {
  ***************** GCode Handlers *****************
  **************************************************/
 
-#if ENABLED(SPINDLE_LASER_ENABLE)
-  #include "gcode/control/M3-M5.h"
-#endif
-
 #include "gcode/control/M17.h"
 
 #if ENABLED(ADVANCED_PAUSE_FEATURE)
diff --git a/Marlin/src/gcode/control/M3-M5.h b/Marlin/src/gcode/control/M3-M5.cpp
similarity index 95%
rename from Marlin/src/gcode/control/M3-M5.h
rename to Marlin/src/gcode/control/M3-M5.cpp
index c7d1ef502e..e361dc1262 100644
--- a/Marlin/src/gcode/control/M3-M5.h
+++ b/Marlin/src/gcode/control/M3-M5.cpp
@@ -20,6 +20,13 @@
  *
  */
 
+#include "../../inc/MarlinConfig.h"
+
+#if ENABLED(SPINDLE_LASER_ENABLE)
+
+#include "../gcode.h"
+#include "../../module/stepper.h"
+
 /**
  * M3: Spindle Clockwise
  * M4: Spindle Counter-clockwise
@@ -70,7 +77,7 @@ inline void ocr_val_mode() {
   analogWrite(SPINDLE_LASER_PWM_PIN, spindle_laser_power);
 }
 
-void gcode_M3_M4(bool is_M3) {
+void GcodeSuite::M3_M4(bool is_M3) {
 
   stepper.synchronize();   // wait until previous movement commands (G0/G0/G2/G3) have completed before playing with the spindle
   #if SPINDLE_DIR_CHANGE
@@ -118,10 +125,12 @@ void gcode_M3_M4(bool is_M3) {
 }
 
 /**
-* M5 turn off spindle
-*/
-void gcode_M5() {
+ * M5 turn off spindle
+ */
+void GcodeSuite::M5() {
   stepper.synchronize();
   WRITE(SPINDLE_LASER_ENABLE_PIN, !SPINDLE_LASER_ENABLE_INVERT);
   delay_for_power_down();
 }
+
+#endif // SPINDLE_LASER_ENABLE
diff --git a/Marlin/src/gcode/gcode.cpp b/Marlin/src/gcode/gcode.cpp
index 08265d8980..e69c9fce6a 100644
--- a/Marlin/src/gcode/gcode.cpp
+++ b/Marlin/src/gcode/gcode.cpp
@@ -116,8 +116,6 @@ void GcodeSuite::dwell(millis_t time) {
 //
 // Placeholders for non-migrated codes
 //
-extern void gcode_M3_M4(bool is_M3);
-extern void gcode_M5();
 extern void gcode_M17();
 extern void gcode_M18_M84();
 extern void gcode_M20();
@@ -417,16 +415,12 @@ void GcodeSuite::process_next_command() {
       #endif // ULTIPANEL
 
       #if ENABLED(SPINDLE_LASER_ENABLE)
-        case 3:
-          gcode_M3_M4(true);   // M3: turn spindle/laser on, set laser/spindle power/speed, set rotation direction CW
-          break;               // synchronizes with movement commands
-        case 4:
-          gcode_M3_M4(false);  // M4: turn spindle/laser on, set laser/spindle power/speed, set rotation direction CCW
-          break;               // synchronizes with movement commands
-        case 5:
-          gcode_M5();     // M5 - turn spindle/laser off
-          break;          // synchronizes with movement commands
+        // These synchronize with movement commands...
+        case 3: M3_M4(true ); break;  // M3: turn spindle/laser on, set laser/spindle power/speed, set rotation direction CW
+        case 4: M3_M4(false); break;  // M4: turn spindle/laser on, set laser/spindle power/speed, set rotation direction CCW
+        case 5: M5(); break;          // M5 - turn spindle/laser off
       #endif
+
       case 17: // M17: Enable all stepper motors
         gcode_M17();
         break;