diff --git a/Marlin/src/Marlin.cpp b/Marlin/src/Marlin.cpp index 7d6231423b..a5bc0d2433 100644 --- a/Marlin/src/Marlin.cpp +++ b/Marlin/src/Marlin.cpp @@ -54,10 +54,6 @@ #include "libs/buzzer.h" #endif -#if (ENABLED(SWITCHING_EXTRUDER) && !DONT_SWITCH) || ENABLED(SWITCHING_NOZZLE) - #include "module/tool_change.h" -#endif - #if ENABLED(DIGIPOT_I2C) #include "feature/digipot/digipot.h" #endif @@ -138,6 +134,10 @@ #include "feature/caselight.h" #endif +#if (ENABLED(SWITCHING_EXTRUDER) && !DONT_SWITCH) || ENABLED(SWITCHING_NOZZLE) || ENABLED(PARKING_EXTRUDER) + #include "module/tool_change.h" +#endif + bool Running = true; /** @@ -320,8 +320,6 @@ void quickstop_stepper() { SYNC_PLAN_POSITION_KINEMATIC(); } -#include "gcode/control/T.h" - #if ENABLED(USE_CONTROLLER_FAN) void controllerFan() { @@ -932,13 +930,7 @@ void setup() { #endif #if ENABLED(PARKING_EXTRUDER) - #if ENABLED(PARKING_EXTRUDER_SOLENOIDS_INVERT) - pe_activate_magnet(0); - pe_activate_magnet(1); - #else - pe_deactivate_magnet(0); - pe_deactivate_magnet(1); - #endif + pe_magnet_init(); #endif } diff --git a/Marlin/src/gcode/control/T.h b/Marlin/src/gcode/control/T.cpp similarity index 91% rename from Marlin/src/gcode/control/T.h rename to Marlin/src/gcode/control/T.cpp index e45af907eb..24cd62c701 100644 --- a/Marlin/src/gcode/control/T.h +++ b/Marlin/src/gcode/control/T.cpp @@ -20,15 +20,20 @@ * */ +#include "../gcode.h" #include "../../module/tool_change.h" +#if ENABLED(DEBUG_LEVELING_FEATURE) || HOTENDS > 1 + #include "../../module/motion.h" +#endif + /** * T0-T3: Switch tool, usually switching extruders * * F[units/min] Set the movement feedrate * S1 Don't move the tool in XY after change */ -void gcode_T(uint8_t tmp_extruder) { +void GcodeSuite::T(const uint8_t tmp_extruder) { #if ENABLED(DEBUG_LEVELING_FEATURE) if (DEBUGGING(LEVELING)) { diff --git a/Marlin/src/gcode/gcode.cpp b/Marlin/src/gcode/gcode.cpp index c3a1597c06..aa8cfd6dfc 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_T(uint8_t tmp_extruder); - #if ENABLED(M100_FREE_MEMORY_WATCHER) extern void M100_dump_routine(const char * const title, const char *start, const char *end); #endif @@ -690,9 +688,7 @@ void GcodeSuite::process_next_command() { } break; - case 'T': - gcode_T(parser.codenum); - break; + case 'T': T(parser.codenum); break; // Tn: Tool Change default: parser.unknown_command_error(); } diff --git a/Marlin/src/gcode/gcode.h b/Marlin/src/gcode/gcode.h index f74ccef26f..4bf97f79c8 100644 --- a/Marlin/src/gcode/gcode.h +++ b/Marlin/src/gcode/gcode.h @@ -722,7 +722,7 @@ private: static void M999(); - static void T(uint8_t tmp_extruder); + static void T(const uint8_t tmp_extruder); }; diff --git a/Marlin/src/module/tool_change.cpp b/Marlin/src/module/tool_change.cpp index 68b8d82eaa..7363e68f51 100644 --- a/Marlin/src/module/tool_change.cpp +++ b/Marlin/src/module/tool_change.cpp @@ -84,6 +84,15 @@ #if ENABLED(PARKING_EXTRUDER) + void pe_magnet_init() { + for (uint8_t n = 0; n <= 1; ++n) + #if ENABLED(PARKING_EXTRUDER_SOLENOIDS_INVERT) + pe_activate_magnet(n); + #else + pe_deactivate_magnet(n); + #endif + } + void pe_set_magnet(const uint8_t extruder_num, const uint8_t state) { switch (extruder_num) { case 1: OUT_WRITE(SOL1_PIN, state); break; diff --git a/Marlin/src/module/tool_change.h b/Marlin/src/module/tool_change.h index cfd1c1605d..a464085d44 100644 --- a/Marlin/src/module/tool_change.h +++ b/Marlin/src/module/tool_change.h @@ -46,6 +46,8 @@ inline void pe_activate_magnet(const uint8_t extruder_num) { pe_set_magnet(extruder_num, PE_MAGNET_ON_STATE); } inline void pe_deactivate_magnet(const uint8_t extruder_num) { pe_set_magnet(extruder_num, !PE_MAGNET_ON_STATE); } + void pe_magnet_init(); + #endif // PARKING_EXTRUDER /**