diff --git a/Marlin/src/Marlin.cpp b/Marlin/src/Marlin.cpp index 9d94342790..20bb9de54f 100644 --- a/Marlin/src/Marlin.cpp +++ b/Marlin/src/Marlin.cpp @@ -352,10 +352,6 @@ bool pin_is_protected(const int8_t pin) { return false; } -#if ENABLED(EXT_SOLENOID) - #include "gcode/control/M380_M381.h" -#endif - #include "gcode/control/M400.h" #if HAS_BED_PROBE diff --git a/Marlin/src/gcode/control/M380_M381.h b/Marlin/src/feature/solenoid.cpp similarity index 89% rename from Marlin/src/gcode/control/M380_M381.h rename to Marlin/src/feature/solenoid.cpp index dfa056254e..dcb63cd866 100644 --- a/Marlin/src/gcode/control/M380_M381.h +++ b/Marlin/src/feature/solenoid.cpp @@ -20,9 +20,15 @@ * */ +#include "../inc/MarlinConfig.h" + #if ENABLED(EXT_SOLENOID) -void enable_solenoid(const uint8_t num) { +#include "solenoid.h" + +#include "../module/motion.h" // for active_extruder + +inline void enable_solenoid(const uint8_t num) { switch (num) { case 0: OUT_WRITE(SOL0_PIN, HIGH); @@ -72,22 +78,4 @@ void disable_all_solenoids() { #endif } -/** - * M380: Enable solenoid on the active extruder - */ -void gcode_M380() { - - enable_solenoid_on_active_extruder(); - -} - -/** - * M381: Disable all solenoids - */ -void gcode_M381() { - - disable_all_solenoids(); - -} - #endif // EXT_SOLENOID diff --git a/Marlin/src/feature/solenoid.h b/Marlin/src/feature/solenoid.h new file mode 100644 index 0000000000..5959b99a4e --- /dev/null +++ b/Marlin/src/feature/solenoid.h @@ -0,0 +1,29 @@ +/** + * 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 . + * + */ + +#ifndef __SOLENOID_H__ +#define __SOLENOID_H__ + +void enable_solenoid_on_active_extruder(); +void disable_all_solenoids(); + +#endif // __SOLENOID_H__ diff --git a/Marlin/src/gcode/control/M380_M381.cpp b/Marlin/src/gcode/control/M380_M381.cpp new file mode 100644 index 0000000000..5ebca12657 --- /dev/null +++ b/Marlin/src/gcode/control/M380_M381.cpp @@ -0,0 +1,40 @@ +/** + * 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 . + * + */ + +#include "../../inc/MarlinConfig.h" + +#if ENABLED(EXT_SOLENOID) + +#include "../gcode.h" +#include "../../feature/solenoid.h" + +/** + * M380: Enable solenoid on the active extruder + */ +void GcodeSuite::M380() { enable_solenoid_on_active_extruder(); } + +/** + * M381: Disable all solenoids + */ +void GcodeSuite::M381() { disable_all_solenoids(); } + +#endif // EXT_SOLENOID diff --git a/Marlin/src/gcode/gcode.cpp b/Marlin/src/gcode/gcode.cpp index 8186fe787f..95b8bffcb5 100644 --- a/Marlin/src/gcode/gcode.cpp +++ b/Marlin/src/gcode/gcode.cpp @@ -122,8 +122,6 @@ extern void gcode_M165(); extern void gcode_M350(); extern void gcode_M351(); extern void gcode_M355(); -extern void gcode_M380(); -extern void gcode_M381(); extern void gcode_M400(); extern void gcode_M401(); extern void gcode_M402(); @@ -597,12 +595,8 @@ void GcodeSuite::process_next_command() { #endif #if ENABLED(EXT_SOLENOID) - case 380: // M380: Activate solenoid on active extruder - gcode_M380(); - break; - case 381: // M381: Disable all solenoids - gcode_M381(); - break; + case 380: M380(); break; // M380: Activate solenoid on active extruder + case 381: M381(); break; // M381: Disable all solenoids #endif case 400: // M400: Finish all moves diff --git a/Marlin/src/module/tool_change.cpp b/Marlin/src/module/tool_change.cpp index 665b2bb7f3..a52473cc92 100644 --- a/Marlin/src/module/tool_change.cpp +++ b/Marlin/src/module/tool_change.cpp @@ -34,6 +34,10 @@ #include "../gcode/gcode.h" // for dwell() #endif +#if ENABLED(EXT_SOLENOID) && !ENABLED(PARKING_EXTRUDER) + #include "../feature/solenoid.h" +#endif + #if ENABLED(SWITCHING_EXTRUDER) #if EXTRUDERS > 3