diff --git a/Marlin/src/gcode/bedlevel/abl/G29.cpp b/Marlin/src/gcode/bedlevel/abl/G29.cpp index 6ff09b3a7a..d97fc48906 100644 --- a/Marlin/src/gcode/bedlevel/abl/G29.cpp +++ b/Marlin/src/gcode/bedlevel/abl/G29.cpp @@ -70,21 +70,14 @@ #endif #endif -/** - * @brief Do some things before returning from G29. - * @param retry : true if the G29 can and should be retried. false if the failure is too serious. - * @param did : true if the leveling procedure completed successfully. - */ static void pre_g29_return(const bool retry, const bool did) { if (!retry) { TERN_(FULL_REPORT_TO_HOST_FEATURE, set_and_report_grblstate(M_IDLE, false)); } - #if DISABLED(G29_RETRY_AND_RECOVER) - if (!retry || did) { - TERN_(DWIN_CREALITY_LCD, dwinLevelingDone()); - TERN_(EXTENSIBLE_UI, ExtUI::onLevelingDone()); - } - #endif + if (did) { + TERN_(DWIN_CREALITY_LCD, dwinLevelingDone()); + TERN_(EXTENSIBLE_UI, ExtUI::onLevelingDone()); + } } #define G29_RETURN(retry, did) do{ \ diff --git a/Marlin/src/gcode/gcode.cpp b/Marlin/src/gcode/gcode.cpp index 9ba0fe1e74..9e81c7d4bc 100644 --- a/Marlin/src/gcode/gcode.cpp +++ b/Marlin/src/gcode/gcode.cpp @@ -289,27 +289,22 @@ void GcodeSuite::dwell(millis_t time) { void GcodeSuite::G29_with_retry() { uint8_t retries = G29_MAX_RETRIES; - bool fail = false; - for (;;) { - fail = G29(); // G29 should return true for failed probes ONLY - if (!fail || !retries) break; - event_probe_recover(); - --retries; + while (G29()) { // G29 should return true for failed probes ONLY + if (retries) { + event_probe_recover(); + --retries; + } + else { + event_probe_failure(); + return; + } } - if (fail) { - event_probe_failure(); - TERN_(G29_HALT_ON_FAILURE, return); - } - else { - TERN_(HOST_PROMPT_SUPPORT, hostui.prompt_end()); - #ifdef G29_SUCCESS_COMMANDS - process_subcommands_now(F(G29_SUCCESS_COMMANDS)); - #endif - } + TERN_(HOST_PROMPT_SUPPORT, hostui.prompt_end()); - TERN_(HAS_DWIN_E3V2_BASIC, dwinLevelingDone()); - TERN_(EXTENSIBLE_UI, ExtUI::onLevelingDone()); + #ifdef G29_SUCCESS_COMMANDS + process_subcommands_now(F(G29_SUCCESS_COMMANDS)); + #endif } #endif // G29_RETRY_AND_RECOVER