From c2a674d2c114eee94debf9f649e66cbdb06afdbb Mon Sep 17 00:00:00 2001 From: espr14 Date: Wed, 17 Nov 2021 18:07:11 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=8F=97=EF=B8=8F=20Planner::busy()=20(#231?= =?UTF-8?q?45)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/planner.cpp | 12 ++---------- Marlin/src/module/planner.h | 11 +++++++++++ 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/Marlin/src/module/planner.cpp b/Marlin/src/module/planner.cpp index 11460fa67a..e19684a7b5 100644 --- a/Marlin/src/module/planner.cpp +++ b/Marlin/src/module/planner.cpp @@ -91,10 +91,6 @@ #include "../feature/power.h" #endif -#if ENABLED(EXTERNAL_CLOSED_LOOP_CONTROLLER) - #include "../feature/closedloop.h" -#endif - #if ENABLED(BACKLASH_COMPENSATION) #include "../feature/backlash.h" #endif @@ -1763,13 +1759,9 @@ float Planner::get_axis_position_mm(const AxisEnum axis) { } /** - * Block until all buffered steps are executed / cleaned + * Block until the planner is finished processing */ -void Planner::synchronize() { - while (has_blocks_queued() || cleaning_buffer_counter - || TERN0(EXTERNAL_CLOSED_LOOP_CONTROLLER, CLOSED_LOOP_WAITING()) - ) idle(); -} +void Planner::synchronize() { while (busy()) idle(); } /** * Planner::_buffer_steps diff --git a/Marlin/src/module/planner.h b/Marlin/src/module/planner.h index 16d136be45..60574b65f0 100644 --- a/Marlin/src/module/planner.h +++ b/Marlin/src/module/planner.h @@ -75,6 +75,10 @@ #define IS_PAGE(B) false #endif +#if ENABLED(EXTERNAL_CLOSED_LOOP_CONTROLLER) + #include "../feature/closedloop.h" +#endif + // Feedrate for manual moves #ifdef MANUAL_FEEDRATE constexpr xyze_feedrate_t _mf = MANUAL_FEEDRATE, @@ -865,6 +869,13 @@ class Planner { // Triggered position of an axis in mm (not core-savvy) static float triggered_position_mm(const AxisEnum axis); + // Blocks are queued, or we're running out moves, or the closed loop controller is waiting + static inline bool busy() { + return (has_blocks_queued() || cleaning_buffer_counter + || TERN0(EXTERNAL_CLOSED_LOOP_CONTROLLER, CLOSED_LOOP_WAITING()) + ); + } + // Block until all buffered steps are executed / cleaned static void synchronize();