diff options
Diffstat (limited to 'klippy/extras/probe.py')
-rw-r--r-- | klippy/extras/probe.py | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/klippy/extras/probe.py b/klippy/extras/probe.py index cd4bec5a..a8c2fa9b 100644 --- a/klippy/extras/probe.py +++ b/klippy/extras/probe.py @@ -34,6 +34,7 @@ class PrinterProbe: self.mcu_probe = ProbeEndstopWrapper(config, self.mcu_probe) # Create z_virtual_endstop pin ppins.register_chip('probe', self) + self.z_virtual_endstop = None # Register PROBE/QUERY_PROBE commands self.gcode = self.printer.lookup_object('gcode') self.gcode.register_command( @@ -53,7 +54,13 @@ class PrinterProbe: raise pins.error("Probe virtual endstop only useful as endstop pin") if pin_params['invert'] or pin_params['pullup']: raise pins.error("Can not pullup/invert probe virtual endstop") - return self.mcu_probe + self.z_virtual_endstop = ProbeVirtualEndstop( + self.printer, self.mcu_probe) + return self.z_virtual_endstop + def last_home_position(self): + if self.z_virtual_endstop is None: + return None + return self.z_virtual_endstop.position cmd_PROBE_help = "Probe Z-height at current XY position" def cmd_PROBE(self, params): toolhead = self.printer.lookup_object('toolhead') @@ -101,6 +108,26 @@ class ProbeEndstopWrapper: self.gcode.run_script(self.deactivate_gcode) self.mcu_endstop.home_finalize() +# Wrapper that records the last XY position of a virtual endstop probe +class ProbeVirtualEndstop: + def __init__(self, printer, mcu_endstop): + self.printer = printer + self.mcu_endstop = mcu_endstop + self.position = None + # Wrappers + self.get_mcu = self.mcu_endstop.get_mcu + self.add_stepper = self.mcu_endstop.add_stepper + self.get_steppers = self.mcu_endstop.get_steppers + self.home_start = self.mcu_endstop.home_start + self.home_wait = self.mcu_endstop.home_wait + self.query_endstop = self.mcu_endstop.query_endstop + self.query_endstop_wait = self.mcu_endstop.query_endstop_wait + self.home_prepare = self.mcu_endstop.home_prepare + self.TimeoutError = self.mcu_endstop.TimeoutError + def home_finalize(self): + self.position = self.printer.lookup_object('toolhead').get_position() + self.mcu_endstop.home_finalize() + # Helper code that can probe a series of points and report the # position at each point. class ProbePointsHelper: |