aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/stepper.py
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2019-06-12 23:06:41 -0400
committerKevinOConnor <kevin@koconnor.net>2019-06-28 16:59:26 -0400
commita2e550d1cd24f36cb067ec6c9efa62ebd77bbbf8 (patch)
tree5e0f3262a1649a8551ee756b0ad1aacebda679a5 /klippy/stepper.py
parent7702f0a027686ccba4d45417c79c353c00e8c712 (diff)
downloadkutter-a2e550d1cd24f36cb067ec6c9efa62ebd77bbbf8.tar.gz
kutter-a2e550d1cd24f36cb067ec6c9efa62ebd77bbbf8.tar.xz
kutter-a2e550d1cd24f36cb067ec6c9efa62ebd77bbbf8.zip
stepper: Add support for providing a list of pins to enable
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy/stepper.py')
-rw-r--r--klippy/stepper.py34
1 files changed, 23 insertions, 11 deletions
diff --git a/klippy/stepper.py b/klippy/stepper.py
index 29b525a9..4617f97a 100644
--- a/klippy/stepper.py
+++ b/klippy/stepper.py
@@ -1,6 +1,6 @@
# Printer stepper support
#
-# Copyright (C) 2016-2018 Kevin O'Connor <kevin@koconnor.net>
+# Copyright (C) 2016-2019 Kevin O'Connor <kevin@koconnor.net>
#
# This file may be distributed under the terms of the GNU GPLv3 license.
import math, logging, collections
@@ -26,17 +26,29 @@ class StepperEnablePin:
if not self.enable_count:
self.mcu_enable.set_digital(print_time, 0)
-def lookup_enable_pin(ppins, pin):
- if pin is None:
+class StepperMultiEnablePin:
+ def __init__(self, enable_list):
+ self.enable_list = enable_list
+ def set_enable(self, print_time, enable):
+ for en in self.enable_list:
+ en.set_enable(print_time, enable)
+
+def lookup_enable_pin(ppins, pin_list):
+ if pin_list is None:
return StepperEnablePin(None, 9999)
- pin_params = ppins.lookup_pin(pin, can_invert=True,
- share_type='stepper_enable')
- enable = pin_params.get('class')
- if enable is None:
- mcu_enable = pin_params['chip'].setup_pin('digital_out', pin_params)
- mcu_enable.setup_max_duration(0.)
- pin_params['class'] = enable = StepperEnablePin(mcu_enable)
- return enable
+ enable_list = []
+ for pin in pin_list.split(','):
+ pin_params = ppins.lookup_pin(pin, can_invert=True,
+ share_type='stepper_enable')
+ enable = pin_params.get('class')
+ if enable is None:
+ mcu_enable = pin_params['chip'].setup_pin('digital_out', pin_params)
+ mcu_enable.setup_max_duration(0.)
+ pin_params['class'] = enable = StepperEnablePin(mcu_enable)
+ enable_list.append(enable)
+ if len(enable_list) == 1:
+ return enable_list[0]
+ return StepperMultiEnablePin(enable_list)
######################################################################