motion_queuing: Add new module to help with motion queues and flushing

Create a new module to assist with host management of motion queues.
Register all MCU_stepper objects with this module and use the module
for step generation.

All steppers will now automatically generate steps whenever
toolhead._advance_flush_time() is invoked.  It is no longer necessary
for callers to individually call stepper.generate_steps().

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
Kevin O'Connor
2025-08-04 21:57:45 -04:00
parent 126275d1f4
commit 9399e738bc
17 changed files with 29 additions and 37 deletions

View File

@@ -0,0 +1,19 @@
# Helper code for low-level motion queuing and flushing
#
# Copyright (C) 2025 Kevin O'Connor <kevin@koconnor.net>
#
# This file may be distributed under the terms of the GNU GPLv3 license.
import logging
class PrinterMotionQueuing:
def __init__(self, config):
self.printer = config.get_printer()
self.steppers = []
def register_stepper(self, config, stepper):
self.steppers.append(stepper)
def flush_motion_queues(self, must_flush_time, max_step_gen_time):
for stepper in self.steppers:
stepper.generate_steps(max_step_gen_time)
def load_config(config):
return PrinterMotionQueuing(config)