aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/extras
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2018-01-23 12:26:18 -0500
committerKevin O'Connor <kevin@koconnor.net>2018-01-28 12:19:26 -0500
commite38c7df064845da3ec8146e13ecf399cb37e15d1 (patch)
tree79c6479d95353db645d35f99cc1f237358addb56 /klippy/extras
parent3001a089c0ec170093f2fca675e7ba8773348ccf (diff)
downloadkutter-e38c7df064845da3ec8146e13ecf399cb37e15d1.tar.gz
kutter-e38c7df064845da3ec8146e13ecf399cb37e15d1.tar.xz
kutter-e38c7df064845da3ec8146e13ecf399cb37e15d1.zip
probe: Support activate/deactivate scripts on each probe
Allow a set of g-code scripts to be run on each probe invocation. This may be useful for probes that need to be setup before they are useful (eg, with servo actuated probes). Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy/extras')
-rw-r--r--klippy/extras/probe.py26
1 files changed, 26 insertions, 0 deletions
diff --git a/klippy/extras/probe.py b/klippy/extras/probe.py
index aeebf725..b1e89944 100644
--- a/klippy/extras/probe.py
+++ b/klippy/extras/probe.py
@@ -16,6 +16,9 @@ class PrinterProbe:
mcu = pin_params['chip']
mcu.add_config_object(self)
self.mcu_probe = mcu.setup_pin(pin_params)
+ if (config.get('activate_gcode', None) is not None or
+ config.get('deactivate_gcode', None) is not None):
+ self.mcu_probe = ProbeEndstopWrapper(config, self.mcu_probe)
self.gcode = self.printer.lookup_object('gcode')
self.gcode.register_command(
'PROBE', self.cmd_PROBE, desc=self.cmd_PROBE_help)
@@ -49,6 +52,29 @@ class PrinterProbe:
self.gcode.respond_info(
"probe: %s" % (["open", "TRIGGERED"][not not res],))
+# Endstop wrapper that enables running g-code scripts on setup
+class ProbeEndstopWrapper:
+ def __init__(self, config, mcu_endstop):
+ self.mcu_endstop = mcu_endstop
+ self.gcode = config.get_printer().lookup_object('gcode')
+ self.activate_gcode = config.get('activate_gcode', "")
+ self.deactivate_gcode = config.get('deactivate_gcode', "")
+ # 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.TimeoutError = self.mcu_endstop.TimeoutError
+ def home_prepare(self):
+ self.gcode.run_script(self.activate_gcode)
+ self.mcu_endstop.home_prepare()
+ def home_finalize(self):
+ self.gcode.run_script(self.deactivate_gcode)
+ self.mcu_endstop.home_finalize()
+
# Helper code that can probe a series of points and report the
# position at each point.
class ProbePointsHelper: