aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/extras
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2021-07-03 21:25:27 -0400
committerKevin O'Connor <kevin@koconnor.net>2021-07-03 23:58:40 -0400
commitdf43c9e9bff1f638ad41c27e4f6bb6e757d26ea5 (patch)
treea46c5940c8321b27fce218973f4de6d032b40402 /klippy/extras
parent57bd1c6b9ffe58e16b014b2a72e7aceef0259d05 (diff)
downloadkutter-df43c9e9bff1f638ad41c27e4f6bb6e757d26ea5.tar.gz
kutter-df43c9e9bff1f638ad41c27e4f6bb6e757d26ea5.tar.xz
kutter-df43c9e9bff1f638ad41c27e4f6bb6e757d26ea5.zip
stepper_enable: Move pin handling out of EnableTracking class
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy/extras')
-rw-r--r--klippy/extras/stepper_enable.py43
1 files changed, 24 insertions, 19 deletions
diff --git a/klippy/extras/stepper_enable.py b/klippy/extras/stepper_enable.py
index f35385b0..a7fdf8ac 100644
--- a/klippy/extras/stepper_enable.py
+++ b/klippy/extras/stepper_enable.py
@@ -1,6 +1,6 @@
# Support for enable pins on stepper motor drivers
#
-# Copyright (C) 2019 Kevin O'Connor <kevin@koconnor.net>
+# Copyright (C) 2019-2021 Kevin O'Connor <kevin@koconnor.net>
#
# This file may be distributed under the terms of the GNU GPLv3 license.
import logging
@@ -22,29 +22,33 @@ class StepperEnablePin:
if not self.enable_count:
self.mcu_enable.set_digital(print_time, 0)
+def setup_enable_pin(printer, pin):
+ if pin is None:
+ # No enable line (stepper always enabled)
+ enable = StepperEnablePin(None, 9999)
+ enable.is_dedicated = False
+ return enable
+ ppins = printer.lookup_object('pins')
+ pin_params = ppins.lookup_pin(pin, can_invert=True,
+ share_type='stepper_enable')
+ enable = pin_params.get('class')
+ if enable is not None:
+ # Shared enable line
+ enable.is_dedicated = False
+ return enable
+ mcu_enable = pin_params['chip'].setup_pin('digital_out', pin_params)
+ mcu_enable.setup_max_duration(0.)
+ enable = pin_params['class'] = StepperEnablePin(mcu_enable, 0)
+ return enable
+
# Enable line tracking for each stepper motor
class EnableTracking:
- def __init__(self, printer, stepper, pin):
+ def __init__(self, stepper, enable):
self.stepper = stepper
+ self.enable = enable
self.callbacks = []
self.is_enabled = False
self.stepper.add_active_callback(self.motor_enable)
- if pin is None:
- # No enable line (stepper always enabled)
- self.enable = StepperEnablePin(None, 9999)
- self.enable.is_dedicated = False
- return
- ppins = printer.lookup_object('pins')
- pin_params = ppins.lookup_pin(pin, can_invert=True,
- share_type='stepper_enable')
- self.enable = pin_params.get('class')
- if self.enable is not None:
- # Shared enable line
- self.enable.is_dedicated = False
- return
- mcu_enable = pin_params['chip'].setup_pin('digital_out', pin_params)
- mcu_enable.setup_max_duration(0.)
- self.enable = pin_params['class'] = StepperEnablePin(mcu_enable, 0)
def register_state_callback(self, callback):
self.callbacks.append(callback)
def motor_enable(self, print_time):
@@ -82,7 +86,8 @@ class PrinterStepperEnable:
desc=self.cmd_SET_STEPPER_ENABLE_help)
def register_stepper(self, stepper, pin):
name = stepper.get_name()
- self.enable_lines[name] = EnableTracking(self.printer, stepper, pin)
+ enable = setup_enable_pin(self.printer, pin)
+ self.enable_lines[name] = EnableTracking(stepper, enable)
def motor_off(self):
toolhead = self.printer.lookup_object('toolhead')
toolhead.dwell(DISABLE_STALL_TIME)