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>
This commit is contained in:
Kevin O'Connor 2022-03-04 13:32:18 -05:00
parent 4815a946c2
commit fe2974b8ec
2 changed files with 5 additions and 0 deletions

View File

@ -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,

View File

@ -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: