diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2020-11-20 11:36:36 -0500 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2020-11-20 12:00:36 -0500 |
commit | bdd938b5787c03c417cb093837dbc86f39a2af58 (patch) | |
tree | 37c44a0c04c0d4d6aae8c63ed5e552b7be241b3c /klippy/extras | |
parent | 37b475815e07a6877ff2f99aa559a593fd050915 (diff) | |
download | kutter-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/extras')
-rw-r--r-- | klippy/extras/board_pins.py | 43 |
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) |