diff --git a/Marlin/src/gcode/calibrate/M666.cpp b/Marlin/src/gcode/calibrate/M666.cpp index 96688f2bbf..6a87e2944b 100644 --- a/Marlin/src/gcode/calibrate/M666.cpp +++ b/Marlin/src/gcode/calibrate/M666.cpp @@ -59,30 +59,49 @@ #endif } -#elif ENABLED(Z_DUAL_ENDSTOPS) // !DELTA && ENABLED(Z_DUAL_ENDSTOPS) +#elif ENABLED(X_DUAL_ENDSTOPS) || ENABLED(Y_DUAL_ENDSTOPS) || ENABLED(Z_DUAL_ENDSTOPS) #include "../../module/endstops.h" /** - * M666: For a Dual Endstop setup, set offsets for any 2nd endstops. + * M666: Set Dual Endstops offsets for X, Y, and/or Z. + * With no parameters report current offsets. */ - void GcodeSuite::M666() { - SERIAL_ECHOPGM("Dual Endstop Adjustment (mm): "); + inline void gcode_M666() { + bool report = true; #if ENABLED(X_DUAL_ENDSTOPS) - if (parser.seen('X')) endstops.x_endstop_adj = parser.value_linear_units(); - SERIAL_ECHOPAIR(" X", endstops.x_endstop_adj); + if (parser.seen('X')) { + endstops.x_endstop_adj = parser.value_linear_units(); + report = false; + } #endif #if ENABLED(Y_DUAL_ENDSTOPS) - if (parser.seen('Y')) endstops.y_endstop_adj = parser.value_linear_units(); - SERIAL_ECHOPAIR(" Y", endstops.y_endstop_adj); + if (parser.seen('Y')) { + endstops.y_endstop_adj = parser.value_linear_units(); + report = false; + } #endif #if ENABLED(Z_DUAL_ENDSTOPS) - if (parser.seen('Z')) endstops.z_endstop_adj = parser.value_linear_units(); - SERIAL_ECHOPAIR(" Z", endstops.z_endstop_adj); + if (parser.seen('Z')) { + endstops.z_endstop_adj = parser.value_linear_units(); + report = false; + } #endif - SERIAL_EOL(); + if (report) { + SERIAL_ECHOPGM("Dual Endstop Adjustment (mm): "); + #if ENABLED(X_DUAL_ENDSTOPS) + SERIAL_ECHOPAIR(" X", endstops.x_endstop_adj); + #endif + #if ENABLED(Y_DUAL_ENDSTOPS) + SERIAL_ECHOPAIR(" Y", endstops.y_endstop_adj); + #endif + #if ENABLED(Z_DUAL_ENDSTOPS) + SERIAL_ECHOPAIR(" Z", endstops.z_endstop_adj); + #endif + SERIAL_EOL(); + } } -#endif +#endif // X_DUAL_ENDSTOPS || Y_DUAL_ENDSTOPS || Z_DUAL_ENDSTOPS #endif // DELTA || Z_DUAL_ENDSTOPS diff --git a/Marlin/src/gcode/gcode.h b/Marlin/src/gcode/gcode.h index 5c905bbc3a..e04cc73f48 100644 --- a/Marlin/src/gcode/gcode.h +++ b/Marlin/src/gcode/gcode.h @@ -201,7 +201,7 @@ * M603 - Configure filament change: "M603 T U L". (Requires ADVANCED_PAUSE_FEATURE) * M605 - Set Dual X-Carriage movement mode: "M605 S [X] [R]". (Requires DUAL_X_CARRIAGE) * M665 - Set delta configurations: "M665 L R S A B C I J K" (Requires DELTA) - * M666 - Set delta endstop adjustment. (Requires DELTA) + * M666 - Set/get offsets for delta (Requires DELTA) or dual endstops (Requires [XYZ]_DUAL_ENDSTOPS). * M701 - Load filament (requires FILAMENT_LOAD_UNLOAD_GCODES) * M702 - Unload filament (requires FILAMENT_LOAD_UNLOAD_GCODES) * M851 - Set Z probe's Z offset in current units. (Negative = below the nozzle.)