aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/stepper.py
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2018-06-09 14:30:22 -0400
committerKevin O'Connor <kevin@koconnor.net>2018-06-20 09:26:10 -0400
commitfc4a9e7564a51ab5275826f2a2398335ff9acc9a (patch)
tree0607a0f1b5bfef1ca99b06c167ee7902c84f0aec /klippy/stepper.py
parentca0d0135dc7c3c2a1bfb1cf49b97f039c97ca34d (diff)
downloadkutter-fc4a9e7564a51ab5275826f2a2398335ff9acc9a.tar.gz
kutter-fc4a9e7564a51ab5275826f2a2398335ff9acc9a.tar.xz
kutter-fc4a9e7564a51ab5275826f2a2398335ff9acc9a.zip
corexy: Convert corexy to use the iterative solver
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy/stepper.py')
-rw-r--r--klippy/stepper.py19
1 files changed, 18 insertions, 1 deletions
diff --git a/klippy/stepper.py b/klippy/stepper.py
index 825f636e..3ea04282 100644
--- a/klippy/stepper.py
+++ b/klippy/stepper.py
@@ -4,7 +4,7 @@
#
# This file may be distributed under the terms of the GNU GPLv3 license.
import math, logging
-import homing
+import homing, chelper
# Tracking of shared stepper enable pins
class StepperEnablePin:
@@ -155,6 +155,10 @@ class PrinterHomingStepper(PrinterStepper):
self.homing_stepper_phases = None
if self.mcu_endstop.get_mcu().is_fileoutput():
self.homing_endstop_accuracy = self.homing_stepper_phases
+ def setup_cartesian_itersolve(self, axis):
+ ffi_main, ffi_lib = chelper.get_ffi()
+ self.setup_itersolve(ffi_main.gc(
+ ffi_lib.cartesian_stepper_alloc(axis), ffi_lib.free))
def get_endstops(self):
return [(self.mcu_endstop, self.name)]
def get_homed_offset(self):
@@ -182,6 +186,7 @@ class PrinterMultiStepper(PrinterHomingStepper):
self.endstops = PrinterHomingStepper.get_endstops(self)
self.extras = []
self.all_step_const = [self.step_const]
+ self.all_step_itersolve = [self.step_itersolve]
for i in range(1, 99):
if not config.has_section(config.get_name() + str(i)):
break
@@ -189,6 +194,7 @@ class PrinterMultiStepper(PrinterHomingStepper):
extra = PrinterStepper(printer, extraconfig)
self.extras.append(extra)
self.all_step_const.append(extra.step_const)
+ self.all_step_itersolve.append(extra.step_itersolve)
extraendstop = extraconfig.get('endstop_pin', None)
if extraendstop is not None:
ppins = printer.lookup_object('pins')
@@ -198,9 +204,20 @@ class PrinterMultiStepper(PrinterHomingStepper):
else:
self.mcu_endstop.add_stepper(extra.mcu_stepper)
self.step_const = self.step_multi_const
+ self.step_itersolve = self.step_multi_itersolve
def step_multi_const(self, print_time, start_pos, dist, start_v, accel):
for step_const in self.all_step_const:
step_const(print_time, start_pos, dist, start_v, accel)
+ def step_multi_itersolve(self, cmove):
+ for step_itersolve in self.all_step_itersolve:
+ step_itersolve(cmove)
+ def setup_cartesian_itersolve(self, axis):
+ ffi_main, ffi_lib = chelper.get_ffi()
+ self.setup_itersolve(ffi_main.gc(
+ ffi_lib.cartesian_stepper_alloc(axis), ffi_lib.free))
+ for extra in self.extras:
+ extra.setup_itersolve(ffi_main.gc(
+ ffi_lib.cartesian_stepper_alloc(axis), ffi_lib.free))
def set_max_jerk(self, max_halt_velocity, max_accel):
PrinterHomingStepper.set_max_jerk(self, max_halt_velocity, max_accel)
for extra in self.extras: