blob: da3227a62464ce2bfcbe917ddd05ff3f1531aa6b [file] [log] [blame]
Andrei Litvin6e3c1092022-01-14 15:30:21 -05001// 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 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -04009 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 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -040018 kDefault = 0;
19 }
20
Andrei Litvin4f65f6c2023-10-18 11:57:33 -040021 enum IdentifyTypeEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -040022 kNone = 0;
fesseha-evee6637462023-05-26 18:34:09 +020023 kLightOutput = 1;
24 kVisibleIndicator = 2;
Boris Zbarskybc9bee22022-06-21 09:38:46 -040025 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;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -050032 readonly attribute command_id generatedCommandList[] = 65528;
33 readonly attribute command_id acceptedCommandList[] = 65529;
34 readonly attribute event_id eventList[] = 65530;
35 readonly attribute attrib_id attributeList[] = 65531;
Boris Zbarskybc9bee22022-06-21 09:38:46 -040036 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;
Boris Zbarskybc9bee22022-06-21 09:38:46 -040041 }
42
C Freeman8ff23312023-08-16 18:50:41 -040043 request struct TriggerEffectRequest {
44 EffectIdentifierEnum effectIdentifier = 0;
45 EffectVariantEnum effectVariant = 1;
46 }
47
Andrei Litvinf94a44e2023-11-28 11:15:13 -050048 /** Command description for Identify */
Boris Zbarskybc9bee22022-06-21 09:38:46 -040049 command access(invoke: manage) Identify(IdentifyRequest): DefaultSuccess = 0;
Andrei Litvinf94a44e2023-11-28 11:15:13 -050050 /** Command description for TriggerEffect */
C Freeman8ff23312023-08-16 18:50:41 -040051 command access(invoke: manage) TriggerEffect(TriggerEffectRequest): DefaultSuccess = 64;
Boris Zbarskybc9bee22022-06-21 09:38:46 -040052}
53
Andrei Litvin21c43e22023-04-04 18:50:26 -040054/** 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 -050055cluster Descriptor = 29 {
Andrei Litvin90d60f02023-11-23 16:51:51 -050056 revision 2;
57
Andrei Litvin4f65f6c2023-10-18 11:57:33 -040058 bitmap Feature : bitmap32 {
Boris Zbarskybf0b45a2023-08-11 08:04:15 -040059 kTagList = 0x1;
60 }
61
Boris Zbarskye4c075f2022-09-12 08:23:17 -040062 struct DeviceTypeStruct {
Boris Zbarsky7195bd82023-01-03 17:34:16 -050063 devtype_id deviceType = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -040064 int16u revision = 1;
65 }
66
abeck-whirlpoola1c11262023-07-21 00:22:56 -050067 struct SemanticTagStruct {
68 nullable vendor_id mfgCode = 0;
69 enum8 namespaceID = 1;
70 enum8 tag = 2;
71 optional nullable char_string label = 3;
72 }
73
Boris Zbarskye4c075f2022-09-12 08:23:17 -040074 readonly attribute DeviceTypeStruct deviceTypeList[] = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -040075 readonly attribute cluster_id serverList[] = 1;
76 readonly attribute cluster_id clientList[] = 2;
77 readonly attribute endpoint_no partsList[] = 3;
Andrei Litvinf94a44e2023-11-28 11:15:13 -050078 readonly attribute optional SemanticTagStruct tagList[] = 4;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -050079 readonly attribute command_id generatedCommandList[] = 65528;
80 readonly attribute command_id acceptedCommandList[] = 65529;
81 readonly attribute event_id eventList[] = 65530;
82 readonly attribute attrib_id attributeList[] = 65531;
Boris Zbarskybc9bee22022-06-21 09:38:46 -040083 readonly attribute bitmap32 featureMap = 65532;
84 readonly attribute int16u clusterRevision = 65533;
85}
86
Andrei Litvin21c43e22023-04-04 18:50:26 -040087/** The Access Control Cluster exposes a data model view of a
88 Node's Access Control List (ACL), which codifies the rules used to manage
89 and enforce Access Control for the Node's endpoints and their associated
90 cluster instances. */
Andrei Litvinf94a44e2023-11-28 11:15:13 -050091cluster AccessControl = 31 {
Andrei Litvin90d60f02023-11-23 16:51:51 -050092 revision 1; // NOTE: Default/not specifically set
93
Andrei Litvin4f65f6c2023-10-18 11:57:33 -040094 enum AccessControlEntryAuthModeEnum : enum8 {
Andrei Litvin413a9002023-06-28 13:02:18 -040095 kPASE = 1;
96 kCASE = 2;
Harsha Rajendrand02ff672022-02-03 09:26:36 -050097 kGroup = 3;
98 }
99
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400100 enum AccessControlEntryPrivilegeEnum : enum8 {
Boris Zbarsky28cb6cc2023-01-04 04:46:21 -0500101 kView = 1;
102 kProxyView = 2;
103 kOperate = 3;
104 kManage = 4;
105 kAdminister = 5;
106 }
107
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400108 enum ChangeTypeEnum : enum8 {
Harsha Rajendrand02ff672022-02-03 09:26:36 -0500109 kChanged = 0;
110 kAdded = 1;
111 kRemoved = 2;
112 }
113
Boris Zbarskyf9731a82023-05-24 15:08:53 -0400114 struct AccessControlTargetStruct {
Bharat Rajuf25702c2023-04-12 11:14:12 -0400115 nullable cluster_id cluster = 0;
116 nullable endpoint_no endpoint = 1;
117 nullable devtype_id deviceType = 2;
118 }
119
Boris Zbarsky28cb6cc2023-01-04 04:46:21 -0500120 fabric_scoped struct AccessControlEntryStruct {
121 fabric_sensitive AccessControlEntryPrivilegeEnum privilege = 1;
122 fabric_sensitive AccessControlEntryAuthModeEnum authMode = 2;
Andrei Litvind38820d2022-10-04 09:25:26 -0400123 nullable fabric_sensitive int64u subjects[] = 3;
Boris Zbarskyf9731a82023-05-24 15:08:53 -0400124 nullable fabric_sensitive AccessControlTargetStruct targets[] = 4;
Song GUOcd089382022-03-17 13:31:51 +0800125 fabric_idx fabricIndex = 254;
Harsha Rajendrand02ff672022-02-03 09:26:36 -0500126 }
127
Boris Zbarsky28cb6cc2023-01-04 04:46:21 -0500128 fabric_scoped struct AccessControlExtensionStruct {
Andrei Litvind38820d2022-10-04 09:25:26 -0400129 fabric_sensitive octet_string<128> data = 1;
Song GUOcd089382022-03-17 13:31:51 +0800130 fabric_idx fabricIndex = 254;
Harsha Rajendrand02ff672022-02-03 09:26:36 -0500131 }
132
Andrei Litvind38820d2022-10-04 09:25:26 -0400133 fabric_sensitive info event access(read: administer) AccessControlEntryChanged = 0 {
Harsha Rajendrand02ff672022-02-03 09:26:36 -0500134 nullable node_id adminNodeID = 1;
Andrei Litvin47836d22023-10-12 18:08:11 -0400135 nullable int16u adminPasscodeID = 2;
Harsha Rajendrand02ff672022-02-03 09:26:36 -0500136 ChangeTypeEnum changeType = 3;
Boris Zbarsky28cb6cc2023-01-04 04:46:21 -0500137 nullable AccessControlEntryStruct latestValue = 4;
Boris Zbarskya7ad1d82022-07-26 14:52:04 -0400138 fabric_idx fabricIndex = 254;
Harsha Rajendrand02ff672022-02-03 09:26:36 -0500139 }
140
Andrei Litvind38820d2022-10-04 09:25:26 -0400141 fabric_sensitive info event access(read: administer) AccessControlExtensionChanged = 1 {
Harsha Rajendrand02ff672022-02-03 09:26:36 -0500142 nullable node_id adminNodeID = 1;
Andrei Litvin47836d22023-10-12 18:08:11 -0400143 nullable int16u adminPasscodeID = 2;
Harsha Rajendrand02ff672022-02-03 09:26:36 -0500144 ChangeTypeEnum changeType = 3;
Boris Zbarsky28cb6cc2023-01-04 04:46:21 -0500145 nullable AccessControlExtensionStruct latestValue = 4;
Boris Zbarskya7ad1d82022-07-26 14:52:04 -0400146 fabric_idx fabricIndex = 254;
Harsha Rajendrand02ff672022-02-03 09:26:36 -0500147 }
148
Boris Zbarsky28cb6cc2023-01-04 04:46:21 -0500149 attribute access(read: administer, write: administer) AccessControlEntryStruct acl[] = 0;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500150 attribute access(read: administer, write: administer) optional AccessControlExtensionStruct extension[] = 1;
Tennessee Carmel-Veilleux184bda12022-04-13 10:52:31 -0400151 readonly attribute int16u subjectsPerAccessControlEntry = 2;
152 readonly attribute int16u targetsPerAccessControlEntry = 3;
153 readonly attribute int16u accessControlEntriesPerFabric = 4;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500154 readonly attribute command_id generatedCommandList[] = 65528;
155 readonly attribute command_id acceptedCommandList[] = 65529;
156 readonly attribute event_id eventList[] = 65530;
Andrei Litvin306e8a42022-04-07 05:42:07 -1000157 readonly attribute attrib_id attributeList[] = 65531;
tehampson2db812e2022-05-23 15:24:29 -0400158 readonly attribute bitmap32 featureMap = 65532;
Andrei Litvin306e8a42022-04-07 05:42:07 -1000159 readonly attribute int16u clusterRevision = 65533;
Harsha Rajendrand02ff672022-02-03 09:26:36 -0500160}
161
Andrei Litvin21c43e22023-04-04 18:50:26 -0400162/** This cluster provides attributes and events for determining basic information about Nodes, which supports both
163 Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number,
164 which apply to the whole Node. Also allows setting user device information such as location. */
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500165cluster BasicInformation = 40 {
Andrei Litvin90d60f02023-11-23 16:51:51 -0500166 revision 3;
167
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400168 enum ColorEnum : enum8 {
Boris Zbarskyab59adc2023-05-02 10:45:44 -0400169 kBlack = 0;
170 kNavy = 1;
171 kGreen = 2;
172 kTeal = 3;
173 kMaroon = 4;
174 kPurple = 5;
175 kOlive = 6;
176 kGray = 7;
177 kBlue = 8;
178 kLime = 9;
179 kAqua = 10;
180 kRed = 11;
181 kFuchsia = 12;
182 kYellow = 13;
183 kWhite = 14;
184 kNickel = 15;
185 kChrome = 16;
186 kBrass = 17;
187 kCopper = 18;
188 kSilver = 19;
189 kGold = 20;
190 }
191
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400192 enum ProductFinishEnum : enum8 {
Boris Zbarskyab59adc2023-05-02 10:45:44 -0400193 kOther = 0;
194 kMatte = 1;
195 kSatin = 2;
196 kPolished = 3;
197 kRugged = 4;
198 kFabric = 5;
199 }
200
Tennessee Carmel-Veilleux184bda12022-04-13 10:52:31 -0400201 struct CapabilityMinimaStruct {
202 int16u caseSessionsPerFabric = 0;
203 int16u subscriptionsPerFabric = 1;
204 }
205
Boris Zbarskyab59adc2023-05-02 10:45:44 -0400206 struct ProductAppearanceStruct {
207 ProductFinishEnum finish = 0;
208 nullable ColorEnum primaryColor = 1;
209 }
210
Andrei Litvin6e3c1092022-01-14 15:30:21 -0500211 critical event StartUp = 0 {
Andrei Litvin47836d22023-10-12 18:08:11 -0400212 int32u softwareVersion = 0;
Andrei Litvin6e3c1092022-01-14 15:30:21 -0500213 }
214
215 critical event ShutDown = 1 {
216 }
217
218 info event Leave = 2 {
Boris Zbarsky5022eb12022-07-28 10:53:33 -0400219 fabric_idx fabricIndex = 0;
Andrei Litvin6e3c1092022-01-14 15:30:21 -0500220 }
221
222 info event ReachableChanged = 3 {
223 boolean reachableNewValue = 0;
224 }
225
Leonard Zgrablic9f16e9a2022-02-01 12:43:34 -0500226 readonly attribute int16u dataModelRevision = 0;
Andrei Litvin2f1301b2022-01-20 22:16:11 -0500227 readonly attribute char_string<32> vendorName = 1;
Andrei Litvind5e74312022-01-19 17:06:40 -0500228 readonly attribute vendor_id vendorID = 2;
Andrei Litvin2f1301b2022-01-20 22:16:11 -0500229 readonly attribute char_string<32> productName = 3;
Andrei Litvind5e74312022-01-19 17:06:40 -0500230 readonly attribute int16u productID = 4;
Andrei Litvinecc92db2022-04-13 11:11:56 -1000231 attribute access(write: manage) char_string<32> nodeLabel = 5;
232 attribute access(write: administer) char_string<2> location = 6;
Andrei Litvind5e74312022-01-19 17:06:40 -0500233 readonly attribute int16u hardwareVersion = 7;
Andrei Litvin2f1301b2022-01-20 22:16:11 -0500234 readonly attribute char_string<64> hardwareVersionString = 8;
Andrei Litvind5e74312022-01-19 17:06:40 -0500235 readonly attribute int32u softwareVersion = 9;
Andrei Litvin2f1301b2022-01-20 22:16:11 -0500236 readonly attribute char_string<64> softwareVersionString = 10;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500237 readonly attribute optional char_string<16> manufacturingDate = 11;
238 readonly attribute optional char_string<32> partNumber = 12;
239 readonly attribute optional long_char_string<256> productURL = 13;
240 readonly attribute optional char_string<64> productLabel = 14;
241 readonly attribute optional char_string<32> serialNumber = 15;
242 attribute access(write: manage) optional boolean localConfigDisabled = 16;
243 readonly attribute optional boolean reachable = 17;
244 readonly attribute optional char_string<32> uniqueID = 18;
Tennessee Carmel-Veilleux184bda12022-04-13 10:52:31 -0400245 readonly attribute CapabilityMinimaStruct capabilityMinima = 19;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500246 readonly attribute optional ProductAppearanceStruct productAppearance = 20;
Terence Hampson9969d442023-11-16 11:30:48 -0500247 readonly attribute int32u specificationVersion = 21;
248 readonly attribute int16u maxPathsPerInvoke = 22;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500249 readonly attribute command_id generatedCommandList[] = 65528;
250 readonly attribute command_id acceptedCommandList[] = 65529;
251 readonly attribute event_id eventList[] = 65530;
252 readonly attribute attrib_id attributeList[] = 65531;
tehampson2db812e2022-05-23 15:24:29 -0400253 readonly attribute bitmap32 featureMap = 65532;
Andrei Litvin306e8a42022-04-07 05:42:07 -1000254 readonly attribute int16u clusterRevision = 65533;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500255
256 command MfgSpecificPing(): DefaultSuccess = 0;
Andrei Litvin6e3c1092022-01-14 15:30:21 -0500257}
258
Andrei Litvin21c43e22023-04-04 18:50:26 -0400259/** Provides an interface for providing OTA software updates */
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500260cluster OtaSoftwareUpdateProvider = 41 {
Andrei Litvin90d60f02023-11-23 16:51:51 -0500261 revision 1; // NOTE: Default/not specifically set
262
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400263 enum ApplyUpdateActionEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400264 kProceed = 0;
265 kAwaitNextAction = 1;
266 kDiscontinue = 2;
Andrei Litvin6e3c1092022-01-14 15:30:21 -0500267 }
268
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400269 enum DownloadProtocolEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400270 kBDXSynchronous = 0;
271 kBDXAsynchronous = 1;
Andrei Litvin413a9002023-06-28 13:02:18 -0400272 kHTTPS = 2;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400273 kVendorSpecific = 3;
274 }
275
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400276 enum StatusEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400277 kUpdateAvailable = 0;
278 kBusy = 1;
279 kNotAvailable = 2;
280 kDownloadProtocolNotSupported = 3;
281 }
282
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500283 readonly attribute command_id generatedCommandList[] = 65528;
284 readonly attribute command_id acceptedCommandList[] = 65529;
285 readonly attribute event_id eventList[] = 65530;
286 readonly attribute attrib_id attributeList[] = 65531;
287 readonly attribute bitmap32 featureMap = 65532;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400288 readonly attribute int16u clusterRevision = 65533;
289
290 request struct QueryImageRequest {
Boris Zbarsky458bbbf2023-01-03 13:11:18 -0500291 vendor_id vendorID = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -0400292 int16u productID = 1;
293 int32u softwareVersion = 2;
Boris Zbarsky71317fa2023-10-11 15:56:01 -0400294 DownloadProtocolEnum protocolsSupported[] = 3;
Andrei Litvin47836d22023-10-12 18:08:11 -0400295 optional int16u hardwareVersion = 4;
296 optional char_string<2> location = 5;
297 optional boolean requestorCanConsent = 6;
298 optional octet_string<512> metadataForProvider = 7;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400299 }
300
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400301 response struct QueryImageResponse = 1 {
Boris Zbarsky71317fa2023-10-11 15:56:01 -0400302 StatusEnum status = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -0400303 optional int32u delayedActionTime = 1;
304 optional char_string<256> imageURI = 2;
305 optional int32u softwareVersion = 3;
306 optional char_string<64> softwareVersionString = 4;
307 optional octet_string<32> updateToken = 5;
308 optional boolean userConsentNeeded = 6;
309 optional octet_string<512> metadataForRequestor = 7;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400310 }
311
Andrei Litvin040c65d2023-03-28 16:23:26 -0400312 request struct ApplyUpdateRequestRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -0400313 octet_string<32> updateToken = 0;
314 int32u newVersion = 1;
Andrei Litvin040c65d2023-03-28 16:23:26 -0400315 }
316
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400317 response struct ApplyUpdateResponse = 3 {
Boris Zbarsky71317fa2023-10-11 15:56:01 -0400318 ApplyUpdateActionEnum action = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -0400319 int32u delayedActionTime = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400320 }
321
Andrei Litvin040c65d2023-03-28 16:23:26 -0400322 request struct NotifyUpdateAppliedRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -0400323 octet_string<32> updateToken = 0;
324 int32u softwareVersion = 1;
Andrei Litvin040c65d2023-03-28 16:23:26 -0400325 }
326
Andrei Litvin21c43e22023-04-04 18:50:26 -0400327 /** Determine availability of a new Software Image */
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400328 command QueryImage(QueryImageRequest): QueryImageResponse = 0;
Andrei Litvin21c43e22023-04-04 18:50:26 -0400329 /** Determine next action to take for a downloaded Software Image */
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400330 command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2;
Andrei Litvin21c43e22023-04-04 18:50:26 -0400331 /** Notify OTA Provider that an update was applied */
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400332 command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4;
333}
334
Andrei Litvin21c43e22023-04-04 18:50:26 -0400335/** Provides an interface for downloading and applying OTA software updates */
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500336cluster OtaSoftwareUpdateRequestor = 42 {
Andrei Litvin90d60f02023-11-23 16:51:51 -0500337 revision 1; // NOTE: Default/not specifically set
338
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400339 enum AnnouncementReasonEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400340 kSimpleAnnouncement = 0;
341 kUpdateAvailable = 1;
342 kUrgentUpdateAvailable = 2;
343 }
344
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400345 enum ChangeReasonEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400346 kUnknown = 0;
347 kSuccess = 1;
348 kFailure = 2;
349 kTimeOut = 3;
350 kDelayByProvider = 4;
351 }
352
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400353 enum UpdateStateEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400354 kUnknown = 0;
355 kIdle = 1;
356 kQuerying = 2;
357 kDelayedOnQuery = 3;
358 kDownloading = 4;
359 kApplying = 5;
360 kDelayedOnApply = 6;
361 kRollingBack = 7;
362 kDelayedOnUserConsent = 8;
363 }
364
Andrei Litvind38820d2022-10-04 09:25:26 -0400365 fabric_scoped struct ProviderLocation {
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400366 node_id providerNodeID = 1;
367 endpoint_no endpoint = 2;
368 fabric_idx fabricIndex = 254;
369 }
370
371 info event StateTransition = 0 {
Boris Zbarsky71317fa2023-10-11 15:56:01 -0400372 UpdateStateEnum previousState = 0;
373 UpdateStateEnum newState = 1;
374 ChangeReasonEnum reason = 2;
Andrei Litvin47836d22023-10-12 18:08:11 -0400375 nullable int32u targetSoftwareVersion = 3;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400376 }
377
378 critical event VersionApplied = 1 {
Andrei Litvin47836d22023-10-12 18:08:11 -0400379 int32u softwareVersion = 0;
380 int16u productID = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400381 }
382
383 info event DownloadError = 2 {
Andrei Litvin47836d22023-10-12 18:08:11 -0400384 int32u softwareVersion = 0;
385 int64u bytesDownloaded = 1;
386 nullable int8u progressPercent = 2;
387 nullable int64s platformCode = 3;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400388 }
389
C Freemand5f68052023-12-07 13:17:36 -0500390 attribute access(write: administer) ProviderLocation defaultOTAProviders[] = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400391 readonly attribute boolean updatePossible = 1;
Boris Zbarsky71317fa2023-10-11 15:56:01 -0400392 readonly attribute UpdateStateEnum updateState = 2;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400393 readonly attribute nullable int8u updateStateProgress = 3;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500394 readonly attribute command_id generatedCommandList[] = 65528;
395 readonly attribute command_id acceptedCommandList[] = 65529;
396 readonly attribute event_id eventList[] = 65530;
397 readonly attribute attrib_id attributeList[] = 65531;
tehampson2db812e2022-05-23 15:24:29 -0400398 readonly attribute bitmap32 featureMap = 65532;
Andrei Litvin306e8a42022-04-07 05:42:07 -1000399 readonly attribute int16u clusterRevision = 65533;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400400
Boris Zbarsky458bbbf2023-01-03 13:11:18 -0500401 request struct AnnounceOTAProviderRequest {
402 node_id providerNodeID = 0;
403 vendor_id vendorID = 1;
Boris Zbarsky71317fa2023-10-11 15:56:01 -0400404 AnnouncementReasonEnum announcementReason = 2;
Andrei Litvin47836d22023-10-12 18:08:11 -0400405 optional octet_string<512> metadataForNode = 3;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400406 endpoint_no endpoint = 4;
407 }
408
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500409 /** Announce the presence of an OTA Provider */
Boris Zbarsky458bbbf2023-01-03 13:11:18 -0500410 command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400411}
412
Andrei Litvin21c43e22023-04-04 18:50:26 -0400413/** Nodes should be expected to be deployed to any and all regions of the world. These global regions
414 may have differing common languages, units of measurements, and numerical formatting
415 standards. As such, Nodes that visually or audibly convey information need a mechanism by which
416 they can be configured to use a user’s preferred language, units, etc */
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500417cluster LocalizationConfiguration = 43 {
Andrei Litvin90d60f02023-11-23 16:51:51 -0500418 revision 1; // NOTE: Default/not specifically set
419
Andrei Litvindd920f22023-10-30 10:14:57 -0400420 attribute access(write: manage) char_string<35> activeLocale = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -0400421 readonly attribute char_string supportedLocales[] = 1;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500422 readonly attribute command_id generatedCommandList[] = 65528;
423 readonly attribute command_id acceptedCommandList[] = 65529;
424 readonly attribute event_id eventList[] = 65530;
425 readonly attribute attrib_id attributeList[] = 65531;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400426 readonly attribute bitmap32 featureMap = 65532;
427 readonly attribute int16u clusterRevision = 65533;
428}
429
Andrei Litvin21c43e22023-04-04 18:50:26 -0400430/** Nodes should be expected to be deployed to any and all regions of the world. These global regions
C Freeman8ff23312023-08-16 18:50:41 -0400431 may have differing preferences for the units in which values are conveyed in communication to a
432 user. As such, Nodes that visually or audibly convey measurable values to the user need a
433 mechanism by which they can be configured to use a user’s preferred unit. */
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500434cluster UnitLocalization = 45 {
Andrei Litvin90d60f02023-11-23 16:51:51 -0500435 revision 1;
436
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400437 enum TempUnitEnum : enum8 {
C Freeman8ff23312023-08-16 18:50:41 -0400438 kFahrenheit = 0;
439 kCelsius = 1;
440 kKelvin = 2;
441 }
442
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400443 bitmap Feature : bitmap32 {
C Freeman8ff23312023-08-16 18:50:41 -0400444 kTemperatureUnit = 0x1;
445 }
446
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500447 attribute access(write: manage) optional TempUnitEnum temperatureUnit = 0;
C Freeman8ff23312023-08-16 18:50:41 -0400448 readonly attribute command_id generatedCommandList[] = 65528;
449 readonly attribute command_id acceptedCommandList[] = 65529;
450 readonly attribute event_id eventList[] = 65530;
451 readonly attribute attrib_id attributeList[] = 65531;
452 readonly attribute bitmap32 featureMap = 65532;
453 readonly attribute int16u clusterRevision = 65533;
454}
455
Andrei Litvin21c43e22023-04-04 18:50:26 -0400456/** This cluster is used to describe the configuration and capabilities of a physical power source that provides power to the Node. */
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500457cluster PowerSource = 47 {
Andrei Litvin90d60f02023-11-23 16:51:51 -0500458 revision 1; // NOTE: Default/not specifically set
459
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400460 enum BatApprovedChemistryEnum : enum16 {
Boris Zbarsky7775bec2023-02-23 16:34:24 -0500461 kUnspecified = 0;
462 kAlkaline = 1;
463 kLithiumCarbonFluoride = 2;
464 kLithiumChromiumOxide = 3;
465 kLithiumCopperOxide = 4;
466 kLithiumIronDisulfide = 5;
467 kLithiumManganeseDioxide = 6;
468 kLithiumThionylChloride = 7;
469 kMagnesium = 8;
470 kMercuryOxide = 9;
471 kNickelOxyhydride = 10;
472 kSilverOxide = 11;
473 kZincAir = 12;
474 kZincCarbon = 13;
475 kZincChloride = 14;
476 kZincManganeseDioxide = 15;
477 kLeadAcid = 16;
478 kLithiumCobaltOxide = 17;
479 kLithiumIon = 18;
480 kLithiumIonPolymer = 19;
481 kLithiumIronPhosphate = 20;
482 kLithiumSulfur = 21;
483 kLithiumTitanate = 22;
484 kNickelCadmium = 23;
485 kNickelHydrogen = 24;
486 kNickelIron = 25;
487 kNickelMetalHydride = 26;
488 kNickelZinc = 27;
489 kSilverZinc = 28;
490 kSodiumIon = 29;
491 kSodiumSulfur = 30;
492 kZincBromide = 31;
493 kZincCerium = 32;
494 }
495
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400496 enum BatChargeFaultEnum : enum8 {
Martin Turon487c8e12023-01-26 22:35:59 -0800497 kUnspecified = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400498 kAmbientTooHot = 1;
499 kAmbientTooCold = 2;
500 kBatteryTooHot = 3;
501 kBatteryTooCold = 4;
502 kBatteryAbsent = 5;
503 kBatteryOverVoltage = 6;
504 kBatteryUnderVoltage = 7;
505 kChargerOverVoltage = 8;
506 kChargerUnderVoltage = 9;
507 kSafetyTimeout = 10;
508 }
509
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400510 enum BatChargeLevelEnum : enum8 {
Andrei Litvin413a9002023-06-28 13:02:18 -0400511 kOK = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400512 kWarning = 1;
513 kCritical = 2;
514 }
515
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400516 enum BatChargeStateEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400517 kUnknown = 0;
518 kIsCharging = 1;
519 kIsAtFullCharge = 2;
520 kIsNotCharging = 3;
521 }
522
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400523 enum BatCommonDesignationEnum : enum16 {
Boris Zbarsky7775bec2023-02-23 16:34:24 -0500524 kUnspecified = 0;
Andrei Litvin413a9002023-06-28 13:02:18 -0400525 kAAA = 1;
526 kAA = 2;
Boris Zbarsky7775bec2023-02-23 16:34:24 -0500527 kC = 3;
528 kD = 4;
529 k4v5 = 5;
530 k6v0 = 6;
531 k9v0 = 7;
Andrei Litvin413a9002023-06-28 13:02:18 -0400532 k12AA = 8;
533 kAAAA = 9;
Boris Zbarsky7775bec2023-02-23 16:34:24 -0500534 kA = 10;
535 kB = 11;
536 kF = 12;
537 kN = 13;
538 kNo6 = 14;
539 kSubC = 15;
540 kA23 = 16;
541 kA27 = 17;
Andrei Litvin413a9002023-06-28 13:02:18 -0400542 kBA5800 = 18;
Boris Zbarsky7775bec2023-02-23 16:34:24 -0500543 kDuplex = 19;
Andrei Litvin413a9002023-06-28 13:02:18 -0400544 k4SR44 = 20;
Boris Zbarsky7775bec2023-02-23 16:34:24 -0500545 k523 = 21;
546 k531 = 22;
547 k15v0 = 23;
548 k22v5 = 24;
549 k30v0 = 25;
550 k45v0 = 26;
551 k67v5 = 27;
552 kJ = 28;
Andrei Litvin413a9002023-06-28 13:02:18 -0400553 kCR123A = 29;
554 kCR2 = 30;
555 k2CR5 = 31;
556 kCRP2 = 32;
557 kCRV3 = 33;
558 kSR41 = 34;
559 kSR43 = 35;
560 kSR44 = 36;
561 kSR45 = 37;
562 kSR48 = 38;
563 kSR54 = 39;
564 kSR55 = 40;
565 kSR57 = 41;
566 kSR58 = 42;
567 kSR59 = 43;
568 kSR60 = 44;
569 kSR63 = 45;
570 kSR64 = 46;
571 kSR65 = 47;
572 kSR66 = 48;
573 kSR67 = 49;
574 kSR68 = 50;
575 kSR69 = 51;
576 kSR516 = 52;
577 kSR731 = 53;
578 kSR712 = 54;
579 kLR932 = 55;
Boris Zbarsky7775bec2023-02-23 16:34:24 -0500580 kA5 = 56;
581 kA10 = 57;
582 kA13 = 58;
583 kA312 = 59;
584 kA675 = 60;
Andrei Litvin413a9002023-06-28 13:02:18 -0400585 kAC41E = 61;
Boris Zbarsky7775bec2023-02-23 16:34:24 -0500586 k10180 = 62;
587 k10280 = 63;
588 k10440 = 64;
589 k14250 = 65;
590 k14430 = 66;
591 k14500 = 67;
592 k14650 = 68;
593 k15270 = 69;
594 k16340 = 70;
Andrei Litvin413a9002023-06-28 13:02:18 -0400595 kRCR123A = 71;
Boris Zbarsky7775bec2023-02-23 16:34:24 -0500596 k17500 = 72;
597 k17670 = 73;
598 k18350 = 74;
599 k18500 = 75;
600 k18650 = 76;
601 k19670 = 77;
602 k25500 = 78;
603 k26650 = 79;
604 k32600 = 80;
605 }
606
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400607 enum BatFaultEnum : enum8 {
Boris Zbarsky7775bec2023-02-23 16:34:24 -0500608 kUnspecified = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400609 kOverTemp = 1;
610 kUnderTemp = 2;
611 }
612
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400613 enum BatReplaceabilityEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400614 kUnspecified = 0;
615 kNotReplaceable = 1;
616 kUserReplaceable = 2;
617 kFactoryReplaceable = 3;
618 }
619
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400620 enum PowerSourceStatusEnum : enum8 {
Martin Turon487c8e12023-01-26 22:35:59 -0800621 kUnspecified = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400622 kActive = 1;
623 kStandby = 2;
624 kUnavailable = 3;
625 }
626
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400627 enum WiredCurrentTypeEnum : enum8 {
Andrei Litvin413a9002023-06-28 13:02:18 -0400628 kAC = 0;
629 kDC = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400630 }
631
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400632 enum WiredFaultEnum : enum8 {
Boris Zbarsky7775bec2023-02-23 16:34:24 -0500633 kUnspecified = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400634 kOverVoltage = 1;
635 kUnderVoltage = 2;
636 }
637
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400638 bitmap Feature : bitmap32 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400639 kWired = 0x1;
640 kBattery = 0x2;
641 kRechargeable = 0x4;
642 kReplaceable = 0x8;
643 }
644
Bharat Rajuf25702c2023-04-12 11:14:12 -0400645 struct BatChargeFaultChangeType {
646 BatChargeFaultEnum current[] = 0;
647 BatChargeFaultEnum previous[] = 1;
648 }
649
650 struct BatFaultChangeType {
651 BatFaultEnum current[] = 0;
652 BatFaultEnum previous[] = 1;
653 }
654
655 struct WiredFaultChangeType {
656 WiredFaultEnum current[] = 0;
657 WiredFaultEnum previous[] = 1;
658 }
659
Boris Zbarsky4e63e882023-01-04 12:03:17 -0500660 info event WiredFaultChange = 0 {
Boris Zbarsky7775bec2023-02-23 16:34:24 -0500661 WiredFaultEnum current[] = 0;
662 WiredFaultEnum previous[] = 1;
Boris Zbarsky4e63e882023-01-04 12:03:17 -0500663 }
664
665 info event BatFaultChange = 1 {
Boris Zbarsky7775bec2023-02-23 16:34:24 -0500666 BatFaultEnum current[] = 0;
667 BatFaultEnum previous[] = 1;
Boris Zbarsky4e63e882023-01-04 12:03:17 -0500668 }
669
670 info event BatChargeFaultChange = 2 {
Boris Zbarsky7775bec2023-02-23 16:34:24 -0500671 BatChargeFaultEnum current[] = 0;
672 BatChargeFaultEnum previous[] = 1;
Boris Zbarsky4e63e882023-01-04 12:03:17 -0500673 }
674
Boris Zbarsky7775bec2023-02-23 16:34:24 -0500675 readonly attribute PowerSourceStatusEnum status = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400676 readonly attribute int8u order = 1;
677 readonly attribute char_string<60> description = 2;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500678 readonly attribute optional nullable int32u wiredAssessedInputVoltage = 3;
679 readonly attribute optional nullable int16u wiredAssessedInputFrequency = 4;
680 readonly attribute optional WiredCurrentTypeEnum wiredCurrentType = 5;
681 readonly attribute optional nullable int32u wiredAssessedCurrent = 6;
682 readonly attribute optional int32u wiredNominalVoltage = 7;
683 readonly attribute optional int32u wiredMaximumCurrent = 8;
684 readonly attribute optional boolean wiredPresent = 9;
685 readonly attribute optional WiredFaultEnum activeWiredFaults[] = 10;
686 readonly attribute optional nullable int32u batVoltage = 11;
687 readonly attribute optional nullable int8u batPercentRemaining = 12;
688 readonly attribute optional nullable int32u batTimeRemaining = 13;
689 readonly attribute optional BatChargeLevelEnum batChargeLevel = 14;
690 readonly attribute optional boolean batReplacementNeeded = 15;
691 readonly attribute optional BatReplaceabilityEnum batReplaceability = 16;
692 readonly attribute optional boolean batPresent = 17;
693 readonly attribute optional BatFaultEnum activeBatFaults[] = 18;
694 readonly attribute optional char_string<60> batReplacementDescription = 19;
695 readonly attribute optional BatCommonDesignationEnum batCommonDesignation = 20;
696 readonly attribute optional char_string<20> batANSIDesignation = 21;
697 readonly attribute optional char_string<20> batIECDesignation = 22;
698 readonly attribute optional BatApprovedChemistryEnum batApprovedChemistry = 23;
699 readonly attribute optional int32u batCapacity = 24;
700 readonly attribute optional int8u batQuantity = 25;
701 readonly attribute optional BatChargeStateEnum batChargeState = 26;
702 readonly attribute optional nullable int32u batTimeToFullCharge = 27;
703 readonly attribute optional boolean batFunctionalWhileCharging = 28;
704 readonly attribute optional nullable int32u batChargingCurrent = 29;
705 readonly attribute optional BatChargeFaultEnum activeBatChargeFaults[] = 30;
C Freeman529d74b2023-07-20 02:27:29 -0400706 readonly attribute endpoint_no endpointList[] = 31;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500707 readonly attribute command_id generatedCommandList[] = 65528;
708 readonly attribute command_id acceptedCommandList[] = 65529;
709 readonly attribute event_id eventList[] = 65530;
710 readonly attribute attrib_id attributeList[] = 65531;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400711 readonly attribute bitmap32 featureMap = 65532;
712 readonly attribute int16u clusterRevision = 65533;
713}
714
Andrei Litvin21c43e22023-04-04 18:50:26 -0400715/** This cluster is used to manage global aspects of the Commissioning flow. */
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500716cluster GeneralCommissioning = 48 {
Andrei Litvin90d60f02023-11-23 16:51:51 -0500717 revision 1; // NOTE: Default/not specifically set
718
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400719 enum CommissioningErrorEnum : enum8 {
Andrei Litvin413a9002023-06-28 13:02:18 -0400720 kOK = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400721 kValueOutsideRange = 1;
722 kInvalidAuthentication = 2;
723 kNoFailSafe = 3;
724 kBusyWithOtherAdmin = 4;
725 }
726
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400727 enum RegulatoryLocationTypeEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400728 kIndoor = 0;
729 kOutdoor = 1;
730 kIndoorOutdoor = 2;
731 }
732
733 struct BasicCommissioningInfo {
734 int16u failSafeExpiryLengthSeconds = 0;
735 int16u maxCumulativeFailsafeSeconds = 1;
736 }
737
738 attribute access(write: administer) int64u breadcrumb = 0;
739 readonly attribute BasicCommissioningInfo basicCommissioningInfo = 1;
Boris Zbarsky98768782023-05-23 12:01:23 -0400740 readonly attribute RegulatoryLocationTypeEnum regulatoryConfig = 2;
741 readonly attribute RegulatoryLocationTypeEnum locationCapability = 3;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400742 readonly attribute boolean supportsConcurrentConnection = 4;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500743 readonly attribute command_id generatedCommandList[] = 65528;
744 readonly attribute command_id acceptedCommandList[] = 65529;
745 readonly attribute event_id eventList[] = 65530;
746 readonly attribute attrib_id attributeList[] = 65531;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400747 readonly attribute bitmap32 featureMap = 65532;
748 readonly attribute int16u clusterRevision = 65533;
749
750 request struct ArmFailSafeRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -0400751 int16u expiryLengthSeconds = 0;
752 int64u breadcrumb = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400753 }
754
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500755 response struct ArmFailSafeResponse = 1 {
756 CommissioningErrorEnum errorCode = 0;
757 char_string<128> debugText = 1;
758 }
759
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400760 request struct SetRegulatoryConfigRequest {
Boris Zbarsky98768782023-05-23 12:01:23 -0400761 RegulatoryLocationTypeEnum newRegulatoryConfig = 0;
Andrei Litvind47aeb42023-11-15 06:16:41 -0500762 char_string<2> countryCode = 1;
Andrei Litvin47836d22023-10-12 18:08:11 -0400763 int64u breadcrumb = 2;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400764 }
765
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400766 response struct SetRegulatoryConfigResponse = 3 {
Boris Zbarsky98768782023-05-23 12:01:23 -0400767 CommissioningErrorEnum errorCode = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -0400768 char_string debugText = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400769 }
770
771 response struct CommissioningCompleteResponse = 5 {
Boris Zbarsky98768782023-05-23 12:01:23 -0400772 CommissioningErrorEnum errorCode = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -0400773 char_string debugText = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400774 }
775
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500776 /** Arm the persistent fail-safe timer with an expiry time of now + ExpiryLengthSeconds using device clock */
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400777 command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500778 /** Set the regulatory configuration to be used during commissioning */
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400779 command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500780 /** Signals the Server that the Client has successfully completed all steps of Commissioning/Recofiguration needed during fail-safe period. */
Andrei Litvin33aecf82022-07-21 11:29:56 -0400781 fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400782}
783
Andrei Litvin21c43e22023-04-04 18:50:26 -0400784/** Functionality to configure, enable, disable network credentials and access on a Matter device. */
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500785cluster NetworkCommissioning = 49 {
Andrei Litvin90d60f02023-11-23 16:51:51 -0500786 revision 1; // NOTE: Default/not specifically set
787
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400788 enum NetworkCommissioningStatusEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400789 kSuccess = 0;
790 kOutOfRange = 1;
791 kBoundsExceeded = 2;
792 kNetworkIDNotFound = 3;
793 kDuplicateNetworkID = 4;
794 kNetworkNotFound = 5;
795 kRegulatoryError = 6;
796 kAuthFailure = 7;
797 kUnsupportedSecurity = 8;
798 kOtherConnectionFailure = 9;
799 kIPV6Failed = 10;
800 kIPBindFailed = 11;
801 kUnknownError = 12;
802 }
803
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400804 enum WiFiBandEnum : enum8 {
Andrei Litvin413a9002023-06-28 13:02:18 -0400805 k2G4 = 0;
806 k3G65 = 1;
807 k5G = 2;
808 k6G = 3;
809 k60G = 4;
810 k1G = 5;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400811 }
812
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400813 bitmap Feature : bitmap32 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400814 kWiFiNetworkInterface = 0x1;
815 kThreadNetworkInterface = 0x2;
816 kEthernetNetworkInterface = 0x4;
Karsten Sperling261b03f2023-11-09 06:45:38 +1300817 kPerDeviceCredentials = 0x8;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400818 }
819
Tennessee Carmel-Veilleux78791112023-10-24 13:39:10 -0400820 bitmap ThreadCapabilitiesBitmap : bitmap16 {
821 kIsBorderRouterCapable = 0x1;
822 kIsRouterCapable = 0x2;
823 kIsSleepyEndDeviceCapable = 0x4;
824 kIsFullThreadDevice = 0x8;
825 kIsSynchronizedSleepyEndDeviceCapable = 0x10;
826 }
827
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400828 bitmap WiFiSecurityBitmap : bitmap8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400829 kUnencrypted = 0x1;
Andrei Litvin413a9002023-06-28 13:02:18 -0400830 kWEP = 0x2;
831 kWPAPersonal = 0x4;
832 kWPA2Personal = 0x8;
833 kWPA3Personal = 0x10;
Karsten Sperling261b03f2023-11-09 06:45:38 +1300834 kWPA3MatterPDC = 0x20;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400835 }
836
Boris Zbarsky0dc592e2023-06-01 15:25:00 -0400837 struct NetworkInfoStruct {
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400838 octet_string<32> networkID = 0;
839 boolean connected = 1;
Karsten Sperling261b03f2023-11-09 06:45:38 +1300840 optional nullable octet_string<20> networkIdentifier = 2;
841 optional nullable octet_string<20> clientIdentifier = 3;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400842 }
843
Boris Zbarsky0dc592e2023-06-01 15:25:00 -0400844 struct ThreadInterfaceScanResultStruct {
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400845 int16u panId = 0;
846 int64u extendedPanId = 1;
847 char_string<16> networkName = 2;
848 int16u channel = 3;
849 int8u version = 4;
850 octet_string<8> extendedAddress = 5;
851 int8s rssi = 6;
852 int8u lqi = 7;
853 }
854
Boris Zbarsky0dc592e2023-06-01 15:25:00 -0400855 struct WiFiInterfaceScanResultStruct {
856 WiFiSecurityBitmap security = 0;
Bharat Rajuf25702c2023-04-12 11:14:12 -0400857 octet_string<32> ssid = 1;
858 octet_string<6> bssid = 2;
859 int16u channel = 3;
Boris Zbarsky0dc592e2023-06-01 15:25:00 -0400860 WiFiBandEnum wiFiBand = 4;
Bharat Rajuf25702c2023-04-12 11:14:12 -0400861 int8s rssi = 5;
862 }
863
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400864 readonly attribute access(read: administer) int8u maxNetworks = 0;
Boris Zbarsky0dc592e2023-06-01 15:25:00 -0400865 readonly attribute access(read: administer) NetworkInfoStruct networks[] = 1;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500866 readonly attribute optional int8u scanMaxTimeSeconds = 2;
867 readonly attribute optional int8u connectMaxTimeSeconds = 3;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400868 attribute access(write: administer) boolean interfaceEnabled = 4;
Boris Zbarsky0dc592e2023-06-01 15:25:00 -0400869 readonly attribute access(read: administer) nullable NetworkCommissioningStatusEnum lastNetworkingStatus = 5;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400870 readonly attribute access(read: administer) nullable octet_string<32> lastNetworkID = 6;
871 readonly attribute access(read: administer) nullable int32s lastConnectErrorValue = 7;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500872 readonly attribute optional WiFiBandEnum supportedWiFiBands[] = 8;
873 readonly attribute optional ThreadCapabilitiesBitmap supportedThreadFeatures = 9;
874 readonly attribute optional int16u threadVersion = 10;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500875 readonly attribute command_id generatedCommandList[] = 65528;
876 readonly attribute command_id acceptedCommandList[] = 65529;
877 readonly attribute event_id eventList[] = 65530;
878 readonly attribute attrib_id attributeList[] = 65531;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400879 readonly attribute bitmap32 featureMap = 65532;
880 readonly attribute int16u clusterRevision = 65533;
881
882 request struct ScanNetworksRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -0400883 optional nullable octet_string<32> ssid = 0;
884 optional int64u breadcrumb = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400885 }
886
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500887 response struct ScanNetworksResponse = 1 {
888 NetworkCommissioningStatusEnum networkingStatus = 0;
889 optional char_string debugText = 1;
890 optional WiFiInterfaceScanResultStruct wiFiScanResults[] = 2;
891 optional ThreadInterfaceScanResultStruct threadScanResults[] = 3;
892 }
893
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400894 request struct AddOrUpdateWiFiNetworkRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -0400895 octet_string<32> ssid = 0;
896 octet_string<64> credentials = 1;
897 optional int64u breadcrumb = 2;
Karsten Sperling261b03f2023-11-09 06:45:38 +1300898 optional octet_string<140> networkIdentity = 3;
899 optional octet_string<20> clientIdentifier = 4;
900 optional octet_string<32> possessionNonce = 5;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400901 }
902
903 request struct AddOrUpdateThreadNetworkRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -0400904 octet_string<254> operationalDataset = 0;
905 optional int64u breadcrumb = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400906 }
907
908 request struct RemoveNetworkRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -0400909 octet_string<32> networkID = 0;
910 optional int64u breadcrumb = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400911 }
912
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400913 response struct NetworkConfigResponse = 5 {
Boris Zbarsky0dc592e2023-06-01 15:25:00 -0400914 NetworkCommissioningStatusEnum networkingStatus = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -0400915 optional char_string<512> debugText = 1;
916 optional int8u networkIndex = 2;
Karsten Sperling261b03f2023-11-09 06:45:38 +1300917 optional octet_string<140> clientIdentity = 3;
918 optional octet_string<64> possessionSignature = 4;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400919 }
920
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500921 request struct ConnectNetworkRequest {
922 octet_string<32> networkID = 0;
923 optional int64u breadcrumb = 1;
924 }
925
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400926 response struct ConnectNetworkResponse = 7 {
Boris Zbarsky0dc592e2023-06-01 15:25:00 -0400927 NetworkCommissioningStatusEnum networkingStatus = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -0400928 optional char_string debugText = 1;
929 nullable int32s errorValue = 2;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400930 }
931
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500932 request struct ReorderNetworkRequest {
933 octet_string<32> networkID = 0;
934 int8u networkIndex = 1;
935 optional int64u breadcrumb = 2;
936 }
937
938 request struct QueryIdentityRequest {
Boris Zbarskyd823ea22023-11-30 15:08:58 -0500939 octet_string<20> keyIdentifier = 0;
940 optional octet_string<32> possessionNonce = 1;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500941 }
942
943 response struct QueryIdentityResponse = 10 {
Boris Zbarskyd823ea22023-11-30 15:08:58 -0500944 octet_string<140> identity = 0;
945 optional octet_string<64> possessionSignature = 1;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500946 }
947
948 /** Detemine the set of networks the device sees as available. */
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400949 command access(invoke: administer) ScanNetworks(ScanNetworksRequest): ScanNetworksResponse = 0;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500950 /** Add or update the credentials for a given Wi-Fi network. */
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400951 command access(invoke: administer) AddOrUpdateWiFiNetwork(AddOrUpdateWiFiNetworkRequest): NetworkConfigResponse = 2;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500952 /** Add or update the credentials for a given Thread network. */
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400953 command access(invoke: administer) AddOrUpdateThreadNetwork(AddOrUpdateThreadNetworkRequest): NetworkConfigResponse = 3;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500954 /** Remove the definition of a given network (including its credentials). */
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400955 command access(invoke: administer) RemoveNetwork(RemoveNetworkRequest): NetworkConfigResponse = 4;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500956 /** Connect to the specified network, using previously-defined credentials. */
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400957 command access(invoke: administer) ConnectNetwork(ConnectNetworkRequest): ConnectNetworkResponse = 6;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500958 /** Modify the order in which networks will be presented in the Networks attribute. */
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400959 command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500960 /** Retrieve details about and optionally proof of possession of a network client identity. */
961 command access(invoke: administer) QueryIdentity(QueryIdentityRequest): QueryIdentityResponse = 9;
Andrei Litvin6e3c1092022-01-14 15:30:21 -0500962}
963
Andrei Litvin21c43e22023-04-04 18:50:26 -0400964/** 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 -0500965cluster DiagnosticLogs = 50 {
Andrei Litvin90d60f02023-11-23 16:51:51 -0500966 revision 1; // NOTE: Default/not specifically set
967
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400968 enum IntentEnum : enum8 {
Andrei Litvin6e3c1092022-01-14 15:30:21 -0500969 kEndUserSupport = 0;
970 kNetworkDiag = 1;
971 kCrashLogs = 2;
972 }
973
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400974 enum StatusEnum : enum8 {
Andrei Litvin6e3c1092022-01-14 15:30:21 -0500975 kSuccess = 0;
976 kExhausted = 1;
977 kNoLogs = 2;
978 kBusy = 3;
979 kDenied = 4;
980 }
981
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400982 enum TransferProtocolEnum : enum8 {
Andrei Litvin6e3c1092022-01-14 15:30:21 -0500983 kResponsePayload = 0;
Andrei Litvin413a9002023-06-28 13:02:18 -0400984 kBDX = 1;
Andrei Litvin6e3c1092022-01-14 15:30:21 -0500985 }
986
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500987 readonly attribute command_id generatedCommandList[] = 65528;
988 readonly attribute command_id acceptedCommandList[] = 65529;
989 readonly attribute event_id eventList[] = 65530;
990 readonly attribute attrib_id attributeList[] = 65531;
tehampson2db812e2022-05-23 15:24:29 -0400991 readonly attribute bitmap32 featureMap = 65532;
992 readonly attribute int16u clusterRevision = 65533;
Andrei Litvin6e3c1092022-01-14 15:30:21 -0500993
994 request struct RetrieveLogsRequestRequest {
Boris Zbarsky60200ca2023-02-15 09:38:28 -0500995 IntentEnum intent = 0;
996 TransferProtocolEnum requestedProtocol = 1;
Andrei Litvin47836d22023-10-12 18:08:11 -0400997 optional char_string<32> transferFileDesignator = 2;
Andrei Litvin6e3c1092022-01-14 15:30:21 -0500998 }
999
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001000 response struct RetrieveLogsResponse = 1 {
1001 StatusEnum status = 0;
Boris Zbarskyd823ea22023-11-30 15:08:58 -05001002 long_octet_string logContent = 1;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001003 optional epoch_us UTCTimeStamp = 2;
1004 optional systime_us timeSinceBoot = 3;
1005 }
1006
1007 /** Retrieving diagnostic logs from a Node */
Andrei Litvin6e3c1092022-01-14 15:30:21 -05001008 command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0;
1009}
1010
Andrei Litvin21c43e22023-04-04 18:50:26 -04001011/** 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 -05001012cluster GeneralDiagnostics = 51 {
C Freeman2980e512023-12-08 22:10:32 -05001013 revision 2;
Andrei Litvin90d60f02023-11-23 16:51:51 -05001014
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001015 enum BootReasonEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001016 kUnspecified = 0;
1017 kPowerOnReboot = 1;
1018 kBrownOutReset = 2;
1019 kSoftwareWatchdogReset = 3;
1020 kHardwareWatchdogReset = 4;
1021 kSoftwareUpdateCompleted = 5;
1022 kSoftwareReset = 6;
1023 }
1024
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001025 enum HardwareFaultEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001026 kUnspecified = 0;
1027 kRadio = 1;
1028 kSensor = 2;
1029 kResettableOverTemp = 3;
1030 kNonResettableOverTemp = 4;
1031 kPowerSource = 5;
1032 kVisualDisplayFault = 6;
1033 kAudioOutputFault = 7;
1034 kUserInterfaceFault = 8;
1035 kNonVolatileMemoryError = 9;
1036 kTamperDetected = 10;
1037 }
1038
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001039 enum InterfaceTypeEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001040 kUnspecified = 0;
1041 kWiFi = 1;
1042 kEthernet = 2;
1043 kCellular = 3;
1044 kThread = 4;
1045 }
1046
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001047 enum NetworkFaultEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001048 kUnspecified = 0;
1049 kHardwareFailure = 1;
1050 kNetworkJammed = 2;
1051 kConnectionFailed = 3;
1052 }
1053
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001054 enum RadioFaultEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001055 kUnspecified = 0;
1056 kWiFiFault = 1;
1057 kCellularFault = 2;
1058 kThreadFault = 3;
1059 kNFCFault = 4;
1060 kBLEFault = 5;
1061 kEthernetFault = 6;
1062 }
1063
Boris Zbarskydd6ae932023-01-09 12:08:17 -05001064 struct NetworkInterface {
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001065 char_string<32> name = 0;
1066 boolean isOperational = 1;
1067 nullable boolean offPremiseServicesReachableIPv4 = 2;
1068 nullable boolean offPremiseServicesReachableIPv6 = 3;
1069 octet_string<8> hardwareAddress = 4;
1070 octet_string IPv4Addresses[] = 5;
1071 octet_string IPv6Addresses[] = 6;
Boris Zbarsky1b226d42023-01-18 23:43:09 -05001072 InterfaceTypeEnum type = 7;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001073 }
1074
1075 critical event HardwareFaultChange = 0 {
Boris Zbarsky1b226d42023-01-18 23:43:09 -05001076 HardwareFaultEnum current[] = 0;
1077 HardwareFaultEnum previous[] = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001078 }
1079
1080 critical event RadioFaultChange = 1 {
Boris Zbarsky1b226d42023-01-18 23:43:09 -05001081 RadioFaultEnum current[] = 0;
1082 RadioFaultEnum previous[] = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001083 }
1084
1085 critical event NetworkFaultChange = 2 {
Boris Zbarsky1b226d42023-01-18 23:43:09 -05001086 NetworkFaultEnum current[] = 0;
1087 NetworkFaultEnum previous[] = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001088 }
1089
1090 critical event BootReason = 3 {
Boris Zbarskydd6ae932023-01-09 12:08:17 -05001091 BootReasonEnum bootReason = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001092 }
1093
Boris Zbarskydd6ae932023-01-09 12:08:17 -05001094 readonly attribute NetworkInterface networkInterfaces[] = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001095 readonly attribute int16u rebootCount = 1;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001096 readonly attribute optional int64u upTime = 2;
1097 readonly attribute optional int32u totalOperationalHours = 3;
1098 readonly attribute optional BootReasonEnum bootReason = 4;
1099 readonly attribute optional HardwareFaultEnum activeHardwareFaults[] = 5;
1100 readonly attribute optional RadioFaultEnum activeRadioFaults[] = 6;
1101 readonly attribute optional NetworkFaultEnum activeNetworkFaults[] = 7;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001102 readonly attribute boolean testEventTriggersEnabled = 8;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -05001103 readonly attribute command_id generatedCommandList[] = 65528;
1104 readonly attribute command_id acceptedCommandList[] = 65529;
1105 readonly attribute event_id eventList[] = 65530;
1106 readonly attribute attrib_id attributeList[] = 65531;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001107 readonly attribute bitmap32 featureMap = 65532;
1108 readonly attribute int16u clusterRevision = 65533;
1109
1110 request struct TestEventTriggerRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04001111 octet_string<16> enableKey = 0;
1112 int64u eventTrigger = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001113 }
1114
Tennessee Carmel-Veilleuxd165f622023-10-31 10:50:04 -04001115 response struct TimeSnapshotResponse = 2 {
Tennessee Carmel-Veilleux1f3bcbc2023-12-14 16:52:18 -05001116 systime_ms systemTimeMs = 0;
1117 nullable posix_ms posixTimeMs = 1;
Tennessee Carmel-Veilleuxd165f622023-10-31 10:50:04 -04001118 }
1119
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001120 /** Provide a means for certification tests to trigger some test-plan-specific events */
Terence Hampson661cb822022-07-27 19:31:29 -04001121 command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001122 /** Take a snapshot of system time and epoch time. */
Tennessee Carmel-Veilleuxd165f622023-10-31 10:50:04 -04001123 command TimeSnapshot(): TimeSnapshotResponse = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001124}
1125
Andrei Litvin21c43e22023-04-04 18:50:26 -04001126/** 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 -05001127cluster SoftwareDiagnostics = 52 {
Andrei Litvin90d60f02023-11-23 16:51:51 -05001128 revision 1; // NOTE: Default/not specifically set
1129
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001130 bitmap Feature : bitmap32 {
Andrei Litvin89671e82023-10-29 21:27:57 -04001131 kWatermarks = 0x1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001132 }
1133
Boris Zbarskyaf7b3932023-01-06 12:07:58 -05001134 struct ThreadMetricsStruct {
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001135 int64u id = 0;
1136 optional char_string<8> name = 1;
1137 optional int32u stackFreeCurrent = 2;
1138 optional int32u stackFreeMinimum = 3;
1139 optional int32u stackSize = 4;
1140 }
1141
1142 info event SoftwareFault = 0 {
Andrei Litvin47836d22023-10-12 18:08:11 -04001143 int64u id = 0;
1144 optional char_string name = 1;
1145 optional octet_string faultRecording = 2;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001146 }
1147
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001148 readonly attribute optional ThreadMetricsStruct threadMetrics[] = 0;
1149 readonly attribute optional int64u currentHeapFree = 1;
1150 readonly attribute optional int64u currentHeapUsed = 2;
1151 readonly attribute optional int64u currentHeapHighWatermark = 3;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -05001152 readonly attribute command_id generatedCommandList[] = 65528;
1153 readonly attribute command_id acceptedCommandList[] = 65529;
1154 readonly attribute event_id eventList[] = 65530;
1155 readonly attribute attrib_id attributeList[] = 65531;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001156 readonly attribute bitmap32 featureMap = 65532;
1157 readonly attribute int16u clusterRevision = 65533;
1158
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001159 /** Reception of this command SHALL reset the values: The StackFreeMinimum field of the ThreadMetrics attribute, CurrentHeapHighWaterMark attribute. */
Andrei Litvin89671e82023-10-29 21:27:57 -04001160 command access(invoke: manage) ResetWatermarks(): DefaultSuccess = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001161}
1162
Andrei Litvin21c43e22023-04-04 18:50:26 -04001163/** The Thread Network 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 -05001164cluster ThreadNetworkDiagnostics = 53 {
Andrei Litvin90d60f02023-11-23 16:51:51 -05001165 revision 1; // NOTE: Default/not specifically set
1166
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001167 enum ConnectionStatusEnum : enum8 {
Boris Zbarsky6395db62023-01-06 12:08:22 -05001168 kConnected = 0;
1169 kNotConnected = 1;
1170 }
1171
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001172 enum NetworkFaultEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001173 kUnspecified = 0;
1174 kLinkDown = 1;
1175 kHardwareFailure = 2;
1176 kNetworkJammed = 3;
1177 }
1178
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001179 enum RoutingRoleEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001180 kUnspecified = 0;
1181 kUnassigned = 1;
1182 kSleepyEndDevice = 2;
1183 kEndDevice = 3;
Andrei Litvin413a9002023-06-28 13:02:18 -04001184 kREED = 4;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001185 kRouter = 5;
1186 kLeader = 6;
1187 }
1188
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001189 bitmap Feature : bitmap32 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001190 kPacketCounts = 0x1;
1191 kErrorCounts = 0x2;
1192 kMLECounts = 0x4;
1193 kMACCounts = 0x8;
1194 }
1195
Boris Zbarsky5a5d0482023-05-30 08:49:49 -04001196 struct NeighborTableStruct {
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001197 int64u extAddress = 0;
1198 int32u age = 1;
1199 int16u rloc16 = 2;
1200 int32u linkFrameCounter = 3;
1201 int32u mleFrameCounter = 4;
1202 int8u lqi = 5;
1203 nullable int8s averageRssi = 6;
1204 nullable int8s lastRssi = 7;
1205 int8u frameErrorRate = 8;
1206 int8u messageErrorRate = 9;
1207 boolean rxOnWhenIdle = 10;
1208 boolean fullThreadDevice = 11;
1209 boolean fullNetworkData = 12;
1210 boolean isChild = 13;
1211 }
1212
Bharat Rajuf25702c2023-04-12 11:14:12 -04001213 struct OperationalDatasetComponents {
1214 boolean activeTimestampPresent = 0;
1215 boolean pendingTimestampPresent = 1;
1216 boolean masterKeyPresent = 2;
1217 boolean networkNamePresent = 3;
1218 boolean extendedPanIdPresent = 4;
1219 boolean meshLocalPrefixPresent = 5;
1220 boolean delayPresent = 6;
1221 boolean panIdPresent = 7;
1222 boolean channelPresent = 8;
1223 boolean pskcPresent = 9;
1224 boolean securityPolicyPresent = 10;
1225 boolean channelMaskPresent = 11;
1226 }
1227
Boris Zbarsky5a5d0482023-05-30 08:49:49 -04001228 struct RouteTableStruct {
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001229 int64u extAddress = 0;
1230 int16u rloc16 = 1;
1231 int8u routerId = 2;
1232 int8u nextHop = 3;
1233 int8u pathCost = 4;
1234 int8u LQIIn = 5;
1235 int8u LQIOut = 6;
1236 int8u age = 7;
1237 boolean allocated = 8;
1238 boolean linkEstablished = 9;
1239 }
1240
1241 struct SecurityPolicy {
1242 int16u rotationTime = 0;
Boris Zbarsky6395db62023-01-06 12:08:22 -05001243 int16u flags = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001244 }
1245
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001246 info event ConnectionStatus = 0 {
Boris Zbarsky6395db62023-01-06 12:08:22 -05001247 ConnectionStatusEnum connectionStatus = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001248 }
1249
Yufeng Wang9e873d02022-08-01 17:51:27 -07001250 info event NetworkFaultChange = 1 {
Boris Zbarsky5a5d0482023-05-30 08:49:49 -04001251 NetworkFaultEnum current[] = 0;
1252 NetworkFaultEnum previous[] = 1;
Yufeng Wang9e873d02022-08-01 17:51:27 -07001253 }
1254
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001255 readonly attribute nullable int16u channel = 0;
Boris Zbarsky5a5d0482023-05-30 08:49:49 -04001256 readonly attribute nullable RoutingRoleEnum routingRole = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001257 readonly attribute nullable char_string<16> networkName = 2;
1258 readonly attribute nullable int16u panId = 3;
1259 readonly attribute nullable int64u extendedPanId = 4;
1260 readonly attribute nullable octet_string<17> meshLocalPrefix = 5;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001261 readonly attribute optional int64u overrunCount = 6;
Boris Zbarsky5a5d0482023-05-30 08:49:49 -04001262 readonly attribute NeighborTableStruct neighborTable[] = 7;
1263 readonly attribute RouteTableStruct routeTable[] = 8;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001264 readonly attribute nullable int32u partitionId = 9;
Andrei Litvin94a6f932023-11-02 15:07:36 -04001265 readonly attribute nullable int16u weighting = 10;
1266 readonly attribute nullable int16u dataVersion = 11;
1267 readonly attribute nullable int16u stableDataVersion = 12;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001268 readonly attribute nullable int8u leaderRouterId = 13;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001269 readonly attribute optional int16u detachedRoleCount = 14;
1270 readonly attribute optional int16u childRoleCount = 15;
1271 readonly attribute optional int16u routerRoleCount = 16;
1272 readonly attribute optional int16u leaderRoleCount = 17;
1273 readonly attribute optional int16u attachAttemptCount = 18;
1274 readonly attribute optional int16u partitionIdChangeCount = 19;
1275 readonly attribute optional int16u betterPartitionAttachAttemptCount = 20;
1276 readonly attribute optional int16u parentChangeCount = 21;
1277 readonly attribute optional int32u txTotalCount = 22;
1278 readonly attribute optional int32u txUnicastCount = 23;
1279 readonly attribute optional int32u txBroadcastCount = 24;
1280 readonly attribute optional int32u txAckRequestedCount = 25;
1281 readonly attribute optional int32u txAckedCount = 26;
1282 readonly attribute optional int32u txNoAckRequestedCount = 27;
1283 readonly attribute optional int32u txDataCount = 28;
1284 readonly attribute optional int32u txDataPollCount = 29;
1285 readonly attribute optional int32u txBeaconCount = 30;
1286 readonly attribute optional int32u txBeaconRequestCount = 31;
1287 readonly attribute optional int32u txOtherCount = 32;
1288 readonly attribute optional int32u txRetryCount = 33;
1289 readonly attribute optional int32u txDirectMaxRetryExpiryCount = 34;
1290 readonly attribute optional int32u txIndirectMaxRetryExpiryCount = 35;
1291 readonly attribute optional int32u txErrCcaCount = 36;
1292 readonly attribute optional int32u txErrAbortCount = 37;
1293 readonly attribute optional int32u txErrBusyChannelCount = 38;
1294 readonly attribute optional int32u rxTotalCount = 39;
1295 readonly attribute optional int32u rxUnicastCount = 40;
1296 readonly attribute optional int32u rxBroadcastCount = 41;
1297 readonly attribute optional int32u rxDataCount = 42;
1298 readonly attribute optional int32u rxDataPollCount = 43;
1299 readonly attribute optional int32u rxBeaconCount = 44;
1300 readonly attribute optional int32u rxBeaconRequestCount = 45;
1301 readonly attribute optional int32u rxOtherCount = 46;
1302 readonly attribute optional int32u rxAddressFilteredCount = 47;
1303 readonly attribute optional int32u rxDestAddrFilteredCount = 48;
1304 readonly attribute optional int32u rxDuplicatedCount = 49;
1305 readonly attribute optional int32u rxErrNoFrameCount = 50;
1306 readonly attribute optional int32u rxErrUnknownNeighborCount = 51;
1307 readonly attribute optional int32u rxErrInvalidSrcAddrCount = 52;
1308 readonly attribute optional int32u rxErrSecCount = 53;
1309 readonly attribute optional int32u rxErrFcsCount = 54;
1310 readonly attribute optional int32u rxErrOtherCount = 55;
1311 readonly attribute optional nullable int64u activeTimestamp = 56;
1312 readonly attribute optional nullable int64u pendingTimestamp = 57;
1313 readonly attribute optional nullable int32u delay = 58;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001314 readonly attribute nullable SecurityPolicy securityPolicy = 59;
Boris Zbarsky60568982022-08-08 15:27:14 -04001315 readonly attribute nullable octet_string<4> channelPage0Mask = 60;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001316 readonly attribute nullable OperationalDatasetComponents operationalDatasetComponents = 61;
Boris Zbarsky5a5d0482023-05-30 08:49:49 -04001317 readonly attribute NetworkFaultEnum activeNetworkFaultsList[] = 62;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -05001318 readonly attribute command_id generatedCommandList[] = 65528;
1319 readonly attribute command_id acceptedCommandList[] = 65529;
1320 readonly attribute event_id eventList[] = 65530;
1321 readonly attribute attrib_id attributeList[] = 65531;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001322 readonly attribute bitmap32 featureMap = 65532;
1323 readonly attribute int16u clusterRevision = 65533;
1324
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001325 /** Reception of this command SHALL reset the OverrunCount attributes to 0 */
Andrei Litvin94a6f932023-11-02 15:07:36 -04001326 command access(invoke: manage) ResetCounts(): DefaultSuccess = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001327}
1328
Andrei Litvin21c43e22023-04-04 18:50:26 -04001329/** The Wi-Fi Network 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 -05001330cluster WiFiNetworkDiagnostics = 54 {
Andrei Litvin90d60f02023-11-23 16:51:51 -05001331 revision 1; // NOTE: Default/not specifically set
1332
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001333 enum AssociationFailureCauseEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001334 kUnknown = 0;
1335 kAssociationFailed = 1;
1336 kAuthenticationFailed = 2;
1337 kSsidNotFound = 3;
1338 }
1339
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001340 enum ConnectionStatusEnum : enum8 {
Boris Zbarsky6083a3f2023-02-17 08:57:59 -05001341 kConnected = 0;
1342 kNotConnected = 1;
1343 }
1344
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001345 enum SecurityTypeEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001346 kUnspecified = 0;
1347 kNone = 1;
Andrei Litvin413a9002023-06-28 13:02:18 -04001348 kWEP = 2;
1349 kWPA = 3;
1350 kWPA2 = 4;
1351 kWPA3 = 5;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001352 }
1353
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001354 enum WiFiVersionEnum : enum8 {
Boris Zbarsky0f763272023-01-06 14:25:04 -05001355 kA = 0;
1356 kB = 1;
1357 kG = 2;
1358 kN = 3;
1359 kAc = 4;
1360 kAx = 5;
simonhmorris1a0fe1292023-05-25 19:12:06 +01001361 kAh = 6;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001362 }
1363
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001364 bitmap Feature : bitmap32 {
Vivien Nicolas855a76f2023-01-27 07:44:25 +01001365 kPacketCounts = 0x1;
1366 kErrorCounts = 0x2;
1367 }
1368
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001369 info event Disconnection = 0 {
Andrei Litvin47836d22023-10-12 18:08:11 -04001370 int16u reasonCode = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001371 }
1372
1373 info event AssociationFailure = 1 {
Andrei Litvinea0a8432023-11-02 10:56:32 -04001374 AssociationFailureCauseEnum associationFailureCause = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -04001375 int16u status = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001376 }
1377
1378 info event ConnectionStatus = 2 {
Boris Zbarsky6083a3f2023-02-17 08:57:59 -05001379 ConnectionStatusEnum connectionStatus = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001380 }
1381
1382 readonly attribute nullable octet_string<6> bssid = 0;
Boris Zbarsky6083a3f2023-02-17 08:57:59 -05001383 readonly attribute nullable SecurityTypeEnum securityType = 1;
1384 readonly attribute nullable WiFiVersionEnum wiFiVersion = 2;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001385 readonly attribute nullable int16u channelNumber = 3;
1386 readonly attribute nullable int8s rssi = 4;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001387 readonly attribute optional nullable int32u beaconLostCount = 5;
1388 readonly attribute optional nullable int32u beaconRxCount = 6;
1389 readonly attribute optional nullable int32u packetMulticastRxCount = 7;
1390 readonly attribute optional nullable int32u packetMulticastTxCount = 8;
1391 readonly attribute optional nullable int32u packetUnicastRxCount = 9;
1392 readonly attribute optional nullable int32u packetUnicastTxCount = 10;
1393 readonly attribute optional nullable int64u currentMaxRate = 11;
1394 readonly attribute optional nullable int64u overrunCount = 12;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -05001395 readonly attribute command_id generatedCommandList[] = 65528;
1396 readonly attribute command_id acceptedCommandList[] = 65529;
1397 readonly attribute event_id eventList[] = 65530;
1398 readonly attribute attrib_id attributeList[] = 65531;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001399 readonly attribute bitmap32 featureMap = 65532;
1400 readonly attribute int16u clusterRevision = 65533;
1401
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001402 /** Reception of this command SHALL reset the Breacon and Packet related count attributes to 0 */
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001403 command ResetCounts(): DefaultSuccess = 0;
1404}
1405
Andrei Litvin21c43e22023-04-04 18:50:26 -04001406/** The Ethernet Network 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 -05001407cluster EthernetNetworkDiagnostics = 55 {
Andrei Litvin90d60f02023-11-23 16:51:51 -05001408 revision 1; // NOTE: Default/not specifically set
1409
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001410 enum PHYRateEnum : enum8 {
Boris Zbarsky13039ae2023-01-06 18:59:16 -05001411 kRate10M = 0;
1412 kRate100M = 1;
1413 kRate1G = 2;
Andrei Litvin413a9002023-06-28 13:02:18 -04001414 kRate25G = 3;
Boris Zbarsky13039ae2023-01-06 18:59:16 -05001415 kRate5G = 4;
1416 kRate10G = 5;
1417 kRate40G = 6;
1418 kRate100G = 7;
1419 kRate200G = 8;
1420 kRate400G = 9;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001421 }
1422
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001423 bitmap Feature : bitmap32 {
Vivien Nicolas855a76f2023-01-27 07:44:25 +01001424 kPacketCounts = 0x1;
1425 kErrorCounts = 0x2;
1426 }
1427
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001428 readonly attribute optional nullable PHYRateEnum PHYRate = 0;
1429 readonly attribute optional nullable boolean fullDuplex = 1;
1430 readonly attribute optional int64u packetRxCount = 2;
1431 readonly attribute optional int64u packetTxCount = 3;
1432 readonly attribute optional int64u txErrCount = 4;
1433 readonly attribute optional int64u collisionCount = 5;
1434 readonly attribute optional int64u overrunCount = 6;
1435 readonly attribute optional nullable boolean carrierDetect = 7;
1436 readonly attribute optional int64u timeSinceReset = 8;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -05001437 readonly attribute command_id generatedCommandList[] = 65528;
1438 readonly attribute command_id acceptedCommandList[] = 65529;
1439 readonly attribute event_id eventList[] = 65530;
1440 readonly attribute attrib_id attributeList[] = 65531;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001441 readonly attribute bitmap32 featureMap = 65532;
1442 readonly attribute int16u clusterRevision = 65533;
1443
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001444 /** Reception of this command SHALL reset the attributes: PacketRxCount, PacketTxCount, TxErrCount, CollisionCount, OverrunCount to 0 */
Andrei Litvinb3327f82023-10-27 17:23:02 -04001445 command access(invoke: manage) ResetCounts(): DefaultSuccess = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001446}
1447
Andrei Litvin21c43e22023-04-04 18:50:26 -04001448/** Commands to trigger a Node to allow a new Administrator to commission it. */
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001449cluster AdministratorCommissioning = 60 {
Andrei Litvin90d60f02023-11-23 16:51:51 -05001450 revision 1; // NOTE: Default/not specifically set
1451
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001452 enum CommissioningWindowStatusEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001453 kWindowNotOpen = 0;
1454 kEnhancedWindowOpen = 1;
1455 kBasicWindowOpen = 2;
1456 }
1457
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001458 enum StatusCode : enum8 {
Tennessee Carmel-Veilleuxc24577d2022-08-16 00:27:47 -04001459 kBusy = 2;
1460 kPAKEParameterError = 3;
1461 kWindowNotOpen = 4;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001462 }
1463
Andrei Litvin1f9814e2023-10-26 15:35:06 -04001464 bitmap Feature : bitmap32 {
1465 kBasic = 0x1;
1466 }
1467
Boris Zbarsky232b5a12023-01-18 21:35:14 -05001468 readonly attribute CommissioningWindowStatusEnum windowStatus = 0;
Boris Zbarsky17c8da62022-07-31 01:47:37 -04001469 readonly attribute nullable fabric_idx adminFabricIndex = 1;
Andrei Litvin1f9814e2023-10-26 15:35:06 -04001470 readonly attribute nullable vendor_id adminVendorId = 2;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -05001471 readonly attribute command_id generatedCommandList[] = 65528;
1472 readonly attribute command_id acceptedCommandList[] = 65529;
1473 readonly attribute event_id eventList[] = 65530;
1474 readonly attribute attrib_id attributeList[] = 65531;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001475 readonly attribute bitmap32 featureMap = 65532;
1476 readonly attribute int16u clusterRevision = 65533;
1477
1478 request struct OpenCommissioningWindowRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04001479 int16u commissioningTimeout = 0;
1480 octet_string PAKEPasscodeVerifier = 1;
1481 int16u discriminator = 2;
1482 int32u iterations = 3;
Andrei Litvin1f9814e2023-10-26 15:35:06 -04001483 octet_string<32> salt = 4;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001484 }
1485
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001486 request struct OpenBasicCommissioningWindowRequest {
1487 int16u commissioningTimeout = 0;
1488 }
1489
1490 /** This command is used by a current Administrator to instruct a Node to go into commissioning mode using enhanced commissioning method. */
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001491 timed command access(invoke: administer) OpenCommissioningWindow(OpenCommissioningWindowRequest): DefaultSuccess = 0;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001492 /** 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. */
1493 timed command access(invoke: administer) OpenBasicCommissioningWindow(OpenBasicCommissioningWindowRequest): DefaultSuccess = 1;
1494 /** 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. */
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001495 timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2;
1496}
1497
Andrei Litvin21c43e22023-04-04 18:50:26 -04001498/** 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 -05001499cluster OperationalCredentials = 62 {
Andrei Litvin90d60f02023-11-23 16:51:51 -05001500 revision 1; // NOTE: Default/not specifically set
1501
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001502 enum CertificateChainTypeEnum : enum8 {
Boris Zbarskycccce012023-01-18 11:27:01 -05001503 kDACCertificate = 1;
1504 kPAICertificate = 2;
1505 }
1506
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001507 enum NodeOperationalCertStatusEnum : enum8 {
Andrei Litvin413a9002023-06-28 13:02:18 -04001508 kOK = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001509 kInvalidPublicKey = 1;
1510 kInvalidNodeOpId = 2;
1511 kInvalidNOC = 3;
1512 kMissingCsr = 4;
1513 kTableFull = 5;
1514 kInvalidAdminSubject = 6;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001515 kFabricConflict = 9;
1516 kLabelConflict = 10;
1517 kInvalidFabricIndex = 11;
1518 }
1519
Boris Zbarskycccce012023-01-18 11:27:01 -05001520 fabric_scoped struct FabricDescriptorStruct {
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001521 octet_string<65> rootPublicKey = 1;
Boris Zbarskycccce012023-01-18 11:27:01 -05001522 vendor_id vendorID = 2;
1523 fabric_id fabricID = 3;
1524 node_id nodeID = 4;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001525 char_string<32> label = 5;
1526 fabric_idx fabricIndex = 254;
1527 }
1528
Bharat Rajuf25702c2023-04-12 11:14:12 -04001529 fabric_scoped struct NOCStruct {
1530 fabric_sensitive octet_string noc = 1;
1531 nullable fabric_sensitive octet_string icac = 2;
1532 fabric_idx fabricIndex = 254;
1533 }
1534
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001535 readonly attribute access(read: administer) NOCStruct NOCs[] = 0;
Boris Zbarskycccce012023-01-18 11:27:01 -05001536 readonly attribute FabricDescriptorStruct fabrics[] = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001537 readonly attribute int8u supportedFabrics = 2;
1538 readonly attribute int8u commissionedFabrics = 3;
Andrei Litvin47836d22023-10-12 18:08:11 -04001539 readonly attribute octet_string trustedRootCertificates[] = 4;
Vivien Nicolasf93e6cb2022-07-29 13:23:24 +02001540 readonly attribute int8u currentFabricIndex = 5;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -05001541 readonly attribute command_id generatedCommandList[] = 65528;
1542 readonly attribute command_id acceptedCommandList[] = 65529;
1543 readonly attribute event_id eventList[] = 65530;
1544 readonly attribute attrib_id attributeList[] = 65531;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001545 readonly attribute bitmap32 featureMap = 65532;
1546 readonly attribute int16u clusterRevision = 65533;
1547
1548 request struct AttestationRequestRequest {
Andrei Litvin0da67af2023-10-27 17:28:25 -04001549 octet_string<32> attestationNonce = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001550 }
1551
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001552 response struct AttestationResponse = 1 {
1553 octet_string<900> attestationElements = 0;
1554 octet_string<64> attestationSignature = 1;
1555 }
1556
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001557 request struct CertificateChainRequestRequest {
Boris Zbarskycccce012023-01-18 11:27:01 -05001558 CertificateChainTypeEnum certificateType = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001559 }
1560
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001561 response struct CertificateChainResponse = 3 {
1562 octet_string<600> certificate = 0;
1563 }
1564
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001565 request struct CSRRequestRequest {
Andrei Litvin0da67af2023-10-27 17:28:25 -04001566 octet_string<32> CSRNonce = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001567 optional boolean isForUpdateNOC = 1;
1568 }
1569
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001570 response struct CSRResponse = 5 {
1571 octet_string NOCSRElements = 0;
1572 octet_string attestationSignature = 1;
1573 }
1574
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001575 request struct AddNOCRequest {
Andrei Litvin0da67af2023-10-27 17:28:25 -04001576 octet_string<400> NOCValue = 0;
1577 optional octet_string<400> ICACValue = 1;
1578 octet_string<16> IPKValue = 2;
Andrei Litvin47836d22023-10-12 18:08:11 -04001579 int64u caseAdminSubject = 3;
1580 vendor_id adminVendorId = 4;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001581 }
1582
1583 request struct UpdateNOCRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04001584 octet_string NOCValue = 0;
1585 optional octet_string ICACValue = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001586 }
1587
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001588 response struct NOCResponse = 8 {
1589 NodeOperationalCertStatusEnum statusCode = 0;
1590 optional fabric_idx fabricIndex = 1;
1591 optional char_string<128> debugText = 2;
1592 }
1593
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001594 request struct UpdateFabricLabelRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04001595 char_string<32> label = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001596 }
1597
1598 request struct RemoveFabricRequest {
1599 fabric_idx fabricIndex = 0;
1600 }
1601
1602 request struct AddTrustedRootCertificateRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04001603 octet_string rootCACertificate = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001604 }
1605
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001606 /** Sender is requesting attestation information from the receiver. */
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001607 command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001608 /** Sender is requesting a device attestation certificate from the receiver. */
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001609 command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001610 /** Sender is requesting a certificate signing request (CSR) from the receiver. */
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001611 command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001612 /** Sender is requesting to add the new node operational certificates. */
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001613 command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001614 /** Sender is requesting to update the node operational certificates. */
Andrei Litvin33aecf82022-07-21 11:29:56 -04001615 fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001616 /** 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. */
Andrei Litvin33aecf82022-07-21 11:29:56 -04001617 fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001618 /** This command is used by Administrative Nodes to remove a given fabric index and delete all associated fabric-scoped data. */
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001619 command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001620 /** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001621 command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
1622}
1623
Andrei Litvin21c43e22023-04-04 18:50:26 -04001624/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001625cluster GroupKeyManagement = 63 {
Andrei Litvin90d60f02023-11-23 16:51:51 -05001626 revision 1; // NOTE: Default/not specifically set
1627
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001628 enum GroupKeySecurityPolicyEnum : enum8 {
Evgeniy Morozovf62daff2022-06-24 00:14:26 +03001629 kTrustFirst = 0;
1630 kCacheAndSync = 1;
1631 }
1632
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001633 bitmap Feature : bitmap32 {
Tennessee Carmel-Veilleuxf71a48f2023-07-31 15:58:40 -04001634 kCacheAndSync = 0x1;
1635 }
1636
Andrei Litvind38820d2022-10-04 09:25:26 -04001637 fabric_scoped struct GroupInfoMapStruct {
Evgeniy Morozovf62daff2022-06-24 00:14:26 +03001638 group_id groupId = 1;
1639 endpoint_no endpoints[] = 2;
1640 optional char_string<16> groupName = 3;
1641 fabric_idx fabricIndex = 254;
1642 }
1643
Bharat Rajuf25702c2023-04-12 11:14:12 -04001644 fabric_scoped struct GroupKeyMapStruct {
1645 group_id groupId = 1;
1646 int16u groupKeySetID = 2;
1647 fabric_idx fabricIndex = 254;
1648 }
1649
Evgeniy Morozovf62daff2022-06-24 00:14:26 +03001650 struct GroupKeySetStruct {
1651 int16u groupKeySetID = 0;
Boris Zbarskyaab0d7c2023-02-21 14:46:25 -05001652 GroupKeySecurityPolicyEnum groupKeySecurityPolicy = 1;
Evgeniy Morozovf62daff2022-06-24 00:14:26 +03001653 nullable octet_string<16> epochKey0 = 2;
1654 nullable epoch_us epochStartTime0 = 3;
1655 nullable octet_string<16> epochKey1 = 4;
1656 nullable epoch_us epochStartTime1 = 5;
1657 nullable octet_string<16> epochKey2 = 6;
1658 nullable epoch_us epochStartTime2 = 7;
1659 }
1660
1661 attribute access(write: manage) GroupKeyMapStruct groupKeyMap[] = 0;
1662 readonly attribute GroupInfoMapStruct groupTable[] = 1;
1663 readonly attribute int16u maxGroupsPerFabric = 2;
1664 readonly attribute int16u maxGroupKeysPerFabric = 3;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -05001665 readonly attribute command_id generatedCommandList[] = 65528;
1666 readonly attribute command_id acceptedCommandList[] = 65529;
1667 readonly attribute event_id eventList[] = 65530;
1668 readonly attribute attrib_id attributeList[] = 65531;
Evgeniy Morozovf62daff2022-06-24 00:14:26 +03001669 readonly attribute bitmap32 featureMap = 65532;
1670 readonly attribute int16u clusterRevision = 65533;
1671
1672 request struct KeySetWriteRequest {
1673 GroupKeySetStruct groupKeySet = 0;
1674 }
1675
1676 request struct KeySetReadRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04001677 int16u groupKeySetID = 0;
Evgeniy Morozovf62daff2022-06-24 00:14:26 +03001678 }
1679
Evgeniy Morozovf62daff2022-06-24 00:14:26 +03001680 response struct KeySetReadResponse = 2 {
1681 GroupKeySetStruct groupKeySet = 0;
1682 }
1683
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001684 request struct KeySetRemoveRequest {
1685 int16u groupKeySetID = 0;
1686 }
1687
Evgeniy Morozovf62daff2022-06-24 00:14:26 +03001688 response struct KeySetReadAllIndicesResponse = 5 {
Andrei Litvin47836d22023-10-12 18:08:11 -04001689 int16u groupKeySetIDs[] = 0;
Evgeniy Morozovf62daff2022-06-24 00:14:26 +03001690 }
1691
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001692 /** Write a new set of keys for the given key set id. */
Andrei Litvin33aecf82022-07-21 11:29:56 -04001693 fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001694 /** Read the keys for a given key set id. */
Andrei Litvin33aecf82022-07-21 11:29:56 -04001695 fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001696 /** Revoke a Root Key from a Group */
Andrei Litvin33aecf82022-07-21 11:29:56 -04001697 fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001698 /** Return the list of Group Key Sets associated with the accessing fabric */
Boris Zbarsky3d447872023-06-06 10:15:31 -04001699 fabric command access(invoke: administer) KeySetReadAllIndices(): KeySetReadAllIndicesResponse = 4;
Evgeniy Morozovf62daff2022-06-24 00:14:26 +03001700}
1701
Andrei Litvin21c43e22023-04-04 18:50:26 -04001702/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only
1703labels. */
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001704cluster FixedLabel = 64 {
Andrei Litvin90d60f02023-11-23 16:51:51 -05001705 revision 1; // NOTE: Default/not specifically set
1706
Bharat Rajuf25702c2023-04-12 11:14:12 -04001707 struct LabelStruct {
1708 char_string<16> label = 0;
1709 char_string<16> value = 1;
1710 }
1711
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001712 readonly attribute LabelStruct labelList[] = 0;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -05001713 readonly attribute command_id generatedCommandList[] = 65528;
1714 readonly attribute command_id acceptedCommandList[] = 65529;
1715 readonly attribute event_id eventList[] = 65530;
1716 readonly attribute attrib_id attributeList[] = 65531;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001717 readonly attribute bitmap32 featureMap = 65532;
1718 readonly attribute int16u clusterRevision = 65533;
1719}
1720
Andrei Litvin21c43e22023-04-04 18:50:26 -04001721/** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001722cluster UserLabel = 65 {
Andrei Litvin90d60f02023-11-23 16:51:51 -05001723 revision 1; // NOTE: Default/not specifically set
1724
Bharat Rajuf25702c2023-04-12 11:14:12 -04001725 struct LabelStruct {
1726 char_string<16> label = 0;
1727 char_string<16> value = 1;
1728 }
1729
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001730 attribute access(write: manage) LabelStruct labelList[] = 0;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -05001731 readonly attribute command_id generatedCommandList[] = 65528;
1732 readonly attribute command_id acceptedCommandList[] = 65529;
1733 readonly attribute event_id eventList[] = 65530;
1734 readonly attribute attrib_id attributeList[] = 65531;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001735 readonly attribute bitmap32 featureMap = 65532;
1736 readonly attribute int16u clusterRevision = 65533;
1737}
1738
mkardous-silabse1493502023-08-03 10:43:24 -04001739/** Allows servers to ensure that listed clients are notified when a server is available for communication. */
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001740cluster IcdManagement = 70 {
Andrei Litvin90d60f02023-11-23 16:51:51 -05001741 revision 2;
1742
lpbeliveau-silabs3c0d89d2024-01-12 16:37:44 -05001743 enum OperatingModeEnum : enum8 {
1744 kSIT = 0;
1745 kLIT = 1;
1746 }
1747
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001748 bitmap Feature : bitmap32 {
mkardous-silabse1493502023-08-03 10:43:24 -04001749 kCheckInProtocolSupport = 0x1;
mkardous-silabs7be98b12023-10-19 09:03:16 -04001750 kUserActiveModeTrigger = 0x2;
1751 kLongIdleTimeSupport = 0x4;
mkardous-silabse1493502023-08-03 10:43:24 -04001752 }
1753
mkardous-silabsc0376362023-10-27 17:18:07 -04001754 bitmap UserActiveModeTriggerBitmap : bitmap32 {
1755 kPowerCycle = 0x1;
1756 kSettingsMenu = 0x2;
1757 kCustomInstruction = 0x4;
1758 kDeviceManual = 0x8;
1759 kActuateSensor = 0x10;
1760 kActuateSensorSeconds = 0x20;
1761 kActuateSensorTimes = 0x40;
1762 kActuateSensorLightsBlink = 0x80;
1763 kResetButton = 0x100;
1764 kResetButtonLightsBlink = 0x200;
1765 kResetButtonSeconds = 0x400;
1766 kResetButtonTimes = 0x800;
1767 kSetupButton = 0x1000;
1768 kSetupButtonSeconds = 0x2000;
1769 kSetupButtonLightsBlink = 0x4000;
1770 kSetupButtonTimes = 0x8000;
1771 kAppDefinedButton = 0x10000;
1772 }
1773
mkardous-silabse1493502023-08-03 10:43:24 -04001774 fabric_scoped struct MonitoringRegistrationStruct {
1775 fabric_sensitive node_id checkInNodeID = 1;
1776 fabric_sensitive int64u monitoredSubject = 2;
mkardous-silabse1493502023-08-03 10:43:24 -04001777 fabric_idx fabricIndex = 254;
1778 }
1779
mkardous-silabs1b6a04a2024-01-09 13:23:37 -05001780 critical event OnTransitionToActiveMode = 0 {
1781 }
1782
mkardous-silabs3aac08f2023-10-24 18:30:16 -04001783 readonly attribute int32u idleModeDuration = 0;
1784 readonly attribute int32u activeModeDuration = 1;
mkardous-silabse1493502023-08-03 10:43:24 -04001785 readonly attribute int16u activeModeThreshold = 2;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001786 readonly attribute access(read: administer) optional MonitoringRegistrationStruct registeredClients[] = 3;
1787 readonly attribute access(read: administer) optional int32u ICDCounter = 4;
1788 readonly attribute optional int16u clientsSupportedPerFabric = 5;
1789 readonly attribute optional UserActiveModeTriggerBitmap userActiveModeTriggerHint = 6;
1790 readonly attribute optional char_string<128> userActiveModeTriggerInstruction = 7;
lpbeliveau-silabs3c0d89d2024-01-12 16:37:44 -05001791 readonly attribute optional OperatingModeEnum operatingMode = 8;
mkardous-silabse1493502023-08-03 10:43:24 -04001792 readonly attribute command_id generatedCommandList[] = 65528;
1793 readonly attribute command_id acceptedCommandList[] = 65529;
1794 readonly attribute event_id eventList[] = 65530;
1795 readonly attribute attrib_id attributeList[] = 65531;
1796 readonly attribute bitmap32 featureMap = 65532;
1797 readonly attribute int16u clusterRevision = 65533;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001798
1799 request struct RegisterClientRequest {
1800 node_id checkInNodeID = 0;
1801 int64u monitoredSubject = 1;
1802 octet_string<16> key = 2;
1803 optional octet_string<16> verificationKey = 3;
1804 }
1805
1806 response struct RegisterClientResponse = 1 {
1807 int32u ICDCounter = 0;
1808 }
1809
1810 request struct UnregisterClientRequest {
1811 node_id checkInNodeID = 0;
1812 optional octet_string<16> verificationKey = 1;
1813 }
1814
1815 response struct StayActiveResponse = 4 {
1816 int32u promisedActiveDuration = 0;
1817 }
1818
1819 /** Register a client to the end device */
1820 fabric command access(invoke: manage) RegisterClient(RegisterClientRequest): RegisterClientResponse = 0;
1821 /** Unregister a client from an end device */
1822 fabric command access(invoke: manage) UnregisterClient(UnregisterClientRequest): DefaultSuccess = 2;
1823 /** Request the end device to stay in Active Mode for an additional ActiveModeThreshold */
1824 command access(invoke: manage) StayActiveRequest(): StayActiveResponse = 3;
mkardous-silabse1493502023-08-03 10:43:24 -04001825}
1826
Andrei Litvin21c43e22023-04-04 18:50:26 -04001827/** An interface to a generic way to secure a door */
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001828cluster DoorLock = 257 {
Andrei Litvin90d60f02023-11-23 16:51:51 -05001829 revision 7;
1830
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001831 enum AlarmCodeEnum : enum8 {
krypton362e94d8b2022-04-14 08:20:08 -07001832 kLockJammed = 0;
1833 kLockFactoryReset = 1;
1834 kLockRadioPowerCycled = 3;
1835 kWrongCodeEntryLimit = 4;
1836 kFrontEsceutcheonRemoved = 5;
1837 kDoorForcedOpen = 6;
1838 kDoorAjar = 7;
1839 kForcedUser = 8;
1840 }
1841
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001842 enum CredentialRuleEnum : enum8 {
krypton362e94d8b2022-04-14 08:20:08 -07001843 kSingle = 0;
Boris Zbarskyab00c532023-01-18 19:49:01 -05001844 kDual = 1;
krypton362e94d8b2022-04-14 08:20:08 -07001845 kTri = 2;
1846 }
1847
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001848 enum CredentialTypeEnum : enum8 {
krypton362e94d8b2022-04-14 08:20:08 -07001849 kProgrammingPIN = 0;
Andrei Litvin413a9002023-06-28 13:02:18 -04001850 kPIN = 1;
1851 kRFID = 2;
krypton362e94d8b2022-04-14 08:20:08 -07001852 kFingerprint = 3;
1853 kFingerVein = 4;
1854 kFace = 5;
Nivi Sarkar6b219352024-01-09 11:35:13 -08001855 kAliroCredentialIssuerKey = 6;
1856 kAliroEvictableEndpointKey = 7;
1857 kAliroNonEvictableEndpointKey = 8;
krypton362e94d8b2022-04-14 08:20:08 -07001858 }
1859
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001860 enum DataOperationTypeEnum : enum8 {
krypton362e94d8b2022-04-14 08:20:08 -07001861 kAdd = 0;
1862 kClear = 1;
1863 kModify = 2;
1864 }
1865
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001866 enum DlLockState : enum8 {
krypton362e94d8b2022-04-14 08:20:08 -07001867 kNotFullyLocked = 0;
1868 kLocked = 1;
1869 kUnlocked = 2;
Marc Mikolitsdb088d52023-05-17 21:17:04 +02001870 kUnlatched = 3;
krypton362e94d8b2022-04-14 08:20:08 -07001871 }
1872
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001873 enum DlLockType : enum8 {
krypton362e94d8b2022-04-14 08:20:08 -07001874 kDeadBolt = 0;
1875 kMagnetic = 1;
1876 kOther = 2;
1877 kMortise = 3;
1878 kRim = 4;
1879 kLatchBolt = 5;
1880 kCylindricalLock = 6;
1881 kTubularLock = 7;
1882 kInterconnectedLock = 8;
1883 kDeadLatch = 9;
1884 kDoorFurniture = 10;
Marc Mikolitsdb088d52023-05-17 21:17:04 +02001885 kEurocylinder = 11;
krypton362e94d8b2022-04-14 08:20:08 -07001886 }
1887
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001888 enum DlStatus : enum8 {
krypton362e94d8b2022-04-14 08:20:08 -07001889 kSuccess = 0;
1890 kFailure = 1;
1891 kDuplicate = 2;
1892 kOccupied = 3;
1893 kInvalidField = 133;
Evgeniy Morozov37fb44a2022-05-13 21:45:58 +03001894 kResourceExhausted = 137;
krypton362e94d8b2022-04-14 08:20:08 -07001895 kNotFound = 139;
1896 }
1897
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001898 enum DoorLockOperationEventCode : enum8 {
krypton362e94d8b2022-04-14 08:20:08 -07001899 kUnknownOrMfgSpecific = 0;
1900 kLock = 1;
1901 kUnlock = 2;
1902 kLockInvalidPinOrId = 3;
1903 kLockInvalidSchedule = 4;
1904 kUnlockInvalidPinOrId = 5;
1905 kUnlockInvalidSchedule = 6;
1906 kOneTouchLock = 7;
1907 kKeyLock = 8;
1908 kKeyUnlock = 9;
1909 kAutoLock = 10;
1910 kScheduleLock = 11;
1911 kScheduleUnlock = 12;
1912 kManualLock = 13;
1913 kManualUnlock = 14;
1914 }
1915
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001916 enum DoorLockProgrammingEventCode : enum8 {
krypton362e94d8b2022-04-14 08:20:08 -07001917 kUnknownOrMfgSpecific = 0;
1918 kMasterCodeChanged = 1;
1919 kPinAdded = 2;
1920 kPinDeleted = 3;
1921 kPinChanged = 4;
1922 kIdAdded = 5;
1923 kIdDeleted = 6;
1924 }
1925
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001926 enum DoorLockSetPinOrIdStatus : enum8 {
krypton362e94d8b2022-04-14 08:20:08 -07001927 kSuccess = 0;
1928 kGeneralFailure = 1;
1929 kMemoryFull = 2;
1930 kDuplicateCodeError = 3;
1931 }
1932
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001933 enum DoorLockUserStatus : enum8 {
krypton362e94d8b2022-04-14 08:20:08 -07001934 kAvailable = 0;
1935 kOccupiedEnabled = 1;
1936 kOccupiedDisabled = 3;
1937 kNotSupported = 255;
1938 }
1939
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001940 enum DoorLockUserType : enum8 {
krypton362e94d8b2022-04-14 08:20:08 -07001941 kUnrestricted = 0;
1942 kYearDayScheduleUser = 1;
1943 kWeekDayScheduleUser = 2;
1944 kMasterUser = 3;
1945 kNonAccessUser = 4;
1946 kNotSupported = 255;
1947 }
1948
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001949 enum DoorStateEnum : enum8 {
Boris Zbarskyab00c532023-01-18 19:49:01 -05001950 kDoorOpen = 0;
1951 kDoorClosed = 1;
1952 kDoorJammed = 2;
1953 kDoorForcedOpen = 3;
1954 kDoorUnspecifiedError = 4;
1955 kDoorAjar = 5;
1956 }
1957
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001958 enum LockDataTypeEnum : enum8 {
Boris Zbarskyab00c532023-01-18 19:49:01 -05001959 kUnspecified = 0;
1960 kProgrammingCode = 1;
1961 kUserIndex = 2;
1962 kWeekDaySchedule = 3;
1963 kYearDaySchedule = 4;
1964 kHolidaySchedule = 5;
Andrei Litvin413a9002023-06-28 13:02:18 -04001965 kPIN = 6;
1966 kRFID = 7;
Boris Zbarskyab00c532023-01-18 19:49:01 -05001967 kFingerprint = 8;
Boris Zbarsky8612d3c2023-02-13 10:21:53 -05001968 kFingerVein = 9;
Boris Zbarskyd1f553d2023-02-20 14:58:55 -05001969 kFace = 10;
Nivi Sarkar6b219352024-01-09 11:35:13 -08001970 kAliroCredentialIssuerKey = 11;
1971 kAliroEvictableEndpointKey = 12;
1972 kAliroNonEvictableEndpointKey = 13;
Boris Zbarskyab00c532023-01-18 19:49:01 -05001973 }
1974
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001975 enum LockOperationTypeEnum : enum8 {
Boris Zbarskyab00c532023-01-18 19:49:01 -05001976 kLock = 0;
1977 kUnlock = 1;
1978 kNonAccessUserEvent = 2;
1979 kForcedUserEvent = 3;
Marc Mikolitsdb088d52023-05-17 21:17:04 +02001980 kUnlatch = 4;
Boris Zbarskyab00c532023-01-18 19:49:01 -05001981 }
1982
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001983 enum OperatingModeEnum : enum8 {
Boris Zbarskyab00c532023-01-18 19:49:01 -05001984 kNormal = 0;
1985 kVacation = 1;
1986 kPrivacy = 2;
1987 kNoRemoteLockUnlock = 3;
1988 kPassage = 4;
1989 }
1990
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001991 enum OperationErrorEnum : enum8 {
Boris Zbarskyab00c532023-01-18 19:49:01 -05001992 kUnspecified = 0;
1993 kInvalidCredential = 1;
1994 kDisabledUserDenied = 2;
1995 kRestricted = 3;
1996 kInsufficientBattery = 4;
1997 }
1998
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001999 enum OperationSourceEnum : enum8 {
Boris Zbarskyab00c532023-01-18 19:49:01 -05002000 kUnspecified = 0;
2001 kManual = 1;
2002 kProprietaryRemote = 2;
2003 kKeypad = 3;
2004 kAuto = 4;
2005 kButton = 5;
2006 kSchedule = 6;
2007 kRemote = 7;
Andrei Litvin413a9002023-06-28 13:02:18 -04002008 kRFID = 8;
Boris Zbarskyab00c532023-01-18 19:49:01 -05002009 kBiometric = 9;
Nivi Sarkar6b219352024-01-09 11:35:13 -08002010 kAliro = 10;
Boris Zbarskyab00c532023-01-18 19:49:01 -05002011 }
2012
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04002013 enum UserStatusEnum : enum8 {
Boris Zbarskyab00c532023-01-18 19:49:01 -05002014 kAvailable = 0;
2015 kOccupiedEnabled = 1;
2016 kOccupiedDisabled = 3;
2017 }
2018
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04002019 enum UserTypeEnum : enum8 {
Boris Zbarskyab00c532023-01-18 19:49:01 -05002020 kUnrestrictedUser = 0;
2021 kYearDayScheduleUser = 1;
2022 kWeekDayScheduleUser = 2;
2023 kProgrammingUser = 3;
2024 kNonAccessUser = 4;
2025 kForcedUser = 5;
2026 kDisposableUser = 6;
2027 kExpiringUser = 7;
2028 kScheduleRestrictedUser = 8;
2029 kRemoteOnlyUser = 9;
2030 }
2031
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04002032 bitmap DaysMaskMap : bitmap8 {
Boris Zbarskyab00c532023-01-18 19:49:01 -05002033 kSunday = 0x1;
2034 kMonday = 0x2;
2035 kTuesday = 0x4;
2036 kWednesday = 0x8;
2037 kThursday = 0x10;
2038 kFriday = 0x20;
2039 kSaturday = 0x40;
2040 }
2041
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04002042 bitmap DlCredentialRuleMask : bitmap8 {
krypton362e94d8b2022-04-14 08:20:08 -07002043 kSingle = 0x1;
2044 kDual = 0x2;
2045 kTri = 0x4;
2046 }
2047
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04002048 bitmap DlCredentialRulesSupport : bitmap8 {
krypton362e94d8b2022-04-14 08:20:08 -07002049 kSingle = 0x1;
2050 kDual = 0x2;
2051 kTri = 0x4;
2052 }
2053
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04002054 bitmap DlDefaultConfigurationRegister : bitmap16 {
krypton362e94d8b2022-04-14 08:20:08 -07002055 kEnableLocalProgrammingEnabled = 0x1;
2056 kKeypadInterfaceDefaultAccessEnabled = 0x2;
2057 kRemoteInterfaceDefaultAccessIsEnabled = 0x4;
2058 kSoundEnabled = 0x20;
2059 kAutoRelockTimeSet = 0x40;
2060 kLEDSettingsSet = 0x80;
2061 }
2062
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04002063 bitmap DlKeypadOperationEventMask : bitmap16 {
krypton362e94d8b2022-04-14 08:20:08 -07002064 kUnknown = 0x1;
2065 kLock = 0x2;
2066 kUnlock = 0x4;
2067 kLockInvalidPIN = 0x8;
2068 kLockInvalidSchedule = 0x10;
2069 kUnlockInvalidCode = 0x20;
2070 kUnlockInvalidSchedule = 0x40;
2071 kNonAccessUserOpEvent = 0x80;
2072 }
2073
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04002074 bitmap DlKeypadProgrammingEventMask : bitmap16 {
krypton362e94d8b2022-04-14 08:20:08 -07002075 kUnknown = 0x1;
2076 kProgrammingPINChanged = 0x2;
2077 kPINAdded = 0x4;
2078 kPINCleared = 0x8;
2079 kPINChanged = 0x10;
2080 }
2081
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04002082 bitmap DlLocalProgrammingFeatures : bitmap8 {
krypton362e94d8b2022-04-14 08:20:08 -07002083 kAddUsersCredentialsSchedulesLocally = 0x1;
2084 kModifyUsersCredentialsSchedulesLocally = 0x2;
2085 kClearUsersCredentialsSchedulesLocally = 0x4;
2086 kAdjustLockSettingsLocally = 0x8;
2087 }
2088
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04002089 bitmap DlManualOperationEventMask : bitmap16 {
krypton362e94d8b2022-04-14 08:20:08 -07002090 kUnknown = 0x1;
2091 kThumbturnLock = 0x2;
2092 kThumbturnUnlock = 0x4;
2093 kOneTouchLock = 0x8;
2094 kKeyLock = 0x10;
2095 kKeyUnlock = 0x20;
2096 kAutoLock = 0x40;
2097 kScheduleLock = 0x80;
2098 kScheduleUnlock = 0x100;
2099 kManualLock = 0x200;
2100 kManualUnlock = 0x400;
2101 }
2102
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04002103 bitmap DlRFIDOperationEventMask : bitmap16 {
krypton362e94d8b2022-04-14 08:20:08 -07002104 kUnknown = 0x1;
2105 kLock = 0x2;
2106 kUnlock = 0x4;
2107 kLockInvalidRFID = 0x8;
2108 kLockInvalidSchedule = 0x10;
2109 kUnlockInvalidRFID = 0x20;
2110 kUnlockInvalidSchedule = 0x40;
2111 }
2112
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04002113 bitmap DlRFIDProgrammingEventMask : bitmap16 {
krypton362e94d8b2022-04-14 08:20:08 -07002114 kUnknown = 0x1;
2115 kRFIDCodeAdded = 0x20;
2116 kRFIDCodeCleared = 0x40;
2117 }
2118
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04002119 bitmap DlRemoteOperationEventMask : bitmap16 {
krypton362e94d8b2022-04-14 08:20:08 -07002120 kUnknown = 0x1;
2121 kLock = 0x2;
2122 kUnlock = 0x4;
2123 kLockInvalidCode = 0x8;
2124 kLockInvalidSchedule = 0x10;
2125 kUnlockInvalidCode = 0x20;
2126 kUnlockInvalidSchedule = 0x40;
2127 }
2128
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04002129 bitmap DlRemoteProgrammingEventMask : bitmap16 {
krypton362e94d8b2022-04-14 08:20:08 -07002130 kUnknown = 0x1;
2131 kProgrammingPINChanged = 0x2;
2132 kPINAdded = 0x4;
2133 kPINCleared = 0x8;
2134 kPINChanged = 0x10;
2135 kRFIDCodeAdded = 0x20;
2136 kRFIDCodeCleared = 0x40;
2137 }
2138
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04002139 bitmap DlSupportedOperatingModes : bitmap16 {
krypton362e94d8b2022-04-14 08:20:08 -07002140 kNormal = 0x1;
2141 kVacation = 0x2;
2142 kPrivacy = 0x4;
2143 kNoRemoteLockUnlock = 0x8;
2144 kPassage = 0x10;
2145 }
2146
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04002147 bitmap DoorLockDayOfWeek : bitmap8 {
krypton362e94d8b2022-04-14 08:20:08 -07002148 kSunday = 0x1;
2149 kMonday = 0x2;
2150 kTuesday = 0x4;
2151 kWednesday = 0x8;
2152 kThursday = 0x10;
2153 kFriday = 0x20;
2154 kSaturday = 0x40;
2155 }
2156
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04002157 bitmap Feature : bitmap32 {
Andrei Litvin413a9002023-06-28 13:02:18 -04002158 kPINCredential = 0x1;
2159 kRFIDCredential = 0x2;
krypton362e94d8b2022-04-14 08:20:08 -07002160 kFingerCredentials = 0x4;
2161 kLogging = 0x8;
Boris Zbarskyab00c532023-01-18 19:49:01 -05002162 kWeekDayAccessSchedules = 0x10;
krypton362e94d8b2022-04-14 08:20:08 -07002163 kDoorPositionSensor = 0x20;
2164 kFaceCredentials = 0x40;
Boris Zbarskyab00c532023-01-18 19:49:01 -05002165 kCredentialsOverTheAirAccess = 0x80;
2166 kUser = 0x100;
2167 kNotification = 0x200;
2168 kYearDayAccessSchedules = 0x400;
Evgeniy Morozov6d959ae2022-07-15 22:41:32 +03002169 kHolidaySchedules = 0x800;
Marc Mikolitsdb088d52023-05-17 21:17:04 +02002170 kUnbolt = 0x1000;
Nivi Sarkar6b219352024-01-09 11:35:13 -08002171 kAliroProvisioning = 0x2000;
2172 kAliroBLEUWB = 0x4000;
krypton362e94d8b2022-04-14 08:20:08 -07002173 }
2174
Boris Zbarskyab00c532023-01-18 19:49:01 -05002175 struct CredentialStruct {
2176 CredentialTypeEnum credentialType = 0;
Bharat Rajuf59dbe12022-05-11 18:51:53 -04002177 int16u credentialIndex = 1;
krypton362e94d8b2022-04-14 08:20:08 -07002178 }
2179
2180 critical event DoorLockAlarm = 0 {
Boris Zbarskyab00c532023-01-18 19:49:01 -05002181 AlarmCodeEnum alarmCode = 0;
krypton362e94d8b2022-04-14 08:20:08 -07002182 }
2183
2184 critical event DoorStateChange = 1 {
Boris Zbarskyab00c532023-01-18 19:49:01 -05002185 DoorStateEnum doorState = 0;
krypton362e94d8b2022-04-14 08:20:08 -07002186 }
2187
2188 critical event LockOperation = 2 {
Boris Zbarskyab00c532023-01-18 19:49:01 -05002189 LockOperationTypeEnum lockOperationType = 0;
2190 OperationSourceEnum operationSource = 1;
Andrei Litvin47836d22023-10-12 18:08:11 -04002191 nullable int16u userIndex = 2;
krypton362e94d8b2022-04-14 08:20:08 -07002192 nullable fabric_idx fabricIndex = 3;
Andrei Litvin47836d22023-10-12 18:08:11 -04002193 nullable node_id sourceNode = 4;
Boris Zbarskyab00c532023-01-18 19:49:01 -05002194 optional nullable CredentialStruct credentials[] = 5;
krypton362e94d8b2022-04-14 08:20:08 -07002195 }
2196
2197 critical event LockOperationError = 3 {
Boris Zbarskyab00c532023-01-18 19:49:01 -05002198 LockOperationTypeEnum lockOperationType = 0;
2199 OperationSourceEnum operationSource = 1;
2200 OperationErrorEnum operationError = 2;
Andrei Litvin47836d22023-10-12 18:08:11 -04002201 nullable int16u userIndex = 3;
krypton362e94d8b2022-04-14 08:20:08 -07002202 nullable fabric_idx fabricIndex = 4;
Andrei Litvin47836d22023-10-12 18:08:11 -04002203 nullable node_id sourceNode = 5;
Boris Zbarskyab00c532023-01-18 19:49:01 -05002204 optional nullable CredentialStruct credentials[] = 6;
krypton362e94d8b2022-04-14 08:20:08 -07002205 }
2206
2207 info event LockUserChange = 4 {
Boris Zbarskyab00c532023-01-18 19:49:01 -05002208 LockDataTypeEnum lockDataType = 0;
2209 DataOperationTypeEnum dataOperationType = 1;
2210 OperationSourceEnum operationSource = 2;
Andrei Litvin47836d22023-10-12 18:08:11 -04002211 nullable int16u userIndex = 3;
krypton362e94d8b2022-04-14 08:20:08 -07002212 nullable fabric_idx fabricIndex = 4;
Andrei Litvin47836d22023-10-12 18:08:11 -04002213 nullable node_id sourceNode = 5;
2214 nullable int16u dataIndex = 6;
krypton362e94d8b2022-04-14 08:20:08 -07002215 }
2216
2217 readonly attribute nullable DlLockState lockState = 0;
2218 readonly attribute DlLockType lockType = 1;
Damian Królik55a3a142022-04-19 15:39:34 +02002219 readonly attribute boolean actuatorEnabled = 2;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002220 readonly attribute optional nullable DoorStateEnum doorState = 3;
2221 attribute access(write: manage) optional int32u doorOpenEvents = 4;
2222 attribute access(write: manage) optional int32u doorClosedEvents = 5;
2223 attribute access(write: manage) optional int16u openPeriod = 6;
2224 readonly attribute optional int16u numberOfTotalUsersSupported = 17;
2225 readonly attribute optional int16u numberOfPINUsersSupported = 18;
2226 readonly attribute optional int16u numberOfRFIDUsersSupported = 19;
2227 readonly attribute optional int8u numberOfWeekDaySchedulesSupportedPerUser = 20;
2228 readonly attribute optional int8u numberOfYearDaySchedulesSupportedPerUser = 21;
2229 readonly attribute optional int8u numberOfHolidaySchedulesSupported = 22;
2230 readonly attribute optional int8u maxPINCodeLength = 23;
2231 readonly attribute optional int8u minPINCodeLength = 24;
2232 readonly attribute optional int8u maxRFIDCodeLength = 25;
2233 readonly attribute optional int8u minRFIDCodeLength = 26;
2234 readonly attribute optional DlCredentialRuleMask credentialRulesSupport = 27;
2235 readonly attribute optional int8u numberOfCredentialsSupportedPerUser = 28;
2236 attribute access(write: manage) optional char_string<3> language = 33;
2237 attribute access(write: manage) optional int8u LEDSettings = 34;
krypton362e94d8b2022-04-14 08:20:08 -07002238 attribute access(write: manage) int32u autoRelockTime = 35;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002239 attribute access(write: manage) optional int8u soundVolume = 36;
Boris Zbarskyab00c532023-01-18 19:49:01 -05002240 attribute access(write: manage) OperatingModeEnum operatingMode = 37;
Damian Królik55a3a142022-04-19 15:39:34 +02002241 readonly attribute DlSupportedOperatingModes supportedOperatingModes = 38;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002242 readonly attribute optional DlDefaultConfigurationRegister defaultConfigurationRegister = 39;
2243 attribute access(write: administer) optional boolean enableLocalProgramming = 40;
2244 attribute access(write: manage) optional boolean enableOneTouchLocking = 41;
2245 attribute access(write: manage) optional boolean enableInsideStatusLED = 42;
2246 attribute access(write: manage) optional boolean enablePrivacyModeButton = 43;
2247 attribute access(write: administer) optional DlLocalProgrammingFeatures localProgrammingFeatures = 44;
2248 attribute access(write: administer) optional int8u wrongCodeEntryLimit = 48;
2249 attribute access(write: administer) optional int8u userCodeTemporaryDisableTime = 49;
2250 attribute access(write: administer) optional boolean sendPINOverTheAir = 50;
2251 attribute access(write: administer) optional boolean requirePINforRemoteOperation = 51;
2252 attribute access(write: administer) optional int16u expiringUserTimeout = 53;
Nivi Sarkar6b219352024-01-09 11:35:13 -08002253 readonly attribute access(read: administer) optional nullable octet_string<65> aliroReaderVerificationKey = 128;
2254 readonly attribute access(read: administer) optional nullable octet_string<16> aliroReaderGroupIdentifier = 129;
2255 readonly attribute access(read: administer) optional octet_string<16> aliroReaderGroupSubIdentifier = 130;
2256 readonly attribute access(read: administer) optional octet_string aliroExpeditedTransactionSupportedProtocolVersions[] = 131;
2257 readonly attribute access(read: administer) optional nullable octet_string<16> aliroGroupResolvingKey = 132;
2258 readonly attribute access(read: administer) optional octet_string aliroSupportedBLEUWBProtocolVersions[] = 133;
2259 readonly attribute access(read: administer) optional int8u aliroBLEAdvertisingVersion = 134;
2260 readonly attribute optional int16u numberOfAliroCredentialIssuerKeysSupported = 135;
2261 readonly attribute optional int16u numberOfAliroEndpointKeysSupported = 136;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -05002262 readonly attribute command_id generatedCommandList[] = 65528;
2263 readonly attribute command_id acceptedCommandList[] = 65529;
2264 readonly attribute event_id eventList[] = 65530;
2265 readonly attribute attrib_id attributeList[] = 65531;
krypton362e94d8b2022-04-14 08:20:08 -07002266 readonly attribute bitmap32 featureMap = 65532;
2267 readonly attribute int16u clusterRevision = 65533;
2268
2269 request struct LockDoorRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04002270 optional octet_string PINCode = 0;
krypton362e94d8b2022-04-14 08:20:08 -07002271 }
2272
2273 request struct UnlockDoorRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04002274 optional octet_string PINCode = 0;
krypton362e94d8b2022-04-14 08:20:08 -07002275 }
2276
krypton36e83224e2022-04-20 09:57:22 -07002277 request struct UnlockWithTimeoutRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04002278 int16u timeout = 0;
2279 optional octet_string PINCode = 1;
krypton36e83224e2022-04-20 09:57:22 -07002280 }
2281
krypton362e94d8b2022-04-14 08:20:08 -07002282 request struct SetWeekDayScheduleRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04002283 int8u weekDayIndex = 0;
2284 int16u userIndex = 1;
Boris Zbarskyab00c532023-01-18 19:49:01 -05002285 DaysMaskMap daysMask = 2;
Andrei Litvin47836d22023-10-12 18:08:11 -04002286 int8u startHour = 3;
2287 int8u startMinute = 4;
2288 int8u endHour = 5;
2289 int8u endMinute = 6;
krypton362e94d8b2022-04-14 08:20:08 -07002290 }
2291
2292 request struct GetWeekDayScheduleRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04002293 int8u weekDayIndex = 0;
2294 int16u userIndex = 1;
krypton362e94d8b2022-04-14 08:20:08 -07002295 }
2296
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002297 response struct GetWeekDayScheduleResponse = 12 {
2298 int8u weekDayIndex = 0;
2299 int16u userIndex = 1;
2300 DlStatus status = 2;
2301 optional DaysMaskMap daysMask = 3;
2302 optional int8u startHour = 4;
2303 optional int8u startMinute = 5;
2304 optional int8u endHour = 6;
2305 optional int8u endMinute = 7;
2306 }
2307
krypton362e94d8b2022-04-14 08:20:08 -07002308 request struct ClearWeekDayScheduleRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04002309 int8u weekDayIndex = 0;
2310 int16u userIndex = 1;
krypton362e94d8b2022-04-14 08:20:08 -07002311 }
2312
2313 request struct SetYearDayScheduleRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04002314 int8u yearDayIndex = 0;
2315 int16u userIndex = 1;
krypton362e94d8b2022-04-14 08:20:08 -07002316 epoch_s localStartTime = 2;
2317 epoch_s localEndTime = 3;
2318 }
2319
2320 request struct GetYearDayScheduleRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04002321 int8u yearDayIndex = 0;
2322 int16u userIndex = 1;
krypton362e94d8b2022-04-14 08:20:08 -07002323 }
2324
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002325 response struct GetYearDayScheduleResponse = 15 {
2326 int8u yearDayIndex = 0;
2327 int16u userIndex = 1;
2328 DlStatus status = 2;
2329 optional epoch_s localStartTime = 3;
2330 optional epoch_s localEndTime = 4;
2331 }
2332
krypton362e94d8b2022-04-14 08:20:08 -07002333 request struct ClearYearDayScheduleRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04002334 int8u yearDayIndex = 0;
2335 int16u userIndex = 1;
krypton362e94d8b2022-04-14 08:20:08 -07002336 }
2337
Evgeniy Morozovb5a967c2022-05-26 15:35:59 +03002338 request struct SetHolidayScheduleRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04002339 int8u holidayIndex = 0;
Evgeniy Morozovb5a967c2022-05-26 15:35:59 +03002340 epoch_s localStartTime = 1;
2341 epoch_s localEndTime = 2;
Boris Zbarskyab00c532023-01-18 19:49:01 -05002342 OperatingModeEnum operatingMode = 3;
Evgeniy Morozovb5a967c2022-05-26 15:35:59 +03002343 }
2344
2345 request struct GetHolidayScheduleRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04002346 int8u holidayIndex = 0;
Evgeniy Morozovb5a967c2022-05-26 15:35:59 +03002347 }
2348
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002349 response struct GetHolidayScheduleResponse = 18 {
2350 int8u holidayIndex = 0;
2351 DlStatus status = 1;
2352 optional epoch_s localStartTime = 2;
2353 optional epoch_s localEndTime = 3;
2354 optional OperatingModeEnum operatingMode = 4;
2355 }
2356
Evgeniy Morozovb5a967c2022-05-26 15:35:59 +03002357 request struct ClearHolidayScheduleRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04002358 int8u holidayIndex = 0;
Evgeniy Morozovb5a967c2022-05-26 15:35:59 +03002359 }
2360
krypton362e94d8b2022-04-14 08:20:08 -07002361 request struct SetUserRequest {
Boris Zbarskyab00c532023-01-18 19:49:01 -05002362 DataOperationTypeEnum operationType = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -04002363 int16u userIndex = 1;
2364 nullable char_string userName = 2;
2365 nullable int32u userUniqueID = 3;
Boris Zbarskyab00c532023-01-18 19:49:01 -05002366 nullable UserStatusEnum userStatus = 4;
2367 nullable UserTypeEnum userType = 5;
2368 nullable CredentialRuleEnum credentialRule = 6;
krypton362e94d8b2022-04-14 08:20:08 -07002369 }
2370
2371 request struct GetUserRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04002372 int16u userIndex = 0;
krypton362e94d8b2022-04-14 08:20:08 -07002373 }
2374
Andrei Litvin99becaa2022-04-21 09:20:55 -04002375 response struct GetUserResponse = 28 {
Andrei Litvin47836d22023-10-12 18:08:11 -04002376 int16u userIndex = 0;
2377 nullable char_string userName = 1;
2378 nullable int32u userUniqueID = 2;
Boris Zbarskyab00c532023-01-18 19:49:01 -05002379 nullable UserStatusEnum userStatus = 3;
2380 nullable UserTypeEnum userType = 4;
2381 nullable CredentialRuleEnum credentialRule = 5;
2382 nullable CredentialStruct credentials[] = 6;
krypton362e94d8b2022-04-14 08:20:08 -07002383 nullable fabric_idx creatorFabricIndex = 7;
2384 nullable fabric_idx lastModifiedFabricIndex = 8;
Andrei Litvin47836d22023-10-12 18:08:11 -04002385 nullable int16u nextUserIndex = 9;
krypton362e94d8b2022-04-14 08:20:08 -07002386 }
2387
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002388 request struct ClearUserRequest {
2389 int16u userIndex = 0;
2390 }
2391
2392 request struct SetCredentialRequest {
2393 DataOperationTypeEnum operationType = 0;
2394 CredentialStruct credential = 1;
Boris Zbarskyd823ea22023-11-30 15:08:58 -05002395 long_octet_string credentialData = 2;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002396 nullable int16u userIndex = 3;
2397 nullable UserStatusEnum userStatus = 4;
2398 nullable UserTypeEnum userType = 5;
2399 }
2400
Andrei Litvin99becaa2022-04-21 09:20:55 -04002401 response struct SetCredentialResponse = 35 {
krypton362e94d8b2022-04-14 08:20:08 -07002402 DlStatus status = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -04002403 nullable int16u userIndex = 1;
2404 nullable int16u nextCredentialIndex = 2;
krypton362e94d8b2022-04-14 08:20:08 -07002405 }
2406
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002407 request struct GetCredentialStatusRequest {
2408 CredentialStruct credential = 0;
2409 }
2410
Andrei Litvin99becaa2022-04-21 09:20:55 -04002411 response struct GetCredentialStatusResponse = 37 {
krypton362e94d8b2022-04-14 08:20:08 -07002412 boolean credentialExists = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -04002413 nullable int16u userIndex = 1;
Evgeniy Morozov37fb44a2022-05-13 21:45:58 +03002414 nullable fabric_idx creatorFabricIndex = 2;
2415 nullable fabric_idx lastModifiedFabricIndex = 3;
Andrei Litvin47836d22023-10-12 18:08:11 -04002416 nullable int16u nextCredentialIndex = 4;
krypton362e94d8b2022-04-14 08:20:08 -07002417 }
2418
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002419 request struct ClearCredentialRequest {
2420 nullable CredentialStruct credential = 0;
2421 }
2422
2423 request struct UnboltDoorRequest {
2424 optional octet_string PINCode = 0;
2425 }
2426
Nivi Sarkar6b219352024-01-09 11:35:13 -08002427 request struct SetAliroReaderConfigRequest {
2428 octet_string<32> signingKey = 0;
2429 octet_string<65> verificationKey = 1;
2430 octet_string<16> groupIdentifier = 2;
2431 optional octet_string<16> groupResolvingKey = 3;
2432 }
2433
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002434 /** This command causes the lock device to lock the door. */
krypton362e94d8b2022-04-14 08:20:08 -07002435 timed command LockDoor(LockDoorRequest): DefaultSuccess = 0;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002436 /** This command causes the lock device to unlock the door. */
krypton362e94d8b2022-04-14 08:20:08 -07002437 timed command UnlockDoor(UnlockDoorRequest): DefaultSuccess = 1;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002438 /** This command causes the lock device to unlock the door with a timeout parameter. */
krypton36e83224e2022-04-20 09:57:22 -07002439 timed command UnlockWithTimeout(UnlockWithTimeoutRequest): DefaultSuccess = 3;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002440 /** Set a weekly repeating schedule for a specified user. */
krypton362e94d8b2022-04-14 08:20:08 -07002441 command access(invoke: administer) SetWeekDaySchedule(SetWeekDayScheduleRequest): DefaultSuccess = 11;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002442 /** Retrieve the specific weekly schedule for the specific user. */
krypton362e94d8b2022-04-14 08:20:08 -07002443 command access(invoke: administer) GetWeekDaySchedule(GetWeekDayScheduleRequest): GetWeekDayScheduleResponse = 12;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002444 /** Clear the specific weekly schedule or all weekly schedules for the specific user. */
krypton362e94d8b2022-04-14 08:20:08 -07002445 command access(invoke: administer) ClearWeekDaySchedule(ClearWeekDayScheduleRequest): DefaultSuccess = 13;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002446 /** Set a time-specific schedule ID for a specified user. */
krypton362e94d8b2022-04-14 08:20:08 -07002447 command access(invoke: administer) SetYearDaySchedule(SetYearDayScheduleRequest): DefaultSuccess = 14;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002448 /** Returns the year day schedule data for the specified schedule and user indexes. */
krypton362e94d8b2022-04-14 08:20:08 -07002449 command access(invoke: administer) GetYearDaySchedule(GetYearDayScheduleRequest): GetYearDayScheduleResponse = 15;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002450 /** Clears the specific year day schedule or all year day schedules for the specific user. */
krypton362e94d8b2022-04-14 08:20:08 -07002451 command access(invoke: administer) ClearYearDaySchedule(ClearYearDayScheduleRequest): DefaultSuccess = 16;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002452 /** Set the holiday Schedule by specifying local start time and local end time with respect to any Lock Operating Mode. */
Evgeniy Morozovb5a967c2022-05-26 15:35:59 +03002453 command access(invoke: administer) SetHolidaySchedule(SetHolidayScheduleRequest): DefaultSuccess = 17;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002454 /** Get the holiday schedule for the specified index. */
Evgeniy Morozovb5a967c2022-05-26 15:35:59 +03002455 command access(invoke: administer) GetHolidaySchedule(GetHolidayScheduleRequest): GetHolidayScheduleResponse = 18;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002456 /** Clears the holiday schedule or all holiday schedules. */
Evgeniy Morozovb5a967c2022-05-26 15:35:59 +03002457 command access(invoke: administer) ClearHolidaySchedule(ClearHolidayScheduleRequest): DefaultSuccess = 19;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002458 /** Set User into the lock. */
krypton362e94d8b2022-04-14 08:20:08 -07002459 timed command access(invoke: administer) SetUser(SetUserRequest): DefaultSuccess = 26;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002460 /** Retrieve User. */
krypton362e94d8b2022-04-14 08:20:08 -07002461 command access(invoke: administer) GetUser(GetUserRequest): GetUserResponse = 27;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002462 /** Clears a User or all Users. */
krypton362e94d8b2022-04-14 08:20:08 -07002463 timed command access(invoke: administer) ClearUser(ClearUserRequest): DefaultSuccess = 29;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002464 /** Set a credential (e.g. PIN, RFID, Fingerprint, etc.) into the lock for a new user, existing user, or ProgrammingUser. */
krypton362e94d8b2022-04-14 08:20:08 -07002465 timed command access(invoke: administer) SetCredential(SetCredentialRequest): SetCredentialResponse = 34;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002466 /** Retrieve the status of a particular credential (e.g. PIN, RFID, Fingerprint, etc.) by index. */
krypton362e94d8b2022-04-14 08:20:08 -07002467 command access(invoke: administer) GetCredentialStatus(GetCredentialStatusRequest): GetCredentialStatusResponse = 36;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002468 /** Clear one, one type, or all credentials except ProgrammingPIN credential. */
krypton362e94d8b2022-04-14 08:20:08 -07002469 timed command access(invoke: administer) ClearCredential(ClearCredentialRequest): DefaultSuccess = 38;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002470 /** This command causes the lock device to unlock the door without pulling the latch. */
Marc Mikolits0b86ffa2023-05-30 18:59:23 +02002471 timed command UnboltDoor(UnboltDoorRequest): DefaultSuccess = 39;
Nivi Sarkar6b219352024-01-09 11:35:13 -08002472 /** This command communicates an Aliro Reader configuration to the lock. */
2473 timed command access(invoke: administer) SetAliroReaderConfig(SetAliroReaderConfigRequest): DefaultSuccess = 40;
2474 /** This command clears an existing Aliro Reader configuration for the lock. */
2475 timed command access(invoke: administer) ClearAliroReaderConfig(): DefaultSuccess = 41;
krypton362e94d8b2022-04-14 08:20:08 -07002476}
2477
Andrei Litvin6e3c1092022-01-14 15:30:21 -05002478endpoint 0 {
Andrei Litvin83634942023-08-05 00:50:32 -04002479 device type ma_rootdevice = 22, version 1;
C Freeman8ff23312023-08-16 18:50:41 -04002480 device type ma_powersource = 17, version 1;
Andrei Litvin83634942023-08-05 00:50:32 -04002481
Seth Rickardb0800242022-02-08 10:20:16 -06002482 binding cluster OtaSoftwareUpdateProvider;
Andrei Litvin90d19572022-05-05 21:25:28 -04002483
2484 server cluster Descriptor {
Boris Zbarskye4c075f2022-09-12 08:23:17 -04002485 callback attribute deviceTypeList;
Andrei Litvin90d19572022-05-05 21:25:28 -04002486 callback attribute serverList;
2487 callback attribute clientList;
2488 callback attribute partsList;
C Freeman8ff23312023-08-16 18:50:41 -04002489 callback attribute generatedCommandList;
2490 callback attribute acceptedCommandList;
2491 callback attribute eventList;
2492 callback attribute attributeList;
Andrei Litvin6d359752023-04-05 15:58:59 -04002493 ram attribute featureMap default = 0;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05002494 callback attribute clusterRevision;
Andrei Litvin90d19572022-05-05 21:25:28 -04002495 }
2496
2497 server cluster AccessControl {
Andrei Litvind5ae3f72023-02-14 09:25:16 -05002498 emits event AccessControlEntryChanged;
2499 emits event AccessControlExtensionChanged;
Andrei Litvin90d19572022-05-05 21:25:28 -04002500 callback attribute acl;
2501 callback attribute extension;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05002502 callback attribute subjectsPerAccessControlEntry;
2503 callback attribute targetsPerAccessControlEntry;
2504 callback attribute accessControlEntriesPerFabric;
C Freeman8ff23312023-08-16 18:50:41 -04002505 callback attribute generatedCommandList;
2506 callback attribute acceptedCommandList;
2507 callback attribute eventList;
Andrei Litvin90d19572022-05-05 21:25:28 -04002508 callback attribute attributeList;
Andrei Litvin6d359752023-04-05 15:58:59 -04002509 ram attribute featureMap default = 0;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05002510 callback attribute clusterRevision;
Andrei Litvin90d19572022-05-05 21:25:28 -04002511 }
2512
Boris Zbarsky04c20f62022-12-18 10:09:13 -05002513 server cluster BasicInformation {
Andrei Litvind5ae3f72023-02-14 09:25:16 -05002514 emits event StartUp;
2515 emits event ShutDown;
2516 emits event Leave;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05002517 callback attribute dataModelRevision;
Andrei Litvin90d19572022-05-05 21:25:28 -04002518 callback attribute vendorName;
2519 callback attribute vendorID;
2520 callback attribute productName;
2521 callback attribute productID;
2522 persist attribute nodeLabel;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05002523 callback attribute location;
2524 callback attribute hardwareVersion;
Andrei Litvin90d19572022-05-05 21:25:28 -04002525 callback attribute hardwareVersionString;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05002526 callback attribute softwareVersion;
Andrei Litvin90d19572022-05-05 21:25:28 -04002527 callback attribute softwareVersionString;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05002528 callback attribute manufacturingDate;
Andrei Litvin90d19572022-05-05 21:25:28 -04002529 callback attribute partNumber;
2530 callback attribute productURL;
2531 callback attribute productLabel;
2532 callback attribute serialNumber;
Andrei Litvin6d359752023-04-05 15:58:59 -04002533 persist attribute localConfigDisabled default = 0;
Andrei Litvin90d19572022-05-05 21:25:28 -04002534 callback attribute uniqueID;
2535 callback attribute capabilityMinima;
Terence Hampson9969d442023-11-16 11:30:48 -05002536 callback attribute specificationVersion;
2537 callback attribute maxPathsPerInvoke;
C Freeman8ff23312023-08-16 18:50:41 -04002538 callback attribute generatedCommandList;
2539 callback attribute acceptedCommandList;
2540 callback attribute eventList;
2541 callback attribute attributeList;
Andrei Litvin6d359752023-04-05 15:58:59 -04002542 ram attribute featureMap default = 0;
Terence Hampson9969d442023-11-16 11:30:48 -05002543 ram attribute clusterRevision default = 3;
Andrei Litvin90d19572022-05-05 21:25:28 -04002544 }
2545
2546 server cluster OtaSoftwareUpdateRequestor {
Andrei Litvind5ae3f72023-02-14 09:25:16 -05002547 emits event StateTransition;
2548 emits event VersionApplied;
2549 emits event DownloadError;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05002550 callback attribute defaultOTAProviders;
Andrei Litvin90d19572022-05-05 21:25:28 -04002551 ram attribute updatePossible default = 1;
Andrei Litvin6d359752023-04-05 15:58:59 -04002552 ram attribute updateState default = 0;
2553 ram attribute updateStateProgress default = 0;
2554 ram attribute featureMap default = 0;
Andrei Litvin90d19572022-05-05 21:25:28 -04002555 ram attribute clusterRevision default = 1;
Andrei Litvin49fff5b2023-10-11 18:25:37 -04002556
2557 handle command AnnounceOTAProvider;
Andrei Litvin90d19572022-05-05 21:25:28 -04002558 }
2559
2560 server cluster LocalizationConfiguration {
2561 persist attribute activeLocale default = "en-US";
2562 callback attribute supportedLocales;
C Freeman8ff23312023-08-16 18:50:41 -04002563 callback attribute generatedCommandList;
2564 callback attribute acceptedCommandList;
2565 callback attribute eventList;
2566 callback attribute attributeList;
Andrei Litvin6d359752023-04-05 15:58:59 -04002567 ram attribute featureMap default = 0;
Andrei Litvin90d19572022-05-05 21:25:28 -04002568 ram attribute clusterRevision default = 1;
2569 }
2570
C Freeman8ff23312023-08-16 18:50:41 -04002571 server cluster UnitLocalization {
2572 callback attribute generatedCommandList;
2573 callback attribute acceptedCommandList;
2574 callback attribute eventList;
2575 callback attribute attributeList;
Andrei Litvin6d359752023-04-05 15:58:59 -04002576 ram attribute featureMap default = 0;
Andrei Litvin90d19572022-05-05 21:25:28 -04002577 ram attribute clusterRevision default = 1;
2578 }
2579
Andrei Litvin90d19572022-05-05 21:25:28 -04002580 server cluster PowerSource {
Andrei Litvind5ae3f72023-02-14 09:25:16 -05002581 emits event WiredFaultChange;
Andrei Litvin90d19572022-05-05 21:25:28 -04002582 ram attribute status default = 1;
Andrei Litvin6d359752023-04-05 15:58:59 -04002583 ram attribute order default = 0;
Andrei Litvin90d19572022-05-05 21:25:28 -04002584 ram attribute description default = "USB";
C Freeman5db749b2023-11-14 06:33:55 +01002585 ram attribute wiredCurrentType default = 0;
Andrei Litvin90d19572022-05-05 21:25:28 -04002586 ram attribute wiredAssessedCurrent;
C Freeman529d74b2023-07-20 02:27:29 -04002587 callback attribute endpointList;
C Freeman8ff23312023-08-16 18:50:41 -04002588 callback attribute generatedCommandList;
2589 callback attribute acceptedCommandList;
2590 callback attribute eventList;
2591 callback attribute attributeList;
Andrei Litvin90d19572022-05-05 21:25:28 -04002592 ram attribute featureMap default = 1;
C Freeman529d74b2023-07-20 02:27:29 -04002593 ram attribute clusterRevision default = 2;
Andrei Litvin90d19572022-05-05 21:25:28 -04002594 }
2595
2596 server cluster GeneralCommissioning {
Andrei Litvin6d359752023-04-05 15:58:59 -04002597 ram attribute breadcrumb default = 0x0000000000000000;
Andrei Litvin90d19572022-05-05 21:25:28 -04002598 callback attribute basicCommissioningInfo;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05002599 callback attribute regulatoryConfig;
2600 callback attribute locationCapability;
2601 callback attribute supportsConcurrentConnection;
C Freeman8ff23312023-08-16 18:50:41 -04002602 callback attribute generatedCommandList;
2603 callback attribute acceptedCommandList;
2604 callback attribute eventList;
2605 callback attribute attributeList;
Andrei Litvin6d359752023-04-05 15:58:59 -04002606 ram attribute featureMap default = 0;
Andrei Litvin90d19572022-05-05 21:25:28 -04002607 ram attribute clusterRevision default = 1;
Andrei Litvin49fff5b2023-10-11 18:25:37 -04002608
2609 handle command ArmFailSafe;
2610 handle command ArmFailSafeResponse;
2611 handle command SetRegulatoryConfig;
2612 handle command SetRegulatoryConfigResponse;
2613 handle command CommissioningComplete;
2614 handle command CommissioningCompleteResponse;
Andrei Litvin90d19572022-05-05 21:25:28 -04002615 }
2616
2617 server cluster NetworkCommissioning {
2618 ram attribute maxNetworks;
2619 callback attribute networks;
2620 ram attribute scanMaxTimeSeconds;
2621 ram attribute connectMaxTimeSeconds;
2622 ram attribute interfaceEnabled;
2623 ram attribute lastNetworkingStatus;
2624 ram attribute lastNetworkID;
2625 ram attribute lastConnectErrorValue;
C Freeman8ff23312023-08-16 18:50:41 -04002626 callback attribute generatedCommandList;
2627 callback attribute acceptedCommandList;
2628 callback attribute eventList;
2629 callback attribute attributeList;
Andrei Litvin90d19572022-05-05 21:25:28 -04002630 ram attribute featureMap default = 2;
2631 ram attribute clusterRevision default = 1;
Andrei Litvin49fff5b2023-10-11 18:25:37 -04002632
2633 handle command ScanNetworks;
2634 handle command ScanNetworksResponse;
2635 handle command AddOrUpdateWiFiNetwork;
2636 handle command AddOrUpdateThreadNetwork;
2637 handle command RemoveNetwork;
2638 handle command NetworkConfigResponse;
2639 handle command ConnectNetwork;
2640 handle command ConnectNetworkResponse;
2641 handle command ReorderNetwork;
Andrei Litvin90d19572022-05-05 21:25:28 -04002642 }
2643
2644 server cluster DiagnosticLogs {
Andrei Litvin6d359752023-04-05 15:58:59 -04002645 ram attribute featureMap default = 0;
tehampson2db812e2022-05-23 15:24:29 -04002646 ram attribute clusterRevision default = 1;
Andrei Litvin49fff5b2023-10-11 18:25:37 -04002647
2648 handle command RetrieveLogsRequest;
Andrei Litvin90d19572022-05-05 21:25:28 -04002649 }
2650
2651 server cluster GeneralDiagnostics {
Andrei Litvind5ae3f72023-02-14 09:25:16 -05002652 emits event HardwareFaultChange;
2653 emits event RadioFaultChange;
2654 emits event NetworkFaultChange;
2655 emits event BootReason;
Andrei Litvin90d19572022-05-05 21:25:28 -04002656 callback attribute networkInterfaces;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05002657 callback attribute rebootCount;
2658 callback attribute upTime;
2659 callback attribute totalOperationalHours;
Boris Zbarskydd6ae932023-01-09 12:08:17 -05002660 callback attribute bootReason;
Andrei Litvin90d19572022-05-05 21:25:28 -04002661 callback attribute activeHardwareFaults;
2662 callback attribute activeRadioFaults;
2663 callback attribute activeNetworkFaults;
Andrei Litvin6d359752023-04-05 15:58:59 -04002664 callback attribute testEventTriggersEnabled default = false;
C Freeman8ff23312023-08-16 18:50:41 -04002665 callback attribute generatedCommandList;
2666 callback attribute acceptedCommandList;
2667 callback attribute eventList;
2668 callback attribute attributeList;
Andrei Litvin6d359752023-04-05 15:58:59 -04002669 ram attribute featureMap default = 0;
Tennessee Carmel-Veilleuxd165f622023-10-31 10:50:04 -04002670 ram attribute clusterRevision default = 0x0002;
Andrei Litvin49fff5b2023-10-11 18:25:37 -04002671
2672 handle command TestEventTrigger;
Tennessee Carmel-Veilleuxd165f622023-10-31 10:50:04 -04002673 handle command TimeSnapshot;
2674 handle command TimeSnapshotResponse;
Andrei Litvin90d19572022-05-05 21:25:28 -04002675 }
2676
2677 server cluster SoftwareDiagnostics {
2678 callback attribute threadMetrics;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05002679 callback attribute currentHeapFree;
2680 callback attribute currentHeapUsed;
2681 callback attribute currentHeapHighWatermark;
2682 callback attribute featureMap;
Andrei Litvin90d19572022-05-05 21:25:28 -04002683 ram attribute clusterRevision default = 1;
Andrei Litvin49fff5b2023-10-11 18:25:37 -04002684
2685 handle command ResetWatermarks;
Andrei Litvin90d19572022-05-05 21:25:28 -04002686 }
2687
2688 server cluster ThreadNetworkDiagnostics {
Yufeng Wang58653522022-05-27 22:10:22 -07002689 callback attribute channel;
2690 callback attribute routingRole;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05002691 callback attribute networkName;
2692 callback attribute panId;
2693 callback attribute extendedPanId;
Yufeng Wang58653522022-05-27 22:10:22 -07002694 callback attribute meshLocalPrefix;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05002695 callback attribute overrunCount;
Boris Zbarsky6395db62023-01-06 12:08:22 -05002696 callback attribute neighborTable;
2697 callback attribute routeTable;
Yufeng Wang58653522022-05-27 22:10:22 -07002698 callback attribute partitionId;
2699 callback attribute weighting;
2700 callback attribute dataVersion;
2701 callback attribute stableDataVersion;
2702 callback attribute leaderRouterId;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05002703 callback attribute detachedRoleCount;
2704 callback attribute childRoleCount;
2705 callback attribute routerRoleCount;
2706 callback attribute leaderRoleCount;
2707 callback attribute attachAttemptCount;
2708 callback attribute partitionIdChangeCount;
2709 callback attribute betterPartitionAttachAttemptCount;
2710 callback attribute parentChangeCount;
2711 callback attribute txTotalCount;
2712 callback attribute txUnicastCount;
2713 callback attribute txBroadcastCount;
2714 callback attribute txAckRequestedCount;
2715 callback attribute txAckedCount;
2716 callback attribute txNoAckRequestedCount;
2717 callback attribute txDataCount;
2718 callback attribute txDataPollCount;
2719 callback attribute txBeaconCount;
2720 callback attribute txBeaconRequestCount;
2721 callback attribute txOtherCount;
2722 callback attribute txRetryCount;
2723 callback attribute txDirectMaxRetryExpiryCount;
2724 callback attribute txIndirectMaxRetryExpiryCount;
2725 callback attribute txErrCcaCount;
2726 callback attribute txErrAbortCount;
2727 callback attribute txErrBusyChannelCount;
2728 callback attribute rxTotalCount;
2729 callback attribute rxUnicastCount;
2730 callback attribute rxBroadcastCount;
2731 callback attribute rxDataCount;
2732 callback attribute rxDataPollCount;
2733 callback attribute rxBeaconCount;
2734 callback attribute rxBeaconRequestCount;
2735 callback attribute rxOtherCount;
2736 callback attribute rxAddressFilteredCount;
2737 callback attribute rxDestAddrFilteredCount;
2738 callback attribute rxDuplicatedCount;
2739 callback attribute rxErrNoFrameCount;
2740 callback attribute rxErrUnknownNeighborCount;
2741 callback attribute rxErrInvalidSrcAddrCount;
2742 callback attribute rxErrSecCount;
2743 callback attribute rxErrFcsCount;
2744 callback attribute rxErrOtherCount;
2745 callback attribute activeTimestamp;
2746 callback attribute pendingTimestamp;
2747 callback attribute delay;
Andrei Litvin90d19572022-05-05 21:25:28 -04002748 callback attribute securityPolicy;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05002749 callback attribute channelPage0Mask;
Andrei Litvin90d19572022-05-05 21:25:28 -04002750 callback attribute operationalDatasetComponents;
2751 callback attribute activeNetworkFaultsList;
2752 ram attribute featureMap default = 0x000F;
2753 ram attribute clusterRevision default = 1;
Andrei Litvin49fff5b2023-10-11 18:25:37 -04002754
2755 handle command ResetCounts;
Andrei Litvin90d19572022-05-05 21:25:28 -04002756 }
2757
2758 server cluster WiFiNetworkDiagnostics {
Andrei Litvind5ae3f72023-02-14 09:25:16 -05002759 emits event Disconnection;
2760 emits event AssociationFailure;
2761 emits event ConnectionStatus;
Andrei Litvin90d19572022-05-05 21:25:28 -04002762 callback attribute bssid;
2763 callback attribute securityType;
2764 callback attribute wiFiVersion;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05002765 callback attribute channelNumber;
2766 callback attribute rssi;
2767 callback attribute beaconLostCount;
2768 callback attribute beaconRxCount;
2769 callback attribute packetMulticastRxCount;
2770 callback attribute packetMulticastTxCount;
2771 callback attribute packetUnicastRxCount;
2772 callback attribute packetUnicastTxCount;
2773 callback attribute currentMaxRate;
2774 callback attribute overrunCount;
Andrei Litvin90d19572022-05-05 21:25:28 -04002775 ram attribute featureMap default = 3;
2776 ram attribute clusterRevision default = 1;
Andrei Litvin49fff5b2023-10-11 18:25:37 -04002777
2778 handle command ResetCounts;
Andrei Litvin90d19572022-05-05 21:25:28 -04002779 }
2780
2781 server cluster EthernetNetworkDiagnostics {
2782 callback attribute PHYRate;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05002783 callback attribute fullDuplex;
2784 callback attribute packetRxCount;
2785 callback attribute packetTxCount;
2786 callback attribute txErrCount;
2787 callback attribute collisionCount;
2788 callback attribute overrunCount;
2789 callback attribute carrierDetect;
2790 callback attribute timeSinceReset;
Andrei Litvin90d19572022-05-05 21:25:28 -04002791 ram attribute featureMap default = 3;
2792 ram attribute clusterRevision default = 1;
Andrei Litvin49fff5b2023-10-11 18:25:37 -04002793
2794 handle command ResetCounts;
Andrei Litvin90d19572022-05-05 21:25:28 -04002795 }
2796
2797 server cluster AdministratorCommissioning {
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05002798 callback attribute windowStatus;
2799 callback attribute adminFabricIndex;
2800 callback attribute adminVendorId;
C Freeman8ff23312023-08-16 18:50:41 -04002801 callback attribute generatedCommandList;
2802 callback attribute acceptedCommandList;
2803 callback attribute eventList;
2804 callback attribute attributeList;
Andrei Litvin6d359752023-04-05 15:58:59 -04002805 ram attribute featureMap default = 0;
Andrei Litvin90d19572022-05-05 21:25:28 -04002806 ram attribute clusterRevision default = 1;
Andrei Litvin49fff5b2023-10-11 18:25:37 -04002807
2808 handle command OpenCommissioningWindow;
Andrei Litvin49fff5b2023-10-11 18:25:37 -04002809 handle command RevokeCommissioning;
Andrei Litvin90d19572022-05-05 21:25:28 -04002810 }
2811
2812 server cluster OperationalCredentials {
2813 callback attribute NOCs;
2814 callback attribute fabrics;
Andrei Litvinbaf18ff2022-05-06 09:57:50 -04002815 callback attribute supportedFabrics;
2816 callback attribute commissionedFabrics;
Andrei Litvin90d19572022-05-05 21:25:28 -04002817 callback attribute trustedRootCertificates;
2818 callback attribute currentFabricIndex;
C Freeman8ff23312023-08-16 18:50:41 -04002819 callback attribute generatedCommandList;
2820 callback attribute acceptedCommandList;
2821 callback attribute eventList;
2822 callback attribute attributeList;
Andrei Litvin6d359752023-04-05 15:58:59 -04002823 ram attribute featureMap default = 0;
Andrei Litvin90d19572022-05-05 21:25:28 -04002824 ram attribute clusterRevision default = 1;
Andrei Litvin49fff5b2023-10-11 18:25:37 -04002825
2826 handle command AttestationRequest;
2827 handle command AttestationResponse;
2828 handle command CertificateChainRequest;
2829 handle command CertificateChainResponse;
2830 handle command CSRRequest;
2831 handle command CSRResponse;
2832 handle command AddNOC;
2833 handle command UpdateNOC;
2834 handle command NOCResponse;
2835 handle command UpdateFabricLabel;
2836 handle command RemoveFabric;
2837 handle command AddTrustedRootCertificate;
Andrei Litvin90d19572022-05-05 21:25:28 -04002838 }
2839
Evgeniy Morozovf62daff2022-06-24 00:14:26 +03002840 server cluster GroupKeyManagement {
2841 callback attribute groupKeyMap;
2842 callback attribute groupTable;
2843 callback attribute maxGroupsPerFabric;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05002844 callback attribute maxGroupKeysPerFabric;
C Freeman8ff23312023-08-16 18:50:41 -04002845 callback attribute generatedCommandList;
2846 callback attribute acceptedCommandList;
2847 callback attribute eventList;
2848 callback attribute attributeList;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05002849 callback attribute featureMap;
2850 callback attribute clusterRevision;
Andrei Litvin49fff5b2023-10-11 18:25:37 -04002851
2852 handle command KeySetWrite;
2853 handle command KeySetRead;
2854 handle command KeySetReadResponse;
2855 handle command KeySetRemove;
2856 handle command KeySetReadAllIndices;
2857 handle command KeySetReadAllIndicesResponse;
Evgeniy Morozovf62daff2022-06-24 00:14:26 +03002858 }
2859
Andrei Litvin90d19572022-05-05 21:25:28 -04002860 server cluster FixedLabel {
2861 callback attribute labelList;
Andrei Litvin6d359752023-04-05 15:58:59 -04002862 ram attribute featureMap default = 0;
Andrei Litvin90d19572022-05-05 21:25:28 -04002863 ram attribute clusterRevision default = 1;
2864 }
2865
2866 server cluster UserLabel {
2867 callback attribute labelList;
Andrei Litvin6d359752023-04-05 15:58:59 -04002868 ram attribute featureMap default = 0;
Andrei Litvin90d19572022-05-05 21:25:28 -04002869 ram attribute clusterRevision default = 1;
2870 }
mkardous-silabse1493502023-08-03 10:43:24 -04002871
2872 server cluster IcdManagement {
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05002873 callback attribute idleModeDuration;
2874 callback attribute activeModeDuration;
2875 callback attribute activeModeThreshold;
mkardous-silabse1493502023-08-03 10:43:24 -04002876 ram attribute featureMap default = 0x0000;
mkardous-silabs56569862023-10-27 16:29:52 -04002877 ram attribute clusterRevision default = 2;
mkardous-silabse1493502023-08-03 10:43:24 -04002878 }
Andrei Litvin6e3c1092022-01-14 15:30:21 -05002879}
Andrei Litvin6e3c1092022-01-14 15:30:21 -05002880endpoint 1 {
C Freeman8ff23312023-08-16 18:50:41 -04002881 device type ma_powersource = 17, version 1;
Andrei Litvin83634942023-08-05 00:50:32 -04002882 device type ma_doorlock = 10, version 1;
2883
Andrei Litvin90d19572022-05-05 21:25:28 -04002884
2885 server cluster Identify {
Andrei Litvin6d359752023-04-05 15:58:59 -04002886 ram attribute identifyTime default = 0x0000;
2887 ram attribute identifyType default = 0x0;
C Freeman8ff23312023-08-16 18:50:41 -04002888 callback attribute generatedCommandList;
2889 callback attribute acceptedCommandList;
2890 callback attribute eventList;
2891 callback attribute attributeList;
Andrei Litvin6d359752023-04-05 15:58:59 -04002892 ram attribute featureMap default = 0;
Andrei Litvin90d19572022-05-05 21:25:28 -04002893 ram attribute clusterRevision default = 4;
Andrei Litvin49fff5b2023-10-11 18:25:37 -04002894
2895 handle command Identify;
2896 handle command TriggerEffect;
Andrei Litvin90d19572022-05-05 21:25:28 -04002897 }
2898
Andrei Litvin90d19572022-05-05 21:25:28 -04002899 server cluster Descriptor {
Boris Zbarskye4c075f2022-09-12 08:23:17 -04002900 callback attribute deviceTypeList;
Andrei Litvin90d19572022-05-05 21:25:28 -04002901 callback attribute serverList;
2902 callback attribute clientList;
2903 callback attribute partsList;
C Freeman8ff23312023-08-16 18:50:41 -04002904 callback attribute generatedCommandList;
2905 callback attribute acceptedCommandList;
2906 callback attribute eventList;
2907 callback attribute attributeList;
Andrei Litvin6d359752023-04-05 15:58:59 -04002908 ram attribute featureMap default = 0;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05002909 callback attribute clusterRevision;
Andrei Litvin90d19572022-05-05 21:25:28 -04002910 }
2911
2912 server cluster PowerSource {
2913 ram attribute status default = 1;
2914 ram attribute order default = 1;
2915 ram attribute description default = "Battery";
Damian Królik383ced52022-07-11 11:34:13 +02002916 ram attribute batChargeLevel;
2917 ram attribute batReplacementNeeded;
2918 ram attribute batReplaceability;
2919 ram attribute batReplacementDescription;
C Freeman5db749b2023-11-14 06:33:55 +01002920 ram attribute batQuantity default = 1;
C Freeman529d74b2023-07-20 02:27:29 -04002921 callback attribute endpointList;
C Freeman8ff23312023-08-16 18:50:41 -04002922 callback attribute generatedCommandList;
2923 callback attribute acceptedCommandList;
2924 callback attribute eventList;
2925 callback attribute attributeList;
Andrei Litvin90d19572022-05-05 21:25:28 -04002926 ram attribute featureMap default = 0x0A;
C Freeman529d74b2023-07-20 02:27:29 -04002927 ram attribute clusterRevision default = 2;
Andrei Litvin90d19572022-05-05 21:25:28 -04002928 }
2929
2930 server cluster DoorLock {
Andrei Litvind5ae3f72023-02-14 09:25:16 -05002931 emits event DoorLockAlarm;
2932 emits event DoorStateChange;
2933 emits event LockOperation;
2934 emits event LockOperationError;
2935 emits event LockUserChange;
Andrei Litvin90d19572022-05-05 21:25:28 -04002936 persist attribute lockState default = 1;
2937 ram attribute lockType;
2938 ram attribute actuatorEnabled;
2939 ram attribute doorState;
2940 ram attribute numberOfTotalUsersSupported default = 10;
2941 ram attribute numberOfPINUsersSupported default = 10;
2942 ram attribute numberOfRFIDUsersSupported default = 10;
2943 ram attribute numberOfWeekDaySchedulesSupportedPerUser default = 10;
2944 ram attribute numberOfYearDaySchedulesSupportedPerUser default = 10;
Evgeniy Morozovb5a967c2022-05-26 15:35:59 +03002945 ram attribute numberOfHolidaySchedulesSupported default = 10;
Andrei Litvin90d19572022-05-05 21:25:28 -04002946 ram attribute maxPINCodeLength default = 8;
2947 ram attribute minPINCodeLength default = 6;
2948 ram attribute maxRFIDCodeLength default = 20;
2949 ram attribute minRFIDCodeLength default = 10;
2950 ram attribute credentialRulesSupport default = 1;
Evgeniy Morozov37fb44a2022-05-13 21:45:58 +03002951 ram attribute numberOfCredentialsSupportedPerUser default = 5;
Andrei Litvin90d19572022-05-05 21:25:28 -04002952 ram attribute language default = "en";
2953 ram attribute autoRelockTime default = 60;
Andrei Litvin6d359752023-04-05 15:58:59 -04002954 ram attribute soundVolume default = 0x00;
2955 ram attribute operatingMode default = 0x00;
Andrei Litvin90d19572022-05-05 21:25:28 -04002956 ram attribute supportedOperatingModes default = 0xFFF6;
Andrei Litvin6d359752023-04-05 15:58:59 -04002957 ram attribute enableOneTouchLocking default = 0x00;
2958 ram attribute enablePrivacyModeButton default = 0x00;
Andrei Litvin90d19572022-05-05 21:25:28 -04002959 ram attribute wrongCodeEntryLimit default = 3;
2960 ram attribute userCodeTemporaryDisableTime default = 10;
Andrei Litvin6d359752023-04-05 15:58:59 -04002961 ram attribute requirePINforRemoteOperation default = 0;
C Freeman8ff23312023-08-16 18:50:41 -04002962 callback attribute generatedCommandList;
2963 callback attribute acceptedCommandList;
2964 callback attribute eventList;
2965 callback attribute attributeList;
Marc Mikolits0b86ffa2023-05-30 18:59:23 +02002966 ram attribute featureMap default = 0x1DB3;
Marc Mikolits55890862023-06-01 16:40:22 +02002967 ram attribute clusterRevision default = 7;
Andrei Litvin49fff5b2023-10-11 18:25:37 -04002968
2969 handle command LockDoor;
2970 handle command UnlockDoor;
2971 handle command UnlockWithTimeout;
2972 handle command SetWeekDaySchedule;
2973 handle command GetWeekDaySchedule;
2974 handle command GetWeekDayScheduleResponse;
2975 handle command ClearWeekDaySchedule;
2976 handle command SetYearDaySchedule;
2977 handle command GetYearDaySchedule;
2978 handle command GetYearDayScheduleResponse;
2979 handle command ClearYearDaySchedule;
2980 handle command SetHolidaySchedule;
2981 handle command GetHolidaySchedule;
2982 handle command GetHolidayScheduleResponse;
2983 handle command ClearHolidaySchedule;
2984 handle command SetUser;
2985 handle command GetUser;
2986 handle command GetUserResponse;
2987 handle command ClearUser;
2988 handle command SetCredential;
2989 handle command SetCredentialResponse;
2990 handle command GetCredentialStatus;
2991 handle command GetCredentialStatusResponse;
2992 handle command ClearCredential;
2993 handle command UnboltDoor;
Andrei Litvin90d19572022-05-05 21:25:28 -04002994 }
Andrei Litvin6e3c1092022-01-14 15:30:21 -05002995}
2996
Andrei Litvin90d19572022-05-05 21:25:28 -04002997