From 8ca0b2fd683e62192821fbe2022f897483294804 Mon Sep 17 00:00:00 2001
From: Scott Lahteine <github@thinkyhead.com>
Date: Sun, 17 Sep 2017 18:56:29 -0500
Subject: [PATCH] Move M355 caselight to cpp

---
 Marlin/src/Marlin.cpp                         |  8 ++--
 Marlin/src/feature/caselight.cpp              | 46 +++++++++++++++++++
 Marlin/src/feature/caselight.h                | 31 +++++++++++++
 .../feature/caselight/{M355.h => M355.cpp}    | 28 +++--------
 Marlin/src/gcode/gcode.cpp                    |  5 +-
 5 files changed, 89 insertions(+), 29 deletions(-)
 create mode 100644 Marlin/src/feature/caselight.cpp
 create mode 100644 Marlin/src/feature/caselight.h
 rename Marlin/src/gcode/feature/caselight/{M355.h => M355.cpp} (73%)

diff --git a/Marlin/src/Marlin.cpp b/Marlin/src/Marlin.cpp
index 9ccd57566c..eb05267872 100644
--- a/Marlin/src/Marlin.cpp
+++ b/Marlin/src/Marlin.cpp
@@ -130,6 +130,10 @@
   #include "feature/leds/tempstat.h"
 #endif
 
+#if HAS_CASE_LIGHT
+  #include "feature/caselight.h"
+#endif
+
 bool Running = true;
 
 /**
@@ -358,8 +362,6 @@ void quickstop_stepper() {
   SYNC_PLAN_POSITION_KINEMATIC();
 }
 
-#include "gcode/feature/caselight/M355.h"
-
 #if ENABLED(MIXING_EXTRUDER)
   #include "gcode/feature/mixing/M163.h"
   #if MIXING_VIRTUAL_TOOLS > 1
@@ -859,8 +861,6 @@ void setup() {
   #endif
 
   #if HAS_CASE_LIGHT
-    case_light_on = CASE_LIGHT_DEFAULT_ON;
-    case_light_brightness = CASE_LIGHT_DEFAULT_BRIGHTNESS;
     update_case_light();
   #endif
 
diff --git a/Marlin/src/feature/caselight.cpp b/Marlin/src/feature/caselight.cpp
new file mode 100644
index 0000000000..6d755ff9d5
--- /dev/null
+++ b/Marlin/src/feature/caselight.cpp
@@ -0,0 +1,46 @@
+/**
+ * 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/>.
+ *
+ */
+
+#include "../inc/MarlinConfig.h"
+
+#if HAS_CASE_LIGHT
+
+int case_light_brightness = CASE_LIGHT_DEFAULT_BRIGHTNESS;
+bool case_light_on = CASE_LIGHT_DEFAULT_ON;
+    
+#ifndef INVERT_CASE_LIGHT
+  #define INVERT_CASE_LIGHT false
+#endif
+
+void update_case_light() {
+  SET_OUTPUT(CASE_LIGHT_PIN);
+  uint8_t case_light_bright = (uint8_t)case_light_brightness;
+  if (case_light_on) {
+    if (USEABLE_HARDWARE_PWM(CASE_LIGHT_PIN)) {
+      analogWrite(CASE_LIGHT_PIN, INVERT_CASE_LIGHT ? 255 - case_light_brightness : case_light_brightness );
+    }
+    else WRITE(CASE_LIGHT_PIN, INVERT_CASE_LIGHT ? LOW : HIGH);
+  }
+  else WRITE(CASE_LIGHT_PIN, INVERT_CASE_LIGHT ? HIGH : LOW);
+}
+
+#endif // HAS_CASE_LIGHT
diff --git a/Marlin/src/feature/caselight.h b/Marlin/src/feature/caselight.h
new file mode 100644
index 0000000000..98b8c7d52b
--- /dev/null
+++ b/Marlin/src/feature/caselight.h
@@ -0,0 +1,31 @@
+/**
+ * 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/>.
+ *
+ */
+
+#ifndef __CASELIGHT_H__
+#define __CASELIGHT_H__
+
+extern int case_light_brightness;  // LCD routine wants INT
+extern bool case_light_on;
+
+void update_case_light();
+
+#endif // __CASELIGHT_H__
diff --git a/Marlin/src/gcode/feature/caselight/M355.h b/Marlin/src/gcode/feature/caselight/M355.cpp
similarity index 73%
rename from Marlin/src/gcode/feature/caselight/M355.h
rename to Marlin/src/gcode/feature/caselight/M355.cpp
index 4a8edaf8af..2daebf61ad 100644
--- a/Marlin/src/gcode/feature/caselight/M355.h
+++ b/Marlin/src/gcode/feature/caselight/M355.cpp
@@ -20,27 +20,13 @@
  *
  */
 
+#include "../../gcode.h"
+
+#include "../../../inc/MarlinConfig.h"
+
 #if HAS_CASE_LIGHT
-
-  #ifndef INVERT_CASE_LIGHT
-    #define INVERT_CASE_LIGHT false
-  #endif
-  int case_light_brightness;  // LCD routine wants INT
-  bool case_light_on;
-
-  void update_case_light() {
-    pinMode(CASE_LIGHT_PIN, OUTPUT); // digitalWrite doesn't set the port mode
-    uint8_t case_light_bright = (uint8_t)case_light_brightness;
-    if (case_light_on) {
-      if (USEABLE_HARDWARE_PWM(CASE_LIGHT_PIN)) {
-        analogWrite(CASE_LIGHT_PIN, INVERT_CASE_LIGHT ? 255 - case_light_brightness : case_light_brightness );
-      }
-      else WRITE(CASE_LIGHT_PIN, INVERT_CASE_LIGHT ? LOW : HIGH);
-    }
-    else WRITE(CASE_LIGHT_PIN, INVERT_CASE_LIGHT ? HIGH : LOW);
-  }
-
-#endif // HAS_CASE_LIGHT
+  #include "../../../feature/caselight.h"
+#endif
 
 /**
  * M355: Turn case light on/off and set brightness
@@ -54,7 +40,7 @@
  *   M355 P200 S0 turns off the light & sets the brightness level
  *   M355 S1 turns on the light with a brightness of 200 (assuming a PWM pin)
  */
-void gcode_M355() {
+void GcodeSuite::M355() {
   #if HAS_CASE_LIGHT
     uint8_t args = 0;
     if (parser.seenval('P')) ++args, case_light_brightness = parser.value_byte();
diff --git a/Marlin/src/gcode/gcode.cpp b/Marlin/src/gcode/gcode.cpp
index 971da19aac..065bf1fe26 100644
--- a/Marlin/src/gcode/gcode.cpp
+++ b/Marlin/src/gcode/gcode.cpp
@@ -119,7 +119,6 @@ void GcodeSuite::dwell(millis_t time) {
 extern void gcode_M163();
 extern void gcode_M164();
 extern void gcode_M165();
-extern void gcode_M355();
 extern void gcode_M999();
 extern void gcode_T(uint8_t tmp_extruder);
 
@@ -676,9 +675,7 @@ void GcodeSuite::process_next_command() {
         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();
-        break;
+      case 355: M355(); break;      // M355: Set case light brightness
 
       #if ENABLED(DEBUG_GCODE_PARSER)
         case 800: