From 25c16b3adeb15466d75691162763ce062b2c6e64 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Fri, 2 Jun 2023 02:42:49 +0100 Subject: Add *_MATRIX_LED_COUNT generation/validation (#19515) * Add *_MATRIX_LED_COUNT parsing/validation * Disable parsing for now * Disable complexity check --- lib/python/qmk/info.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'lib/python/qmk/info.py') diff --git a/lib/python/qmk/info.py b/lib/python/qmk/info.py index dbd26153d8..6628d825ce 100644 --- a/lib/python/qmk/info.py +++ b/lib/python/qmk/info.py @@ -55,7 +55,7 @@ def _get_key_left_position(key): return key['x'] - 0.25 if key.get('h', 1) == 2 and key.get('w', 1) == 1.25 else key['x'] -def _additional_validation(keyboard, info_data): +def _additional_validation(keyboard, info_data): # noqa: C901 """Non schema checks """ layouts = info_data.get('layouts', {}) @@ -105,6 +105,14 @@ def _additional_validation(keyboard, info_data): if not decl.get("aliases", []): _log_error(info_data, f'Keycode {decl["key"]} has no short form alias') + # Ensure LED config is somewhat valid + for feature in ['rgb_matrix', 'led_matrix']: + if feature in info_data and all(key in info_data[feature] for key in ["layout", "led_count"]): + layout_count = len(info_data[feature]["layout"]) + led_count = info_data[feature]["led_count"] + if led_count != layout_count: + _log_warning(info_data, '%s: mismatch between LED count (%d) and layout items (%d)' % (feature, led_count, layout_count)) + def _validate(keyboard, info_data): """Perform various validation on the provided info.json data -- cgit v1.2.3 From aa33fb00fdba2d7b1e0f4197c2e6b78755b171e9 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Fri, 2 Jun 2023 02:45:48 +0100 Subject: Revert "Add *_MATRIX_LED_COUNT generation/validation (#19515)" (#21109) This reverts commit 25c16b3adeb15466d75691162763ce062b2c6e64. --- data/mappings/info_config.hjson | 2 -- data/schemas/keyboard.jsonschema | 2 -- lib/python/qmk/info.py | 10 +--------- 3 files changed, 1 insertion(+), 13 deletions(-) (limited to 'lib/python/qmk/info.py') diff --git a/data/mappings/info_config.hjson b/data/mappings/info_config.hjson index da255892dc..e53d90da39 100644 --- a/data/mappings/info_config.hjson +++ b/data/mappings/info_config.hjson @@ -71,7 +71,6 @@ "LED_MATRIX_SPLIT": {"info_key": "led_matrix.split_count", "value_type": "array.int"}, "LED_MATRIX_TIMEOUT": {"info_key": "led_matrix.timeout", "value_type": "int"}, "LED_MATRIX_VAL_STEP": {"info_key": "led_matrix.val_steps", "value_type": "int"}, - "LED_MATRIX_LED_COUNT": {"info_key": "led_matrix.led_count", "value_type": "int", "to_json": false}, // LUFA Bootloader "QMK_ESC_INPUT": {"info_key": "qmk_lufa_bootloader.esc_input"}, @@ -110,7 +109,6 @@ "RGB_MATRIX_SPLIT": {"info_key": "rgb_matrix.split_count", "value_type": "array.int"}, "RGB_MATRIX_TIMEOUT": {"info_key": "rgb_matrix.timeout", "value_type": "int"}, "RGB_MATRIX_VAL_STEP": {"info_key": "rgb_matrix.val_steps", "value_type": "int"}, - "RGB_MATRIX_LED_COUNT": {"info_key": "rgb_matrix.led_count", "value_type": "int", "to_json": false}, // RGBLight "RGBLED_NUM": {"info_key": "rgblight.led_count", "value_type": "int"}, diff --git a/data/schemas/keyboard.jsonschema b/data/schemas/keyboard.jsonschema index f196e4467d..ba4a7eec55 100644 --- a/data/schemas/keyboard.jsonschema +++ b/data/schemas/keyboard.jsonschema @@ -372,7 +372,6 @@ } }, "driver": {"type": "string"}, - "led_count": {"$ref": "qmk.definitions.v1#/unsigned_int"}, "center_point": { "type": "array", "minItems": 2, @@ -424,7 +423,6 @@ } }, "driver": {"type": "string"}, - "led_count": {"$ref": "qmk.definitions.v1#/unsigned_int"}, "center_point": { "type": "array", "minItems": 2, diff --git a/lib/python/qmk/info.py b/lib/python/qmk/info.py index 6628d825ce..dbd26153d8 100644 --- a/lib/python/qmk/info.py +++ b/lib/python/qmk/info.py @@ -55,7 +55,7 @@ def _get_key_left_position(key): return key['x'] - 0.25 if key.get('h', 1) == 2 and key.get('w', 1) == 1.25 else key['x'] -def _additional_validation(keyboard, info_data): # noqa: C901 +def _additional_validation(keyboard, info_data): """Non schema checks """ layouts = info_data.get('layouts', {}) @@ -105,14 +105,6 @@ def _additional_validation(keyboard, info_data): # noqa: C901 if not decl.get("aliases", []): _log_error(info_data, f'Keycode {decl["key"]} has no short form alias') - # Ensure LED config is somewhat valid - for feature in ['rgb_matrix', 'led_matrix']: - if feature in info_data and all(key in info_data[feature] for key in ["layout", "led_count"]): - layout_count = len(info_data[feature]["layout"]) - led_count = info_data[feature]["led_count"] - if led_count != layout_count: - _log_warning(info_data, '%s: mismatch between LED count (%d) and layout items (%d)' % (feature, led_count, layout_count)) - def _validate(keyboard, info_data): """Perform various validation on the provided info.json data -- cgit v1.2.3 From 95681b8ff4a92aacd0249e124d34cf16e510175e Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Sun, 27 Aug 2023 04:00:14 +0100 Subject: Add *_MATRIX_LED_COUNT generation (#21110) --- data/mappings/info_config.hjson | 2 ++ lib/python/qmk/cli/info.py | 4 ++++ lib/python/qmk/info.py | 3 +++ 3 files changed, 9 insertions(+) (limited to 'lib/python/qmk/info.py') diff --git a/data/mappings/info_config.hjson b/data/mappings/info_config.hjson index cc1787b8c2..ab9a4a0e45 100644 --- a/data/mappings/info_config.hjson +++ b/data/mappings/info_config.hjson @@ -69,6 +69,7 @@ "LED_MATRIX_SPLIT": {"info_key": "led_matrix.split_count", "value_type": "array.int"}, "LED_MATRIX_TIMEOUT": {"info_key": "led_matrix.timeout", "value_type": "int"}, "LED_MATRIX_VAL_STEP": {"info_key": "led_matrix.val_steps", "value_type": "int"}, + "LED_MATRIX_LED_COUNT": {"info_key": "led_matrix.led_count", "value_type": "int", "to_json": false}, // LUFA Bootloader "QMK_ESC_INPUT": {"info_key": "qmk_lufa_bootloader.esc_input"}, @@ -107,6 +108,7 @@ "RGB_MATRIX_SPLIT": {"info_key": "rgb_matrix.split_count", "value_type": "array.int"}, "RGB_MATRIX_TIMEOUT": {"info_key": "rgb_matrix.timeout", "value_type": "int"}, "RGB_MATRIX_VAL_STEP": {"info_key": "rgb_matrix.val_steps", "value_type": "int"}, + "RGB_MATRIX_LED_COUNT": {"info_key": "rgb_matrix.led_count", "value_type": "int", "to_json": false}, // RGBLight "RGBLED_NUM": {"info_key": "rgblight.led_count", "value_type": "int"}, diff --git a/lib/python/qmk/cli/info.py b/lib/python/qmk/cli/info.py index 02cc6051ec..e662407474 100755 --- a/lib/python/qmk/cli/info.py +++ b/lib/python/qmk/cli/info.py @@ -38,6 +38,10 @@ def _strip_api_content(info_json): if 'matrix_pins' in info_json: info_json.pop('matrix_size', None) + for feature in ['rgb_matrix', 'led_matrix']: + if info_json.get(feature, {}).get("layout", None): + info_json[feature].pop('led_count', None) + return info_json diff --git a/lib/python/qmk/info.py b/lib/python/qmk/info.py index dbd26153d8..9c8521a2a3 100644 --- a/lib/python/qmk/info.py +++ b/lib/python/qmk/info.py @@ -706,6 +706,9 @@ def _extract_led_config(info_data, keyboard): except Exception as e: _log_warning(info_data, f'led_config: {file.name}: {e}') + if info_data[feature].get("layout", None) and not info_data[feature].get("led_count", None): + info_data[feature]["led_count"] = len(info_data[feature]["layout"]) + return info_data -- cgit v1.2.3