blob: 4ae12e578ac8c8c39ce26e474f5a8d6c11618bae [file] [log] [blame]
<?xml version="1.0"?>
<!--
Copyright (c) 2008,2020 Silicon Labs.
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.
-->
<!--
This xml file contains a sample extension to the Application Framework's
cluster definitions. There are 4 ways to add manufacturer specific
extensions within ZigBee.
1. Private Profile:
You can create your own private ZigBee profile.
We do not provide an example of this here since private profiles
may or may not even use the cluster library or something like it. If
you create your own custom profile you can basically do whatever you
want after the APS frame in the ZigBee packet. If you choose to use
the ZigBee cluster library within your private profile the Application
Framework will be useful to you. If you do not, it will not be useful
to you as all of the code in the Application Framework centers around
support for the ZigBee Cluster Library (ZCL).
2. Manufacturer Specific Clusters:
You can add manufacturer specific clusters to a standard profile.
We provide an example of this below. In order to do this you must
satisfy two obligations:
1. The cluster id MUST be in the manufacturer specific range,
0xfc00 - 0xffff.
2. The cluster definition must include a manufacturer code
which will be applied to ALL attributes and
commands within that cluster and must be provided when sending
and receiving commands and interacting with attributes.
3. Manufacturer Specific Commands in Standard ZigBee Custer:
You can add your own commands to any standard ZigBee cluster with
the following requirements:
1. Your manufacturer specific commands may use any command id
within the command id range, 0x00 - 0xff.
2. You must also provide a manufacturer code for the command so
that it can be distinguished from other commands in the cluster
and handled appropriately.
4. Manufacturer Specific Attributes in Standard ZigBee Cluster:
You can add your own attributes to any standard ZigBee cluster with
the following requirements:
1. Your manufacturer specific attributes may use any attribute id
within the attribute id range, 0x0000 - 0xffff.
2. You must also provide a manufacturer code for the attribute so
that it can be distinguished from other attributes in the cluster
and handled appropriately.
This sample provides an example of how to:
1. Extend the ZCL with a manufacturer specific cluster
2. Extend the standard ZCL on/off cluster with manufacturer specific
attributes.
3. Extend the standard ZCL on/off cluster with manufacturer specific
commands.
Manufacturer Code:
In all cases below, we have used Ember's manufacturerCode 0x1002 since
the cluster, attributes and the commands were created by Ember
as an example of how the Application Framework can be
extended to support manufacturer specific commands and attributes.
XML Validation:
You may validate any xml file that you create against the
AppBuilder XSD located in tool/appbuilder/appbuilder.xsd
-->
<configurator>
<domain name="Ember"/>
<!-- Use manufacturerCode to indicate that this is a manufacturer specific
cluster. -->
<cluster manufacturerCode="0x1002">
<name>Sample Mfg Specific Cluster</name>
<domain>Ember</domain>
<description>This cluster provides an example of how the Application
Framework can be extended to include manufacturer specific clusters.
</description>
<!-- Cluster Id must be within the mfg spec range 0xfc00 - 0xffff -->
<code>0xFC00</code>
<define>SAMPLE_MFG_SPECIFIC_CLUSTER</define>
<client init="false" tick="false">true</client>
<server init="false" tick="false">true</server>
<attribute side="server" code="0x0000" define="ATTRIBUTE_ONE" type="INT8U" min="0x00" max="0xFF" writable="true" default="0x00" optional="true">ember sample attribute</attribute>
<attribute side="server" code="0x0001" define="ATTRIBUTE_TWO" type="INT8U" min="0x00" max="0xFF" writable="true" default="0x00" optional="true">ember sample attribute 2</attribute>
<command source="client" code="0x00" name="CommandOne" optional="true">
<description>
A sample manufacturer specific command within the sample manufacturer specific
cluster.
</description>
<arg name="argOne" type="INT8U"/>
</command>
</cluster>
<cluster manufacturerCode="0x1049">
<name>Sample Mfg Specific Cluster 2</name>
<domain>Ember</domain>
<description>This cluster provides an example of how the Application
Framework can be extended to include manufacturer specific clusters.
</description>
<!-- Cluster Id must be within the mfg spec range 0xfc00 - 0xffff -->
<code>0xFC00</code>
<define>SAMPLE_MFG_SPECIFIC_CLUSTER_2</define>
<client init="false" tick="false">true</client>
<server init="false" tick="false">true</server>
<attribute side="server" code="0x0000" define="ATTRIBUTE_THREE" type="INT16U" min="0x0000" max="0xFFFF" writable="true" default="0x0000" optional="true">ember sample attribute 3</attribute>
<attribute side="server" code="0x0001" define="ATTRIBUTE_FOUR" type="INT16U" min="0x0000" max="0xFFFF" writable="true" default="0x0000" optional="true">ember sample attribute 4</attribute>
<command source="client" code="0x00" name="CommandTwo" optional="true">
<description>
A sample manufacturer specific command within the sample manufacturer specific
cluster.
</description>
<arg name="argOne" type="INT8U"/>
</command>
</cluster>
<!-- Use the cluster extension Extend the on/off cluster -->
<clusterExtension code="0x0006">
<attribute side="server" code="0x0000" define="SAMPLE_MFG_SPECIFIC_TRANSITION_TIME" type="INT16U" min="0x0000" max="0xFFFF" writable="true" default="0x0000" optional="true" manufacturerCode="0x1002">Sample Mfg Specific Attribute: 0x0000 0x1002</attribute>
<attribute side="server" code="0x0000" define="SAMPLE_MFG_SPECIFIC_TRANSITION_TIME_2" type="INT8U" min="0x0000" max="0xFFFF" writable="true" default="0x0000" optional="true" manufacturerCode="0x1049">Sample Mfg Specific Attribute: 0x0000 0x1049</attribute>
<attribute side="server" code="0x0001" define="SAMPLE_MFG_SPECIFIC_TRANSITION_TIME_3" type="INT8U" min="0x0000" max="0xFFFF" writable="true" default="0x00" optional="true" manufacturerCode="0x1002">Sample Mfg Specific Attribute: 0x0001 0x1002</attribute>
<attribute side="server" code="0x0001" define="SAMPLE_MFG_SPECIFIC_TRANSITION_TIME_4" type="INT16U" min="0x0000" max="0xFFFF" writable="true" default="0x0000" optional="true" manufacturerCode="0x1049">Sample Mfg Specific Attribute: 0x0001 0x1040</attribute>
<command source="client" code="0x00" name="SampleMfgSpecificOffWithTransition" optional="true" manufacturerCode="0x1002">
<description>Client command that turns the device off with a transition given
by the transition time in the Ember Sample transition time attribute.</description>
</command>
<command source="client" code="0x01" name="SampleMfgSpecificOnWithTransition" optional="true" manufacturerCode="0x1002">
<description>Client command that turns the device on with a transition given
by the transition time in the Ember Sample transition time attribute.</description>
</command>
<command source="client" code="0x02" name="SampleMfgSpecificToggleWithTransition" optional="true" manufacturerCode="0x1002">
<description>Client command that toggles the device with a transition given
by the transition time in the Ember Sample transition time attribute.</description>
</command>
<command source="client" code="0x01" name="SampleMfgSpecificOnWithTransition2" optional="true" manufacturerCode="0x1049">
<description>Client command that turns the device on with a transition given
by the transition time in the Ember Sample transition time attribute.</description>
</command>
<command source="client" code="0x02" name="SampleMfgSpecificToggleWithTransition2" optional="true" manufacturerCode="0x1049">
<description>Client command that toggles the device with a transition given
by the transition time in the Ember Sample transition time attribute.</description>
</command>
</clusterExtension>
</configurator>