forked from project-chip/connectedhomeip
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Update PICS Generator to 1.4 (project-chip#35619)
* Updated PICS Generator to match 1.4 PICS * Add script to validate PICS and cluster macthing * Updated based on review feedback * Apply suggestions from code review Co-authored-by: C Freeman <[email protected]> Co-authored-by: Andrei Litvin <[email protected]> * Add XMLPICSValidator to wordlist * Restyled by prettier-markdown * Restyled by isort --------- Co-authored-by: C Freeman <[email protected]> Co-authored-by: Andrei Litvin <[email protected]> Co-authored-by: Restyled.io <[email protected]>
- Loading branch information
Showing
5 changed files
with
153 additions
and
36 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -1603,6 +1603,7 @@ xFFF | |
xFFFF | ||
xfffff | ||
xFFFFFFEFFFFFFFFF | ||
XMLPICSValidator | ||
xtensa | ||
xvzf | ||
xwayland | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
# | ||
# Copyright (c) 2024 Project CHIP Authors | ||
# All rights reserved. | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
# | ||
|
||
import argparse | ||
import os | ||
import sys | ||
|
||
from pics_generator_support import map_cluster_name_to_pics_xml, pics_xml_file_list_loader | ||
|
||
# Add the path to python_testing folder, in order to be able to import from matter_testing_support | ||
sys.path.append(os.path.abspath(sys.path[0] + "/../../python_testing")) | ||
from spec_parsing_support import build_xml_clusters # noqa: E402 | ||
|
||
parser = argparse.ArgumentParser() | ||
parser.add_argument('--pics-template', required=True) | ||
args, unknown = parser.parse_known_args() | ||
|
||
xml_template_path_str = args.pics_template | ||
|
||
print("Build list of PICS XML") | ||
pics_xml_file_list = pics_xml_file_list_loader(xml_template_path_str, True) | ||
|
||
print("Build list of spec XML") | ||
xml_clusters, problems = build_xml_clusters() | ||
|
||
for cluster in xml_clusters: | ||
pics_xml_file_name = map_cluster_name_to_pics_xml(xml_clusters[cluster].name, pics_xml_file_list) | ||
|
||
if pics_xml_file_name: | ||
print(f"{xml_clusters[cluster].name} - {pics_xml_file_name} ✅") | ||
else: | ||
print( | ||
f"Could not find matching PICS XML file for {xml_clusters[cluster].name} - {xml_clusters[cluster].pics} (Provisional: {xml_clusters[cluster].is_provisional}) ❌") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
# | ||
# Copyright (c) 2024 Project CHIP Authors | ||
# All rights reserved. | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
# | ||
|
||
import os | ||
|
||
cluster_to_pics_dict = { | ||
# Name mapping due to inconsistent naming of PICS files | ||
"ICDManagement": "ICD Management", | ||
"OTA Software Update Provider": "OTA Software Update", | ||
"OTA Software Update Requestor": "OTA Software Update", | ||
"On/Off": "On-Off", | ||
"GroupKeyManagement": "Group Communication", | ||
"Wake on LAN": "Media Cluster", | ||
"Low Power": "Media Cluster", | ||
"Keypad Input": "Media Cluster", | ||
"Audio Output": "Media Cluster", | ||
"Media Input": "Media Cluster", | ||
"Target Navigator": "Media Cluster", | ||
"Content Control": "Media Cluster", | ||
"Channel": "Media Cluster", | ||
"Media Playback": "Media Cluster", | ||
"Account Login": "Media Cluster", | ||
"Application Basic": "Media Cluster", | ||
"Content Launcher": "Media Cluster", | ||
"Content App Observer": "Media Cluster", | ||
"Application Launch": "Media Cluster", | ||
"Operational Credentials": "Node Operational Credentials", | ||
|
||
# Workaround for naming colisions with current logic | ||
"Thermostat": "Thermostat Cluster", | ||
"Boolean State": "Boolean State Cluster", | ||
"AccessControl": "Access Control Cluster", | ||
} | ||
|
||
|
||
def pics_xml_file_list_loader(pics_xml_path: str, log_loaded_pics_files: bool) -> list: | ||
|
||
pics_xml_file_list = os.listdir(pics_xml_path) | ||
|
||
if log_loaded_pics_files: | ||
if not pics_xml_path.endswith('/'): | ||
pics_xml_path += '/' | ||
|
||
for pics_xml_file in pics_xml_file_list: | ||
print(f"{pics_xml_path}/{pics_xml_file}") | ||
|
||
return pics_xml_file_list | ||
|
||
|
||
def map_cluster_name_to_pics_xml(cluster_name, pics_xml_file_list) -> str: | ||
file_name = "" | ||
|
||
pics_file_name = cluster_to_pics_dict.get(cluster_name, cluster_name) | ||
|
||
for file in pics_xml_file_list: | ||
if file.lower().startswith(pics_file_name.lower()): | ||
file_name = file | ||
break | ||
|
||
return file_name |