Skip to content

Conversation

@soares-sergio
Copy link
Contributor

@soares-sergio soares-sergio commented Oct 2, 2025

Summary

This PR contains a code-driven C++ implementation of the Matter Identify cluster server. This implementation (IdentifyCluster.h) is designed for flexibility avoiding the the tight coupling present in older ZAP/Ember based implementations.

It uses a delegate pattern (chip::app::Clusters::IdentifyDelegate) to notify the application about cluster-related events, such as when identification starts, stops, or an effect is triggered.

Documentation

Added a README.md with documentation.

Testing

Added a comprehensive set of unit tests.

$ ninja -C out src/app/clusters/identify-server/tests:TestIdentifyCluster && ./out/tests/TestIdentifyCluster
ninja: Entering directory `out'
[3/3] ld tests/TestIdentifyCluster
[==========] Running all tests.
[ RUN      ] TestIdentifyCluster.TestCreate
[       OK ] TestIdentifyCluster.TestCreate
[ RUN      ] TestIdentifyCluster.AttributeListTest
[       OK ] TestIdentifyCluster.AttributeListTest
[ RUN      ] TestIdentifyCluster.AcceptedCommandsMandatoryOnlyTest
[       OK ] TestIdentifyCluster.AcceptedCommandsMandatoryOnlyTest
[ RUN      ] TestIdentifyCluster.AcceptedCommandsWithOptionalTriggerEffectTest
[       OK ] TestIdentifyCluster.AcceptedCommandsWithOptionalTriggerEffectTest
[ RUN      ] TestIdentifyCluster.ClusterRevisionTest
[       OK ] TestIdentifyCluster.ClusterRevisionTest
[ RUN      ] TestIdentifyCluster.FeatureMapTest
[       OK ] TestIdentifyCluster.FeatureMapTest
[ RUN      ] TestIdentifyCluster.ReadIdentifyAttributesTest
[       OK ] TestIdentifyCluster.ReadIdentifyAttributesTest
[ RUN      ] TestIdentifyCluster.WriteIdentifyTimeTest
[       OK ] TestIdentifyCluster.WriteIdentifyTimeTest
[ RUN      ] TestIdentifyCluster.WriteReadOnlyAttributesReturnUnsupportedWriteTest
[       OK ] TestIdentifyCluster.WriteReadOnlyAttributesReturnUnsupportedWriteTest
[ RUN      ] TestIdentifyCluster.IdentifyTypeCtorInitTest
[       OK ] TestIdentifyCluster.IdentifyTypeCtorInitTest
[ RUN      ] TestIdentifyCluster.IdentifyTimeCountdownTest
[       OK ] TestIdentifyCluster.IdentifyTimeCountdownTest
[ RUN      ] TestIdentifyCluster.OnIdentifyStartStopCallbackTest
[       OK ] TestIdentifyCluster.OnIdentifyStartStopCallbackTest
[ RUN      ] TestIdentifyCluster.OnStartNotCalledMultipleTimes
[       OK ] TestIdentifyCluster.OnStartNotCalledMultipleTimes
[ RUN      ] TestIdentifyCluster.OnStopNotCalledIfNotIdentifying
[       OK ] TestIdentifyCluster.OnStopNotCalledIfNotIdentifying
[ RUN      ] TestIdentifyCluster.InvokeIdentifyCommandTest
[       OK ] TestIdentifyCluster.InvokeIdentifyCommandTest
[ RUN      ] TestIdentifyCluster.InvokeTriggerEffectCommandTest
[1759442143.167] [1818182:1818182] [ZCL] RX identify:trigger effect identifier 0x0 variant 0x0
[       OK ] TestIdentifyCluster.InvokeTriggerEffectCommandTest
[ RUN      ] TestIdentifyCluster.InvokeTriggerEffectCommandAllEffectsTest
[1759442143.167] [1818182:1818182] [ZCL] RX identify:trigger effect identifier 0x1 variant 0x0
[1759442143.167] [1818182:1818182] [ZCL] RX identify:trigger effect identifier 0x2 variant 0x0
[1759442143.167] [1818182:1818182] [ZCL] RX identify:trigger effect identifier 0xB variant 0x0
[       OK ] TestIdentifyCluster.InvokeTriggerEffectCommandAllEffectsTest
[ RUN      ] TestIdentifyCluster.InvokeTriggerEffectCommandInvalidVariantTest
[1759442143.167] [1818182:1818182] [ZCL] RX identify:trigger effect identifier 0x0 variant 0x1
[       OK ] TestIdentifyCluster.InvokeTriggerEffectCommandInvalidVariantTest
[ RUN      ] TestIdentifyCluster.TriggerEffectWhileIdentifyingTest
[1759442143.167] [1818182:1818182] [ZCL] RX identify:trigger effect identifier 0x0 variant 0x0
[       OK ] TestIdentifyCluster.TriggerEffectWhileIdentifyingTest
[ RUN      ] TestIdentifyCluster.TriggerEffectFinishEffectTest
[1759442143.167] [1818182:1818182] [ZCL] RX identify:trigger effect identifier 0xFE variant 0x0
[       OK ] TestIdentifyCluster.TriggerEffectFinishEffectTest
[ RUN      ] TestIdentifyCluster.TriggerEffectStopEffectTest
[1759442143.167] [1818182:1818182] [ZCL] RX identify:trigger effect identifier 0xFF variant 0x0
[       OK ] TestIdentifyCluster.TriggerEffectStopEffectTest
[ RUN      ] TestIdentifyCluster.IdentifyTimeAttributeReportingTest
[       OK ] TestIdentifyCluster.IdentifyTimeAttributeReportingTest
[==========] Done running all tests.
[  PASSED  ] 22 test(s).

Backwards compatibility tests:

$ ninja -C out src/app/clusters/identify-server/tests:TestIdentifyClusterBackwardsCompatibility && ./out/tests/TestIdentifyClusterBackwardsCompatibility
ninja: Entering directory `out'
ninja: no work to do.
[==========] Running all tests.
[ RUN      ] TestIdentifyClusterBackwardsCompatibility.TestLegacyInstantiattion
[       OK ] TestIdentifyClusterBackwardsCompatibility.TestLegacyInstantiattion
[ RUN      ] TestIdentifyClusterBackwardsCompatibility.TestLegacyCallbacks
[1759442469.598] [1822133:1822133] [ZCL] RX identify:trigger effect identifier 0x0 variant 0x0
[       OK ] TestIdentifyClusterBackwardsCompatibility.TestLegacyCallbacks
[ RUN      ] TestIdentifyClusterBackwardsCompatibility.TestCurrentEffectIdentifierUpdate
[1759442469.598] [1822133:1822133] [ZCL] RX identify:trigger effect identifier 0x0 variant 0x0
[1759442469.598] [1822133:1822133] [ZCL] RX identify:trigger effect identifier 0xFE variant 0x0
[       OK ] TestIdentifyClusterBackwardsCompatibility.TestCurrentEffectIdentifierUpdate
[ RUN      ] TestIdentifyClusterBackwardsCompatibility.TestIdentifyTypeInitialization
[       OK ] TestIdentifyClusterBackwardsCompatibility.TestIdentifyTypeInitialization
[==========] Done running all tests.
[  PASSED  ] 4 test(s).

