aboutsummaryrefslogtreecommitdiffstats
path: root/klippy
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2020-11-20 11:36:36 -0500
committerKevin O'Connor <kevin@koconnor.net>2020-11-20 12:00:36 -0500
commitbdd938b5787c03c417cb093837dbc86f39a2af58 (patch)
tree37c44a0c04c0d4d6aae8c63ed5e552b7be241b3c /klippy
parent37b475815e07a6877ff2f99aa559a593fd050915 (diff)
downloadkutter-bdd938b5787c03c417cb093837dbc86f39a2af58.tar.gz
kutter-bdd938b5787c03c417cb093837dbc86f39a2af58.tar.xz
kutter-bdd938b5787c03c417cb093837dbc86f39a2af58.zip
board_pins: Use an explicit parameter to specify mcu name(s)
Add an 'mcu' option to the board_pins config and use that to specify the name of the mcu to apply the aliases to. Support applying the aliases to multiple mcus. Add support for any number of options starting with an "aliases_" prefix. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy')
-rw-r--r--klippy/extras/board_pins.py43
1 files changed, 25 insertions, 18 deletions
diff --git a/klippy/extras/board_pins.py b/klippy/extras/board_pins.py
index d8388cbd..780a49b6 100644
--- a/klippy/extras/board_pins.py
+++ b/klippy/extras/board_pins.py
@@ -1,29 +1,36 @@
# Support for custom board pin aliases
#
-# Copyright (C) 2019 Kevin O'Connor <kevin@koconnor.net>
+# Copyright (C) 2019-2020 Kevin O'Connor <kevin@koconnor.net>
#
# This file may be distributed under the terms of the GNU GPLv3 license.
class PrinterBoardAliases:
- def __init__(self, config, chip_name):
+ def __init__(self, config):
ppins = config.get_printer().lookup_object('pins')
- pin_resolver = ppins.get_pin_resolver(chip_name)
- aliases = config.get("aliases").strip()
- if aliases.endswith(','):
- aliases = aliases[:-1]
- parts = [a.split('=', 1) for a in aliases.split(',')]
- for pair in parts:
- if len(pair) != 2:
- raise ppins.error("Unable to parse aliases in %s"
- % (config.get_name(),))
- name, value = [s.strip() for s in pair]
- if value.startswith('<') and value.endswith('>'):
- pin_resolver.reserve_pin(name, value)
- else:
- pin_resolver.alias_pin(name, value)
+ mcu_names = [n.strip() for n in config.get('mcu', 'mcu').split(',')]
+ pin_resolvers = [ppins.get_pin_resolver(n) for n in mcu_names]
+ options = ["aliases"] + config.get_prefix_options("aliases_")
+ for opt in options:
+ aliases = config.get(opt, "").strip()
+ if not aliases:
+ continue
+ if aliases.endswith(','):
+ aliases = aliases[:-1]
+ parts = [a.split('=', 1) for a in aliases.split(',')]
+ for pair in parts:
+ if len(pair) != 2:
+ raise ppins.error("Unable to parse aliases in %s"
+ % (config.get_name(),))
+ name, value = [s.strip() for s in pair]
+ if value.startswith('<') and value.endswith('>'):
+ for pin_resolver in pin_resolvers:
+ pin_resolver.reserve_pin(name, value)
+ else:
+ for pin_resolver in pin_resolvers:
+ pin_resolver.alias_pin(name, value)
def load_config(config):
- return PrinterBoardAliases(config, "mcu")
+ return PrinterBoardAliases(config)
def load_config_prefix(config):
- return PrinterBoardAliases(config, config.get_name().split()[1])
+ return PrinterBoardAliases(config)