blob: 53f08939f0884d7941fb819d95df25a19e610338 [file] [log] [blame]
Erwin Pan684c6de2022-09-20 21:39:56 +08001// This IDL was generated automatically by ZAP.
2// It is for view/code review purposes only.
3
Andrei Litvin21c43e22023-04-04 18:50:26 -04004/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */
Andrei Litvinf94a44e2023-11-28 11:15:13 -05005cluster Identify = 3 {
Andrei Litvin90d60f02023-11-23 16:51:51 -05006 revision 4;
7
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04008 enum EffectIdentifierEnum : enum8 {
Erwin Pan684c6de2022-09-20 21:39:56 +08009 kBlink = 0;
10 kBreathe = 1;
11 kOkay = 2;
12 kChannelChange = 11;
13 kFinishEffect = 254;
14 kStopEffect = 255;
15 }
16
Andrei Litvin4f65f6c2023-10-18 11:57:33 -040017 enum EffectVariantEnum : enum8 {
Erwin Pan684c6de2022-09-20 21:39:56 +080018 kDefault = 0;
19 }
20
Andrei Litvin4f65f6c2023-10-18 11:57:33 -040021 enum IdentifyTypeEnum : enum8 {
Erwin Pan684c6de2022-09-20 21:39:56 +080022 kNone = 0;
fesseha-evee6637462023-05-26 18:34:09 +020023 kLightOutput = 1;
24 kVisibleIndicator = 2;
Erwin Pan684c6de2022-09-20 21:39:56 +080025 kAudibleBeep = 3;
26 kDisplay = 4;
27 kActuator = 5;
28 }
29
30 attribute int16u identifyTime = 0;
fesseha-evee6637462023-05-26 18:34:09 +020031 readonly attribute IdentifyTypeEnum identifyType = 1;
Erwin Pan684c6de2022-09-20 21:39:56 +080032 readonly attribute command_id generatedCommandList[] = 65528;
33 readonly attribute command_id acceptedCommandList[] = 65529;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -050034 readonly attribute event_id eventList[] = 65530;
Erwin Pan684c6de2022-09-20 21:39:56 +080035 readonly attribute attrib_id attributeList[] = 65531;
36 readonly attribute bitmap32 featureMap = 65532;
37 readonly attribute int16u clusterRevision = 65533;
38
39 request struct IdentifyRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -040040 int16u identifyTime = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +080041 }
42
43 request struct TriggerEffectRequest {
fesseha-evee6637462023-05-26 18:34:09 +020044 EffectIdentifierEnum effectIdentifier = 0;
45 EffectVariantEnum effectVariant = 1;
Erwin Pan684c6de2022-09-20 21:39:56 +080046 }
47
Andrei Litvinf94a44e2023-11-28 11:15:13 -050048 /** Command description for Identify */
Erwin Pan684c6de2022-09-20 21:39:56 +080049 command access(invoke: manage) Identify(IdentifyRequest): DefaultSuccess = 0;
Andrei Litvinf94a44e2023-11-28 11:15:13 -050050 /** Command description for TriggerEffect */
Erwin Pan684c6de2022-09-20 21:39:56 +080051 command access(invoke: manage) TriggerEffect(TriggerEffectRequest): DefaultSuccess = 64;
52}
53
Andrei Litvin21c43e22023-04-04 18:50:26 -040054/** Attributes and commands for group configuration and manipulation. */
Andrei Litvinf94a44e2023-11-28 11:15:13 -050055cluster Groups = 4 {
Andrei Litvin90d60f02023-11-23 16:51:51 -050056 revision 4;
57
Andrei Litvin4f65f6c2023-10-18 11:57:33 -040058 bitmap Feature : bitmap32 {
Erwin Pan684c6de2022-09-20 21:39:56 +080059 kGroupNames = 0x1;
60 }
61
Andrei Litvin4f65f6c2023-10-18 11:57:33 -040062 bitmap NameSupportBitmap : bitmap8 {
Boris Zbarskycb1955f2023-05-25 14:01:41 -040063 kGroupNames = 0x80;
64 }
65
66 readonly attribute NameSupportBitmap nameSupport = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +080067 readonly attribute command_id generatedCommandList[] = 65528;
68 readonly attribute command_id acceptedCommandList[] = 65529;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -050069 readonly attribute event_id eventList[] = 65530;
Erwin Pan684c6de2022-09-20 21:39:56 +080070 readonly attribute attrib_id attributeList[] = 65531;
71 readonly attribute bitmap32 featureMap = 65532;
72 readonly attribute int16u clusterRevision = 65533;
73
74 request struct AddGroupRequest {
Boris Zbarskya83ce322023-01-03 11:38:33 -050075 group_id groupID = 0;
Andrei Litvinbd8aa072023-10-27 18:12:37 -040076 char_string<16> groupName = 1;
Erwin Pan684c6de2022-09-20 21:39:56 +080077 }
78
Erwin Pan684c6de2022-09-20 21:39:56 +080079 response struct AddGroupResponse = 0 {
Andrei Litvin47836d22023-10-12 18:08:11 -040080 enum8 status = 0;
Boris Zbarskya83ce322023-01-03 11:38:33 -050081 group_id groupID = 1;
Erwin Pan684c6de2022-09-20 21:39:56 +080082 }
83
Andrei Litvinf94a44e2023-11-28 11:15:13 -050084 request struct ViewGroupRequest {
85 group_id groupID = 0;
86 }
87
Erwin Pan684c6de2022-09-20 21:39:56 +080088 response struct ViewGroupResponse = 1 {
Andrei Litvin47836d22023-10-12 18:08:11 -040089 enum8 status = 0;
Boris Zbarskya83ce322023-01-03 11:38:33 -050090 group_id groupID = 1;
Andrei Litvinbd8aa072023-10-27 18:12:37 -040091 char_string<16> groupName = 2;
Erwin Pan684c6de2022-09-20 21:39:56 +080092 }
93
Andrei Litvinf94a44e2023-11-28 11:15:13 -050094 request struct GetGroupMembershipRequest {
95 group_id groupList[] = 0;
96 }
97
Erwin Pan684c6de2022-09-20 21:39:56 +080098 response struct GetGroupMembershipResponse = 2 {
Andrei Litvin47836d22023-10-12 18:08:11 -040099 nullable int8u capacity = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +0800100 group_id groupList[] = 1;
101 }
102
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500103 request struct RemoveGroupRequest {
104 group_id groupID = 0;
105 }
106
Erwin Pan684c6de2022-09-20 21:39:56 +0800107 response struct RemoveGroupResponse = 3 {
Andrei Litvin47836d22023-10-12 18:08:11 -0400108 enum8 status = 0;
Boris Zbarskya83ce322023-01-03 11:38:33 -0500109 group_id groupID = 1;
Erwin Pan684c6de2022-09-20 21:39:56 +0800110 }
111
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500112 request struct AddGroupIfIdentifyingRequest {
113 group_id groupID = 0;
114 char_string<16> groupName = 1;
115 }
116
117 /** Command description for AddGroup */
Erwin Pan684c6de2022-09-20 21:39:56 +0800118 fabric command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500119 /** Command description for ViewGroup */
Erwin Pan684c6de2022-09-20 21:39:56 +0800120 fabric command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500121 /** Command description for GetGroupMembership */
Erwin Pan684c6de2022-09-20 21:39:56 +0800122 fabric command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500123 /** Command description for RemoveGroup */
Erwin Pan684c6de2022-09-20 21:39:56 +0800124 fabric command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500125 /** Command description for RemoveAllGroups */
Erwin Pan684c6de2022-09-20 21:39:56 +0800126 fabric command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500127 /** Command description for AddGroupIfIdentifying */
Erwin Pan684c6de2022-09-20 21:39:56 +0800128 fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5;
129}
130
Andrei Litvin21c43e22023-04-04 18:50:26 -0400131/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500132cluster Descriptor = 29 {
Andrei Litvin90d60f02023-11-23 16:51:51 -0500133 revision 2;
134
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400135 bitmap Feature : bitmap32 {
Boris Zbarskybf0b45a2023-08-11 08:04:15 -0400136 kTagList = 0x1;
137 }
138
Erwin Pan684c6de2022-09-20 21:39:56 +0800139 struct DeviceTypeStruct {
Boris Zbarsky7195bd82023-01-03 17:34:16 -0500140 devtype_id deviceType = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +0800141 int16u revision = 1;
142 }
143
abeck-whirlpoola1c11262023-07-21 00:22:56 -0500144 struct SemanticTagStruct {
145 nullable vendor_id mfgCode = 0;
146 enum8 namespaceID = 1;
147 enum8 tag = 2;
148 optional nullable char_string label = 3;
149 }
150
Erwin Pan684c6de2022-09-20 21:39:56 +0800151 readonly attribute DeviceTypeStruct deviceTypeList[] = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -0400152 readonly attribute cluster_id serverList[] = 1;
153 readonly attribute cluster_id clientList[] = 2;
154 readonly attribute endpoint_no partsList[] = 3;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500155 readonly attribute optional SemanticTagStruct tagList[] = 4;
Erwin Pan684c6de2022-09-20 21:39:56 +0800156 readonly attribute command_id generatedCommandList[] = 65528;
157 readonly attribute command_id acceptedCommandList[] = 65529;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500158 readonly attribute event_id eventList[] = 65530;
Erwin Pan684c6de2022-09-20 21:39:56 +0800159 readonly attribute attrib_id attributeList[] = 65531;
160 readonly attribute bitmap32 featureMap = 65532;
161 readonly attribute int16u clusterRevision = 65533;
162}
163
Andrei Litvin21c43e22023-04-04 18:50:26 -0400164/** The Access Control Cluster exposes a data model view of a
165 Node's Access Control List (ACL), which codifies the rules used to manage
166 and enforce Access Control for the Node's endpoints and their associated
167 cluster instances. */
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500168cluster AccessControl = 31 {
Andrei Litvin90d60f02023-11-23 16:51:51 -0500169 revision 1; // NOTE: Default/not specifically set
170
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400171 enum AccessControlEntryAuthModeEnum : enum8 {
Andrei Litvin413a9002023-06-28 13:02:18 -0400172 kPASE = 1;
173 kCASE = 2;
Erwin Pan684c6de2022-09-20 21:39:56 +0800174 kGroup = 3;
175 }
176
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400177 enum AccessControlEntryPrivilegeEnum : enum8 {
Boris Zbarsky28cb6cc2023-01-04 04:46:21 -0500178 kView = 1;
179 kProxyView = 2;
180 kOperate = 3;
181 kManage = 4;
182 kAdminister = 5;
183 }
184
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400185 enum ChangeTypeEnum : enum8 {
Erwin Pan684c6de2022-09-20 21:39:56 +0800186 kChanged = 0;
187 kAdded = 1;
188 kRemoved = 2;
189 }
190
Boris Zbarskyf9731a82023-05-24 15:08:53 -0400191 struct AccessControlTargetStruct {
Bharat Rajuf25702c2023-04-12 11:14:12 -0400192 nullable cluster_id cluster = 0;
193 nullable endpoint_no endpoint = 1;
194 nullable devtype_id deviceType = 2;
195 }
196
Boris Zbarsky28cb6cc2023-01-04 04:46:21 -0500197 fabric_scoped struct AccessControlEntryStruct {
198 fabric_sensitive AccessControlEntryPrivilegeEnum privilege = 1;
199 fabric_sensitive AccessControlEntryAuthModeEnum authMode = 2;
Andrei Litvind38820d2022-10-04 09:25:26 -0400200 nullable fabric_sensitive int64u subjects[] = 3;
Boris Zbarskyf9731a82023-05-24 15:08:53 -0400201 nullable fabric_sensitive AccessControlTargetStruct targets[] = 4;
Erwin Pan684c6de2022-09-20 21:39:56 +0800202 fabric_idx fabricIndex = 254;
203 }
204
Boris Zbarsky28cb6cc2023-01-04 04:46:21 -0500205 fabric_scoped struct AccessControlExtensionStruct {
Andrei Litvind38820d2022-10-04 09:25:26 -0400206 fabric_sensitive octet_string<128> data = 1;
Erwin Pan684c6de2022-09-20 21:39:56 +0800207 fabric_idx fabricIndex = 254;
208 }
209
Andrei Litvind38820d2022-10-04 09:25:26 -0400210 fabric_sensitive info event access(read: administer) AccessControlEntryChanged = 0 {
Erwin Pan684c6de2022-09-20 21:39:56 +0800211 nullable node_id adminNodeID = 1;
Andrei Litvin47836d22023-10-12 18:08:11 -0400212 nullable int16u adminPasscodeID = 2;
Erwin Pan684c6de2022-09-20 21:39:56 +0800213 ChangeTypeEnum changeType = 3;
Boris Zbarsky28cb6cc2023-01-04 04:46:21 -0500214 nullable AccessControlEntryStruct latestValue = 4;
Erwin Pan684c6de2022-09-20 21:39:56 +0800215 fabric_idx fabricIndex = 254;
216 }
217
Andrei Litvind38820d2022-10-04 09:25:26 -0400218 fabric_sensitive info event access(read: administer) AccessControlExtensionChanged = 1 {
Erwin Pan684c6de2022-09-20 21:39:56 +0800219 nullable node_id adminNodeID = 1;
Andrei Litvin47836d22023-10-12 18:08:11 -0400220 nullable int16u adminPasscodeID = 2;
Erwin Pan684c6de2022-09-20 21:39:56 +0800221 ChangeTypeEnum changeType = 3;
Boris Zbarsky28cb6cc2023-01-04 04:46:21 -0500222 nullable AccessControlExtensionStruct latestValue = 4;
Erwin Pan684c6de2022-09-20 21:39:56 +0800223 fabric_idx fabricIndex = 254;
224 }
225
Boris Zbarsky28cb6cc2023-01-04 04:46:21 -0500226 attribute access(read: administer, write: administer) AccessControlEntryStruct acl[] = 0;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500227 attribute access(read: administer, write: administer) optional AccessControlExtensionStruct extension[] = 1;
Erwin Pan684c6de2022-09-20 21:39:56 +0800228 readonly attribute int16u subjectsPerAccessControlEntry = 2;
229 readonly attribute int16u targetsPerAccessControlEntry = 3;
230 readonly attribute int16u accessControlEntriesPerFabric = 4;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500231 readonly attribute command_id generatedCommandList[] = 65528;
232 readonly attribute command_id acceptedCommandList[] = 65529;
233 readonly attribute event_id eventList[] = 65530;
Erwin Pan684c6de2022-09-20 21:39:56 +0800234 readonly attribute attrib_id attributeList[] = 65531;
235 readonly attribute bitmap32 featureMap = 65532;
236 readonly attribute int16u clusterRevision = 65533;
237}
238
Andrei Litvin21c43e22023-04-04 18:50:26 -0400239/** This cluster provides attributes and events for determining basic information about Nodes, which supports both
240 Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number,
241 which apply to the whole Node. Also allows setting user device information such as location. */
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500242cluster BasicInformation = 40 {
Andrei Litvin90d60f02023-11-23 16:51:51 -0500243 revision 3;
244
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400245 enum ColorEnum : enum8 {
Boris Zbarskyab59adc2023-05-02 10:45:44 -0400246 kBlack = 0;
247 kNavy = 1;
248 kGreen = 2;
249 kTeal = 3;
250 kMaroon = 4;
251 kPurple = 5;
252 kOlive = 6;
253 kGray = 7;
254 kBlue = 8;
255 kLime = 9;
256 kAqua = 10;
257 kRed = 11;
258 kFuchsia = 12;
259 kYellow = 13;
260 kWhite = 14;
261 kNickel = 15;
262 kChrome = 16;
263 kBrass = 17;
264 kCopper = 18;
265 kSilver = 19;
266 kGold = 20;
267 }
268
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400269 enum ProductFinishEnum : enum8 {
Boris Zbarskyab59adc2023-05-02 10:45:44 -0400270 kOther = 0;
271 kMatte = 1;
272 kSatin = 2;
273 kPolished = 3;
274 kRugged = 4;
275 kFabric = 5;
276 }
277
Erwin Pan684c6de2022-09-20 21:39:56 +0800278 struct CapabilityMinimaStruct {
279 int16u caseSessionsPerFabric = 0;
280 int16u subscriptionsPerFabric = 1;
281 }
282
Boris Zbarskyab59adc2023-05-02 10:45:44 -0400283 struct ProductAppearanceStruct {
284 ProductFinishEnum finish = 0;
285 nullable ColorEnum primaryColor = 1;
286 }
287
Erwin Pan684c6de2022-09-20 21:39:56 +0800288 critical event StartUp = 0 {
Andrei Litvin47836d22023-10-12 18:08:11 -0400289 int32u softwareVersion = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +0800290 }
291
292 critical event ShutDown = 1 {
293 }
294
295 info event Leave = 2 {
296 fabric_idx fabricIndex = 0;
297 }
298
299 info event ReachableChanged = 3 {
300 boolean reachableNewValue = 0;
301 }
302
303 readonly attribute int16u dataModelRevision = 0;
304 readonly attribute char_string<32> vendorName = 1;
305 readonly attribute vendor_id vendorID = 2;
306 readonly attribute char_string<32> productName = 3;
307 readonly attribute int16u productID = 4;
308 attribute access(write: manage) char_string<32> nodeLabel = 5;
309 attribute access(write: administer) char_string<2> location = 6;
310 readonly attribute int16u hardwareVersion = 7;
311 readonly attribute char_string<64> hardwareVersionString = 8;
312 readonly attribute int32u softwareVersion = 9;
313 readonly attribute char_string<64> softwareVersionString = 10;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500314 readonly attribute optional char_string<16> manufacturingDate = 11;
315 readonly attribute optional char_string<32> partNumber = 12;
316 readonly attribute optional long_char_string<256> productURL = 13;
317 readonly attribute optional char_string<64> productLabel = 14;
318 readonly attribute optional char_string<32> serialNumber = 15;
319 attribute access(write: manage) optional boolean localConfigDisabled = 16;
320 readonly attribute optional boolean reachable = 17;
321 readonly attribute optional char_string<32> uniqueID = 18;
Erwin Pan684c6de2022-09-20 21:39:56 +0800322 readonly attribute CapabilityMinimaStruct capabilityMinima = 19;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500323 readonly attribute optional ProductAppearanceStruct productAppearance = 20;
Terence Hampson9969d442023-11-16 11:30:48 -0500324 readonly attribute int32u specificationVersion = 21;
325 readonly attribute int16u maxPathsPerInvoke = 22;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500326 readonly attribute command_id generatedCommandList[] = 65528;
327 readonly attribute command_id acceptedCommandList[] = 65529;
328 readonly attribute event_id eventList[] = 65530;
329 readonly attribute attrib_id attributeList[] = 65531;
Erwin Pan684c6de2022-09-20 21:39:56 +0800330 readonly attribute bitmap32 featureMap = 65532;
331 readonly attribute int16u clusterRevision = 65533;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500332
333 command MfgSpecificPing(): DefaultSuccess = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +0800334}
335
Andrei Litvin21c43e22023-04-04 18:50:26 -0400336/** Provides an interface for providing OTA software updates */
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500337cluster OtaSoftwareUpdateProvider = 41 {
Andrei Litvin90d60f02023-11-23 16:51:51 -0500338 revision 1; // NOTE: Default/not specifically set
339
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400340 enum ApplyUpdateActionEnum : enum8 {
Erwin Pan684c6de2022-09-20 21:39:56 +0800341 kProceed = 0;
342 kAwaitNextAction = 1;
343 kDiscontinue = 2;
344 }
345
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400346 enum DownloadProtocolEnum : enum8 {
Erwin Pan684c6de2022-09-20 21:39:56 +0800347 kBDXSynchronous = 0;
348 kBDXAsynchronous = 1;
Andrei Litvin413a9002023-06-28 13:02:18 -0400349 kHTTPS = 2;
Erwin Pan684c6de2022-09-20 21:39:56 +0800350 kVendorSpecific = 3;
351 }
352
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400353 enum StatusEnum : enum8 {
Erwin Pan684c6de2022-09-20 21:39:56 +0800354 kUpdateAvailable = 0;
355 kBusy = 1;
356 kNotAvailable = 2;
357 kDownloadProtocolNotSupported = 3;
358 }
359
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500360 readonly attribute command_id generatedCommandList[] = 65528;
361 readonly attribute command_id acceptedCommandList[] = 65529;
362 readonly attribute event_id eventList[] = 65530;
363 readonly attribute attrib_id attributeList[] = 65531;
364 readonly attribute bitmap32 featureMap = 65532;
Erwin Pan684c6de2022-09-20 21:39:56 +0800365 readonly attribute int16u clusterRevision = 65533;
366
367 request struct QueryImageRequest {
Boris Zbarsky458bbbf2023-01-03 13:11:18 -0500368 vendor_id vendorID = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -0400369 int16u productID = 1;
370 int32u softwareVersion = 2;
Boris Zbarsky71317fa2023-10-11 15:56:01 -0400371 DownloadProtocolEnum protocolsSupported[] = 3;
Andrei Litvin47836d22023-10-12 18:08:11 -0400372 optional int16u hardwareVersion = 4;
373 optional char_string<2> location = 5;
374 optional boolean requestorCanConsent = 6;
375 optional octet_string<512> metadataForProvider = 7;
Erwin Pan684c6de2022-09-20 21:39:56 +0800376 }
377
Erwin Pan684c6de2022-09-20 21:39:56 +0800378 response struct QueryImageResponse = 1 {
Boris Zbarsky71317fa2023-10-11 15:56:01 -0400379 StatusEnum status = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -0400380 optional int32u delayedActionTime = 1;
381 optional char_string<256> imageURI = 2;
382 optional int32u softwareVersion = 3;
383 optional char_string<64> softwareVersionString = 4;
384 optional octet_string<32> updateToken = 5;
385 optional boolean userConsentNeeded = 6;
386 optional octet_string<512> metadataForRequestor = 7;
Erwin Pan684c6de2022-09-20 21:39:56 +0800387 }
388
Andrei Litvin040c65d2023-03-28 16:23:26 -0400389 request struct ApplyUpdateRequestRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -0400390 octet_string<32> updateToken = 0;
391 int32u newVersion = 1;
Andrei Litvin040c65d2023-03-28 16:23:26 -0400392 }
393
Erwin Pan684c6de2022-09-20 21:39:56 +0800394 response struct ApplyUpdateResponse = 3 {
Boris Zbarsky71317fa2023-10-11 15:56:01 -0400395 ApplyUpdateActionEnum action = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -0400396 int32u delayedActionTime = 1;
Erwin Pan684c6de2022-09-20 21:39:56 +0800397 }
398
Andrei Litvin040c65d2023-03-28 16:23:26 -0400399 request struct NotifyUpdateAppliedRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -0400400 octet_string<32> updateToken = 0;
401 int32u softwareVersion = 1;
Andrei Litvin040c65d2023-03-28 16:23:26 -0400402 }
403
Andrei Litvin21c43e22023-04-04 18:50:26 -0400404 /** Determine availability of a new Software Image */
Erwin Pan684c6de2022-09-20 21:39:56 +0800405 command QueryImage(QueryImageRequest): QueryImageResponse = 0;
Andrei Litvin21c43e22023-04-04 18:50:26 -0400406 /** Determine next action to take for a downloaded Software Image */
Erwin Pan684c6de2022-09-20 21:39:56 +0800407 command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2;
Andrei Litvin21c43e22023-04-04 18:50:26 -0400408 /** Notify OTA Provider that an update was applied */
Erwin Pan684c6de2022-09-20 21:39:56 +0800409 command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4;
410}
411
Andrei Litvin21c43e22023-04-04 18:50:26 -0400412/** Provides an interface for downloading and applying OTA software updates */
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500413cluster OtaSoftwareUpdateRequestor = 42 {
Andrei Litvin90d60f02023-11-23 16:51:51 -0500414 revision 1; // NOTE: Default/not specifically set
415
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400416 enum AnnouncementReasonEnum : enum8 {
Erwin Pan684c6de2022-09-20 21:39:56 +0800417 kSimpleAnnouncement = 0;
418 kUpdateAvailable = 1;
419 kUrgentUpdateAvailable = 2;
420 }
421
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400422 enum ChangeReasonEnum : enum8 {
Erwin Pan684c6de2022-09-20 21:39:56 +0800423 kUnknown = 0;
424 kSuccess = 1;
425 kFailure = 2;
426 kTimeOut = 3;
427 kDelayByProvider = 4;
428 }
429
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400430 enum UpdateStateEnum : enum8 {
Erwin Pan684c6de2022-09-20 21:39:56 +0800431 kUnknown = 0;
432 kIdle = 1;
433 kQuerying = 2;
434 kDelayedOnQuery = 3;
435 kDownloading = 4;
436 kApplying = 5;
437 kDelayedOnApply = 6;
438 kRollingBack = 7;
439 kDelayedOnUserConsent = 8;
440 }
441
Andrei Litvind38820d2022-10-04 09:25:26 -0400442 fabric_scoped struct ProviderLocation {
Erwin Pan684c6de2022-09-20 21:39:56 +0800443 node_id providerNodeID = 1;
444 endpoint_no endpoint = 2;
445 fabric_idx fabricIndex = 254;
446 }
447
448 info event StateTransition = 0 {
Boris Zbarsky71317fa2023-10-11 15:56:01 -0400449 UpdateStateEnum previousState = 0;
450 UpdateStateEnum newState = 1;
451 ChangeReasonEnum reason = 2;
Andrei Litvin47836d22023-10-12 18:08:11 -0400452 nullable int32u targetSoftwareVersion = 3;
Erwin Pan684c6de2022-09-20 21:39:56 +0800453 }
454
455 critical event VersionApplied = 1 {
Andrei Litvin47836d22023-10-12 18:08:11 -0400456 int32u softwareVersion = 0;
457 int16u productID = 1;
Erwin Pan684c6de2022-09-20 21:39:56 +0800458 }
459
460 info event DownloadError = 2 {
Andrei Litvin47836d22023-10-12 18:08:11 -0400461 int32u softwareVersion = 0;
462 int64u bytesDownloaded = 1;
463 nullable int8u progressPercent = 2;
464 nullable int64s platformCode = 3;
Erwin Pan684c6de2022-09-20 21:39:56 +0800465 }
466
Boris Zbarsky458bbbf2023-01-03 13:11:18 -0500467 attribute ProviderLocation defaultOTAProviders[] = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +0800468 readonly attribute boolean updatePossible = 1;
Boris Zbarsky71317fa2023-10-11 15:56:01 -0400469 readonly attribute UpdateStateEnum updateState = 2;
Erwin Pan684c6de2022-09-20 21:39:56 +0800470 readonly attribute nullable int8u updateStateProgress = 3;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500471 readonly attribute command_id generatedCommandList[] = 65528;
472 readonly attribute command_id acceptedCommandList[] = 65529;
473 readonly attribute event_id eventList[] = 65530;
474 readonly attribute attrib_id attributeList[] = 65531;
Erwin Pan684c6de2022-09-20 21:39:56 +0800475 readonly attribute bitmap32 featureMap = 65532;
476 readonly attribute int16u clusterRevision = 65533;
477
Boris Zbarsky458bbbf2023-01-03 13:11:18 -0500478 request struct AnnounceOTAProviderRequest {
479 node_id providerNodeID = 0;
480 vendor_id vendorID = 1;
Boris Zbarsky71317fa2023-10-11 15:56:01 -0400481 AnnouncementReasonEnum announcementReason = 2;
Andrei Litvin47836d22023-10-12 18:08:11 -0400482 optional octet_string<512> metadataForNode = 3;
Erwin Pan684c6de2022-09-20 21:39:56 +0800483 endpoint_no endpoint = 4;
484 }
485
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500486 /** Announce the presence of an OTA Provider */
Boris Zbarsky458bbbf2023-01-03 13:11:18 -0500487 command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +0800488}
489
Andrei Litvin21c43e22023-04-04 18:50:26 -0400490/** Nodes should be expected to be deployed to any and all regions of the world. These global regions
491 may have differing common languages, units of measurements, and numerical formatting
492 standards. As such, Nodes that visually or audibly convey information need a mechanism by which
493 they can be configured to use a user’s preferred language, units, etc */
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500494cluster LocalizationConfiguration = 43 {
Andrei Litvin90d60f02023-11-23 16:51:51 -0500495 revision 1; // NOTE: Default/not specifically set
496
Andrei Litvindd920f22023-10-30 10:14:57 -0400497 attribute access(write: manage) char_string<35> activeLocale = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -0400498 readonly attribute char_string supportedLocales[] = 1;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500499 readonly attribute command_id generatedCommandList[] = 65528;
500 readonly attribute command_id acceptedCommandList[] = 65529;
501 readonly attribute event_id eventList[] = 65530;
Erwin Pan684c6de2022-09-20 21:39:56 +0800502 readonly attribute attrib_id attributeList[] = 65531;
503 readonly attribute bitmap32 featureMap = 65532;
504 readonly attribute int16u clusterRevision = 65533;
505}
506
Andrei Litvin21c43e22023-04-04 18:50:26 -0400507/** Nodes should be expected to be deployed to any and all regions of the world. These global regions
508 may have differing preferences for how dates and times are conveyed. As such, Nodes that visually
509 or audibly convey time information need a mechanism by which they can be configured to use a
510 user’s preferred format. */
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500511cluster TimeFormatLocalization = 44 {
Andrei Litvin90d60f02023-11-23 16:51:51 -0500512 revision 1; // NOTE: Default/not specifically set
513
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400514 enum CalendarTypeEnum : enum8 {
Erwin Pan684c6de2022-09-20 21:39:56 +0800515 kBuddhist = 0;
516 kChinese = 1;
517 kCoptic = 2;
518 kEthiopian = 3;
519 kGregorian = 4;
520 kHebrew = 5;
521 kIndian = 6;
522 kIslamic = 7;
523 kJapanese = 8;
524 kKorean = 9;
525 kPersian = 10;
526 kTaiwanese = 11;
527 }
528
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400529 enum HourFormatEnum : enum8 {
Erwin Pan684c6de2022-09-20 21:39:56 +0800530 k12hr = 0;
531 k24hr = 1;
532 }
533
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400534 bitmap Feature : bitmap32 {
Andrei Litvin98e3bc62023-08-30 14:19:04 -0400535 kCalendarFormat = 0x1;
536 }
537
Andrei Litvin4f53c342023-11-06 17:01:02 -0500538 attribute access(write: manage) HourFormatEnum hourFormat = 0;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500539 attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1;
540 readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500541 readonly attribute command_id generatedCommandList[] = 65528;
542 readonly attribute command_id acceptedCommandList[] = 65529;
543 readonly attribute event_id eventList[] = 65530;
544 readonly attribute attrib_id attributeList[] = 65531;
Erwin Pan684c6de2022-09-20 21:39:56 +0800545 readonly attribute bitmap32 featureMap = 65532;
546 readonly attribute int16u clusterRevision = 65533;
547}
548
Andrei Litvin21c43e22023-04-04 18:50:26 -0400549/** This cluster is used to manage global aspects of the Commissioning flow. */
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500550cluster GeneralCommissioning = 48 {
Andrei Litvin90d60f02023-11-23 16:51:51 -0500551 revision 1; // NOTE: Default/not specifically set
552
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400553 enum CommissioningErrorEnum : enum8 {
Andrei Litvin413a9002023-06-28 13:02:18 -0400554 kOK = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +0800555 kValueOutsideRange = 1;
556 kInvalidAuthentication = 2;
557 kNoFailSafe = 3;
558 kBusyWithOtherAdmin = 4;
559 }
560
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400561 enum RegulatoryLocationTypeEnum : enum8 {
Erwin Pan684c6de2022-09-20 21:39:56 +0800562 kIndoor = 0;
563 kOutdoor = 1;
564 kIndoorOutdoor = 2;
565 }
566
567 struct BasicCommissioningInfo {
568 int16u failSafeExpiryLengthSeconds = 0;
569 int16u maxCumulativeFailsafeSeconds = 1;
570 }
571
572 attribute access(write: administer) int64u breadcrumb = 0;
573 readonly attribute BasicCommissioningInfo basicCommissioningInfo = 1;
Boris Zbarsky98768782023-05-23 12:01:23 -0400574 readonly attribute RegulatoryLocationTypeEnum regulatoryConfig = 2;
575 readonly attribute RegulatoryLocationTypeEnum locationCapability = 3;
Erwin Pan684c6de2022-09-20 21:39:56 +0800576 readonly attribute boolean supportsConcurrentConnection = 4;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500577 readonly attribute command_id generatedCommandList[] = 65528;
578 readonly attribute command_id acceptedCommandList[] = 65529;
579 readonly attribute event_id eventList[] = 65530;
580 readonly attribute attrib_id attributeList[] = 65531;
Erwin Pan684c6de2022-09-20 21:39:56 +0800581 readonly attribute bitmap32 featureMap = 65532;
582 readonly attribute int16u clusterRevision = 65533;
583
584 request struct ArmFailSafeRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -0400585 int16u expiryLengthSeconds = 0;
586 int64u breadcrumb = 1;
Erwin Pan684c6de2022-09-20 21:39:56 +0800587 }
588
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500589 response struct ArmFailSafeResponse = 1 {
590 CommissioningErrorEnum errorCode = 0;
591 char_string<128> debugText = 1;
592 }
593
Erwin Pan684c6de2022-09-20 21:39:56 +0800594 request struct SetRegulatoryConfigRequest {
Boris Zbarsky98768782023-05-23 12:01:23 -0400595 RegulatoryLocationTypeEnum newRegulatoryConfig = 0;
Andrei Litvind47aeb42023-11-15 06:16:41 -0500596 char_string<2> countryCode = 1;
Andrei Litvin47836d22023-10-12 18:08:11 -0400597 int64u breadcrumb = 2;
Erwin Pan684c6de2022-09-20 21:39:56 +0800598 }
599
Erwin Pan684c6de2022-09-20 21:39:56 +0800600 response struct SetRegulatoryConfigResponse = 3 {
Boris Zbarsky98768782023-05-23 12:01:23 -0400601 CommissioningErrorEnum errorCode = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -0400602 char_string debugText = 1;
Erwin Pan684c6de2022-09-20 21:39:56 +0800603 }
604
605 response struct CommissioningCompleteResponse = 5 {
Boris Zbarsky98768782023-05-23 12:01:23 -0400606 CommissioningErrorEnum errorCode = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -0400607 char_string debugText = 1;
Erwin Pan684c6de2022-09-20 21:39:56 +0800608 }
609
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500610 /** Arm the persistent fail-safe timer with an expiry time of now + ExpiryLengthSeconds using device clock */
Erwin Pan684c6de2022-09-20 21:39:56 +0800611 command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500612 /** Set the regulatory configuration to be used during commissioning */
Erwin Pan684c6de2022-09-20 21:39:56 +0800613 command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500614 /** Signals the Server that the Client has successfully completed all steps of Commissioning/Recofiguration needed during fail-safe period. */
Erwin Pan684c6de2022-09-20 21:39:56 +0800615 fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4;
616}
617
Andrei Litvin21c43e22023-04-04 18:50:26 -0400618/** Functionality to configure, enable, disable network credentials and access on a Matter device. */
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500619cluster NetworkCommissioning = 49 {
Andrei Litvin90d60f02023-11-23 16:51:51 -0500620 revision 1; // NOTE: Default/not specifically set
621
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400622 enum NetworkCommissioningStatusEnum : enum8 {
Erwin Pan684c6de2022-09-20 21:39:56 +0800623 kSuccess = 0;
624 kOutOfRange = 1;
625 kBoundsExceeded = 2;
626 kNetworkIDNotFound = 3;
627 kDuplicateNetworkID = 4;
628 kNetworkNotFound = 5;
629 kRegulatoryError = 6;
630 kAuthFailure = 7;
631 kUnsupportedSecurity = 8;
632 kOtherConnectionFailure = 9;
633 kIPV6Failed = 10;
634 kIPBindFailed = 11;
635 kUnknownError = 12;
636 }
637
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400638 enum WiFiBandEnum : enum8 {
Andrei Litvin413a9002023-06-28 13:02:18 -0400639 k2G4 = 0;
640 k3G65 = 1;
641 k5G = 2;
642 k6G = 3;
643 k60G = 4;
644 k1G = 5;
Erwin Pan684c6de2022-09-20 21:39:56 +0800645 }
646
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400647 bitmap Feature : bitmap32 {
Erwin Pan684c6de2022-09-20 21:39:56 +0800648 kWiFiNetworkInterface = 0x1;
649 kThreadNetworkInterface = 0x2;
650 kEthernetNetworkInterface = 0x4;
Karsten Sperling261b03f2023-11-09 06:45:38 +1300651 kPerDeviceCredentials = 0x8;
Erwin Pan684c6de2022-09-20 21:39:56 +0800652 }
653
Tennessee Carmel-Veilleux78791112023-10-24 13:39:10 -0400654 bitmap ThreadCapabilitiesBitmap : bitmap16 {
655 kIsBorderRouterCapable = 0x1;
656 kIsRouterCapable = 0x2;
657 kIsSleepyEndDeviceCapable = 0x4;
658 kIsFullThreadDevice = 0x8;
659 kIsSynchronizedSleepyEndDeviceCapable = 0x10;
660 }
661
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400662 bitmap WiFiSecurityBitmap : bitmap8 {
Erwin Pan684c6de2022-09-20 21:39:56 +0800663 kUnencrypted = 0x1;
Andrei Litvin413a9002023-06-28 13:02:18 -0400664 kWEP = 0x2;
665 kWPAPersonal = 0x4;
666 kWPA2Personal = 0x8;
667 kWPA3Personal = 0x10;
Karsten Sperling261b03f2023-11-09 06:45:38 +1300668 kWPA3MatterPDC = 0x20;
Erwin Pan684c6de2022-09-20 21:39:56 +0800669 }
670
Boris Zbarsky0dc592e2023-06-01 15:25:00 -0400671 struct NetworkInfoStruct {
Erwin Pan684c6de2022-09-20 21:39:56 +0800672 octet_string<32> networkID = 0;
673 boolean connected = 1;
Karsten Sperling261b03f2023-11-09 06:45:38 +1300674 optional nullable octet_string<20> networkIdentifier = 2;
675 optional nullable octet_string<20> clientIdentifier = 3;
Erwin Pan684c6de2022-09-20 21:39:56 +0800676 }
677
Boris Zbarsky0dc592e2023-06-01 15:25:00 -0400678 struct ThreadInterfaceScanResultStruct {
Erwin Pan684c6de2022-09-20 21:39:56 +0800679 int16u panId = 0;
680 int64u extendedPanId = 1;
681 char_string<16> networkName = 2;
682 int16u channel = 3;
683 int8u version = 4;
684 octet_string<8> extendedAddress = 5;
685 int8s rssi = 6;
686 int8u lqi = 7;
687 }
688
Boris Zbarsky0dc592e2023-06-01 15:25:00 -0400689 struct WiFiInterfaceScanResultStruct {
690 WiFiSecurityBitmap security = 0;
Bharat Rajuf25702c2023-04-12 11:14:12 -0400691 octet_string<32> ssid = 1;
692 octet_string<6> bssid = 2;
693 int16u channel = 3;
Boris Zbarsky0dc592e2023-06-01 15:25:00 -0400694 WiFiBandEnum wiFiBand = 4;
Bharat Rajuf25702c2023-04-12 11:14:12 -0400695 int8s rssi = 5;
696 }
697
Erwin Pan684c6de2022-09-20 21:39:56 +0800698 readonly attribute access(read: administer) int8u maxNetworks = 0;
Boris Zbarsky0dc592e2023-06-01 15:25:00 -0400699 readonly attribute access(read: administer) NetworkInfoStruct networks[] = 1;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500700 readonly attribute optional int8u scanMaxTimeSeconds = 2;
701 readonly attribute optional int8u connectMaxTimeSeconds = 3;
Erwin Pan684c6de2022-09-20 21:39:56 +0800702 attribute access(write: administer) boolean interfaceEnabled = 4;
Boris Zbarsky0dc592e2023-06-01 15:25:00 -0400703 readonly attribute access(read: administer) nullable NetworkCommissioningStatusEnum lastNetworkingStatus = 5;
Erwin Pan684c6de2022-09-20 21:39:56 +0800704 readonly attribute access(read: administer) nullable octet_string<32> lastNetworkID = 6;
705 readonly attribute access(read: administer) nullable int32s lastConnectErrorValue = 7;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500706 readonly attribute optional WiFiBandEnum supportedWiFiBands[] = 8;
707 readonly attribute optional ThreadCapabilitiesBitmap supportedThreadFeatures = 9;
708 readonly attribute optional int16u threadVersion = 10;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500709 readonly attribute command_id generatedCommandList[] = 65528;
710 readonly attribute command_id acceptedCommandList[] = 65529;
711 readonly attribute event_id eventList[] = 65530;
712 readonly attribute attrib_id attributeList[] = 65531;
Erwin Pan684c6de2022-09-20 21:39:56 +0800713 readonly attribute bitmap32 featureMap = 65532;
714 readonly attribute int16u clusterRevision = 65533;
715
716 request struct ScanNetworksRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -0400717 optional nullable octet_string<32> ssid = 0;
718 optional int64u breadcrumb = 1;
Erwin Pan684c6de2022-09-20 21:39:56 +0800719 }
720
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500721 response struct ScanNetworksResponse = 1 {
722 NetworkCommissioningStatusEnum networkingStatus = 0;
723 optional char_string debugText = 1;
724 optional WiFiInterfaceScanResultStruct wiFiScanResults[] = 2;
725 optional ThreadInterfaceScanResultStruct threadScanResults[] = 3;
726 }
727
Erwin Pan684c6de2022-09-20 21:39:56 +0800728 request struct AddOrUpdateWiFiNetworkRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -0400729 octet_string<32> ssid = 0;
730 octet_string<64> credentials = 1;
731 optional int64u breadcrumb = 2;
Karsten Sperling261b03f2023-11-09 06:45:38 +1300732 optional octet_string<140> networkIdentity = 3;
733 optional octet_string<20> clientIdentifier = 4;
734 optional octet_string<32> possessionNonce = 5;
Erwin Pan684c6de2022-09-20 21:39:56 +0800735 }
736
737 request struct AddOrUpdateThreadNetworkRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -0400738 octet_string<254> operationalDataset = 0;
739 optional int64u breadcrumb = 1;
Erwin Pan684c6de2022-09-20 21:39:56 +0800740 }
741
742 request struct RemoveNetworkRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -0400743 octet_string<32> networkID = 0;
744 optional int64u breadcrumb = 1;
Erwin Pan684c6de2022-09-20 21:39:56 +0800745 }
746
Erwin Pan684c6de2022-09-20 21:39:56 +0800747 response struct NetworkConfigResponse = 5 {
Boris Zbarsky0dc592e2023-06-01 15:25:00 -0400748 NetworkCommissioningStatusEnum networkingStatus = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -0400749 optional char_string<512> debugText = 1;
750 optional int8u networkIndex = 2;
Karsten Sperling261b03f2023-11-09 06:45:38 +1300751 optional octet_string<140> clientIdentity = 3;
752 optional octet_string<64> possessionSignature = 4;
Erwin Pan684c6de2022-09-20 21:39:56 +0800753 }
754
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500755 request struct ConnectNetworkRequest {
756 octet_string<32> networkID = 0;
757 optional int64u breadcrumb = 1;
758 }
759
Erwin Pan684c6de2022-09-20 21:39:56 +0800760 response struct ConnectNetworkResponse = 7 {
Boris Zbarsky0dc592e2023-06-01 15:25:00 -0400761 NetworkCommissioningStatusEnum networkingStatus = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -0400762 optional char_string debugText = 1;
763 nullable int32s errorValue = 2;
Erwin Pan684c6de2022-09-20 21:39:56 +0800764 }
765
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500766 request struct ReorderNetworkRequest {
767 octet_string<32> networkID = 0;
768 int8u networkIndex = 1;
769 optional int64u breadcrumb = 2;
770 }
771
772 request struct QueryIdentityRequest {
773 OCTET_STRING<20> keyIdentifier = 0;
774 optional OCTET_STRING<32> possessionNonce = 1;
775 }
776
777 response struct QueryIdentityResponse = 10 {
778 OCTET_STRING<140> identity = 0;
779 optional OCTET_STRING<64> possessionSignature = 1;
780 }
781
782 /** Detemine the set of networks the device sees as available. */
Erwin Pan684c6de2022-09-20 21:39:56 +0800783 command access(invoke: administer) ScanNetworks(ScanNetworksRequest): ScanNetworksResponse = 0;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500784 /** Add or update the credentials for a given Wi-Fi network. */
Erwin Pan684c6de2022-09-20 21:39:56 +0800785 command access(invoke: administer) AddOrUpdateWiFiNetwork(AddOrUpdateWiFiNetworkRequest): NetworkConfigResponse = 2;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500786 /** Add or update the credentials for a given Thread network. */
Erwin Pan684c6de2022-09-20 21:39:56 +0800787 command access(invoke: administer) AddOrUpdateThreadNetwork(AddOrUpdateThreadNetworkRequest): NetworkConfigResponse = 3;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500788 /** Remove the definition of a given network (including its credentials). */
Erwin Pan684c6de2022-09-20 21:39:56 +0800789 command access(invoke: administer) RemoveNetwork(RemoveNetworkRequest): NetworkConfigResponse = 4;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500790 /** Connect to the specified network, using previously-defined credentials. */
Erwin Pan684c6de2022-09-20 21:39:56 +0800791 command access(invoke: administer) ConnectNetwork(ConnectNetworkRequest): ConnectNetworkResponse = 6;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500792 /** Modify the order in which networks will be presented in the Networks attribute. */
Erwin Pan684c6de2022-09-20 21:39:56 +0800793 command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500794 /** Retrieve details about and optionally proof of possession of a network client identity. */
795 command access(invoke: administer) QueryIdentity(QueryIdentityRequest): QueryIdentityResponse = 9;
Erwin Pan684c6de2022-09-20 21:39:56 +0800796}
797
Andrei Litvin21c43e22023-04-04 18:50:26 -0400798/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500799cluster DiagnosticLogs = 50 {
Andrei Litvin90d60f02023-11-23 16:51:51 -0500800 revision 1; // NOTE: Default/not specifically set
801
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400802 enum IntentEnum : enum8 {
Erwin Pan684c6de2022-09-20 21:39:56 +0800803 kEndUserSupport = 0;
804 kNetworkDiag = 1;
805 kCrashLogs = 2;
806 }
807
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400808 enum StatusEnum : enum8 {
Erwin Pan684c6de2022-09-20 21:39:56 +0800809 kSuccess = 0;
810 kExhausted = 1;
811 kNoLogs = 2;
812 kBusy = 3;
813 kDenied = 4;
814 }
815
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400816 enum TransferProtocolEnum : enum8 {
Erwin Pan684c6de2022-09-20 21:39:56 +0800817 kResponsePayload = 0;
Andrei Litvin413a9002023-06-28 13:02:18 -0400818 kBDX = 1;
Erwin Pan684c6de2022-09-20 21:39:56 +0800819 }
820
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500821 readonly attribute command_id generatedCommandList[] = 65528;
822 readonly attribute command_id acceptedCommandList[] = 65529;
823 readonly attribute event_id eventList[] = 65530;
824 readonly attribute attrib_id attributeList[] = 65531;
Erwin Pan684c6de2022-09-20 21:39:56 +0800825 readonly attribute bitmap32 featureMap = 65532;
826 readonly attribute int16u clusterRevision = 65533;
827
828 request struct RetrieveLogsRequestRequest {
Boris Zbarsky60200ca2023-02-15 09:38:28 -0500829 IntentEnum intent = 0;
830 TransferProtocolEnum requestedProtocol = 1;
Andrei Litvin47836d22023-10-12 18:08:11 -0400831 optional char_string<32> transferFileDesignator = 2;
Erwin Pan684c6de2022-09-20 21:39:56 +0800832 }
833
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500834 response struct RetrieveLogsResponse = 1 {
835 StatusEnum status = 0;
836 LONG_OCTET_STRING logContent = 1;
837 optional epoch_us UTCTimeStamp = 2;
838 optional systime_us timeSinceBoot = 3;
839 }
840
841 /** Retrieving diagnostic logs from a Node */
Erwin Pan684c6de2022-09-20 21:39:56 +0800842 command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0;
843}
844
Andrei Litvin21c43e22023-04-04 18:50:26 -0400845/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500846cluster GeneralDiagnostics = 51 {
Andrei Litvin90d60f02023-11-23 16:51:51 -0500847 revision 1; // NOTE: Default/not specifically set
848
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400849 enum BootReasonEnum : enum8 {
Erwin Pan684c6de2022-09-20 21:39:56 +0800850 kUnspecified = 0;
851 kPowerOnReboot = 1;
852 kBrownOutReset = 2;
853 kSoftwareWatchdogReset = 3;
854 kHardwareWatchdogReset = 4;
855 kSoftwareUpdateCompleted = 5;
856 kSoftwareReset = 6;
857 }
858
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400859 enum HardwareFaultEnum : enum8 {
Erwin Pan684c6de2022-09-20 21:39:56 +0800860 kUnspecified = 0;
861 kRadio = 1;
862 kSensor = 2;
863 kResettableOverTemp = 3;
864 kNonResettableOverTemp = 4;
865 kPowerSource = 5;
866 kVisualDisplayFault = 6;
867 kAudioOutputFault = 7;
868 kUserInterfaceFault = 8;
869 kNonVolatileMemoryError = 9;
870 kTamperDetected = 10;
871 }
872
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400873 enum InterfaceTypeEnum : enum8 {
Erwin Pan684c6de2022-09-20 21:39:56 +0800874 kUnspecified = 0;
875 kWiFi = 1;
876 kEthernet = 2;
877 kCellular = 3;
878 kThread = 4;
879 }
880
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400881 enum NetworkFaultEnum : enum8 {
Erwin Pan684c6de2022-09-20 21:39:56 +0800882 kUnspecified = 0;
883 kHardwareFailure = 1;
884 kNetworkJammed = 2;
885 kConnectionFailed = 3;
886 }
887
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400888 enum RadioFaultEnum : enum8 {
Erwin Pan684c6de2022-09-20 21:39:56 +0800889 kUnspecified = 0;
890 kWiFiFault = 1;
891 kCellularFault = 2;
892 kThreadFault = 3;
893 kNFCFault = 4;
894 kBLEFault = 5;
895 kEthernetFault = 6;
896 }
897
Boris Zbarskydd6ae932023-01-09 12:08:17 -0500898 struct NetworkInterface {
Erwin Pan684c6de2022-09-20 21:39:56 +0800899 char_string<32> name = 0;
900 boolean isOperational = 1;
901 nullable boolean offPremiseServicesReachableIPv4 = 2;
902 nullable boolean offPremiseServicesReachableIPv6 = 3;
903 octet_string<8> hardwareAddress = 4;
904 octet_string IPv4Addresses[] = 5;
905 octet_string IPv6Addresses[] = 6;
Boris Zbarsky1b226d42023-01-18 23:43:09 -0500906 InterfaceTypeEnum type = 7;
Erwin Pan684c6de2022-09-20 21:39:56 +0800907 }
908
909 critical event HardwareFaultChange = 0 {
Boris Zbarsky1b226d42023-01-18 23:43:09 -0500910 HardwareFaultEnum current[] = 0;
911 HardwareFaultEnum previous[] = 1;
Erwin Pan684c6de2022-09-20 21:39:56 +0800912 }
913
914 critical event RadioFaultChange = 1 {
Boris Zbarsky1b226d42023-01-18 23:43:09 -0500915 RadioFaultEnum current[] = 0;
916 RadioFaultEnum previous[] = 1;
Erwin Pan684c6de2022-09-20 21:39:56 +0800917 }
918
919 critical event NetworkFaultChange = 2 {
Boris Zbarsky1b226d42023-01-18 23:43:09 -0500920 NetworkFaultEnum current[] = 0;
921 NetworkFaultEnum previous[] = 1;
Erwin Pan684c6de2022-09-20 21:39:56 +0800922 }
923
924 critical event BootReason = 3 {
Boris Zbarskydd6ae932023-01-09 12:08:17 -0500925 BootReasonEnum bootReason = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +0800926 }
927
Boris Zbarskydd6ae932023-01-09 12:08:17 -0500928 readonly attribute NetworkInterface networkInterfaces[] = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +0800929 readonly attribute int16u rebootCount = 1;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500930 readonly attribute optional int64u upTime = 2;
931 readonly attribute optional int32u totalOperationalHours = 3;
932 readonly attribute optional BootReasonEnum bootReason = 4;
933 readonly attribute optional HardwareFaultEnum activeHardwareFaults[] = 5;
934 readonly attribute optional RadioFaultEnum activeRadioFaults[] = 6;
935 readonly attribute optional NetworkFaultEnum activeNetworkFaults[] = 7;
Erwin Pan684c6de2022-09-20 21:39:56 +0800936 readonly attribute boolean testEventTriggersEnabled = 8;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500937 readonly attribute command_id generatedCommandList[] = 65528;
938 readonly attribute command_id acceptedCommandList[] = 65529;
939 readonly attribute event_id eventList[] = 65530;
940 readonly attribute attrib_id attributeList[] = 65531;
Erwin Pan684c6de2022-09-20 21:39:56 +0800941 readonly attribute bitmap32 featureMap = 65532;
942 readonly attribute int16u clusterRevision = 65533;
943
944 request struct TestEventTriggerRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -0400945 octet_string<16> enableKey = 0;
946 int64u eventTrigger = 1;
Erwin Pan684c6de2022-09-20 21:39:56 +0800947 }
948
Tennessee Carmel-Veilleuxd165f622023-10-31 10:50:04 -0400949 response struct TimeSnapshotResponse = 2 {
950 systime_us systemTimeUs = 0;
951 nullable epoch_us UTCTimeUs = 1;
952 }
953
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500954 /** Provide a means for certification tests to trigger some test-plan-specific events */
Erwin Pan684c6de2022-09-20 21:39:56 +0800955 command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500956 /** Take a snapshot of system time and epoch time. */
Tennessee Carmel-Veilleuxd165f622023-10-31 10:50:04 -0400957 command TimeSnapshot(): TimeSnapshotResponse = 1;
Erwin Pan684c6de2022-09-20 21:39:56 +0800958}
959
Andrei Litvin21c43e22023-04-04 18:50:26 -0400960/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500961cluster SoftwareDiagnostics = 52 {
Andrei Litvin90d60f02023-11-23 16:51:51 -0500962 revision 1; // NOTE: Default/not specifically set
963
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400964 bitmap Feature : bitmap32 {
Andrei Litvin89671e82023-10-29 21:27:57 -0400965 kWatermarks = 0x1;
Erwin Pan684c6de2022-09-20 21:39:56 +0800966 }
967
Boris Zbarskyaf7b3932023-01-06 12:07:58 -0500968 struct ThreadMetricsStruct {
Erwin Pan684c6de2022-09-20 21:39:56 +0800969 int64u id = 0;
970 optional char_string<8> name = 1;
971 optional int32u stackFreeCurrent = 2;
972 optional int32u stackFreeMinimum = 3;
973 optional int32u stackSize = 4;
974 }
975
976 info event SoftwareFault = 0 {
Andrei Litvin47836d22023-10-12 18:08:11 -0400977 int64u id = 0;
978 optional char_string name = 1;
979 optional octet_string faultRecording = 2;
Erwin Pan684c6de2022-09-20 21:39:56 +0800980 }
981
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500982 readonly attribute optional ThreadMetricsStruct threadMetrics[] = 0;
983 readonly attribute optional int64u currentHeapFree = 1;
984 readonly attribute optional int64u currentHeapUsed = 2;
985 readonly attribute optional int64u currentHeapHighWatermark = 3;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500986 readonly attribute command_id generatedCommandList[] = 65528;
987 readonly attribute command_id acceptedCommandList[] = 65529;
988 readonly attribute event_id eventList[] = 65530;
989 readonly attribute attrib_id attributeList[] = 65531;
Erwin Pan684c6de2022-09-20 21:39:56 +0800990 readonly attribute bitmap32 featureMap = 65532;
991 readonly attribute int16u clusterRevision = 65533;
992
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500993 /** Reception of this command SHALL reset the values: The StackFreeMinimum field of the ThreadMetrics attribute, CurrentHeapHighWaterMark attribute. */
Andrei Litvin89671e82023-10-29 21:27:57 -0400994 command access(invoke: manage) ResetWatermarks(): DefaultSuccess = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +0800995}
996
Andrei Litvin21c43e22023-04-04 18:50:26 -0400997/** Commands to trigger a Node to allow a new Administrator to commission it. */
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500998cluster AdministratorCommissioning = 60 {
Andrei Litvin90d60f02023-11-23 16:51:51 -0500999 revision 1; // NOTE: Default/not specifically set
1000
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001001 enum CommissioningWindowStatusEnum : enum8 {
Erwin Pan684c6de2022-09-20 21:39:56 +08001002 kWindowNotOpen = 0;
1003 kEnhancedWindowOpen = 1;
1004 kBasicWindowOpen = 2;
1005 }
1006
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001007 enum StatusCode : enum8 {
Erwin Pan684c6de2022-09-20 21:39:56 +08001008 kBusy = 2;
1009 kPAKEParameterError = 3;
1010 kWindowNotOpen = 4;
1011 }
1012
Andrei Litvin1f9814e2023-10-26 15:35:06 -04001013 bitmap Feature : bitmap32 {
1014 kBasic = 0x1;
1015 }
1016
Boris Zbarsky232b5a12023-01-18 21:35:14 -05001017 readonly attribute CommissioningWindowStatusEnum windowStatus = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001018 readonly attribute nullable fabric_idx adminFabricIndex = 1;
Andrei Litvin1f9814e2023-10-26 15:35:06 -04001019 readonly attribute nullable vendor_id adminVendorId = 2;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -05001020 readonly attribute command_id generatedCommandList[] = 65528;
1021 readonly attribute command_id acceptedCommandList[] = 65529;
1022 readonly attribute event_id eventList[] = 65530;
1023 readonly attribute attrib_id attributeList[] = 65531;
Erwin Pan684c6de2022-09-20 21:39:56 +08001024 readonly attribute bitmap32 featureMap = 65532;
1025 readonly attribute int16u clusterRevision = 65533;
1026
1027 request struct OpenCommissioningWindowRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04001028 int16u commissioningTimeout = 0;
1029 octet_string PAKEPasscodeVerifier = 1;
1030 int16u discriminator = 2;
1031 int32u iterations = 3;
Andrei Litvin1f9814e2023-10-26 15:35:06 -04001032 octet_string<32> salt = 4;
Erwin Pan684c6de2022-09-20 21:39:56 +08001033 }
1034
1035 request struct OpenBasicCommissioningWindowRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04001036 int16u commissioningTimeout = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001037 }
1038
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001039 /** This command is used by a current Administrator to instruct a Node to go into commissioning mode using enhanced commissioning method. */
Erwin Pan684c6de2022-09-20 21:39:56 +08001040 timed command access(invoke: administer) OpenCommissioningWindow(OpenCommissioningWindowRequest): DefaultSuccess = 0;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001041 /** This command is used by a current Administrator to instruct a Node to go into commissioning mode using basic commissioning method, if the node supports it. */
Erwin Pan684c6de2022-09-20 21:39:56 +08001042 timed command access(invoke: administer) OpenBasicCommissioningWindow(OpenBasicCommissioningWindowRequest): DefaultSuccess = 1;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001043 /** This command is used by a current Administrator to instruct a Node to revoke any active Open Commissioning Window or Open Basic Commissioning Window command. */
Erwin Pan684c6de2022-09-20 21:39:56 +08001044 timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2;
1045}
1046
Andrei Litvin21c43e22023-04-04 18:50:26 -04001047/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001048cluster OperationalCredentials = 62 {
Andrei Litvin90d60f02023-11-23 16:51:51 -05001049 revision 1; // NOTE: Default/not specifically set
1050
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001051 enum CertificateChainTypeEnum : enum8 {
Boris Zbarskycccce012023-01-18 11:27:01 -05001052 kDACCertificate = 1;
1053 kPAICertificate = 2;
1054 }
1055
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001056 enum NodeOperationalCertStatusEnum : enum8 {
Andrei Litvin413a9002023-06-28 13:02:18 -04001057 kOK = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001058 kInvalidPublicKey = 1;
1059 kInvalidNodeOpId = 2;
1060 kInvalidNOC = 3;
1061 kMissingCsr = 4;
1062 kTableFull = 5;
1063 kInvalidAdminSubject = 6;
1064 kFabricConflict = 9;
1065 kLabelConflict = 10;
1066 kInvalidFabricIndex = 11;
1067 }
1068
Boris Zbarskycccce012023-01-18 11:27:01 -05001069 fabric_scoped struct FabricDescriptorStruct {
Erwin Pan684c6de2022-09-20 21:39:56 +08001070 octet_string<65> rootPublicKey = 1;
Boris Zbarskycccce012023-01-18 11:27:01 -05001071 vendor_id vendorID = 2;
1072 fabric_id fabricID = 3;
1073 node_id nodeID = 4;
Erwin Pan684c6de2022-09-20 21:39:56 +08001074 char_string<32> label = 5;
1075 fabric_idx fabricIndex = 254;
1076 }
1077
Bharat Rajuf25702c2023-04-12 11:14:12 -04001078 fabric_scoped struct NOCStruct {
1079 fabric_sensitive octet_string noc = 1;
1080 nullable fabric_sensitive octet_string icac = 2;
1081 fabric_idx fabricIndex = 254;
1082 }
1083
Erwin Pan684c6de2022-09-20 21:39:56 +08001084 readonly attribute access(read: administer) NOCStruct NOCs[] = 0;
Boris Zbarskycccce012023-01-18 11:27:01 -05001085 readonly attribute FabricDescriptorStruct fabrics[] = 1;
Erwin Pan684c6de2022-09-20 21:39:56 +08001086 readonly attribute int8u supportedFabrics = 2;
1087 readonly attribute int8u commissionedFabrics = 3;
Andrei Litvin47836d22023-10-12 18:08:11 -04001088 readonly attribute octet_string trustedRootCertificates[] = 4;
Erwin Pan684c6de2022-09-20 21:39:56 +08001089 readonly attribute int8u currentFabricIndex = 5;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -05001090 readonly attribute command_id generatedCommandList[] = 65528;
1091 readonly attribute command_id acceptedCommandList[] = 65529;
1092 readonly attribute event_id eventList[] = 65530;
1093 readonly attribute attrib_id attributeList[] = 65531;
Erwin Pan684c6de2022-09-20 21:39:56 +08001094 readonly attribute bitmap32 featureMap = 65532;
1095 readonly attribute int16u clusterRevision = 65533;
1096
1097 request struct AttestationRequestRequest {
Andrei Litvin0da67af2023-10-27 17:28:25 -04001098 octet_string<32> attestationNonce = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001099 }
1100
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001101 response struct AttestationResponse = 1 {
1102 octet_string<900> attestationElements = 0;
1103 octet_string<64> attestationSignature = 1;
1104 }
1105
Erwin Pan684c6de2022-09-20 21:39:56 +08001106 request struct CertificateChainRequestRequest {
Boris Zbarskycccce012023-01-18 11:27:01 -05001107 CertificateChainTypeEnum certificateType = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001108 }
1109
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001110 response struct CertificateChainResponse = 3 {
1111 octet_string<600> certificate = 0;
1112 }
1113
Erwin Pan684c6de2022-09-20 21:39:56 +08001114 request struct CSRRequestRequest {
Andrei Litvin0da67af2023-10-27 17:28:25 -04001115 octet_string<32> CSRNonce = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001116 optional boolean isForUpdateNOC = 1;
1117 }
1118
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001119 response struct CSRResponse = 5 {
1120 octet_string NOCSRElements = 0;
1121 octet_string attestationSignature = 1;
1122 }
1123
Erwin Pan684c6de2022-09-20 21:39:56 +08001124 request struct AddNOCRequest {
Andrei Litvin0da67af2023-10-27 17:28:25 -04001125 octet_string<400> NOCValue = 0;
1126 optional octet_string<400> ICACValue = 1;
1127 octet_string<16> IPKValue = 2;
Andrei Litvin47836d22023-10-12 18:08:11 -04001128 int64u caseAdminSubject = 3;
1129 vendor_id adminVendorId = 4;
Erwin Pan684c6de2022-09-20 21:39:56 +08001130 }
1131
1132 request struct UpdateNOCRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04001133 octet_string NOCValue = 0;
1134 optional octet_string ICACValue = 1;
Erwin Pan684c6de2022-09-20 21:39:56 +08001135 }
1136
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001137 response struct NOCResponse = 8 {
1138 NodeOperationalCertStatusEnum statusCode = 0;
1139 optional fabric_idx fabricIndex = 1;
1140 optional char_string<128> debugText = 2;
1141 }
1142
Erwin Pan684c6de2022-09-20 21:39:56 +08001143 request struct UpdateFabricLabelRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04001144 char_string<32> label = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001145 }
1146
1147 request struct RemoveFabricRequest {
1148 fabric_idx fabricIndex = 0;
1149 }
1150
1151 request struct AddTrustedRootCertificateRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04001152 octet_string rootCACertificate = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001153 }
1154
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001155 /** Sender is requesting attestation information from the receiver. */
Erwin Pan684c6de2022-09-20 21:39:56 +08001156 command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001157 /** Sender is requesting a device attestation certificate from the receiver. */
Erwin Pan684c6de2022-09-20 21:39:56 +08001158 command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001159 /** Sender is requesting a certificate signing request (CSR) from the receiver. */
Erwin Pan684c6de2022-09-20 21:39:56 +08001160 command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001161 /** Sender is requesting to add the new node operational certificates. */
Erwin Pan684c6de2022-09-20 21:39:56 +08001162 command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001163 /** Sender is requesting to update the node operational certificates. */
Erwin Pan684c6de2022-09-20 21:39:56 +08001164 fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001165 /** This command SHALL be used by an Administrative Node to set the user-visible Label field for a given Fabric, as reflected by entries in the Fabrics attribute. */
Erwin Pan684c6de2022-09-20 21:39:56 +08001166 fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001167 /** This command is used by Administrative Nodes to remove a given fabric index and delete all associated fabric-scoped data. */
Erwin Pan684c6de2022-09-20 21:39:56 +08001168 command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001169 /** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
Erwin Pan684c6de2022-09-20 21:39:56 +08001170 command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
1171}
1172
Andrei Litvin21c43e22023-04-04 18:50:26 -04001173/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001174cluster GroupKeyManagement = 63 {
Andrei Litvin90d60f02023-11-23 16:51:51 -05001175 revision 1; // NOTE: Default/not specifically set
1176
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001177 enum GroupKeySecurityPolicyEnum : enum8 {
Erwin Pan684c6de2022-09-20 21:39:56 +08001178 kTrustFirst = 0;
1179 kCacheAndSync = 1;
1180 }
1181
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001182 bitmap Feature : bitmap32 {
Tennessee Carmel-Veilleuxf71a48f2023-07-31 15:58:40 -04001183 kCacheAndSync = 0x1;
1184 }
1185
Andrei Litvind38820d2022-10-04 09:25:26 -04001186 fabric_scoped struct GroupInfoMapStruct {
Erwin Pan684c6de2022-09-20 21:39:56 +08001187 group_id groupId = 1;
1188 endpoint_no endpoints[] = 2;
1189 optional char_string<16> groupName = 3;
1190 fabric_idx fabricIndex = 254;
1191 }
1192
Bharat Rajuf25702c2023-04-12 11:14:12 -04001193 fabric_scoped struct GroupKeyMapStruct {
1194 group_id groupId = 1;
1195 int16u groupKeySetID = 2;
1196 fabric_idx fabricIndex = 254;
1197 }
1198
Erwin Pan684c6de2022-09-20 21:39:56 +08001199 struct GroupKeySetStruct {
1200 int16u groupKeySetID = 0;
Boris Zbarskyaab0d7c2023-02-21 14:46:25 -05001201 GroupKeySecurityPolicyEnum groupKeySecurityPolicy = 1;
Erwin Pan684c6de2022-09-20 21:39:56 +08001202 nullable octet_string<16> epochKey0 = 2;
1203 nullable epoch_us epochStartTime0 = 3;
1204 nullable octet_string<16> epochKey1 = 4;
1205 nullable epoch_us epochStartTime1 = 5;
1206 nullable octet_string<16> epochKey2 = 6;
1207 nullable epoch_us epochStartTime2 = 7;
1208 }
1209
1210 attribute access(write: manage) GroupKeyMapStruct groupKeyMap[] = 0;
1211 readonly attribute GroupInfoMapStruct groupTable[] = 1;
1212 readonly attribute int16u maxGroupsPerFabric = 2;
1213 readonly attribute int16u maxGroupKeysPerFabric = 3;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -05001214 readonly attribute command_id generatedCommandList[] = 65528;
1215 readonly attribute command_id acceptedCommandList[] = 65529;
1216 readonly attribute event_id eventList[] = 65530;
1217 readonly attribute attrib_id attributeList[] = 65531;
Erwin Pan684c6de2022-09-20 21:39:56 +08001218 readonly attribute bitmap32 featureMap = 65532;
1219 readonly attribute int16u clusterRevision = 65533;
1220
1221 request struct KeySetWriteRequest {
1222 GroupKeySetStruct groupKeySet = 0;
1223 }
1224
1225 request struct KeySetReadRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04001226 int16u groupKeySetID = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001227 }
1228
Erwin Pan684c6de2022-09-20 21:39:56 +08001229 response struct KeySetReadResponse = 2 {
1230 GroupKeySetStruct groupKeySet = 0;
1231 }
1232
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001233 request struct KeySetRemoveRequest {
1234 int16u groupKeySetID = 0;
1235 }
1236
Erwin Pan684c6de2022-09-20 21:39:56 +08001237 response struct KeySetReadAllIndicesResponse = 5 {
Andrei Litvin47836d22023-10-12 18:08:11 -04001238 int16u groupKeySetIDs[] = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001239 }
1240
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001241 /** Write a new set of keys for the given key set id. */
Erwin Pan684c6de2022-09-20 21:39:56 +08001242 fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001243 /** Read the keys for a given key set id. */
Erwin Pan684c6de2022-09-20 21:39:56 +08001244 fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001245 /** Revoke a Root Key from a Group */
Erwin Pan684c6de2022-09-20 21:39:56 +08001246 fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001247 /** Return the list of Group Key Sets associated with the accessing fabric */
Boris Zbarsky3d447872023-06-06 10:15:31 -04001248 fabric command access(invoke: administer) KeySetReadAllIndices(): KeySetReadAllIndicesResponse = 4;
Erwin Pan684c6de2022-09-20 21:39:56 +08001249}
1250
Andrei Litvin21c43e22023-04-04 18:50:26 -04001251/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only
1252labels. */
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001253cluster FixedLabel = 64 {
Andrei Litvin90d60f02023-11-23 16:51:51 -05001254 revision 1; // NOTE: Default/not specifically set
1255
Douglas Rocha Ferrazc08b7652022-11-03 09:56:12 -04001256 struct LabelStruct {
1257 char_string<16> label = 0;
1258 char_string<16> value = 1;
1259 }
Erwin Pan684c6de2022-09-20 21:39:56 +08001260
Douglas Rocha Ferrazc08b7652022-11-03 09:56:12 -04001261 readonly attribute LabelStruct labelList[] = 0;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -05001262 readonly attribute command_id generatedCommandList[] = 65528;
1263 readonly attribute command_id acceptedCommandList[] = 65529;
1264 readonly attribute event_id eventList[] = 65530;
1265 readonly attribute attrib_id attributeList[] = 65531;
Erwin Pan684c6de2022-09-20 21:39:56 +08001266 readonly attribute bitmap32 featureMap = 65532;
1267 readonly attribute int16u clusterRevision = 65533;
1268}
1269
Andrei Litvin21c43e22023-04-04 18:50:26 -04001270/** An interface for controlling a fan in a heating/cooling system. */
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001271provisional cluster FanControl = 514 {
Andrei Litvin90d60f02023-11-23 16:51:51 -05001272 revision 4;
1273
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001274 enum AirflowDirectionEnum : enum8 {
Matt Hazleyc79af242023-05-30 13:51:49 +01001275 kForward = 0;
1276 kReverse = 1;
1277 }
1278
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001279 enum FanModeEnum : enum8 {
Matt Hazley0db9abf2023-06-28 18:19:34 +01001280 kOff = 0;
1281 kLow = 1;
1282 kMedium = 2;
1283 kHigh = 3;
1284 kOn = 4;
1285 kAuto = 5;
1286 kSmart = 6;
Matt Hazleyc79af242023-05-30 13:51:49 +01001287 }
1288
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001289 enum FanModeSequenceEnum : enum8 {
Erwin Pan684c6de2022-09-20 21:39:56 +08001290 kOffLowMedHigh = 0;
1291 kOffLowHigh = 1;
1292 kOffLowMedHighAuto = 2;
1293 kOffLowHighAuto = 3;
Andrei Litvin5c4a9c82023-11-07 11:25:30 -05001294 kOffHighAuto = 4;
1295 kOffHigh = 5;
Erwin Pan684c6de2022-09-20 21:39:56 +08001296 }
1297
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001298 enum StepDirectionEnum : enum8 {
Matt Hazley0db9abf2023-06-28 18:19:34 +01001299 kIncrease = 0;
1300 kDecrease = 1;
Erwin Pan684c6de2022-09-20 21:39:56 +08001301 }
1302
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001303 bitmap Feature : bitmap32 {
Erwin Pan684c6de2022-09-20 21:39:56 +08001304 kMultiSpeed = 0x1;
1305 kAuto = 0x2;
1306 kRocking = 0x4;
1307 kWind = 0x8;
Matt Hazleyc79af242023-05-30 13:51:49 +01001308 kStep = 0x10;
1309 kAirflowDirection = 0x20;
Erwin Pan684c6de2022-09-20 21:39:56 +08001310 }
1311
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001312 bitmap RockBitmap : bitmap8 {
Erwin Pan684c6de2022-09-20 21:39:56 +08001313 kRockLeftRight = 0x1;
1314 kRockUpDown = 0x2;
1315 kRockRound = 0x4;
1316 }
1317
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001318 bitmap WindBitmap : bitmap8 {
Erwin Pan684c6de2022-09-20 21:39:56 +08001319 kSleepWind = 0x1;
1320 kNaturalWind = 0x2;
1321 }
1322
Matt Hazley0db9abf2023-06-28 18:19:34 +01001323 attribute FanModeEnum fanMode = 0;
Andrei Litvin5c4a9c82023-11-07 11:25:30 -05001324 readonly attribute FanModeSequenceEnum fanModeSequence = 1;
Andrei Litvin47836d22023-10-12 18:08:11 -04001325 attribute nullable percent percentSetting = 2;
1326 readonly attribute percent percentCurrent = 3;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001327 readonly attribute optional int8u speedMax = 4;
1328 attribute optional nullable int8u speedSetting = 5;
1329 readonly attribute optional int8u speedCurrent = 6;
1330 readonly attribute optional RockBitmap rockSupport = 7;
1331 attribute optional RockBitmap rockSetting = 8;
1332 readonly attribute optional WindBitmap windSupport = 9;
1333 attribute optional WindBitmap windSetting = 10;
1334 attribute optional AirflowDirectionEnum airflowDirection = 11;
Erwin Pan684c6de2022-09-20 21:39:56 +08001335 readonly attribute command_id generatedCommandList[] = 65528;
1336 readonly attribute command_id acceptedCommandList[] = 65529;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -05001337 readonly attribute event_id eventList[] = 65530;
Erwin Pan684c6de2022-09-20 21:39:56 +08001338 readonly attribute attrib_id attributeList[] = 65531;
1339 readonly attribute bitmap32 featureMap = 65532;
1340 readonly attribute int16u clusterRevision = 65533;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001341
1342 request struct StepRequest {
1343 StepDirectionEnum direction = 0;
1344 optional boolean wrap = 1;
1345 optional boolean lowestOff = 2;
1346 }
1347
1348 /** The Step command speeds up or slows down the fan, in steps. */
1349 command Step(StepRequest): DefaultSuccess = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001350}
1351
1352endpoint 0 {
Andrei Litvin83634942023-08-05 00:50:32 -04001353 device type ma_rootdevice = 22, version 1;
1354
Erwin Pan684c6de2022-09-20 21:39:56 +08001355 binding cluster OtaSoftwareUpdateProvider;
1356
Erwin Pan684c6de2022-09-20 21:39:56 +08001357 server cluster Descriptor {
1358 callback attribute deviceTypeList;
1359 callback attribute serverList;
1360 callback attribute clientList;
1361 callback attribute partsList;
Andrei Litvin6d359752023-04-05 15:58:59 -04001362 ram attribute featureMap default = 0;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05001363 callback attribute clusterRevision;
Erwin Pan684c6de2022-09-20 21:39:56 +08001364 }
1365
1366 server cluster AccessControl {
Evgeny Margolisdb4c5c92023-02-21 13:50:29 -08001367 emits event AccessControlEntryChanged;
1368 emits event AccessControlExtensionChanged;
Erwin Pan684c6de2022-09-20 21:39:56 +08001369 callback attribute acl;
1370 callback attribute extension;
1371 callback attribute subjectsPerAccessControlEntry;
1372 callback attribute targetsPerAccessControlEntry;
1373 callback attribute accessControlEntriesPerFabric;
1374 callback attribute attributeList;
Andrei Litvin6d359752023-04-05 15:58:59 -04001375 ram attribute featureMap default = 0;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05001376 callback attribute clusterRevision;
Erwin Pan684c6de2022-09-20 21:39:56 +08001377 }
1378
Boris Zbarsky04c20f62022-12-18 10:09:13 -05001379 server cluster BasicInformation {
Evgeny Margolisdb4c5c92023-02-21 13:50:29 -08001380 emits event StartUp;
1381 emits event ShutDown;
1382 emits event Leave;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05001383 callback attribute dataModelRevision;
Erwin Pan684c6de2022-09-20 21:39:56 +08001384 callback attribute vendorName;
1385 callback attribute vendorID;
1386 callback attribute productName;
1387 callback attribute productID;
1388 persist attribute nodeLabel;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05001389 callback attribute location;
1390 callback attribute hardwareVersion;
Erwin Pan684c6de2022-09-20 21:39:56 +08001391 callback attribute hardwareVersionString;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05001392 callback attribute softwareVersion;
Erwin Pan684c6de2022-09-20 21:39:56 +08001393 callback attribute softwareVersionString;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05001394 callback attribute manufacturingDate;
Erwin Pan684c6de2022-09-20 21:39:56 +08001395 callback attribute partNumber;
1396 callback attribute productURL;
1397 callback attribute productLabel;
1398 callback attribute serialNumber;
Andrei Litvin6d359752023-04-05 15:58:59 -04001399 persist attribute localConfigDisabled default = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001400 callback attribute uniqueID;
1401 callback attribute capabilityMinima;
Terence Hampson9969d442023-11-16 11:30:48 -05001402 callback attribute specificationVersion;
1403 callback attribute maxPathsPerInvoke;
Andrei Litvin6d359752023-04-05 15:58:59 -04001404 ram attribute featureMap default = 0;
Terence Hampson9969d442023-11-16 11:30:48 -05001405 ram attribute clusterRevision default = 3;
Erwin Pan684c6de2022-09-20 21:39:56 +08001406 }
1407
1408 server cluster OtaSoftwareUpdateRequestor {
Evgeny Margolisdb4c5c92023-02-21 13:50:29 -08001409 emits event StateTransition;
1410 emits event VersionApplied;
1411 emits event DownloadError;
Boris Zbarsky458bbbf2023-01-03 13:11:18 -05001412 callback attribute defaultOTAProviders;
Erwin Pan684c6de2022-09-20 21:39:56 +08001413 ram attribute updatePossible default = 1;
Andrei Litvin6d359752023-04-05 15:58:59 -04001414 ram attribute updateState default = 0;
1415 ram attribute updateStateProgress default = 0;
1416 ram attribute featureMap default = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001417 ram attribute clusterRevision default = 1;
Andrei Litvin49fff5b2023-10-11 18:25:37 -04001418
1419 handle command AnnounceOTAProvider;
Erwin Pan684c6de2022-09-20 21:39:56 +08001420 }
1421
1422 server cluster LocalizationConfiguration {
1423 ram attribute activeLocale;
1424 callback attribute supportedLocales;
1425 callback attribute attributeList;
Andrei Litvin6d359752023-04-05 15:58:59 -04001426 ram attribute featureMap default = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001427 ram attribute clusterRevision default = 1;
1428 }
1429
1430 server cluster TimeFormatLocalization {
Andrei Litvin6d359752023-04-05 15:58:59 -04001431 persist attribute hourFormat default = 0;
1432 persist attribute activeCalendarType default = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001433 callback attribute supportedCalendarTypes;
Andrei Litvin6d359752023-04-05 15:58:59 -04001434 ram attribute featureMap default = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001435 ram attribute clusterRevision default = 1;
1436 }
1437
1438 server cluster GeneralCommissioning {
Andrei Litvin6d359752023-04-05 15:58:59 -04001439 ram attribute breadcrumb default = 0x0000000000000000;
Erwin Pan684c6de2022-09-20 21:39:56 +08001440 callback attribute basicCommissioningInfo;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05001441 callback attribute regulatoryConfig;
1442 callback attribute locationCapability;
1443 callback attribute supportsConcurrentConnection;
Andrei Litvin6d359752023-04-05 15:58:59 -04001444 ram attribute featureMap default = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001445 ram attribute clusterRevision default = 0x0001;
Andrei Litvin49fff5b2023-10-11 18:25:37 -04001446
1447 handle command ArmFailSafe;
1448 handle command ArmFailSafeResponse;
1449 handle command SetRegulatoryConfig;
1450 handle command SetRegulatoryConfigResponse;
1451 handle command CommissioningComplete;
1452 handle command CommissioningCompleteResponse;
Erwin Pan684c6de2022-09-20 21:39:56 +08001453 }
1454
1455 server cluster NetworkCommissioning {
1456 ram attribute maxNetworks;
1457 callback attribute networks;
1458 ram attribute scanMaxTimeSeconds;
1459 ram attribute connectMaxTimeSeconds;
1460 ram attribute interfaceEnabled;
1461 ram attribute lastNetworkingStatus;
1462 ram attribute lastNetworkID;
1463 ram attribute lastConnectErrorValue;
1464 ram attribute featureMap default = 1;
1465 ram attribute clusterRevision default = 0x0001;
Andrei Litvin49fff5b2023-10-11 18:25:37 -04001466
1467 handle command ScanNetworks;
1468 handle command ScanNetworksResponse;
1469 handle command AddOrUpdateWiFiNetwork;
1470 handle command AddOrUpdateThreadNetwork;
1471 handle command RemoveNetwork;
1472 handle command NetworkConfigResponse;
1473 handle command ConnectNetwork;
1474 handle command ConnectNetworkResponse;
1475 handle command ReorderNetwork;
Erwin Pan684c6de2022-09-20 21:39:56 +08001476 }
1477
1478 server cluster DiagnosticLogs {
Andrei Litvin6d359752023-04-05 15:58:59 -04001479 ram attribute featureMap default = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001480 ram attribute clusterRevision default = 1;
Andrei Litvin49fff5b2023-10-11 18:25:37 -04001481
1482 handle command RetrieveLogsRequest;
Erwin Pan684c6de2022-09-20 21:39:56 +08001483 }
1484
1485 server cluster GeneralDiagnostics {
Evgeny Margolisdb4c5c92023-02-21 13:50:29 -08001486 emits event BootReason;
Erwin Pan684c6de2022-09-20 21:39:56 +08001487 callback attribute networkInterfaces;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05001488 callback attribute rebootCount;
1489 callback attribute upTime;
1490 callback attribute totalOperationalHours;
Boris Zbarskydd6ae932023-01-09 12:08:17 -05001491 callback attribute bootReason;
Erwin Pan684c6de2022-09-20 21:39:56 +08001492 callback attribute activeHardwareFaults;
1493 callback attribute activeRadioFaults;
1494 callback attribute activeNetworkFaults;
Andrei Litvin6d359752023-04-05 15:58:59 -04001495 callback attribute testEventTriggersEnabled default = false;
1496 ram attribute featureMap default = 0;
Tennessee Carmel-Veilleuxd165f622023-10-31 10:50:04 -04001497 ram attribute clusterRevision default = 0x0002;
Andrei Litvin49fff5b2023-10-11 18:25:37 -04001498
1499 handle command TestEventTrigger;
Tennessee Carmel-Veilleuxd165f622023-10-31 10:50:04 -04001500 handle command TimeSnapshot;
1501 handle command TimeSnapshotResponse;
Erwin Pan684c6de2022-09-20 21:39:56 +08001502 }
1503
1504 server cluster SoftwareDiagnostics {
1505 callback attribute threadMetrics;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05001506 callback attribute currentHeapFree;
1507 callback attribute currentHeapUsed;
1508 callback attribute currentHeapHighWatermark;
1509 callback attribute featureMap;
Erwin Pan684c6de2022-09-20 21:39:56 +08001510 ram attribute clusterRevision default = 0x0001;
Andrei Litvin49fff5b2023-10-11 18:25:37 -04001511
1512 handle command ResetWatermarks;
Erwin Pan684c6de2022-09-20 21:39:56 +08001513 }
1514
Erwin Pan684c6de2022-09-20 21:39:56 +08001515 server cluster AdministratorCommissioning {
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05001516 callback attribute windowStatus;
1517 callback attribute adminFabricIndex;
1518 callback attribute adminVendorId;
Andrei Litvin6d359752023-04-05 15:58:59 -04001519 ram attribute featureMap default = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001520 ram attribute clusterRevision default = 0x0001;
Andrei Litvin49fff5b2023-10-11 18:25:37 -04001521
1522 handle command OpenCommissioningWindow;
1523 handle command OpenBasicCommissioningWindow;
1524 handle command RevokeCommissioning;
Erwin Pan684c6de2022-09-20 21:39:56 +08001525 }
1526
1527 server cluster OperationalCredentials {
1528 callback attribute NOCs;
1529 callback attribute fabrics;
1530 callback attribute supportedFabrics;
1531 callback attribute commissionedFabrics;
1532 callback attribute trustedRootCertificates;
1533 callback attribute currentFabricIndex;
Andrei Litvin6d359752023-04-05 15:58:59 -04001534 ram attribute featureMap default = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001535 ram attribute clusterRevision default = 0x0001;
Andrei Litvin49fff5b2023-10-11 18:25:37 -04001536
1537 handle command AttestationRequest;
1538 handle command AttestationResponse;
1539 handle command CertificateChainRequest;
1540 handle command CertificateChainResponse;
1541 handle command CSRRequest;
1542 handle command CSRResponse;
1543 handle command AddNOC;
1544 handle command UpdateNOC;
1545 handle command NOCResponse;
1546 handle command UpdateFabricLabel;
1547 handle command RemoveFabric;
1548 handle command AddTrustedRootCertificate;
Erwin Pan684c6de2022-09-20 21:39:56 +08001549 }
1550
1551 server cluster GroupKeyManagement {
1552 callback attribute groupKeyMap;
1553 callback attribute groupTable;
1554 callback attribute maxGroupsPerFabric;
1555 callback attribute maxGroupKeysPerFabric;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05001556 callback attribute featureMap;
1557 callback attribute clusterRevision;
Andrei Litvin49fff5b2023-10-11 18:25:37 -04001558
1559 handle command KeySetWrite;
1560 handle command KeySetRead;
1561 handle command KeySetReadResponse;
1562 handle command KeySetRemove;
1563 handle command KeySetReadAllIndices;
1564 handle command KeySetReadAllIndicesResponse;
Erwin Pan684c6de2022-09-20 21:39:56 +08001565 }
1566
1567 server cluster FixedLabel {
1568 callback attribute labelList;
Andrei Litvin6d359752023-04-05 15:58:59 -04001569 ram attribute featureMap default = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001570 ram attribute clusterRevision default = 1;
1571 }
Erwin Pan684c6de2022-09-20 21:39:56 +08001572}
1573endpoint 1 {
Andrei Litvin83634942023-08-05 00:50:32 -04001574 device type ma_fan = 43, version 1;
1575
Erwin Pan684c6de2022-09-20 21:39:56 +08001576
1577 server cluster Identify {
Andrei Litvin6d359752023-04-05 15:58:59 -04001578 ram attribute identifyTime default = 0x0;
1579 ram attribute identifyType default = 0x0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001580 callback attribute generatedCommandList;
1581 callback attribute acceptedCommandList;
1582 callback attribute attributeList;
Andrei Litvin6d359752023-04-05 15:58:59 -04001583 ram attribute featureMap default = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001584 ram attribute clusterRevision default = 4;
Andrei Litvin49fff5b2023-10-11 18:25:37 -04001585
1586 handle command Identify;
1587 handle command TriggerEffect;
Erwin Pan684c6de2022-09-20 21:39:56 +08001588 }
1589
1590 server cluster Groups {
1591 ram attribute nameSupport;
1592 callback attribute generatedCommandList;
1593 callback attribute acceptedCommandList;
1594 callback attribute attributeList;
Andrei Litvin6d359752023-04-05 15:58:59 -04001595 ram attribute featureMap default = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001596 ram attribute clusterRevision default = 3;
Andrei Litvin49fff5b2023-10-11 18:25:37 -04001597
1598 handle command AddGroup;
1599 handle command AddGroupResponse;
1600 handle command ViewGroup;
1601 handle command ViewGroupResponse;
1602 handle command GetGroupMembership;
1603 handle command GetGroupMembershipResponse;
1604 handle command RemoveGroup;
1605 handle command RemoveGroupResponse;
1606 handle command RemoveAllGroups;
1607 handle command AddGroupIfIdentifying;
Erwin Pan684c6de2022-09-20 21:39:56 +08001608 }
1609
1610 server cluster Descriptor {
1611 callback attribute deviceTypeList;
1612 callback attribute serverList;
1613 callback attribute clientList;
1614 callback attribute partsList;
1615 callback attribute generatedCommandList;
1616 callback attribute acceptedCommandList;
1617 callback attribute attributeList;
Andrei Litvin6d359752023-04-05 15:58:59 -04001618 ram attribute featureMap default = 0;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05001619 callback attribute clusterRevision;
Erwin Pan684c6de2022-09-20 21:39:56 +08001620 }
1621
1622 server cluster FanControl {
Andrei Litvin6d359752023-04-05 15:58:59 -04001623 ram attribute fanMode default = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001624 ram attribute fanModeSequence default = 2;
Andrei Litvin6d359752023-04-05 15:58:59 -04001625 ram attribute percentSetting default = 0;
1626 ram attribute percentCurrent default = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001627 ram attribute speedMax default = 1;
Andrei Litvin6d359752023-04-05 15:58:59 -04001628 ram attribute speedSetting default = 0;
1629 ram attribute speedCurrent default = 0;
1630 ram attribute rockSupport default = 0x00;
1631 ram attribute rockSetting default = 0x00;
1632 ram attribute windSupport default = 0x00;
1633 ram attribute windSetting default = 0x00;
Erwin Pan684c6de2022-09-20 21:39:56 +08001634 callback attribute generatedCommandList;
1635 callback attribute acceptedCommandList;
1636 callback attribute attributeList;
Andrei Litvin6d359752023-04-05 15:58:59 -04001637 ram attribute featureMap default = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001638 ram attribute clusterRevision default = 1;
1639 }
1640}
1641
1642