From fe2974b8ec1e41c16e8b37551443c1a7ea6717a5 Mon Sep 17 00:00:00 2001 From: Kevin O'Connor Date: Fri, 4 Mar 2022 13:32:18 -0500 Subject: [PATCH] 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 --- klippy/kinematics/extruder.py | 3 +++ klippy/stepper.py | 2 ++ 2 files changed, 5 insertions(+) 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: