aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/chelper
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2022-01-29 19:13:31 -0500
committerKevin O'Connor <kevin@koconnor.net>2022-02-10 13:24:21 -0500
commit9ec97424844c76bbc0c5604e15aa195282b6c955 (patch)
treeff05667b33edfff52b86768ed962e5c0f4e597df /klippy/chelper
parent189188e3ca3e40d8272fb4ad48316e329f8ec453 (diff)
downloadkutter-9ec97424844c76bbc0c5604e15aa195282b6c955.tar.gz
kutter-9ec97424844c76bbc0c5604e15aa195282b6c955.tar.xz
kutter-9ec97424844c76bbc0c5604e15aa195282b6c955.zip
extruder: Add support for reversing the direction of extruder stepper movement
Extend SET_EXTRUDER_ROTATION_DISTANCE to support reversing the direction of extruder movement. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy/chelper')
-rw-r--r--klippy/chelper/__init__.py5
-rw-r--r--klippy/chelper/stepcompress.c16
-rw-r--r--klippy/chelper/stepcompress.h4
3 files changed, 19 insertions, 6 deletions
diff --git a/klippy/chelper/__init__.py b/klippy/chelper/__init__.py
index e04d431d..c7e2155c 100644
--- a/klippy/chelper/__init__.py
+++ b/klippy/chelper/__init__.py
@@ -38,8 +38,9 @@ defs_stepcompress = """
struct stepcompress *stepcompress_alloc(uint32_t oid);
void stepcompress_fill(struct stepcompress *sc, uint32_t max_error
- , uint32_t invert_sdir, int32_t queue_step_msgtag
- , int32_t set_next_step_dir_msgtag);
+ , int32_t queue_step_msgtag, int32_t set_next_step_dir_msgtag);
+ void stepcompress_set_invert_sdir(struct stepcompress *sc
+ , uint32_t invert_sdir);
void stepcompress_free(struct stepcompress *sc);
int stepcompress_reset(struct stepcompress *sc, uint64_t last_step_clock);
int stepcompress_set_last_position(struct stepcompress *sc
diff --git a/klippy/chelper/stepcompress.c b/klippy/chelper/stepcompress.c
index b38b72ad..e261f1d3 100644
--- a/klippy/chelper/stepcompress.c
+++ b/klippy/chelper/stepcompress.c
@@ -259,15 +259,25 @@ stepcompress_alloc(uint32_t oid)
// Fill message id information
void __visible
stepcompress_fill(struct stepcompress *sc, uint32_t max_error
- , uint32_t invert_sdir, int32_t queue_step_msgtag
- , int32_t set_next_step_dir_msgtag)
+ , int32_t queue_step_msgtag, int32_t set_next_step_dir_msgtag)
{
sc->max_error = max_error;
- sc->invert_sdir = !!invert_sdir;
sc->queue_step_msgtag = queue_step_msgtag;
sc->set_next_step_dir_msgtag = set_next_step_dir_msgtag;
}
+// Set the inverted stepper direction flag
+void __visible
+stepcompress_set_invert_sdir(struct stepcompress *sc, uint32_t invert_sdir)
+{
+ invert_sdir = !!invert_sdir;
+ if (invert_sdir != sc->invert_sdir) {
+ sc->invert_sdir = invert_sdir;
+ if (sc->sdir >= 0)
+ sc->sdir ^= 1;
+ }
+}
+
// Helper to free items from the history_list
static void
free_history(struct stepcompress *sc, uint64_t end_clock)
diff --git a/klippy/chelper/stepcompress.h b/klippy/chelper/stepcompress.h
index 5bca39a5..b8a95057 100644
--- a/klippy/chelper/stepcompress.h
+++ b/klippy/chelper/stepcompress.h
@@ -13,8 +13,10 @@ struct pull_history_steps {
struct stepcompress *stepcompress_alloc(uint32_t oid);
void stepcompress_fill(struct stepcompress *sc, uint32_t max_error
- , uint32_t invert_sdir, int32_t queue_step_msgtag
+ , int32_t queue_step_msgtag
, int32_t set_next_step_dir_msgtag);
+void stepcompress_set_invert_sdir(struct stepcompress *sc
+ , uint32_t invert_sdir);
void stepcompress_free(struct stepcompress *sc);
uint32_t stepcompress_get_oid(struct stepcompress *sc);
int stepcompress_get_step_dir(struct stepcompress *sc);