Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ability to create out-of-tree MEI clusters #36818

Draft
wants to merge 15 commits into
base: master
Choose a base branch
from

Conversation

markus-becker-tridonic-com
Copy link
Contributor

@markus-becker-tridonic-com markus-becker-tridonic-com commented Dec 12, 2024

Matter allows for MEI clusters. Currently, there is an example of such a cluster in the tree: sample-mei-server. If device vendors want to create their own MEI cluster, it currently needs to be included in tree, because app-common would not include information of the out-of-tree MEI cluster.

This commits:

  • adds an example for an external MEI cluster
  • adds an mei-template.json that creates app-common out-of-tree
  • adds build system modifications so that app-common which includes the external MEI cluster is being used when EXTERNAL_APP_COMMON is given to chip_configure_data_model().

Copy link

semanticdiff-com bot commented Dec 12, 2024

Review changes with  SemanticDiff

Changed Files
File Status
  examples/manufacturer-specific-app/nrfconnect/manufacturer-specific/xml/sample-external-manufacturer-specific-cluster.xml  19% smaller
  src/app/zap_cluster_list.json  9% smaller
  .github/workflows/lint.yml Unsupported file format
  .github/workflows/tests.yaml Unsupported file format
  config/common/cmake/chip_gn.cmake Unsupported file format
  config/common/cmake/chip_gn_args.cmake Unsupported file format
  config/nrfconnect/chip-module/CMakeLists.txt Unsupported file format
  config/zephyr/Kconfig Unsupported file format
  docs/examples/manufacturer_specific.md Unsupported file format
  docs/ids_and_codes/zap_clusters.md Unsupported file format
  examples/chef/README.md Unsupported file format
  examples/chef/devices/rootnode_onofflight_manufacturer_specific_sample.matter Unsupported file format
  examples/chef/devices/rootnode_onofflight_manufacturer_specific_sample.zap Unsupported file format
  examples/manufacturer-specific-app/manufacturer-specific-common/BUILD.gn Unsupported file format
  examples/manufacturer-specific-app/manufacturer-specific-common/include/ColorFormat.h Unsupported file format
  examples/manufacturer-specific-app/manufacturer-specific-common/include/LightingManager.h Unsupported file format
  examples/manufacturer-specific-app/manufacturer-specific-common/manufacturer-specific-app.matter Unsupported file format
  examples/manufacturer-specific-app/manufacturer-specific-common/manufacturer-specific-app.zap Unsupported file format
  examples/manufacturer-specific-app/manufacturer-specific-common/src/ColorFormat.cpp Unsupported file format
  examples/manufacturer-specific-app/manufacturer-specific-common/src/LightingManager.cpp Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/.gitignore Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/CMakeLists.txt Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/Kconfig Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/Kconfig.sysbuild Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/README.md Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/boards/nrf52840dk_nrf52840.overlay Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/boards/nrf52840dongle_nrf52840.conf Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/boards/nrf52840dongle_nrf52840.overlay Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/boards/nrf5340dk_nrf5340_cpuapp.overlay Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/boards/nrf7002dk_nrf5340_cpuapp.overlay Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/main/AppTask.cpp Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/main/ZclCallbacks.cpp Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/main/include/AppConfig.h Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/main/include/AppEvent.h Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/main/include/AppTask.h Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/main/include/CHIPProjectConfig.h Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/main/main.cpp Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/manufacturer-specific/clusters/sample-external-manufacturer-specific-server.cpp Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/manufacturer-specific/clusters/sample-external-manufacturer-specific-server.h Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/manufacturer-specific/config-data.yaml Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/manufacturer-specific/manufacturer-specific-templates.json  0% smaller
  examples/manufacturer-specific-app/nrfconnect/manufacturer-specific/zzz_generated/app-common/app-common/zap-generated/attribute-type.h Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/manufacturer-specific/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/manufacturer-specific/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/manufacturer-specific/zzz_generated/app-common/app-common/zap-generated/callback.h Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/manufacturer-specific/zzz_generated/app-common/app-common/zap-generated/cluster-enums-check.h Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/manufacturer-specific/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/manufacturer-specific/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/manufacturer-specific/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/manufacturer-specific/zzz_generated/app-common/app-common/zap-generated/ids/Attributes.h Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/manufacturer-specific/zzz_generated/app-common/app-common/zap-generated/ids/Clusters.h Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/manufacturer-specific/zzz_generated/app-common/app-common/zap-generated/ids/Commands.h Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/manufacturer-specific/zzz_generated/app-common/app-common/zap-generated/ids/Events.h Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/pm_static_nrf52840dk_nrf52840.yml Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/pm_static_nrf52840dk_nrf52840_release.yml Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/pm_static_nrf52840dongle_nrf52840.yml Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp.yml Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp_release.yml Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/pm_static_nrf7002dk_nrf5340_cpuapp.yml Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/pm_static_nrf7002dk_nrf5340_cpuapp_release.yml Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/prj.conf Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/prj_release.conf Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/rpc.overlay Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/sysbuild.conf Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/sysbuild/ipc_radio/boards/nrf5340dk_nrf5340_cpunet.conf Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/sysbuild/ipc_radio/boards/nrf7002dk_nrf5340_cpunet.conf Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/sysbuild/ipc_radio/prj.conf Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/sysbuild/ipc_radio/prj_release.conf Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/sysbuild/mcuboot/app.overlay Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.conf Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.overlay Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.conf Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/sysbuild/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.conf Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/sysbuild/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.overlay Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/sysbuild/mcuboot/prj.conf Unsupported file format
  examples/manufacturer-specific-app/nrfconnect/third_party/connectedhomeip  0% smaller
  scripts/rules.matterlint Unsupported file format
  src/app/chip_data_model.cmake Unsupported file format
  src/app/chip_data_model.gni Unsupported file format
  src/app/clusters/manufacturer-specific-server/manufacturer-specific-server.cpp Unsupported file format
  src/app/clusters/manufacturer-specific-server/manufacturer-specific-server.h Unsupported file format
  src/app/common/BUILD.gn Unsupported file format
  src/app/common/templates/config-data.yaml Unsupported file format
  src/app/tests/suites/TestCluster.yaml Unsupported file format
  src/app/zap-templates/zcl/data-model/chip/sample-manufacturer-specific-cluster.xml  0% smaller
  src/app/zap-templates/zcl/zcl-with-test-extensions.json  0% smaller
  src/app/zap-templates/zcl/zcl.json  0% smaller
  src/controller/data_model/controller-clusters.matter Unsupported file format
  src/controller/data_model/controller-clusters.zap Unsupported file format
  src/controller/java/generated/java/chip/devicecontroller/ChipClusters.java  0% smaller
  src/controller/java/generated/java/chip/devicecontroller/ChipEventStructs.java  0% smaller
  src/controller/java/generated/java/chip/devicecontroller/ClusterIDMapping.java  0% smaller
  src/controller/java/generated/java/chip/devicecontroller/ClusterInfoMapping.java  0% smaller
  src/controller/java/generated/java/chip/devicecontroller/ClusterReadMapping.java  0% smaller
  src/controller/java/generated/java/chip/devicecontroller/ClusterWriteMapping.java  0% smaller
  src/controller/java/generated/java/chip/devicecontroller/cluster/eventstructs/SampleManufacturerSpecificClusterClusterPingCountEventEvent.kt Unsupported file format
  src/controller/java/generated/java/chip/devicecontroller/cluster/files.gni Unsupported file format
  src/controller/java/generated/java/matter/controller/cluster/clusters/SampleManufacturerSpecificClusterCluster.kt Unsupported file format
  src/controller/java/generated/java/matter/controller/cluster/eventstructs/SampleManufacturerSpecificClusterClusterPingCountEventEvent.kt Unsupported file format
  src/controller/java/generated/java/matter/controller/cluster/eventstructs/SampleManufacturerSpecificClusterPingCountEventEvent.kt Unsupported file format
  src/controller/java/generated/java/matter/controller/cluster/files.gni Unsupported file format
  src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp Unsupported file format
  src/controller/java/zap-generated/CHIPEventTLVValueDecoder.cpp Unsupported file format
  src/controller/python/chip/clusters/CHIPClusters.py  0% smaller
  src/controller/python/chip/clusters/Objects.py  0% smaller
  src/darwin/Framework/CHIP/templates/availability.yaml Unsupported file format
  src/darwin/Framework/CHIP/zap-generated/MTRAttributeSpecifiedCheck.mm Unsupported file format
  src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm Unsupported file format
  src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h Unsupported file format
  src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm Unsupported file format
  src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h Unsupported file format
  src/darwin/Framework/CHIP/zap-generated/MTRClusterNames.mm Unsupported file format
  src/darwin/Framework/CHIP/zap-generated/MTRClusters.h Unsupported file format
  src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm Unsupported file format
  src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.h Unsupported file format
  src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.mm Unsupported file format
  src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloads_Internal.h Unsupported file format
  src/darwin/Framework/CHIP/zap-generated/MTRCommandTimedCheck.mm Unsupported file format
  src/darwin/Framework/CHIP/zap-generated/MTREventTLVValueDecoder.mm Unsupported file format
  src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.h Unsupported file format
  src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.mm Unsupported file format
  zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp Unsupported file format
  zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h Unsupported file format
  zzz_generated/app-common/app-common/zap-generated/callback.h Unsupported file format
  zzz_generated/app-common/app-common/zap-generated/cluster-enums.h Unsupported file format
  zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp Unsupported file format
  zzz_generated/app-common/app-common/zap-generated/cluster-objects.h Unsupported file format
  zzz_generated/app-common/app-common/zap-generated/ids/Attributes.h Unsupported file format
  zzz_generated/app-common/app-common/zap-generated/ids/Clusters.h Unsupported file format
  zzz_generated/app-common/app-common/zap-generated/ids/Commands.h Unsupported file format
  zzz_generated/app-common/app-common/zap-generated/ids/Events.h Unsupported file format
  zzz_generated/chip-tool/zap-generated/cluster/Commands.h Unsupported file format
  zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp Unsupported file format
  zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.h Unsupported file format
  zzz_generated/chip-tool/zap-generated/cluster/logging/EntryToText.cpp Unsupported file format
  zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h Unsupported file format

