Apply Upstream code (2021-03-15)
[platform/upstream/connectedhomeip.git] / src / app / zap-templates / zcl / data-model / silabs / ta.xml
1 <?xml version="1.0"?>
2 <!--
3 Copyright (c) 2008,2020 Silicon Labs.
4
5 Licensed under the Apache License, Version 2.0 (the "License");
6 you may not use this file except in compliance with the License.
7 You may obtain a copy of the License at
8
9     http://www.apache.org/licenses/LICENSE-2.0
10
11 Unless required by applicable law or agreed to in writing, software
12 distributed under the License is distributed on an "AS IS" BASIS,
13 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 See the License for the specific language governing permissions and
15 limitations under the License.
16 -->
17 <configurator>
18   <domain name="Telecom Applications" spec="ta-1.0-07-5307-07" dependsOn="zcl-1.0-07-5123-03"/>
19   <domain name="Protocol Interfaces" spec="ta-1.0-07-5307-07" dependsOn="zcl-1.0-07-5123-03"/>
20   <domain name="Telecommunication" spec="ta-1.0-07-5307-07" dependsOn="zcl-1.0-07-5123-03"/>
21   <domain name="Financial" spec="ta-1.0-07-5307-07" dependsOn="zcl-1.0-07-5123-03"/>
22   <cluster>
23     <name>Partition</name>
24     <domain>General</domain>
25     <description>Commands and attributes for enabling partitioning of large frame to be carried from other clusters of ZigBee devices.</description>
26     <code>0x0016</code>
27     <define>PARTITION_CLUSTER</define>
28     <client tick="false" init="false">true</client>
29     <server tick="false" init="false">true</server>
30     <attribute side="server" code="0x0000" define="PARTITION_MAXIMUM_INCOMING_TRANSFER_SIZE" type="INT16U" min="0x0000" max="0xFFFF" writable="false" default="0x0500" optional="false">maximum incoming transfer size</attribute>
31     <attribute side="server" code="0x0001" define="PARTITION_MAXIMUM_OUTGOING_TRANSFER_SIZE" type="INT16U" min="0x0000" max="0xFFFF" writable="false" default="0x0500" optional="false">maximum outgoing transfer size</attribute>
32     <attribute side="server" code="0x0002" define="PARTIONED_FRAME_SIZE" type="INT8U" min="0x00" max="0xFF" writable="true" default="0x50" optional="false">partioned frame size</attribute>
33     <attribute side="server" code="0x0003" define="LARGE_FRAME_SIZE" type="INT16U" min="0x0000" max="0xFFFF" writable="true" default="0x0500" optional="false">large frame size</attribute>
34     <attribute side="server" code="0x0004" define="NUMBER_OF_ACK_FRAME" type="INT8U" min="0x00" max="0xFF" writable="true" default="0x64" optional="false">number of ack frame</attribute>
35     <attribute side="server" code="0x0005" define="NACK_TIMEOUT" type="INT16U" min="0x0000" max="0xFFFF" writable="false" optional="false">nack timeout</attribute>
36     <attribute side="server" code="0x0006" define="INTERFRAME_DELAY" type="INT8U" min="0x00" max="0xFF" writable="true" optional="false">interframe delay</attribute>
37     <attribute side="server" code="0x0007" define="NUMBER_OF_SEND_RETRIES" type="INT8U" min="0x00" max="0xFF" writable="false" default="0x03" optional="false">number of send retries</attribute>
38     <attribute side="server" code="0x0008" define="SENDER_TIMEOUT" type="INT16U" min="0x0000" max="0xFFFF" writable="false" optional="false">sender timeout</attribute>
39     <attribute side="server" code="0x0009" define="RECEIVER_TIMEOUT" type="INT16U" min="0x0000" max="0xFFFF" writable="false" optional="false">receiver timeout</attribute>
40     <command source="client" code="0x00" name="TransferPartitionedFrame" optional="false">
41       <description>The TransferPartitionedFrame command is used to send a partitioned frame to another Partition cluster.</description>
42       <arg name="fragmentationOptions" type="BITMAP8"/>
43       <!-- Partition Indicator can be one or two bytes depending on the bits in
44            Fragmentation Options.  call-command-handler can't generate code for
45            something that complicated, so instead just send a buffer and leave
46            parsing to the user.
47       -->
48       <!--<arg name="partitionIndicator"   type="INT8U/INT16U" />-->
49       <!--<arg name="partitionedFrame"     type="OCTET_STRING" />-->
50       <arg name="partitionedIndicatorAndFrame" type="INT8U" array="true"/>
51     </command>
52     <command source="client" code="0x01" name="ReadHandshakeParam" optional="false">
53       <description>The ReadHandshakeParam command is used in order to read the appropriate set of parameters for each transaction to be performed by the Partition Cluster.</description>
54       <arg name="partitionedClusterId" type="CLUSTER_ID"/>
55       <arg name="attributeList" type="ATTRIBUTE_ID" array="true"/>
56     </command>
57     <command source="client" code="0x02" name="WriteHandshakeParam" optional="false">
58       <description>The WriteHandshakeParam command is used during the handshake phase in order to write the appropriate parameters for each transaction to be performed by the Partition Cluster.</description>
59       <arg name="partitionedClusterId" type="CLUSTER_ID"/>
60       <arg name="writeAttributeRecords" type="WriteAttributeRecord" array="true"/>
61     </command>
62     <command source="server" code="0x00" name="MultipleAck" optional="false">
63       <description>MultipleACK command.</description>
64       <arg name="ackOptions" type="BITMAP8"/>
65       <!-- First Frame ID and the list of NACK IDs can be one or two bytes
66            depending on the bits in ACK Options.  call-command-handler can't
67            generate code for something that complicated, so instead just send a
68            buffer and leave parsing to the user.
69       -->
70       <!--<arg name="firstFrameId" type="INT8U/INT16U" />-->
71       <!--<arg name="nackList"     type="INT8U/INT16U" array="true" />-->
72       <arg name="firstFrameIdAndNackList" type="INT8U" array="true"/>
73     </command>
74     <command source="server" code="0x01" name="ReadHandshakeParamResponse" optional="false" disableDefaultResponse="true">
75       <description>The ReadHandshakeParamResponse command is used in order to response to the corresponding ReadHandshakeParam command in order to communicate the appropriate set of parameters configured for each transaction to be performed by the Partition Cluster.</description>
76       <arg name="partitionedClusterId" type="CLUSTER_ID"/>
77       <arg name="readAttributeStatusRecords" type="ReadAttributeStatusRecord" array="true"/>
78     </command>
79   </cluster>
80   <cluster>
81     <name>ISO 7816 Protocol Tunnel</name>
82     <domain>Protocol Interfaces</domain>
83     <description>Commands and attributes for mobile office solutions including ZigBee devices.</description>
84     <code>0x0615</code>
85     <define>ISO7816_PROTOCOL_TUNNEL_CLUSTER</define>
86     <client tick="false" init="false">true</client>
87     <server tick="false" init="false">true</server>
88     <attribute side="server" code="0x0000" define="ISO7816_PROTOCOL_TUNNEL_STATUS" type="INT8U" min="0x00" max="0x01" writable="false" default="0x00" optional="false">status</attribute>
89     <command source="either" code="0x00" name="TransferApdu" optional="false">
90       <description>
91         Command description for TransferApdu
92       </description>
93       <arg name="apdu" type="OCTET_STRING"/>
94     </command>
95     <command source="client" code="0x01" name="InsertSmartCard" optional="false">
96       <description>
97         Command description for InsertSmartCard
98       </description>
99     </command>
100     <command source="client" code="0x02" name="ExtractSmartCard" optional="false">
101       <description>
102         Command description for ExtractSmartCard
103       </description>
104     </command>
105   </cluster>
106   <cluster>
107     <name>Information</name>
108     <domain>Telecommunication</domain>
109     <description>Provides commands and attributes for information delivery service on ZigBee networks.</description>
110     <code>0x0900</code>
111     <define>INFORMATION_CLUSTER</define>
112     <client tick="false" init="false">true</client>
113     <server tick="false" init="false">true</server>
114     <attribute side="server" code="0x0000" define="NODE_DESCRIPTION" type="CHAR_STRING" length="16" writable="false" optional="false">node description</attribute>
115     <attribute side="server" code="0x0001" define="DELIVERY_ENABLE" type="BOOLEAN" min="0x00" max="0x01" writable="false" optional="false">delivery enable</attribute>
116     <attribute side="server" code="0x0002" define="PUSH_INFORMATION_TIMER" type="INT32U" writable="false" optional="true">push information timer</attribute>
117     <attribute side="server" code="0x0003" define="ENABLE_SECURE_CONFIGURATION" type="BOOLEAN" min="0x00" max="0x01" writable="false" optional="false">enable secure configuration</attribute>
118     <attribute side="server" code="0x0010" define="NUMBER_OF_CONTENTS" type="INT16U" min="0x0000" max="0xFFFF" writable="false" optional="true">number of contents</attribute>
119     <attribute side="server" code="0x0011" define="CONTENT_ROOT_ID" type="INT16U" min="0x0000" max="0xFFFF" writable="false" optional="true">content root id</attribute>
120     <command source="client" code="0x00" name="RequestInformation" optional="false">
121       <description>
122         Command description for RequestInformation
123       </description>
124       <arg name="inquiryId" type="ENUM8"/>
125       <arg name="dataTypeId" type="BITMAP8"/>
126       <!-- Request Information Payload varies depending on Data Type ID.
127            call-command-handler can't generate code for something that
128            complicated, so instead just send a buffer and leave parsing to the
129            user.
130       -->
131       <arg name="requestInformationPayload" type="INT8U" array="true"/>
132     </command>
133     <command source="client" code="0x01" name="PushInformationResponse" optional="false" disableDefaultResponse="true">
134       <description>
135         Command description for PushInformationResponse
136       </description>
137       <arg name="notificationList" type="Notification" array="true"/>
138     </command>
139     <command source="client" code="0x02" name="SendPreference" optional="true">
140       <description>
141         Command description for SendPreference
142       </description>
143       <arg name="preferenceType" type="INT16U"/>
144       <!-- Request Information Payload varies depending on Preference Type.
145            call-command-handler can't generate code for something that
146            complicated, so instead just send a buffer and leave parsing to the
147            user.
148       -->
149       <arg name="preferencePayload" type="INT8U" array="true"/>
150     </command>
151     <command source="client" code="0x03" name="RequestPreferenceResponse" optional="true" disableDefaultResponse="true">
152       <description>
153         Command description for RequestPreferenceResponse
154       </description>
155       <arg name="statusFeedback" type="Status"/>
156       <arg name="preferenceType" type="INT16U"/>
157       <!-- Preference Payload varies depending on Preference Type.
158            call-command-handler can't generate code for something that
159            complicated, so instead just send a buffer and leave parsing to the
160            user.
161       -->
162       <arg name="preferencePayload" type="INT8U" array="true"/>
163     </command>
164     <command source="client" code="0x04" name="Update" optional="true">
165       <description>
166         Command description for Update
167       </description>
168       <arg name="accessControl" type="ENUM8"/>
169       <arg name="option" type="BITMAP8"/>
170       <arg name="contents" type="INT8U" array="true"/>
171     </command>
172     <command source="client" code="0x05" name="Delete" optional="true">
173       <description>
174         Command description for Delete
175       </description>
176       <arg name="deletionOptions" type="BITMAP8"/>
177       <arg name="contentIds" type="INT16U" array="true"/>
178     </command>
179     <command source="client" code="0x06" name="ConfigureNodeDescription" optional="true">
180       <description>
181         Command description for ConfigureNodeDescription
182       </description>
183       <arg name="description" type="CHAR_STRING"/>
184     </command>
185     <command source="client" code="0x07" name="ConfigureDeliveryEnable" optional="true">
186       <description>
187         Command description for ConfigureDeliveryEnable
188       </description>
189       <arg name="enable" type="BOOLEAN"/>
190     </command>
191     <command source="client" code="0x08" name="ConfigurePushInformationTimer" optional="true">
192       <description>
193         Command description for ConfigurePushInformationTimer
194       </description>
195       <arg name="timer" type="INT32U"/>
196     </command>
197     <command source="client" code="0x09" name="ConfigureSetRootId" optional="true">
198       <description>
199         Command description for ConfigureSetRootId
200       </description>
201       <arg name="rootId" type="INT16U"/>
202     </command>
203     <command source="server" code="0x00" name="RequestInformationResponse" optional="false" disableDefaultResponse="true">
204       <description>
205         Command description for RequestInformationResponse
206       </description>
207       <arg name="number" type="INT8U"/>
208       <!-- Each Status field will be followed by a Single Content or Content ID,
209            which are variable length.  call-command-handler can't generate code
210            for something that complicated, so instead just send a buffer and
211            leave parsing to the user.
212       -->
213       <arg name="buffer" type="INT8U" array="true"/>
214     </command>
215     <command source="server" code="0x01" name="PushInformation" optional="false">
216       <description>
217         Command description for PushInformation
218       </description>
219       <arg name="contents" type="INT8U" array="true"/>
220     </command>
221     <command source="server" code="0x02" name="SendPreferenceResponse" optional="true" disableDefaultResponse="true">
222       <description>
223         Command description for SendPreferenceResponse
224       </description>
225       <arg name="statusFeedbackList" type="Status" array="true"/>
226     </command>
227     <command source="server" code="0x03" name="ServerRequestPreference" optional="true">
228       <description>
229         Command description for ServerRequestPreference
230       </description>
231     </command>
232     <command source="server" code="0x04" name="RequestPreferenceConfirmation" optional="true">
233       <description>
234         Command description for RequestPreferenceConfirmation
235       </description>
236       <arg name="statusFeedbackList" type="Status" array="true"/>
237     </command>
238     <command source="server" code="0x05" name="UpdateResponse" optional="true" disableDefaultResponse="true">
239       <description>
240         Command description for UpdateResponse
241       </description>
242       <arg name="notificationList" type="Notification" array="true"/>
243     </command>
244     <command source="server" code="0x06" name="DeleteResponse" optional="true" disableDefaultResponse="true">
245       <description>
246         Command description for DeleteResponse
247       </description>
248       <arg name="notificationList" type="Notification" array="true"/>
249     </command>
250   </cluster>
251   <cluster>
252     <name>Data Sharing</name>
253     <domain>Telecommunication</domain>
254     <description>Commands and attributes for small data sharing among ZigBee devices.</description>
255     <code>0x0901</code>
256     <define>DATA_SHARING_CLUSTER</define>
257     <client tick="false" init="false">true</client>
258     <server tick="false" init="false">true</server>
259     <attribute side="server" code="0x0000" define="DEVICE_NAME" type="CHAR_STRING" length="16" writable="false" optional="false">device name</attribute>
260     <attribute side="server" code="0x0001" define="DEVICE_DESCRIPTION" type="CHAR_STRING" length="16" writable="false" optional="true">device description</attribute>
261     <command source="client" code="0x00" name="ReadFileRequest" optional="false">
262       <description>
263         Command description for ReadFileRequest
264       </description>
265       <arg name="fileIndex" type="INT16U"/>
266       <!-- File Start Position and Requested Octet Count are optional fields and
267            may not be present.  call-command-handler can't generate code for
268            something that complicated, so instead just send a buffer and leave
269            parsing to the user.
270       -->
271       <!--<arg name="fileStartPosition"   type="INT32U" />-->
272       <!--<arg name="requestedOctetCount" type="INT32U" />-->
273       <arg name="fileStartPositionAndRequestedOctetCount" type="INT8U" array="true"/>
274     </command>
275     <command source="client" code="0x01" name="ReadRecordRequest" optional="true">
276       <description>
277         Command description for ReadRecordRequest
278       </description>
279       <arg name="fileIndex" type="INT16U"/>
280       <!-- File Start Record and Requested Record Count are optional fields and
281            may not be present.  call-command-handler can't generate code for
282            something that complicated, so instead just send a buffer and leave
283            parsing to the user.
284       -->
285       <!--<arg name="fileStartRecord"      type="INT16U" />-->
286       <!--<arg name="requestedRecordCount" type="INT16U" />-->
287       <arg name="fileStartRecordAndRequestedRecordCount" type="INT8U" array="true"/>
288     </command>
289     <command source="client" code="0x02" name="WriteFileResponse" optional="true" disableDefaultResponse="true">
290       <description>
291         Command description for WriteFileResponse
292       </description>
293       <arg name="status" type="ENUM8"/>
294       <!-- File Index will not exist if status is SUCCESS.  call-command-handler
295            can't generate code for something that complicated, so instead just
296            send a buffer and leave parsing to the user.
297       -->
298       <!--<arg name="fileIndex" type="INT16U" />-->
299       <arg name="fileIndex" type="INT8U" array="true"/>
300     </command>
301     <command source="server" code="0x00" name="WriteFileRequest" optional="true">
302       <description>
303         Command description for WriteFileRequest
304       </description>
305       <arg name="writeOptions" type="BITMAP8"/>
306       <!-- Partition Indicator can be one or two bytes depending on the bits in
307            Fragmentation Options.  call-command-handler can't generate code for
308            something that complicated, so instead just send a buffer and leave
309            parsing to the user.
310       -->
311       <!--<arg name="fileSize"     type="INT8U/INT16U" />-->
312       <arg name="fileSize" type="INT8U" array="true"/>
313     </command>
314     <command source="server" code="0x01" name="ModifyFileRequest" optional="true">
315       <description>
316         Command description for ModifyFileRequest
317       </description>
318       <arg name="fileIndex" type="INT16U"/>
319       <arg name="fileStartPosition" type="INT32U"/>
320       <arg name="octetCount" type="INT32U"/>
321     </command>
322     <command source="server" code="0x02" name="ModifyRecordRequest" optional="true">
323       <description>
324         Command description for ModifyRecordRequest
325       </description>
326       <arg name="fileIndex" type="INT16U"/>
327       <arg name="fileStartRecord" type="INT16U"/>
328       <arg name="recordCount" type="INT16U"/>
329     </command>
330     <command source="server" code="0x03" name="FileTransmission" optional="false">
331       <description>
332         Command description for FileTransmission
333       </description>
334       <arg name="transmitOptions" type="BITMAP8"/>
335       <!-- File Index, File Start Position, File Length, and File Data may not
336            be present.  call-command-handler can't generate code for something
337            that complicated, so instead just send a buffer and leave parsing to
338            the user.
339       -->
340       <!--<arg name="fileIndex"         type="INT16U" />-->
341       <!--<arg name="fileStartPosition" type="INT32U" />-->
342       <!--<arg name="fileLength"        type="INT32U" />-->
343       <!--<arg name="fileData"          type="OCTET" array="true" />-->
344       <arg name="buffer" type="INT8U" array="true"/>
345     </command>
346     <command source="server" code="0x04" name="RecordTransmission" optional="true">
347       <description>
348         Command description for RecordTransmission
349       </description>
350       <arg name="transmitOptions" type="BITMAP8"/>
351       <!-- File Index, File Start Record, Record Count, and Record File Data may
352            not be present.  call-command-handler can't generate code for
353            something that complicated, so instead just send a buffer and leave
354            parsing to the user.
355       -->
356       <!--<arg name="fileIndex"       type="INT16U" />-->
357       <!--<arg name="fileStartRecord" type="INT16U" />-->
358       <!--<arg name="recordCount"     type="INT16U" />-->
359       <!--<arg name="recordFileData"  type="CHAR" array="true" />-->
360       <arg name="buffer" type="INT8U" array="true"/>
361     </command>
362   </cluster>
363   <cluster>
364     <name>Gaming</name>
365     <domain>Telecommunication</domain>
366     <description>Attributes and commands to support gaming functions of ZigBee-enabled mobile terminals.</description>
367     <code>0x0902</code>
368     <define>GAMING_CLUSTER</define>
369     <client tick="false" init="false">true</client>
370     <server tick="false" init="false">true</server>
371     <attribute side="server" code="0x0000" define="PLAYER_NAME" type="CHAR_STRING" length="16" writable="false" optional="false">player name</attribute>
372     <attribute side="server" code="0x0001" define="NB_OF_GAMES" type="INT8U" min="0x00" max="0xFE" writable="false" optional="false">nb of games</attribute>
373     <attribute side="server" code="0x0002" define="LIST_OF_GAMES" type="CHAR_STRING" length="16" writable="false" optional="false">list of games</attribute>
374     <attribute side="server" code="0x0003" define="ANNOUNCEMENT_INTERVAL" type="INT16U" min="0x0000" max="0xFFFF" writable="false" optional="false">announcement interval</attribute>
375     <attribute side="server" code="0x0010" define="GAME_ID" type="INT16U" min="0x0001" max="0x00FE" writable="false" optional="false">game id</attribute>
376     <attribute side="server" code="0x0011" define="NAME_OF_GAME" type="CHAR_STRING" length="16" writable="false" optional="false">name of game</attribute>
377     <attribute side="server" code="0x0012" define="GAME_MASTER" type="BOOLEAN" writable="false" optional="false">game master</attribute>
378     <attribute side="server" code="0x0013" define="GAMING_STATUS" type="BITMAP8" min="0x00" max="0xFF" writable="false" optional="false">status</attribute>
379     <attribute side="server" code="0x0014" define="CURRENT_NB_OF_PLAYERS" type="INT8U" min="0x00" max="0xFF" writable="false" optional="false">current nb of players</attribute>
380     <attribute side="server" code="0x0015" define="LIST_OF_CURRENT_PLAYERS" type="CHAR_STRING" length="16" writable="false" optional="false">list of current players</attribute>
381     <attribute side="server" code="0x0016" define="MAX_NB_OF_PLAYERS" type="INT8U" min="0x00" max="0xFF" writable="false" optional="false">max nb of players</attribute>
382     <attribute side="server" code="0x0017" define="MIN_NB_OF_PLAYERS" type="INT8U" min="0x00" max="0xFF" writable="false" optional="false">min nb of players</attribute>
383     <attribute side="server" code="0x0018" define="CURRENT_GAME_LEVEL" type="INT16U" min="0x0000" max="0xFFFF" writable="false" optional="false">current game level</attribute>
384     <attribute side="server" code="0x0019" define="SCORE_OF_THIS_PLAYER" type="INT16U" min="0x0000" max="0xFFFF" writable="false" optional="false">score of this player</attribute>
385     <attribute side="server" code="0x001A" define="TIMER1" type="INT16U" min="0x0000" max="0xFFFF" writable="false" optional="false">timer1</attribute>
386     <attribute side="server" code="0x001B" define="TIMER2" type="INT16U" min="0x0000" max="0xFFFF" writable="false" optional="false">timer2</attribute>
387     <attribute side="server" code="0x001C" define="TIMER3" type="INT16U" min="0x0000" max="0xFFFF" writable="false" optional="false">timer3</attribute>
388     <attribute side="server" code="0x001D" define="COUNTER1" type="INT16U" min="0x0000" max="0xFFFF" writable="false" optional="false">counter1</attribute>
389     <attribute side="server" code="0x001E" define="COUNTER2" type="INT16U" min="0x0000" max="0xFFFF" writable="false" optional="false">counter2</attribute>
390     <attribute side="server" code="0x001F" define="DOWNLOADABLE" type="BOOLEAN" min="0x00" max="0x01" writable="false" optional="true">downloadable</attribute>
391     <command source="client" code="0x00" name="SearchGame" optional="false">
392       <description>
393         Command description for SearchGame
394       </description>
395       <arg name="specificGame" type="ENUM8"/>
396       <arg name="gameId" type="INT16U"/>
397     </command>
398     <command source="client" code="0x01" name="JoinGame" optional="false">
399       <description>
400         Command description for JoinGame
401       </description>
402       <arg name="gameId" type="INT16U"/>
403       <arg name="joinAsMaster" type="BOOLEAN"/>
404       <arg name="nameOfGame" type="CHAR_STRING"/>
405     </command>
406     <command source="client" code="0x02" name="StartGame" optional="false">
407       <description>
408         Command description for StartGame
409       </description>
410     </command>
411     <command source="client" code="0x03" name="PauseGame" optional="false">
412       <description>
413         Command description for PauseGame
414       </description>
415     </command>
416     <command source="client" code="0x04" name="ResumeGame" optional="false">
417       <description>
418         Command description for ResumeGame
419       </description>
420     </command>
421     <command source="client" code="0x05" name="QuitGame" optional="false">
422       <description>
423         Command description for QuitGame
424       </description>
425     </command>
426     <command source="client" code="0x06" name="EndGame" optional="false">
427       <description>
428         Command description for EndGame
429       </description>
430     </command>
431     <command source="client" code="0x07" name="StartOver" optional="false">
432       <description>
433         Command description for StartOver
434       </description>
435     </command>
436     <command source="client" code="0x08" name="ActionControl" optional="false">
437       <description>
438         Command description for ActionControl
439       </description>
440       <arg name="actions" type="BITMAP32"/>
441     </command>
442     <command source="client" code="0x09" name="DownloadGame" optional="true">
443       <description>
444         Command description for DownloadGame
445       </description>
446     </command>
447     <command source="server" code="0x00" name="GameAnnouncement" optional="false">
448       <description>
449         Command description for GameAnnouncement
450       </description>
451       <arg name="gameId" type="INT16U"/>
452       <arg name="gameMaster" type="BOOLEAN"/>
453       <arg name="listOfGame" type="CHAR_STRING"/>
454     </command>
455     <command source="server" code="0x01" name="GeneralResponse" optional="false" disableDefaultResponse="true">
456       <description>
457         Command description for GeneralResponse
458       </description>
459       <arg name="commandId" type="INT8U"/>
460       <arg name="status" type="BITMAP8"/>
461       <arg name="message" type="CHAR_STRING"/>
462     </command>
463   </cluster>
464   <cluster>
465     <name>Data Rate Control</name>
466     <domain>Telecommunication</domain>
467     <description>This cluster seeks to give applications a means to managing data rate. It provides commands and attributes which form this interface.</description>
468     <code>0x0903</code>
469     <define>DATA_RATE_CONTROL_CLUSTER</define>
470     <client tick="false" init="false">true</client>
471     <server tick="false" init="false">true</server>
472     <attribute side="server" code="0x0000" define="AVERAGE_LATENCY_REQUIREMENT" type="INT8U" min="0x00" max="0xFF" writable="false" optional="true">average latency requirement</attribute>
473     <attribute side="server" code="0x0001" define="MAX_LATENCY_REQUIREMENT" type="INT8U" min="0x00" max="0xFF" writable="false" optional="true">max latency requirement</attribute>
474     <attribute side="server" code="0x0002" define="BANDWIDTH_REQUIREMENT" type="INT8U" min="0x00" max="0xFF" writable="true" optional="true">bandwidth requirement</attribute>
475     <command source="client" code="0x00" name="PathCreation" optional="true">
476       <description>
477         Command description for PathCreation
478       </description>
479       <arg name="originatorAddress" type="DATA16"/>
480       <arg name="destinationAddress" type="DATA16"/>
481       <arg name="dataRate" type="INT8U"/>
482     </command>
483     <command source="client" code="0x01" name="DataRateNotification" optional="true">
484       <description>
485         Command description for DataRateNotification
486       </description>
487       <arg name="originatorAddress" type="DATA16"/>
488       <arg name="destinationAddress" type="DATA16"/>
489       <arg name="dataRate" type="INT8U"/>
490     </command>
491     <command source="client" code="0x02" name="PathDeletion" optional="true">
492       <description>
493         Command description for PathDeletion
494       </description>
495       <arg name="originatorAddress" type="DATA16"/>
496       <arg name="destinationAddress" type="DATA16"/>
497     </command>
498     <command source="server" code="0x00" name="DataRateControl" optional="false">
499       <description>
500         Command description for DataRateControl
501       </description>
502       <arg name="originatorAddress" type="DATA16"/>
503       <arg name="destinationAddress" type="DATA16"/>
504       <arg name="dataRate" type="INT8U"/>
505     </command>
506   </cluster>
507   <cluster>
508     <name>Voice over ZigBee</name>
509     <domain>Telecommunication</domain>
510     <description>This cluster seeks to provide an interface to a voice over ZigBee protocol.</description>
511     <code>0x0904</code>
512     <define>VOICE_OVER_ZIGBEE_CLUSTER</define>
513     <client tick="false" init="false">true</client>
514     <server tick="false" init="false">true</server>
515     <attribute side="server" code="0x0000" define="CODEC_TYPE" type="ENUM8" min="0x01" max="0x04" writable="true" optional="false">codec type</attribute>
516     <attribute side="server" code="0x0001" define="SAMPLING_FREQUENCY" type="ENUM8" min="0x01" max="0x03" writable="true" optional="false">sampling frequency</attribute>
517     <attribute side="server" code="0x0002" define="CODEC_RATE" type="ENUM8" min="0x01" max="0x0A" writable="true" optional="false">codec rate</attribute>
518     <attribute side="server" code="0x0003" define="ESTABLISHMENT_TIMEOUT" type="INT8U" min="0x01" max="0xFF" optional="false">establishment timeout</attribute>
519     <attribute side="server" code="0x0004" define="CODEC_TYPE_SUB1" type="ENUM8" writable="true" optional="true">codec type sub 1</attribute>
520     <attribute side="server" code="0x0005" define="CODEC_TYPE_SUB2" type="ENUM8" writable="true" optional="true">codec type sub 2</attribute>
521     <attribute side="server" code="0x0006" define="CODEC_TYPE_SUB3" type="ENUM8" writable="true" optional="true">codec type sub 3</attribute>
522     <attribute side="server" code="0x0007" define="COMPRESSION_TYPE" type="ENUM8" min="0x01" max="0x02" optional="true">compression type</attribute>
523     <attribute side="server" code="0x0008" define="COMPRESSION_RATE" type="ENUM8" optional="true">compression rate</attribute>
524     <attribute side="server" code="0x0009" define="OPTION_FLAGS" type="BITMAP8" min="0x00" max="0xFF" writable="true" optional="true">option flags</attribute>
525     <attribute side="server" code="0x000A" define="THRESHOLD" type="INT8U" min="0x00" max="0xFF" writable="true" optional="true">threshold</attribute>
526     <command source="client" code="0x00" name="EstablishmentRequest" optional="false">
527       <description>
528         Command description for EstablishmentRequest
529       </description>
530       <arg name="flag" type="BITMAP8"/>
531       <arg name="codecType" type="ENUM8"/>
532       <arg name="sampFreq" type="ENUM8"/>
533       <arg name="codecRate" type="ENUM8"/>
534       <arg name="serviceType" type="ENUM8"/>
535       <!-- Codec Type S1, Codec Type S2, Codec Type S3, Comp. Type., and Comp.
536            Rate may not be present.  call-command-handler can't generate code
537            for something that complicated, so instead just send a buffer and
538            leave parsing to the user.
539       -->
540       <!--<arg name="codecTypeS1" type="ENUM8" />-->
541       <!--<arg name="codecTypeS2" type="ENUM8" />-->
542       <!--<arg name="codecTypeS3" type="ENUM8" />-->
543       <!--<arg name="compType"    type="ENUM8" />-->
544       <!--<arg name="compRate"    type="ENUM8" />-->
545       <arg name="buffer" type="INT8U" array="true"/>
546     </command>
547     <command source="client" code="0x01" name="VoiceTransmission" optional="false">
548       <description>
549         Command description for VoiceTransmission
550       </description>
551       <arg name="voiceData" type="INT8U" array="true"/>
552     </command>
553     <command source="client" code="0x02" name="VoiceTransmissionCompletion" optional="true">
554       <description>
555         Command description for VoiceTransmissionCompletion
556       </description>
557     </command>
558     <command source="client" code="0x03" name="ControlResponse" optional="true" disableDefaultResponse="true">
559       <description>
560         Command description for ControlResponse
561       </description>
562       <arg name="ackNack" type="ENUM8"/>
563     </command>
564     <command source="server" code="0x00" name="EstablishmentResponse" optional="false" disableDefaultResponse="true">
565       <description>
566         Command description for EstablishmentResponse
567       </description>
568       <arg name="ackNack" type="ENUM8"/>
569       <arg name="codecType" type="ENUM8"/>
570     </command>
571     <command source="server" code="0x01" name="VoiceTransmissionResponse" optional="false" disableDefaultResponse="true">
572       <description>
573         Command description for VoiceTransmissionResponse
574       </description>
575       <arg name="sequenceNumber" type="INT8U"/>
576       <arg name="errorFlag" type="ENUM8"/>
577     </command>
578     <command source="server" code="0x02" name="Control" optional="true">
579       <description>
580         Command description for Control
581       </description>
582       <arg name="controlType" type="ENUM8"/>
583     </command>
584   </cluster>
585   <cluster>
586     <name>Chatting</name>
587     <domain>Telecommunication</domain>
588     <description>Commands and attributes for sending chat messages among ZigBee devices.</description>
589     <code>0x0905</code>
590     <define>CHATTING_CLUSTER</define>
591     <client tick="false" init="false">true</client>
592     <server tick="false" init="false">true</server>
593     <attribute side="server" code="0x0000" define="U_ID" type="INT16U" min="0x0000" max="0xFFFF" writable="false" optional="false">u id</attribute>
594     <attribute side="server" code="0x0001" define="NICKNAME" type="CHAR_STRING" length="16" writable="false" optional="false">nickname</attribute>
595     <attribute side="server" code="0x0010" define="C_ID" type="INT16U" min="0x0000" max="0xFFFF" writable="false" optional="false">c iD</attribute>
596     <attribute side="server" code="0x0011" define="NAME" type="CHAR_STRING" length="16" writable="false" optional="false">name</attribute>
597     <attribute side="server" code="0x0020" define="ENABLE_ADD_CHAT" type="BOOLEAN" min="0x00" max="0x01" writable="false" optional="true">enable add chat</attribute>
598     <command source="client" code="0x00" name="JoinChatRequest" optional="false">
599       <description>
600         Command description for JoinChatRequest
601       </description>
602       <arg name="uid" type="INT16U"/>
603       <arg name="nickname" type="CHAR_STRING"/>
604       <arg name="cid" type="INT16U"/>
605     </command>
606     <command source="client" code="0x01" name="LeaveChatRequest" optional="false">
607       <description>
608         Command description for LeaveChatRequest
609       </description>
610       <arg name="cid" type="INT16U"/>
611       <arg name="uid" type="INT16U"/>
612     </command>
613     <command source="client" code="0x02" name="SearchChatRequest" optional="false">
614       <description>
615         Command description for SearchChatRequest
616       </description>
617     </command>
618     <command source="client" code="0x03" name="SwitchChairmanResponse" optional="true" disableDefaultResponse="true">
619       <description>
620         Command description for SwitchChairmanResponse
621       </description>
622       <arg name="cid" type="INT16U"/>
623       <arg name="uid" type="INT16U"/>
624     </command>
625     <command source="client" code="0x04" name="StartChatRequest" optional="true">
626       <description>
627         Command description for StartChatRequest
628       </description>
629       <arg name="name" type="CHAR_STRING"/>
630       <arg name="uid" type="INT16U"/>
631       <arg name="nickname" type="CHAR_STRING"/>
632     </command>
633     <command source="client" code="0x05" name="ChatMessage" optional="false">
634       <description>
635         Command description for ChatMessage
636       </description>
637       <arg name="destinationUid" type="INT16U"/>
638       <arg name="sourceUid" type="INT16U"/>
639       <arg name="cid" type="INT16U"/>
640       <arg name="nickname" type="CHAR_STRING"/>
641       <arg name="message" type="CHAR_STRING"/>
642     </command>
643     <command source="client" code="0x06" name="GetNodeInformationRequest" optional="true">
644       <description>
645         Command description for GetNodeInformationRequest
646       </description>
647       <arg name="cid" type="INT16U"/>
648       <arg name="uid" type="INT16U"/>
649     </command>
650     <command source="server" code="0x00" name="StartChatResponse" optional="true" disableDefaultResponse="true">
651       <description>
652         Command description for StartChatResponse
653       </description>
654       <arg name="status" type="ENUM8"/>
655       <arg name="cid" type="INT16U"/>
656     </command>
657     <command source="server" code="0x01" name="JoinChatResponse" optional="false" disableDefaultResponse="true">
658       <description>
659         Command description for JoinChatResponse
660       </description>
661       <arg name="status" type="ENUM8"/>
662       <arg name="cid" type="INT16U"/>
663       <arg name="chatParticipantList" type="ChatParticipant" array="true"/>
664     </command>
665     <command source="server" code="0x02" name="UserLeft" optional="false">
666       <description>
667         Command description for UserLeft
668       </description>
669       <arg name="cid" type="INT16U"/>
670       <arg name="uid" type="INT16U"/>
671       <arg name="nickname" type="CHAR_STRING"/>
672     </command>
673     <command source="server" code="0x03" name="UserJoined" optional="false">
674       <description>
675         Command description for UserJoined
676       </description>
677       <arg name="cid" type="INT16U"/>
678       <arg name="uid" type="INT16U"/>
679       <arg name="nickname" type="CHAR_STRING"/>
680     </command>
681     <command source="server" code="0x04" name="SearchChatResponse" optional="false" disableDefaultResponse="true">
682       <description>
683         Command description for SearchChatResponse
684       </description>
685       <arg name="options" type="BITMAP8"/>
686       <arg name="chatRoomList" type="ChatRoom" array="true"/>
687     </command>
688     <command source="server" code="0x05" name="SwitchChairmanRequest" optional="true">
689       <description>
690         Command description for SwitchChairmanRequest
691       </description>
692       <arg name="cid" type="INT16U"/>
693     </command>
694     <command source="server" code="0x06" name="SwitchChairmanConfirm" optional="true">
695       <description>
696         Command description for SwitchChairmanConfirm
697       </description>
698       <arg name="cid" type="INT16U"/>
699       <arg name="nodeInformationList" type="NodeInformation" array="true"/>
700     </command>
701     <command source="server" code="0x07" name="SwitchChairmanNotification" optional="true">
702       <description>
703         Command description for SwitchChairmanNotification
704       </description>
705       <arg name="cid" type="INT16U"/>
706       <arg name="uid" type="INT16U"/>
707       <arg name="address" type="DATA16"/>
708       <arg name="endpoint" type="INT8U"/>
709     </command>
710     <command source="server" code="0x08" name="GetNodeInformationResponse" optional="true" disableDefaultResponse="true">
711       <description>
712         Command description for GetNodeInformationResponse
713       </description>
714       <arg name="status" type="ENUM8"/>
715       <arg name="cid" type="INT16U"/>
716       <arg name="uid" type="INT16U"/>
717       <!-- Address, Endpoint, and Nickname will not be present if status is
718            SUCCESS.  call-command-handler can't generate code for something that
719            complicated, so instead just send a buffer and leave parsing to the
720            user.
721       -->
722       <!--<arg name="address"                    type="DATA16" />-->
723       <!--<arg name="endpoint"                   type="INT8U" />-->
724       <!--<arg name="nickname"                   type="CHAR_STRING" />-->
725       <arg name="addressEndpointAndNickname" type="INT8U" array="true"/>
726     </command>
727   </cluster>
728   <cluster>
729     <name>Payment</name>
730     <domain>Financial</domain>
731     <description>Commands and attributes for payment scenarios including ZigBee devices.</description>
732     <code>0x0A01</code>
733     <define>PAYMENT_CLUSTER</define>
734     <client tick="false" init="false">true</client>
735     <server tick="false" init="false">true</server>
736     <attribute side="server" code="0x0000" define="PAYMENT_USER_ID" type="OCTET_STRING" length="64" writable="false" optional="false">user id</attribute>
737     <attribute side="server" code="0x0001" define="USER_TYPE" type="INT16U" writable="false" optional="true">user type</attribute>
738     <attribute side="server" code="0x0010" define="PAYMENT_SERVICE_ID" type="INT16U" writable="false" optional="false">service id</attribute>
739     <attribute side="server" code="0x0011" define="PAYMENT_SERVICE_PROVIDER_ID" type="INT16U" writable="false" optional="false">service provider id</attribute>
740     <attribute side="server" code="0x0012" define="TOTEM_ID" type="INT16U" writable="false" optional="true">totem id</attribute>
741     <attribute side="server" code="0x0020" define="CURRENCY" type="INT32U" writable="false" optional="false">currency</attribute>
742     <attribute side="server" code="0x0021" define="PRICE_TRAILING_DIGIT" type="INT8U" writable="false" optional="false">price trailing digit</attribute>
743     <attribute side="server" code="0x0022" define="PRICE" type="INT32U" writable="false" optional="false">price</attribute>
744     <attribute side="server" code="0x0030" define="GOOD_ID" type="OCTET_STRING" length="64" writable="false" optional="false">good id</attribute>
745     <attribute side="server" code="0x0031" define="PAYMENT_SERIAL_NUMBER" type="OCTET_STRING" length="64" writable="false" optional="false">serial number</attribute>
746     <attribute side="server" code="0x0032" define="PAYMENT_TIMESTAMP" type="OCTET_STRING" length="64" writable="false" optional="false">timestamp</attribute>
747     <attribute side="server" code="0x0033" define="TRANS_ID" type="INT16U" writable="true" optional="true">trans id</attribute>
748     <attribute side="server" code="0x0034" define="TRANS_STATUS" type="ENUM8" writable="true" optional="true">trans status</attribute>
749     <attribute side="server" code="0x0035" define="PAYMENT_STATUS" type="ENUM8" writable="false" optional="false">status</attribute>
750     <command source="client" code="0x00" name="BuyRequest" optional="true">
751       <description>
752         Command description for BuyRequest
753       </description>
754       <arg name="userId" type="OCTET_STRING"/>
755       <arg name="userType" type="INT16U"/>
756       <arg name="serviceId" type="INT16U"/>
757       <arg name="goodId" type="OCTET_STRING"/>
758     </command>
759     <command source="client" code="0x01" name="AcceptPayment" optional="true">
760       <description>
761         Command description for AcceptPayment
762       </description>
763       <arg name="userId" type="OCTET_STRING"/>
764       <arg name="userType" type="INT16U"/>
765       <arg name="serviceId" type="INT16U"/>
766       <arg name="goodId" type="OCTET_STRING"/>
767     </command>
768     <command source="client" code="0x02" name="PaymentConfirm" optional="true">
769       <description>
770         Command description for PaymentConfirm
771       </description>
772       <arg name="serialNumber" type="OCTET_STRING"/>
773       <arg name="transId" type="INT16U"/>
774       <arg name="transStatus" type="ENUM8"/>
775     </command>
776     <command source="server" code="0x00" name="BuyConfirm" optional="false">
777       <description>
778         Command description for BuyConfirm
779       </description>
780       <arg name="serialNumber" type="OCTET_STRING"/>
781       <arg name="currency" type="INT32U"/>
782       <arg name="priceTrailingDigit" type="INT8U"/>
783       <arg name="price" type="INT32U"/>
784       <arg name="timestamp" type="OCTET_STRING"/>
785       <arg name="transId" type="INT16U"/>
786       <arg name="transStatus" type="ENUM8"/>
787     </command>
788     <command source="server" code="0x01" name="ReceiptDelivery" optional="false">
789       <description>
790         Command description for ReceiptDelivery
791       </description>
792       <arg name="serialNumber" type="OCTET_STRING"/>
793       <arg name="currency" type="INT32U"/>
794       <arg name="priceTrailingDigit" type="INT8U"/>
795       <arg name="price" type="INT32U"/>
796       <arg name="timestamp" type="OCTET_STRING"/>
797     </command>
798     <command source="server" code="0x02" name="TransactionEnd" optional="false">
799       <description>
800         Command description for TransactionEnd
801       </description>
802       <arg name="serialNumber" type="OCTET_STRING"/>
803       <arg name="status" type="ENUM8"/>
804     </command>
805   </cluster>
806   <cluster>
807     <name>Billing</name>
808     <domain>Financial</domain>
809     <description>Attributes and commands to enable billing of users for provided services through the use of a billing platform.</description>
810     <code>0x0A02</code>
811     <define>BILLING_CLUSTER</define>
812     <client tick="false" init="false">true</client>
813     <server tick="false" init="false">true</server>
814     <attribute side="server" code="0x0000" define="USER_ID" type="OCTET_STRING" length="64" writable="false" optional="false">user id</attribute>
815     <attribute side="server" code="0x0010" define="SERVICE_ID" type="INT16U" min="0x0000" max="0xFFFF" writable="false" optional="false">service id</attribute>
816     <attribute side="server" code="0x0011" define="SERVICE_PROVIDER_ID" type="INT16U" min="0x0000" max="0xFFFF" writable="false" optional="false">service provider id</attribute>
817     <attribute side="server" code="0x0012" define="SESSION_INTERVAL" type="INT16U" min="0x0000" max="0xFFFF" writable="false" optional="false">session interval</attribute>
818     <attribute side="server" code="0x0020" define="TIMESTAMP" type="OCTET_STRING" length="64" writable="false" optional="false">timestamp</attribute>
819     <attribute side="server" code="0x0021" define="DURATION" type="INT16U" writable="true" optional="true">duration</attribute>
820     <command source="client" code="0x00" name="Subscribe" optional="true">
821       <description>
822         Command description for Subscribe
823       </description>
824       <arg name="userId" type="OCTET_STRING"/>
825       <arg name="serviceId" type="INT16U"/>
826       <arg name="serviceProviderId" type="INT16U"/>
827     </command>
828     <command source="client" code="0x01" name="Unsubscribe" optional="true">
829       <description>
830         Command description for Unsubscribe
831       </description>
832       <arg name="userId" type="OCTET_STRING"/>
833       <arg name="serviceId" type="INT16U"/>
834       <arg name="serviceProviderId" type="INT16U"/>
835     </command>
836     <command source="client" code="0x02" name="StartBillingSession" optional="true">
837       <description>
838         Command description for StartBillingSession
839       </description>
840       <arg name="userId" type="OCTET_STRING"/>
841       <arg name="serviceId" type="INT16U"/>
842       <arg name="serviceProviderId" type="INT16U"/>
843     </command>
844     <command source="client" code="0x03" name="StopBillingSession" optional="true">
845       <description>
846         Command description for StopBillingSession
847       </description>
848       <arg name="userId" type="OCTET_STRING"/>
849       <arg name="serviceId" type="INT16U"/>
850       <arg name="serviceProviderId" type="INT16U"/>
851     </command>
852     <command source="client" code="0x04" name="BillStatusNotification" optional="true">
853       <description>
854         Command description for BillStatusNotification
855       </description>
856       <arg name="userId" type="OCTET_STRING"/>
857       <arg name="status" type="ENUM8"/>
858     </command>
859     <command source="client" code="0x05" name="SessionKeepAlive" optional="true">
860       <description>
861         Command description for SessionKeepAlive
862       </description>
863       <arg name="userId" type="OCTET_STRING"/>
864       <arg name="serviceId" type="INT16U"/>
865       <arg name="serviceProviderId" type="INT16U"/>
866     </command>
867     <command source="server" code="0x00" name="CheckBillStatus" optional="false">
868       <description>
869         Command description for CheckBillStatus
870       </description>
871       <arg name="userId" type="OCTET_STRING"/>
872       <arg name="serviceId" type="INT16U"/>
873       <arg name="serviceProviderId" type="INT16U"/>
874     </command>
875     <command source="server" code="0x01" name="SendBillRecord" optional="false">
876       <description>
877         Command description for SendBillRecord
878       </description>
879       <arg name="userId" type="OCTET_STRING"/>
880       <arg name="serviceId" type="INT16U"/>
881       <arg name="serviceProviderId" type="INT16U"/>
882       <arg name="timestamp" type="OCTET_STRING"/>
883       <arg name="duration" type="INT16U"/>
884     </command>
885   </cluster>
886 </configurator>