blob: 8114f21312532e70c07df144ec709c496cc1435a [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
Williamcd898c42023-06-05 17:34:20 +01004struct ModeTagStruct {
5 optional vendor_id mfgCode = 0;
6 enum16 value = 1;
Williamcd898c42023-06-05 17:34:20 +01007}
8
9struct ModeOptionStruct {
10 char_string<64> label = 0;
11 int8u mode = 1;
12 ModeTagStruct modeTags[] = 2;
13}
14
Bharat Rajuf25702c2023-04-12 11:14:12 -040015struct ApplicationStruct {
16 int16u catalogVendorID = 0;
17 char_string applicationID = 1;
18}
19
Petru Lauric82438f52023-06-15 11:16:49 -040020struct ErrorStateStruct {
21 enum8 errorStateID = 0;
22 optional char_string<64> errorStateLabel = 1;
23 optional char_string<64> errorStateDetails = 2;
24}
25
Bharat Rajuf25702c2023-04-12 11:14:12 -040026struct LabelStruct {
27 char_string<16> label = 0;
28 char_string<16> value = 1;
29}
30
Petru Lauric82438f52023-06-15 11:16:49 -040031struct OperationalStateStruct {
32 enum8 operationalStateID = 0;
33 optional char_string<64> operationalStateLabel = 1;
34}
35
Andrei Litvin21c43e22023-04-04 18:50:26 -040036/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */
Erwin Pan684c6de2022-09-20 21:39:56 +080037server cluster Identify = 3 {
fesseha-evee6637462023-05-26 18:34:09 +020038 enum EffectIdentifierEnum : ENUM8 {
Erwin Pan684c6de2022-09-20 21:39:56 +080039 kBlink = 0;
40 kBreathe = 1;
41 kOkay = 2;
42 kChannelChange = 11;
43 kFinishEffect = 254;
44 kStopEffect = 255;
45 }
46
fesseha-evee6637462023-05-26 18:34:09 +020047 enum EffectVariantEnum : ENUM8 {
Erwin Pan684c6de2022-09-20 21:39:56 +080048 kDefault = 0;
49 }
50
fesseha-evee6637462023-05-26 18:34:09 +020051 enum IdentifyTypeEnum : ENUM8 {
Erwin Pan684c6de2022-09-20 21:39:56 +080052 kNone = 0;
fesseha-evee6637462023-05-26 18:34:09 +020053 kLightOutput = 1;
54 kVisibleIndicator = 2;
Erwin Pan684c6de2022-09-20 21:39:56 +080055 kAudibleBeep = 3;
56 kDisplay = 4;
57 kActuator = 5;
58 }
59
60 attribute int16u identifyTime = 0;
fesseha-evee6637462023-05-26 18:34:09 +020061 readonly attribute IdentifyTypeEnum identifyType = 1;
Erwin Pan684c6de2022-09-20 21:39:56 +080062 readonly attribute command_id generatedCommandList[] = 65528;
63 readonly attribute command_id acceptedCommandList[] = 65529;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -050064 readonly attribute event_id eventList[] = 65530;
Erwin Pan684c6de2022-09-20 21:39:56 +080065 readonly attribute attrib_id attributeList[] = 65531;
66 readonly attribute bitmap32 featureMap = 65532;
67 readonly attribute int16u clusterRevision = 65533;
68
69 request struct IdentifyRequest {
70 INT16U identifyTime = 0;
71 }
72
73 request struct TriggerEffectRequest {
fesseha-evee6637462023-05-26 18:34:09 +020074 EffectIdentifierEnum effectIdentifier = 0;
75 EffectVariantEnum effectVariant = 1;
Erwin Pan684c6de2022-09-20 21:39:56 +080076 }
77
78 command access(invoke: manage) Identify(IdentifyRequest): DefaultSuccess = 0;
79 command access(invoke: manage) TriggerEffect(TriggerEffectRequest): DefaultSuccess = 64;
80}
81
Andrei Litvin21c43e22023-04-04 18:50:26 -040082/** Attributes and commands for group configuration and manipulation. */
Erwin Pan684c6de2022-09-20 21:39:56 +080083server cluster Groups = 4 {
Boris Zbarsky243ee4b2023-05-19 10:39:11 -040084 bitmap Feature : BITMAP32 {
Erwin Pan684c6de2022-09-20 21:39:56 +080085 kGroupNames = 0x1;
86 }
87
Boris Zbarskycb1955f2023-05-25 14:01:41 -040088 bitmap NameSupportBitmap : BITMAP8 {
89 kGroupNames = 0x80;
90 }
91
92 readonly attribute NameSupportBitmap nameSupport = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +080093 readonly attribute command_id generatedCommandList[] = 65528;
94 readonly attribute command_id acceptedCommandList[] = 65529;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -050095 readonly attribute event_id eventList[] = 65530;
Erwin Pan684c6de2022-09-20 21:39:56 +080096 readonly attribute attrib_id attributeList[] = 65531;
97 readonly attribute bitmap32 featureMap = 65532;
98 readonly attribute int16u clusterRevision = 65533;
99
100 request struct AddGroupRequest {
Boris Zbarskya83ce322023-01-03 11:38:33 -0500101 group_id groupID = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +0800102 CHAR_STRING groupName = 1;
103 }
104
105 request struct ViewGroupRequest {
Boris Zbarskya83ce322023-01-03 11:38:33 -0500106 group_id groupID = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +0800107 }
108
109 request struct GetGroupMembershipRequest {
110 group_id groupList[] = 0;
111 }
112
113 request struct RemoveGroupRequest {
Boris Zbarskya83ce322023-01-03 11:38:33 -0500114 group_id groupID = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +0800115 }
116
117 request struct AddGroupIfIdentifyingRequest {
Boris Zbarskya83ce322023-01-03 11:38:33 -0500118 group_id groupID = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +0800119 CHAR_STRING groupName = 1;
120 }
121
122 response struct AddGroupResponse = 0 {
123 ENUM8 status = 0;
Boris Zbarskya83ce322023-01-03 11:38:33 -0500124 group_id groupID = 1;
Erwin Pan684c6de2022-09-20 21:39:56 +0800125 }
126
127 response struct ViewGroupResponse = 1 {
128 ENUM8 status = 0;
Boris Zbarskya83ce322023-01-03 11:38:33 -0500129 group_id groupID = 1;
Erwin Pan684c6de2022-09-20 21:39:56 +0800130 CHAR_STRING groupName = 2;
131 }
132
133 response struct GetGroupMembershipResponse = 2 {
134 nullable INT8U capacity = 0;
135 group_id groupList[] = 1;
136 }
137
138 response struct RemoveGroupResponse = 3 {
139 ENUM8 status = 0;
Boris Zbarskya83ce322023-01-03 11:38:33 -0500140 group_id groupID = 1;
Erwin Pan684c6de2022-09-20 21:39:56 +0800141 }
142
143 fabric command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0;
144 fabric command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1;
145 fabric command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2;
146 fabric command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3;
147 fabric command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4;
148 fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5;
149}
150
Andrei Litvin21c43e22023-04-04 18:50:26 -0400151/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */
Erwin Pan684c6de2022-09-20 21:39:56 +0800152server cluster Descriptor = 29 {
153 struct DeviceTypeStruct {
Boris Zbarsky7195bd82023-01-03 17:34:16 -0500154 devtype_id deviceType = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +0800155 int16u revision = 1;
156 }
157
158 readonly attribute DeviceTypeStruct deviceTypeList[] = 0;
159 readonly attribute CLUSTER_ID serverList[] = 1;
160 readonly attribute CLUSTER_ID clientList[] = 2;
161 readonly attribute ENDPOINT_NO partsList[] = 3;
162 readonly attribute command_id generatedCommandList[] = 65528;
163 readonly attribute command_id acceptedCommandList[] = 65529;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500164 readonly attribute event_id eventList[] = 65530;
Erwin Pan684c6de2022-09-20 21:39:56 +0800165 readonly attribute attrib_id attributeList[] = 65531;
166 readonly attribute bitmap32 featureMap = 65532;
167 readonly attribute int16u clusterRevision = 65533;
168}
169
Andrei Litvin21c43e22023-04-04 18:50:26 -0400170/** The Access Control Cluster exposes a data model view of a
171 Node's Access Control List (ACL), which codifies the rules used to manage
172 and enforce Access Control for the Node's endpoints and their associated
173 cluster instances. */
Erwin Pan684c6de2022-09-20 21:39:56 +0800174server cluster AccessControl = 31 {
Boris Zbarsky28cb6cc2023-01-04 04:46:21 -0500175 enum AccessControlEntryAuthModeEnum : ENUM8 {
Andrei Litvin413a9002023-06-28 13:02:18 -0400176 kPASE = 1;
177 kCASE = 2;
Erwin Pan684c6de2022-09-20 21:39:56 +0800178 kGroup = 3;
179 }
180
Boris Zbarsky28cb6cc2023-01-04 04:46:21 -0500181 enum AccessControlEntryPrivilegeEnum : ENUM8 {
182 kView = 1;
183 kProxyView = 2;
184 kOperate = 3;
185 kManage = 4;
186 kAdminister = 5;
187 }
188
Erwin Pan684c6de2022-09-20 21:39:56 +0800189 enum ChangeTypeEnum : ENUM8 {
190 kChanged = 0;
191 kAdded = 1;
192 kRemoved = 2;
193 }
194
Boris Zbarskyf9731a82023-05-24 15:08:53 -0400195 struct AccessControlTargetStruct {
Bharat Rajuf25702c2023-04-12 11:14:12 -0400196 nullable cluster_id cluster = 0;
197 nullable endpoint_no endpoint = 1;
198 nullable devtype_id deviceType = 2;
199 }
200
Boris Zbarsky28cb6cc2023-01-04 04:46:21 -0500201 fabric_scoped struct AccessControlEntryStruct {
202 fabric_sensitive AccessControlEntryPrivilegeEnum privilege = 1;
203 fabric_sensitive AccessControlEntryAuthModeEnum authMode = 2;
Andrei Litvind38820d2022-10-04 09:25:26 -0400204 nullable fabric_sensitive int64u subjects[] = 3;
Boris Zbarskyf9731a82023-05-24 15:08:53 -0400205 nullable fabric_sensitive AccessControlTargetStruct targets[] = 4;
Erwin Pan684c6de2022-09-20 21:39:56 +0800206 fabric_idx fabricIndex = 254;
207 }
208
Boris Zbarsky28cb6cc2023-01-04 04:46:21 -0500209 fabric_scoped struct AccessControlExtensionStruct {
Andrei Litvind38820d2022-10-04 09:25:26 -0400210 fabric_sensitive octet_string<128> data = 1;
Erwin Pan684c6de2022-09-20 21:39:56 +0800211 fabric_idx fabricIndex = 254;
212 }
213
Andrei Litvind38820d2022-10-04 09:25:26 -0400214 fabric_sensitive info event access(read: administer) AccessControlEntryChanged = 0 {
Erwin Pan684c6de2022-09-20 21:39:56 +0800215 nullable node_id adminNodeID = 1;
216 nullable INT16U adminPasscodeID = 2;
217 ChangeTypeEnum changeType = 3;
Boris Zbarsky28cb6cc2023-01-04 04:46:21 -0500218 nullable AccessControlEntryStruct latestValue = 4;
Erwin Pan684c6de2022-09-20 21:39:56 +0800219 fabric_idx fabricIndex = 254;
220 }
221
Andrei Litvind38820d2022-10-04 09:25:26 -0400222 fabric_sensitive info event access(read: administer) AccessControlExtensionChanged = 1 {
Erwin Pan684c6de2022-09-20 21:39:56 +0800223 nullable node_id adminNodeID = 1;
224 nullable INT16U adminPasscodeID = 2;
225 ChangeTypeEnum changeType = 3;
Boris Zbarsky28cb6cc2023-01-04 04:46:21 -0500226 nullable AccessControlExtensionStruct latestValue = 4;
Erwin Pan684c6de2022-09-20 21:39:56 +0800227 fabric_idx fabricIndex = 254;
228 }
229
Boris Zbarsky28cb6cc2023-01-04 04:46:21 -0500230 attribute access(read: administer, write: administer) AccessControlEntryStruct acl[] = 0;
231 attribute access(read: administer, write: administer) AccessControlExtensionStruct extension[] = 1;
Erwin Pan684c6de2022-09-20 21:39:56 +0800232 readonly attribute int16u subjectsPerAccessControlEntry = 2;
233 readonly attribute int16u targetsPerAccessControlEntry = 3;
234 readonly attribute int16u accessControlEntriesPerFabric = 4;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500235 readonly attribute command_id generatedCommandList[] = 65528;
236 readonly attribute command_id acceptedCommandList[] = 65529;
237 readonly attribute event_id eventList[] = 65530;
Erwin Pan684c6de2022-09-20 21:39:56 +0800238 readonly attribute attrib_id attributeList[] = 65531;
239 readonly attribute bitmap32 featureMap = 65532;
240 readonly attribute int16u clusterRevision = 65533;
241}
242
Andrei Litvin21c43e22023-04-04 18:50:26 -0400243/** This cluster provides attributes and events for determining basic information about Nodes, which supports both
244 Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number,
245 which apply to the whole Node. Also allows setting user device information such as location. */
Boris Zbarsky04c20f62022-12-18 10:09:13 -0500246server cluster BasicInformation = 40 {
Boris Zbarskyab59adc2023-05-02 10:45:44 -0400247 enum ColorEnum : ENUM8 {
248 kBlack = 0;
249 kNavy = 1;
250 kGreen = 2;
251 kTeal = 3;
252 kMaroon = 4;
253 kPurple = 5;
254 kOlive = 6;
255 kGray = 7;
256 kBlue = 8;
257 kLime = 9;
258 kAqua = 10;
259 kRed = 11;
260 kFuchsia = 12;
261 kYellow = 13;
262 kWhite = 14;
263 kNickel = 15;
264 kChrome = 16;
265 kBrass = 17;
266 kCopper = 18;
267 kSilver = 19;
268 kGold = 20;
269 }
270
271 enum ProductFinishEnum : ENUM8 {
272 kOther = 0;
273 kMatte = 1;
274 kSatin = 2;
275 kPolished = 3;
276 kRugged = 4;
277 kFabric = 5;
278 }
279
Erwin Pan684c6de2022-09-20 21:39:56 +0800280 struct CapabilityMinimaStruct {
281 int16u caseSessionsPerFabric = 0;
282 int16u subscriptionsPerFabric = 1;
283 }
284
Boris Zbarskyab59adc2023-05-02 10:45:44 -0400285 struct ProductAppearanceStruct {
286 ProductFinishEnum finish = 0;
287 nullable ColorEnum primaryColor = 1;
288 }
289
Erwin Pan684c6de2022-09-20 21:39:56 +0800290 critical event StartUp = 0 {
291 INT32U softwareVersion = 0;
292 }
293
294 critical event ShutDown = 1 {
295 }
296
297 info event Leave = 2 {
298 fabric_idx fabricIndex = 0;
299 }
300
301 info event ReachableChanged = 3 {
302 boolean reachableNewValue = 0;
303 }
304
305 readonly attribute int16u dataModelRevision = 0;
306 readonly attribute char_string<32> vendorName = 1;
307 readonly attribute vendor_id vendorID = 2;
308 readonly attribute char_string<32> productName = 3;
309 readonly attribute int16u productID = 4;
310 attribute access(write: manage) char_string<32> nodeLabel = 5;
311 attribute access(write: administer) char_string<2> location = 6;
312 readonly attribute int16u hardwareVersion = 7;
313 readonly attribute char_string<64> hardwareVersionString = 8;
314 readonly attribute int32u softwareVersion = 9;
315 readonly attribute char_string<64> softwareVersionString = 10;
316 readonly attribute char_string<16> manufacturingDate = 11;
317 readonly attribute char_string<32> partNumber = 12;
318 readonly attribute long_char_string<256> productURL = 13;
319 readonly attribute char_string<64> productLabel = 14;
320 readonly attribute char_string<32> serialNumber = 15;
321 attribute access(write: manage) boolean localConfigDisabled = 16;
Erwin Pan684c6de2022-09-20 21:39:56 +0800322 readonly attribute char_string<32> uniqueID = 18;
323 readonly attribute CapabilityMinimaStruct capabilityMinima = 19;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500324 readonly attribute command_id generatedCommandList[] = 65528;
325 readonly attribute command_id acceptedCommandList[] = 65529;
326 readonly attribute event_id eventList[] = 65530;
327 readonly attribute attrib_id attributeList[] = 65531;
Erwin Pan684c6de2022-09-20 21:39:56 +0800328 readonly attribute bitmap32 featureMap = 65532;
329 readonly attribute int16u clusterRevision = 65533;
330}
331
Andrei Litvin21c43e22023-04-04 18:50:26 -0400332/** Provides an interface for providing OTA software updates */
Erwin Pan684c6de2022-09-20 21:39:56 +0800333client cluster OtaSoftwareUpdateProvider = 41 {
334 enum OTAApplyUpdateAction : ENUM8 {
335 kProceed = 0;
336 kAwaitNextAction = 1;
337 kDiscontinue = 2;
338 }
339
340 enum OTADownloadProtocol : ENUM8 {
341 kBDXSynchronous = 0;
342 kBDXAsynchronous = 1;
Andrei Litvin413a9002023-06-28 13:02:18 -0400343 kHTTPS = 2;
Erwin Pan684c6de2022-09-20 21:39:56 +0800344 kVendorSpecific = 3;
345 }
346
347 enum OTAQueryStatus : ENUM8 {
348 kUpdateAvailable = 0;
349 kBusy = 1;
350 kNotAvailable = 2;
351 kDownloadProtocolNotSupported = 3;
352 }
353
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500354 readonly attribute command_id generatedCommandList[] = 65528;
355 readonly attribute command_id acceptedCommandList[] = 65529;
356 readonly attribute event_id eventList[] = 65530;
357 readonly attribute attrib_id attributeList[] = 65531;
358 readonly attribute bitmap32 featureMap = 65532;
Erwin Pan684c6de2022-09-20 21:39:56 +0800359 readonly attribute int16u clusterRevision = 65533;
360
361 request struct QueryImageRequest {
Boris Zbarsky458bbbf2023-01-03 13:11:18 -0500362 vendor_id vendorID = 0;
363 INT16U productID = 1;
Erwin Pan684c6de2022-09-20 21:39:56 +0800364 INT32U softwareVersion = 2;
365 OTADownloadProtocol protocolsSupported[] = 3;
366 optional INT16U hardwareVersion = 4;
367 optional CHAR_STRING<2> location = 5;
368 optional BOOLEAN requestorCanConsent = 6;
369 optional OCTET_STRING<512> metadataForProvider = 7;
370 }
371
Erwin Pan684c6de2022-09-20 21:39:56 +0800372 response struct QueryImageResponse = 1 {
373 OTAQueryStatus status = 0;
374 optional INT32U delayedActionTime = 1;
375 optional CHAR_STRING<256> imageURI = 2;
376 optional INT32U softwareVersion = 3;
377 optional CHAR_STRING<64> softwareVersionString = 4;
378 optional OCTET_STRING<32> updateToken = 5;
379 optional BOOLEAN userConsentNeeded = 6;
380 optional OCTET_STRING<512> metadataForRequestor = 7;
381 }
382
Andrei Litvin040c65d2023-03-28 16:23:26 -0400383 request struct ApplyUpdateRequestRequest {
384 OCTET_STRING<32> updateToken = 0;
385 INT32U newVersion = 1;
386 }
387
Erwin Pan684c6de2022-09-20 21:39:56 +0800388 response struct ApplyUpdateResponse = 3 {
389 OTAApplyUpdateAction action = 0;
390 INT32U delayedActionTime = 1;
391 }
392
Andrei Litvin040c65d2023-03-28 16:23:26 -0400393 request struct NotifyUpdateAppliedRequest {
394 OCTET_STRING<32> updateToken = 0;
395 INT32U softwareVersion = 1;
396 }
397
Andrei Litvin21c43e22023-04-04 18:50:26 -0400398 /** Determine availability of a new Software Image */
Erwin Pan684c6de2022-09-20 21:39:56 +0800399 command QueryImage(QueryImageRequest): QueryImageResponse = 0;
Andrei Litvin21c43e22023-04-04 18:50:26 -0400400 /** Determine next action to take for a downloaded Software Image */
Erwin Pan684c6de2022-09-20 21:39:56 +0800401 command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2;
Andrei Litvin21c43e22023-04-04 18:50:26 -0400402 /** Notify OTA Provider that an update was applied */
Erwin Pan684c6de2022-09-20 21:39:56 +0800403 command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4;
404}
405
Andrei Litvin21c43e22023-04-04 18:50:26 -0400406/** Provides an interface for downloading and applying OTA software updates */
Erwin Pan684c6de2022-09-20 21:39:56 +0800407server cluster OtaSoftwareUpdateRequestor = 42 {
408 enum OTAAnnouncementReason : ENUM8 {
409 kSimpleAnnouncement = 0;
410 kUpdateAvailable = 1;
411 kUrgentUpdateAvailable = 2;
412 }
413
414 enum OTAChangeReasonEnum : ENUM8 {
415 kUnknown = 0;
416 kSuccess = 1;
417 kFailure = 2;
418 kTimeOut = 3;
419 kDelayByProvider = 4;
420 }
421
422 enum OTAUpdateStateEnum : ENUM8 {
423 kUnknown = 0;
424 kIdle = 1;
425 kQuerying = 2;
426 kDelayedOnQuery = 3;
427 kDownloading = 4;
428 kApplying = 5;
429 kDelayedOnApply = 6;
430 kRollingBack = 7;
431 kDelayedOnUserConsent = 8;
432 }
433
Andrei Litvind38820d2022-10-04 09:25:26 -0400434 fabric_scoped struct ProviderLocation {
Erwin Pan684c6de2022-09-20 21:39:56 +0800435 node_id providerNodeID = 1;
436 endpoint_no endpoint = 2;
437 fabric_idx fabricIndex = 254;
438 }
439
440 info event StateTransition = 0 {
441 OTAUpdateStateEnum previousState = 0;
442 OTAUpdateStateEnum newState = 1;
443 OTAChangeReasonEnum reason = 2;
444 nullable INT32U targetSoftwareVersion = 3;
445 }
446
447 critical event VersionApplied = 1 {
448 INT32U softwareVersion = 0;
449 INT16U productID = 1;
450 }
451
452 info event DownloadError = 2 {
453 INT32U softwareVersion = 0;
454 INT64U bytesDownloaded = 1;
455 nullable INT8U progressPercent = 2;
456 nullable INT64S platformCode = 3;
457 }
458
Boris Zbarsky458bbbf2023-01-03 13:11:18 -0500459 attribute ProviderLocation defaultOTAProviders[] = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +0800460 readonly attribute boolean updatePossible = 1;
461 readonly attribute OTAUpdateStateEnum updateState = 2;
462 readonly attribute nullable int8u updateStateProgress = 3;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500463 readonly attribute command_id generatedCommandList[] = 65528;
464 readonly attribute command_id acceptedCommandList[] = 65529;
465 readonly attribute event_id eventList[] = 65530;
466 readonly attribute attrib_id attributeList[] = 65531;
Erwin Pan684c6de2022-09-20 21:39:56 +0800467 readonly attribute bitmap32 featureMap = 65532;
468 readonly attribute int16u clusterRevision = 65533;
469
Boris Zbarsky458bbbf2023-01-03 13:11:18 -0500470 request struct AnnounceOTAProviderRequest {
471 node_id providerNodeID = 0;
472 vendor_id vendorID = 1;
Erwin Pan684c6de2022-09-20 21:39:56 +0800473 OTAAnnouncementReason announcementReason = 2;
474 optional OCTET_STRING<512> metadataForNode = 3;
475 endpoint_no endpoint = 4;
476 }
477
Boris Zbarsky458bbbf2023-01-03 13:11:18 -0500478 command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +0800479}
480
Andrei Litvin21c43e22023-04-04 18:50:26 -0400481/** Nodes should be expected to be deployed to any and all regions of the world. These global regions
482 may have differing common languages, units of measurements, and numerical formatting
483 standards. As such, Nodes that visually or audibly convey information need a mechanism by which
484 they can be configured to use a user’s preferred language, units, etc */
Erwin Pan684c6de2022-09-20 21:39:56 +0800485server cluster LocalizationConfiguration = 43 {
486 attribute char_string<35> activeLocale = 0;
487 readonly attribute CHAR_STRING supportedLocales[] = 1;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500488 readonly attribute command_id generatedCommandList[] = 65528;
489 readonly attribute command_id acceptedCommandList[] = 65529;
490 readonly attribute event_id eventList[] = 65530;
Erwin Pan684c6de2022-09-20 21:39:56 +0800491 readonly attribute attrib_id attributeList[] = 65531;
492 readonly attribute bitmap32 featureMap = 65532;
493 readonly attribute int16u clusterRevision = 65533;
494}
495
Andrei Litvin21c43e22023-04-04 18:50:26 -0400496/** Nodes should be expected to be deployed to any and all regions of the world. These global regions
497 may have differing preferences for how dates and times are conveyed. As such, Nodes that visually
498 or audibly convey time information need a mechanism by which they can be configured to use a
499 user’s preferred format. */
Erwin Pan684c6de2022-09-20 21:39:56 +0800500server cluster TimeFormatLocalization = 44 {
Boris Zbarsky6788cdb2023-02-28 17:30:22 -0500501 enum CalendarTypeEnum : ENUM8 {
Erwin Pan684c6de2022-09-20 21:39:56 +0800502 kBuddhist = 0;
503 kChinese = 1;
504 kCoptic = 2;
505 kEthiopian = 3;
506 kGregorian = 4;
507 kHebrew = 5;
508 kIndian = 6;
509 kIslamic = 7;
510 kJapanese = 8;
511 kKorean = 9;
512 kPersian = 10;
513 kTaiwanese = 11;
514 }
515
Boris Zbarsky6788cdb2023-02-28 17:30:22 -0500516 enum HourFormatEnum : ENUM8 {
Erwin Pan684c6de2022-09-20 21:39:56 +0800517 k12hr = 0;
518 k24hr = 1;
519 }
520
Boris Zbarsky6788cdb2023-02-28 17:30:22 -0500521 attribute HourFormatEnum hourFormat = 0;
522 attribute CalendarTypeEnum activeCalendarType = 1;
523 readonly attribute CalendarTypeEnum supportedCalendarTypes[] = 2;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500524 readonly attribute command_id generatedCommandList[] = 65528;
525 readonly attribute command_id acceptedCommandList[] = 65529;
526 readonly attribute event_id eventList[] = 65530;
527 readonly attribute attrib_id attributeList[] = 65531;
Erwin Pan684c6de2022-09-20 21:39:56 +0800528 readonly attribute bitmap32 featureMap = 65532;
529 readonly attribute int16u clusterRevision = 65533;
530}
531
Andrei Litvin21c43e22023-04-04 18:50:26 -0400532/** This cluster is used to manage global aspects of the Commissioning flow. */
Erwin Pan684c6de2022-09-20 21:39:56 +0800533server cluster GeneralCommissioning = 48 {
Boris Zbarsky98768782023-05-23 12:01:23 -0400534 enum CommissioningErrorEnum : ENUM8 {
Andrei Litvin413a9002023-06-28 13:02:18 -0400535 kOK = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +0800536 kValueOutsideRange = 1;
537 kInvalidAuthentication = 2;
538 kNoFailSafe = 3;
539 kBusyWithOtherAdmin = 4;
540 }
541
Boris Zbarsky98768782023-05-23 12:01:23 -0400542 enum RegulatoryLocationTypeEnum : ENUM8 {
Erwin Pan684c6de2022-09-20 21:39:56 +0800543 kIndoor = 0;
544 kOutdoor = 1;
545 kIndoorOutdoor = 2;
546 }
547
548 struct BasicCommissioningInfo {
549 int16u failSafeExpiryLengthSeconds = 0;
550 int16u maxCumulativeFailsafeSeconds = 1;
551 }
552
553 attribute access(write: administer) int64u breadcrumb = 0;
554 readonly attribute BasicCommissioningInfo basicCommissioningInfo = 1;
Boris Zbarsky98768782023-05-23 12:01:23 -0400555 readonly attribute RegulatoryLocationTypeEnum regulatoryConfig = 2;
556 readonly attribute RegulatoryLocationTypeEnum locationCapability = 3;
Erwin Pan684c6de2022-09-20 21:39:56 +0800557 readonly attribute boolean supportsConcurrentConnection = 4;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500558 readonly attribute command_id generatedCommandList[] = 65528;
559 readonly attribute command_id acceptedCommandList[] = 65529;
560 readonly attribute event_id eventList[] = 65530;
561 readonly attribute attrib_id attributeList[] = 65531;
Erwin Pan684c6de2022-09-20 21:39:56 +0800562 readonly attribute bitmap32 featureMap = 65532;
563 readonly attribute int16u clusterRevision = 65533;
564
565 request struct ArmFailSafeRequest {
566 INT16U expiryLengthSeconds = 0;
567 INT64U breadcrumb = 1;
568 }
569
570 request struct SetRegulatoryConfigRequest {
Boris Zbarsky98768782023-05-23 12:01:23 -0400571 RegulatoryLocationTypeEnum newRegulatoryConfig = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +0800572 CHAR_STRING countryCode = 1;
573 INT64U breadcrumb = 2;
574 }
575
576 response struct ArmFailSafeResponse = 1 {
Boris Zbarsky98768782023-05-23 12:01:23 -0400577 CommissioningErrorEnum errorCode = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +0800578 CHAR_STRING debugText = 1;
579 }
580
581 response struct SetRegulatoryConfigResponse = 3 {
Boris Zbarsky98768782023-05-23 12:01:23 -0400582 CommissioningErrorEnum errorCode = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +0800583 CHAR_STRING debugText = 1;
584 }
585
586 response struct CommissioningCompleteResponse = 5 {
Boris Zbarsky98768782023-05-23 12:01:23 -0400587 CommissioningErrorEnum errorCode = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +0800588 CHAR_STRING debugText = 1;
589 }
590
591 command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0;
592 command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2;
593 fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4;
594}
595
Andrei Litvin21c43e22023-04-04 18:50:26 -0400596/** Functionality to configure, enable, disable network credentials and access on a Matter device. */
Erwin Pan684c6de2022-09-20 21:39:56 +0800597server cluster NetworkCommissioning = 49 {
Boris Zbarsky0dc592e2023-06-01 15:25:00 -0400598 enum NetworkCommissioningStatusEnum : ENUM8 {
Erwin Pan684c6de2022-09-20 21:39:56 +0800599 kSuccess = 0;
600 kOutOfRange = 1;
601 kBoundsExceeded = 2;
602 kNetworkIDNotFound = 3;
603 kDuplicateNetworkID = 4;
604 kNetworkNotFound = 5;
605 kRegulatoryError = 6;
606 kAuthFailure = 7;
607 kUnsupportedSecurity = 8;
608 kOtherConnectionFailure = 9;
609 kIPV6Failed = 10;
610 kIPBindFailed = 11;
611 kUnknownError = 12;
612 }
613
Boris Zbarsky0dc592e2023-06-01 15:25:00 -0400614 enum WiFiBandEnum : ENUM8 {
Andrei Litvin413a9002023-06-28 13:02:18 -0400615 k2G4 = 0;
616 k3G65 = 1;
617 k5G = 2;
618 k6G = 3;
619 k60G = 4;
620 k1G = 5;
Erwin Pan684c6de2022-09-20 21:39:56 +0800621 }
622
Boris Zbarsky243ee4b2023-05-19 10:39:11 -0400623 bitmap Feature : BITMAP32 {
Erwin Pan684c6de2022-09-20 21:39:56 +0800624 kWiFiNetworkInterface = 0x1;
625 kThreadNetworkInterface = 0x2;
626 kEthernetNetworkInterface = 0x4;
627 }
628
Boris Zbarsky0dc592e2023-06-01 15:25:00 -0400629 bitmap WiFiSecurityBitmap : BITMAP8 {
Erwin Pan684c6de2022-09-20 21:39:56 +0800630 kUnencrypted = 0x1;
Andrei Litvin413a9002023-06-28 13:02:18 -0400631 kWEP = 0x2;
632 kWPAPersonal = 0x4;
633 kWPA2Personal = 0x8;
634 kWPA3Personal = 0x10;
Erwin Pan684c6de2022-09-20 21:39:56 +0800635 }
636
Boris Zbarsky0dc592e2023-06-01 15:25:00 -0400637 struct NetworkInfoStruct {
Erwin Pan684c6de2022-09-20 21:39:56 +0800638 octet_string<32> networkID = 0;
639 boolean connected = 1;
640 }
641
Boris Zbarsky0dc592e2023-06-01 15:25:00 -0400642 struct ThreadInterfaceScanResultStruct {
Erwin Pan684c6de2022-09-20 21:39:56 +0800643 int16u panId = 0;
644 int64u extendedPanId = 1;
645 char_string<16> networkName = 2;
646 int16u channel = 3;
647 int8u version = 4;
648 octet_string<8> extendedAddress = 5;
649 int8s rssi = 6;
650 int8u lqi = 7;
651 }
652
Boris Zbarsky0dc592e2023-06-01 15:25:00 -0400653 struct WiFiInterfaceScanResultStruct {
654 WiFiSecurityBitmap security = 0;
Bharat Rajuf25702c2023-04-12 11:14:12 -0400655 octet_string<32> ssid = 1;
656 octet_string<6> bssid = 2;
657 int16u channel = 3;
Boris Zbarsky0dc592e2023-06-01 15:25:00 -0400658 WiFiBandEnum wiFiBand = 4;
Bharat Rajuf25702c2023-04-12 11:14:12 -0400659 int8s rssi = 5;
660 }
661
Erwin Pan684c6de2022-09-20 21:39:56 +0800662 readonly attribute access(read: administer) int8u maxNetworks = 0;
Boris Zbarsky0dc592e2023-06-01 15:25:00 -0400663 readonly attribute access(read: administer) NetworkInfoStruct networks[] = 1;
Erwin Pan684c6de2022-09-20 21:39:56 +0800664 readonly attribute int8u scanMaxTimeSeconds = 2;
665 readonly attribute int8u connectMaxTimeSeconds = 3;
666 attribute access(write: administer) boolean interfaceEnabled = 4;
Boris Zbarsky0dc592e2023-06-01 15:25:00 -0400667 readonly attribute access(read: administer) nullable NetworkCommissioningStatusEnum lastNetworkingStatus = 5;
Erwin Pan684c6de2022-09-20 21:39:56 +0800668 readonly attribute access(read: administer) nullable octet_string<32> lastNetworkID = 6;
669 readonly attribute access(read: administer) nullable int32s lastConnectErrorValue = 7;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500670 readonly attribute command_id generatedCommandList[] = 65528;
671 readonly attribute command_id acceptedCommandList[] = 65529;
672 readonly attribute event_id eventList[] = 65530;
673 readonly attribute attrib_id attributeList[] = 65531;
Erwin Pan684c6de2022-09-20 21:39:56 +0800674 readonly attribute bitmap32 featureMap = 65532;
675 readonly attribute int16u clusterRevision = 65533;
676
677 request struct ScanNetworksRequest {
678 optional nullable OCTET_STRING<32> ssid = 0;
679 optional INT64U breadcrumb = 1;
680 }
681
682 request struct AddOrUpdateWiFiNetworkRequest {
683 OCTET_STRING<32> ssid = 0;
684 OCTET_STRING<64> credentials = 1;
685 optional INT64U breadcrumb = 2;
686 }
687
688 request struct AddOrUpdateThreadNetworkRequest {
689 OCTET_STRING<254> operationalDataset = 0;
690 optional INT64U breadcrumb = 1;
691 }
692
693 request struct RemoveNetworkRequest {
694 OCTET_STRING<32> networkID = 0;
695 optional INT64U breadcrumb = 1;
696 }
697
698 request struct ConnectNetworkRequest {
699 OCTET_STRING<32> networkID = 0;
700 optional INT64U breadcrumb = 1;
701 }
702
703 request struct ReorderNetworkRequest {
704 OCTET_STRING<32> networkID = 0;
705 INT8U networkIndex = 1;
706 optional INT64U breadcrumb = 2;
707 }
708
709 response struct ScanNetworksResponse = 1 {
Boris Zbarsky0dc592e2023-06-01 15:25:00 -0400710 NetworkCommissioningStatusEnum networkingStatus = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +0800711 optional CHAR_STRING debugText = 1;
Boris Zbarsky0dc592e2023-06-01 15:25:00 -0400712 optional WiFiInterfaceScanResultStruct wiFiScanResults[] = 2;
713 optional ThreadInterfaceScanResultStruct threadScanResults[] = 3;
Erwin Pan684c6de2022-09-20 21:39:56 +0800714 }
715
716 response struct NetworkConfigResponse = 5 {
Boris Zbarsky0dc592e2023-06-01 15:25:00 -0400717 NetworkCommissioningStatusEnum networkingStatus = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +0800718 optional CHAR_STRING<512> debugText = 1;
719 optional INT8U networkIndex = 2;
720 }
721
722 response struct ConnectNetworkResponse = 7 {
Boris Zbarsky0dc592e2023-06-01 15:25:00 -0400723 NetworkCommissioningStatusEnum networkingStatus = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +0800724 optional CHAR_STRING debugText = 1;
725 nullable INT32S errorValue = 2;
726 }
727
728 command access(invoke: administer) ScanNetworks(ScanNetworksRequest): ScanNetworksResponse = 0;
729 command access(invoke: administer) AddOrUpdateWiFiNetwork(AddOrUpdateWiFiNetworkRequest): NetworkConfigResponse = 2;
730 command access(invoke: administer) AddOrUpdateThreadNetwork(AddOrUpdateThreadNetworkRequest): NetworkConfigResponse = 3;
731 command access(invoke: administer) RemoveNetwork(RemoveNetworkRequest): NetworkConfigResponse = 4;
732 command access(invoke: administer) ConnectNetwork(ConnectNetworkRequest): ConnectNetworkResponse = 6;
733 command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8;
734}
735
Andrei Litvin21c43e22023-04-04 18:50:26 -0400736/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */
Erwin Pan684c6de2022-09-20 21:39:56 +0800737server cluster DiagnosticLogs = 50 {
Boris Zbarsky60200ca2023-02-15 09:38:28 -0500738 enum IntentEnum : ENUM8 {
Erwin Pan684c6de2022-09-20 21:39:56 +0800739 kEndUserSupport = 0;
740 kNetworkDiag = 1;
741 kCrashLogs = 2;
742 }
743
Boris Zbarsky60200ca2023-02-15 09:38:28 -0500744 enum StatusEnum : ENUM8 {
Erwin Pan684c6de2022-09-20 21:39:56 +0800745 kSuccess = 0;
746 kExhausted = 1;
747 kNoLogs = 2;
748 kBusy = 3;
749 kDenied = 4;
750 }
751
Boris Zbarsky60200ca2023-02-15 09:38:28 -0500752 enum TransferProtocolEnum : ENUM8 {
Erwin Pan684c6de2022-09-20 21:39:56 +0800753 kResponsePayload = 0;
Andrei Litvin413a9002023-06-28 13:02:18 -0400754 kBDX = 1;
Erwin Pan684c6de2022-09-20 21:39:56 +0800755 }
756
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500757 readonly attribute command_id generatedCommandList[] = 65528;
758 readonly attribute command_id acceptedCommandList[] = 65529;
759 readonly attribute event_id eventList[] = 65530;
760 readonly attribute attrib_id attributeList[] = 65531;
Erwin Pan684c6de2022-09-20 21:39:56 +0800761 readonly attribute bitmap32 featureMap = 65532;
762 readonly attribute int16u clusterRevision = 65533;
763
764 request struct RetrieveLogsRequestRequest {
Boris Zbarsky60200ca2023-02-15 09:38:28 -0500765 IntentEnum intent = 0;
766 TransferProtocolEnum requestedProtocol = 1;
767 optional CHAR_STRING<32> transferFileDesignator = 2;
Erwin Pan684c6de2022-09-20 21:39:56 +0800768 }
769
770 command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0;
771}
772
Andrei Litvin21c43e22023-04-04 18:50:26 -0400773/** 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. */
Erwin Pan684c6de2022-09-20 21:39:56 +0800774server cluster GeneralDiagnostics = 51 {
Boris Zbarskydd6ae932023-01-09 12:08:17 -0500775 enum BootReasonEnum : ENUM8 {
Erwin Pan684c6de2022-09-20 21:39:56 +0800776 kUnspecified = 0;
777 kPowerOnReboot = 1;
778 kBrownOutReset = 2;
779 kSoftwareWatchdogReset = 3;
780 kHardwareWatchdogReset = 4;
781 kSoftwareUpdateCompleted = 5;
782 kSoftwareReset = 6;
783 }
784
Boris Zbarsky1b226d42023-01-18 23:43:09 -0500785 enum HardwareFaultEnum : ENUM8 {
Erwin Pan684c6de2022-09-20 21:39:56 +0800786 kUnspecified = 0;
787 kRadio = 1;
788 kSensor = 2;
789 kResettableOverTemp = 3;
790 kNonResettableOverTemp = 4;
791 kPowerSource = 5;
792 kVisualDisplayFault = 6;
793 kAudioOutputFault = 7;
794 kUserInterfaceFault = 8;
795 kNonVolatileMemoryError = 9;
796 kTamperDetected = 10;
797 }
798
Boris Zbarsky1b226d42023-01-18 23:43:09 -0500799 enum InterfaceTypeEnum : ENUM8 {
Erwin Pan684c6de2022-09-20 21:39:56 +0800800 kUnspecified = 0;
801 kWiFi = 1;
802 kEthernet = 2;
803 kCellular = 3;
804 kThread = 4;
805 }
806
Boris Zbarsky1b226d42023-01-18 23:43:09 -0500807 enum NetworkFaultEnum : ENUM8 {
Erwin Pan684c6de2022-09-20 21:39:56 +0800808 kUnspecified = 0;
809 kHardwareFailure = 1;
810 kNetworkJammed = 2;
811 kConnectionFailed = 3;
812 }
813
Boris Zbarsky1b226d42023-01-18 23:43:09 -0500814 enum RadioFaultEnum : ENUM8 {
Erwin Pan684c6de2022-09-20 21:39:56 +0800815 kUnspecified = 0;
816 kWiFiFault = 1;
817 kCellularFault = 2;
818 kThreadFault = 3;
819 kNFCFault = 4;
820 kBLEFault = 5;
821 kEthernetFault = 6;
822 }
823
Boris Zbarskydd6ae932023-01-09 12:08:17 -0500824 struct NetworkInterface {
Erwin Pan684c6de2022-09-20 21:39:56 +0800825 char_string<32> name = 0;
826 boolean isOperational = 1;
827 nullable boolean offPremiseServicesReachableIPv4 = 2;
828 nullable boolean offPremiseServicesReachableIPv6 = 3;
829 octet_string<8> hardwareAddress = 4;
830 octet_string IPv4Addresses[] = 5;
831 octet_string IPv6Addresses[] = 6;
Boris Zbarsky1b226d42023-01-18 23:43:09 -0500832 InterfaceTypeEnum type = 7;
Erwin Pan684c6de2022-09-20 21:39:56 +0800833 }
834
835 critical event HardwareFaultChange = 0 {
Boris Zbarsky1b226d42023-01-18 23:43:09 -0500836 HardwareFaultEnum current[] = 0;
837 HardwareFaultEnum previous[] = 1;
Erwin Pan684c6de2022-09-20 21:39:56 +0800838 }
839
840 critical event RadioFaultChange = 1 {
Boris Zbarsky1b226d42023-01-18 23:43:09 -0500841 RadioFaultEnum current[] = 0;
842 RadioFaultEnum previous[] = 1;
Erwin Pan684c6de2022-09-20 21:39:56 +0800843 }
844
845 critical event NetworkFaultChange = 2 {
Boris Zbarsky1b226d42023-01-18 23:43:09 -0500846 NetworkFaultEnum current[] = 0;
847 NetworkFaultEnum previous[] = 1;
Erwin Pan684c6de2022-09-20 21:39:56 +0800848 }
849
850 critical event BootReason = 3 {
Boris Zbarskydd6ae932023-01-09 12:08:17 -0500851 BootReasonEnum bootReason = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +0800852 }
853
Boris Zbarskydd6ae932023-01-09 12:08:17 -0500854 readonly attribute NetworkInterface networkInterfaces[] = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +0800855 readonly attribute int16u rebootCount = 1;
856 readonly attribute int64u upTime = 2;
857 readonly attribute int32u totalOperationalHours = 3;
Boris Zbarskydd6ae932023-01-09 12:08:17 -0500858 readonly attribute BootReasonEnum bootReason = 4;
Boris Zbarsky1b226d42023-01-18 23:43:09 -0500859 readonly attribute HardwareFaultEnum activeHardwareFaults[] = 5;
860 readonly attribute RadioFaultEnum activeRadioFaults[] = 6;
861 readonly attribute NetworkFaultEnum activeNetworkFaults[] = 7;
Erwin Pan684c6de2022-09-20 21:39:56 +0800862 readonly attribute boolean testEventTriggersEnabled = 8;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500863 readonly attribute command_id generatedCommandList[] = 65528;
864 readonly attribute command_id acceptedCommandList[] = 65529;
865 readonly attribute event_id eventList[] = 65530;
866 readonly attribute attrib_id attributeList[] = 65531;
Erwin Pan684c6de2022-09-20 21:39:56 +0800867 readonly attribute bitmap32 featureMap = 65532;
868 readonly attribute int16u clusterRevision = 65533;
869
870 request struct TestEventTriggerRequest {
871 OCTET_STRING<16> enableKey = 0;
872 INT64U eventTrigger = 1;
873 }
874
875 command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0;
876}
877
Andrei Litvin21c43e22023-04-04 18:50:26 -0400878/** 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. */
Erwin Pan684c6de2022-09-20 21:39:56 +0800879server cluster SoftwareDiagnostics = 52 {
Boris Zbarsky243ee4b2023-05-19 10:39:11 -0400880 bitmap Feature : BITMAP32 {
Erwin Pan684c6de2022-09-20 21:39:56 +0800881 kWaterMarks = 0x1;
882 }
883
Boris Zbarskyaf7b3932023-01-06 12:07:58 -0500884 struct ThreadMetricsStruct {
Erwin Pan684c6de2022-09-20 21:39:56 +0800885 int64u id = 0;
886 optional char_string<8> name = 1;
887 optional int32u stackFreeCurrent = 2;
888 optional int32u stackFreeMinimum = 3;
889 optional int32u stackSize = 4;
890 }
891
892 info event SoftwareFault = 0 {
893 INT64U id = 0;
894 optional CHAR_STRING name = 1;
895 optional OCTET_STRING faultRecording = 2;
896 }
897
Boris Zbarskyaf7b3932023-01-06 12:07:58 -0500898 readonly attribute ThreadMetricsStruct threadMetrics[] = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +0800899 readonly attribute int64u currentHeapFree = 1;
900 readonly attribute int64u currentHeapUsed = 2;
901 readonly attribute int64u currentHeapHighWatermark = 3;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500902 readonly attribute command_id generatedCommandList[] = 65528;
903 readonly attribute command_id acceptedCommandList[] = 65529;
904 readonly attribute event_id eventList[] = 65530;
905 readonly attribute attrib_id attributeList[] = 65531;
Erwin Pan684c6de2022-09-20 21:39:56 +0800906 readonly attribute bitmap32 featureMap = 65532;
907 readonly attribute int16u clusterRevision = 65533;
908
909 command ResetWatermarks(): DefaultSuccess = 0;
910}
911
Andrei Litvin21c43e22023-04-04 18:50:26 -0400912/** This cluster exposes interactions with a switch device, for the purpose of using those interactions by other devices.
913Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags.
914Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */
Erwin Pan684c6de2022-09-20 21:39:56 +0800915server cluster Switch = 59 {
Boris Zbarsky243ee4b2023-05-19 10:39:11 -0400916 bitmap Feature : BITMAP32 {
Carter Swedal977cfa42022-09-23 13:31:05 -0500917 kLatchingSwitch = 0x1;
918 kMomentarySwitch = 0x2;
919 kMomentarySwitchRelease = 0x4;
920 kMomentarySwitchLongPress = 0x8;
921 kMomentarySwitchMultiPress = 0x10;
922 }
923
Erwin Pan684c6de2022-09-20 21:39:56 +0800924 info event SwitchLatched = 0 {
925 INT8U newPosition = 0;
926 }
927
928 info event InitialPress = 1 {
929 INT8U newPosition = 0;
930 }
931
932 info event LongPress = 2 {
933 INT8U newPosition = 0;
934 }
935
936 info event ShortRelease = 3 {
937 INT8U previousPosition = 0;
938 }
939
940 info event LongRelease = 4 {
941 INT8U previousPosition = 0;
942 }
943
944 info event MultiPressOngoing = 5 {
945 INT8U newPosition = 0;
946 INT8U currentNumberOfPressesCounted = 1;
947 }
948
949 info event MultiPressComplete = 6 {
Boris Zbarskye5342572022-12-05 12:56:51 -0500950 INT8U previousPosition = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +0800951 INT8U totalNumberOfPressesCounted = 1;
952 }
953
954 readonly attribute int8u numberOfPositions = 0;
955 readonly attribute int8u currentPosition = 1;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500956 readonly attribute command_id generatedCommandList[] = 65528;
957 readonly attribute command_id acceptedCommandList[] = 65529;
958 readonly attribute event_id eventList[] = 65530;
959 readonly attribute attrib_id attributeList[] = 65531;
Erwin Pan684c6de2022-09-20 21:39:56 +0800960 readonly attribute bitmap32 featureMap = 65532;
961 readonly attribute int16u clusterRevision = 65533;
962}
963
Andrei Litvin21c43e22023-04-04 18:50:26 -0400964/** Commands to trigger a Node to allow a new Administrator to commission it. */
Erwin Pan684c6de2022-09-20 21:39:56 +0800965server cluster AdministratorCommissioning = 60 {
Boris Zbarsky232b5a12023-01-18 21:35:14 -0500966 enum CommissioningWindowStatusEnum : ENUM8 {
Erwin Pan684c6de2022-09-20 21:39:56 +0800967 kWindowNotOpen = 0;
968 kEnhancedWindowOpen = 1;
969 kBasicWindowOpen = 2;
970 }
971
972 enum StatusCode : ENUM8 {
973 kBusy = 2;
974 kPAKEParameterError = 3;
975 kWindowNotOpen = 4;
976 }
977
Boris Zbarsky232b5a12023-01-18 21:35:14 -0500978 readonly attribute CommissioningWindowStatusEnum windowStatus = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +0800979 readonly attribute nullable fabric_idx adminFabricIndex = 1;
980 readonly attribute nullable int16u adminVendorId = 2;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500981 readonly attribute command_id generatedCommandList[] = 65528;
982 readonly attribute command_id acceptedCommandList[] = 65529;
983 readonly attribute event_id eventList[] = 65530;
984 readonly attribute attrib_id attributeList[] = 65531;
Erwin Pan684c6de2022-09-20 21:39:56 +0800985 readonly attribute bitmap32 featureMap = 65532;
986 readonly attribute int16u clusterRevision = 65533;
987
988 request struct OpenCommissioningWindowRequest {
989 INT16U commissioningTimeout = 0;
Boris Zbarskyf15228d2023-01-10 11:07:55 -0500990 OCTET_STRING PAKEPasscodeVerifier = 1;
Erwin Pan684c6de2022-09-20 21:39:56 +0800991 INT16U discriminator = 2;
992 INT32U iterations = 3;
993 OCTET_STRING salt = 4;
994 }
995
996 request struct OpenBasicCommissioningWindowRequest {
997 INT16U commissioningTimeout = 0;
998 }
999
1000 timed command access(invoke: administer) OpenCommissioningWindow(OpenCommissioningWindowRequest): DefaultSuccess = 0;
1001 timed command access(invoke: administer) OpenBasicCommissioningWindow(OpenBasicCommissioningWindowRequest): DefaultSuccess = 1;
1002 timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2;
1003}
1004
Andrei Litvin21c43e22023-04-04 18:50:26 -04001005/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */
Erwin Pan684c6de2022-09-20 21:39:56 +08001006server cluster OperationalCredentials = 62 {
Boris Zbarskycccce012023-01-18 11:27:01 -05001007 enum CertificateChainTypeEnum : ENUM8 {
1008 kDACCertificate = 1;
1009 kPAICertificate = 2;
1010 }
1011
1012 enum NodeOperationalCertStatusEnum : ENUM8 {
Andrei Litvin413a9002023-06-28 13:02:18 -04001013 kOK = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001014 kInvalidPublicKey = 1;
1015 kInvalidNodeOpId = 2;
1016 kInvalidNOC = 3;
1017 kMissingCsr = 4;
1018 kTableFull = 5;
1019 kInvalidAdminSubject = 6;
1020 kFabricConflict = 9;
1021 kLabelConflict = 10;
1022 kInvalidFabricIndex = 11;
1023 }
1024
Boris Zbarskycccce012023-01-18 11:27:01 -05001025 fabric_scoped struct FabricDescriptorStruct {
Erwin Pan684c6de2022-09-20 21:39:56 +08001026 octet_string<65> rootPublicKey = 1;
Boris Zbarskycccce012023-01-18 11:27:01 -05001027 vendor_id vendorID = 2;
1028 fabric_id fabricID = 3;
1029 node_id nodeID = 4;
Erwin Pan684c6de2022-09-20 21:39:56 +08001030 char_string<32> label = 5;
1031 fabric_idx fabricIndex = 254;
1032 }
1033
Bharat Rajuf25702c2023-04-12 11:14:12 -04001034 fabric_scoped struct NOCStruct {
1035 fabric_sensitive octet_string noc = 1;
1036 nullable fabric_sensitive octet_string icac = 2;
1037 fabric_idx fabricIndex = 254;
1038 }
1039
Erwin Pan684c6de2022-09-20 21:39:56 +08001040 readonly attribute access(read: administer) NOCStruct NOCs[] = 0;
Boris Zbarskycccce012023-01-18 11:27:01 -05001041 readonly attribute FabricDescriptorStruct fabrics[] = 1;
Erwin Pan684c6de2022-09-20 21:39:56 +08001042 readonly attribute int8u supportedFabrics = 2;
1043 readonly attribute int8u commissionedFabrics = 3;
1044 readonly attribute OCTET_STRING trustedRootCertificates[] = 4;
1045 readonly attribute int8u currentFabricIndex = 5;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -05001046 readonly attribute command_id generatedCommandList[] = 65528;
1047 readonly attribute command_id acceptedCommandList[] = 65529;
1048 readonly attribute event_id eventList[] = 65530;
1049 readonly attribute attrib_id attributeList[] = 65531;
Erwin Pan684c6de2022-09-20 21:39:56 +08001050 readonly attribute bitmap32 featureMap = 65532;
1051 readonly attribute int16u clusterRevision = 65533;
1052
1053 request struct AttestationRequestRequest {
1054 OCTET_STRING attestationNonce = 0;
1055 }
1056
1057 request struct CertificateChainRequestRequest {
Boris Zbarskycccce012023-01-18 11:27:01 -05001058 CertificateChainTypeEnum certificateType = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001059 }
1060
1061 request struct CSRRequestRequest {
1062 OCTET_STRING CSRNonce = 0;
1063 optional boolean isForUpdateNOC = 1;
1064 }
1065
1066 request struct AddNOCRequest {
1067 OCTET_STRING NOCValue = 0;
1068 optional OCTET_STRING ICACValue = 1;
1069 OCTET_STRING IPKValue = 2;
1070 Int64u caseAdminSubject = 3;
1071 VENDOR_ID adminVendorId = 4;
1072 }
1073
1074 request struct UpdateNOCRequest {
1075 OCTET_STRING NOCValue = 0;
1076 optional OCTET_STRING ICACValue = 1;
1077 }
1078
1079 request struct UpdateFabricLabelRequest {
1080 CHAR_STRING<32> label = 0;
1081 }
1082
1083 request struct RemoveFabricRequest {
1084 fabric_idx fabricIndex = 0;
1085 }
1086
1087 request struct AddTrustedRootCertificateRequest {
Boris Zbarskycccce012023-01-18 11:27:01 -05001088 OCTET_STRING rootCACertificate = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001089 }
1090
1091 response struct AttestationResponse = 1 {
1092 OCTET_STRING attestationElements = 0;
Boris Zbarskycccce012023-01-18 11:27:01 -05001093 OCTET_STRING attestationSignature = 1;
Erwin Pan684c6de2022-09-20 21:39:56 +08001094 }
1095
1096 response struct CertificateChainResponse = 3 {
1097 OCTET_STRING certificate = 0;
1098 }
1099
1100 response struct CSRResponse = 5 {
1101 OCTET_STRING NOCSRElements = 0;
1102 OCTET_STRING attestationSignature = 1;
1103 }
1104
1105 response struct NOCResponse = 8 {
Boris Zbarskycccce012023-01-18 11:27:01 -05001106 NodeOperationalCertStatusEnum statusCode = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001107 optional fabric_idx fabricIndex = 1;
1108 optional CHAR_STRING debugText = 2;
1109 }
1110
1111 command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
1112 command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2;
1113 command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4;
1114 command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6;
1115 fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7;
1116 fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9;
1117 command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
1118 command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
1119}
1120
Andrei Litvin21c43e22023-04-04 18:50:26 -04001121/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
Erwin Pan684c6de2022-09-20 21:39:56 +08001122server cluster GroupKeyManagement = 63 {
Boris Zbarskyaab0d7c2023-02-21 14:46:25 -05001123 enum GroupKeySecurityPolicyEnum : ENUM8 {
Erwin Pan684c6de2022-09-20 21:39:56 +08001124 kTrustFirst = 0;
1125 kCacheAndSync = 1;
1126 }
1127
Andrei Litvind38820d2022-10-04 09:25:26 -04001128 fabric_scoped struct GroupInfoMapStruct {
Erwin Pan684c6de2022-09-20 21:39:56 +08001129 group_id groupId = 1;
1130 endpoint_no endpoints[] = 2;
1131 optional char_string<16> groupName = 3;
1132 fabric_idx fabricIndex = 254;
1133 }
1134
Bharat Rajuf25702c2023-04-12 11:14:12 -04001135 fabric_scoped struct GroupKeyMapStruct {
1136 group_id groupId = 1;
1137 int16u groupKeySetID = 2;
1138 fabric_idx fabricIndex = 254;
1139 }
1140
Erwin Pan684c6de2022-09-20 21:39:56 +08001141 struct GroupKeySetStruct {
1142 int16u groupKeySetID = 0;
Boris Zbarskyaab0d7c2023-02-21 14:46:25 -05001143 GroupKeySecurityPolicyEnum groupKeySecurityPolicy = 1;
Erwin Pan684c6de2022-09-20 21:39:56 +08001144 nullable octet_string<16> epochKey0 = 2;
1145 nullable epoch_us epochStartTime0 = 3;
1146 nullable octet_string<16> epochKey1 = 4;
1147 nullable epoch_us epochStartTime1 = 5;
1148 nullable octet_string<16> epochKey2 = 6;
1149 nullable epoch_us epochStartTime2 = 7;
1150 }
1151
1152 attribute access(write: manage) GroupKeyMapStruct groupKeyMap[] = 0;
1153 readonly attribute GroupInfoMapStruct groupTable[] = 1;
1154 readonly attribute int16u maxGroupsPerFabric = 2;
1155 readonly attribute int16u maxGroupKeysPerFabric = 3;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -05001156 readonly attribute command_id generatedCommandList[] = 65528;
1157 readonly attribute command_id acceptedCommandList[] = 65529;
1158 readonly attribute event_id eventList[] = 65530;
1159 readonly attribute attrib_id attributeList[] = 65531;
Erwin Pan684c6de2022-09-20 21:39:56 +08001160 readonly attribute bitmap32 featureMap = 65532;
1161 readonly attribute int16u clusterRevision = 65533;
1162
1163 request struct KeySetWriteRequest {
1164 GroupKeySetStruct groupKeySet = 0;
1165 }
1166
1167 request struct KeySetReadRequest {
1168 INT16U groupKeySetID = 0;
1169 }
1170
1171 request struct KeySetRemoveRequest {
1172 INT16U groupKeySetID = 0;
1173 }
1174
Erwin Pan684c6de2022-09-20 21:39:56 +08001175 response struct KeySetReadResponse = 2 {
1176 GroupKeySetStruct groupKeySet = 0;
1177 }
1178
1179 response struct KeySetReadAllIndicesResponse = 5 {
1180 INT16U groupKeySetIDs[] = 0;
1181 }
1182
1183 fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0;
1184 fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1;
1185 fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3;
Boris Zbarsky3d447872023-06-06 10:15:31 -04001186 fabric command access(invoke: administer) KeySetReadAllIndices(): KeySetReadAllIndicesResponse = 4;
Erwin Pan684c6de2022-09-20 21:39:56 +08001187}
1188
Andrei Litvin21c43e22023-04-04 18:50:26 -04001189/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only
1190labels. */
Erwin Pan684c6de2022-09-20 21:39:56 +08001191server cluster FixedLabel = 64 {
Douglas Rocha Ferrazc08b7652022-11-03 09:56:12 -04001192 struct LabelStruct {
1193 char_string<16> label = 0;
1194 char_string<16> value = 1;
1195 }
Erwin Pan684c6de2022-09-20 21:39:56 +08001196
Douglas Rocha Ferrazc08b7652022-11-03 09:56:12 -04001197 readonly attribute LabelStruct labelList[] = 0;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -05001198 readonly attribute command_id generatedCommandList[] = 65528;
1199 readonly attribute command_id acceptedCommandList[] = 65529;
1200 readonly attribute event_id eventList[] = 65530;
1201 readonly attribute attrib_id attributeList[] = 65531;
Erwin Pan684c6de2022-09-20 21:39:56 +08001202 readonly attribute bitmap32 featureMap = 65532;
1203 readonly attribute int16u clusterRevision = 65533;
1204}
1205
Andrei Litvin21c43e22023-04-04 18:50:26 -04001206/** An interface for controlling a fan in a heating/cooling system. */
Erwin Pan684c6de2022-09-20 21:39:56 +08001207server cluster FanControl = 514 {
Matt Hazleyc79af242023-05-30 13:51:49 +01001208 enum AirflowDirectionEnum : ENUM8 {
1209 kForward = 0;
1210 kReverse = 1;
1211 }
1212
Matt Hazley0db9abf2023-06-28 18:19:34 +01001213 enum FanModeEnum : ENUM8 {
1214 kOff = 0;
1215 kLow = 1;
1216 kMedium = 2;
1217 kHigh = 3;
1218 kOn = 4;
1219 kAuto = 5;
1220 kSmart = 6;
Matt Hazleyc79af242023-05-30 13:51:49 +01001221 }
1222
Matt Hazley0db9abf2023-06-28 18:19:34 +01001223 enum FanModeSequenceEnum : ENUM8 {
Erwin Pan684c6de2022-09-20 21:39:56 +08001224 kOffLowMedHigh = 0;
1225 kOffLowHigh = 1;
1226 kOffLowMedHighAuto = 2;
1227 kOffLowHighAuto = 3;
1228 kOffOnAuto = 4;
1229 kOffOn = 5;
1230 }
1231
Matt Hazley0db9abf2023-06-28 18:19:34 +01001232 enum StepDirectionEnum : ENUM8 {
1233 kIncrease = 0;
1234 kDecrease = 1;
Erwin Pan684c6de2022-09-20 21:39:56 +08001235 }
1236
Boris Zbarsky243ee4b2023-05-19 10:39:11 -04001237 bitmap Feature : BITMAP32 {
Erwin Pan684c6de2022-09-20 21:39:56 +08001238 kMultiSpeed = 0x1;
1239 kAuto = 0x2;
1240 kRocking = 0x4;
1241 kWind = 0x8;
Matt Hazleyc79af242023-05-30 13:51:49 +01001242 kStep = 0x10;
1243 kAirflowDirection = 0x20;
Erwin Pan684c6de2022-09-20 21:39:56 +08001244 }
1245
Matt Hazley0db9abf2023-06-28 18:19:34 +01001246 bitmap RockBitmap : BITMAP8 {
Erwin Pan684c6de2022-09-20 21:39:56 +08001247 kRockLeftRight = 0x1;
1248 kRockUpDown = 0x2;
1249 kRockRound = 0x4;
1250 }
1251
Matt Hazley0db9abf2023-06-28 18:19:34 +01001252 bitmap WindBitmap : BITMAP8 {
Erwin Pan684c6de2022-09-20 21:39:56 +08001253 kSleepWind = 0x1;
1254 kNaturalWind = 0x2;
1255 }
1256
Matt Hazley0db9abf2023-06-28 18:19:34 +01001257 attribute FanModeEnum fanMode = 0;
1258 attribute FanModeSequenceEnum fanModeSequence = 1;
1259 attribute nullable Percent percentSetting = 2;
1260 readonly attribute Percent percentCurrent = 3;
Erwin Pan684c6de2022-09-20 21:39:56 +08001261 readonly attribute int8u speedMax = 4;
1262 attribute nullable int8u speedSetting = 5;
1263 readonly attribute int8u speedCurrent = 6;
Matt Hazley0db9abf2023-06-28 18:19:34 +01001264 readonly attribute RockBitmap rockSupport = 7;
1265 attribute RockBitmap rockSetting = 8;
1266 readonly attribute WindBitmap windSupport = 9;
1267 attribute WindBitmap windSetting = 10;
Erwin Pan684c6de2022-09-20 21:39:56 +08001268 readonly attribute command_id generatedCommandList[] = 65528;
1269 readonly attribute command_id acceptedCommandList[] = 65529;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -05001270 readonly attribute event_id eventList[] = 65530;
Erwin Pan684c6de2022-09-20 21:39:56 +08001271 readonly attribute attrib_id attributeList[] = 65531;
1272 readonly attribute bitmap32 featureMap = 65532;
1273 readonly attribute int16u clusterRevision = 65533;
1274}
1275
1276endpoint 0 {
Andrei Litvin0ddcf2c2022-12-09 13:23:36 -05001277 device type rootdevice = 22, version 1;
Erwin Pan684c6de2022-09-20 21:39:56 +08001278 binding cluster OtaSoftwareUpdateProvider;
1279
1280 server cluster Groups {
1281 ram attribute nameSupport;
Andrei Litvin6d359752023-04-05 15:58:59 -04001282 ram attribute featureMap default = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001283 ram attribute clusterRevision default = 3;
1284 }
1285
1286 server cluster Descriptor {
1287 callback attribute deviceTypeList;
1288 callback attribute serverList;
1289 callback attribute clientList;
1290 callback attribute partsList;
Andrei Litvin6d359752023-04-05 15:58:59 -04001291 ram attribute featureMap default = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001292 callback attribute clusterRevision default = 1;
1293 }
1294
1295 server cluster AccessControl {
Evgeny Margolisdb4c5c92023-02-21 13:50:29 -08001296 emits event AccessControlEntryChanged;
1297 emits event AccessControlExtensionChanged;
Erwin Pan684c6de2022-09-20 21:39:56 +08001298 callback attribute acl;
1299 callback attribute extension;
1300 callback attribute subjectsPerAccessControlEntry;
1301 callback attribute targetsPerAccessControlEntry;
1302 callback attribute accessControlEntriesPerFabric;
1303 callback attribute attributeList;
Andrei Litvin6d359752023-04-05 15:58:59 -04001304 ram attribute featureMap default = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001305 ram attribute clusterRevision default = 1;
1306 }
1307
Boris Zbarsky04c20f62022-12-18 10:09:13 -05001308 server cluster BasicInformation {
Evgeny Margolisdb4c5c92023-02-21 13:50:29 -08001309 emits event StartUp;
1310 emits event ShutDown;
1311 emits event Leave;
Erwin Pan684c6de2022-09-20 21:39:56 +08001312 callback attribute dataModelRevision default = 10;
1313 callback attribute vendorName;
1314 callback attribute vendorID;
1315 callback attribute productName;
1316 callback attribute productID;
1317 persist attribute nodeLabel;
1318 callback attribute location default = "XX";
Andrei Litvin6d359752023-04-05 15:58:59 -04001319 callback attribute hardwareVersion default = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001320 callback attribute hardwareVersionString;
Andrei Litvin6d359752023-04-05 15:58:59 -04001321 callback attribute softwareVersion default = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001322 callback attribute softwareVersionString;
1323 callback attribute manufacturingDate default = "20210614123456ZZ";
1324 callback attribute partNumber;
1325 callback attribute productURL;
1326 callback attribute productLabel;
1327 callback attribute serialNumber;
Andrei Litvin6d359752023-04-05 15:58:59 -04001328 persist attribute localConfigDisabled default = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001329 callback attribute uniqueID;
1330 callback attribute capabilityMinima;
Andrei Litvin6d359752023-04-05 15:58:59 -04001331 ram attribute featureMap default = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001332 ram attribute clusterRevision default = 1;
1333 }
1334
1335 server cluster OtaSoftwareUpdateRequestor {
Evgeny Margolisdb4c5c92023-02-21 13:50:29 -08001336 emits event StateTransition;
1337 emits event VersionApplied;
1338 emits event DownloadError;
Boris Zbarsky458bbbf2023-01-03 13:11:18 -05001339 callback attribute defaultOTAProviders;
Erwin Pan684c6de2022-09-20 21:39:56 +08001340 ram attribute updatePossible default = 1;
Andrei Litvin6d359752023-04-05 15:58:59 -04001341 ram attribute updateState default = 0;
1342 ram attribute updateStateProgress default = 0;
1343 ram attribute featureMap default = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001344 ram attribute clusterRevision default = 1;
1345 }
1346
1347 server cluster LocalizationConfiguration {
1348 ram attribute activeLocale;
1349 callback attribute supportedLocales;
1350 callback attribute attributeList;
Andrei Litvin6d359752023-04-05 15:58:59 -04001351 ram attribute featureMap default = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001352 ram attribute clusterRevision default = 1;
1353 }
1354
1355 server cluster TimeFormatLocalization {
Andrei Litvin6d359752023-04-05 15:58:59 -04001356 persist attribute hourFormat default = 0;
1357 persist attribute activeCalendarType default = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001358 callback attribute supportedCalendarTypes;
Andrei Litvin6d359752023-04-05 15:58:59 -04001359 ram attribute featureMap default = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001360 ram attribute clusterRevision default = 1;
1361 }
1362
1363 server cluster GeneralCommissioning {
Andrei Litvin6d359752023-04-05 15:58:59 -04001364 ram attribute breadcrumb default = 0x0000000000000000;
Erwin Pan684c6de2022-09-20 21:39:56 +08001365 callback attribute basicCommissioningInfo;
Andrei Litvin6d359752023-04-05 15:58:59 -04001366 callback attribute regulatoryConfig default = 0;
1367 callback attribute locationCapability default = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001368 callback attribute supportsConcurrentConnection default = 1;
Andrei Litvin6d359752023-04-05 15:58:59 -04001369 ram attribute featureMap default = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001370 ram attribute clusterRevision default = 0x0001;
1371 }
1372
1373 server cluster NetworkCommissioning {
1374 ram attribute maxNetworks;
1375 callback attribute networks;
1376 ram attribute scanMaxTimeSeconds;
1377 ram attribute connectMaxTimeSeconds;
1378 ram attribute interfaceEnabled;
1379 ram attribute lastNetworkingStatus;
1380 ram attribute lastNetworkID;
1381 ram attribute lastConnectErrorValue;
1382 ram attribute featureMap default = 1;
1383 ram attribute clusterRevision default = 0x0001;
1384 }
1385
1386 server cluster DiagnosticLogs {
Andrei Litvin6d359752023-04-05 15:58:59 -04001387 ram attribute featureMap default = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001388 ram attribute clusterRevision default = 1;
1389 }
1390
1391 server cluster GeneralDiagnostics {
Evgeny Margolisdb4c5c92023-02-21 13:50:29 -08001392 emits event BootReason;
Erwin Pan684c6de2022-09-20 21:39:56 +08001393 callback attribute networkInterfaces;
Andrei Litvin6d359752023-04-05 15:58:59 -04001394 callback attribute rebootCount default = 0x0000;
1395 callback attribute upTime default = 0x0000000000000000;
1396 callback attribute totalOperationalHours default = 0x00000000;
Boris Zbarskydd6ae932023-01-09 12:08:17 -05001397 callback attribute bootReason;
Erwin Pan684c6de2022-09-20 21:39:56 +08001398 callback attribute activeHardwareFaults;
1399 callback attribute activeRadioFaults;
1400 callback attribute activeNetworkFaults;
Andrei Litvin6d359752023-04-05 15:58:59 -04001401 callback attribute testEventTriggersEnabled default = false;
1402 ram attribute featureMap default = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001403 ram attribute clusterRevision default = 0x0001;
1404 }
1405
1406 server cluster SoftwareDiagnostics {
1407 callback attribute threadMetrics;
Andrei Litvin6d359752023-04-05 15:58:59 -04001408 callback attribute currentHeapFree default = 0x0000000000000000;
1409 callback attribute currentHeapUsed default = 0x0000000000000000;
1410 callback attribute currentHeapHighWatermark default = 0x0000000000000000;
Erwin Pan684c6de2022-09-20 21:39:56 +08001411 ram attribute featureMap default = 1;
1412 ram attribute clusterRevision default = 0x0001;
1413 }
1414
Erwin Pan684c6de2022-09-20 21:39:56 +08001415 server cluster Switch {
1416 ram attribute numberOfPositions default = 2;
1417 ram attribute currentPosition;
Andrei Litvin6d359752023-04-05 15:58:59 -04001418 ram attribute featureMap default = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001419 ram attribute clusterRevision default = 1;
1420 }
1421
1422 server cluster AdministratorCommissioning {
Andrei Litvin6d359752023-04-05 15:58:59 -04001423 callback attribute windowStatus default = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001424 callback attribute adminFabricIndex default = 1;
Andrei Litvin6d359752023-04-05 15:58:59 -04001425 callback attribute adminVendorId default = 0;
1426 ram attribute featureMap default = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001427 ram attribute clusterRevision default = 0x0001;
1428 }
1429
1430 server cluster OperationalCredentials {
1431 callback attribute NOCs;
1432 callback attribute fabrics;
1433 callback attribute supportedFabrics;
1434 callback attribute commissionedFabrics;
1435 callback attribute trustedRootCertificates;
1436 callback attribute currentFabricIndex;
Andrei Litvin6d359752023-04-05 15:58:59 -04001437 ram attribute featureMap default = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001438 ram attribute clusterRevision default = 0x0001;
1439 }
1440
1441 server cluster GroupKeyManagement {
1442 callback attribute groupKeyMap;
1443 callback attribute groupTable;
1444 callback attribute maxGroupsPerFabric;
1445 callback attribute maxGroupKeysPerFabric;
Andrei Litvin6d359752023-04-05 15:58:59 -04001446 ram attribute featureMap default = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001447 ram attribute clusterRevision default = 1;
1448 }
1449
1450 server cluster FixedLabel {
1451 callback attribute labelList;
Andrei Litvin6d359752023-04-05 15:58:59 -04001452 ram attribute featureMap default = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001453 ram attribute clusterRevision default = 1;
1454 }
Erwin Pan684c6de2022-09-20 21:39:56 +08001455}
1456endpoint 1 {
Andrei Litvin0ddcf2c2022-12-09 13:23:36 -05001457 device type anonymousEndpointType = 43, version 1;
Erwin Pan684c6de2022-09-20 21:39:56 +08001458
1459 server cluster Identify {
Andrei Litvin6d359752023-04-05 15:58:59 -04001460 ram attribute identifyTime default = 0x0;
1461 ram attribute identifyType default = 0x0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001462 callback attribute generatedCommandList;
1463 callback attribute acceptedCommandList;
1464 callback attribute attributeList;
Andrei Litvin6d359752023-04-05 15:58:59 -04001465 ram attribute featureMap default = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001466 ram attribute clusterRevision default = 4;
1467 }
1468
1469 server cluster Groups {
1470 ram attribute nameSupport;
1471 callback attribute generatedCommandList;
1472 callback attribute acceptedCommandList;
1473 callback attribute attributeList;
Andrei Litvin6d359752023-04-05 15:58:59 -04001474 ram attribute featureMap default = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001475 ram attribute clusterRevision default = 3;
1476 }
1477
1478 server cluster Descriptor {
1479 callback attribute deviceTypeList;
1480 callback attribute serverList;
1481 callback attribute clientList;
1482 callback attribute partsList;
1483 callback attribute generatedCommandList;
1484 callback attribute acceptedCommandList;
1485 callback attribute attributeList;
Andrei Litvin6d359752023-04-05 15:58:59 -04001486 ram attribute featureMap default = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001487 ram attribute clusterRevision default = 1;
1488 }
1489
1490 server cluster FanControl {
Andrei Litvin6d359752023-04-05 15:58:59 -04001491 ram attribute fanMode default = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001492 ram attribute fanModeSequence default = 2;
Andrei Litvin6d359752023-04-05 15:58:59 -04001493 ram attribute percentSetting default = 0;
1494 ram attribute percentCurrent default = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001495 ram attribute speedMax default = 1;
Andrei Litvin6d359752023-04-05 15:58:59 -04001496 ram attribute speedSetting default = 0;
1497 ram attribute speedCurrent default = 0;
1498 ram attribute rockSupport default = 0x00;
1499 ram attribute rockSetting default = 0x00;
1500 ram attribute windSupport default = 0x00;
1501 ram attribute windSetting default = 0x00;
Erwin Pan684c6de2022-09-20 21:39:56 +08001502 callback attribute generatedCommandList;
1503 callback attribute acceptedCommandList;
1504 callback attribute attributeList;
Andrei Litvin6d359752023-04-05 15:58:59 -04001505 ram attribute featureMap default = 0;
Erwin Pan684c6de2022-09-20 21:39:56 +08001506 ram attribute clusterRevision default = 1;
1507 }
1508}
1509
1510