mirror of
git://soft.sys114.com/klipper
synced 2026-02-11 00:58:07 +09:00
stepcompress: Do all step rounding in C code
Commitsf0cefebfand8f331f08changed 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 <kevin@koconnor.net>
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user