diff --git a/Marlin/src/Marlin.cpp b/Marlin/src/Marlin.cpp
index ede4653aed3241a8962b44265bb84995700c8bb8..fb647284cf2e2d4d29e3941f04bffd7e61f16773 100644
--- a/Marlin/src/Marlin.cpp
+++ b/Marlin/src/Marlin.cpp
@@ -374,10 +374,6 @@ bool pin_is_protected(const int8_t pin) {
return false;
}
-#if HAS_TEMP_BED
- #include "gcode/temperature/M190.h"
-#endif
-
#include "gcode/host/M110.h"
#include "gcode/control/M111.h"
@@ -397,8 +393,6 @@ bool pin_is_protected(const int8_t pin) {
#endif
#endif
-#include "gcode/temperature/M140.h"
-
#if ENABLED(ULTIPANEL)
#include "gcode/lcd/M145.h"
#endif
diff --git a/Marlin/src/gcode/gcode.cpp b/Marlin/src/gcode/gcode.cpp
index 6f18733ef309c31288be5ad19b8d03cd10389427..c02c2f1e5148f0ec346770658a23df72d9ee0e52 100644
--- a/Marlin/src/gcode/gcode.cpp
+++ b/Marlin/src/gcode/gcode.cpp
@@ -138,14 +138,12 @@ extern void gcode_M126();
extern void gcode_M127();
extern void gcode_M128();
extern void gcode_M129();
-extern void gcode_M140();
extern void gcode_M145();
extern void gcode_M149();
extern void gcode_M150();
extern void gcode_M163();
extern void gcode_M164();
extern void gcode_M165();
-extern void gcode_M190();
extern void gcode_M201();
extern void gcode_M203();
extern void gcode_M204();
@@ -470,10 +468,10 @@ void GcodeSuite::process_next_command() {
break;
#endif
- case 140: // M140: Set bed temperature
- gcode_M140();
- break;
-
+ #if HAS_HEATER_BED && HAS_TEMP_BED
+ case 140: M140(); break; // M140: Set bed temperature
+ case 190: M190(); break; // M190: Wait for bed temperature to reach target
+ #endif
case 105: // M105: Report current temperature
M105();
@@ -484,12 +482,6 @@ void GcodeSuite::process_next_command() {
case 155: M155(); break; // M155: Set temperature auto-report interval
#endif
- #if HAS_TEMP_BED
- case 190: // M190: Wait for bed temperature to reach target
- gcode_M190();
- break;
- #endif // HAS_TEMP_BED
-
#if FAN_COUNT > 0
case 106: M106(); break; // M106: Fan On
case 107: M107(); break; // M107: Fan Off
diff --git a/Marlin/src/gcode/gcode.h b/Marlin/src/gcode/gcode.h
index 26ff7344297fe733c19fca5a566e085b18b95eed..f74ccef26f525335fe6656b556c74030f8e6a0cc 100644
--- a/Marlin/src/gcode/gcode.h
+++ b/Marlin/src/gcode/gcode.h
@@ -502,8 +502,9 @@ private:
#endif
#endif
- #if HAS_TEMP_BED
+ #if HAS_HEATER_BED && HAS_TEMP_BED
static void M140();
+ static void M190();
#endif
#if ENABLED(ULTIPANEL)
@@ -532,10 +533,6 @@ private:
#endif
#endif
- #if HAS_TEMP_BED
- static void M190();
- #endif
-
static void M200();
static void M201();
diff --git a/Marlin/src/gcode/temperature/M140.h b/Marlin/src/gcode/temperature/M140.cpp
similarity index 83%
rename from Marlin/src/gcode/temperature/M140.h
rename to Marlin/src/gcode/temperature/M140.cpp
index 3cf7d42bce11720e002b03da569e0c219a384242..f30d04c163e2c85aa583b43930b1f7747361cb29 100644
--- a/Marlin/src/gcode/temperature/M140.h
+++ b/Marlin/src/gcode/temperature/M140.cpp
@@ -20,10 +20,19 @@
*
*/
+#include "../../inc/MarlinConfig.h"
+
+#if HAS_HEATER_BED && HAS_TEMP_BED
+
+#include "../gcode.h"
+#include "../../module/temperature.h"
+
/**
* M140: Set bed temperature
*/
-void gcode_M140() {
+void GcodeSuite::M140() {
if (DEBUGGING(DRYRUN)) return;
if (parser.seenval('S')) thermalManager.setTargetBed(parser.value_celsius());
}
+
+#endif // HAS_HEATER_BED && HAS_TEMP_BED
diff --git a/Marlin/src/gcode/temperature/M190.h b/Marlin/src/gcode/temperature/M190.cpp
similarity index 89%
rename from Marlin/src/gcode/temperature/M190.h
rename to Marlin/src/gcode/temperature/M190.cpp
index c80ccc3f05ae2f01af9f8bcf85a63c329fe10fde..ef18a50ebe0404595be229d05a0bd9d4baf87550 100644
--- a/Marlin/src/gcode/temperature/M190.h
+++ b/Marlin/src/gcode/temperature/M190.cpp
@@ -20,7 +20,24 @@
*
*/
+#include "../../inc/MarlinConfig.h"
+
+#if HAS_HEATER_BED && HAS_TEMP_BED
+
#include "../gcode.h"
+#include "../../module/motion.h"
+#include "../../module/temperature.h"
+#include "../../lcd/ultralcd.h"
+
+#if ENABLED(PRINTJOB_TIMER_AUTOSTART)
+ #include "../../module/printcounter.h"
+#endif
+
+#if ENABLED(PRINTER_EVENT_LEDS)
+ #include "../../feature/leds/leds.h"
+#endif
+
+#include "../../Marlin.h" // for wait_for_heatup and idle()
#ifndef MIN_COOLING_SLOPE_DEG_BED
#define MIN_COOLING_SLOPE_DEG_BED 1.50
@@ -33,7 +50,7 @@
* M190: Sxxx Wait for bed current temp to reach target temp. Waits only when heating
* Rxxx Wait for bed current temp to reach target temp. Waits when heating and cooling
*/
-void gcode_M190() {
+void GcodeSuite::M190() {
if (DEBUGGING(DRYRUN)) return;
LCD_MESSAGEPGM(MSG_BED_HEATING);
@@ -65,7 +82,7 @@ void gcode_M190() {
KEEPALIVE_STATE(NOT_BUSY);
#endif
- gcode.target_extruder = active_extruder; // for print_heaterstates
+ target_extruder = active_extruder; // for print_heaterstates
#if ENABLED(PRINTER_EVENT_LEDS)
const float start_temp = thermalManager.degBed();
@@ -97,7 +114,7 @@ void gcode_M190() {
}
idle();
- gcode.refresh_cmd_timeout(); // to prevent stepper_inactive_time from running out
+ refresh_cmd_timeout(); // to prevent stepper_inactive_time from running out
const float temp = thermalManager.degBed();
@@ -149,3 +166,5 @@ void gcode_M190() {
KEEPALIVE_STATE(IN_HANDLER);
#endif
}
+
+#endif // HAS_HEATER_BED && HAS_TEMP_BED