Skip to content

Commit

Permalink
[Scenes] Cluster Revision Update (#31615)
Browse files Browse the repository at this point in the history
* Updated cluster revision in zap, matter and test files

* Refactored the revision number to 1
  • Loading branch information
lpbeliveau-silabs authored Jan 25, 2024
1 parent 490286b commit e5f5d67
Show file tree
Hide file tree
Showing 31 changed files with 388 additions and 111 deletions.
119 changes: 57 additions & 62 deletions data_model/clusters/Scenes.xml
Original file line number Diff line number Diff line change
@@ -1,68 +1,63 @@
<?xml version="1.0"?>
<!--
Copyright (C) Connectivity Standards Alliance (2021). All rights reserved.
The information within this document is the property of the Connectivity
Standards Alliance and its use and disclosure are restricted, except as
expressly set forth herein.
Connectivity Standards Alliance hereby grants you a fully-paid, non-exclusive,
nontransferable, worldwide, limited and revocable license (without the right to
sublicense), under Connectivity Standards Alliance's applicable copyright
rights, to view, download, save, reproduce and use the document solely for your
own internal purposes and in accordance with the terms of the license set forth
herein. This license does not authorize you to, and you expressly warrant that
you shall not: (a) permit others (outside your organization) to use this
document; (b) post or publish this document; (c) modify, adapt, translate, or
otherwise change this document in any manner or create any derivative work
based on this document; (d) remove or modify any notice or label on this
document, including this Copyright Notice, License and Disclaimer. The
Connectivity Standards Alliance does not grant you any license hereunder other
than as expressly stated herein.
Elements of this document may be subject to third party intellectual property
rights, including without limitation, patent, copyright or trademark rights,
and any such third party may or may not be a member of the Connectivity
Standards Alliance. Connectivity Standards Alliance members grant other
Connectivity Standards Alliance members certain intellectual property rights as
set forth in the Connectivity Standards Alliance IPR Policy. Connectivity
Standards Alliance members do not grant you any rights under this license. The
Connectivity Standards Alliance is not responsible for, and shall not be held
responsible in any manner for, identifying or failing to identify any or all
such third party intellectual property rights. Please visit www.csa-iot.org for
more information on how to become a member of the Connectivity Standards
Alliance.
This document and the information contained herein are provided on an “AS IS”
basis and the Connectivity Standards Alliance DISCLAIMS ALL WARRANTIES EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO (A) ANY WARRANTY THAT THE USE OF THE
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OF THIRD PARTIES (INCLUDING
WITHOUT LIMITATION ANY INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENT, COPYRIGHT
OR TRADEMARK RIGHTS); OR (B) ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE, TITLE OR NONINFRINGEMENT. IN NO EVENT WILL THE
CONNECTIVITY STANDARDS ALLIANCE BE LIABLE FOR ANY LOSS OF PROFITS, LOSS OF
BUSINESS, LOSS OF USE OF DATA, INTERRUPTION OF BUSINESS, OR FOR ANY OTHER
DIRECT, INDIRECT, SPECIAL OR EXEMPLARY, INCIDENTAL, PUNITIVE OR CONSEQUENTIAL
DAMAGES OF ANY KIND, IN CONTRACT OR IN TORT, IN CONNECTION WITH THIS DOCUMENT
OR THE INFORMATION CONTAINED HEREIN, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
LOSS OR DAMAGE.
All company, brand and product names in this document may be trademarks that
are the sole property of their respective owners.
This notice and disclaimer must be included on all copies of this document.
Connectivity Standards Alliance
508 Second Street, Suite 206
Davis, CA 95616, USA
<!--
Copyright (C) Connectivity Standards Alliance (2021). All rights reserved.
The information within this document is the property of the Connectivity
Standards Alliance and its use and disclosure are restricted, except as
expressly set forth herein.
Connectivity Standards Alliance hereby grants you a fully-paid, non-exclusive,
nontransferable, worldwide, limited and revocable license (without the right to
sublicense), under Connectivity Standards Alliance's applicable copyright
rights, to view, download, save, reproduce and use the document solely for your
own internal purposes and in accordance with the terms of the license set forth
herein. This license does not authorize you to, and you expressly warrant that
you shall not: (a) permit others (outside your organization) to use this
document; (b) post or publish this document; (c) modify, adapt, translate, or
otherwise change this document in any manner or create any derivative work
based on this document; (d) remove or modify any notice or label on this
document, including this Copyright Notice, License and Disclaimer. The
Connectivity Standards Alliance does not grant you any license hereunder other
than as expressly stated herein.
Elements of this document may be subject to third party intellectual property
rights, including without limitation, patent, copyright or trademark rights,
and any such third party may or may not be a member of the Connectivity
Standards Alliance. Connectivity Standards Alliance members grant other
Connectivity Standards Alliance members certain intellectual property rights as
set forth in the Connectivity Standards Alliance IPR Policy. Connectivity
Standards Alliance members do not grant you any rights under this license. The
Connectivity Standards Alliance is not responsible for, and shall not be held
responsible in any manner for, identifying or failing to identify any or all
such third party intellectual property rights. Please visit www.csa-iot.org for
more information on how to become a member of the Connectivity Standards
Alliance.
This document and the information contained herein are provided on an “AS IS”
basis and the Connectivity Standards Alliance DISCLAIMS ALL WARRANTIES EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO (A) ANY WARRANTY THAT THE USE OF THE
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OF THIRD PARTIES (INCLUDING
WITHOUT LIMITATION ANY INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENT, COPYRIGHT
OR TRADEMARK RIGHTS); OR (B) ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE, TITLE OR NONINFRINGEMENT. IN NO EVENT WILL THE
CONNECTIVITY STANDARDS ALLIANCE BE LIABLE FOR ANY LOSS OF PROFITS, LOSS OF
BUSINESS, LOSS OF USE OF DATA, INTERRUPTION OF BUSINESS, OR FOR ANY OTHER
DIRECT, INDIRECT, SPECIAL OR EXEMPLARY, INCIDENTAL, PUNITIVE OR CONSEQUENTIAL
DAMAGES OF ANY KIND, IN CONTRACT OR IN TORT, IN CONNECTION WITH THIS DOCUMENT
OR THE INFORMATION CONTAINED HEREIN, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
LOSS OR DAMAGE.
All company, brand and product names in this document may be trademarks that
are the sole property of their respective owners.
This notice and disclaimer must be included on all copies of this document.
Connectivity Standards Alliance
508 Second Street, Suite 206
Davis, CA 95616, USA
-->
<cluster xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="types types.xsd cluster cluster.xsd" id="0x0062" name="Scenes Management" revision="6">
<cluster xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="types types.xsd cluster cluster.xsd" id="0x0062" name="Scenes Management" revision="1">
<revisionHistory>
<revision revision="1" summary="Global mandatory ClusterRevision attribute added; CCB 1745"/>
<revision revision="2" summary="TransitionTime field added to the RecallScene command"/>
<revision revision="3" summary="CCB 2427 3026"/>
<revision revision="4" summary="New data model format and notation"/>
<revision revision="5" summary="Added Explicit, TableSize and FabricScenes features; support multi-fabric environment; added attributes SceneTableSize and RemainingCapacity; added fabric-scoped scene information list"/>
<revision revision="6" summary="Updated the Cluster ID to 0x0062, the name to Scenes Management, removed the provisional status; Removed attributes SceneCount, CurrentScene, CurrentGroup, SceneValid, and NameSupport; Removed Explicit, TableSize and FabricScenes features; Removed EnhancedAddScene, EnhancedAddSceneResponse, EnhancedViewScene, EnhancedViewSceneResponse; TransitionTime field changed milliseconds in AddScene, ViewSceneResponse and RecallScene"/>
<revision revision="1" summary="Based on the ZCL Scenes Cluster, Updated the Cluster ID to 0x0062, the name to Scenes Management, removed the provisional status; Removed attributes SceneCount, CurrentScene, CurrentGroup, SceneValid, and NameSupport; Removed Explicit, TableSize and FabricScenes features; Removed EnhancedAddScene, EnhancedAddSceneResponse, EnhancedViewScene, EnhancedViewSceneResponse; TransitionTime field changed milliseconds in AddScene, ViewSceneResponse and RecallScene"/>
</revisionHistory>
<classification hierarchy="base" role="application" picsCode="S" scope="Endpoint"/>
<features>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3492,7 +3492,7 @@ cluster RvcOperationalState = 97 {

/** Attributes and commands for scene configuration and manipulation. */
provisional cluster ScenesManagement = 98 {
revision 5;
revision 1;

bitmap CopyModeBitmap : bitmap8 {
kCopyAllScenes = 0x1;
Expand Down Expand Up @@ -7990,7 +7990,7 @@ endpoint 1 {
callback attribute eventList;
callback attribute attributeList;
ram attribute featureMap default = 1;
ram attribute clusterRevision default = 5;
ram attribute clusterRevision default = 1;

handle command AddScene;
handle command AddSceneResponse;
Expand Down Expand Up @@ -8944,7 +8944,7 @@ endpoint 2 {
callback attribute eventList;
callback attribute attributeList;
ram attribute featureMap default = 1;
ram attribute clusterRevision default = 5;
ram attribute clusterRevision default = 1;

handle command AddScene;
handle command AddSceneResponse;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6852,7 +6852,7 @@
"storageOption": "RAM",
"singleton": 0,
"bounded": 0,
"defaultValue": "5",
"defaultValue": "1",
"reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
Expand Down Expand Up @@ -23263,7 +23263,7 @@
"storageOption": "RAM",
"singleton": 0,
"bounded": 0,
"defaultValue": "5",
"defaultValue": "1",
"reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2398,7 +2398,7 @@ cluster TemperatureControl = 86 {

/** Attributes and commands for scene configuration and manipulation. */
provisional cluster ScenesManagement = 98 {
revision 5;
revision 1;

bitmap CopyModeBitmap : bitmap8 {
kCopyAllScenes = 0x1;
Expand Down Expand Up @@ -6393,7 +6393,7 @@ endpoint 1 {
callback attribute eventList;
callback attribute attributeList;
ram attribute featureMap default = 1;
ram attribute clusterRevision default = 5;
ram attribute clusterRevision default = 1;

handle command AddScene;
handle command AddSceneResponse;
Expand Down Expand Up @@ -6876,7 +6876,7 @@ endpoint 2 {
callback attribute eventList;
callback attribute attributeList;
ram attribute featureMap default = 1;
ram attribute clusterRevision default = 5;
ram attribute clusterRevision default = 1;

handle command AddScene;
handle command AddSceneResponse;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4851,7 +4851,7 @@
"storageOption": "RAM",
"singleton": 0,
"bounded": 0,
"defaultValue": "5",
"defaultValue": "1",
"reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
Expand Down Expand Up @@ -11142,7 +11142,7 @@
"storageOption": "RAM",
"singleton": 0,
"bounded": 0,
"defaultValue": "5",
"defaultValue": "1",
"reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
Expand Down
2 changes: 1 addition & 1 deletion examples/chef/devices/template.zap
Original file line number Diff line number Diff line change
Expand Up @@ -2698,7 +2698,7 @@
"storageOption": "RAM",
"singleton": 0,
"bounded": 0,
"defaultValue": "5",
"defaultValue": "6",
"reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2005,7 +2005,7 @@ cluster IcdManagement = 70 {

/** Attributes and commands for scene configuration and manipulation. */
provisional cluster ScenesManagement = 98 {
revision 5;
revision 1;

bitmap CopyModeBitmap : bitmap8 {
kCopyAllScenes = 0x1;
Expand Down
150 changes: 150 additions & 0 deletions examples/light-switch-app/qpg/zap/switch.matter
Original file line number Diff line number Diff line change
Expand Up @@ -1800,6 +1800,155 @@ cluster IcdManagement = 70 {
command access(invoke: manage) StayActiveRequest(): StayActiveResponse = 3;
}

/** Attributes and commands for scene configuration and manipulation. */
provisional cluster ScenesManagement = 98 {
revision 1;

bitmap CopyModeBitmap : bitmap8 {
kCopyAllScenes = 0x1;
}

bitmap Feature : bitmap32 {
kSceneNames = 0x1;
}

struct AttributeValuePair {
attrib_id attributeID = 0;
int32u attributeValue = 1;
}

struct ExtensionFieldSet {
cluster_id clusterID = 0;
AttributeValuePair attributeValueList[] = 1;
}

fabric_scoped struct SceneInfoStruct {
int8u sceneCount = 0;
fabric_sensitive int8u currentScene = 1;
fabric_sensitive group_id currentGroup = 2;
fabric_sensitive boolean sceneValid = 3;
int8u remainingCapacity = 4;
fabric_idx fabricIndex = 254;
}

readonly attribute optional nullable node_id lastConfiguredBy = 0;
readonly attribute int16u sceneTableSize = 1;
readonly attribute SceneInfoStruct fabricSceneInfo[] = 2;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
readonly attribute attrib_id attributeList[] = 65531;
readonly attribute bitmap32 featureMap = 65532;
readonly attribute int16u clusterRevision = 65533;

request struct AddSceneRequest {
group_id groupID = 0;
int8u sceneID = 1;
int32u transitionTime = 2;
char_string sceneName = 3;
ExtensionFieldSet extensionFieldSets[] = 4;
}

response struct AddSceneResponse = 0 {
status status = 0;
group_id groupID = 1;
int8u sceneID = 2;
}

request struct ViewSceneRequest {
group_id groupID = 0;
int8u sceneID = 1;
}

response struct ViewSceneResponse = 1 {
status status = 0;
group_id groupID = 1;
int8u sceneID = 2;
optional int32u transitionTime = 3;
optional char_string sceneName = 4;
optional ExtensionFieldSet extensionFieldSets[] = 5;
}

request struct RemoveSceneRequest {
group_id groupID = 0;
int8u sceneID = 1;
}

response struct RemoveSceneResponse = 2 {
status status = 0;
group_id groupID = 1;
int8u sceneID = 2;
}

request struct RemoveAllScenesRequest {
group_id groupID = 0;
}

response struct RemoveAllScenesResponse = 3 {
status status = 0;
group_id groupID = 1;
}

request struct StoreSceneRequest {
group_id groupID = 0;
int8u sceneID = 1;
}

response struct StoreSceneResponse = 4 {
status status = 0;
group_id groupID = 1;
int8u sceneID = 2;
}

request struct RecallSceneRequest {
group_id groupID = 0;
int8u sceneID = 1;
optional nullable int32u transitionTime = 2;
}

request struct GetSceneMembershipRequest {
group_id groupID = 0;
}

response struct GetSceneMembershipResponse = 6 {
status status = 0;
nullable int8u capacity = 1;
group_id groupID = 2;
optional int8u sceneList[] = 3;
}

request struct CopySceneRequest {
CopyModeBitmap mode = 0;
group_id groupIdentifierFrom = 1;
int8u sceneIdentifierFrom = 2;
group_id groupIdentifierTo = 3;
int8u sceneIdentifierTo = 4;
}

response struct CopySceneResponse = 64 {
status status = 0;
group_id groupIdentifierFrom = 1;
int8u sceneIdentifierFrom = 2;
}

/** Add a scene to the scene table. Extension field sets are supported, and are inputed as '{"ClusterID": VALUE, "AttributeValueList":[{"AttributeId": VALUE, "AttributeValue": VALUE}]}' */
fabric command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0;
/** Retrieves the requested scene entry from its Scene table. */
fabric command ViewScene(ViewSceneRequest): ViewSceneResponse = 1;
/** Removes the requested scene entry, corresponding to the value of the GroupID field, from its Scene Table */
fabric command access(invoke: manage) RemoveScene(RemoveSceneRequest): RemoveSceneResponse = 2;
/** Remove all scenes, corresponding to the value of the GroupID field, from its Scene Table */
fabric command access(invoke: manage) RemoveAllScenes(RemoveAllScenesRequest): RemoveAllScenesResponse = 3;
/** Adds the scene entry into its Scene Table along with all extension field sets corresponding to the current state of other clusters on the same endpoint */
fabric command access(invoke: manage) StoreScene(StoreSceneRequest): StoreSceneResponse = 4;
/** Set the attributes and corresponding state for each other cluster implemented on the endpoint accordingly to the resquested scene entry in the Scene Table */
fabric command RecallScene(RecallSceneRequest): DefaultSuccess = 5;
/** Get an unused scene identifier when no commissioning tool is in the network, or for a commissioning tool to get the used scene identifiers within a certain group */
fabric command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6;
/** Allows a client to efficiently copy scenes from one group/scene identifier pair to another group/scene identifier pair. */
fabric command CopyScene(CopySceneRequest): CopySceneResponse = 64;
}

/** Attributes and commands for controlling the color properties of a color-capable light. */
cluster ColorControl = 768 {
revision 6;
Expand Down Expand Up @@ -2488,6 +2637,7 @@ endpoint 1 {
binding cluster Groups;
binding cluster OnOff;
binding cluster LevelControl;
binding cluster ScenesManagement;
binding cluster ColorControl;

server cluster Identify {
Expand Down
Loading

0 comments on commit e5f5d67

Please sign in to comment.