diff options
author | Tircown <74233386+Tircown@users.noreply.github.com> | 2021-06-28 00:37:05 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-27 18:37:05 -0400 |
commit | 4d559633e3a3f9e4aba585c30422c8f5772f2b46 (patch) | |
tree | 0b15dfaa99198277ff53fe7c0a1fbacc70882510 /klippy/chelper/kin_cartesian.c | |
parent | 274d52729ae9ba377a958b85b546e306e83b8a1b (diff) | |
download | kutter-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.c | 39 |
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; +} |