aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/pins.py
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2019-08-09 11:53:09 -0400
committerKevinOConnor <kevin@koconnor.net>2019-08-19 12:57:59 -0400
commitbfbcb90751aa263f1ac87739dec05f7746c697ef (patch)
tree1ce6e4d5a14e0128d4f78995529b195e05e3b7a0 /klippy/pins.py
parent395429be146238a7a59fb9fde28cfdd2bdab8ccc (diff)
downloadkutter-bfbcb90751aa263f1ac87739dec05f7746c697ef.tar.gz
kutter-bfbcb90751aa263f1ac87739dec05f7746c697ef.tar.xz
kutter-bfbcb90751aa263f1ac87739dec05f7746c697ef.zip
board_pins: Add a new "extras" module to support per-board pin aliases
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy/pins.py')
-rw-r--r--klippy/pins.py16
1 files changed, 14 insertions, 2 deletions
diff --git a/klippy/pins.py b/klippy/pins.py
index c1b4588f..a4b93762 100644
--- a/klippy/pins.py
+++ b/klippy/pins.py
@@ -161,13 +161,25 @@ class PinResolver:
raise error("Pin %s reserved for %s - can't reserve for %s" % (
pin, self.reserved[pin], reserve_name))
self.reserved[pin] = reserve_name
+ def alias_pin(self, alias, pin):
+ if alias in self.aliases and self.aliases[alias] != pin:
+ raise error("Alias %s mapped to %s - can't alias to %s" % (
+ alias, self.aliases[alias], pin))
+ if pin in self.aliases:
+ pin = self.aliases[pin]
+ self.aliases[alias] = pin
+ for existing_alias, existing_pin in self.aliases.items():
+ if existing_pin == alias:
+ self.aliases[existing_alias] = pin
def add_pin_mapping(self, mcu_type, mapping_name):
if mapping_name == 'arduino':
- self.aliases = get_aliases_arduino(mcu_type)
+ pin_mapping = get_aliases_arduino(mcu_type)
elif mapping_name == 'beaglebone':
- self.aliases = get_aliases_beaglebone(mcu_type)
+ pin_mapping = get_aliases_beaglebone(mcu_type)
else:
raise error("Unknown pin alias mapping '%s'" % (mapping_name,))
+ for alias, pin in pin_mapping.items():
+ self.alias_pin(alias, pin)
def update_command(self, cmd):
def pin_fixup(m):
name = m.group('name')