From c0ac3f73724154c02cc5072f7651294d4e9a2366 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Sun, 3 Apr 2022 18:45:10 +0100 Subject: [PATCH] Add frameworking for development board presets (#16637) * Add frameworking for development board presets * Update lib/python/qmk/info.py Co-authored-by: Nick Brassel Co-authored-by: Nick Brassel --- data/mappings/defaults.json | 17 +++++++++++++++++ data/schemas/keyboard.jsonschema | 4 ++++ lib/python/qmk/info.py | 13 +++++++++++++ 3 files changed, 34 insertions(+) create mode 100644 data/mappings/defaults.json diff --git a/data/mappings/defaults.json b/data/mappings/defaults.json new file mode 100644 index 0000000000..d3643fede8 --- /dev/null +++ b/data/mappings/defaults.json @@ -0,0 +1,17 @@ +{ + "development_board": { + "promicro": { + "processor": "atmega32u4", + "bootloader": "caterina" + }, + "elite_c": { + "processor": "atmega32u4", + "bootloader": "atmel-dfu" + }, + "proton_c": { + "processor": "STM32F303", + "bootloader": "stm32-dfu", + "board": "QMK_PROTON_C" + } + } +} \ No newline at end of file diff --git a/data/schemas/keyboard.jsonschema b/data/schemas/keyboard.jsonschema index adb63fd13e..f4c24c41cd 100644 --- a/data/schemas/keyboard.jsonschema +++ b/data/schemas/keyboard.jsonschema @@ -12,6 +12,10 @@ "type": "string", "format": "uri" }, + "development_board": { + "type": "string", + "enum": ["promicro", "elite_c", "proton_c"] + }, "processor": { "type": "string", "enum": ["cortex-m0", "cortex-m0plus", "cortex-m3", "cortex-m4", "MKL26Z64", "MK20DX128", "MK20DX256", "MK66FX1M0", "STM32F042", "STM32F072", "STM32F103", "STM32F303", "STM32F401", "STM32F405", "STM32F407", "STM32F411", "STM32F446", "STM32G431", "STM32G474", "STM32L412", "STM32L422", "STM32L432", "STM32L433", "STM32L442", "STM32L443", "GD32VF103", "WB32F3G71", "atmega16u2", "atmega32u2", "atmega16u4", "atmega32u4", "at90usb162", "at90usb646", "at90usb647", "at90usb1286", "at90usb1287", "atmega32a", "atmega328p", "atmega328", "attiny85", "unknown"] diff --git a/lib/python/qmk/info.py b/lib/python/qmk/info.py index 1d81b3e94b..c5a7d33848 100644 --- a/lib/python/qmk/info.py +++ b/lib/python/qmk/info.py @@ -69,6 +69,7 @@ def info_json(keyboard): # Merge in the data from info.json, config.h, and rules.mk info_data = merge_info_jsons(keyboard, info_data) + info_data = _process_defaults(info_data) info_data = _extract_rules_mk(info_data, rules_mk(str(keyboard))) info_data = _extract_config_h(info_data, config_h(str(keyboard))) @@ -473,6 +474,18 @@ def _extract_config_h(info_data, config_c): return info_data +def _process_defaults(info_data): + """Process any additional defaults based on currently discovered information + """ + defaults_map = json_load(Path('data/mappings/defaults.json')) + for default_type in defaults_map.keys(): + thing_map = defaults_map[default_type] + if default_type in info_data: + for key, value in thing_map.get(info_data[default_type], {}).items(): + info_data[key] = value + return info_data + + def _extract_rules_mk(info_data, rules): """Pull some keyboard information from existing rules.mk files """