From a31c31aed43a6852880ec3e47f0621c811b0e2d0 Mon Sep 17 00:00:00 2001 From: Kevin O'Connor Date: Fri, 13 Jul 2018 11:24:36 -0400 Subject: mcu: Enhance itersolve stepper kinematics allocation Allocate the stepper_kinematics directly in mcu.py - that way the kinematic classes don't have to interact with the chelper code. Signed-off-by: Kevin O'Connor --- klippy/mcu.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'klippy/mcu.py') diff --git a/klippy/mcu.py b/klippy/mcu.py index c059623f..7c2789c6 100644 --- a/klippy/mcu.py +++ b/klippy/mcu.py @@ -39,12 +39,10 @@ class MCU_stepper: self._min_stop_interval = min_stop_interval def setup_step_distance(self, step_dist): self._step_dist = step_dist - def setup_itersolve(self, sk): - old_sk = self._stepper_kinematics - self._stepper_kinematics = sk - self._ffi_lib.itersolve_set_stepcompress( - sk, self._stepqueue, self._step_dist) - return old_sk + def setup_itersolve(self, alloc_func, *params): + ffi_main, ffi_lib = chelper.get_ffi() + sk = ffi_main.gc(getattr(ffi_lib, alloc_func)(*params), ffi_lib.free) + self.set_stepper_kinematics(sk) def build_config(self): max_error = self._mcu.get_max_stepper_error() min_stop_interval = max(0., self._min_stop_interval - max_error) @@ -85,6 +83,12 @@ class MCU_stepper: if mcu_pos >= 0.: return int(mcu_pos + 0.5) return int(mcu_pos - 0.5) + def set_stepper_kinematics(self, sk): + old_sk = self._stepper_kinematics + self._stepper_kinematics = sk + self._ffi_lib.itersolve_set_stepcompress( + sk, self._stepqueue, self._step_dist) + return old_sk def set_ignore_move(self, ignore_move): was_ignore = (self._itersolve_gen_steps is not self._ffi_lib.itersolve_gen_steps) -- cgit v1.2.3-70-g09d2