diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2019-08-09 11:53:09 -0400 |
---|---|---|
committer | KevinOConnor <kevin@koconnor.net> | 2019-08-19 12:57:59 -0400 |
commit | bfbcb90751aa263f1ac87739dec05f7746c697ef (patch) | |
tree | 1ce6e4d5a14e0128d4f78995529b195e05e3b7a0 /klippy/pins.py | |
parent | 395429be146238a7a59fb9fde28cfdd2bdab8ccc (diff) | |
download | kutter-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.py | 16 |
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') |