diff --git a/doc/_extensions/zephyr/domain/templates/shield-card.html b/doc/_extensions/zephyr/domain/templates/shield-card.html index 57c5a1cf043..bd6a7e892d3 100644 --- a/doc/_extensions/zephyr/domain/templates/shield-card.html +++ b/doc/_extensions/zephyr/domain/templates/shield-card.html @@ -13,7 +13,15 @@ aria-label="Open the documentation page for {{ shield.full_name }}" data-name="{{ shield.full_name}}" data-vendor="{{ shield.vendor }}" - tabindex="0"> + data-supported-features=" + {%- set feature_types = [] -%} + {%- for feature in shield.supported_features -%} + {%- if feature not in feature_types -%} + {%- set _ = feature_types.append(feature) -%} + {%- endif -%} + {%- endfor -%} + {{- feature_types|join(' ') -}} + " tabindex="0">
{{ vendors[shield.vendor] }}
{% if shield.image -%} A picture of the {{ shield.full_name }} shield.overlay**: This file provides a shield description in devicetree format that is merged with the board's :ref:`devicetree ` diff --git a/scripts/list_shields.py b/scripts/list_shields.py index 7590fdd781d..27a84aa3004 100755 --- a/scripts/list_shields.py +++ b/scripts/list_shields.py @@ -39,6 +39,7 @@ class Shield: dir: Path full_name: str | None = None vendor: str | None = None + supported_features: list[str] | None = None def shield_key(shield): return shield.name @@ -49,7 +50,8 @@ def process_shield_data(shield_data, shield_dir): name=shield_data['name'], dir=shield_dir, full_name=shield_data.get('full_name'), - vendor=shield_data.get('vendor') + vendor=shield_data.get('vendor'), + supported_features=shield_data.get('supported_features', []), ) def find_shields(args): diff --git a/scripts/schemas/shield-schema.yml b/scripts/schemas/shield-schema.yml index b3dcba896b5..1637300228a 100644 --- a/scripts/schemas/shield-schema.yml +++ b/scripts/schemas/shield-schema.yml @@ -21,6 +21,11 @@ schema;shield-schema: required: true type: str desc: Manufacturer/vendor of the shield + supported_features: + required: false + sequence: + - type: str + desc: A hardware feature the shield supports (see dts/bindings/binding-types.txt) type: map range: