From 3c76bda2d8d1f198a9e6dcb94aca6e383c9d5392 Mon Sep 17 00:00:00 2001 From: GMagician Date: Fri, 18 May 2018 20:16:59 +0200 Subject: [PATCH 1/2] Fix switching extruder `DONT_SWITCH` got lost along the way. Replace it with `DO_SWITCH_EXTRUDER` and adjust the code. --- Marlin/src/Marlin.cpp | 4 ++-- Marlin/src/gcode/config/M218.cpp | 2 +- Marlin/src/inc/Conditionals_LCD.h | 2 ++ Marlin/src/lcd/ultralcd.cpp | 2 +- Marlin/src/module/configuration_store.cpp | 2 +- Marlin/src/module/tool_change.cpp | 4 +--- Marlin/src/module/tool_change.h | 2 +- 7 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Marlin/src/Marlin.cpp b/Marlin/src/Marlin.cpp index a8cc78308..57a38963f 100644 --- a/Marlin/src/Marlin.cpp +++ b/Marlin/src/Marlin.cpp @@ -146,7 +146,7 @@ #include "feature/fanmux.h" #endif -#if (ENABLED(SWITCHING_EXTRUDER) && !DONT_SWITCH) || ENABLED(SWITCHING_NOZZLE) || ENABLED(PARKING_EXTRUDER) +#if DO_SWITCH_EXTRUDER || ENABLED(SWITCHING_NOZZLE) || ENABLED(PARKING_EXTRUDER) #include "module/tool_change.h" #endif @@ -864,7 +864,7 @@ void setup() { setup_endstop_interrupts(); #endif - #if ENABLED(SWITCHING_EXTRUDER) && !DONT_SWITCH + #if DO_SWITCH_EXTRUDER move_extruder_servo(0); // Initialize extruder servo #endif diff --git a/Marlin/src/gcode/config/M218.cpp b/Marlin/src/gcode/config/M218.cpp index 69452e347..c68c297f5 100644 --- a/Marlin/src/gcode/config/M218.cpp +++ b/Marlin/src/gcode/config/M218.cpp @@ -37,7 +37,7 @@ * T * X * Y - * Z - Available with DUAL_X_CARRIAGE and SWITCHING_NOZZLE + * Z - Available with DUAL_X_CARRIAGE, SWITCHING_NOZZLE and PARKING_EXTRUDER */ void GcodeSuite::M218() { if (get_target_extruder_from_command() || target_extruder == 0) return; diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h index a9e4fd733..9d414ee41 100644 --- a/Marlin/src/inc/Conditionals_LCD.h +++ b/Marlin/src/inc/Conditionals_LCD.h @@ -445,6 +445,8 @@ #define E_MANUAL EXTRUDERS #endif +#define DO_SWITCH_EXTRUDER (ENABLED(SWITCHING_EXTRUDER) && (DISABLED(SWITCHING_NOZZLE) || SWITCHING_EXTRUDER_SERVO_NR != SWITCHING_NOZZLE_SERVO_NR)) + /** * DISTINCT_E_FACTORS affects how some E factors are accessed */ diff --git a/Marlin/src/lcd/ultralcd.cpp b/Marlin/src/lcd/ultralcd.cpp index a6802f386..f456ad3ad 100644 --- a/Marlin/src/lcd/ultralcd.cpp +++ b/Marlin/src/lcd/ultralcd.cpp @@ -3270,7 +3270,7 @@ void lcd_quick_feedback(const bool clear_buttons) { else MENU_ITEM(gcode, MSG_AUTO_HOME, PSTR("G28")); - #if ENABLED(SWITCHING_EXTRUDER) + #if ENABLED(SWITCHING_EXTRUDER) || ENABLED(SWITCHING_NOZZLE) #if EXTRUDERS == 4 switch (active_extruder) { diff --git a/Marlin/src/module/configuration_store.cpp b/Marlin/src/module/configuration_store.cpp index 4c7aa664f..483775baa 100644 --- a/Marlin/src/module/configuration_store.cpp +++ b/Marlin/src/module/configuration_store.cpp @@ -2126,7 +2126,7 @@ void MarlinSettings::reset(PORTARG_SOLO) { SERIAL_ECHOPAIR_P(port, " M218 T", (int)e); SERIAL_ECHOPAIR_P(port, " X", LINEAR_UNIT(hotend_offset[X_AXIS][e])); SERIAL_ECHOPAIR_P(port, " Y", LINEAR_UNIT(hotend_offset[Y_AXIS][e])); - #if ENABLED(DUAL_X_CARRIAGE) || ENABLED(SWITCHING_NOZZLE) ||ENABLED(PARKING_EXTRUDER) + #if ENABLED(DUAL_X_CARRIAGE) || ENABLED(SWITCHING_NOZZLE) || ENABLED(PARKING_EXTRUDER) SERIAL_ECHOPAIR_P(port, " Z", LINEAR_UNIT(hotend_offset[Z_AXIS][e])); #endif SERIAL_EOL_P(port); diff --git a/Marlin/src/module/tool_change.cpp b/Marlin/src/module/tool_change.cpp index 2701a7707..ee8659e12 100644 --- a/Marlin/src/module/tool_change.cpp +++ b/Marlin/src/module/tool_change.cpp @@ -57,7 +57,7 @@ #include "../feature/fanmux.h" #endif -#if ENABLED(SWITCHING_EXTRUDER) +#if DO_SWITCH_EXTRUDER #if EXTRUDERS > 3 #define REQ_ANGLES 4 @@ -347,8 +347,6 @@ inline void invalid_extruder_error(const uint8_t e) { #endif // DUAL_X_CARRIAGE -#define DO_SWITCH_EXTRUDER (SWITCHING_EXTRUDER_SERVO_NR != SWITCHING_NOZZLE_SERVO_NR) - /** * Perform a tool-change, which may result in moving the * previous tool out of the way and the new tool into place. diff --git a/Marlin/src/module/tool_change.h b/Marlin/src/module/tool_change.h index a464085d4..53da00d17 100644 --- a/Marlin/src/module/tool_change.h +++ b/Marlin/src/module/tool_change.h @@ -25,7 +25,7 @@ #include "../inc/MarlinConfig.h" -#if ENABLED(SWITCHING_EXTRUDER) +#if DO_SWITCH_EXTRUDER void move_extruder_servo(const uint8_t e); #endif From 83d42f33e140680a3328990cc3bf899b7dd84370 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 19 May 2018 16:37:27 -0500 Subject: [PATCH 2/2] Add HAS_HOTEND_OFFSET_Z conditional --- Marlin/src/gcode/config/M218.cpp | 4 ++-- Marlin/src/inc/Conditionals_LCD.h | 3 --- Marlin/src/inc/Conditionals_post.h | 3 ++- Marlin/src/module/configuration_store.cpp | 2 +- 4 files changed, 5 insertions(+), 7 deletions(-) diff --git a/Marlin/src/gcode/config/M218.cpp b/Marlin/src/gcode/config/M218.cpp index c68c297f5..47910e074 100644 --- a/Marlin/src/gcode/config/M218.cpp +++ b/Marlin/src/gcode/config/M218.cpp @@ -52,7 +52,7 @@ void GcodeSuite::M218() { report = false; } - #if ENABLED(DUAL_X_CARRIAGE) || ENABLED(SWITCHING_NOZZLE) || ENABLED(PARKING_EXTRUDER) + #if HAS_HOTEND_OFFSET_Z if (parser.seenval('Z')) { hotend_offset[Z_AXIS][target_extruder] = parser.value_linear_units(); report = false; @@ -67,7 +67,7 @@ void GcodeSuite::M218() { SERIAL_ECHO(hotend_offset[X_AXIS][e]); SERIAL_CHAR(','); SERIAL_ECHO(hotend_offset[Y_AXIS][e]); - #if ENABLED(DUAL_X_CARRIAGE) || ENABLED(SWITCHING_NOZZLE) || ENABLED(PARKING_EXTRUDER) + #if HAS_HOTEND_OFFSET_Z SERIAL_CHAR(','); SERIAL_ECHO(hotend_offset[Z_AXIS][e]); #endif diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h index 9d414ee41..d11aeec5d 100644 --- a/Marlin/src/inc/Conditionals_LCD.h +++ b/Marlin/src/inc/Conditionals_LCD.h @@ -413,9 +413,6 @@ #undef HOTEND_OFFSET_Y #else // Two hotends #define HOTENDS EXTRUDERS - #if ENABLED(SWITCHING_NOZZLE) && !defined(HOTEND_OFFSET_Z) - #define HOTEND_OFFSET_Z { 0 } - #endif #endif #define HOTEND_LOOP() for (int8_t e = 0; e < HOTENDS; e++) diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index a57f34d84..338c76ffe 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -434,6 +434,7 @@ /** * Default hotend offsets, if not defined */ +#define HAS_HOTEND_OFFSET_Z (HOTENDS > 1 && (ENABLED(DUAL_X_CARRIAGE) || ENABLED(SWITCHING_NOZZLE) || ENABLED(PARKING_EXTRUDER))) #if HOTENDS > 1 #ifndef HOTEND_OFFSET_X #define HOTEND_OFFSET_X { 0 } // X offsets for each extruder @@ -441,7 +442,7 @@ #ifndef HOTEND_OFFSET_Y #define HOTEND_OFFSET_Y { 0 } // Y offsets for each extruder #endif - #if !defined(HOTEND_OFFSET_Z) && (ENABLED(DUAL_X_CARRIAGE) || ENABLED(SWITCHING_NOZZLE)) + #if HAS_HOTEND_OFFSET_Z && !defined(HOTEND_OFFSET_Z) #define HOTEND_OFFSET_Z { 0 } #endif #endif diff --git a/Marlin/src/module/configuration_store.cpp b/Marlin/src/module/configuration_store.cpp index 483775baa..a5f791bbb 100644 --- a/Marlin/src/module/configuration_store.cpp +++ b/Marlin/src/module/configuration_store.cpp @@ -2126,7 +2126,7 @@ void MarlinSettings::reset(PORTARG_SOLO) { SERIAL_ECHOPAIR_P(port, " M218 T", (int)e); SERIAL_ECHOPAIR_P(port, " X", LINEAR_UNIT(hotend_offset[X_AXIS][e])); SERIAL_ECHOPAIR_P(port, " Y", LINEAR_UNIT(hotend_offset[Y_AXIS][e])); - #if ENABLED(DUAL_X_CARRIAGE) || ENABLED(SWITCHING_NOZZLE) || ENABLED(PARKING_EXTRUDER) + #if HAS_HOTEND_OFFSET_Z SERIAL_ECHOPAIR_P(port, " Z", LINEAR_UNIT(hotend_offset[Z_AXIS][e])); #endif SERIAL_EOL_P(port);