From e5ca60acf593416ebdca29d60f98c02d3fc1644c Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 23 Jan 2018 13:08:46 -0600 Subject: [PATCH] Patch G29 no_action for A and Q --- Marlin/src/gcode/bedlevel/abl/G29.cpp | 32 +++++++++++++++++---------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/Marlin/src/gcode/bedlevel/abl/G29.cpp b/Marlin/src/gcode/bedlevel/abl/G29.cpp index 88336d1e42..e4269579fd 100644 --- a/Marlin/src/gcode/bedlevel/abl/G29.cpp +++ b/Marlin/src/gcode/bedlevel/abl/G29.cpp @@ -132,32 +132,40 @@ */ void GcodeSuite::G29() { + #if ENABLED(DEBUG_LEVELING_FEATURE) || ENABLED(PROBE_MANUALLY) + const bool seenQ = parser.seen('Q'); + #else + constexpr bool seenQ = false; + #endif + // G29 Q is also available if debugging #if ENABLED(DEBUG_LEVELING_FEATURE) - const bool query = parser.seen('Q'); const uint8_t old_debug_flags = marlin_debug_flags; - if (query) marlin_debug_flags |= DEBUG_LEVELING; + if (seenQ) marlin_debug_flags |= DEBUG_LEVELING; if (DEBUGGING(LEVELING)) { DEBUG_POS(">>> G29", current_position); log_machine_info(); } marlin_debug_flags = old_debug_flags; #if DISABLED(PROBE_MANUALLY) - if (query) return; + if (seenQ) return; #endif #endif #if ENABLED(PROBE_MANUALLY) - const bool seenA = parser.seen('A'), seenQ = parser.seen('Q'), no_action = seenA || seenQ; + const bool seenA = parser.seen('A'); + #else + constexpr bool seenA = false; #endif - #if ENABLED(DEBUG_LEVELING_FEATURE) && DISABLED(PROBE_MANUALLY) - const bool faux = parser.boolval('C'); - #elif ENABLED(PROBE_MANUALLY) - const bool faux = no_action; - #else - bool constexpr faux = false; - #endif + const bool no_action = seenA || seenQ, + faux = + #if ENABLED(DEBUG_LEVELING_FEATURE) && DISABLED(PROBE_MANUALLY) + parser.boolval('C') + #else + no_action + #endif + ; // Don't allow auto-leveling without homing first if (axis_unhomed_error()) return; @@ -388,7 +396,7 @@ void GcodeSuite::G29() { // Disable auto bed leveling during G29. // Be formal so G29 can be done successively without G28. - set_bed_leveling_enabled(false); + if (!no_action) set_bed_leveling_enabled(false); #if HAS_BED_PROBE // Deploy the probe. Probe will raise if needed.