aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/chelper/itersolve.c
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2020-02-24 21:59:39 -0500
committerKevin O'Connor <kevin@koconnor.net>2020-03-04 19:43:47 -0500
commitbc6c3ba92ff3a56ee148d7fddfd3d605d2f9b5d0 (patch)
tree61ac010e07c7d9af6821f6b2aa15cc2abca840ad /klippy/chelper/itersolve.c
parentd6c2e24f4cab118d173397a4fb85c46df25df510 (diff)
downloadkutter-bc6c3ba92ff3a56ee148d7fddfd3d605d2f9b5d0.tar.gz
kutter-bc6c3ba92ff3a56ee148d7fddfd3d605d2f9b5d0.tar.xz
kutter-bc6c3ba92ff3a56ee148d7fddfd3d605d2f9b5d0.zip
stepcompress: Remove "queue append" abstraction
The queue_append system predates the iterative solver - it was useful when many different kinematic functions directly added steps to the step compression queues. With the iterative solver being the only source of step generation, it is simpler to directly add steps from the iterative solver code. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy/chelper/itersolve.c')
-rw-r--r--klippy/chelper/itersolve.c13
1 files changed, 3 insertions, 10 deletions
diff --git a/klippy/chelper/itersolve.c b/klippy/chelper/itersolve.c
index 0b7c4b04..9dde391a 100644
--- a/klippy/chelper/itersolve.c
+++ b/klippy/chelper/itersolve.c
@@ -1,6 +1,6 @@
// Iterative solver for kinematic moves
//
-// Copyright (C) 2018-2019 Kevin O'Connor <kevin@koconnor.net>
+// Copyright (C) 2018-2020 Kevin O'Connor <kevin@koconnor.net>
//
// This file may be distributed under the terms of the GNU GPLv3 license.
@@ -59,15 +59,12 @@ static int32_t
itersolve_gen_steps_range(struct stepper_kinematics *sk, struct move *m
, double move_start, double move_end)
{
- struct stepcompress *sc = sk->sc;
sk_calc_callback calc_position_cb = sk->calc_position_cb;
double half_step = .5 * sk->step_dist;
- double mcu_freq = stepcompress_get_mcu_freq(sc);
double start = move_start - m->print_time, end = move_end - m->print_time;
struct timepos last = { start, sk->commanded_pos }, low = last, high = last;
double seek_time_delta = 0.000100;
- int sdir = stepcompress_get_step_dir(sc);
- struct queue_append qa = queue_append_start(sc, m->print_time, .5);
+ int sdir = stepcompress_get_step_dir(sk->sc);
for (;;) {
// Determine if next step is in forward or reverse direction
double dist = high.position - last.position;
@@ -101,16 +98,13 @@ itersolve_gen_steps_range(struct stepper_kinematics *sk, struct move *m
high.position = calc_position_cb(sk, m, high.time);
continue;
}
- int ret = queue_append_set_next_step_dir(&qa, next_sdir);
- if (ret)
- return ret;
sdir = next_sdir;
}
// Find step
double target = last.position + (sdir ? half_step : -half_step);
struct timepos next = itersolve_find_step(sk, m, low, high, target);
// Add step at given time
- int ret = queue_append(&qa, next.time * mcu_freq);
+ int ret = stepcompress_append(sk->sc, sdir, m->print_time, next.time);
if (ret)
return ret;
seek_time_delta = next.time - last.time;
@@ -123,7 +117,6 @@ itersolve_gen_steps_range(struct stepper_kinematics *sk, struct move *m
// The high range is no longer valid - recalculate it
goto seek_new_high_range;
}
- queue_append_finish(qa);
sk->commanded_pos = last.position;
if (sk->post_cb)
sk->post_cb(sk);