Skip to content

Commit ea6e910

Browse files
lpbeliveau-silabsbzbarsky-apple
authored andcommitted
[Scenes] AttributeValue refactor (project-chip#33260)
* Refactor AttributeValue to the appropriate Value* in AttributeValueList * Updated attribute value in test * Applied comments about typing and commented code, as well as example of colorcontrol in scenes * Made static check on same type instead of size * Update src/app/zap-templates/zcl/data-model/chip/scene.xml Co-authored-by: Boris Zbarsky <bzbarsky@apple.com> * Added checks for missing values in level control and on off * Added checks for HasValue in color control apply scene handler * Added check on out of range values in the level control handler * Updated Zap generated files --------- Co-authored-by: Boris Zbarsky <bzbarsky@apple.com>
1 parent 41a9bc7 commit ea6e910

File tree

46 files changed

+1295
-414
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+1295
-414
lines changed

data_model/1.3/clusters/Scenes.xml

+58-58
Original file line numberDiff line numberDiff line change
@@ -1,61 +1,61 @@
11
<?xml version="1.0"?>
2-
<!--
3-
Copyright (C) Connectivity Standards Alliance (2021). All rights reserved.
4-
The information within this document is the property of the Connectivity
5-
Standards Alliance and its use and disclosure are restricted, except as
6-
expressly set forth herein.
7-
8-
Connectivity Standards Alliance hereby grants you a fully-paid, non-exclusive,
9-
nontransferable, worldwide, limited and revocable license (without the right to
10-
sublicense), under Connectivity Standards Alliance's applicable copyright
11-
rights, to view, download, save, reproduce and use the document solely for your
12-
own internal purposes and in accordance with the terms of the license set forth
13-
herein. This license does not authorize you to, and you expressly warrant that
14-
you shall not: (a) permit others (outside your organization) to use this
15-
document; (b) post or publish this document; (c) modify, adapt, translate, or
16-
otherwise change this document in any manner or create any derivative work
17-
based on this document; (d) remove or modify any notice or label on this
18-
document, including this Copyright Notice, License and Disclaimer. The
19-
Connectivity Standards Alliance does not grant you any license hereunder other
20-
than as expressly stated herein.
21-
22-
Elements of this document may be subject to third party intellectual property
23-
rights, including without limitation, patent, copyright or trademark rights,
24-
and any such third party may or may not be a member of the Connectivity
25-
Standards Alliance. Connectivity Standards Alliance members grant other
26-
Connectivity Standards Alliance members certain intellectual property rights as
27-
set forth in the Connectivity Standards Alliance IPR Policy. Connectivity
28-
Standards Alliance members do not grant you any rights under this license. The
29-
Connectivity Standards Alliance is not responsible for, and shall not be held
30-
responsible in any manner for, identifying or failing to identify any or all
31-
such third party intellectual property rights. Please visit www.csa-iot.org for
32-
more information on how to become a member of the Connectivity Standards
33-
Alliance.
34-
35-
This document and the information contained herein are provided on an “AS IS”
36-
basis and the Connectivity Standards Alliance DISCLAIMS ALL WARRANTIES EXPRESS
37-
OR IMPLIED, INCLUDING BUT NOT LIMITED TO (A) ANY WARRANTY THAT THE USE OF THE
38-
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OF THIRD PARTIES (INCLUDING
39-
WITHOUT LIMITATION ANY INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENT, COPYRIGHT
40-
OR TRADEMARK RIGHTS); OR (B) ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
41-
FOR A PARTICULAR PURPOSE, TITLE OR NONINFRINGEMENT. IN NO EVENT WILL THE
42-
CONNECTIVITY STANDARDS ALLIANCE BE LIABLE FOR ANY LOSS OF PROFITS, LOSS OF
43-
BUSINESS, LOSS OF USE OF DATA, INTERRUPTION OF BUSINESS, OR FOR ANY OTHER
44-
DIRECT, INDIRECT, SPECIAL OR EXEMPLARY, INCIDENTAL, PUNITIVE OR CONSEQUENTIAL
45-
DAMAGES OF ANY KIND, IN CONTRACT OR IN TORT, IN CONNECTION WITH THIS DOCUMENT
46-
OR THE INFORMATION CONTAINED HEREIN, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
47-
LOSS OR DAMAGE.
48-
49-
All company, brand and product names in this document may be trademarks that
50-
are the sole property of their respective owners.
51-
52-
This notice and disclaimer must be included on all copies of this document.
53-
54-
Connectivity Standards Alliance
55-
508 Second Street, Suite 206
56-
Davis, CA 95616, USA
57-
58-
:xrefstyle: basic
2+
<!--
3+
Copyright (C) Connectivity Standards Alliance (2021). All rights reserved.
4+
The information within this document is the property of the Connectivity
5+
Standards Alliance and its use and disclosure are restricted, except as
6+
expressly set forth herein.
7+
8+
Connectivity Standards Alliance hereby grants you a fully-paid, non-exclusive,
9+
nontransferable, worldwide, limited and revocable license (without the right to
10+
sublicense), under Connectivity Standards Alliance's applicable copyright
11+
rights, to view, download, save, reproduce and use the document solely for your
12+
own internal purposes and in accordance with the terms of the license set forth
13+
herein. This license does not authorize you to, and you expressly warrant that
14+
you shall not: (a) permit others (outside your organization) to use this
15+
document; (b) post or publish this document; (c) modify, adapt, translate, or
16+
otherwise change this document in any manner or create any derivative work
17+
based on this document; (d) remove or modify any notice or label on this
18+
document, including this Copyright Notice, License and Disclaimer. The
19+
Connectivity Standards Alliance does not grant you any license hereunder other
20+
than as expressly stated herein.
21+
22+
Elements of this document may be subject to third party intellectual property
23+
rights, including without limitation, patent, copyright or trademark rights,
24+
and any such third party may or may not be a member of the Connectivity
25+
Standards Alliance. Connectivity Standards Alliance members grant other
26+
Connectivity Standards Alliance members certain intellectual property rights as
27+
set forth in the Connectivity Standards Alliance IPR Policy. Connectivity
28+
Standards Alliance members do not grant you any rights under this license. The
29+
Connectivity Standards Alliance is not responsible for, and shall not be held
30+
responsible in any manner for, identifying or failing to identify any or all
31+
such third party intellectual property rights. Please visit www.csa-iot.org for
32+
more information on how to become a member of the Connectivity Standards
33+
Alliance.
34+
35+
This document and the information contained herein are provided on an “AS IS”
36+
basis and the Connectivity Standards Alliance DISCLAIMS ALL WARRANTIES EXPRESS
37+
OR IMPLIED, INCLUDING BUT NOT LIMITED TO (A) ANY WARRANTY THAT THE USE OF THE
38+
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OF THIRD PARTIES (INCLUDING
39+
WITHOUT LIMITATION ANY INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENT, COPYRIGHT
40+
OR TRADEMARK RIGHTS); OR (B) ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
41+
FOR A PARTICULAR PURPOSE, TITLE OR NONINFRINGEMENT. IN NO EVENT WILL THE
42+
CONNECTIVITY STANDARDS ALLIANCE BE LIABLE FOR ANY LOSS OF PROFITS, LOSS OF
43+
BUSINESS, LOSS OF USE OF DATA, INTERRUPTION OF BUSINESS, OR FOR ANY OTHER
44+
DIRECT, INDIRECT, SPECIAL OR EXEMPLARY, INCIDENTAL, PUNITIVE OR CONSEQUENTIAL
45+
DAMAGES OF ANY KIND, IN CONTRACT OR IN TORT, IN CONNECTION WITH THIS DOCUMENT
46+
OR THE INFORMATION CONTAINED HEREIN, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
47+
LOSS OR DAMAGE.
48+
49+
All company, brand and product names in this document may be trademarks that
50+
are the sole property of their respective owners.
51+
52+
This notice and disclaimer must be included on all copies of this document.
53+
54+
Connectivity Standards Alliance
55+
508 Second Street, Suite 206
56+
Davis, CA 95616, USA
57+
58+
:xrefstyle: basic
5959
-->
6060
<cluster xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="types types.xsd cluster cluster.xsd" id="0x0062" name="Scenes Management Cluster" revision="1">
6161
<revisionHistory>
@@ -398,4 +398,4 @@ Davis, CA 95616, USA
398398
</field>
399399
</command>
400400
</commands>
401-
</cluster>
401+
</cluster>

examples/all-clusters-app/all-clusters-common/all-clusters-app.matter

+11-4
Original file line numberDiff line numberDiff line change
@@ -3513,14 +3513,21 @@ provisional cluster ScenesManagement = 98 {
35133513
kSceneNames = 0x1;
35143514
}
35153515

3516-
struct AttributeValuePair {
3516+
struct AttributeValuePairStruct {
35173517
attrib_id attributeID = 0;
3518-
int32u attributeValue = 1;
3518+
optional int8u valueUnsigned8 = 1;
3519+
optional int8s valueSigned8 = 2;
3520+
optional int16u valueUnsigned16 = 3;
3521+
optional int16s valueSigned16 = 4;
3522+
optional int32u valueUnsigned32 = 5;
3523+
optional int32s valueSigned32 = 6;
3524+
optional int64u valueUnsigned64 = 7;
3525+
optional int64s valueSigned64 = 8;
35193526
}
35203527

35213528
struct ExtensionFieldSet {
35223529
cluster_id clusterID = 0;
3523-
AttributeValuePair attributeValueList[] = 1;
3530+
AttributeValuePairStruct attributeValueList[] = 1;
35243531
}
35253532

35263533
fabric_scoped struct SceneInfoStruct {
@@ -3632,7 +3639,7 @@ provisional cluster ScenesManagement = 98 {
36323639
int8u sceneIdentifierFrom = 2;
36333640
}
36343641

3635-
/** Add a scene to the scene table. Extension field sets are supported, and are inputed as '{"ClusterID": VALUE, "AttributeValueList":[{"AttributeId": VALUE, "AttributeValue": VALUE}]}' */
3642+
/** Add a scene to the scene table. Extension field sets are supported, and are inputed as '{"ClusterID": VALUE, "AttributeValueList":[{"AttributeID": VALUE, "Value*": VALUE}]}' */
36363643
fabric command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0;
36373644
/** Retrieves the requested scene entry from its Scene table. */
36383645
fabric command ViewScene(ViewSceneRequest): ViewSceneResponse = 1;

examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter

+11-4
Original file line numberDiff line numberDiff line change
@@ -2425,14 +2425,21 @@ provisional cluster ScenesManagement = 98 {
24252425
kSceneNames = 0x1;
24262426
}
24272427

2428-
struct AttributeValuePair {
2428+
struct AttributeValuePairStruct {
24292429
attrib_id attributeID = 0;
2430-
int32u attributeValue = 1;
2430+
optional int8u valueUnsigned8 = 1;
2431+
optional int8s valueSigned8 = 2;
2432+
optional int16u valueUnsigned16 = 3;
2433+
optional int16s valueSigned16 = 4;
2434+
optional int32u valueUnsigned32 = 5;
2435+
optional int32s valueSigned32 = 6;
2436+
optional int64u valueUnsigned64 = 7;
2437+
optional int64s valueSigned64 = 8;
24312438
}
24322439

24332440
struct ExtensionFieldSet {
24342441
cluster_id clusterID = 0;
2435-
AttributeValuePair attributeValueList[] = 1;
2442+
AttributeValuePairStruct attributeValueList[] = 1;
24362443
}
24372444

24382445
fabric_scoped struct SceneInfoStruct {
@@ -2544,7 +2551,7 @@ provisional cluster ScenesManagement = 98 {
25442551
int8u sceneIdentifierFrom = 2;
25452552
}
25462553

2547-
/** Add a scene to the scene table. Extension field sets are supported, and are inputed as '{"ClusterID": VALUE, "AttributeValueList":[{"AttributeId": VALUE, "AttributeValue": VALUE}]}' */
2554+
/** Add a scene to the scene table. Extension field sets are supported, and are inputed as '{"ClusterID": VALUE, "AttributeValueList":[{"AttributeID": VALUE, "Value*": VALUE}]}' */
25482555
fabric command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0;
25492556
/** Retrieves the requested scene entry from its Scene table. */
25502557
fabric command ViewScene(ViewSceneRequest): ViewSceneResponse = 1;

examples/chef/devices/rootnode_dimmablepluginunit_f8a9a0b9d4.matter

+11-4
Original file line numberDiff line numberDiff line change
@@ -1515,14 +1515,21 @@ provisional cluster ScenesManagement = 98 {
15151515
kSceneNames = 0x1;
15161516
}
15171517

1518-
struct AttributeValuePair {
1518+
struct AttributeValuePairStruct {
15191519
attrib_id attributeID = 0;
1520-
int32u attributeValue = 1;
1520+
optional int8u valueUnsigned8 = 1;
1521+
optional int8s valueSigned8 = 2;
1522+
optional int16u valueUnsigned16 = 3;
1523+
optional int16s valueSigned16 = 4;
1524+
optional int32u valueUnsigned32 = 5;
1525+
optional int32s valueSigned32 = 6;
1526+
optional int64u valueUnsigned64 = 7;
1527+
optional int64s valueSigned64 = 8;
15211528
}
15221529

15231530
struct ExtensionFieldSet {
15241531
cluster_id clusterID = 0;
1525-
AttributeValuePair attributeValueList[] = 1;
1532+
AttributeValuePairStruct attributeValueList[] = 1;
15261533
}
15271534

15281535
fabric_scoped struct SceneInfoStruct {
@@ -1634,7 +1641,7 @@ provisional cluster ScenesManagement = 98 {
16341641
int8u sceneIdentifierFrom = 2;
16351642
}
16361643

1637-
/** Add a scene to the scene table. Extension field sets are supported, and are inputed as '{"ClusterID": VALUE, "AttributeValueList":[{"AttributeId": VALUE, "AttributeValue": VALUE}]}' */
1644+
/** Add a scene to the scene table. Extension field sets are supported, and are inputed as '{"ClusterID": VALUE, "AttributeValueList":[{"AttributeID": VALUE, "Value*": VALUE}]}' */
16381645
fabric command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0;
16391646
/** Retrieves the requested scene entry from its Scene table. */
16401647
fabric command ViewScene(ViewSceneRequest): ViewSceneResponse = 1;

examples/light-switch-app/light-switch-common/light-switch-app.matter

+11-4
Original file line numberDiff line numberDiff line change
@@ -2043,14 +2043,21 @@ provisional cluster ScenesManagement = 98 {
20432043
kSceneNames = 0x1;
20442044
}
20452045

2046-
struct AttributeValuePair {
2046+
struct AttributeValuePairStruct {
20472047
attrib_id attributeID = 0;
2048-
int32u attributeValue = 1;
2048+
optional int8u valueUnsigned8 = 1;
2049+
optional int8s valueSigned8 = 2;
2050+
optional int16u valueUnsigned16 = 3;
2051+
optional int16s valueSigned16 = 4;
2052+
optional int32u valueUnsigned32 = 5;
2053+
optional int32s valueSigned32 = 6;
2054+
optional int64u valueUnsigned64 = 7;
2055+
optional int64s valueSigned64 = 8;
20492056
}
20502057

20512058
struct ExtensionFieldSet {
20522059
cluster_id clusterID = 0;
2053-
AttributeValuePair attributeValueList[] = 1;
2060+
AttributeValuePairStruct attributeValueList[] = 1;
20542061
}
20552062

20562063
fabric_scoped struct SceneInfoStruct {
@@ -2162,7 +2169,7 @@ provisional cluster ScenesManagement = 98 {
21622169
int8u sceneIdentifierFrom = 2;
21632170
}
21642171

2165-
/** Add a scene to the scene table. Extension field sets are supported, and are inputed as '{"ClusterID": VALUE, "AttributeValueList":[{"AttributeId": VALUE, "AttributeValue": VALUE}]}' */
2172+
/** Add a scene to the scene table. Extension field sets are supported, and are inputed as '{"ClusterID": VALUE, "AttributeValueList":[{"AttributeID": VALUE, "Value*": VALUE}]}' */
21662173
fabric command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0;
21672174
/** Retrieves the requested scene entry from its Scene table. */
21682175
fabric command ViewScene(ViewSceneRequest): ViewSceneResponse = 1;

examples/light-switch-app/qpg/zap/switch.matter

+11-4
Original file line numberDiff line numberDiff line change
@@ -1840,14 +1840,21 @@ provisional cluster ScenesManagement = 98 {
18401840
kSceneNames = 0x1;
18411841
}
18421842

1843-
struct AttributeValuePair {
1843+
struct AttributeValuePairStruct {
18441844
attrib_id attributeID = 0;
1845-
int32u attributeValue = 1;
1845+
optional int8u valueUnsigned8 = 1;
1846+
optional int8s valueSigned8 = 2;
1847+
optional int16u valueUnsigned16 = 3;
1848+
optional int16s valueSigned16 = 4;
1849+
optional int32u valueUnsigned32 = 5;
1850+
optional int32s valueSigned32 = 6;
1851+
optional int64u valueUnsigned64 = 7;
1852+
optional int64s valueSigned64 = 8;
18461853
}
18471854

18481855
struct ExtensionFieldSet {
18491856
cluster_id clusterID = 0;
1850-
AttributeValuePair attributeValueList[] = 1;
1857+
AttributeValuePairStruct attributeValueList[] = 1;
18511858
}
18521859

18531860
fabric_scoped struct SceneInfoStruct {
@@ -1959,7 +1966,7 @@ provisional cluster ScenesManagement = 98 {
19591966
int8u sceneIdentifierFrom = 2;
19601967
}
19611968

1962-
/** Add a scene to the scene table. Extension field sets are supported, and are inputed as '{"ClusterID": VALUE, "AttributeValueList":[{"AttributeId": VALUE, "AttributeValue": VALUE}]}' */
1969+
/** Add a scene to the scene table. Extension field sets are supported, and are inputed as '{"ClusterID": VALUE, "AttributeValueList":[{"AttributeID": VALUE, "Value*": VALUE}]}' */
19631970
fabric command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0;
19641971
/** Retrieves the requested scene entry from its Scene table. */
19651972
fabric command ViewScene(ViewSceneRequest): ViewSceneResponse = 1;

examples/lighting-app/lighting-common/lighting-app.matter

+11-4
Original file line numberDiff line numberDiff line change
@@ -1853,14 +1853,21 @@ provisional cluster ScenesManagement = 98 {
18531853
kSceneNames = 0x1;
18541854
}
18551855

1856-
struct AttributeValuePair {
1856+
struct AttributeValuePairStruct {
18571857
attrib_id attributeID = 0;
1858-
int32u attributeValue = 1;
1858+
optional int8u valueUnsigned8 = 1;
1859+
optional int8s valueSigned8 = 2;
1860+
optional int16u valueUnsigned16 = 3;
1861+
optional int16s valueSigned16 = 4;
1862+
optional int32u valueUnsigned32 = 5;
1863+
optional int32s valueSigned32 = 6;
1864+
optional int64u valueUnsigned64 = 7;
1865+
optional int64s valueSigned64 = 8;
18591866
}
18601867

18611868
struct ExtensionFieldSet {
18621869
cluster_id clusterID = 0;
1863-
AttributeValuePair attributeValueList[] = 1;
1870+
AttributeValuePairStruct attributeValueList[] = 1;
18641871
}
18651872

18661873
fabric_scoped struct SceneInfoStruct {
@@ -1972,7 +1979,7 @@ provisional cluster ScenesManagement = 98 {
19721979
int8u sceneIdentifierFrom = 2;
19731980
}
19741981

1975-
/** Add a scene to the scene table. Extension field sets are supported, and are inputed as '{"ClusterID": VALUE, "AttributeValueList":[{"AttributeId": VALUE, "AttributeValue": VALUE}]}' */
1982+
/** Add a scene to the scene table. Extension field sets are supported, and are inputed as '{"ClusterID": VALUE, "AttributeValueList":[{"AttributeID": VALUE, "Value*": VALUE}]}' */
19761983
fabric command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0;
19771984
/** Retrieves the requested scene entry from its Scene table. */
19781985
fabric command ViewScene(ViewSceneRequest): ViewSceneResponse = 1;

examples/lighting-app/silabs/data_model/lighting-thread-app.matter

+11-4
Original file line numberDiff line numberDiff line change
@@ -1557,14 +1557,21 @@ provisional cluster ScenesManagement = 98 {
15571557
kSceneNames = 0x1;
15581558
}
15591559

1560-
struct AttributeValuePair {
1560+
struct AttributeValuePairStruct {
15611561
attrib_id attributeID = 0;
1562-
int32u attributeValue = 1;
1562+
optional int8u valueUnsigned8 = 1;
1563+
optional int8s valueSigned8 = 2;
1564+
optional int16u valueUnsigned16 = 3;
1565+
optional int16s valueSigned16 = 4;
1566+
optional int32u valueUnsigned32 = 5;
1567+
optional int32s valueSigned32 = 6;
1568+
optional int64u valueUnsigned64 = 7;
1569+
optional int64s valueSigned64 = 8;
15631570
}
15641571

15651572
struct ExtensionFieldSet {
15661573
cluster_id clusterID = 0;
1567-
AttributeValuePair attributeValueList[] = 1;
1574+
AttributeValuePairStruct attributeValueList[] = 1;
15681575
}
15691576

15701577
fabric_scoped struct SceneInfoStruct {
@@ -1676,7 +1683,7 @@ provisional cluster ScenesManagement = 98 {
16761683
int8u sceneIdentifierFrom = 2;
16771684
}
16781685

1679-
/** Add a scene to the scene table. Extension field sets are supported, and are inputed as '{"ClusterID": VALUE, "AttributeValueList":[{"AttributeId": VALUE, "AttributeValue": VALUE}]}' */
1686+
/** Add a scene to the scene table. Extension field sets are supported, and are inputed as '{"ClusterID": VALUE, "AttributeValueList":[{"AttributeID": VALUE, "Value*": VALUE}]}' */
16801687
fabric command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0;
16811688
/** Retrieves the requested scene entry from its Scene table. */
16821689
fabric command ViewScene(ViewSceneRequest): ViewSceneResponse = 1;

examples/lighting-app/silabs/data_model/lighting-wifi-app.matter

+11-4
Original file line numberDiff line numberDiff line change
@@ -1848,14 +1848,21 @@ provisional cluster ScenesManagement = 98 {
18481848
kSceneNames = 0x1;
18491849
}
18501850

1851-
struct AttributeValuePair {
1851+
struct AttributeValuePairStruct {
18521852
attrib_id attributeID = 0;
1853-
int32u attributeValue = 1;
1853+
optional int8u valueUnsigned8 = 1;
1854+
optional int8s valueSigned8 = 2;
1855+
optional int16u valueUnsigned16 = 3;
1856+
optional int16s valueSigned16 = 4;
1857+
optional int32u valueUnsigned32 = 5;
1858+
optional int32s valueSigned32 = 6;
1859+
optional int64u valueUnsigned64 = 7;
1860+
optional int64s valueSigned64 = 8;
18541861
}
18551862

18561863
struct ExtensionFieldSet {
18571864
cluster_id clusterID = 0;
1858-
AttributeValuePair attributeValueList[] = 1;
1865+
AttributeValuePairStruct attributeValueList[] = 1;
18591866
}
18601867

18611868
fabric_scoped struct SceneInfoStruct {
@@ -1967,7 +1974,7 @@ provisional cluster ScenesManagement = 98 {
19671974
int8u sceneIdentifierFrom = 2;
19681975
}
19691976

1970-
/** Add a scene to the scene table. Extension field sets are supported, and are inputed as '{"ClusterID": VALUE, "AttributeValueList":[{"AttributeId": VALUE, "AttributeValue": VALUE}]}' */
1977+
/** Add a scene to the scene table. Extension field sets are supported, and are inputed as '{"ClusterID": VALUE, "AttributeValueList":[{"AttributeID": VALUE, "Value*": VALUE}]}' */
19711978
fabric command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0;
19721979
/** Retrieves the requested scene entry from its Scene table. */
19731980
fabric command ViewScene(ViewSceneRequest): ViewSceneResponse = 1;

0 commit comments

Comments
 (0)