diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2021-07-23 12:46:14 -0400 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2021-07-29 16:35:30 -0400 |
commit | 07f0ecb4d059f653322db54064b36c9fc79bbb95 (patch) | |
tree | f3e3771e1713821a017a9d805831a70fb4fb6360 /klippy/chelper | |
parent | 45c232b2c724136aa9ef54b2858712640baacb3d (diff) | |
download | kutter-07f0ecb4d059f653322db54064b36c9fc79bbb95.tar.gz kutter-07f0ecb4d059f653322db54064b36c9fc79bbb95.tar.xz kutter-07f0ecb4d059f653322db54064b36c9fc79bbb95.zip |
trapq: Store toolhead.set_position() updates in trapq history
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy/chelper')
-rw-r--r-- | klippy/chelper/__init__.py | 2 | ||||
-rw-r--r-- | klippy/chelper/trapq.c | 17 | ||||
-rw-r--r-- | klippy/chelper/trapq.h | 2 |
3 files changed, 21 insertions, 0 deletions
diff --git a/klippy/chelper/__init__.py b/klippy/chelper/__init__.py index 97493355..c2ad802a 100644 --- a/klippy/chelper/__init__.py +++ b/klippy/chelper/__init__.py @@ -83,6 +83,8 @@ defs_trapq = """ struct trapq *trapq_alloc(void); void trapq_free(struct trapq *tq); void trapq_finalize_moves(struct trapq *tq, double print_time); + void trapq_set_position(struct trapq *tq, double print_time + , double pos_x, double pos_y, double pos_z); int trapq_extract_old(struct trapq *tq, struct pull_move *p, int max , double start_time, double end_time); """ diff --git a/klippy/chelper/trapq.c b/klippy/chelper/trapq.c index eaeb5949..2d4c2093 100644 --- a/klippy/chelper/trapq.c +++ b/klippy/chelper/trapq.c @@ -197,6 +197,23 @@ trapq_finalize_moves(struct trapq *tq, double print_time) } } +// Note a position change in the trapq history +void __visible +trapq_set_position(struct trapq *tq, double print_time + , double pos_x, double pos_y, double pos_z) +{ + // Flush all moves from trapq + trapq_finalize_moves(tq, NEVER_TIME); + + // Add a marker to the trapq history + struct move *m = move_alloc(); + m->print_time = print_time; + m->start_pos.x = pos_x; + m->start_pos.y = pos_y; + m->start_pos.z = pos_z; + list_add_head(&m->node, &tq->history); +} + // Return history of movement queue int __visible trapq_extract_old(struct trapq *tq, struct pull_move *p, int max diff --git a/klippy/chelper/trapq.h b/klippy/chelper/trapq.h index 154fe04d..dbde8d3e 100644 --- a/klippy/chelper/trapq.h +++ b/klippy/chelper/trapq.h @@ -44,6 +44,8 @@ void trapq_free(struct trapq *tq); void trapq_check_sentinels(struct trapq *tq); void trapq_add_move(struct trapq *tq, struct move *m); void trapq_finalize_moves(struct trapq *tq, double print_time); +void trapq_set_position(struct trapq *tq, double print_time + , double pos_x, double pos_y, double pos_z); int trapq_extract_old(struct trapq *tq, struct pull_move *p, int max , double start_time, double end_time); |