aboutsummaryrefslogtreecommitdiffstats
path: root/klippy
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2018-02-07 15:56:38 -0500
committerKevin O'Connor <kevin@koconnor.net>2018-02-07 16:09:25 -0500
commit561c84dd93038fdf0f4e36f4d282a69de5f58668 (patch)
tree77b58afb456b3aaa2cbd9f8b47bd856cba5d33f6 /klippy
parent955d940b60665fb6c643be0cf9130aab861d719b (diff)
downloadkutter-561c84dd93038fdf0f4e36f4d282a69de5f58668.tar.gz
kutter-561c84dd93038fdf0f4e36f4d282a69de5f58668.tar.xz
kutter-561c84dd93038fdf0f4e36f4d282a69de5f58668.zip
pins: Warn on invalid pin format
Raise an error if a pin description isn't formatted correctly. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy')
-rw-r--r--klippy/pins.py24
1 files changed, 17 insertions, 7 deletions
diff --git a/klippy/pins.py b/klippy/pins.py
index f07771a0..d803d390 100644
--- a/klippy/pins.py
+++ b/klippy/pins.py
@@ -195,19 +195,29 @@ class PrinterPins:
def lookup_pin(self, pin_type, pin_desc, share_type=None):
can_invert = pin_type in ['stepper', 'endstop', 'digital_out', 'pwm']
can_pullup = pin_type == 'endstop'
+ desc = pin_desc
pullup = invert = 0
- if can_pullup and pin_desc.startswith('^'):
+ if can_pullup and desc.startswith('^'):
pullup = 1
- pin_desc = pin_desc[1:].strip()
- if can_invert and pin_desc.startswith('!'):
+ desc = desc[1:].strip()
+ if can_invert and desc.startswith('!'):
invert = 1
- pin_desc = pin_desc[1:].strip()
- if ':' not in pin_desc:
- chip_name, pin = 'mcu', pin_desc
+ desc = desc[1:].strip()
+ if ':' not in desc:
+ chip_name, pin = 'mcu', desc
else:
- chip_name, pin = [s.strip() for s in pin_desc.split(':', 1)]
+ chip_name, pin = [s.strip() for s in desc.split(':', 1)]
if chip_name not in self.chips:
raise error("Unknown pin chip name '%s'" % (chip_name,))
+ if [c for c in '^!: ' if c in pin]:
+ format = ""
+ if can_pullup:
+ format += "[^] "
+ if can_invert:
+ format += "[!] "
+ raise error("Invalid pin description '%s'\n"
+ "Format is: %s[chip_name:] pin_name" % (
+ pin_desc, format))
share_name = "%s:%s" % (chip_name, pin)
if share_name in self.active_pins:
pin_params = self.active_pins[share_name]