diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2020-02-24 21:59:39 -0500 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2020-03-04 19:43:47 -0500 |
commit | bc6c3ba92ff3a56ee148d7fddfd3d605d2f9b5d0 (patch) | |
tree | 61ac010e07c7d9af6821f6b2aa15cc2abca840ad /klippy/chelper/itersolve.c | |
parent | d6c2e24f4cab118d173397a4fb85c46df25df510 (diff) | |
download | kutter-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.c | 13 |
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); |