Copy link

github-actions bot commented Dec 12, 2024

PR #36818: Size comparison from 75ab4c9 to 3158e54

Full report (3 builds for cc32xx, stm32)
platform target config section 75ab4c9 3158e54 change % change
cc32xx air-purifier CC3235SF_LAUNCHXL FLASH 631050 631050 0 0.0
RAM 205824 205824 0 0.0
lock CC3235SF_LAUNCHXL FLASH 669646 669646 0 0.0
RAM 205968 205968 0 0.0
stm32 light STM32WB5MM-DK FLASH 484720 484720 0 0.0
RAM 144880 144880 0 0.0

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"mei" just means "identifier", in Matter... This is trying to show an example of a vendor-prefixed cluster, right? Should probably be named accordingly.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Understood, and that one is not named well and should probably be renamed....

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@bzbarsky-apple I am in the process of updating the complete tree for SampleMei. Is there a way to ignore the 'Check controller-clusters.matter backwards compatibility' check so that the CI jobs are not getting cancelled? Since this is a sample cluster, not a standard matter cluster, this is not a problem for backwards compatibility.

Matter allows for MEI clusters. Currently, there is an example of such a cluster in the tree:  sample-mei-server. If device vendors want to create their own MEI cluster, it currently needs to be included in tree, because app-common would not include information of the out-of-tree MEI cluster.

