aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/mcu.py
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2018-07-13 11:24:36 -0400
committerKevin O'Connor <kevin@koconnor.net>2018-07-13 11:37:36 -0400
commita31c31aed43a6852880ec3e47f0621c811b0e2d0 (patch)
tree96ce46dcf70c86526078baaad5067388709c3b64 /klippy/mcu.py
parentb9885965195d1e25cbfec887e5794c59f775f897 (diff)
downloadkutter-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.py16
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)