stepcompress: Pass clock to stepcompress_set_last_position()
Using sc->last_step_clock for the last position marker does not work properly, because the stepper.py code calls stepcompress_reset() prior to calling stepcompress_set_last_position(). Fix by passing an explicit clock to stepcompress_set_last_position(). Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
parent
3176150050
commit
b17ec3d2e9
|
@ -43,7 +43,7 @@ defs_stepcompress = """
|
||||||
void stepcompress_free(struct stepcompress *sc);
|
void stepcompress_free(struct stepcompress *sc);
|
||||||
int stepcompress_reset(struct stepcompress *sc, uint64_t last_step_clock);
|
int stepcompress_reset(struct stepcompress *sc, uint64_t last_step_clock);
|
||||||
int stepcompress_set_last_position(struct stepcompress *sc
|
int stepcompress_set_last_position(struct stepcompress *sc
|
||||||
, int64_t last_position);
|
, uint64_t clock, int64_t last_position);
|
||||||
int64_t stepcompress_find_past_position(struct stepcompress *sc
|
int64_t stepcompress_find_past_position(struct stepcompress *sc
|
||||||
, uint64_t clock);
|
, uint64_t clock);
|
||||||
int stepcompress_queue_msg(struct stepcompress *sc
|
int stepcompress_queue_msg(struct stepcompress *sc
|
||||||
|
|
|
@ -553,7 +553,8 @@ stepcompress_reset(struct stepcompress *sc, uint64_t last_step_clock)
|
||||||
|
|
||||||
// Set last_position in the stepcompress object
|
// Set last_position in the stepcompress object
|
||||||
int __visible
|
int __visible
|
||||||
stepcompress_set_last_position(struct stepcompress *sc, int64_t last_position)
|
stepcompress_set_last_position(struct stepcompress *sc, uint64_t clock
|
||||||
|
, int64_t last_position)
|
||||||
{
|
{
|
||||||
int ret = stepcompress_flush(sc, UINT64_MAX);
|
int ret = stepcompress_flush(sc, UINT64_MAX);
|
||||||
if (ret)
|
if (ret)
|
||||||
|
@ -563,7 +564,7 @@ stepcompress_set_last_position(struct stepcompress *sc, int64_t last_position)
|
||||||
// Add a marker to the history list
|
// Add a marker to the history list
|
||||||
struct history_steps *hs = malloc(sizeof(*hs));
|
struct history_steps *hs = malloc(sizeof(*hs));
|
||||||
memset(hs, 0, sizeof(*hs));
|
memset(hs, 0, sizeof(*hs));
|
||||||
hs->first_clock = hs->last_clock = sc->last_step_clock;
|
hs->first_clock = hs->last_clock = clock;
|
||||||
hs->start_position = last_position;
|
hs->start_position = last_position;
|
||||||
list_add_head(&hs->node, &sc->history_list);
|
list_add_head(&hs->node, &sc->history_list);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -22,7 +22,7 @@ int stepcompress_append(struct stepcompress *sc, int sdir
|
||||||
, double print_time, double step_time);
|
, double print_time, double step_time);
|
||||||
int stepcompress_commit(struct stepcompress *sc);
|
int stepcompress_commit(struct stepcompress *sc);
|
||||||
int stepcompress_reset(struct stepcompress *sc, uint64_t last_step_clock);
|
int stepcompress_reset(struct stepcompress *sc, uint64_t last_step_clock);
|
||||||
int stepcompress_set_last_position(struct stepcompress *sc
|
int stepcompress_set_last_position(struct stepcompress *sc, uint64_t clock
|
||||||
, int64_t last_position);
|
, int64_t last_position);
|
||||||
int64_t stepcompress_find_past_position(struct stepcompress *sc
|
int64_t stepcompress_find_past_position(struct stepcompress *sc
|
||||||
, uint64_t clock);
|
, uint64_t clock);
|
||||||
|
|
|
@ -151,7 +151,10 @@ class MCU_stepper:
|
||||||
last_pos = params['pos']
|
last_pos = params['pos']
|
||||||
if self._invert_dir:
|
if self._invert_dir:
|
||||||
last_pos = -last_pos
|
last_pos = -last_pos
|
||||||
ret = ffi_lib.stepcompress_set_last_position(self._stepqueue, last_pos)
|
print_time = self._mcu.estimated_print_time(params['#receive_time'])
|
||||||
|
clock = self._mcu.print_time_to_clock(print_time)
|
||||||
|
ret = ffi_lib.stepcompress_set_last_position(self._stepqueue, clock,
|
||||||
|
last_pos)
|
||||||
if ret:
|
if ret:
|
||||||
raise error("Internal error in stepcompress")
|
raise error("Internal error in stepcompress")
|
||||||
self._set_mcu_position(last_pos)
|
self._set_mcu_position(last_pos)
|
||||||
|
|
Loading…
Reference in New Issue