From 5b829eaddaa0ba96bf05bcb3867ac5d84e151b5b Mon Sep 17 00:00:00 2001 From: Andrei Litvin Date: Fri, 9 Dec 2022 13:23:36 -0500 Subject: [PATCH] Add device type version support in matter IDL (#24003) * Start adding version support (including parsing) for matter files * Regen all to get versions that parse. Version number is hardcoded as 1 until I get it from zap * Set the correct version for clusters * Make the test matter files have a version * One more test fix --- .../all-clusters-app.matter | 8 ++-- .../all-clusters-minimal-app.matter | 8 ++-- .../bridge-common/bridge-app.matter | 6 +-- ...p_rootnode_dimmablelight_bCwGYSDpoe.matter | 4 +- ...de_colortemperaturelight_hbUnzYVeyn.matter | 4 +- .../rootnode_contactsensor_lFAGG1bfRO.matter | 4 +- .../rootnode_dimmablelight_bCwGYSDpoe.matter | 4 +- .../rootnode_doorlock_aNKYAreMXE.matter | 4 +- ...tnode_extendedcolorlight_8lcaaYJVAa.matter | 4 +- .../devices/rootnode_fan_7N2TobIlOX.matter | 4 +- .../rootnode_flowsensor_1zVxHedlaV.matter | 4 +- ...tnode_heatingcoolingunit_ncdGai1E5a.matter | 4 +- .../rootnode_humiditysensor_Xyj4gda6Hb.matter | 4 +- .../rootnode_lightsensor_lZQycTFcJK.matter | 4 +- ...rootnode_occupancysensor_iHyVgifZuo.matter | 4 +- .../rootnode_onofflight_bbs1b7IaOV.matter | 4 +- ...ootnode_onofflightswitch_FsPlMr090Q.matter | 4 +- ...rootnode_onoffpluginunit_Wtf8ss5EBY.matter | 4 +- .../rootnode_pressuresensor_s0qC9wLH4k.matter | 4 +- .../rootnode_speaker_RpzeXdimqA.matter | 4 +- ...otnode_temperaturesensor_Qy1zkNW7c3.matter | 4 +- .../rootnode_thermostat_bm3fb8dhYi.matter | 4 +- .../rootnode_windowcovering_RLCxaGi9Yx.matter | 4 +- .../contact-sensor-app.matter | 4 +- .../bridge-common/bridge-app.matter | 6 +-- .../light-switch-app.matter | 6 +-- .../lighting-common/lighting-app.matter | 4 +- .../nxp/zap/lighting-on-off.matter | 4 +- examples/lock-app/lock-common/lock-app.matter | 4 +- .../ota-provider-app.matter | 2 +- .../ota-requestor-app.matter | 6 +-- .../placeholder/linux/apps/app1/config.matter | 4 +- .../placeholder/linux/apps/app2/config.matter | 4 +- examples/pump-app/pump-common/pump-app.matter | 4 +- .../pump-controller-app.matter | 4 +- .../esp32/main/temperature-measurement.matter | 4 +- .../thermostat-common/thermostat.matter | 4 +- examples/tv-app/tv-common/tv-app.matter | 8 ++-- .../tv-casting-common/tv-casting-app.matter | 6 +-- examples/window-app/common/window-app.matter | 6 +-- scripts/idl/matter_grammar.lark | 2 +- scripts/idl/matter_idl_parser.py | 10 +++-- scripts/idl/matter_idl_types.py | 1 + scripts/idl/test_matter_idl_parser.py | 37 ++++++++++++------- .../inputs/large_all_clusters_app.matter | 8 ++-- .../tests/inputs/large_lighting_app.matter | 4 +- .../idl/tests/inputs/several_clusters.matter | 2 +- .../templates/app/MatterIDL.zapt | 2 +- .../data_model/controller-clusters.matter | 2 +- 49 files changed, 132 insertions(+), 118 deletions(-) diff --git a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter index e3bb052603f36d..7de2619f5f25d7 100644 --- a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter +++ b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter @@ -3880,7 +3880,7 @@ server cluster FaultInjection = 4294048774 { } endpoint 0 { - device type rootdevice = 22; + device type rootdevice = 22, version 1; binding cluster OtaSoftwareUpdateProvider; server cluster Identify { @@ -4207,7 +4207,7 @@ endpoint 0 { } } endpoint 1 { - device type onofflight = 256; + device type onofflight = 256, version 1; server cluster Identify { ram attribute identifyTime; @@ -4797,7 +4797,7 @@ endpoint 1 { } } endpoint 2 { - device type onofflight = 256; + device type onofflight = 256, version 1; server cluster Groups { ram attribute nameSupport; @@ -4844,7 +4844,7 @@ endpoint 2 { } } endpoint 65534 { - device type anonymousEndpointType = 61442; + device type anonymousEndpointType = 61442, version 1; server cluster NetworkCommissioning { callback attribute maxNetworks; diff --git a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter index d448d6d5459d53..225bc9b5fd6dcb 100644 --- a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter +++ b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter @@ -3270,7 +3270,7 @@ server cluster UnitTesting = 4294048773 { } endpoint 0 { - device type rootdevice = 22; + device type rootdevice = 22, version 1; binding cluster OtaSoftwareUpdateProvider; server cluster Identify { @@ -3510,7 +3510,7 @@ endpoint 0 { } } endpoint 1 { - device type onofflight = 256; + device type onofflight = 256, version 1; server cluster Identify { ram attribute identifyTime; @@ -3892,7 +3892,7 @@ endpoint 1 { } } endpoint 2 { - device type onofflight = 256; + device type onofflight = 256, version 1; server cluster Groups { ram attribute nameSupport; @@ -3932,7 +3932,7 @@ endpoint 2 { } } endpoint 65534 { - device type anonymousEndpointType = 61442; + device type anonymousEndpointType = 61442, version 1; server cluster NetworkCommissioning { callback attribute maxNetworks; diff --git a/examples/bridge-app/bridge-common/bridge-app.matter b/examples/bridge-app/bridge-common/bridge-app.matter index e73d36dca44370..1d162d6635192c 100644 --- a/examples/bridge-app/bridge-common/bridge-app.matter +++ b/examples/bridge-app/bridge-common/bridge-app.matter @@ -1453,7 +1453,7 @@ server cluster TemperatureMeasurement = 1026 { } endpoint 0 { - device type bridge = 22; + device type bridge = 22, version 1; binding cluster AccessControl; server cluster Descriptor { @@ -1743,7 +1743,7 @@ endpoint 0 { } } endpoint 1 { - device type anonymousEndpointType = 14; + device type anonymousEndpointType = 14, version 1; binding cluster Binding; server cluster Identify { @@ -1780,7 +1780,7 @@ endpoint 1 { } } endpoint 2 { - device type dimmablelight = 257; + device type dimmablelight = 257, version 1; server cluster OnOff { ram attribute onOff; diff --git a/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter b/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter index 99128b25d80db8..8d429ea93bbef5 100644 --- a/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter +++ b/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter @@ -1298,7 +1298,7 @@ client cluster OccupancySensing = 1030 { } endpoint 0 { - device type rootdevice = 22; + device type rootdevice = 22, version 1; binding cluster OtaSoftwareUpdateProvider; server cluster Groups { @@ -1548,7 +1548,7 @@ endpoint 0 { } } endpoint 1 { - device type anonymousEndpointType = 257; + device type anonymousEndpointType = 257, version 1; binding cluster Binding; binding cluster OccupancySensing; diff --git a/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.matter b/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.matter index 691f043df048b1..574d43954ab3a5 100644 --- a/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.matter +++ b/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.matter @@ -1371,7 +1371,7 @@ server cluster ColorControl = 768 { } endpoint 0 { - device type rootdevice = 22; + device type rootdevice = 22, version 1; binding cluster OtaSoftwareUpdateProvider; server cluster Groups { @@ -1514,7 +1514,7 @@ endpoint 0 { } } endpoint 1 { - device type anonymousEndpointType = 268; + device type anonymousEndpointType = 268, version 1; server cluster Identify { ram attribute identifyTime; diff --git a/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.matter b/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.matter index 13219b599ae780..855cea4c4b1e68 100644 --- a/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.matter +++ b/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.matter @@ -1036,7 +1036,7 @@ server cluster BooleanState = 69 { } endpoint 0 { - device type rootdevice = 22; + device type rootdevice = 22, version 1; binding cluster OtaSoftwareUpdateProvider; server cluster Groups { @@ -1199,7 +1199,7 @@ endpoint 0 { } } endpoint 1 { - device type anonymousEndpointType = 21; + device type anonymousEndpointType = 21, version 1; binding cluster Binding; server cluster Identify { diff --git a/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.matter b/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.matter index b8718a1c3a6a3f..3a49ba744dcbf5 100644 --- a/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.matter +++ b/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.matter @@ -1182,7 +1182,7 @@ client cluster OccupancySensing = 1030 { } endpoint 0 { - device type rootdevice = 22; + device type rootdevice = 22, version 1; binding cluster OtaSoftwareUpdateProvider; server cluster Groups { @@ -1345,7 +1345,7 @@ endpoint 0 { } } endpoint 1 { - device type anonymousEndpointType = 257; + device type anonymousEndpointType = 257, version 1; binding cluster Binding; binding cluster OccupancySensing; diff --git a/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter b/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter index ebd71721dda2a4..a7215a34d2cd00 100644 --- a/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter +++ b/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter @@ -1421,7 +1421,7 @@ server cluster DoorLock = 257 { } endpoint 0 { - device type rootdevice = 22; + device type rootdevice = 22, version 1; binding cluster OtaSoftwareUpdateProvider; server cluster Groups { @@ -1584,7 +1584,7 @@ endpoint 0 { } } endpoint 1 { - device type anonymousEndpointType = 10; + device type anonymousEndpointType = 10, version 1; binding cluster Binding; server cluster Identify { diff --git a/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter b/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter index 14665ce693bc82..0c2da0d4114024 100644 --- a/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter +++ b/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter @@ -1437,7 +1437,7 @@ server cluster ColorControl = 768 { } endpoint 0 { - device type rootdevice = 22; + device type rootdevice = 22, version 1; binding cluster OtaSoftwareUpdateProvider; server cluster Groups { @@ -1600,7 +1600,7 @@ endpoint 0 { } } endpoint 1 { - device type anonymousEndpointType = 269; + device type anonymousEndpointType = 269, version 1; binding cluster Binding; server cluster Identify { diff --git a/examples/chef/devices/rootnode_fan_7N2TobIlOX.matter b/examples/chef/devices/rootnode_fan_7N2TobIlOX.matter index 9d6e2b3b08475a..b0157731cf14ff 100644 --- a/examples/chef/devices/rootnode_fan_7N2TobIlOX.matter +++ b/examples/chef/devices/rootnode_fan_7N2TobIlOX.matter @@ -1088,7 +1088,7 @@ server cluster FanControl = 514 { } endpoint 0 { - device type rootdevice = 22; + device type rootdevice = 22, version 1; binding cluster OtaSoftwareUpdateProvider; server cluster Groups { @@ -1260,7 +1260,7 @@ endpoint 0 { } } endpoint 1 { - device type anonymousEndpointType = 43; + device type anonymousEndpointType = 43, version 1; server cluster Identify { ram attribute identifyTime; diff --git a/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.matter b/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.matter index bfe37b564bedc6..71251a9891b3b8 100644 --- a/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.matter +++ b/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.matter @@ -1048,7 +1048,7 @@ server cluster FlowMeasurement = 1028 { } endpoint 0 { - device type rootdevice = 22; + device type rootdevice = 22, version 1; binding cluster OtaSoftwareUpdateProvider; server cluster Groups { @@ -1211,7 +1211,7 @@ endpoint 0 { } } endpoint 1 { - device type anonymousEndpointType = 774; + device type anonymousEndpointType = 774, version 1; binding cluster Groups; binding cluster Binding; diff --git a/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter b/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter index 2d6d21cdeb9b6e..c2f732cf5a4fff 100644 --- a/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter +++ b/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter @@ -1290,7 +1290,7 @@ server cluster FanControl = 514 { } endpoint 0 { - device type rootdevice = 22; + device type rootdevice = 22, version 1; binding cluster OtaSoftwareUpdateProvider; server cluster Groups { @@ -1453,7 +1453,7 @@ endpoint 0 { } } endpoint 1 { - device type anonymousEndpointType = 768; + device type anonymousEndpointType = 768, version 1; binding cluster Binding; binding cluster Thermostat; diff --git a/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.matter b/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.matter index 0095b122628556..2465a587d3bc2f 100644 --- a/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.matter +++ b/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.matter @@ -1048,7 +1048,7 @@ server cluster RelativeHumidityMeasurement = 1029 { } endpoint 0 { - device type rootdevice = 22; + device type rootdevice = 22, version 1; binding cluster OtaSoftwareUpdateProvider; server cluster Groups { @@ -1211,7 +1211,7 @@ endpoint 0 { } } endpoint 1 { - device type anonymousEndpointType = 775; + device type anonymousEndpointType = 775, version 1; binding cluster Groups; binding cluster Binding; diff --git a/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.matter b/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.matter index becad306b66a4e..6dbbbc8c29704c 100644 --- a/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.matter +++ b/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.matter @@ -1052,7 +1052,7 @@ server cluster IlluminanceMeasurement = 1024 { } endpoint 0 { - device type rootdevice = 22; + device type rootdevice = 22, version 1; binding cluster OtaSoftwareUpdateProvider; server cluster Groups { @@ -1215,7 +1215,7 @@ endpoint 0 { } } endpoint 1 { - device type anonymousEndpointType = 262; + device type anonymousEndpointType = 262, version 1; binding cluster Groups; binding cluster Binding; diff --git a/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.matter b/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.matter index ceca13d0794756..43f0dc420e138b 100644 --- a/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.matter +++ b/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.matter @@ -1047,7 +1047,7 @@ server cluster OccupancySensing = 1030 { } endpoint 0 { - device type rootdevice = 22; + device type rootdevice = 22, version 1; binding cluster OtaSoftwareUpdateProvider; server cluster Groups { @@ -1210,7 +1210,7 @@ endpoint 0 { } } endpoint 1 { - device type anonymousEndpointType = 263; + device type anonymousEndpointType = 263, version 1; binding cluster Groups; binding cluster Binding; diff --git a/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.matter b/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.matter index 2ec18df12dc036..0cb0145e16d660 100644 --- a/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.matter +++ b/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.matter @@ -1172,7 +1172,7 @@ server cluster FixedLabel = 64 { } endpoint 0 { - device type rootdevice = 22; + device type rootdevice = 22, version 1; binding cluster OtaSoftwareUpdateProvider; server cluster Groups { @@ -1335,7 +1335,7 @@ endpoint 0 { } } endpoint 1 { - device type anonymousEndpointType = 256; + device type anonymousEndpointType = 256, version 1; binding cluster Binding; server cluster Identify { diff --git a/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.matter b/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.matter index c9fd4e9cea8a53..d82e6d9dbbd2ad 100644 --- a/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.matter +++ b/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.matter @@ -1115,7 +1115,7 @@ server cluster FixedLabel = 64 { } endpoint 0 { - device type rootdevice = 22; + device type rootdevice = 22, version 1; binding cluster OtaSoftwareUpdateProvider; server cluster Groups { @@ -1278,7 +1278,7 @@ endpoint 0 { } } endpoint 1 { - device type anonymousEndpointType = 259; + device type anonymousEndpointType = 259, version 1; binding cluster OnOff; binding cluster Binding; diff --git a/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.matter b/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.matter index 1da5df855ccc37..90161aa0fc018a 100644 --- a/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.matter +++ b/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.matter @@ -1073,7 +1073,7 @@ server cluster FixedLabel = 64 { } endpoint 0 { - device type rootdevice = 22; + device type rootdevice = 22, version 1; binding cluster OtaSoftwareUpdateProvider; server cluster Groups { @@ -1236,7 +1236,7 @@ endpoint 0 { } } endpoint 1 { - device type anonymousEndpointType = 266; + device type anonymousEndpointType = 266, version 1; binding cluster Binding; server cluster Identify { diff --git a/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.matter b/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.matter index 3130725714eb6d..8d42299065c622 100644 --- a/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.matter +++ b/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.matter @@ -1057,7 +1057,7 @@ server cluster PressureMeasurement = 1027 { } endpoint 0 { - device type rootdevice = 22; + device type rootdevice = 22, version 1; binding cluster OtaSoftwareUpdateProvider; server cluster Groups { @@ -1226,7 +1226,7 @@ endpoint 0 { } } endpoint 1 { - device type anonymousEndpointType = 773; + device type anonymousEndpointType = 773, version 1; binding cluster Groups; binding cluster Binding; diff --git a/examples/chef/devices/rootnode_speaker_RpzeXdimqA.matter b/examples/chef/devices/rootnode_speaker_RpzeXdimqA.matter index b2e84bb9ff84cb..4bd96a0b65173f 100644 --- a/examples/chef/devices/rootnode_speaker_RpzeXdimqA.matter +++ b/examples/chef/devices/rootnode_speaker_RpzeXdimqA.matter @@ -1163,7 +1163,7 @@ server cluster FixedLabel = 64 { } endpoint 0 { - device type rootdevice = 22; + device type rootdevice = 22, version 1; binding cluster OtaSoftwareUpdateProvider; server cluster Groups { @@ -1326,7 +1326,7 @@ endpoint 0 { } } endpoint 1 { - device type anonymousEndpointType = 34; + device type anonymousEndpointType = 34, version 1; binding cluster Binding; server cluster Identify { diff --git a/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.matter b/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.matter index 4fcee16f61ba9a..01536ea35bdc79 100644 --- a/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.matter +++ b/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.matter @@ -1047,7 +1047,7 @@ server cluster TemperatureMeasurement = 1026 { } endpoint 0 { - device type rootdevice = 22; + device type rootdevice = 22, version 1; binding cluster OtaSoftwareUpdateProvider; server cluster Groups { @@ -1210,7 +1210,7 @@ endpoint 0 { } } endpoint 1 { - device type anonymousEndpointType = 770; + device type anonymousEndpointType = 770, version 1; binding cluster Groups; binding cluster Binding; diff --git a/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter b/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter index 04af5545fe46e2..dcec5623cb7e77 100644 --- a/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter +++ b/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter @@ -1185,7 +1185,7 @@ client cluster OccupancySensing = 1030 { } endpoint 0 { - device type rootdevice = 22; + device type rootdevice = 22, version 1; binding cluster OtaSoftwareUpdateProvider; server cluster Groups { @@ -1348,7 +1348,7 @@ endpoint 0 { } } endpoint 1 { - device type anonymousEndpointType = 769; + device type anonymousEndpointType = 769, version 1; binding cluster Binding; binding cluster FanControl; binding cluster TemperatureMeasurement; diff --git a/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.matter b/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.matter index e2096483e4a6ff..f61138c0f9f943 100644 --- a/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.matter +++ b/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.matter @@ -1165,7 +1165,7 @@ server cluster WindowCovering = 258 { } endpoint 0 { - device type rootdevice = 22; + device type rootdevice = 22, version 1; binding cluster OtaSoftwareUpdateProvider; server cluster Groups { @@ -1328,7 +1328,7 @@ endpoint 0 { } } endpoint 1 { - device type anonymousEndpointType = 514; + device type anonymousEndpointType = 514, version 1; binding cluster Binding; server cluster Identify { diff --git a/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.matter b/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.matter index 5fb1dbfd1cbaaa..10d4a9698fa39d 100644 --- a/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.matter +++ b/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.matter @@ -1255,7 +1255,7 @@ server cluster OccupancySensing = 1030 { } endpoint 0 { - device type rootdevice = 22; + device type rootdevice = 22, version 1; binding cluster OtaSoftwareUpdateProvider; server cluster Groups { @@ -1525,7 +1525,7 @@ endpoint 0 { } } endpoint 1 { - device type dimmablelight = 21; + device type dimmablelight = 21, version 1; server cluster Identify { ram attribute identifyTime; diff --git a/examples/dynamic-bridge-app/bridge-common/bridge-app.matter b/examples/dynamic-bridge-app/bridge-common/bridge-app.matter index e73d36dca44370..1d162d6635192c 100644 --- a/examples/dynamic-bridge-app/bridge-common/bridge-app.matter +++ b/examples/dynamic-bridge-app/bridge-common/bridge-app.matter @@ -1453,7 +1453,7 @@ server cluster TemperatureMeasurement = 1026 { } endpoint 0 { - device type bridge = 22; + device type bridge = 22, version 1; binding cluster AccessControl; server cluster Descriptor { @@ -1743,7 +1743,7 @@ endpoint 0 { } } endpoint 1 { - device type anonymousEndpointType = 14; + device type anonymousEndpointType = 14, version 1; binding cluster Binding; server cluster Identify { @@ -1780,7 +1780,7 @@ endpoint 1 { } } endpoint 2 { - device type dimmablelight = 257; + device type dimmablelight = 257, version 1; server cluster OnOff { ram attribute onOff; diff --git a/examples/light-switch-app/light-switch-common/light-switch-app.matter b/examples/light-switch-app/light-switch-common/light-switch-app.matter index 5a9f7405df62e7..176bb914c61dea 100644 --- a/examples/light-switch-app/light-switch-common/light-switch-app.matter +++ b/examples/light-switch-app/light-switch-common/light-switch-app.matter @@ -1719,7 +1719,7 @@ client cluster ColorControl = 768 { } endpoint 0 { - device type rootdevice = 22; + device type rootdevice = 22, version 1; binding cluster OtaSoftwareUpdateProvider; server cluster Descriptor { @@ -1989,7 +1989,7 @@ endpoint 0 { } } endpoint 1 { - device type onofflightswitch = 259; + device type onofflightswitch = 259, version 1; binding cluster Identify; binding cluster Scenes; binding cluster OnOff; @@ -2026,7 +2026,7 @@ endpoint 1 { } } endpoint 2 { - device type genericswitch = 15; + device type genericswitch = 15, version 1; server cluster Identify { ram attribute identifyTime; diff --git a/examples/lighting-app/lighting-common/lighting-app.matter b/examples/lighting-app/lighting-common/lighting-app.matter index 0c648875428bc9..c8349802e7da65 100644 --- a/examples/lighting-app/lighting-common/lighting-app.matter +++ b/examples/lighting-app/lighting-common/lighting-app.matter @@ -1706,7 +1706,7 @@ server cluster OccupancySensing = 1030 { } endpoint 0 { - device type rootdevice = 22; + device type rootdevice = 22, version 1; binding cluster OtaSoftwareUpdateProvider; server cluster Groups { @@ -1981,7 +1981,7 @@ endpoint 0 { } } endpoint 1 { - device type dimmablelight = 257; + device type dimmablelight = 257, version 1; server cluster Identify { ram attribute identifyTime; diff --git a/examples/lighting-app/nxp/zap/lighting-on-off.matter b/examples/lighting-app/nxp/zap/lighting-on-off.matter index 5a4d2825990eaf..a26c5db83cdee2 100644 --- a/examples/lighting-app/nxp/zap/lighting-on-off.matter +++ b/examples/lighting-app/nxp/zap/lighting-on-off.matter @@ -1189,7 +1189,7 @@ server cluster GroupKeyManagement = 63 { } endpoint 0 { - device type rootdevice = 22; + device type rootdevice = 22, version 1; binding cluster OtaSoftwareUpdateProvider; server cluster Descriptor { @@ -1371,7 +1371,7 @@ endpoint 0 { } } endpoint 1 { - device type dimmablelight = 256; + device type dimmablelight = 256, version 1; server cluster Identify { ram attribute identifyTime; diff --git a/examples/lock-app/lock-common/lock-app.matter b/examples/lock-app/lock-common/lock-app.matter index f04c84443ffdf5..dd2071ec6d6f25 100644 --- a/examples/lock-app/lock-common/lock-app.matter +++ b/examples/lock-app/lock-common/lock-app.matter @@ -1868,7 +1868,7 @@ server cluster DoorLock = 257 { } endpoint 0 { - device type rootdevice = 22; + device type rootdevice = 22, version 1; binding cluster OtaSoftwareUpdateProvider; server cluster Descriptor { @@ -2147,7 +2147,7 @@ endpoint 0 { } } endpoint 1 { - device type doorlock = 10; + device type doorlock = 10, version 1; server cluster Identify { ram attribute identifyTime; diff --git a/examples/ota-provider-app/ota-provider-common/ota-provider-app.matter b/examples/ota-provider-app/ota-provider-common/ota-provider-app.matter index 440398ff636ee9..892c5c6deb165b 100644 --- a/examples/ota-provider-app/ota-provider-common/ota-provider-app.matter +++ b/examples/ota-provider-app/ota-provider-common/ota-provider-app.matter @@ -799,7 +799,7 @@ server cluster UserLabel = 65 { } endpoint 0 { - device type rootdevice = 22; + device type rootdevice = 22, version 1; binding cluster AccessControl; server cluster AccessControl { diff --git a/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.matter b/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.matter index db07bab0b0a735..52ef6e1109a4ef 100644 --- a/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.matter +++ b/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.matter @@ -981,7 +981,7 @@ server cluster UserLabel = 65 { } endpoint 0 { - device type rootdevice = 22; + device type rootdevice = 22, version 1; binding cluster OtaSoftwareUpdateProvider; server cluster Descriptor { @@ -1131,7 +1131,7 @@ endpoint 0 { } } endpoint 1 { - device type anonymousEndpointType = 259; + device type anonymousEndpointType = 259, version 1; server cluster Identify { ram attribute identifyTime; @@ -1169,7 +1169,7 @@ endpoint 1 { } } endpoint 65534 { - device type anonymousEndpointType = 61442; + device type anonymousEndpointType = 61442, version 1; server cluster Descriptor { callback attribute deviceTypeList; diff --git a/examples/placeholder/linux/apps/app1/config.matter b/examples/placeholder/linux/apps/app1/config.matter index 6aa20f5264cb6b..1298138f97d403 100644 --- a/examples/placeholder/linux/apps/app1/config.matter +++ b/examples/placeholder/linux/apps/app1/config.matter @@ -2618,7 +2618,7 @@ server cluster ApplicationBasic = 1293 { } endpoint 0 { - device type anonymousEndpointType = 65280; + device type anonymousEndpointType = 65280, version 1; binding cluster OnOff; binding cluster GeneralCommissioning; binding cluster Switch; @@ -3036,7 +3036,7 @@ endpoint 0 { } } endpoint 1 { - device type anonymousEndpointType = 258; + device type anonymousEndpointType = 258, version 1; binding cluster OnOff; server cluster Identify { diff --git a/examples/placeholder/linux/apps/app2/config.matter b/examples/placeholder/linux/apps/app2/config.matter index 6aa20f5264cb6b..1298138f97d403 100644 --- a/examples/placeholder/linux/apps/app2/config.matter +++ b/examples/placeholder/linux/apps/app2/config.matter @@ -2618,7 +2618,7 @@ server cluster ApplicationBasic = 1293 { } endpoint 0 { - device type anonymousEndpointType = 65280; + device type anonymousEndpointType = 65280, version 1; binding cluster OnOff; binding cluster GeneralCommissioning; binding cluster Switch; @@ -3036,7 +3036,7 @@ endpoint 0 { } } endpoint 1 { - device type anonymousEndpointType = 258; + device type anonymousEndpointType = 258, version 1; binding cluster OnOff; server cluster Identify { diff --git a/examples/pump-app/pump-common/pump-app.matter b/examples/pump-app/pump-common/pump-app.matter index b1b48d30664b9f..8d670ca2600f03 100644 --- a/examples/pump-app/pump-common/pump-app.matter +++ b/examples/pump-app/pump-common/pump-app.matter @@ -1247,7 +1247,7 @@ client cluster OccupancySensing = 1030 { } endpoint 0 { - device type pump = 22; + device type pump = 22, version 1; binding cluster OtaSoftwareUpdateProvider; server cluster Descriptor { @@ -1415,7 +1415,7 @@ endpoint 0 { } } endpoint 1 { - device type pump = 771; + device type pump = 771, version 1; binding cluster OccupancySensing; server cluster Identify { diff --git a/examples/pump-controller-app/pump-controller-common/pump-controller-app.matter b/examples/pump-controller-app/pump-controller-common/pump-controller-app.matter index b9096238a10a54..3fda4212f7a072 100644 --- a/examples/pump-controller-app/pump-controller-common/pump-controller-app.matter +++ b/examples/pump-controller-app/pump-controller-common/pump-controller-app.matter @@ -1103,7 +1103,7 @@ client cluster FlowMeasurement = 1028 { } endpoint 0 { - device type rootdevice = 22; + device type rootdevice = 22, version 1; binding cluster OtaSoftwareUpdateProvider; server cluster Descriptor { @@ -1271,7 +1271,7 @@ endpoint 0 { } } endpoint 1 { - device type pumpcontroller = 772; + device type pumpcontroller = 772, version 1; binding cluster OnOff; binding cluster PumpConfigurationAndControl; binding cluster TemperatureMeasurement; diff --git a/examples/temperature-measurement-app/esp32/main/temperature-measurement.matter b/examples/temperature-measurement-app/esp32/main/temperature-measurement.matter index 800d4acaf2325f..99fee8ee46a6ac 100644 --- a/examples/temperature-measurement-app/esp32/main/temperature-measurement.matter +++ b/examples/temperature-measurement-app/esp32/main/temperature-measurement.matter @@ -837,7 +837,7 @@ server cluster TemperatureMeasurement = 1026 { } endpoint 0 { - device type rootdevice = 22; + device type rootdevice = 22, version 1; server cluster Descriptor { callback attribute deviceTypeList; @@ -1026,7 +1026,7 @@ endpoint 0 { } } endpoint 1 { - device type tempsensor = 770; + device type tempsensor = 770, version 1; server cluster Descriptor { callback attribute deviceTypeList; diff --git a/examples/thermostat/thermostat-common/thermostat.matter b/examples/thermostat/thermostat-common/thermostat.matter index 15933ed93c52d3..af30ee4f8ded66 100644 --- a/examples/thermostat/thermostat-common/thermostat.matter +++ b/examples/thermostat/thermostat-common/thermostat.matter @@ -1447,7 +1447,7 @@ server cluster ThermostatUserInterfaceConfiguration = 516 { } endpoint 0 { - device type rootdevice = 22; + device type rootdevice = 22, version 1; binding cluster OtaSoftwareUpdateProvider; server cluster Identify { @@ -1727,7 +1727,7 @@ endpoint 0 { } } endpoint 1 { - device type thermostat = 769; + device type thermostat = 769, version 1; binding cluster Identify; server cluster Identify { diff --git a/examples/tv-app/tv-common/tv-app.matter b/examples/tv-app/tv-common/tv-app.matter index 0a8fa960cd62d3..afec0ee0c4a6b8 100644 --- a/examples/tv-app/tv-common/tv-app.matter +++ b/examples/tv-app/tv-common/tv-app.matter @@ -2131,7 +2131,7 @@ server cluster AccountLogin = 1294 { } endpoint 0 { - device type rootdevice = 22; + device type rootdevice = 22, version 1; binding cluster Binding; binding cluster GeneralCommissioning; binding cluster NetworkCommissioning; @@ -2414,7 +2414,7 @@ endpoint 0 { } } endpoint 1 { - device type videoplayer = 35; + device type videoplayer = 35, version 1; server cluster OnOff { ram attribute onOff; @@ -2509,7 +2509,7 @@ endpoint 1 { } } endpoint 2 { - device type speaker = 34; + device type speaker = 34, version 1; server cluster OnOff { ram attribute onOff; @@ -2546,7 +2546,7 @@ endpoint 2 { } } endpoint 3 { - device type contentapplication = 36; + device type contentapplication = 36, version 1; server cluster Descriptor { callback attribute deviceTypeList; diff --git a/examples/tv-casting-app/tv-casting-common/tv-casting-app.matter b/examples/tv-casting-app/tv-casting-common/tv-casting-app.matter index 172f1c40c3f836..b94bac44d601a1 100644 --- a/examples/tv-casting-app/tv-casting-common/tv-casting-app.matter +++ b/examples/tv-casting-app/tv-casting-common/tv-casting-app.matter @@ -2149,7 +2149,7 @@ client cluster AccountLogin = 1294 { } endpoint 0 { - device type rootdevice = 22; + device type rootdevice = 22, version 1; server cluster Descriptor { callback attribute deviceTypeList; @@ -2420,7 +2420,7 @@ endpoint 0 { } } endpoint 1 { - device type videoplayer = 35; + device type videoplayer = 35, version 1; binding cluster OnOff; binding cluster LevelControl; binding cluster Descriptor; @@ -2539,7 +2539,7 @@ endpoint 1 { } } endpoint 2 { - device type occupancysensor = 263; + device type occupancysensor = 263, version 1; server cluster OnOff { ram attribute onOff; diff --git a/examples/window-app/common/window-app.matter b/examples/window-app/common/window-app.matter index 59ec84ee40d482..29031ccc8ec6e0 100644 --- a/examples/window-app/common/window-app.matter +++ b/examples/window-app/common/window-app.matter @@ -1580,7 +1580,7 @@ server cluster WindowCovering = 258 { } endpoint 0 { - device type windowcovering = 22; + device type windowcovering = 22, version 1; binding cluster OtaSoftwareUpdateProvider; server cluster Descriptor { @@ -1893,7 +1893,7 @@ endpoint 0 { } } endpoint 1 { - device type windowcovering = 514; + device type windowcovering = 514, version 2; server cluster Identify { ram attribute identifyTime; @@ -1970,7 +1970,7 @@ endpoint 1 { } } endpoint 2 { - device type windowcovering = 514; + device type windowcovering = 514, version 2; server cluster Identify { ram attribute identifyTime; diff --git a/scripts/idl/matter_grammar.lark b/scripts/idl/matter_grammar.lark index 020283cfbdd807..a63f97e385bb5b 100644 --- a/scripts/idl/matter_grammar.lark +++ b/scripts/idl/matter_grammar.lark @@ -59,7 +59,7 @@ cluster: cluster_side "cluster"i id "=" positive_integer "{" (enum|bitmap|event| endpoint: "endpoint"i positive_integer "{" endpoint_content* "}" ?endpoint_content: endpoint_cluster_binding | endpoint_server_cluster | endpoint_device_type -endpoint_device_type: "device" "type" id "=" positive_integer ";" +endpoint_device_type: "device" "type" id "=" positive_integer "," "version" positive_integer ";" endpoint_cluster_binding: "binding"i "cluster"i id ";" endpoint_server_cluster: "server"i "cluster"i id "{" endpoint_attribute_instantiation* "}" diff --git a/scripts/idl/matter_idl_parser.py b/scripts/idl/matter_idl_parser.py index 4d84b8a7464193..0864db3fe6f578 100755 --- a/scripts/idl/matter_idl_parser.py +++ b/scripts/idl/matter_idl_parser.py @@ -299,7 +299,8 @@ def attribute_with_access(self, args): elif operation == AttributeOperation.WRITE: acl['writeacl'] = access else: - raise Exception("Unknown attribute operation: %r" % operation) + raise Exception( + "Unknown attribute operation: %r" % operation) return (args[-1], acl) @@ -357,8 +358,8 @@ def endpoint(self, number, *transforms): return endpoint @v_args(inline=True) - def endpoint_device_type(self, name, code): - return AddDeviceTypeToEndpointTransform(DeviceType(name=name, code=code)) + def endpoint_device_type(self, name, code, version): + return AddDeviceTypeToEndpointTransform(DeviceType(name=name, code=code, version=version)) @v_args(inline=True) def endpoint_cluster_binding(self, id): @@ -417,7 +418,8 @@ def __init__(self, parser, skip_meta: bool): self.skip_meta = skip_meta def parse(self, file, file_name: str = None): - idl = MatterIdlTransformer(self.skip_meta).transform(self.parser.parse(file)) + idl = MatterIdlTransformer(self.skip_meta).transform( + self.parser.parse(file)) idl.parse_file_name = file_name return idl diff --git a/scripts/idl/matter_idl_types.py b/scripts/idl/matter_idl_types.py index ba66e4cad643ad..0971867ab3c82a 100644 --- a/scripts/idl/matter_idl_types.py +++ b/scripts/idl/matter_idl_types.py @@ -232,6 +232,7 @@ class ServerClusterInstantiation: class DeviceType: name: str code: int + version: int @dataclass diff --git a/scripts/idl/test_matter_idl_parser.py b/scripts/idl/test_matter_idl_parser.py index d200c3914b616f..8b7d24a22355ac 100755 --- a/scripts/idl/test_matter_idl_parser.py +++ b/scripts/idl/test_matter_idl_parser.py @@ -81,7 +81,8 @@ def test_global_struct(self): data_type=DataType(name="CHAR_STRING"), code=1, name="astring", ), Field(data_type=DataType(name="CLUSTER_ID"), code=2, name="idlist", is_list=True, qualities=FieldQuality.OPTIONAL), - Field(data_type=DataType(name="int"), code=0x123, name="valueThatIsNullable", qualities=FieldQuality.NULLABLE), + Field(data_type=DataType(name="int"), code=0x123, + name="valueThatIsNullable", qualities=FieldQuality.NULLABLE), Field(data_type=DataType(name="char_string", max_length=123), code=222, name="sized_string"), ])] @@ -224,7 +225,8 @@ def test_cluster_commands(self): Struct(name="FreeStruct", fields=[]), Struct(name="InParam", fields=[], tag=StructTag.REQUEST), - Struct(name="OutParam", fields=[], tag=StructTag.RESPONSE, code=223), + Struct(name="OutParam", fields=[], + tag=StructTag.RESPONSE, code=223), ], commands=[ Command(name="WithoutArg", code=123, @@ -262,7 +264,8 @@ def test_cluster_command_access(self): structs=[ Struct(name="InParam", fields=[], tag=StructTag.REQUEST), - Struct(name="OutParam", fields=[], tag=StructTag.RESPONSE, code=4), + Struct(name="OutParam", fields=[], + tag=StructTag.RESPONSE, code=4), ], commands=[ Command(name="WithoutArg", code=1, @@ -403,8 +406,10 @@ def test_parsing_metadata_for_cluster(self): """) expected = Idl(clusters=[ - Cluster(parse_meta=ParseMetaData(line=2, column=1), side=ClusterSide.SERVER, name="A", code=1), - Cluster(parse_meta=ParseMetaData(line=5, column=4), side=ClusterSide.CLIENT, name="B", code=2), + Cluster(parse_meta=ParseMetaData(line=2, column=1), + side=ClusterSide.SERVER, name="A", code=1), + Cluster(parse_meta=ParseMetaData(line=5, column=4), + side=ClusterSide.CLIENT, name="B", code=2), ]) self.assertEqual(actual, expected) @@ -425,8 +430,8 @@ def test_multiple_clusters(self): def test_endpoints(self): actual = parseText(""" endpoint 12 { - device type foo = 123; - device type bar = 0xFF; + device type foo = 123, version 1; + device type bar = 0xFF, version 2; server cluster Foo { } server cluster Bar { } @@ -437,12 +442,16 @@ def test_endpoints(self): expected = Idl(endpoints=[Endpoint(number=12, device_types=[ - DeviceType(name="foo", code=123), - DeviceType(name="bar", code=0xFF), + DeviceType( + name="foo", code=123, version=1), + DeviceType( + name="bar", code=0xFF, version=2), ], server_clusters=[ - ServerClusterInstantiation(name="Foo"), - ServerClusterInstantiation(name="Bar"), + ServerClusterInstantiation( + name="Foo"), + ServerClusterInstantiation( + name="Bar"), ], client_bindings=["Bar", "Test"],) ]) @@ -465,10 +474,12 @@ def test_cluster_instantiation(self): expected = Idl(endpoints=[Endpoint(number=3, server_clusters=[ ServerClusterInstantiation(name="Example", attributes=[ - AttributeInstantiation(name='inRamZero', storage=AttributeStorage.RAM), + AttributeInstantiation( + name='inRamZero', storage=AttributeStorage.RAM), AttributeInstantiation(name='inRamWithDefault', storage=AttributeStorage.RAM, default=123), - AttributeInstantiation(name='inNVMNoDef', storage=AttributeStorage.PERSIST), + AttributeInstantiation( + name='inNVMNoDef', storage=AttributeStorage.PERSIST), AttributeInstantiation( name='inNVMStr', storage=AttributeStorage.PERSIST, default="abc"), AttributeInstantiation(name='inNVMWithDefault', diff --git a/scripts/idl/tests/inputs/large_all_clusters_app.matter b/scripts/idl/tests/inputs/large_all_clusters_app.matter index 62cf85754d8560..6cadd621bc383b 100644 --- a/scripts/idl/tests/inputs/large_all_clusters_app.matter +++ b/scripts/idl/tests/inputs/large_all_clusters_app.matter @@ -3875,7 +3875,7 @@ server cluster FaultInjection = 4294048774 { } endpoint 0 { - device type rootdevice = 22; + device type rootdevice = 22, version 1; binding cluster OtaSoftwareUpdateProvider; server cluster Identify { @@ -4202,7 +4202,7 @@ endpoint 0 { } } endpoint 1 { - device type onofflight = 256; + device type onofflight = 256, version 1; server cluster Identify { ram attribute identifyTime; @@ -4792,7 +4792,7 @@ endpoint 1 { } } endpoint 2 { - device type onofflight = 256; + device type onofflight = 256, version 1; server cluster Groups { ram attribute nameSupport; @@ -4839,7 +4839,7 @@ endpoint 2 { } } endpoint 65534 { - device type anonymousEndpointType = 61442; + device type anonymousEndpointType = 61442, version 1; server cluster NetworkCommissioning { callback attribute maxNetworks; diff --git a/scripts/idl/tests/inputs/large_lighting_app.matter b/scripts/idl/tests/inputs/large_lighting_app.matter index d685bdd9abf0e8..b4097981369589 100644 --- a/scripts/idl/tests/inputs/large_lighting_app.matter +++ b/scripts/idl/tests/inputs/large_lighting_app.matter @@ -1701,7 +1701,7 @@ server cluster OccupancySensing = 1030 { } endpoint 0 { - device type rootdevice = 22; + device type rootdevice = 22, version 1; binding cluster OtaSoftwareUpdateProvider; server cluster Groups { @@ -1976,7 +1976,7 @@ endpoint 0 { } } endpoint 1 { - device type dimmablelight = 257; + device type dimmablelight = 257, version 1; server cluster Identify { ram attribute identifyTime; diff --git a/scripts/idl/tests/inputs/several_clusters.matter b/scripts/idl/tests/inputs/several_clusters.matter index 48832dd150a945..4451abbe828d69 100644 --- a/scripts/idl/tests/inputs/several_clusters.matter +++ b/scripts/idl/tests/inputs/several_clusters.matter @@ -32,7 +32,7 @@ server cluster Third = 3 { } endpoint 0 { - device type rootdevice = 22; + device type rootdevice = 22, version 1; binding cluster Second; server cluster Third { diff --git a/src/app/zap-templates/templates/app/MatterIDL.zapt b/src/app/zap-templates/templates/app/MatterIDL.zapt index f7d77fec087a1c..5092a6b252102c 100644 --- a/src/app/zap-templates/templates/app/MatterIDL.zapt +++ b/src/app/zap-templates/templates/app/MatterIDL.zapt @@ -117,7 +117,7 @@ {{#user_endpoints}} endpoint {{endpointId}} { {{#if deviceIdentifier}} - device type {{chip_friendly_endpoint_type_name}} = {{deviceIdentifier}}; + device type {{chip_friendly_endpoint_type_name}} = {{deviceIdentifier}}, version {{endpointVersion}}; {{/if~}} {{#user_clusters}} diff --git a/src/controller/data_model/controller-clusters.matter b/src/controller/data_model/controller-clusters.matter index c8b06c66bf3d6d..7b448f4a558053 100644 --- a/src/controller/data_model/controller-clusters.matter +++ b/src/controller/data_model/controller-clusters.matter @@ -4406,7 +4406,7 @@ client cluster UnitTesting = 4294048773 { } endpoint 1 { - device type rootdevice = 22; + device type rootdevice = 22, version 1; binding cluster Identify; binding cluster Groups; binding cluster Scenes;