<?xml version="1.0"?>
<!--
Copyright (c) 2022 Project CHIP Authors

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<configurator>
  <bitmap name="ScenesCopyMode" type="BITMAP8">
    <cluster code="0x0005"/>
    <field name="CopyAllScenes" mask="0x01"/>
  </bitmap>

  <struct name="AttributeValuePair">
    <cluster code="0x0005"/>
    <item name="AttributeID" type="attrib_id" optional="true"/>
    <!-- TODO Need a new type that can support variable attribute types and size  -->
    <!-- One suggestion from Boris is a Type that maps to a TLVReader place in the riight elements -->
    <item name="AttributeValue" type="INT8U" array="true"/>
  </struct>

  <struct name="ExtensionFieldSet">
    <cluster code="0x0005"/>
    <item name="ClusterID" type="cluster_id"/>
    <item name="AttributeValueList" type="AttributeValuePair" array="true"/>
  </struct>

  <domain name="CHIP"/>
    <cluster>
    <name>Scenes</name>
    <domain>General</domain>
    <description>Attributes and commands for scene configuration and manipulation.</description>
    <code>0x0005</code>
    <define>SCENES_CLUSTER</define>
    <client tick="false" init="false">true</client>
    <server tick="false" init="false">true</server>
    <globalAttribute side="either" code="0xFFFD" value="4"/>
   
    <attribute side="server" code="0x0000" define="SCENE_COUNT" type="INT8U" min="0x00" max="0xFF" writable="false" default="0x00" optional="false">SceneCount</attribute>
    <attribute side="server" code="0x0001" define="CURRENT_SCENE" type="INT8U" min="0x00" max="0xFF" writable="false" default="0x00" optional="false">CurrentScene</attribute>
    <attribute side="server" code="0x0002" define="CURRENT_GROUP" type="group_id" min="0x0000" max="0xFFF7" writable="false" default="0x0000" optional="false">CurrentGroup</attribute>
    <attribute side="server" code="0x0003" define="SCENE_VALID" type="BOOLEAN" min="0x00" max="0x01" writable="false" default="0x00" optional="false">SceneValid</attribute>
    <attribute side="server" code="0x0004" define="SCENE_NAME_SUPPORT" type="BITMAP8" min="0x00" max="0x80" writable="false" default="0x00" optional="false">NameSupport</attribute>
    <attribute side="server" code="0x0005" define="LAST_CONFIGURED_BY" type="node_id" writable="false" isNullable="true" optional="true">LastConfiguredBy</attribute>
   
    <command source="client" code="0x00" name="AddScene" response="AddSceneResponse" isFabricScoped="true" optional="false" cli="chip scenes add">
      <description>
        Add a scene to the scene table. Extension field sets are supported, and are inputed as '{"ClusterID": VALUE, "AttributeValueList":[{"AttributeId": VALUE, "AttributeValue": VALUE}]}'
      </description>
      <arg name="GroupID" type="group_id"/>
      <arg name="SceneID" type="INT8U"/>
      <arg name="TransitionTime" type="INT16U"/>
      <arg name="SceneName" type="CHAR_STRING"/>
      <arg name="ExtensionFieldSets" type="ExtensionFieldSet" array="true"/>
      <access op="invoke" role="manage"/>
    </command>
   
    <command source="client" code="0x01" name="ViewScene" response="ViewSceneResponse" isFabricScoped="true" optional="false" cli="chip scenes view">
      <description>
        Retrieves the requested scene entry from its Scene table.
      </description>
      <arg name="GroupID" type="group_id"/>
      <arg name="SceneID" type="INT8U"/>
    </command>
   
    <command source="client" code="0x02" name="RemoveScene" response="RemoveSceneResponse" isFabricScoped="true" optional="false" cli="chip scenes remove">
      <description>
        Removes the requested scene entry, corresponding to the value of the GroupID field, from its Scene Table
      </description>
      <arg name="GroupID" type="group_id"/>
      <arg name="SceneID" type="INT8U"/>
      <access op="invoke" role="manage"/>
    </command>
    
    <command source="client" code="0x03" name="RemoveAllScenes" response="RemoveAllScenesResponse" isFabricScoped="true" optional="false" cli="chip scenes rmall">
      <description>
        Remove all scenes, corresponding to the value of the GroupID field, from its Scene Table
      </description>
      <arg name="GroupID" type="group_id"/>
      <access op="invoke" role="manage"/>
    </command>
    
    <command source="client" code="0x04" name="StoreScene" response="StoreSceneResponse" isFabricScoped="true" optional="false" cli="chip scenes store">
      <description>
        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
      </description>
      <arg name="GroupID" type="group_id"/>
      <arg name="SceneID" type="INT8U"/>
      <access op="invoke" role="manage"/>
    </command>
    
    <command source="client" code="0x05" name="RecallScene" isFabricScoped="true" optional="false" cli="chip scenes recall">
      <description>
        Set the attributes and corresponding state for each other cluster implemented on the endpoint accordingly to the resquested scene entry in the Scene Table
      </description>
      <arg name="GroupID" type="group_id"/>
      <arg name="SceneID" type="INT8U"/>
      <arg name="TransitionTime" type="INT16U" optional="true" isNullable="true"/>
    </command>
   
    <command source="client" code="0x06" name="GetSceneMembership" response="GetSceneMembershipResponse" isFabricScoped="true" optional="false" cli="chip scenes get">
      <description>
        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 
      </description>
      <arg name="GroupID" type="group_id"/>
    </command>

    <command source="client" code="0x40" name="EnhancedAddScene" response="EnhancedAddSceneResponse" isFabricScoped="true" optional="true" cli="chip scenes eadd">
      <description>
        Allows a scene to be added using a finer scene transition time than the AddScene command.
      </description>
      <arg name="GroupID" type="group_id"/>
      <arg name="SceneID" type="INT8U"/>
      <arg name="TransitionTime" type="INT16U"/>
      <arg name="SceneName" type="CHAR_STRING"/>
      <arg name="ExtensionFieldSets" type="ExtensionFieldSet" array="true"/>
    </command>
    <command source="client" code="0x41" name="EnhancedViewScene" response="EnhancedViewSceneResponse" isFabricScoped="true" optional="true" noDefaultImplementation="true" cli="chip scenes eview">
      <description>
        Allows a scene to be retrieved using a finer scene transition time than the ViewScene command
      </description>
      <arg name="GroupID" type="group_id"/>
      <arg name="SceneID" type="INT8U"/>
    </command>
    <command source="client" code="0x42" name="CopyScene" response="CopySceneResponse" isFabricScoped="true" optional="true" cli="chip scenes copy">
      <description>
        Allows a client to efficiently copy scenes from one group/scene identifier pair to another group/scene identifier pair.
      </description>
      <arg name="Mode" type="ScenesCopyMode"/>
      <arg name="GroupIdentifierFrom" type="group_id"/>
      <arg name="SceneIdentifierFrom" type="INT8U"/>
      <arg name="GroupIdentifierTo" type="group_id"/>
      <arg name="SceneIdentifierTo" type="INT8U"/>
    </command>
    
    <command source="server" code="0x00" name="AddSceneResponse" optional="false" disableDefaultResponse="true">
      <description>
        The command is generated in response to a received unicast AddScene command,
      </description>
      <arg name="Status" type="status"/>
      <arg name="GroupID" type="group_id"/>
      <arg name="SceneID" type="INT8U"/>
    </command>
    
    <command source="server" code="0x01" name="ViewSceneResponse" optional="false" disableDefaultResponse="true">
      <description>
        The command is generated in response to a received unicast ViewScene command 
      </description>
      <arg name="Status" type="status"/>
      <arg name="GroupID" type="group_id"/>
      <arg name="SceneID" type="INT8U"/>
      <arg name="TransitionTime" type="INT16U" optional="true"/>
      <arg name="SceneName" type="CHAR_STRING" optional="true"/>
      <arg name="ExtensionFieldSets" type="ExtensionFieldSet" array="true" optional="true"/>
    </command>
    
    <command source="server" code="0x02" name="RemoveSceneResponse" optional="false" disableDefaultResponse="true">
      <description>
        The command is generated in response to a received unicast RemoveScene command
      </description>
      <arg name="Status" type="status"/>
      <arg name="GroupID" type="group_id"/>
      <arg name="SceneID" type="INT8U"/>
    </command>
    
    <command source="server" code="0x03" name="RemoveAllScenesResponse" optional="false" disableDefaultResponse="true">
      <description>
        The command is generated in response to a received unicast RemoveAllScenes command
      </description>
      <arg name="Status" type="status"/>
      <arg name="GroupID" type="group_id"/>
    </command>
    
    <command source="server" code="0x04" name="StoreSceneResponse" optional="false" disableDefaultResponse="true">
      <description>
        The command is generated in response to a received unicast StoreScene command
      </description>
      <arg name="Status" type="status"/>
      <arg name="GroupID" type="group_id"/>
      <arg name="SceneID" type="INT8U"/>
    </command>
    
    <command source="server" code="0x06" name="GetSceneMembershipResponse" optional="false" disableDefaultResponse="true">
      <description>
        The command is generated in response to a received unicast GetSceneMembership command
      </description>
      <arg name="Status" type="status"/>
      <arg name="Capacity" type="INT8U" isNullable="true"/>
      <arg name="GroupID" type="group_id"/>
      <arg name="SceneList" type="INT8U" array="true" optional="true"/>
    </command>

  <command source="server" code="0x40" name="EnhancedAddSceneResponse" optional="true" disableDefaultResponse="true">
      <description>
        The command is generated in response to a received unicast EnhancedAddScene command
      </description>
      <arg name="Status" type="status"/>
      <arg name="GroupID" type="group_id"/>
      <arg name="SceneID" type="INT8U"/>
    </command>

    <command source="server" code="0x41" name="EnhancedViewSceneResponse" optional="true" disableDefaultResponse="true">
      <description>
        The command is generated in response to a received unicast EnhancedViewScene command
      </description>
      <arg name="Status" type="status"/>
      <arg name="GroupID" type="group_Id"/>
      <arg name="SceneID" type="INT8U"/>
      <arg name="TransitionTime" type="INT16U"  optional="true"/>
      <arg name="SceneName" type="CHAR_STRING"  optional="true"/>
      <arg name="ExtensionFieldSets" type="ExtensionFieldSet" array="true" optional="true"/>
    </command>

    <command source="server" code="0x42" name="CopySceneResponse" optional="true" disableDefaultResponse="true">
      <description>
        The command is generated in response to a received unicast CopyScene command
      </description>
      <arg name="Status" type="status"/>
      <arg name="GroupIdentifierFrom" type="group_Id"/>
      <arg name="SceneIdentifierFrom" type="INT8U"/>
    </command>
  </cluster>

  <bitmap name="Feature" type="BITMAP32">
    <cluster code="0x0005" />
    <field name="SceneNames" mask="0x01" />
  </bitmap>
</configurator>