Code Size Overhead (300 bytes or 600 bytes)

The average code size overhead is in the order of ~600 bytes if the application uses the legacy API.

I've updated the all-clusters-app for ESP32 to use the new CodeDriven API and instantiate the cluster directly, removing the CodegenIntegration (backwards compatibility layer) overhead. This makes the code size go down to ~300 bytes.
I also added a readme file describing how to migrate legacy apps to the new API and avoid the overhead.

Here's a size diff demonstrating the 300 bytes overhead:

$ ./scripts/tools/binary_elf_size_diff.py identify-chip-all-clusters-app.elf master-chip-all-clusters-app.elf 
Type       Size  Function                                                                             Size1       Size2
-------  ------  ------------------------------------------------------------------------------  ----------  ----------
REMOVED    -218  MatterIdentifyClusterServerAttributeChangedCallback                                      0         218
REMOVED    -152  chip::app::Clusters::Identify::DispatchServerCommand                                     0         152
REMOVED    -146  emberAfIdentifyClusterTriggerEffectCallback                                              0         146
REMOVED    -100  OnIdentifyTriggerEffect                                                                  0         100
REMOVED     -96  _GLOBAL__sub_I__Z23OnIdentifyTriggerEffectP8Identify                                     0          96
REMOVED     -64  onIdentifyClusterTick                                                                    0          64
REMOVED     -54  chip::app::Clusters::Identify::Attributes::IdentifyTime::Set                             0          54
REMOVED     -48  emberAfIdentifyClusterIdentifyCallback                                                   0          48
REMOVED     -46  Identify::Identify                                                                       0          46
REMOVED     -40  chip::app::Clusters::Identify::Attributes::IdentifyTime::Get                             0          40
REMOVED     -38  emberAfIdentifyClusterServerInitCallback                                                 0          38
CHANGED     -36  attributeData                                                                         4272        4308
REMOVED     -30  chip::app::Clusters::Identify::Attributes::IdentifyTime::Set                             0          30
REMOVED     -30  chip::app::Clusters::Identify::Attributes::IdentifyType::Set                             0          30
REMOVED     -28  gIdentify1                                                                               0          28
REMOVED     -28  __global_pointer$                                                                        0          28
REMOVED     -28  gIdentify0                                                                               0          28
REMOVED     -26  inst                                                                                     0          26
CHANGED     -18  chip::app::DispatchSingleClusterCommand                                                488         506
REMOVED     -16  gIdentify0::{lambda                                                                      0          16
REMOVED     -16  gIdentify0::{lambda                                                                      0          16
REMOVED     -16  gIdentify1::{lambda                                                                      0          16
REMOVED     -16  gIdentify0::{lambda                                                                      0          16
REMOVED     -16  gIdentify0::{lambda                                                                      0          16
REMOVED     -16  gIdentify1::{lambda                                                                      0          16
REMOVED     -16  gIdentify1::{lambda                                                                      0          16
REMOVED     -16  gIdentify1::{lambda                                                                      0          16
REMOVED     -12  identify_deactivate                                                                      0          12
REMOVED      -8  (anonymous namespace)::chipFuncArrayIdentifyServer                                       0           8
CHANGED      -4  emberAfGroupsClusterAddGroupIfIdentifyingCallback                                      102         106
REMOVED      -4  firstIdentify                                                                            0           4
CHANGED       2  AppTask::Init                                                                          422         420
ADDED         4  non-virtual thunk to chip::app::Clusters::IdentifyCluster::~IdentifyCluster              4           0
ADDED         4  (anonymous namespace)::sIdentifyDelegate                                                 4           0
ADDED         4  (anonymous namespace)::IdentifyDelegateImpl::IsTriggerEffectEnabled() const              4           0
ADDED         4  (anonymous namespace)::sTimerDelegate                                                    4           0
ADDED         4  (anonymous namespace)::firstLegacyIdentify                                               4           0
ADDED         6  non-virtual thunk to chip::app::Clusters::IdentifyCluster::TimerFired                    6           0
ADDED         8  chip::app::Clusters::IdentifyCluster::~IdentifyCluster                                   8           0
ADDED        10  (anonymous namespace)::IdentifyDelegateImpl::~IdentifyDelegateImpl                      10           0
ADDED        16  chip::app::Clusters::Identify::Attributes::kMandatoryMetadata                           16           0
ADDED        16  (anonymous namespace)::IdentifyDelegateImpl::OnIdentifyStop                             16           0
ADDED        16  chip::app::Clusters::(anonymous namespace)::kAcceptedCommandsWithTriggerEffect          16           0
CHANGED      16  MatterClusterServerShutdownCallback                                                    212         196
CHANGED      16  MatterClusterServerInitCallback                                                        212         196
ADDED        16  (anonymous namespace)::IdentifyDelegateImpl::OnIdentifyStart                            16           0
ADDED        18  FindIdentifyClusterOnEndpoint                                                           18           0
ADDED        32  vtable for (anonymous namespace)::IdentifyDelegateImpl                                  32           0
ADDED        32  chip::app::Clusters::IdentifyCluster::Attributes                                        32           0
ADDED        44  MatterIdentifyClusterShutdownCallback                                                   44           0
ADDED        44  MatterIdentifyClusterInitCallback                                                       44           0
ADDED        48  gIdentifyCluster0                                                                       48           0
ADDED        48  gIdentifyCluster1                                                                       48           0
ADDED        52  chip::app::Clusters::IdentifyCluster::TimerFired                                        52           0
ADDED        62  AppInit                                                                                 62           0
ADDED        66  chip::app::Clusters::IdentifyCluster::AcceptedCommands                                  66           0
ADDED        70  (anonymous namespace)::GetLegacyIdentifyInstance                                        70           0
ADDED        88  chip::app::Clusters::IdentifyCluster::IdentifyCluster                                   88           0
ADDED        92  vtable for chip::app::Clusters::IdentifyCluster                                         92           0
ADDED       100  (anonymous namespace)::IdentifyDelegateImpl::OnTriggerEffect                           100           0
ADDED       112  chip::app::Clusters::IdentifyCluster::WriteAttribute                                   112           0
ADDED       118  _GLOBAL__sub_I_gIdentifyCluster0                                                       118           0
ADDED       138  chip::app::Clusters::IdentifyCluster::ReadAttribute                                    138           0
ADDED       142  chip::app::Clusters::IdentifyCluster::SetIdentifyTime                                  142           0
ADDED       238  chip::app::Clusters::IdentifyCluster::InvokeCommand                                    238           0
TOTAL       304                                                                                  1345451564  1345451260

@github-actions github-actions bot added the app label Oct 2, 2025
@mergify mergify bot added the conflict label Oct 2, 2025
@mergify mergify bot removed the conflict label Oct 2, 2025
@github-actions
Copy link

github-actions bot commented Oct 2, 2025

PR #41232: Size comparison from 471d46b to ffb2c69

Full report (3 builds for realtek, stm32)
platform target config section 471d46b ffb2c69 change % change
realtek light-switch-app rtl8777g FLASH 704160 704760 600 0.1
RAM 106720 106788 68 0.1
lighting-app rtl8777g FLASH 755320 755920 600 0.1
RAM 127076 127136 60 0.0
stm32 light STM32WB5MM-DK FLASH 467764 468368 604 0.1
RAM 141152 141208 56 0.0

@github-actions
Copy link

github-actions bot commented Oct 3, 2025

PR #41232: Size comparison from 471d46b to 497b706

Full report (5 builds for cc32xx, realtek, stm32)
platform target config section 471d46b 497b706 change % change
cc32xx air-purifier CC3235SF_LAUNCHXL FLASH 553002 552198 -804 -0.1
RAM 204928 204936 8 0.0
lock CC3235SF_LAUNCHXL FLASH 585694 584970 -724 -0.1
RAM 205160 205160 0 0.0
realtek light-switch-app rtl8777g FLASH 704160 704760 600 0.1
RAM 106720 106788 68 0.1
lighting-app rtl8777g FLASH 755320 755920 600 0.1
RAM 127076 127136 60 0.0
stm32 light STM32WB5MM-DK FLASH 467764 468368 604 0.1
RAM 141152 141208 56 0.0

@mergify mergify bot added conflict and removed conflict labels Oct 3, 2025
@soares-sergio soares-sergio marked this pull request as ready for review October 3, 2025 20:51
@github-actions
Copy link

PR #41232: Size comparison from 62c795a to cf2dc44

Full report (5 builds for cc32xx, realtek, stm32)
platform target config section 62c795a cf2dc44 change % change
cc32xx air-purifier CC3235SF_LAUNCHXL FLASH 554310 553454 -856 -0.2
RAM 205544 205504 -40 -0.0
lock CC3235SF_LAUNCHXL FLASH 587034 586250 -784 -0.1
RAM 205768 205752 -16 -0.0
realtek light-switch-app rtl8777g FLASH 705368 705816 448 0.1
RAM 106784 106800 16 0.0
lighting-app rtl8777g FLASH 756568 757008 440 0.1
RAM 127132 127164 32 0.0
stm32 light STM32WB5MM-DK FLASH 469068 469520 452 0.1
RAM 141208 141248 40 0.0

@mergify mergify bot added the conflict label Oct 14, 2025
@mergify mergify bot removed the conflict label Oct 14, 2025
@github-actions
Copy link

github-actions bot commented Oct 14, 2025

PR #41232: Size comparison from 14ca7a1 to de9594a

Full report (12 builds for cc13x4_26x4, cc32xx, nrfconnect, qpg, realtek, stm32)
platform target config section 14ca7a1 de9594a change % change
cc13x4_26x4 lighting-app LP_EM_CC1354P10_6 FLASH 769432 769892 460 0.1
RAM 103208 103240 32 0.0
lock-ftd LP_EM_CC1354P10_6 FLASH 781076 781528 452 0.1
RAM 108360 108392 32 0.0
pump-app LP_EM_CC1354P10_6 FLASH 727072 727844 772 0.1
RAM 97276 97308 32 0.0
pump-controller-app LP_EM_CC1354P10_6 FLASH 711540 712304 764 0.1
RAM 97484 97516 32 0.0
cc32xx air-purifier CC3235SF_LAUNCHXL FLASH 554310 553454 -856 -0.2
RAM 205544 205504 -40 -0.0
lock CC3235SF_LAUNCHXL FLASH 587034 586250 -784 -0.1
RAM 205768 205752 -16 -0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 FLASH 932352 932832 480 0.1
RAM 161041 161041 0 0.0
qpg lighting-app qpg6200+debug FLASH 835432 835880 448 0.1
RAM 127604 127644 40 0.0
lock-app qpg6200+debug FLASH 772180 772628 448 0.1
RAM 118580 118612 32 0.0
realtek light-switch-app rtl8777g FLASH 705368 705816 448 0.1
RAM 106784 106800 16 0.0
lighting-app rtl8777g FLASH 756568 757008 440 0.1
RAM 127132 127164 32 0.0
stm32 light STM32WB5MM-DK FLASH 469068 469520 452 0.1
RAM 141208 141248 40 0.0

@github-actions
Copy link

github-actions bot commented Oct 14, 2025

PR #41232: Size comparison from 14ca7a1 to c75be6b

Full report (34 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, efr32, esp32, nrfconnect, psoc6, qpg, realtek, stm32, telink)
platform target config section 14ca7a1 c75be6b change % change
bl602 lighting-app bl602+mfd+littlefs+rpc FLASH 1105406 1105812 406 0.0
RAM 178754 178786 32 0.0
bl702 lighting-app bl702+eth FLASH 659894 660438 544 0.1
RAM 134825 134849 24 0.0
bl702+wifi FLASH 835978 836522 544 0.1
RAM 124301 124325 24 0.0
bl706+mfd+rpc+littlefs FLASH 1069114 1069658 544 0.1
RAM 117141 117181 40 0.0
bl702l contact-sensor-app bl702l+mfd+littlefs FLASH 899328 898228 -1100 -0.1
RAM 105476 105444 -32 -0.0
lighting-app bl702l+mfd+littlefs FLASH 981876 982420 544 0.1
RAM 109628 109652 24 0.0
cc13x4_26x4 lighting-app LP_EM_CC1354P10_6 FLASH 769432 769892 460 0.1
RAM 103208 103240 32 0.0
lock-ftd LP_EM_CC1354P10_6 FLASH 781076 781528 452 0.1
RAM 108360 108392 32 0.0
pump-app LP_EM_CC1354P10_6 FLASH 727072 727844 772 0.1
RAM 97276 97308 32 0.0
pump-controller-app LP_EM_CC1354P10_6 FLASH 711540 712304 764 0.1
RAM 97484 97516 32 0.0
cc32xx air-purifier CC3235SF_LAUNCHXL FLASH 554310 553454 -856 -0.2
RAM 205544 205504 -40 -0.0
lock CC3235SF_LAUNCHXL FLASH 587034 586250 -784 -0.1
RAM 205768 205752 -16 -0.0
efr32 lock-app BRD4187C FLASH 961168 961608 440 0.0
RAM 126228 126268 40 0.0
BRD4338a FLASH 755896 756664 768 0.1
RAM 255516 255532 16 0.0
window-app BRD4187C FLASH 1055508 1056300 792 0.1
RAM 122424 122432 8 0.0
esp32 all-clusters-app c3devkit DRAM 103064 103168 104 0.1
FLASH 1795260 1795636 376 0.0
IRAM 83862 83862 0 0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 FLASH 932352 932832 480 0.1
RAM 161041 161041 0 0.0
psoc6 all-clusters cy8ckit_062s2_43012 FLASH 1675364 1674428 -936 -0.1
RAM 213668 213636 -32 -0.0
all-clusters-minimal cy8ckit_062s2_43012 FLASH 1591484 1590516 -968 -0.1
RAM 210956 210932 -24 -0.0
light cy8ckit_062s2_43012 FLASH 1456772 1457516 744 0.1
RAM 197616 197648 32 0.0
lock cy8ckit_062s2_43012 FLASH 1489084 1489868 784 0.1
RAM 225328 225360 32 0.0
qpg lighting-app qpg6200+debug FLASH 835432 835880 448 0.1
RAM 127604 127644 40 0.0
lock-app qpg6200+debug FLASH 772180 772628 448 0.1
RAM 118580 118612 32 0.0
realtek light-switch-app rtl8777g FLASH 705368 705816 448 0.1
RAM 106784 106800 16 0.0
lighting-app rtl8777g FLASH 756568 757008 440 0.1
RAM 127132 127164 32 0.0
stm32 light STM32WB5MM-DK FLASH 469068 469520 452 0.1
RAM 141208 141248 40 0.0
telink bridge-app tl7218x FLASH 709686 710078 392 0.1
RAM 90408 90432 24 0.0
light-app-ota-compress-lzma-shell-factory-data tl3218x FLASH 795940 796294 354 0.0
RAM 40908 40928 20 0.0
light-app-ota-shell-factory-data tl7218x FLASH 787136 787490 354 0.0
RAM 93552 93572 20 0.0
light-switch-app-ota-compress-lzma-factory-data tl7218x_retention FLASH 713942 714296 354 0.0
RAM 51724 51740 16 0.0
light-switch-app-ota-compress-lzma-shell-factory-data tlsr9528a FLASH 747246 747600 354 0.0
RAM 70772 70788 16 0.0
light-switch-app-ota-factory-data tl3218x_retention FLASH 724098 724452 354 0.0
RAM 34472 34488 16 0.0
lighting-app-ota-factory-data tlsr9118bdk40d FLASH 601366 601720 354 0.1
RAM 108600 108620 20 0.0
lighting-app-ota-rpc-factory-data-4mb tlsr9518adk80d FLASH 819756 820114 358 0.0
RAM 91948 91968 20 0.0

@github-actions
Copy link

github-actions bot commented Oct 14, 2025

PR #41232: Size comparison from 14ca7a1 to 565acdf

Full report (34 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, efr32, esp32, nrfconnect, psoc6, qpg, realtek, stm32, telink)
platform target config section 14ca7a1 565acdf change % change
bl602 lighting-app bl602+mfd+littlefs+rpc FLASH 1105406 1106160 754 0.1
RAM 178754 178786 32 0.0
bl702 lighting-app bl702+eth FLASH 659894 660786 892 0.1
RAM 134825 134849 24 0.0
bl702+wifi FLASH 835978 836870 892 0.1
RAM 124301 124325 24 0.0
bl706+mfd+rpc+littlefs FLASH 1069114 1069918 804 0.1
RAM 117141 117181 40 0.0
bl702l contact-sensor-app bl702l+mfd+littlefs FLASH 899328 898480 -848 -0.1
RAM 105476 105444 -32 -0.0
lighting-app bl702l+mfd+littlefs FLASH 981876 982680 804 0.1
RAM 109628 109652 24 0.0
cc13x4_26x4 lighting-app LP_EM_CC1354P10_6 FLASH 769432 770100 668 0.1
RAM 103208 103240 32 0.0
lock-ftd LP_EM_CC1354P10_6 FLASH 781076 781728 652 0.1
RAM 108360 108392 32 0.0
pump-app LP_EM_CC1354P10_6 FLASH 727072 728012 940 0.1
RAM 97276 97308 32 0.0
pump-controller-app LP_EM_CC1354P10_6 FLASH 711540 712480 940 0.1
RAM 97484 97508 24 0.0
cc32xx air-purifier CC3235SF_LAUNCHXL FLASH 554310 554130 -180 -0.0
RAM 205544 205504 -40 -0.0
lock CC3235SF_LAUNCHXL FLASH 587034 586910 -124 -0.0
RAM 205768 205752 -16 -0.0
efr32 lock-app BRD4187C FLASH 961168 961800 632 0.1
RAM 126228 126268 40 0.0
BRD4338a FLASH 755896 756856 960 0.1
RAM 255516 255532 16 0.0
window-app BRD4187C FLASH 1055508 1056452 944 0.1
RAM 122424 122432 8 0.0
esp32 all-clusters-app c3devkit DRAM 103064 103160 96 0.1
FLASH 1795260 1796062 802 0.0
IRAM 83862 83862 0 0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 FLASH 932352 933000 648 0.1
RAM 161041 161033 -8 -0.0
psoc6 all-clusters cy8ckit_062s2_43012 FLASH 1675364 1675276 -88 -0.0
RAM 213668 213628 -40 -0.0
all-clusters-minimal cy8ckit_062s2_43012 FLASH 1591484 1591348 -136 -0.0
RAM 210956 210924 -32 -0.0
light cy8ckit_062s2_43012 FLASH 1456772 1458324 1552 0.1
RAM 197616 197648 32 0.0
lock cy8ckit_062s2_43012 FLASH 1489084 1490684 1600 0.1
RAM 225328 225360 32 0.0
qpg lighting-app qpg6200+debug FLASH 835432 836088 656 0.1
RAM 127604 127644 40 0.0
lock-app qpg6200+debug FLASH 772180 772836 656 0.1
RAM 118580 118612 32 0.0
realtek light-switch-app rtl8777g FLASH 705368 706008 640 0.1
RAM 106784 106792 8 0.0
lighting-app rtl8777g FLASH 756568 757216 648 0.1
RAM 127132 127164 32 0.0
stm32 light STM32WB5MM-DK FLASH 469068 469716 648 0.1
RAM 141208 141248 40 0.0
telink bridge-app tl7218x FLASH 709686 710366 680 0.1
RAM 90408 90432 24 0.0
light-app-ota-compress-lzma-shell-factory-data tl3218x FLASH 795940 796578 638 0.1
RAM 40908 40928 20 0.0
light-app-ota-shell-factory-data tl7218x FLASH 787136 787778 642 0.1
RAM 93552 93572 20 0.0
light-switch-app-ota-compress-lzma-factory-data tl7218x_retention FLASH 713942 714598 656 0.1
RAM 51724 51732 8 0.0
light-switch-app-ota-compress-lzma-shell-factory-data tlsr9528a FLASH 747246 747902 656 0.1
RAM 70772 70780 8 0.0
light-switch-app-ota-factory-data tl3218x_retention FLASH 724098 724750 652 0.1
RAM 34472 34480 8 0.0
lighting-app-ota-factory-data tlsr9118bdk40d FLASH 601366 602096 730 0.1
RAM 108600 108620 20 0.0
lighting-app-ota-rpc-factory-data-4mb tlsr9518adk80d FLASH 819756 820402 646 0.1
RAM 91948 91968 20 0.0

@github-actions
Copy link

github-actions bot commented Oct 15, 2025

PR #41232: Size comparison from 14ca7a1 to 4381c52

Full report (37 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, efr32, esp32, nrfconnect, nxp, psoc6, qpg, realtek, stm32, telink)
platform target config section 14ca7a1 4381c52 change % change
bl602 lighting-app bl602+mfd+littlefs+rpc FLASH 1105406 1106188 782 0.1
RAM 178754 178786 32 0.0
bl702 lighting-app bl702+eth FLASH 659894 660814 920 0.1
RAM 134825 134849 24 0.0
bl702+wifi FLASH 835978 836898 920 0.1
RAM 124301 124325 24 0.0
bl706+mfd+rpc+littlefs FLASH 1069114 1069946 832 0.1
RAM 117141 117181 40 0.0
bl702l contact-sensor-app bl702l+mfd+littlefs FLASH 899328 898508 -820 -0.1
RAM 105476 105444 -32 -0.0
lighting-app bl702l+mfd+littlefs FLASH 981876 982708 832 0.1
RAM 109628 109652 24 0.0
cc13x4_26x4 lighting-app LP_EM_CC1354P10_6 FLASH 769432 770108 676 0.1
RAM 103208 103240 32 0.0
lock-ftd LP_EM_CC1354P10_6 FLASH 781076 781736 660 0.1
RAM 108360 108392 32 0.0
pump-app LP_EM_CC1354P10_6 FLASH 727072 728020 948 0.1
RAM 97276 97308 32 0.0
pump-controller-app LP_EM_CC1354P10_6 FLASH 711540 712488 948 0.1
RAM 97484 97508 24 0.0
cc32xx air-purifier CC3235SF_LAUNCHXL FLASH 554310 554138 -172 -0.0
RAM 205544 205504 -40 -0.0
lock CC3235SF_LAUNCHXL FLASH 587034 586918 -116 -0.0
RAM 205768 205752 -16 -0.0
efr32 lock-app BRD4187C FLASH 961168 961832 664 0.1
RAM 126228 126268 40 0.0
BRD4338a FLASH 755896 756872 976 0.1
RAM 255516 255532 16 0.0
window-app BRD4187C FLASH 1055508 1056452 944 0.1
RAM 122424 122432 8 0.0
esp32 all-clusters-app c3devkit DRAM 103064 103160 96 0.1
FLASH 1795260 1796086 826 0.0
IRAM 83862 83862 0 0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 FLASH 932352 933012 660 0.1
RAM 161041 161033 -8 -0.0
nxp contact mcxw71+release FLASH 691800 691032 -768 -0.1
RAM 61440 61424 -16 -0.0
lighting mcxw71+release FLASH 723368 722616 -752 -0.1
RAM 68100 68084 -16 -0.0
lock mcxw71+release FLASH 771904 772768 864 0.1
RAM 61860 61868 8 0.0
psoc6 all-clusters cy8ckit_062s2_43012 FLASH 1675364 1675276 -88 -0.0
RAM 213668 213628 -40 -0.0
all-clusters-minimal cy8ckit_062s2_43012 FLASH 1591484 1591348 -136 -0.0
RAM 210956 210924 -32 -0.0
light cy8ckit_062s2_43012 FLASH 1456772 1458324 1552 0.1
RAM 197616 197648 32 0.0
lock cy8ckit_062s2_43012 FLASH 1489084 1490684 1600 0.1
RAM 225328 225360 32 0.0
qpg lighting-app qpg6200+debug FLASH 835432 836088 656 0.1
RAM 127604 127644 40 0.0
lock-app qpg6200+debug FLASH 772180 772836 656 0.1
RAM 118580 118612 32 0.0
realtek light-switch-app rtl8777g FLASH 705368 706016 648 0.1
RAM 106784 106792 8 0.0
lighting-app rtl8777g FLASH 756568 757224 656 0.1
RAM 127132 127164 32 0.0
stm32 light STM32WB5MM-DK FLASH 469068 469724 656 0.1
RAM 141208 141248 40 0.0
telink bridge-app tl7218x FLASH 709686 710386 700 0.1
RAM 90408 90432 24 0.0
light-app-ota-compress-lzma-shell-factory-data tl3218x FLASH 795940 796598 658 0.1
RAM 40908 40928 20 0.0
light-app-ota-shell-factory-data tl7218x FLASH 787136 787798 662 0.1
RAM 93552 93572 20 0.0
light-switch-app-ota-compress-lzma-factory-data tl7218x_retention FLASH 713942 714618 676 0.1
RAM 51724 51732 8 0.0
light-switch-app-ota-compress-lzma-shell-factory-data tlsr9528a FLASH 747246 747922 676 0.1
RAM 70772 70780 8 0.0
light-switch-app-ota-factory-data tl3218x_retention FLASH 724098 724770 672 0.1
RAM 34472 34480 8 0.0
lighting-app-ota-factory-data tlsr9118bdk40d FLASH 601366 602116 750 0.1
RAM 108600 108620 20 0.0
lighting-app-ota-rpc-factory-data-4mb tlsr9518adk80d FLASH 819756 820422 666 0.1
RAM 91948 91968 20 0.0

@github-actions
Copy link

github-actions bot commented Oct 15, 2025

PR #41232: Size comparison from 14ca7a1 to 78791a6

Full report (37 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, efr32, esp32, nrfconnect, nxp, psoc6, qpg, realtek, stm32, telink)
platform target config section 14ca7a1 78791a6 change % change
bl602 lighting-app bl602+mfd+littlefs+rpc FLASH 1105406 1106222 816 0.1
RAM 178754 178786 32 0.0
bl702 lighting-app bl702+eth FLASH 659894 660848 954 0.1
RAM 134825 134849 24 0.0
bl702+wifi FLASH 835978 836932 954 0.1
RAM 124301 124325 24 0.0
bl706+mfd+rpc+littlefs FLASH 1069114 1069980 866 0.1
RAM 117141 117181 40 0.0
bl702l contact-sensor-app bl702l+mfd+littlefs FLASH 899328 898542 -786 -0.1
RAM 105476 105444 -32 -0.0
lighting-app bl702l+mfd+littlefs FLASH 981876 982742 866 0.1
RAM 109628 109652 24 0.0
cc13x4_26x4 lighting-app LP_EM_CC1354P10_6 FLASH 769432 770156 724 0.1
RAM 103208 103240 32 0.0
lock-ftd LP_EM_CC1354P10_6 FLASH 781076 781784 708 0.1
RAM 108360 108392 32 0.0
pump-app LP_EM_CC1354P10_6 FLASH 727072 728068 996 0.1
RAM 97276 97308 32 0.0
pump-controller-app LP_EM_CC1354P10_6 FLASH 711540 712536 996 0.1
RAM 97484 97508 24 0.0
cc32xx air-purifier CC3235SF_LAUNCHXL FLASH 554310 554186 -124 -0.0
RAM 205544 205504 -40 -0.0
lock CC3235SF_LAUNCHXL FLASH 587034 586966 -68 -0.0
RAM 205768 205752 -16 -0.0
efr32 lock-app BRD4187C FLASH 961168 961864 696 0.1
RAM 126228 126268 40 0.0
BRD4338a FLASH 755896 756736 840 0.1
RAM 255516 255532 16 0.0
window-app BRD4187C FLASH 1055508 1056516 1008 0.1
RAM 122424 122432 8 0.0
esp32 all-clusters-app c3devkit DRAM 103064 103160 96 0.1
FLASH 1795260 1796142 882 0.0
IRAM 83862 83862 0 0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 FLASH 932352 933072 720 0.1
RAM 161041 161033 -8 -0.0
nxp contact mcxw71+release FLASH 691800 691072 -728 -0.1
RAM 61440 61424 -16 -0.0
lighting mcxw71+release FLASH 723368 722656 -712 -0.1
RAM 68100 68084 -16 -0.0
lock mcxw71+release FLASH 771904 772808 904 0.1
RAM 61860 61868 8 0.0
psoc6 all-clusters cy8ckit_062s2_43012 FLASH 1675364 1675356 -8 -0.0
RAM 213668 213628 -40 -0.0
all-clusters-minimal cy8ckit_062s2_43012 FLASH 1591484 1591428 -56 -0.0
RAM 210956 210924 -32 -0.0
light cy8ckit_062s2_43012 FLASH 1456772 1458372 1600 0.1
RAM 197616 197648 32 0.0
lock cy8ckit_062s2_43012 FLASH 1489084 1490732 1648 0.1
RAM 225328 225360 32 0.0
qpg lighting-app qpg6200+debug FLASH 835432 836136 704 0.1
RAM 127604 127644 40 0.0
lock-app qpg6200+debug FLASH 772180 772884 704 0.1
RAM 118580 118612 32 0.0
realtek light-switch-app rtl8777g FLASH 705368 706064 696 0.1
RAM 106784 106792 8 0.0
lighting-app rtl8777g FLASH 756568 757280 712 0.1
RAM 127132 127164 32 0.0
stm32 light STM32WB5MM-DK FLASH 469068 469772 704 0.2
RAM 141208 141248 40 0.0
telink bridge-app tl7218x FLASH 709686 710442 756 0.1
RAM 90408 90432 24 0.0
light-app-ota-compress-lzma-shell-factory-data tl3218x FLASH 795940 796632 692 0.1
RAM 40908 40928 20 0.0
light-app-ota-shell-factory-data tl7218x FLASH 787136 787832 696 0.1
RAM 93552 93572 20 0.0
light-switch-app-ota-compress-lzma-factory-data tl7218x_retention FLASH 713942 714652 710 0.1
RAM 51724 51732 8 0.0
light-switch-app-ota-compress-lzma-shell-factory-data tlsr9528a FLASH 747246 747956 710 0.1
RAM 70772 70780 8 0.0
light-switch-app-ota-factory-data tl3218x_retention FLASH 724098 724804 706 0.1
RAM 34472 34480 8 0.0
lighting-app-ota-factory-data tlsr9118bdk40d FLASH 601366 602150 784 0.1
RAM 108600 108620 20 0.0
lighting-app-ota-rpc-factory-data-4mb tlsr9518adk80d FLASH 819756 820456 700 0.1
RAM 91948 91968 20 0.0

Copy link
Member

@jmartinez-silabs jmartinez-silabs left a comment

Choose a reason for hiding this comment

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

shouldn't zap file be updated too to reflect the attributes now being external?

You can do scripts/tools/zap_convert_all.py to update them all. This pr is large already so It can be a follow-up

@soares-sergio
Copy link
Contributor Author

shouldn't zap file be updated too to reflect the attributes now being external?

You can do scripts/tools/zap_convert_all.py to update them all. This pr is large already so It can be a follow-up

Oh, I haven't used zap_convert_all before. Thanks for the tip @jmartinez-silabs . I'll run this in a follow up.

@mergify mergify bot merged commit 809986e into project-chip:master Oct 16, 2025
77 checks passed
@github-project-automation github-project-automation bot moved this from Todo to Done in [Platform] Darwin Oct 16, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

app cluster-decoupling Work for cluster decoupling: remove direct app-specific code dependency and allow unit testing controller darwin documentation Improvements or additions to documentation examples chef Changes in examples/chef examples github integrations nxp NXP platform platform review - approved scripts silabs tests workflows

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

6 participants