aboutsummaryrefslogtreecommitdiffstats
path: root/klippy
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2022-03-04 13:32:18 -0500
committerKevin O'Connor <kevin@koconnor.net>2022-03-04 13:38:59 -0500
commitfe2974b8ec1e41c16e8b37551443c1a7ea6717a5 (patch)
treef34c626f9fcc0902408f84ddf6197668c40938a5 /klippy
parent4815a946c2861408475a15986d021d694908f728 (diff)
downloadkutter-fe2974b8ec1e41c16e8b37551443c1a7ea6717a5.tar.gz
kutter-fe2974b8ec1e41c16e8b37551443c1a7ea6717a5.tar.xz
kutter-fe2974b8ec1e41c16e8b37551443c1a7ea6717a5.zip
extruder: Verify trapq is unmodified on default SET_PRESSURE_ADVANCE
Check that a SET_PRESSURE_ADVANCE without an explicit EXTRUDER parameter isn't done after the user disables or reassociates the extruder stepper motor (via SYNC_EXTRUDER_MOTION). Otherwise, it could lead to very confusing results. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy')
-rw-r--r--klippy/kinematics/extruder.py3
-rw-r--r--klippy/stepper.py2
2 files changed, 5 insertions, 0 deletions
diff --git a/klippy/kinematics/extruder.py b/klippy/kinematics/extruder.py
index e3303982..76f9c35e 100644
--- a/klippy/kinematics/extruder.py
+++ b/klippy/kinematics/extruder.py
@@ -81,6 +81,9 @@ class ExtruderStepper:
extruder = self.printer.lookup_object('toolhead').get_extruder()
if extruder.extruder_stepper is None:
raise gcmd.error("Active extruder does not have a stepper")
+ strapq = extruder.extruder_stepper.stepper.get_trapq()
+ if strapq is not extruder.get_trapq():
+ raise gcmd.error("Unable to infer active extruder stepper")
extruder.extruder_stepper.cmd_SET_PRESSURE_ADVANCE(gcmd)
def cmd_SET_PRESSURE_ADVANCE(self, gcmd):
pressure_advance = gcmd.get_float('ADVANCE', self.pressure_advance,
diff --git a/klippy/stepper.py b/klippy/stepper.py
index 304d7d82..ad7d1282 100644
--- a/klippy/stepper.py
+++ b/klippy/stepper.py
@@ -197,6 +197,8 @@ class MCU_stepper:
raise error("Internal error in stepcompress")
self._set_mcu_position(last_pos)
self._mcu.get_printer().send_event("stepper:sync_mcu_position", self)
+ def get_trapq(self):
+ return self._trapq
def set_trapq(self, tq):
ffi_main, ffi_lib = chelper.get_ffi()
if tq is None: