From 7554c7f69423bf3d22f340a8b4851c25de855983 Mon Sep 17 00:00:00 2001 From: Kevin O'Connor Date: Thu, 10 Nov 2016 12:44:04 -0500 Subject: stepcompress: Do all step rounding in C code Commits f0cefebf and 8f331f08 changed the way the code determined what steps to take on fractional steps. Unfortunately, it was possible in some situations for the C code to round differently from the python code which could result in warnings and lost steps. Change the code so that all fractional step handling is done in the C code. Implementing the step rounding logic in one location avoids any conflicts. In order to efficiently handle the step rounding in the C code, the C code has also been extended to directly send the "set_next_step_dir" command. Signed-off-by: Kevin O'Connor --- klippy/chelper.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'klippy/chelper.py') diff --git a/klippy/chelper.py b/klippy/chelper.py index 5b7837ee..a3ce4a95 100644 --- a/klippy/chelper.py +++ b/klippy/chelper.py @@ -13,12 +13,14 @@ OTHER_FILES = ['list.h', 'serialqueue.h'] defs_stepcompress = """ struct stepcompress *stepcompress_alloc(uint32_t max_error - , uint32_t queue_step_msgid, uint32_t oid); - void stepcompress_push(struct stepcompress *sc, double step_clock); - double stepcompress_push_factor(struct stepcompress *sc + , uint32_t queue_step_msgid, uint32_t set_next_step_dir_msgid + , uint32_t invert_sdir, uint32_t oid); + void stepcompress_push(struct stepcompress *sc, double step_clock + , int32_t sdir); + int32_t stepcompress_push_factor(struct stepcompress *sc , double steps, double step_offset , double clock_offset, double factor); - double stepcompress_push_sqrt(struct stepcompress *sc + int32_t stepcompress_push_sqrt(struct stepcompress *sc , double steps, double step_offset , double clock_offset, double sqrt_offset, double factor); void stepcompress_reset(struct stepcompress *sc, uint64_t last_step_clock); -- cgit v1.2.3-70-g09d2