diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2021-04-02 13:42:25 -0400 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2021-06-09 18:58:35 -0400 |
commit | bc29ee1c6d1fbd99a9d0c6db6b4419bbc8f8a7c3 (patch) | |
tree | cf0ead51fffdf6bb7d5d70fbfcb0749ce84f0a50 /klippy | |
parent | 983951443cf14fe2985585c2c2eb20efe526411d (diff) | |
download | kutter-bc29ee1c6d1fbd99a9d0c6db6b4419bbc8f8a7c3.tar.gz kutter-bc29ee1c6d1fbd99a9d0c6db6b4419bbc8f8a7c3.tar.xz kutter-bc29ee1c6d1fbd99a9d0c6db6b4419bbc8f8a7c3.zip |
homing: Check for failures during multi-endstop homing
If any endstop reports a failure, then stop homing on all endstops.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy')
-rw-r--r-- | klippy/extras/homing.py | 9 | ||||
-rw-r--r-- | klippy/mcu.py | 4 |
2 files changed, 10 insertions, 3 deletions
diff --git a/klippy/extras/homing.py b/klippy/extras/homing.py index f6dead84..1d7e1948 100644 --- a/klippy/extras/homing.py +++ b/klippy/extras/homing.py @@ -13,8 +13,13 @@ ENDSTOP_SAMPLE_COUNT = 4 def multi_complete(printer, completions): if len(completions) == 1: return completions[0] - cb = (lambda e: all([c.wait() for c in completions])) - return printer.get_reactor().register_callback(cb) + # Build completion that waits for all completions + reactor = printer.get_reactor() + cp = reactor.register_callback(lambda e: [c.wait() for c in completions]) + # If any completion indicates an error, then exit main completion early + for c in completions: + reactor.register_callback(lambda e: cp.complete(1) if c.wait() else 0) + return cp # Implementation of homing/probing moves class HomingMove: diff --git a/klippy/mcu.py b/klippy/mcu.py index bd7267ad..1b77aff7 100644 --- a/klippy/mcu.py +++ b/klippy/mcu.py @@ -84,7 +84,9 @@ class MCU_trsync: tc = self._trigger_completion if tc is not None: self._trigger_completion = None - self._reactor.async_complete(tc, True) + reason = params['trigger_reason'] + is_failure = (reason == self.REASON_COMMS_TIMEOUT) + self._reactor.async_complete(tc, is_failure) elif self._home_end_clock is not None: clock = self._mcu.clock32_to_clock64(params['clock']) if clock >= self._home_end_clock: |