diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2018-07-13 11:24:36 -0400 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2018-07-13 11:37:36 -0400 |
commit | a31c31aed43a6852880ec3e47f0621c811b0e2d0 (patch) | |
tree | 96ce46dcf70c86526078baaad5067388709c3b64 /klippy/mcu.py | |
parent | b9885965195d1e25cbfec887e5794c59f775f897 (diff) | |
download | kutter-a31c31aed43a6852880ec3e47f0621c811b0e2d0.tar.gz kutter-a31c31aed43a6852880ec3e47f0621c811b0e2d0.tar.xz kutter-a31c31aed43a6852880ec3e47f0621c811b0e2d0.zip |
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 <kevin@koconnor.net>
Diffstat (limited to 'klippy/mcu.py')
-rw-r--r-- | klippy/mcu.py | 16 |
1 files changed, 10 insertions, 6 deletions
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) |