Browse Source

🏗️ Planner::busy() (#23145)

vanilla_fb_2.0.x
espr14 2 years ago
committed by Scott Lahteine
parent
commit
c2a674d2c1
  1. 12
      Marlin/src/module/planner.cpp
  2. 11
      Marlin/src/module/planner.h

12
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

11
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();

Loading…
Cancel
Save