aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/chelper/kin_cartesian.c
diff options
context:
space:
mode:
authorTircown <74233386+Tircown@users.noreply.github.com>2021-06-28 00:37:05 +0200
committerGitHub <noreply@github.com>2021-06-27 18:37:05 -0400
commit4d559633e3a3f9e4aba585c30422c8f5772f2b46 (patch)
tree0b15dfaa99198277ff53fe7c0a1fbacc70882510 /klippy/chelper/kin_cartesian.c
parent274d52729ae9ba377a958b85b546e306e83b8a1b (diff)
downloadkutter-4d559633e3a3f9e4aba585c30422c8f5772f2b46.tar.gz
kutter-4d559633e3a3f9e4aba585c30422c8f5772f2b46.tar.xz
kutter-4d559633e3a3f9e4aba585c30422c8f5772f2b46.zip
kinematics: Add dual_carriage to hybrid-corexyz (#4296)
- Add dual_carriage abilities for hybrid-corexy and hybrid-corexz - Introduce the module idex_mode - Fix add_stepper to the correct rail in hybrid-corexy Signed-off-by: Fabrice GALLET <tircown@gmail.com>
Diffstat (limited to 'klippy/chelper/kin_cartesian.c')
-rw-r--r--klippy/chelper/kin_cartesian.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/klippy/chelper/kin_cartesian.c b/klippy/chelper/kin_cartesian.c
index 86569d4a..3b1c8cba 100644
--- a/klippy/chelper/kin_cartesian.c
+++ b/klippy/chelper/kin_cartesian.c
@@ -49,3 +49,42 @@ cartesian_stepper_alloc(char axis)
}
return sk;
}
+
+static double
+cart_reverse_stepper_x_calc_position(struct stepper_kinematics *sk
+ , struct move *m, double move_time)
+{
+ return -move_get_coord(m, move_time).x;
+}
+
+static double
+cart_reverse_stepper_y_calc_position(struct stepper_kinematics *sk
+ , struct move *m, double move_time)
+{
+ return -move_get_coord(m, move_time).y;
+}
+
+static double
+cart_reverse_stepper_z_calc_position(struct stepper_kinematics *sk
+ , struct move *m, double move_time)
+{
+ return -move_get_coord(m, move_time).z;
+}
+
+struct stepper_kinematics * __visible
+cartesian_reverse_stepper_alloc(char axis)
+{
+ struct stepper_kinematics *sk = malloc(sizeof(*sk));
+ memset(sk, 0, sizeof(*sk));
+ if (axis == 'x') {
+ sk->calc_position_cb = cart_reverse_stepper_x_calc_position;
+ sk->active_flags = AF_X;
+ } else if (axis == 'y') {
+ sk->calc_position_cb = cart_reverse_stepper_y_calc_position;
+ sk->active_flags = AF_Y;
+ } else if (axis == 'z') {
+ sk->calc_position_cb = cart_reverse_stepper_z_calc_position;
+ sk->active_flags = AF_Z;
+ }
+ return sk;
+}