This commits:
* adds an example for an external MEI cluster
* adds an mei-template.json that creates app-common out-of-tree
* adds build system modifications so that app-common which includes the external MEI cluster is being used when EXTERNAL_APP_COMMON is given to chip_configure_data_model().
@github-actions github-actions bot added the documentation Improvements or additions to documentation label Jan 10, 2025
Copy link

PR #36818: Size comparison from e7082e2 to f1f2648

Full report (1 build for stm32)
platform target config section e7082e2 f1f2648 change % change
stm32 light STM32WB5MM-DK FLASH 485136 485136 0 0.0
RAM 144912 144912 0 0.0

Copy link

PR #36818: Size comparison from e7082e2 to 7787e44

Full report (7 builds for cc13x4_26x4, cc32xx, stm32)
platform target config section e7082e2 7787e44 change % change
cc13x4_26x4 lighting-app LP_EM_CC1354P10_6 FLASH 840400 840400 0 0.0
RAM 123712 123712 0 0.0
lock-ftd LP_EM_CC1354P10_6 FLASH 825932 825932 0 0.0
RAM 125600 125600 0 0.0
pump-app LP_EM_CC1354P10_6 FLASH 772836 772836 0 0.0
RAM 114076 114076 0 0.0
pump-controller-app LP_EM_CC1354P10_6 FLASH 757016 757016 0 0.0
RAM 114276 114276 0 0.0
cc32xx air-purifier CC3235SF_LAUNCHXL FLASH 540285 540285 0 0.0
RAM 205816 205816 0 0.0
lock CC3235SF_LAUNCHXL FLASH 574453 574453 0 0.0
RAM 205960 205960 0 0.0
stm32 light STM32WB5MM-DK FLASH 485136 485136 0 0.0
RAM 144912 144912 0 0.0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants