<?xml version="1.0"?>
<!--
Copyright (c) 2021 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>
  <domain name="CHIP"/>

  <enum name="ModeTag" type="enum16">
    <cluster code="0x0052"/>
    <item value="0x4000" name="RapidCool"/>
    <item value="0x4001" name="RapidFreeze"/>
  </enum>

  <cluster>
    <domain>General</domain>
    <name>Refrigerator And Temperature Controlled Cabinet Mode</name>
    <code>0x0052</code>
    <define>REFRIGERATOR_AND_TEMPERATURE_CONTROLLED_CABINET_MODE_CLUSTER</define>
    <client init="false" tick="false">true</client>
    <server init="false" tick="false">true</server>
    <description>Attributes and commands for selecting a mode from a list of supported options.</description>
    <globalAttribute side="either" code="0xFFFD" value="2"/>

    <features>
      <feature bit="0" code="DEPONOFF" name="OnOff" summary="Dependency with the OnOff cluster">
        <optionalConform/>
      </feature>
    </features>
    
    <!-- Base data types -->
    <attribute side="server" code="0x0000" define="SUPPORTED_MODES"  type="array" entryType="ModeOptionStruct" writable="false" optional="false" isNullable="false" length="255">SupportedModes</attribute>
    <attribute side="server" code="0x0001" define="CURRENT_MODE"     type="int8u"                              writable="false" optional="false" isNullable="false" reportable="true">CurrentMode</attribute>
    <attribute side="server" code="0x0002" define="START_UP_MODE"    type="int8u"                              writable="true"  optional="true"  isNullable="true">StartUpMode</attribute>
    <attribute side="server" code="0x0003" define="ON_MODE"          type="int8u"                              writable="true"  optional="true"  isNullable="true">OnMode</attribute>

    <!-- Commands -->
    <command source="client" code="0x00" name="ChangeToMode" response="ChangeToModeResponse" optional="false">
      <description>
        This command is used to change device modes.
        On receipt of this command the device SHALL respond with a ChangeToModeResponse command.
      </description>
      <arg name="NewMode" type="int8u" optional="false"/>
    </command>

    <command source="server" code="0x01" name="ChangeToModeResponse" disableDefaultResponse="true" optional="false">
      <description>
        This command is sent by the device on receipt of the ChangeToModeWithStatus command.
      </description>
      <arg name="Status"     type="enum8"                   optional="false"/>
      <arg name="StatusText" type="char_string" lenght="64" optional="true"/>
    </command>
  </cluster>
</configurator>
