blob: 8a50b9eb7721aff0c968f2a00d43480ce29c74cd [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
43 request struct TriggerEffectRequest {
fesseha-evee6637462023-05-26 18:34:09 +020044 EffectIdentifierEnum effectIdentifier = 0;
45 EffectVariantEnum effectVariant = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -040046 }
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 */
Boris Zbarskybc9bee22022-06-21 09:38:46 -040051 command access(invoke: manage) TriggerEffect(TriggerEffectRequest): DefaultSuccess = 64;
52}
53
Andrei Litvin21c43e22023-04-04 18:50:26 -040054/** Attributes and commands for group configuration and manipulation. */
Andrei Litvinf94a44e2023-11-28 11:15:13 -050055cluster Groups = 4 {
Andrei Litvin90d60f02023-11-23 16:51:51 -050056 revision 4;
57
Andrei Litvin4f65f6c2023-10-18 11:57:33 -040058 bitmap Feature : bitmap32 {
Andrei Litvinf241dd22022-07-09 08:35:09 -040059 kGroupNames = 0x1;
60 }
61
Andrei Litvin4f65f6c2023-10-18 11:57:33 -040062 bitmap NameSupportBitmap : bitmap8 {
Boris Zbarskycb1955f2023-05-25 14:01:41 -040063 kGroupNames = 0x80;
64 }
65
66 readonly attribute NameSupportBitmap nameSupport = 0;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -050067 readonly attribute command_id generatedCommandList[] = 65528;
68 readonly attribute command_id acceptedCommandList[] = 65529;
69 readonly attribute event_id eventList[] = 65530;
70 readonly attribute attrib_id attributeList[] = 65531;
Boris Zbarskybc9bee22022-06-21 09:38:46 -040071 readonly attribute bitmap32 featureMap = 65532;
72 readonly attribute int16u clusterRevision = 65533;
73
74 request struct AddGroupRequest {
Boris Zbarskya83ce322023-01-03 11:38:33 -050075 group_id groupID = 0;
Andrei Litvinbd8aa072023-10-27 18:12:37 -040076 char_string<16> groupName = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -040077 }
78
Boris Zbarskybc9bee22022-06-21 09:38:46 -040079 response struct AddGroupResponse = 0 {
Andrei Litvin47836d22023-10-12 18:08:11 -040080 enum8 status = 0;
Boris Zbarskya83ce322023-01-03 11:38:33 -050081 group_id groupID = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -040082 }
83
Andrei Litvinf94a44e2023-11-28 11:15:13 -050084 request struct ViewGroupRequest {
85 group_id groupID = 0;
86 }
87
Boris Zbarskybc9bee22022-06-21 09:38:46 -040088 response struct ViewGroupResponse = 1 {
Andrei Litvin47836d22023-10-12 18:08:11 -040089 enum8 status = 0;
Boris Zbarskya83ce322023-01-03 11:38:33 -050090 group_id groupID = 1;
Andrei Litvinbd8aa072023-10-27 18:12:37 -040091 char_string<16> groupName = 2;
Boris Zbarskybc9bee22022-06-21 09:38:46 -040092 }
93
Andrei Litvinf94a44e2023-11-28 11:15:13 -050094 request struct GetGroupMembershipRequest {
95 group_id groupList[] = 0;
96 }
97
Boris Zbarskybc9bee22022-06-21 09:38:46 -040098 response struct GetGroupMembershipResponse = 2 {
Andrei Litvin47836d22023-10-12 18:08:11 -040099 nullable int8u capacity = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400100 group_id groupList[] = 1;
101 }
102
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500103 request struct RemoveGroupRequest {
104 group_id groupID = 0;
105 }
106
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400107 response struct RemoveGroupResponse = 3 {
Andrei Litvin47836d22023-10-12 18:08:11 -0400108 enum8 status = 0;
Boris Zbarskya83ce322023-01-03 11:38:33 -0500109 group_id groupID = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400110 }
111
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500112 request struct AddGroupIfIdentifyingRequest {
113 group_id groupID = 0;
114 char_string<16> groupName = 1;
115 }
116
117 /** Command description for AddGroup */
Andrei Litvin33aecf82022-07-21 11:29:56 -0400118 fabric command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500119 /** Command description for ViewGroup */
Andrei Litvin33aecf82022-07-21 11:29:56 -0400120 fabric command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500121 /** Command description for GetGroupMembership */
Andrei Litvin33aecf82022-07-21 11:29:56 -0400122 fabric command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500123 /** Command description for RemoveGroup */
Andrei Litvin33aecf82022-07-21 11:29:56 -0400124 fabric command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500125 /** Command description for RemoveAllGroups */
Andrei Litvin33aecf82022-07-21 11:29:56 -0400126 fabric command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500127 /** Command description for AddGroupIfIdentifying */
Andrei Litvin33aecf82022-07-21 11:29:56 -0400128 fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400129}
130
lpbeliveau-silabs5dea83e2023-05-30 19:23:04 -0400131/** Attributes and commands for scene configuration and manipulation. */
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500132provisional cluster Scenes = 5 {
Andrei Litvin90d60f02023-11-23 16:51:51 -0500133 revision 5;
134
lpbeliveau-silabs0d36dcf2023-10-31 21:41:34 -0400135 bitmap CopyModeBitmap : bitmap8 {
136 kCopyAllScenes = 0x1;
137 }
138
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400139 bitmap Feature : bitmap32 {
lpbeliveau-silabs5dea83e2023-05-30 19:23:04 -0400140 kSceneNames = 0x1;
mpbreton-silabsa40963d2023-08-17 17:10:22 -0400141 kExplicit = 0x2;
142 kTableSize = 0x4;
143 kFabricScenes = 0x8;
lpbeliveau-silabs5dea83e2023-05-30 19:23:04 -0400144 }
145
lpbeliveau-silabs0d36dcf2023-10-31 21:41:34 -0400146 bitmap NameSupportBitmap : bitmap8 {
147 kSceneNames = 0x80;
lpbeliveau-silabs5dea83e2023-05-30 19:23:04 -0400148 }
149
150 struct AttributeValuePair {
lpbeliveau-silabs33b8bed2023-06-28 11:28:14 -0400151 attrib_id attributeID = 0;
lpbeliveau-silabs5dea83e2023-05-30 19:23:04 -0400152 int32u attributeValue = 1;
153 }
154
155 struct ExtensionFieldSet {
156 cluster_id clusterID = 0;
157 AttributeValuePair attributeValueList[] = 1;
158 }
159
lpbeliveau-silabs732d5e72023-11-16 12:36:24 -0500160 fabric_scoped struct SceneInfoStruct {
161 int8u sceneCount = 0;
162 fabric_sensitive int8u currentScene = 1;
163 fabric_sensitive group_id currentGroup = 2;
164 fabric_sensitive boolean sceneValid = 3;
165 int8u remainingCapacity = 4;
166 fabric_idx fabricIndex = 254;
167 }
168
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500169 readonly attribute optional int8u sceneCount = 0;
170 readonly attribute optional int8u currentScene = 1;
171 readonly attribute optional group_id currentGroup = 2;
172 readonly attribute optional boolean sceneValid = 3;
lpbeliveau-silabs0d36dcf2023-10-31 21:41:34 -0400173 readonly attribute NameSupportBitmap nameSupport = 4;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500174 readonly attribute optional nullable node_id lastConfiguredBy = 5;
lpbeliveau-silabs5dea83e2023-05-30 19:23:04 -0400175 readonly attribute int16u sceneTableSize = 6;
lpbeliveau-silabs732d5e72023-11-16 12:36:24 -0500176 readonly attribute SceneInfoStruct fabricSceneInfo[] = 7;
lpbeliveau-silabs5dea83e2023-05-30 19:23:04 -0400177 readonly attribute command_id generatedCommandList[] = 65528;
178 readonly attribute command_id acceptedCommandList[] = 65529;
179 readonly attribute event_id eventList[] = 65530;
180 readonly attribute attrib_id attributeList[] = 65531;
181 readonly attribute bitmap32 featureMap = 65532;
182 readonly attribute int16u clusterRevision = 65533;
183
184 request struct AddSceneRequest {
185 group_id groupID = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -0400186 int8u sceneID = 1;
187 int16u transitionTime = 2;
188 char_string sceneName = 3;
lpbeliveau-silabs5dea83e2023-05-30 19:23:04 -0400189 ExtensionFieldSet extensionFieldSets[] = 4;
190 }
191
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500192 response struct AddSceneResponse = 0 {
193 status status = 0;
194 group_id groupID = 1;
195 int8u sceneID = 2;
196 }
197
lpbeliveau-silabs5dea83e2023-05-30 19:23:04 -0400198 request struct ViewSceneRequest {
199 group_id groupID = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -0400200 int8u sceneID = 1;
lpbeliveau-silabs5dea83e2023-05-30 19:23:04 -0400201 }
202
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500203 response struct ViewSceneResponse = 1 {
204 status status = 0;
205 group_id groupID = 1;
206 int8u sceneID = 2;
207 optional int16u transitionTime = 3;
208 optional char_string sceneName = 4;
209 optional ExtensionFieldSet extensionFieldSets[] = 5;
210 }
211
lpbeliveau-silabs5dea83e2023-05-30 19:23:04 -0400212 request struct RemoveSceneRequest {
213 group_id groupID = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -0400214 int8u sceneID = 1;
lpbeliveau-silabs5dea83e2023-05-30 19:23:04 -0400215 }
216
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500217 response struct RemoveSceneResponse = 2 {
218 status status = 0;
219 group_id groupID = 1;
220 int8u sceneID = 2;
221 }
222
lpbeliveau-silabs5dea83e2023-05-30 19:23:04 -0400223 request struct RemoveAllScenesRequest {
224 group_id groupID = 0;
225 }
226
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500227 response struct RemoveAllScenesResponse = 3 {
228 status status = 0;
229 group_id groupID = 1;
230 }
231
lpbeliveau-silabs5dea83e2023-05-30 19:23:04 -0400232 request struct StoreSceneRequest {
233 group_id groupID = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -0400234 int8u sceneID = 1;
lpbeliveau-silabs5dea83e2023-05-30 19:23:04 -0400235 }
236
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500237 response struct StoreSceneResponse = 4 {
238 status status = 0;
239 group_id groupID = 1;
240 int8u sceneID = 2;
241 }
242
lpbeliveau-silabs5dea83e2023-05-30 19:23:04 -0400243 request struct RecallSceneRequest {
244 group_id groupID = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -0400245 int8u sceneID = 1;
246 optional nullable int16u transitionTime = 2;
lpbeliveau-silabs5dea83e2023-05-30 19:23:04 -0400247 }
248
249 request struct GetSceneMembershipRequest {
250 group_id groupID = 0;
251 }
252
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500253 response struct GetSceneMembershipResponse = 6 {
254 status status = 0;
255 nullable int8u capacity = 1;
256 group_id groupID = 2;
257 optional int8u sceneList[] = 3;
258 }
259
lpbeliveau-silabs5dea83e2023-05-30 19:23:04 -0400260 request struct EnhancedAddSceneRequest {
261 group_id groupID = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -0400262 int8u sceneID = 1;
263 int16u transitionTime = 2;
264 char_string sceneName = 3;
lpbeliveau-silabs5dea83e2023-05-30 19:23:04 -0400265 ExtensionFieldSet extensionFieldSets[] = 4;
266 }
267
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500268 response struct EnhancedAddSceneResponse = 64 {
269 status status = 0;
270 group_id groupID = 1;
271 int8u sceneID = 2;
272 }
273
lpbeliveau-silabs5dea83e2023-05-30 19:23:04 -0400274 request struct EnhancedViewSceneRequest {
275 group_id groupID = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -0400276 int8u sceneID = 1;
lpbeliveau-silabs5dea83e2023-05-30 19:23:04 -0400277 }
278
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500279 response struct EnhancedViewSceneResponse = 65 {
280 status status = 0;
281 group_id groupID = 1;
282 int8u sceneID = 2;
283 optional int16u transitionTime = 3;
284 optional char_string sceneName = 4;
285 optional ExtensionFieldSet extensionFieldSets[] = 5;
286 }
287
lpbeliveau-silabs5dea83e2023-05-30 19:23:04 -0400288 request struct CopySceneRequest {
lpbeliveau-silabs0d36dcf2023-10-31 21:41:34 -0400289 CopyModeBitmap mode = 0;
lpbeliveau-silabs5dea83e2023-05-30 19:23:04 -0400290 group_id groupIdentifierFrom = 1;
Andrei Litvin47836d22023-10-12 18:08:11 -0400291 int8u sceneIdentifierFrom = 2;
lpbeliveau-silabs5dea83e2023-05-30 19:23:04 -0400292 group_id groupIdentifierTo = 3;
Andrei Litvin47836d22023-10-12 18:08:11 -0400293 int8u sceneIdentifierTo = 4;
lpbeliveau-silabs5dea83e2023-05-30 19:23:04 -0400294 }
295
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500296 response struct CopySceneResponse = 66 {
lpbeliveau-silabs5dea83e2023-05-30 19:23:04 -0400297 status status = 0;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500298 group_id groupIdentifierFrom = 1;
299 int8u sceneIdentifierFrom = 2;
lpbeliveau-silabs5dea83e2023-05-30 19:23:04 -0400300 }
301
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500302 /** Add a scene to the scene table. Extension field sets are supported, and are inputed as '{"ClusterID": VALUE, "AttributeValueList":[{"AttributeId": VALUE, "AttributeValue": VALUE}]}' */
lpbeliveau-silabs5dea83e2023-05-30 19:23:04 -0400303 fabric command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500304 /** Retrieves the requested scene entry from its Scene table. */
lpbeliveau-silabs5dea83e2023-05-30 19:23:04 -0400305 fabric command ViewScene(ViewSceneRequest): ViewSceneResponse = 1;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500306 /** Removes the requested scene entry, corresponding to the value of the GroupID field, from its Scene Table */
lpbeliveau-silabs5dea83e2023-05-30 19:23:04 -0400307 fabric command access(invoke: manage) RemoveScene(RemoveSceneRequest): RemoveSceneResponse = 2;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500308 /** Remove all scenes, corresponding to the value of the GroupID field, from its Scene Table */
lpbeliveau-silabs5dea83e2023-05-30 19:23:04 -0400309 fabric command access(invoke: manage) RemoveAllScenes(RemoveAllScenesRequest): RemoveAllScenesResponse = 3;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500310 /** Adds the scene entry into its Scene Table along with all extension field sets corresponding to the current state of other clusters on the same endpoint */
lpbeliveau-silabs5dea83e2023-05-30 19:23:04 -0400311 fabric command access(invoke: manage) StoreScene(StoreSceneRequest): StoreSceneResponse = 4;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500312 /** Set the attributes and corresponding state for each other cluster implemented on the endpoint accordingly to the resquested scene entry in the Scene Table */
lpbeliveau-silabs5dea83e2023-05-30 19:23:04 -0400313 fabric command RecallScene(RecallSceneRequest): DefaultSuccess = 5;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500314 /** Get an unused scene identifier when no commissioning tool is in the network, or for a commissioning tool to get the used scene identifiers within a certain group */
lpbeliveau-silabs5dea83e2023-05-30 19:23:04 -0400315 fabric command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500316 /** Allows a scene to be added using a finer scene transition time than the AddScene command. */
lpbeliveau-silabs5dea83e2023-05-30 19:23:04 -0400317 fabric command EnhancedAddScene(EnhancedAddSceneRequest): EnhancedAddSceneResponse = 64;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500318 /** Allows a scene to be retrieved using a finer scene transition time than the ViewScene command */
lpbeliveau-silabs5dea83e2023-05-30 19:23:04 -0400319 fabric command EnhancedViewScene(EnhancedViewSceneRequest): EnhancedViewSceneResponse = 65;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500320 /** Allows a client to efficiently copy scenes from one group/scene identifier pair to another group/scene identifier pair. */
lpbeliveau-silabs5dea83e2023-05-30 19:23:04 -0400321 fabric command CopyScene(CopySceneRequest): CopySceneResponse = 66;
322}
323
Andrei Litvin21c43e22023-04-04 18:50:26 -0400324/** Attributes and commands for switching devices between 'On' and 'Off' states. */
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500325cluster OnOff = 6 {
Andrei Litvin90d60f02023-11-23 16:51:51 -0500326 revision 6;
327
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400328 enum DelayedAllOffEffectVariantEnum : enum8 {
Boris Zbarsky6fe4b112023-09-22 12:50:14 -0400329 kDelayedOffFastFade = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400330 kNoFade = 1;
Boris Zbarsky6fe4b112023-09-22 12:50:14 -0400331 kDelayedOffSlowFade = 2;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400332 }
333
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400334 enum DyingLightEffectVariantEnum : enum8 {
Boris Zbarsky6fe4b112023-09-22 12:50:14 -0400335 kDyingLightFadeOff = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400336 }
337
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400338 enum EffectIdentifierEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400339 kDelayedAllOff = 0;
340 kDyingLight = 1;
341 }
342
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400343 enum StartUpOnOffEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400344 kOff = 0;
345 kOn = 1;
Boris Zbarsky6fe4b112023-09-22 12:50:14 -0400346 kToggle = 2;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400347 }
348
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400349 bitmap Feature : bitmap32 {
Boris Zbarsky243ee4b2023-05-19 10:39:11 -0400350 kLighting = 0x1;
Boris Zbarsky6fe4b112023-09-22 12:50:14 -0400351 kDeadFrontBehavior = 0x2;
Andrei Litvin06dd5552023-11-01 18:50:49 -0400352 kOffOnly = 0x4;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400353 }
354
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400355 bitmap OnOffControlBitmap : bitmap8 {
Boris Zbarsky243ee4b2023-05-19 10:39:11 -0400356 kAcceptOnlyWhenOn = 0x1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400357 }
358
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400359 readonly attribute boolean onOff = 0;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500360 readonly attribute optional boolean globalSceneControl = 16384;
361 attribute optional int16u onTime = 16385;
362 attribute optional int16u offWaitTime = 16386;
363 attribute access(write: manage) optional nullable StartUpOnOffEnum startUpOnOff = 16387;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500364 readonly attribute command_id generatedCommandList[] = 65528;
365 readonly attribute command_id acceptedCommandList[] = 65529;
366 readonly attribute event_id eventList[] = 65530;
367 readonly attribute attrib_id attributeList[] = 65531;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400368 readonly attribute bitmap32 featureMap = 65532;
369 readonly attribute int16u clusterRevision = 65533;
370
371 request struct OffWithEffectRequest {
Boris Zbarsky6fe4b112023-09-22 12:50:14 -0400372 EffectIdentifierEnum effectIdentifier = 0;
Andrei Litvin06dd5552023-11-01 18:50:49 -0400373 enum8 effectVariant = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400374 }
375
376 request struct OnWithTimedOffRequest {
Boris Zbarsky6fe4b112023-09-22 12:50:14 -0400377 OnOffControlBitmap onOffControl = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400378 int16u onTime = 1;
379 int16u offWaitTime = 2;
380 }
381
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500382 /** On receipt of this command, a device SHALL enter its ‘Off’ state. This state is device dependent, but it is recommended that it is used for power off or similar functions. On receipt of the Off command, the OnTime attribute SHALL be set to 0. */
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400383 command Off(): DefaultSuccess = 0;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500384 /** On receipt of this command, a device SHALL enter its ‘On’ state. This state is device dependent, but it is recommended that it is used for power on or similar functions. On receipt of the On command, if the value of the OnTime attribute is equal to 0, the device SHALL set the OffWaitTime attribute to 0. */
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400385 command On(): DefaultSuccess = 1;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500386 /** On receipt of this command, if a device is in its ‘Off’ state it SHALL enter its ‘On’ state. Otherwise, if it is in its ‘On’ state it SHALL enter its ‘Off’ state. On receipt of the Toggle command, if the value of the OnOff attribute is equal to FALSE and if the value of the OnTime attribute is equal to 0, the device SHALL set the OffWaitTime attribute to 0. If the value of the OnOff attribute is equal to TRUE, the OnTime attribute SHALL be set to 0. */
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400387 command Toggle(): DefaultSuccess = 2;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500388 /** The OffWithEffect command allows devices to be turned off using enhanced ways of fading. */
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400389 command OffWithEffect(OffWithEffectRequest): DefaultSuccess = 64;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500390 /** The OnWithRecallGlobalScene command allows the recall of the settings when the device was turned off. */
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400391 command OnWithRecallGlobalScene(): DefaultSuccess = 65;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500392 /** The OnWithTimedOff command allows devices to be turned on for a specific duration with a guarded off duration so that SHOULD the device be subsequently switched off, further OnWithTimedOff commands, received during this time, are prevented from turning the devices back on. */
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400393 command OnWithTimedOff(OnWithTimedOffRequest): DefaultSuccess = 66;
394}
395
Andrei Litvin21c43e22023-04-04 18:50:26 -0400396/** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500397cluster LevelControl = 8 {
Andrei Litvin90d60f02023-11-23 16:51:51 -0500398 revision 5;
399
Andrei Litvin8f3eb012023-11-15 03:33:51 -0500400 enum MoveModeEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400401 kUp = 0;
402 kDown = 1;
403 }
404
Andrei Litvin8f3eb012023-11-15 03:33:51 -0500405 enum StepModeEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400406 kUp = 0;
407 kDown = 1;
408 }
409
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400410 bitmap Feature : bitmap32 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400411 kOnOff = 0x1;
412 kLighting = 0x2;
413 kFrequency = 0x4;
414 }
415
Andrei Litvin8f3eb012023-11-15 03:33:51 -0500416 bitmap OptionsBitmap : bitmap8 {
Jakob Sloth Olesen76d834e2022-11-18 21:28:27 +0100417 kExecuteIfOff = 0x1;
418 kCoupleColorTempToLevel = 0x2;
419 }
420
mkardous-silabs58c4b042022-08-03 15:32:35 -0400421 readonly attribute nullable int8u currentLevel = 0;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500422 readonly attribute optional int16u remainingTime = 1;
423 readonly attribute optional int8u minLevel = 2;
424 readonly attribute optional int8u maxLevel = 3;
425 readonly attribute optional int16u currentFrequency = 4;
426 readonly attribute optional int16u minFrequency = 5;
427 readonly attribute optional int16u maxFrequency = 6;
Andrei Litvin8f3eb012023-11-15 03:33:51 -0500428 attribute OptionsBitmap options = 15;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500429 attribute optional int16u onOffTransitionTime = 16;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400430 attribute nullable int8u onLevel = 17;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500431 attribute optional nullable int16u onTransitionTime = 18;
432 attribute optional nullable int16u offTransitionTime = 19;
433 attribute optional nullable int8u defaultMoveRate = 20;
434 attribute access(write: manage) optional nullable int8u startUpCurrentLevel = 16384;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500435 readonly attribute command_id generatedCommandList[] = 65528;
436 readonly attribute command_id acceptedCommandList[] = 65529;
437 readonly attribute event_id eventList[] = 65530;
438 readonly attribute attrib_id attributeList[] = 65531;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400439 readonly attribute bitmap32 featureMap = 65532;
440 readonly attribute int16u clusterRevision = 65533;
441
442 request struct MoveToLevelRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -0400443 int8u level = 0;
444 nullable int16u transitionTime = 1;
Andrei Litvin8f3eb012023-11-15 03:33:51 -0500445 OptionsBitmap optionsMask = 2;
446 OptionsBitmap optionsOverride = 3;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400447 }
448
449 request struct MoveRequest {
Andrei Litvin8f3eb012023-11-15 03:33:51 -0500450 MoveModeEnum moveMode = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -0400451 nullable int8u rate = 1;
Andrei Litvin8f3eb012023-11-15 03:33:51 -0500452 OptionsBitmap optionsMask = 2;
453 OptionsBitmap optionsOverride = 3;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400454 }
455
456 request struct StepRequest {
Andrei Litvin8f3eb012023-11-15 03:33:51 -0500457 StepModeEnum stepMode = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -0400458 int8u stepSize = 1;
459 nullable int16u transitionTime = 2;
Andrei Litvin8f3eb012023-11-15 03:33:51 -0500460 OptionsBitmap optionsMask = 3;
461 OptionsBitmap optionsOverride = 4;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400462 }
463
464 request struct StopRequest {
Andrei Litvin8f3eb012023-11-15 03:33:51 -0500465 OptionsBitmap optionsMask = 0;
466 OptionsBitmap optionsOverride = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400467 }
468
469 request struct MoveToLevelWithOnOffRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -0400470 int8u level = 0;
471 nullable int16u transitionTime = 1;
Andrei Litvin8f3eb012023-11-15 03:33:51 -0500472 OptionsBitmap optionsMask = 2;
473 OptionsBitmap optionsOverride = 3;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400474 }
475
476 request struct MoveWithOnOffRequest {
Andrei Litvin8f3eb012023-11-15 03:33:51 -0500477 MoveModeEnum moveMode = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -0400478 nullable int8u rate = 1;
Andrei Litvin8f3eb012023-11-15 03:33:51 -0500479 OptionsBitmap optionsMask = 2;
480 OptionsBitmap optionsOverride = 3;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400481 }
482
483 request struct StepWithOnOffRequest {
Andrei Litvin8f3eb012023-11-15 03:33:51 -0500484 StepModeEnum stepMode = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -0400485 int8u stepSize = 1;
486 nullable int16u transitionTime = 2;
Andrei Litvin8f3eb012023-11-15 03:33:51 -0500487 OptionsBitmap optionsMask = 3;
488 OptionsBitmap optionsOverride = 4;
Robert Szewczykcc3e2b72022-07-28 15:09:54 -0700489 }
490
491 request struct StopWithOnOffRequest {
Andrei Litvin8f3eb012023-11-15 03:33:51 -0500492 OptionsBitmap optionsMask = 0;
493 OptionsBitmap optionsOverride = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400494 }
495
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500496 request struct MoveToClosestFrequencyRequest {
497 int16u frequency = 0;
498 }
499
500 /** Command description for MoveToLevel */
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400501 command MoveToLevel(MoveToLevelRequest): DefaultSuccess = 0;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500502 /** Command description for Move */
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400503 command Move(MoveRequest): DefaultSuccess = 1;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500504 /** Command description for Step */
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400505 command Step(StepRequest): DefaultSuccess = 2;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500506 /** Command description for Stop */
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400507 command Stop(StopRequest): DefaultSuccess = 3;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500508 /** Command description for MoveToLevelWithOnOff */
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400509 command MoveToLevelWithOnOff(MoveToLevelWithOnOffRequest): DefaultSuccess = 4;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500510 /** Command description for MoveWithOnOff */
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400511 command MoveWithOnOff(MoveWithOnOffRequest): DefaultSuccess = 5;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500512 /** Command description for StepWithOnOff */
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400513 command StepWithOnOff(StepWithOnOffRequest): DefaultSuccess = 6;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500514 /** Command description for StopWithOnOff */
Robert Szewczykcc3e2b72022-07-28 15:09:54 -0700515 command StopWithOnOff(StopWithOnOffRequest): DefaultSuccess = 7;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500516 /** Change the currrent frequency to the provided one, or a close
517 approximation if the exact provided one is not possible. */
518 command MoveToClosestFrequency(MoveToClosestFrequencyRequest): DefaultSuccess = 8;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400519}
520
Andrei Litvin21c43e22023-04-04 18:50:26 -0400521/** 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 -0500522cluster Descriptor = 29 {
Andrei Litvin90d60f02023-11-23 16:51:51 -0500523 revision 2;
524
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400525 bitmap Feature : bitmap32 {
Boris Zbarskybf0b45a2023-08-11 08:04:15 -0400526 kTagList = 0x1;
527 }
528
Boris Zbarskye4c075f2022-09-12 08:23:17 -0400529 struct DeviceTypeStruct {
Boris Zbarsky7195bd82023-01-03 17:34:16 -0500530 devtype_id deviceType = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400531 int16u revision = 1;
532 }
533
abeck-whirlpoola1c11262023-07-21 00:22:56 -0500534 struct SemanticTagStruct {
535 nullable vendor_id mfgCode = 0;
536 enum8 namespaceID = 1;
537 enum8 tag = 2;
538 optional nullable char_string label = 3;
539 }
540
Boris Zbarskye4c075f2022-09-12 08:23:17 -0400541 readonly attribute DeviceTypeStruct deviceTypeList[] = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -0400542 readonly attribute cluster_id serverList[] = 1;
543 readonly attribute cluster_id clientList[] = 2;
544 readonly attribute endpoint_no partsList[] = 3;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500545 readonly attribute optional SemanticTagStruct tagList[] = 4;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500546 readonly attribute command_id generatedCommandList[] = 65528;
547 readonly attribute command_id acceptedCommandList[] = 65529;
548 readonly attribute event_id eventList[] = 65530;
549 readonly attribute attrib_id attributeList[] = 65531;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400550 readonly attribute bitmap32 featureMap = 65532;
551 readonly attribute int16u clusterRevision = 65533;
552}
553
Andrei Litvin21c43e22023-04-04 18:50:26 -0400554/** The Access Control Cluster exposes a data model view of a
555 Node's Access Control List (ACL), which codifies the rules used to manage
556 and enforce Access Control for the Node's endpoints and their associated
557 cluster instances. */
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500558cluster AccessControl = 31 {
Andrei Litvin90d60f02023-11-23 16:51:51 -0500559 revision 1; // NOTE: Default/not specifically set
560
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400561 enum AccessControlEntryAuthModeEnum : enum8 {
Andrei Litvin413a9002023-06-28 13:02:18 -0400562 kPASE = 1;
563 kCASE = 2;
Harsha Rajendrand02ff672022-02-03 09:26:36 -0500564 kGroup = 3;
565 }
566
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400567 enum AccessControlEntryPrivilegeEnum : enum8 {
Boris Zbarsky28cb6cc2023-01-04 04:46:21 -0500568 kView = 1;
569 kProxyView = 2;
570 kOperate = 3;
571 kManage = 4;
572 kAdminister = 5;
573 }
574
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400575 enum ChangeTypeEnum : enum8 {
Harsha Rajendrand02ff672022-02-03 09:26:36 -0500576 kChanged = 0;
577 kAdded = 1;
578 kRemoved = 2;
579 }
580
Boris Zbarskyf9731a82023-05-24 15:08:53 -0400581 struct AccessControlTargetStruct {
Bharat Rajuf25702c2023-04-12 11:14:12 -0400582 nullable cluster_id cluster = 0;
583 nullable endpoint_no endpoint = 1;
584 nullable devtype_id deviceType = 2;
585 }
586
Boris Zbarsky28cb6cc2023-01-04 04:46:21 -0500587 fabric_scoped struct AccessControlEntryStruct {
588 fabric_sensitive AccessControlEntryPrivilegeEnum privilege = 1;
589 fabric_sensitive AccessControlEntryAuthModeEnum authMode = 2;
Andrei Litvind38820d2022-10-04 09:25:26 -0400590 nullable fabric_sensitive int64u subjects[] = 3;
Boris Zbarskyf9731a82023-05-24 15:08:53 -0400591 nullable fabric_sensitive AccessControlTargetStruct targets[] = 4;
Song GUOcd089382022-03-17 13:31:51 +0800592 fabric_idx fabricIndex = 254;
Harsha Rajendrand02ff672022-02-03 09:26:36 -0500593 }
594
Boris Zbarsky28cb6cc2023-01-04 04:46:21 -0500595 fabric_scoped struct AccessControlExtensionStruct {
Andrei Litvind38820d2022-10-04 09:25:26 -0400596 fabric_sensitive octet_string<128> data = 1;
Song GUOcd089382022-03-17 13:31:51 +0800597 fabric_idx fabricIndex = 254;
Harsha Rajendrand02ff672022-02-03 09:26:36 -0500598 }
599
Andrei Litvind38820d2022-10-04 09:25:26 -0400600 fabric_sensitive info event access(read: administer) AccessControlEntryChanged = 0 {
Harsha Rajendrand02ff672022-02-03 09:26:36 -0500601 nullable node_id adminNodeID = 1;
Andrei Litvin47836d22023-10-12 18:08:11 -0400602 nullable int16u adminPasscodeID = 2;
Harsha Rajendrand02ff672022-02-03 09:26:36 -0500603 ChangeTypeEnum changeType = 3;
Boris Zbarsky28cb6cc2023-01-04 04:46:21 -0500604 nullable AccessControlEntryStruct latestValue = 4;
Boris Zbarskya7ad1d82022-07-26 14:52:04 -0400605 fabric_idx fabricIndex = 254;
Harsha Rajendrand02ff672022-02-03 09:26:36 -0500606 }
607
Andrei Litvind38820d2022-10-04 09:25:26 -0400608 fabric_sensitive info event access(read: administer) AccessControlExtensionChanged = 1 {
Harsha Rajendrand02ff672022-02-03 09:26:36 -0500609 nullable node_id adminNodeID = 1;
Andrei Litvin47836d22023-10-12 18:08:11 -0400610 nullable int16u adminPasscodeID = 2;
Harsha Rajendrand02ff672022-02-03 09:26:36 -0500611 ChangeTypeEnum changeType = 3;
Boris Zbarsky28cb6cc2023-01-04 04:46:21 -0500612 nullable AccessControlExtensionStruct latestValue = 4;
Boris Zbarskya7ad1d82022-07-26 14:52:04 -0400613 fabric_idx fabricIndex = 254;
Harsha Rajendrand02ff672022-02-03 09:26:36 -0500614 }
615
Boris Zbarsky28cb6cc2023-01-04 04:46:21 -0500616 attribute access(read: administer, write: administer) AccessControlEntryStruct acl[] = 0;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500617 attribute access(read: administer, write: administer) optional AccessControlExtensionStruct extension[] = 1;
Tennessee Carmel-Veilleux184bda12022-04-13 10:52:31 -0400618 readonly attribute int16u subjectsPerAccessControlEntry = 2;
619 readonly attribute int16u targetsPerAccessControlEntry = 3;
620 readonly attribute int16u accessControlEntriesPerFabric = 4;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500621 readonly attribute command_id generatedCommandList[] = 65528;
622 readonly attribute command_id acceptedCommandList[] = 65529;
623 readonly attribute event_id eventList[] = 65530;
Andrei Litvin306e8a42022-04-07 05:42:07 -1000624 readonly attribute attrib_id attributeList[] = 65531;
tehampson2db812e2022-05-23 15:24:29 -0400625 readonly attribute bitmap32 featureMap = 65532;
Andrei Litvin306e8a42022-04-07 05:42:07 -1000626 readonly attribute int16u clusterRevision = 65533;
Harsha Rajendrand02ff672022-02-03 09:26:36 -0500627}
628
Andrei Litvin21c43e22023-04-04 18:50:26 -0400629/** This cluster provides attributes and events for determining basic information about Nodes, which supports both
630 Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number,
631 which apply to the whole Node. Also allows setting user device information such as location. */
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500632cluster BasicInformation = 40 {
Andrei Litvin90d60f02023-11-23 16:51:51 -0500633 revision 3;
634
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400635 enum ColorEnum : enum8 {
Boris Zbarskyab59adc2023-05-02 10:45:44 -0400636 kBlack = 0;
637 kNavy = 1;
638 kGreen = 2;
639 kTeal = 3;
640 kMaroon = 4;
641 kPurple = 5;
642 kOlive = 6;
643 kGray = 7;
644 kBlue = 8;
645 kLime = 9;
646 kAqua = 10;
647 kRed = 11;
648 kFuchsia = 12;
649 kYellow = 13;
650 kWhite = 14;
651 kNickel = 15;
652 kChrome = 16;
653 kBrass = 17;
654 kCopper = 18;
655 kSilver = 19;
656 kGold = 20;
657 }
658
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400659 enum ProductFinishEnum : enum8 {
Boris Zbarskyab59adc2023-05-02 10:45:44 -0400660 kOther = 0;
661 kMatte = 1;
662 kSatin = 2;
663 kPolished = 3;
664 kRugged = 4;
665 kFabric = 5;
666 }
667
Tennessee Carmel-Veilleux184bda12022-04-13 10:52:31 -0400668 struct CapabilityMinimaStruct {
669 int16u caseSessionsPerFabric = 0;
670 int16u subscriptionsPerFabric = 1;
671 }
672
Boris Zbarskyab59adc2023-05-02 10:45:44 -0400673 struct ProductAppearanceStruct {
674 ProductFinishEnum finish = 0;
675 nullable ColorEnum primaryColor = 1;
676 }
677
Andrei Litvin6e3c1092022-01-14 15:30:21 -0500678 critical event StartUp = 0 {
Andrei Litvin47836d22023-10-12 18:08:11 -0400679 int32u softwareVersion = 0;
Andrei Litvin6e3c1092022-01-14 15:30:21 -0500680 }
681
682 critical event ShutDown = 1 {
683 }
684
685 info event Leave = 2 {
Boris Zbarsky5022eb12022-07-28 10:53:33 -0400686 fabric_idx fabricIndex = 0;
Andrei Litvin6e3c1092022-01-14 15:30:21 -0500687 }
688
689 info event ReachableChanged = 3 {
690 boolean reachableNewValue = 0;
691 }
692
Leonard Zgrablic9f16e9a2022-02-01 12:43:34 -0500693 readonly attribute int16u dataModelRevision = 0;
Andrei Litvin2f1301b2022-01-20 22:16:11 -0500694 readonly attribute char_string<32> vendorName = 1;
Andrei Litvind5e74312022-01-19 17:06:40 -0500695 readonly attribute vendor_id vendorID = 2;
Andrei Litvin2f1301b2022-01-20 22:16:11 -0500696 readonly attribute char_string<32> productName = 3;
Andrei Litvind5e74312022-01-19 17:06:40 -0500697 readonly attribute int16u productID = 4;
Andrei Litvinecc92db2022-04-13 11:11:56 -1000698 attribute access(write: manage) char_string<32> nodeLabel = 5;
699 attribute access(write: administer) char_string<2> location = 6;
Andrei Litvind5e74312022-01-19 17:06:40 -0500700 readonly attribute int16u hardwareVersion = 7;
Andrei Litvin2f1301b2022-01-20 22:16:11 -0500701 readonly attribute char_string<64> hardwareVersionString = 8;
Andrei Litvind5e74312022-01-19 17:06:40 -0500702 readonly attribute int32u softwareVersion = 9;
Andrei Litvin2f1301b2022-01-20 22:16:11 -0500703 readonly attribute char_string<64> softwareVersionString = 10;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500704 readonly attribute optional char_string<16> manufacturingDate = 11;
705 readonly attribute optional char_string<32> partNumber = 12;
706 readonly attribute optional long_char_string<256> productURL = 13;
707 readonly attribute optional char_string<64> productLabel = 14;
708 readonly attribute optional char_string<32> serialNumber = 15;
709 attribute access(write: manage) optional boolean localConfigDisabled = 16;
710 readonly attribute optional boolean reachable = 17;
711 readonly attribute optional char_string<32> uniqueID = 18;
Tennessee Carmel-Veilleux184bda12022-04-13 10:52:31 -0400712 readonly attribute CapabilityMinimaStruct capabilityMinima = 19;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500713 readonly attribute optional ProductAppearanceStruct productAppearance = 20;
Terence Hampson9969d442023-11-16 11:30:48 -0500714 readonly attribute int32u specificationVersion = 21;
715 readonly attribute int16u maxPathsPerInvoke = 22;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500716 readonly attribute command_id generatedCommandList[] = 65528;
717 readonly attribute command_id acceptedCommandList[] = 65529;
718 readonly attribute event_id eventList[] = 65530;
719 readonly attribute attrib_id attributeList[] = 65531;
tehampson2db812e2022-05-23 15:24:29 -0400720 readonly attribute bitmap32 featureMap = 65532;
Andrei Litvin306e8a42022-04-07 05:42:07 -1000721 readonly attribute int16u clusterRevision = 65533;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500722
723 command MfgSpecificPing(): DefaultSuccess = 0;
Andrei Litvin6e3c1092022-01-14 15:30:21 -0500724}
725
Andrei Litvin21c43e22023-04-04 18:50:26 -0400726/** Provides an interface for providing OTA software updates */
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500727cluster OtaSoftwareUpdateProvider = 41 {
Andrei Litvin90d60f02023-11-23 16:51:51 -0500728 revision 1; // NOTE: Default/not specifically set
729
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400730 enum ApplyUpdateActionEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400731 kProceed = 0;
732 kAwaitNextAction = 1;
733 kDiscontinue = 2;
734 }
735
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400736 enum DownloadProtocolEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400737 kBDXSynchronous = 0;
738 kBDXAsynchronous = 1;
Andrei Litvin413a9002023-06-28 13:02:18 -0400739 kHTTPS = 2;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400740 kVendorSpecific = 3;
741 }
742
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400743 enum StatusEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400744 kUpdateAvailable = 0;
745 kBusy = 1;
746 kNotAvailable = 2;
747 kDownloadProtocolNotSupported = 3;
748 }
749
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500750 readonly attribute command_id generatedCommandList[] = 65528;
751 readonly attribute command_id acceptedCommandList[] = 65529;
752 readonly attribute event_id eventList[] = 65530;
753 readonly attribute attrib_id attributeList[] = 65531;
754 readonly attribute bitmap32 featureMap = 65532;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400755 readonly attribute int16u clusterRevision = 65533;
756
757 request struct QueryImageRequest {
Boris Zbarsky458bbbf2023-01-03 13:11:18 -0500758 vendor_id vendorID = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -0400759 int16u productID = 1;
760 int32u softwareVersion = 2;
Boris Zbarsky71317fa2023-10-11 15:56:01 -0400761 DownloadProtocolEnum protocolsSupported[] = 3;
Andrei Litvin47836d22023-10-12 18:08:11 -0400762 optional int16u hardwareVersion = 4;
763 optional char_string<2> location = 5;
764 optional boolean requestorCanConsent = 6;
765 optional octet_string<512> metadataForProvider = 7;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400766 }
767
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400768 response struct QueryImageResponse = 1 {
Boris Zbarsky71317fa2023-10-11 15:56:01 -0400769 StatusEnum status = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -0400770 optional int32u delayedActionTime = 1;
771 optional char_string<256> imageURI = 2;
772 optional int32u softwareVersion = 3;
773 optional char_string<64> softwareVersionString = 4;
774 optional octet_string<32> updateToken = 5;
775 optional boolean userConsentNeeded = 6;
776 optional octet_string<512> metadataForRequestor = 7;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400777 }
778
Andrei Litvin040c65d2023-03-28 16:23:26 -0400779 request struct ApplyUpdateRequestRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -0400780 octet_string<32> updateToken = 0;
781 int32u newVersion = 1;
Andrei Litvin040c65d2023-03-28 16:23:26 -0400782 }
783
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400784 response struct ApplyUpdateResponse = 3 {
Boris Zbarsky71317fa2023-10-11 15:56:01 -0400785 ApplyUpdateActionEnum action = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -0400786 int32u delayedActionTime = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400787 }
788
Andrei Litvin040c65d2023-03-28 16:23:26 -0400789 request struct NotifyUpdateAppliedRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -0400790 octet_string<32> updateToken = 0;
791 int32u softwareVersion = 1;
Andrei Litvin040c65d2023-03-28 16:23:26 -0400792 }
793
Andrei Litvin21c43e22023-04-04 18:50:26 -0400794 /** Determine availability of a new Software Image */
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400795 command QueryImage(QueryImageRequest): QueryImageResponse = 0;
Andrei Litvin21c43e22023-04-04 18:50:26 -0400796 /** Determine next action to take for a downloaded Software Image */
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400797 command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2;
Andrei Litvin21c43e22023-04-04 18:50:26 -0400798 /** Notify OTA Provider that an update was applied */
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400799 command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4;
800}
801
Andrei Litvin21c43e22023-04-04 18:50:26 -0400802/** Provides an interface for downloading and applying OTA software updates */
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500803cluster OtaSoftwareUpdateRequestor = 42 {
Andrei Litvin90d60f02023-11-23 16:51:51 -0500804 revision 1; // NOTE: Default/not specifically set
805
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400806 enum AnnouncementReasonEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400807 kSimpleAnnouncement = 0;
808 kUpdateAvailable = 1;
809 kUrgentUpdateAvailable = 2;
810 }
811
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400812 enum ChangeReasonEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400813 kUnknown = 0;
814 kSuccess = 1;
815 kFailure = 2;
816 kTimeOut = 3;
817 kDelayByProvider = 4;
818 }
819
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400820 enum UpdateStateEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400821 kUnknown = 0;
822 kIdle = 1;
823 kQuerying = 2;
824 kDelayedOnQuery = 3;
825 kDownloading = 4;
826 kApplying = 5;
827 kDelayedOnApply = 6;
828 kRollingBack = 7;
829 kDelayedOnUserConsent = 8;
830 }
831
Andrei Litvind38820d2022-10-04 09:25:26 -0400832 fabric_scoped struct ProviderLocation {
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400833 node_id providerNodeID = 1;
834 endpoint_no endpoint = 2;
835 fabric_idx fabricIndex = 254;
836 }
837
838 info event StateTransition = 0 {
Boris Zbarsky71317fa2023-10-11 15:56:01 -0400839 UpdateStateEnum previousState = 0;
840 UpdateStateEnum newState = 1;
841 ChangeReasonEnum reason = 2;
Andrei Litvin47836d22023-10-12 18:08:11 -0400842 nullable int32u targetSoftwareVersion = 3;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400843 }
844
845 critical event VersionApplied = 1 {
Andrei Litvin47836d22023-10-12 18:08:11 -0400846 int32u softwareVersion = 0;
847 int16u productID = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400848 }
849
850 info event DownloadError = 2 {
Andrei Litvin47836d22023-10-12 18:08:11 -0400851 int32u softwareVersion = 0;
852 int64u bytesDownloaded = 1;
853 nullable int8u progressPercent = 2;
854 nullable int64s platformCode = 3;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400855 }
856
C Freemand5f68052023-12-07 13:17:36 -0500857 attribute access(write: administer) ProviderLocation defaultOTAProviders[] = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400858 readonly attribute boolean updatePossible = 1;
Boris Zbarsky71317fa2023-10-11 15:56:01 -0400859 readonly attribute UpdateStateEnum updateState = 2;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400860 readonly attribute nullable int8u updateStateProgress = 3;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500861 readonly attribute command_id generatedCommandList[] = 65528;
862 readonly attribute command_id acceptedCommandList[] = 65529;
863 readonly attribute event_id eventList[] = 65530;
864 readonly attribute attrib_id attributeList[] = 65531;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400865 readonly attribute bitmap32 featureMap = 65532;
866 readonly attribute int16u clusterRevision = 65533;
867
Boris Zbarsky458bbbf2023-01-03 13:11:18 -0500868 request struct AnnounceOTAProviderRequest {
869 node_id providerNodeID = 0;
870 vendor_id vendorID = 1;
Boris Zbarsky71317fa2023-10-11 15:56:01 -0400871 AnnouncementReasonEnum announcementReason = 2;
Andrei Litvin47836d22023-10-12 18:08:11 -0400872 optional octet_string<512> metadataForNode = 3;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400873 endpoint_no endpoint = 4;
874 }
875
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500876 /** Announce the presence of an OTA Provider */
Boris Zbarsky458bbbf2023-01-03 13:11:18 -0500877 command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400878}
879
Andrei Litvin21c43e22023-04-04 18:50:26 -0400880/** Nodes should be expected to be deployed to any and all regions of the world. These global regions
881 may have differing common languages, units of measurements, and numerical formatting
882 standards. As such, Nodes that visually or audibly convey information need a mechanism by which
883 they can be configured to use a user’s preferred language, units, etc */
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500884cluster LocalizationConfiguration = 43 {
Andrei Litvin90d60f02023-11-23 16:51:51 -0500885 revision 1; // NOTE: Default/not specifically set
886
Andrei Litvindd920f22023-10-30 10:14:57 -0400887 attribute access(write: manage) char_string<35> activeLocale = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -0400888 readonly attribute char_string supportedLocales[] = 1;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500889 readonly attribute command_id generatedCommandList[] = 65528;
890 readonly attribute command_id acceptedCommandList[] = 65529;
891 readonly attribute event_id eventList[] = 65530;
892 readonly attribute attrib_id attributeList[] = 65531;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400893 readonly attribute bitmap32 featureMap = 65532;
894 readonly attribute int16u clusterRevision = 65533;
895}
896
Andrei Litvin21c43e22023-04-04 18:50:26 -0400897/** Nodes should be expected to be deployed to any and all regions of the world. These global regions
898 may have differing preferences for how dates and times are conveyed. As such, Nodes that visually
899 or audibly convey time information need a mechanism by which they can be configured to use a
900 user’s preferred format. */
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500901cluster TimeFormatLocalization = 44 {
Andrei Litvin90d60f02023-11-23 16:51:51 -0500902 revision 1; // NOTE: Default/not specifically set
903
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400904 enum CalendarTypeEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400905 kBuddhist = 0;
906 kChinese = 1;
907 kCoptic = 2;
908 kEthiopian = 3;
909 kGregorian = 4;
910 kHebrew = 5;
911 kIndian = 6;
912 kIslamic = 7;
913 kJapanese = 8;
914 kKorean = 9;
915 kPersian = 10;
916 kTaiwanese = 11;
Andrei Litvinf03cc572023-12-07 11:34:59 -0500917 kUseActiveLocale = 255;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400918 }
919
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400920 enum HourFormatEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400921 k12hr = 0;
922 k24hr = 1;
Andrei Litvinf03cc572023-12-07 11:34:59 -0500923 kUseActiveLocale = 255;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400924 }
925
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400926 bitmap Feature : bitmap32 {
Andrei Litvin98e3bc62023-08-30 14:19:04 -0400927 kCalendarFormat = 0x1;
928 }
929
Andrei Litvin4f53c342023-11-06 17:01:02 -0500930 attribute access(write: manage) HourFormatEnum hourFormat = 0;
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500931 attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1;
932 readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500933 readonly attribute command_id generatedCommandList[] = 65528;
934 readonly attribute command_id acceptedCommandList[] = 65529;
935 readonly attribute event_id eventList[] = 65530;
936 readonly attribute attrib_id attributeList[] = 65531;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400937 readonly attribute bitmap32 featureMap = 65532;
938 readonly attribute int16u clusterRevision = 65533;
939}
940
Andrei Litvin21c43e22023-04-04 18:50:26 -0400941/** This cluster is used to manage global aspects of the Commissioning flow. */
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500942cluster GeneralCommissioning = 48 {
Andrei Litvin90d60f02023-11-23 16:51:51 -0500943 revision 1; // NOTE: Default/not specifically set
944
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400945 enum CommissioningErrorEnum : enum8 {
Andrei Litvin413a9002023-06-28 13:02:18 -0400946 kOK = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400947 kValueOutsideRange = 1;
948 kInvalidAuthentication = 2;
949 kNoFailSafe = 3;
950 kBusyWithOtherAdmin = 4;
951 }
952
Andrei Litvin4f65f6c2023-10-18 11:57:33 -0400953 enum RegulatoryLocationTypeEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400954 kIndoor = 0;
955 kOutdoor = 1;
956 kIndoorOutdoor = 2;
957 }
958
959 struct BasicCommissioningInfo {
960 int16u failSafeExpiryLengthSeconds = 0;
961 int16u maxCumulativeFailsafeSeconds = 1;
962 }
963
964 attribute access(write: administer) int64u breadcrumb = 0;
965 readonly attribute BasicCommissioningInfo basicCommissioningInfo = 1;
Boris Zbarsky98768782023-05-23 12:01:23 -0400966 readonly attribute RegulatoryLocationTypeEnum regulatoryConfig = 2;
967 readonly attribute RegulatoryLocationTypeEnum locationCapability = 3;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400968 readonly attribute boolean supportsConcurrentConnection = 4;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -0500969 readonly attribute command_id generatedCommandList[] = 65528;
970 readonly attribute command_id acceptedCommandList[] = 65529;
971 readonly attribute event_id eventList[] = 65530;
972 readonly attribute attrib_id attributeList[] = 65531;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400973 readonly attribute bitmap32 featureMap = 65532;
974 readonly attribute int16u clusterRevision = 65533;
975
976 request struct ArmFailSafeRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -0400977 int16u expiryLengthSeconds = 0;
978 int64u breadcrumb = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400979 }
980
Andrei Litvinf94a44e2023-11-28 11:15:13 -0500981 response struct ArmFailSafeResponse = 1 {
982 CommissioningErrorEnum errorCode = 0;
983 char_string<128> debugText = 1;
984 }
985
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400986 request struct SetRegulatoryConfigRequest {
Boris Zbarsky98768782023-05-23 12:01:23 -0400987 RegulatoryLocationTypeEnum newRegulatoryConfig = 0;
Andrei Litvind47aeb42023-11-15 06:16:41 -0500988 char_string<2> countryCode = 1;
Andrei Litvin47836d22023-10-12 18:08:11 -0400989 int64u breadcrumb = 2;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400990 }
991
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400992 response struct SetRegulatoryConfigResponse = 3 {
Boris Zbarsky98768782023-05-23 12:01:23 -0400993 CommissioningErrorEnum errorCode = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -0400994 char_string debugText = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -0400995 }
996
997 response struct CommissioningCompleteResponse = 5 {
Boris Zbarsky98768782023-05-23 12:01:23 -0400998 CommissioningErrorEnum errorCode = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -0400999 char_string debugText = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001000 }
1001
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001002 /** Arm the persistent fail-safe timer with an expiry time of now + ExpiryLengthSeconds using device clock */
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001003 command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001004 /** Set the regulatory configuration to be used during commissioning */
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001005 command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001006 /** 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 -04001007 fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001008}
1009
Andrei Litvin21c43e22023-04-04 18:50:26 -04001010/** Functionality to configure, enable, disable network credentials and access on a Matter device. */
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001011cluster NetworkCommissioning = 49 {
Andrei Litvin90d60f02023-11-23 16:51:51 -05001012 revision 1; // NOTE: Default/not specifically set
1013
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001014 enum NetworkCommissioningStatusEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001015 kSuccess = 0;
1016 kOutOfRange = 1;
1017 kBoundsExceeded = 2;
1018 kNetworkIDNotFound = 3;
1019 kDuplicateNetworkID = 4;
1020 kNetworkNotFound = 5;
1021 kRegulatoryError = 6;
1022 kAuthFailure = 7;
1023 kUnsupportedSecurity = 8;
1024 kOtherConnectionFailure = 9;
1025 kIPV6Failed = 10;
1026 kIPBindFailed = 11;
1027 kUnknownError = 12;
1028 }
1029
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001030 enum WiFiBandEnum : enum8 {
Andrei Litvin413a9002023-06-28 13:02:18 -04001031 k2G4 = 0;
1032 k3G65 = 1;
1033 k5G = 2;
1034 k6G = 3;
1035 k60G = 4;
1036 k1G = 5;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001037 }
1038
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001039 bitmap Feature : bitmap32 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001040 kWiFiNetworkInterface = 0x1;
1041 kThreadNetworkInterface = 0x2;
1042 kEthernetNetworkInterface = 0x4;
Karsten Sperling261b03f2023-11-09 06:45:38 +13001043 kPerDeviceCredentials = 0x8;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001044 }
1045
Tennessee Carmel-Veilleux78791112023-10-24 13:39:10 -04001046 bitmap ThreadCapabilitiesBitmap : bitmap16 {
1047 kIsBorderRouterCapable = 0x1;
1048 kIsRouterCapable = 0x2;
1049 kIsSleepyEndDeviceCapable = 0x4;
1050 kIsFullThreadDevice = 0x8;
1051 kIsSynchronizedSleepyEndDeviceCapable = 0x10;
1052 }
1053
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001054 bitmap WiFiSecurityBitmap : bitmap8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001055 kUnencrypted = 0x1;
Andrei Litvin413a9002023-06-28 13:02:18 -04001056 kWEP = 0x2;
1057 kWPAPersonal = 0x4;
1058 kWPA2Personal = 0x8;
1059 kWPA3Personal = 0x10;
Karsten Sperling261b03f2023-11-09 06:45:38 +13001060 kWPA3MatterPDC = 0x20;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001061 }
1062
Boris Zbarsky0dc592e2023-06-01 15:25:00 -04001063 struct NetworkInfoStruct {
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001064 octet_string<32> networkID = 0;
1065 boolean connected = 1;
Karsten Sperling261b03f2023-11-09 06:45:38 +13001066 optional nullable octet_string<20> networkIdentifier = 2;
1067 optional nullable octet_string<20> clientIdentifier = 3;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001068 }
1069
Boris Zbarsky0dc592e2023-06-01 15:25:00 -04001070 struct ThreadInterfaceScanResultStruct {
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001071 int16u panId = 0;
1072 int64u extendedPanId = 1;
1073 char_string<16> networkName = 2;
1074 int16u channel = 3;
1075 int8u version = 4;
1076 octet_string<8> extendedAddress = 5;
1077 int8s rssi = 6;
1078 int8u lqi = 7;
1079 }
1080
Boris Zbarsky0dc592e2023-06-01 15:25:00 -04001081 struct WiFiInterfaceScanResultStruct {
1082 WiFiSecurityBitmap security = 0;
Bharat Rajuf25702c2023-04-12 11:14:12 -04001083 octet_string<32> ssid = 1;
1084 octet_string<6> bssid = 2;
1085 int16u channel = 3;
Boris Zbarsky0dc592e2023-06-01 15:25:00 -04001086 WiFiBandEnum wiFiBand = 4;
Bharat Rajuf25702c2023-04-12 11:14:12 -04001087 int8s rssi = 5;
1088 }
1089
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001090 readonly attribute access(read: administer) int8u maxNetworks = 0;
Boris Zbarsky0dc592e2023-06-01 15:25:00 -04001091 readonly attribute access(read: administer) NetworkInfoStruct networks[] = 1;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001092 readonly attribute optional int8u scanMaxTimeSeconds = 2;
1093 readonly attribute optional int8u connectMaxTimeSeconds = 3;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001094 attribute access(write: administer) boolean interfaceEnabled = 4;
Boris Zbarsky0dc592e2023-06-01 15:25:00 -04001095 readonly attribute access(read: administer) nullable NetworkCommissioningStatusEnum lastNetworkingStatus = 5;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001096 readonly attribute access(read: administer) nullable octet_string<32> lastNetworkID = 6;
1097 readonly attribute access(read: administer) nullable int32s lastConnectErrorValue = 7;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001098 readonly attribute optional WiFiBandEnum supportedWiFiBands[] = 8;
1099 readonly attribute optional ThreadCapabilitiesBitmap supportedThreadFeatures = 9;
1100 readonly attribute optional int16u threadVersion = 10;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -05001101 readonly attribute command_id generatedCommandList[] = 65528;
1102 readonly attribute command_id acceptedCommandList[] = 65529;
1103 readonly attribute event_id eventList[] = 65530;
1104 readonly attribute attrib_id attributeList[] = 65531;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001105 readonly attribute bitmap32 featureMap = 65532;
1106 readonly attribute int16u clusterRevision = 65533;
1107
1108 request struct ScanNetworksRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04001109 optional nullable octet_string<32> ssid = 0;
1110 optional int64u breadcrumb = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001111 }
1112
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001113 response struct ScanNetworksResponse = 1 {
1114 NetworkCommissioningStatusEnum networkingStatus = 0;
1115 optional char_string debugText = 1;
1116 optional WiFiInterfaceScanResultStruct wiFiScanResults[] = 2;
1117 optional ThreadInterfaceScanResultStruct threadScanResults[] = 3;
1118 }
1119
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001120 request struct AddOrUpdateWiFiNetworkRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04001121 octet_string<32> ssid = 0;
1122 octet_string<64> credentials = 1;
1123 optional int64u breadcrumb = 2;
Karsten Sperling261b03f2023-11-09 06:45:38 +13001124 optional octet_string<140> networkIdentity = 3;
1125 optional octet_string<20> clientIdentifier = 4;
1126 optional octet_string<32> possessionNonce = 5;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001127 }
1128
1129 request struct AddOrUpdateThreadNetworkRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04001130 octet_string<254> operationalDataset = 0;
1131 optional int64u breadcrumb = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001132 }
1133
1134 request struct RemoveNetworkRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04001135 octet_string<32> networkID = 0;
1136 optional int64u breadcrumb = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001137 }
1138
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001139 response struct NetworkConfigResponse = 5 {
Boris Zbarsky0dc592e2023-06-01 15:25:00 -04001140 NetworkCommissioningStatusEnum networkingStatus = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -04001141 optional char_string<512> debugText = 1;
1142 optional int8u networkIndex = 2;
Karsten Sperling261b03f2023-11-09 06:45:38 +13001143 optional octet_string<140> clientIdentity = 3;
1144 optional octet_string<64> possessionSignature = 4;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001145 }
1146
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001147 request struct ConnectNetworkRequest {
1148 octet_string<32> networkID = 0;
1149 optional int64u breadcrumb = 1;
1150 }
1151
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001152 response struct ConnectNetworkResponse = 7 {
Boris Zbarsky0dc592e2023-06-01 15:25:00 -04001153 NetworkCommissioningStatusEnum networkingStatus = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -04001154 optional char_string debugText = 1;
1155 nullable int32s errorValue = 2;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001156 }
1157
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001158 request struct ReorderNetworkRequest {
1159 octet_string<32> networkID = 0;
1160 int8u networkIndex = 1;
1161 optional int64u breadcrumb = 2;
1162 }
1163
1164 request struct QueryIdentityRequest {
Boris Zbarskyd823ea22023-11-30 15:08:58 -05001165 octet_string<20> keyIdentifier = 0;
1166 optional octet_string<32> possessionNonce = 1;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001167 }
1168
1169 response struct QueryIdentityResponse = 10 {
Boris Zbarskyd823ea22023-11-30 15:08:58 -05001170 octet_string<140> identity = 0;
1171 optional octet_string<64> possessionSignature = 1;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001172 }
1173
1174 /** Detemine the set of networks the device sees as available. */
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001175 command access(invoke: administer) ScanNetworks(ScanNetworksRequest): ScanNetworksResponse = 0;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001176 /** Add or update the credentials for a given Wi-Fi network. */
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001177 command access(invoke: administer) AddOrUpdateWiFiNetwork(AddOrUpdateWiFiNetworkRequest): NetworkConfigResponse = 2;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001178 /** Add or update the credentials for a given Thread network. */
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001179 command access(invoke: administer) AddOrUpdateThreadNetwork(AddOrUpdateThreadNetworkRequest): NetworkConfigResponse = 3;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001180 /** Remove the definition of a given network (including its credentials). */
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001181 command access(invoke: administer) RemoveNetwork(RemoveNetworkRequest): NetworkConfigResponse = 4;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001182 /** Connect to the specified network, using previously-defined credentials. */
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001183 command access(invoke: administer) ConnectNetwork(ConnectNetworkRequest): ConnectNetworkResponse = 6;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001184 /** Modify the order in which networks will be presented in the Networks attribute. */
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001185 command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001186 /** Retrieve details about and optionally proof of possession of a network client identity. */
1187 command access(invoke: administer) QueryIdentity(QueryIdentityRequest): QueryIdentityResponse = 9;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001188}
1189
Andrei Litvin21c43e22023-04-04 18:50:26 -04001190/** 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 -05001191cluster DiagnosticLogs = 50 {
Andrei Litvin90d60f02023-11-23 16:51:51 -05001192 revision 1; // NOTE: Default/not specifically set
1193
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001194 enum IntentEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001195 kEndUserSupport = 0;
1196 kNetworkDiag = 1;
1197 kCrashLogs = 2;
1198 }
1199
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001200 enum StatusEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001201 kSuccess = 0;
1202 kExhausted = 1;
1203 kNoLogs = 2;
1204 kBusy = 3;
1205 kDenied = 4;
1206 }
1207
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001208 enum TransferProtocolEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001209 kResponsePayload = 0;
Andrei Litvin413a9002023-06-28 13:02:18 -04001210 kBDX = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001211 }
1212
Andrei Litvinc6ae82c2023-02-10 15:31:59 -05001213 readonly attribute command_id generatedCommandList[] = 65528;
1214 readonly attribute command_id acceptedCommandList[] = 65529;
1215 readonly attribute event_id eventList[] = 65530;
1216 readonly attribute attrib_id attributeList[] = 65531;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001217 readonly attribute bitmap32 featureMap = 65532;
1218 readonly attribute int16u clusterRevision = 65533;
1219
1220 request struct RetrieveLogsRequestRequest {
Boris Zbarsky60200ca2023-02-15 09:38:28 -05001221 IntentEnum intent = 0;
1222 TransferProtocolEnum requestedProtocol = 1;
Andrei Litvin47836d22023-10-12 18:08:11 -04001223 optional char_string<32> transferFileDesignator = 2;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001224 }
1225
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001226 response struct RetrieveLogsResponse = 1 {
1227 StatusEnum status = 0;
Boris Zbarskyd823ea22023-11-30 15:08:58 -05001228 long_octet_string logContent = 1;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001229 optional epoch_us UTCTimeStamp = 2;
1230 optional systime_us timeSinceBoot = 3;
1231 }
1232
1233 /** Retrieving diagnostic logs from a Node */
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001234 command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0;
1235}
1236
Andrei Litvin21c43e22023-04-04 18:50:26 -04001237/** 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 -05001238cluster GeneralDiagnostics = 51 {
C Freeman2980e512023-12-08 22:10:32 -05001239 revision 2;
Andrei Litvin90d60f02023-11-23 16:51:51 -05001240
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001241 enum BootReasonEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001242 kUnspecified = 0;
1243 kPowerOnReboot = 1;
1244 kBrownOutReset = 2;
1245 kSoftwareWatchdogReset = 3;
1246 kHardwareWatchdogReset = 4;
1247 kSoftwareUpdateCompleted = 5;
1248 kSoftwareReset = 6;
1249 }
1250
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001251 enum HardwareFaultEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001252 kUnspecified = 0;
1253 kRadio = 1;
1254 kSensor = 2;
1255 kResettableOverTemp = 3;
1256 kNonResettableOverTemp = 4;
1257 kPowerSource = 5;
1258 kVisualDisplayFault = 6;
1259 kAudioOutputFault = 7;
1260 kUserInterfaceFault = 8;
1261 kNonVolatileMemoryError = 9;
1262 kTamperDetected = 10;
1263 }
1264
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001265 enum InterfaceTypeEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001266 kUnspecified = 0;
1267 kWiFi = 1;
1268 kEthernet = 2;
1269 kCellular = 3;
1270 kThread = 4;
1271 }
1272
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001273 enum NetworkFaultEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001274 kUnspecified = 0;
1275 kHardwareFailure = 1;
1276 kNetworkJammed = 2;
1277 kConnectionFailed = 3;
1278 }
1279
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001280 enum RadioFaultEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001281 kUnspecified = 0;
1282 kWiFiFault = 1;
1283 kCellularFault = 2;
1284 kThreadFault = 3;
1285 kNFCFault = 4;
1286 kBLEFault = 5;
1287 kEthernetFault = 6;
1288 }
1289
Boris Zbarskydd6ae932023-01-09 12:08:17 -05001290 struct NetworkInterface {
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001291 char_string<32> name = 0;
1292 boolean isOperational = 1;
1293 nullable boolean offPremiseServicesReachableIPv4 = 2;
1294 nullable boolean offPremiseServicesReachableIPv6 = 3;
1295 octet_string<8> hardwareAddress = 4;
1296 octet_string IPv4Addresses[] = 5;
1297 octet_string IPv6Addresses[] = 6;
Boris Zbarsky1b226d42023-01-18 23:43:09 -05001298 InterfaceTypeEnum type = 7;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001299 }
1300
1301 critical event HardwareFaultChange = 0 {
Boris Zbarsky1b226d42023-01-18 23:43:09 -05001302 HardwareFaultEnum current[] = 0;
1303 HardwareFaultEnum previous[] = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001304 }
1305
1306 critical event RadioFaultChange = 1 {
Boris Zbarsky1b226d42023-01-18 23:43:09 -05001307 RadioFaultEnum current[] = 0;
1308 RadioFaultEnum previous[] = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001309 }
1310
1311 critical event NetworkFaultChange = 2 {
Boris Zbarsky1b226d42023-01-18 23:43:09 -05001312 NetworkFaultEnum current[] = 0;
1313 NetworkFaultEnum previous[] = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001314 }
1315
1316 critical event BootReason = 3 {
Boris Zbarskydd6ae932023-01-09 12:08:17 -05001317 BootReasonEnum bootReason = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001318 }
1319
Boris Zbarskydd6ae932023-01-09 12:08:17 -05001320 readonly attribute NetworkInterface networkInterfaces[] = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001321 readonly attribute int16u rebootCount = 1;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001322 readonly attribute optional int64u upTime = 2;
1323 readonly attribute optional int32u totalOperationalHours = 3;
1324 readonly attribute optional BootReasonEnum bootReason = 4;
1325 readonly attribute optional HardwareFaultEnum activeHardwareFaults[] = 5;
1326 readonly attribute optional RadioFaultEnum activeRadioFaults[] = 6;
1327 readonly attribute optional NetworkFaultEnum activeNetworkFaults[] = 7;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001328 readonly attribute boolean testEventTriggersEnabled = 8;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -05001329 readonly attribute command_id generatedCommandList[] = 65528;
1330 readonly attribute command_id acceptedCommandList[] = 65529;
1331 readonly attribute event_id eventList[] = 65530;
1332 readonly attribute attrib_id attributeList[] = 65531;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001333 readonly attribute bitmap32 featureMap = 65532;
1334 readonly attribute int16u clusterRevision = 65533;
1335
1336 request struct TestEventTriggerRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04001337 octet_string<16> enableKey = 0;
1338 int64u eventTrigger = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001339 }
1340
Tennessee Carmel-Veilleuxd165f622023-10-31 10:50:04 -04001341 response struct TimeSnapshotResponse = 2 {
Tennessee Carmel-Veilleux1f3bcbc2023-12-14 16:52:18 -05001342 systime_ms systemTimeMs = 0;
1343 nullable posix_ms posixTimeMs = 1;
Tennessee Carmel-Veilleuxd165f622023-10-31 10:50:04 -04001344 }
1345
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001346 /** Provide a means for certification tests to trigger some test-plan-specific events */
Terence Hampson661cb822022-07-27 19:31:29 -04001347 command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001348 /** Take a snapshot of system time and epoch time. */
Tennessee Carmel-Veilleuxd165f622023-10-31 10:50:04 -04001349 command TimeSnapshot(): TimeSnapshotResponse = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001350}
1351
Andrei Litvin21c43e22023-04-04 18:50:26 -04001352/** 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 -05001353cluster SoftwareDiagnostics = 52 {
Andrei Litvin90d60f02023-11-23 16:51:51 -05001354 revision 1; // NOTE: Default/not specifically set
1355
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001356 bitmap Feature : bitmap32 {
Andrei Litvin89671e82023-10-29 21:27:57 -04001357 kWatermarks = 0x1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001358 }
1359
Boris Zbarskyaf7b3932023-01-06 12:07:58 -05001360 struct ThreadMetricsStruct {
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001361 int64u id = 0;
1362 optional char_string<8> name = 1;
1363 optional int32u stackFreeCurrent = 2;
1364 optional int32u stackFreeMinimum = 3;
1365 optional int32u stackSize = 4;
1366 }
1367
1368 info event SoftwareFault = 0 {
Andrei Litvin47836d22023-10-12 18:08:11 -04001369 int64u id = 0;
1370 optional char_string name = 1;
1371 optional octet_string faultRecording = 2;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001372 }
1373
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001374 readonly attribute optional ThreadMetricsStruct threadMetrics[] = 0;
1375 readonly attribute optional int64u currentHeapFree = 1;
1376 readonly attribute optional int64u currentHeapUsed = 2;
1377 readonly attribute optional int64u currentHeapHighWatermark = 3;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -05001378 readonly attribute command_id generatedCommandList[] = 65528;
1379 readonly attribute command_id acceptedCommandList[] = 65529;
1380 readonly attribute event_id eventList[] = 65530;
1381 readonly attribute attrib_id attributeList[] = 65531;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001382 readonly attribute bitmap32 featureMap = 65532;
1383 readonly attribute int16u clusterRevision = 65533;
1384
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001385 /** Reception of this command SHALL reset the values: The StackFreeMinimum field of the ThreadMetrics attribute, CurrentHeapHighWaterMark attribute. */
Andrei Litvin89671e82023-10-29 21:27:57 -04001386 command access(invoke: manage) ResetWatermarks(): DefaultSuccess = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001387}
1388
Andrei Litvin21c43e22023-04-04 18:50:26 -04001389/** 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 -05001390cluster ThreadNetworkDiagnostics = 53 {
Andrei Litvin90d60f02023-11-23 16:51:51 -05001391 revision 1; // NOTE: Default/not specifically set
1392
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001393 enum ConnectionStatusEnum : enum8 {
Boris Zbarsky6395db62023-01-06 12:08:22 -05001394 kConnected = 0;
1395 kNotConnected = 1;
1396 }
1397
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001398 enum NetworkFaultEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001399 kUnspecified = 0;
1400 kLinkDown = 1;
1401 kHardwareFailure = 2;
1402 kNetworkJammed = 3;
1403 }
1404
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001405 enum RoutingRoleEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001406 kUnspecified = 0;
1407 kUnassigned = 1;
1408 kSleepyEndDevice = 2;
1409 kEndDevice = 3;
Andrei Litvin413a9002023-06-28 13:02:18 -04001410 kREED = 4;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001411 kRouter = 5;
1412 kLeader = 6;
1413 }
1414
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001415 bitmap Feature : bitmap32 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001416 kPacketCounts = 0x1;
1417 kErrorCounts = 0x2;
1418 kMLECounts = 0x4;
1419 kMACCounts = 0x8;
1420 }
1421
Boris Zbarsky5a5d0482023-05-30 08:49:49 -04001422 struct NeighborTableStruct {
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001423 int64u extAddress = 0;
1424 int32u age = 1;
1425 int16u rloc16 = 2;
1426 int32u linkFrameCounter = 3;
1427 int32u mleFrameCounter = 4;
1428 int8u lqi = 5;
1429 nullable int8s averageRssi = 6;
1430 nullable int8s lastRssi = 7;
1431 int8u frameErrorRate = 8;
1432 int8u messageErrorRate = 9;
1433 boolean rxOnWhenIdle = 10;
1434 boolean fullThreadDevice = 11;
1435 boolean fullNetworkData = 12;
1436 boolean isChild = 13;
1437 }
1438
Bharat Rajuf25702c2023-04-12 11:14:12 -04001439 struct OperationalDatasetComponents {
1440 boolean activeTimestampPresent = 0;
1441 boolean pendingTimestampPresent = 1;
1442 boolean masterKeyPresent = 2;
1443 boolean networkNamePresent = 3;
1444 boolean extendedPanIdPresent = 4;
1445 boolean meshLocalPrefixPresent = 5;
1446 boolean delayPresent = 6;
1447 boolean panIdPresent = 7;
1448 boolean channelPresent = 8;
1449 boolean pskcPresent = 9;
1450 boolean securityPolicyPresent = 10;
1451 boolean channelMaskPresent = 11;
1452 }
1453
Boris Zbarsky5a5d0482023-05-30 08:49:49 -04001454 struct RouteTableStruct {
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001455 int64u extAddress = 0;
1456 int16u rloc16 = 1;
1457 int8u routerId = 2;
1458 int8u nextHop = 3;
1459 int8u pathCost = 4;
1460 int8u LQIIn = 5;
1461 int8u LQIOut = 6;
1462 int8u age = 7;
1463 boolean allocated = 8;
1464 boolean linkEstablished = 9;
1465 }
1466
1467 struct SecurityPolicy {
1468 int16u rotationTime = 0;
Boris Zbarsky6395db62023-01-06 12:08:22 -05001469 int16u flags = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001470 }
1471
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001472 info event ConnectionStatus = 0 {
Boris Zbarsky6395db62023-01-06 12:08:22 -05001473 ConnectionStatusEnum connectionStatus = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001474 }
1475
Yufeng Wang9e873d02022-08-01 17:51:27 -07001476 info event NetworkFaultChange = 1 {
Boris Zbarsky5a5d0482023-05-30 08:49:49 -04001477 NetworkFaultEnum current[] = 0;
1478 NetworkFaultEnum previous[] = 1;
Yufeng Wang9e873d02022-08-01 17:51:27 -07001479 }
1480
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001481 readonly attribute nullable int16u channel = 0;
Boris Zbarsky5a5d0482023-05-30 08:49:49 -04001482 readonly attribute nullable RoutingRoleEnum routingRole = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001483 readonly attribute nullable char_string<16> networkName = 2;
1484 readonly attribute nullable int16u panId = 3;
1485 readonly attribute nullable int64u extendedPanId = 4;
1486 readonly attribute nullable octet_string<17> meshLocalPrefix = 5;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001487 readonly attribute optional int64u overrunCount = 6;
Boris Zbarsky5a5d0482023-05-30 08:49:49 -04001488 readonly attribute NeighborTableStruct neighborTable[] = 7;
1489 readonly attribute RouteTableStruct routeTable[] = 8;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001490 readonly attribute nullable int32u partitionId = 9;
Andrei Litvin94a6f932023-11-02 15:07:36 -04001491 readonly attribute nullable int16u weighting = 10;
1492 readonly attribute nullable int16u dataVersion = 11;
1493 readonly attribute nullable int16u stableDataVersion = 12;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001494 readonly attribute nullable int8u leaderRouterId = 13;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001495 readonly attribute optional int16u detachedRoleCount = 14;
1496 readonly attribute optional int16u childRoleCount = 15;
1497 readonly attribute optional int16u routerRoleCount = 16;
1498 readonly attribute optional int16u leaderRoleCount = 17;
1499 readonly attribute optional int16u attachAttemptCount = 18;
1500 readonly attribute optional int16u partitionIdChangeCount = 19;
1501 readonly attribute optional int16u betterPartitionAttachAttemptCount = 20;
1502 readonly attribute optional int16u parentChangeCount = 21;
1503 readonly attribute optional int32u txTotalCount = 22;
1504 readonly attribute optional int32u txUnicastCount = 23;
1505 readonly attribute optional int32u txBroadcastCount = 24;
1506 readonly attribute optional int32u txAckRequestedCount = 25;
1507 readonly attribute optional int32u txAckedCount = 26;
1508 readonly attribute optional int32u txNoAckRequestedCount = 27;
1509 readonly attribute optional int32u txDataCount = 28;
1510 readonly attribute optional int32u txDataPollCount = 29;
1511 readonly attribute optional int32u txBeaconCount = 30;
1512 readonly attribute optional int32u txBeaconRequestCount = 31;
1513 readonly attribute optional int32u txOtherCount = 32;
1514 readonly attribute optional int32u txRetryCount = 33;
1515 readonly attribute optional int32u txDirectMaxRetryExpiryCount = 34;
1516 readonly attribute optional int32u txIndirectMaxRetryExpiryCount = 35;
1517 readonly attribute optional int32u txErrCcaCount = 36;
1518 readonly attribute optional int32u txErrAbortCount = 37;
1519 readonly attribute optional int32u txErrBusyChannelCount = 38;
1520 readonly attribute optional int32u rxTotalCount = 39;
1521 readonly attribute optional int32u rxUnicastCount = 40;
1522 readonly attribute optional int32u rxBroadcastCount = 41;
1523 readonly attribute optional int32u rxDataCount = 42;
1524 readonly attribute optional int32u rxDataPollCount = 43;
1525 readonly attribute optional int32u rxBeaconCount = 44;
1526 readonly attribute optional int32u rxBeaconRequestCount = 45;
1527 readonly attribute optional int32u rxOtherCount = 46;
1528 readonly attribute optional int32u rxAddressFilteredCount = 47;
1529 readonly attribute optional int32u rxDestAddrFilteredCount = 48;
1530 readonly attribute optional int32u rxDuplicatedCount = 49;
1531 readonly attribute optional int32u rxErrNoFrameCount = 50;
1532 readonly attribute optional int32u rxErrUnknownNeighborCount = 51;
1533 readonly attribute optional int32u rxErrInvalidSrcAddrCount = 52;
1534 readonly attribute optional int32u rxErrSecCount = 53;
1535 readonly attribute optional int32u rxErrFcsCount = 54;
1536 readonly attribute optional int32u rxErrOtherCount = 55;
1537 readonly attribute optional nullable int64u activeTimestamp = 56;
1538 readonly attribute optional nullable int64u pendingTimestamp = 57;
1539 readonly attribute optional nullable int32u delay = 58;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001540 readonly attribute nullable SecurityPolicy securityPolicy = 59;
Boris Zbarsky60568982022-08-08 15:27:14 -04001541 readonly attribute nullable octet_string<4> channelPage0Mask = 60;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001542 readonly attribute nullable OperationalDatasetComponents operationalDatasetComponents = 61;
Boris Zbarsky5a5d0482023-05-30 08:49:49 -04001543 readonly attribute NetworkFaultEnum activeNetworkFaultsList[] = 62;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -05001544 readonly attribute command_id generatedCommandList[] = 65528;
1545 readonly attribute command_id acceptedCommandList[] = 65529;
1546 readonly attribute event_id eventList[] = 65530;
1547 readonly attribute attrib_id attributeList[] = 65531;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001548 readonly attribute bitmap32 featureMap = 65532;
1549 readonly attribute int16u clusterRevision = 65533;
1550
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001551 /** Reception of this command SHALL reset the OverrunCount attributes to 0 */
Andrei Litvin94a6f932023-11-02 15:07:36 -04001552 command access(invoke: manage) ResetCounts(): DefaultSuccess = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001553}
1554
Andrei Litvin21c43e22023-04-04 18:50:26 -04001555/** 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 -05001556cluster WiFiNetworkDiagnostics = 54 {
Andrei Litvin90d60f02023-11-23 16:51:51 -05001557 revision 1; // NOTE: Default/not specifically set
1558
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001559 enum AssociationFailureCauseEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001560 kUnknown = 0;
1561 kAssociationFailed = 1;
1562 kAuthenticationFailed = 2;
1563 kSsidNotFound = 3;
1564 }
1565
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001566 enum ConnectionStatusEnum : enum8 {
Boris Zbarsky6083a3f2023-02-17 08:57:59 -05001567 kConnected = 0;
1568 kNotConnected = 1;
1569 }
1570
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001571 enum SecurityTypeEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001572 kUnspecified = 0;
1573 kNone = 1;
Andrei Litvin413a9002023-06-28 13:02:18 -04001574 kWEP = 2;
1575 kWPA = 3;
1576 kWPA2 = 4;
1577 kWPA3 = 5;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001578 }
1579
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001580 enum WiFiVersionEnum : enum8 {
Boris Zbarsky0f763272023-01-06 14:25:04 -05001581 kA = 0;
1582 kB = 1;
1583 kG = 2;
1584 kN = 3;
1585 kAc = 4;
1586 kAx = 5;
simonhmorris1a0fe1292023-05-25 19:12:06 +01001587 kAh = 6;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001588 }
1589
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001590 bitmap Feature : bitmap32 {
Vivien Nicolas855a76f2023-01-27 07:44:25 +01001591 kPacketCounts = 0x1;
1592 kErrorCounts = 0x2;
1593 }
1594
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001595 info event Disconnection = 0 {
Andrei Litvin47836d22023-10-12 18:08:11 -04001596 int16u reasonCode = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001597 }
1598
1599 info event AssociationFailure = 1 {
Andrei Litvinea0a8432023-11-02 10:56:32 -04001600 AssociationFailureCauseEnum associationFailureCause = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -04001601 int16u status = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001602 }
1603
1604 info event ConnectionStatus = 2 {
Boris Zbarsky6083a3f2023-02-17 08:57:59 -05001605 ConnectionStatusEnum connectionStatus = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001606 }
1607
1608 readonly attribute nullable octet_string<6> bssid = 0;
Boris Zbarsky6083a3f2023-02-17 08:57:59 -05001609 readonly attribute nullable SecurityTypeEnum securityType = 1;
1610 readonly attribute nullable WiFiVersionEnum wiFiVersion = 2;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001611 readonly attribute nullable int16u channelNumber = 3;
1612 readonly attribute nullable int8s rssi = 4;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001613 readonly attribute optional nullable int32u beaconLostCount = 5;
1614 readonly attribute optional nullable int32u beaconRxCount = 6;
1615 readonly attribute optional nullable int32u packetMulticastRxCount = 7;
1616 readonly attribute optional nullable int32u packetMulticastTxCount = 8;
1617 readonly attribute optional nullable int32u packetUnicastRxCount = 9;
1618 readonly attribute optional nullable int32u packetUnicastTxCount = 10;
1619 readonly attribute optional nullable int64u currentMaxRate = 11;
1620 readonly attribute optional nullable int64u overrunCount = 12;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -05001621 readonly attribute command_id generatedCommandList[] = 65528;
1622 readonly attribute command_id acceptedCommandList[] = 65529;
1623 readonly attribute event_id eventList[] = 65530;
1624 readonly attribute attrib_id attributeList[] = 65531;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001625 readonly attribute bitmap32 featureMap = 65532;
1626 readonly attribute int16u clusterRevision = 65533;
1627
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001628 /** Reception of this command SHALL reset the Breacon and Packet related count attributes to 0 */
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001629 command ResetCounts(): DefaultSuccess = 0;
1630}
1631
Andrei Litvin21c43e22023-04-04 18:50:26 -04001632/** 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 -05001633cluster EthernetNetworkDiagnostics = 55 {
Andrei Litvin90d60f02023-11-23 16:51:51 -05001634 revision 1; // NOTE: Default/not specifically set
1635
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001636 enum PHYRateEnum : enum8 {
Boris Zbarsky13039ae2023-01-06 18:59:16 -05001637 kRate10M = 0;
1638 kRate100M = 1;
1639 kRate1G = 2;
Andrei Litvin413a9002023-06-28 13:02:18 -04001640 kRate25G = 3;
Boris Zbarsky13039ae2023-01-06 18:59:16 -05001641 kRate5G = 4;
1642 kRate10G = 5;
1643 kRate40G = 6;
1644 kRate100G = 7;
1645 kRate200G = 8;
1646 kRate400G = 9;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001647 }
1648
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001649 bitmap Feature : bitmap32 {
Vivien Nicolas855a76f2023-01-27 07:44:25 +01001650 kPacketCounts = 0x1;
1651 kErrorCounts = 0x2;
1652 }
1653
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001654 readonly attribute optional nullable PHYRateEnum PHYRate = 0;
1655 readonly attribute optional nullable boolean fullDuplex = 1;
1656 readonly attribute optional int64u packetRxCount = 2;
1657 readonly attribute optional int64u packetTxCount = 3;
1658 readonly attribute optional int64u txErrCount = 4;
1659 readonly attribute optional int64u collisionCount = 5;
1660 readonly attribute optional int64u overrunCount = 6;
1661 readonly attribute optional nullable boolean carrierDetect = 7;
1662 readonly attribute optional int64u timeSinceReset = 8;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -05001663 readonly attribute command_id generatedCommandList[] = 65528;
1664 readonly attribute command_id acceptedCommandList[] = 65529;
1665 readonly attribute event_id eventList[] = 65530;
1666 readonly attribute attrib_id attributeList[] = 65531;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001667 readonly attribute bitmap32 featureMap = 65532;
1668 readonly attribute int16u clusterRevision = 65533;
1669
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001670 /** Reception of this command SHALL reset the attributes: PacketRxCount, PacketTxCount, TxErrCount, CollisionCount, OverrunCount to 0 */
Andrei Litvinb3327f82023-10-27 17:23:02 -04001671 command access(invoke: manage) ResetCounts(): DefaultSuccess = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001672}
1673
Andrei Litvin21c43e22023-04-04 18:50:26 -04001674/** This cluster exposes interactions with a switch device, for the purpose of using those interactions by other devices.
1675Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags.
1676Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001677cluster Switch = 59 {
Andrei Litvin90d60f02023-11-23 16:51:51 -05001678 revision 1; // NOTE: Default/not specifically set
1679
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001680 bitmap Feature : bitmap32 {
Carter Swedal977cfa42022-09-23 13:31:05 -05001681 kLatchingSwitch = 0x1;
1682 kMomentarySwitch = 0x2;
1683 kMomentarySwitchRelease = 0x4;
1684 kMomentarySwitchLongPress = 0x8;
1685 kMomentarySwitchMultiPress = 0x10;
1686 }
1687
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001688 info event SwitchLatched = 0 {
Andrei Litvin47836d22023-10-12 18:08:11 -04001689 int8u newPosition = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001690 }
1691
1692 info event InitialPress = 1 {
Andrei Litvin47836d22023-10-12 18:08:11 -04001693 int8u newPosition = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001694 }
1695
1696 info event LongPress = 2 {
Andrei Litvin47836d22023-10-12 18:08:11 -04001697 int8u newPosition = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001698 }
1699
1700 info event ShortRelease = 3 {
Andrei Litvin47836d22023-10-12 18:08:11 -04001701 int8u previousPosition = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001702 }
1703
1704 info event LongRelease = 4 {
Andrei Litvin47836d22023-10-12 18:08:11 -04001705 int8u previousPosition = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001706 }
1707
1708 info event MultiPressOngoing = 5 {
Andrei Litvin47836d22023-10-12 18:08:11 -04001709 int8u newPosition = 0;
1710 int8u currentNumberOfPressesCounted = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001711 }
1712
1713 info event MultiPressComplete = 6 {
Andrei Litvin47836d22023-10-12 18:08:11 -04001714 int8u previousPosition = 0;
1715 int8u totalNumberOfPressesCounted = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001716 }
1717
Alex Pygin344c1e32023-02-10 20:42:48 -06001718 readonly attribute int8u numberOfPositions = 0;
1719 readonly attribute int8u currentPosition = 1;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001720 readonly attribute optional int8u multiPressMax = 2;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -05001721 readonly attribute command_id generatedCommandList[] = 65528;
1722 readonly attribute command_id acceptedCommandList[] = 65529;
1723 readonly attribute event_id eventList[] = 65530;
1724 readonly attribute attrib_id attributeList[] = 65531;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001725 readonly attribute bitmap32 featureMap = 65532;
1726 readonly attribute int16u clusterRevision = 65533;
1727}
1728
Andrei Litvin21c43e22023-04-04 18:50:26 -04001729/** Commands to trigger a Node to allow a new Administrator to commission it. */
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001730cluster AdministratorCommissioning = 60 {
Andrei Litvin90d60f02023-11-23 16:51:51 -05001731 revision 1; // NOTE: Default/not specifically set
1732
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001733 enum CommissioningWindowStatusEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001734 kWindowNotOpen = 0;
1735 kEnhancedWindowOpen = 1;
1736 kBasicWindowOpen = 2;
1737 }
1738
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001739 enum StatusCode : enum8 {
Tennessee Carmel-Veilleuxc24577d2022-08-16 00:27:47 -04001740 kBusy = 2;
1741 kPAKEParameterError = 3;
1742 kWindowNotOpen = 4;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001743 }
1744
Andrei Litvin1f9814e2023-10-26 15:35:06 -04001745 bitmap Feature : bitmap32 {
1746 kBasic = 0x1;
1747 }
1748
Boris Zbarsky232b5a12023-01-18 21:35:14 -05001749 readonly attribute CommissioningWindowStatusEnum windowStatus = 0;
Boris Zbarsky17c8da62022-07-31 01:47:37 -04001750 readonly attribute nullable fabric_idx adminFabricIndex = 1;
Andrei Litvin1f9814e2023-10-26 15:35:06 -04001751 readonly attribute nullable vendor_id adminVendorId = 2;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -05001752 readonly attribute command_id generatedCommandList[] = 65528;
1753 readonly attribute command_id acceptedCommandList[] = 65529;
1754 readonly attribute event_id eventList[] = 65530;
1755 readonly attribute attrib_id attributeList[] = 65531;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001756 readonly attribute bitmap32 featureMap = 65532;
1757 readonly attribute int16u clusterRevision = 65533;
1758
1759 request struct OpenCommissioningWindowRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04001760 int16u commissioningTimeout = 0;
1761 octet_string PAKEPasscodeVerifier = 1;
1762 int16u discriminator = 2;
1763 int32u iterations = 3;
Andrei Litvin1f9814e2023-10-26 15:35:06 -04001764 octet_string<32> salt = 4;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001765 }
1766
1767 request struct OpenBasicCommissioningWindowRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04001768 int16u commissioningTimeout = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001769 }
1770
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001771 /** 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 -04001772 timed command access(invoke: administer) OpenCommissioningWindow(OpenCommissioningWindowRequest): DefaultSuccess = 0;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001773 /** 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. */
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001774 timed command access(invoke: administer) OpenBasicCommissioningWindow(OpenBasicCommissioningWindowRequest): DefaultSuccess = 1;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001775 /** 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 -04001776 timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2;
1777}
1778
Andrei Litvin21c43e22023-04-04 18:50:26 -04001779/** 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 -05001780cluster OperationalCredentials = 62 {
Andrei Litvin90d60f02023-11-23 16:51:51 -05001781 revision 1; // NOTE: Default/not specifically set
1782
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001783 enum CertificateChainTypeEnum : enum8 {
Boris Zbarskycccce012023-01-18 11:27:01 -05001784 kDACCertificate = 1;
1785 kPAICertificate = 2;
1786 }
1787
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001788 enum NodeOperationalCertStatusEnum : enum8 {
Andrei Litvin413a9002023-06-28 13:02:18 -04001789 kOK = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001790 kInvalidPublicKey = 1;
1791 kInvalidNodeOpId = 2;
1792 kInvalidNOC = 3;
1793 kMissingCsr = 4;
1794 kTableFull = 5;
1795 kInvalidAdminSubject = 6;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001796 kFabricConflict = 9;
1797 kLabelConflict = 10;
1798 kInvalidFabricIndex = 11;
1799 }
1800
Boris Zbarskycccce012023-01-18 11:27:01 -05001801 fabric_scoped struct FabricDescriptorStruct {
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001802 octet_string<65> rootPublicKey = 1;
Boris Zbarskycccce012023-01-18 11:27:01 -05001803 vendor_id vendorID = 2;
1804 fabric_id fabricID = 3;
1805 node_id nodeID = 4;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001806 char_string<32> label = 5;
1807 fabric_idx fabricIndex = 254;
1808 }
1809
Bharat Rajuf25702c2023-04-12 11:14:12 -04001810 fabric_scoped struct NOCStruct {
1811 fabric_sensitive octet_string noc = 1;
1812 nullable fabric_sensitive octet_string icac = 2;
1813 fabric_idx fabricIndex = 254;
1814 }
1815
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001816 readonly attribute access(read: administer) NOCStruct NOCs[] = 0;
Boris Zbarskycccce012023-01-18 11:27:01 -05001817 readonly attribute FabricDescriptorStruct fabrics[] = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001818 readonly attribute int8u supportedFabrics = 2;
1819 readonly attribute int8u commissionedFabrics = 3;
Andrei Litvin47836d22023-10-12 18:08:11 -04001820 readonly attribute octet_string trustedRootCertificates[] = 4;
Vivien Nicolasf93e6cb2022-07-29 13:23:24 +02001821 readonly attribute int8u currentFabricIndex = 5;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -05001822 readonly attribute command_id generatedCommandList[] = 65528;
1823 readonly attribute command_id acceptedCommandList[] = 65529;
1824 readonly attribute event_id eventList[] = 65530;
1825 readonly attribute attrib_id attributeList[] = 65531;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001826 readonly attribute bitmap32 featureMap = 65532;
1827 readonly attribute int16u clusterRevision = 65533;
1828
1829 request struct AttestationRequestRequest {
Andrei Litvin0da67af2023-10-27 17:28:25 -04001830 octet_string<32> attestationNonce = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001831 }
1832
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001833 response struct AttestationResponse = 1 {
1834 octet_string<900> attestationElements = 0;
1835 octet_string<64> attestationSignature = 1;
1836 }
1837
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001838 request struct CertificateChainRequestRequest {
Boris Zbarskycccce012023-01-18 11:27:01 -05001839 CertificateChainTypeEnum certificateType = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001840 }
1841
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001842 response struct CertificateChainResponse = 3 {
1843 octet_string<600> certificate = 0;
1844 }
1845
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001846 request struct CSRRequestRequest {
Andrei Litvin0da67af2023-10-27 17:28:25 -04001847 octet_string<32> CSRNonce = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001848 optional boolean isForUpdateNOC = 1;
1849 }
1850
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001851 response struct CSRResponse = 5 {
1852 octet_string NOCSRElements = 0;
1853 octet_string attestationSignature = 1;
1854 }
1855
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001856 request struct AddNOCRequest {
Andrei Litvin0da67af2023-10-27 17:28:25 -04001857 octet_string<400> NOCValue = 0;
1858 optional octet_string<400> ICACValue = 1;
1859 octet_string<16> IPKValue = 2;
Andrei Litvin47836d22023-10-12 18:08:11 -04001860 int64u caseAdminSubject = 3;
1861 vendor_id adminVendorId = 4;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001862 }
1863
1864 request struct UpdateNOCRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04001865 octet_string NOCValue = 0;
1866 optional octet_string ICACValue = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001867 }
1868
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001869 response struct NOCResponse = 8 {
1870 NodeOperationalCertStatusEnum statusCode = 0;
1871 optional fabric_idx fabricIndex = 1;
1872 optional char_string<128> debugText = 2;
1873 }
1874
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001875 request struct UpdateFabricLabelRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04001876 char_string<32> label = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001877 }
1878
1879 request struct RemoveFabricRequest {
1880 fabric_idx fabricIndex = 0;
1881 }
1882
1883 request struct AddTrustedRootCertificateRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04001884 octet_string rootCACertificate = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001885 }
1886
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001887 /** Sender is requesting attestation information from the receiver. */
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001888 command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001889 /** Sender is requesting a device attestation certificate from the receiver. */
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001890 command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001891 /** Sender is requesting a certificate signing request (CSR) from the receiver. */
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001892 command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001893 /** Sender is requesting to add the new node operational certificates. */
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001894 command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001895 /** Sender is requesting to update the node operational certificates. */
Andrei Litvin33aecf82022-07-21 11:29:56 -04001896 fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001897 /** 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 -04001898 fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001899 /** 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 -04001900 command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001901 /** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001902 command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
1903}
1904
Andrei Litvin21c43e22023-04-04 18:50:26 -04001905/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001906cluster GroupKeyManagement = 63 {
Andrei Litvin90d60f02023-11-23 16:51:51 -05001907 revision 1; // NOTE: Default/not specifically set
1908
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001909 enum GroupKeySecurityPolicyEnum : enum8 {
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001910 kTrustFirst = 0;
1911 kCacheAndSync = 1;
1912 }
1913
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04001914 bitmap Feature : bitmap32 {
Tennessee Carmel-Veilleuxf71a48f2023-07-31 15:58:40 -04001915 kCacheAndSync = 0x1;
1916 }
1917
Andrei Litvind38820d2022-10-04 09:25:26 -04001918 fabric_scoped struct GroupInfoMapStruct {
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001919 group_id groupId = 1;
1920 endpoint_no endpoints[] = 2;
1921 optional char_string<16> groupName = 3;
1922 fabric_idx fabricIndex = 254;
1923 }
1924
Bharat Rajuf25702c2023-04-12 11:14:12 -04001925 fabric_scoped struct GroupKeyMapStruct {
1926 group_id groupId = 1;
1927 int16u groupKeySetID = 2;
1928 fabric_idx fabricIndex = 254;
1929 }
1930
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001931 struct GroupKeySetStruct {
1932 int16u groupKeySetID = 0;
Boris Zbarskyaab0d7c2023-02-21 14:46:25 -05001933 GroupKeySecurityPolicyEnum groupKeySecurityPolicy = 1;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001934 nullable octet_string<16> epochKey0 = 2;
1935 nullable epoch_us epochStartTime0 = 3;
1936 nullable octet_string<16> epochKey1 = 4;
1937 nullable epoch_us epochStartTime1 = 5;
1938 nullable octet_string<16> epochKey2 = 6;
1939 nullable epoch_us epochStartTime2 = 7;
1940 }
1941
1942 attribute access(write: manage) GroupKeyMapStruct groupKeyMap[] = 0;
1943 readonly attribute GroupInfoMapStruct groupTable[] = 1;
1944 readonly attribute int16u maxGroupsPerFabric = 2;
1945 readonly attribute int16u maxGroupKeysPerFabric = 3;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -05001946 readonly attribute command_id generatedCommandList[] = 65528;
1947 readonly attribute command_id acceptedCommandList[] = 65529;
1948 readonly attribute event_id eventList[] = 65530;
1949 readonly attribute attrib_id attributeList[] = 65531;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001950 readonly attribute bitmap32 featureMap = 65532;
1951 readonly attribute int16u clusterRevision = 65533;
1952
1953 request struct KeySetWriteRequest {
1954 GroupKeySetStruct groupKeySet = 0;
1955 }
1956
1957 request struct KeySetReadRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04001958 int16u groupKeySetID = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001959 }
1960
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001961 response struct KeySetReadResponse = 2 {
1962 GroupKeySetStruct groupKeySet = 0;
1963 }
1964
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001965 request struct KeySetRemoveRequest {
1966 int16u groupKeySetID = 0;
1967 }
1968
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001969 response struct KeySetReadAllIndicesResponse = 5 {
Andrei Litvin47836d22023-10-12 18:08:11 -04001970 int16u groupKeySetIDs[] = 0;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001971 }
1972
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001973 /** Write a new set of keys for the given key set id. */
Andrei Litvin33aecf82022-07-21 11:29:56 -04001974 fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001975 /** Read the keys for a given key set id. */
Andrei Litvin33aecf82022-07-21 11:29:56 -04001976 fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001977 /** Revoke a Root Key from a Group */
Andrei Litvin33aecf82022-07-21 11:29:56 -04001978 fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001979 /** Return the list of Group Key Sets associated with the accessing fabric */
Boris Zbarsky3d447872023-06-06 10:15:31 -04001980 fabric command access(invoke: administer) KeySetReadAllIndices(): KeySetReadAllIndicesResponse = 4;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001981}
1982
Andrei Litvin21c43e22023-04-04 18:50:26 -04001983/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only
1984labels. */
Andrei Litvinf94a44e2023-11-28 11:15:13 -05001985cluster FixedLabel = 64 {
Andrei Litvin90d60f02023-11-23 16:51:51 -05001986 revision 1; // NOTE: Default/not specifically set
1987
Bharat Rajuf25702c2023-04-12 11:14:12 -04001988 struct LabelStruct {
1989 char_string<16> label = 0;
1990 char_string<16> value = 1;
1991 }
1992
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001993 readonly attribute LabelStruct labelList[] = 0;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -05001994 readonly attribute command_id generatedCommandList[] = 65528;
1995 readonly attribute command_id acceptedCommandList[] = 65529;
1996 readonly attribute event_id eventList[] = 65530;
1997 readonly attribute attrib_id attributeList[] = 65531;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04001998 readonly attribute bitmap32 featureMap = 65532;
1999 readonly attribute int16u clusterRevision = 65533;
2000}
2001
Andrei Litvin21c43e22023-04-04 18:50:26 -04002002/** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002003cluster UserLabel = 65 {
Andrei Litvin90d60f02023-11-23 16:51:51 -05002004 revision 1; // NOTE: Default/not specifically set
2005
Bharat Rajuf25702c2023-04-12 11:14:12 -04002006 struct LabelStruct {
2007 char_string<16> label = 0;
2008 char_string<16> value = 1;
2009 }
2010
Boris Zbarskybc9bee22022-06-21 09:38:46 -04002011 attribute access(write: manage) LabelStruct labelList[] = 0;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -05002012 readonly attribute command_id generatedCommandList[] = 65528;
2013 readonly attribute command_id acceptedCommandList[] = 65529;
2014 readonly attribute event_id eventList[] = 65530;
2015 readonly attribute attrib_id attributeList[] = 65531;
Boris Zbarskybc9bee22022-06-21 09:38:46 -04002016 readonly attribute bitmap32 featureMap = 65532;
2017 readonly attribute int16u clusterRevision = 65533;
2018}
2019
Andrei Litvin21c43e22023-04-04 18:50:26 -04002020/** Attributes and commands for controlling the color properties of a color-capable light. */
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002021cluster ColorControl = 768 {
Andrei Litvin90d60f02023-11-23 16:51:51 -05002022 revision 6;
2023
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04002024 enum ColorLoopAction : enum8 {
Andrei Litvin6e3c1092022-01-14 15:30:21 -05002025 kDeactivate = 0;
2026 kActivateFromColorLoopStartEnhancedHue = 1;
2027 kActivateFromEnhancedCurrentHue = 2;
2028 }
2029
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04002030 enum ColorLoopDirection : enum8 {
Andrei Litvin6e3c1092022-01-14 15:30:21 -05002031 kDecrementHue = 0;
2032 kIncrementHue = 1;
2033 }
2034
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04002035 enum ColorMode : enum8 {
Andrei Litvin6e3c1092022-01-14 15:30:21 -05002036 kCurrentHueAndCurrentSaturation = 0;
2037 kCurrentXAndCurrentY = 1;
2038 kColorTemperature = 2;
2039 }
2040
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04002041 enum HueDirection : enum8 {
Andrei Litvin6e3c1092022-01-14 15:30:21 -05002042 kShortestDistance = 0;
2043 kLongestDistance = 1;
2044 kUp = 2;
2045 kDown = 3;
2046 }
2047
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04002048 enum HueMoveMode : enum8 {
Andrei Litvin6e3c1092022-01-14 15:30:21 -05002049 kStop = 0;
2050 kUp = 1;
2051 kDown = 3;
2052 }
2053
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04002054 enum HueStepMode : enum8 {
Andrei Litvin6e3c1092022-01-14 15:30:21 -05002055 kUp = 1;
2056 kDown = 3;
2057 }
2058
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04002059 enum SaturationMoveMode : enum8 {
Andrei Litvin6e3c1092022-01-14 15:30:21 -05002060 kStop = 0;
2061 kUp = 1;
2062 kDown = 3;
2063 }
2064
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04002065 enum SaturationStepMode : enum8 {
Andrei Litvin6e3c1092022-01-14 15:30:21 -05002066 kUp = 1;
2067 kDown = 3;
2068 }
2069
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04002070 bitmap ColorCapabilities : bitmap16 {
Andrei Litvinbdc2b5a2022-01-28 16:48:29 -05002071 kHueSaturationSupported = 0x1;
2072 kEnhancedHueSupported = 0x2;
2073 kColorLoopSupported = 0x4;
2074 kXYAttributesSupported = 0x8;
2075 kColorTemperatureSupported = 0x10;
2076 }
2077
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04002078 bitmap ColorLoopUpdateFlags : bitmap8 {
Andrei Litvinbdc2b5a2022-01-28 16:48:29 -05002079 kUpdateAction = 0x1;
2080 kUpdateDirection = 0x2;
2081 kUpdateTime = 0x4;
2082 kUpdateStartHue = 0x8;
2083 }
2084
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04002085 bitmap Feature : bitmap32 {
Boris Zbarsky243ee4b2023-05-19 10:39:11 -04002086 kHueAndSaturation = 0x1;
2087 kEnhancedHue = 0x2;
2088 kColorLoop = 0x4;
Andrei Litvin413a9002023-06-28 13:02:18 -04002089 kXY = 0x8;
Boris Zbarsky243ee4b2023-05-19 10:39:11 -04002090 kColorTemperature = 0x10;
2091 }
2092
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002093 readonly attribute optional int8u currentHue = 0;
2094 readonly attribute optional int8u currentSaturation = 1;
2095 readonly attribute optional int16u remainingTime = 2;
2096 readonly attribute optional int16u currentX = 3;
2097 readonly attribute optional int16u currentY = 4;
2098 readonly attribute optional enum8 driftCompensation = 5;
2099 readonly attribute optional char_string<254> compensationText = 6;
2100 readonly attribute optional int16u colorTemperatureMireds = 7;
Andrei Litvind5e74312022-01-19 17:06:40 -05002101 readonly attribute enum8 colorMode = 8;
jmartinez-silabs2ac8a102022-05-23 23:15:08 -04002102 attribute bitmap8 options = 15;
2103 readonly attribute nullable int8u numberOfPrimaries = 16;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002104 readonly attribute optional int16u primary1X = 17;
2105 readonly attribute optional int16u primary1Y = 18;
2106 readonly attribute optional nullable int8u primary1Intensity = 19;
2107 readonly attribute optional int16u primary2X = 21;
2108 readonly attribute optional int16u primary2Y = 22;
2109 readonly attribute optional nullable int8u primary2Intensity = 23;
2110 readonly attribute optional int16u primary3X = 25;
2111 readonly attribute optional int16u primary3Y = 26;
2112 readonly attribute optional nullable int8u primary3Intensity = 27;
2113 readonly attribute optional int16u primary4X = 32;
2114 readonly attribute optional int16u primary4Y = 33;
2115 readonly attribute optional nullable int8u primary4Intensity = 34;
2116 readonly attribute optional int16u primary5X = 36;
2117 readonly attribute optional int16u primary5Y = 37;
2118 readonly attribute optional nullable int8u primary5Intensity = 38;
2119 readonly attribute optional int16u primary6X = 40;
2120 readonly attribute optional int16u primary6Y = 41;
2121 readonly attribute optional nullable int8u primary6Intensity = 42;
2122 attribute access(write: manage) optional int16u whitePointX = 48;
2123 attribute access(write: manage) optional int16u whitePointY = 49;
2124 attribute access(write: manage) optional int16u colorPointRX = 50;
2125 attribute access(write: manage) optional int16u colorPointRY = 51;
2126 attribute access(write: manage) optional nullable int8u colorPointRIntensity = 52;
2127 attribute access(write: manage) optional int16u colorPointGX = 54;
2128 attribute access(write: manage) optional int16u colorPointGY = 55;
2129 attribute access(write: manage) optional nullable int8u colorPointGIntensity = 56;
2130 attribute access(write: manage) optional int16u colorPointBX = 58;
2131 attribute access(write: manage) optional int16u colorPointBY = 59;
2132 attribute access(write: manage) optional nullable int8u colorPointBIntensity = 60;
2133 readonly attribute optional int16u enhancedCurrentHue = 16384;
Andrei Litvind5e74312022-01-19 17:06:40 -05002134 readonly attribute enum8 enhancedColorMode = 16385;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002135 readonly attribute optional int8u colorLoopActive = 16386;
2136 readonly attribute optional int8u colorLoopDirection = 16387;
2137 readonly attribute optional int16u colorLoopTime = 16388;
2138 readonly attribute optional int16u colorLoopStartEnhancedHue = 16389;
2139 readonly attribute optional int16u colorLoopStoredEnhancedHue = 16390;
Andrei Litvind5e74312022-01-19 17:06:40 -05002140 readonly attribute bitmap16 colorCapabilities = 16394;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002141 readonly attribute optional int16u colorTempPhysicalMinMireds = 16395;
2142 readonly attribute optional int16u colorTempPhysicalMaxMireds = 16396;
2143 readonly attribute optional int16u coupleColorTempToLevelMinMireds = 16397;
2144 attribute access(write: manage) optional nullable int16u startUpColorTemperatureMireds = 16400;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -05002145 readonly attribute command_id generatedCommandList[] = 65528;
2146 readonly attribute command_id acceptedCommandList[] = 65529;
2147 readonly attribute event_id eventList[] = 65530;
2148 readonly attribute attrib_id attributeList[] = 65531;
Andrei Litvin306e8a42022-04-07 05:42:07 -10002149 readonly attribute bitmap32 featureMap = 65532;
2150 readonly attribute int16u clusterRevision = 65533;
Andrei Litvin6e3c1092022-01-14 15:30:21 -05002151
Marc Lepagec14faeb2022-03-25 13:51:27 -04002152 request struct MoveToHueRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04002153 int8u hue = 0;
Marc Lepagec14faeb2022-03-25 13:51:27 -04002154 HueDirection direction = 1;
Andrei Litvin47836d22023-10-12 18:08:11 -04002155 int16u transitionTime = 2;
2156 bitmap8 optionsMask = 3;
2157 bitmap8 optionsOverride = 4;
Marc Lepagec14faeb2022-03-25 13:51:27 -04002158 }
2159
2160 request struct MoveHueRequest {
2161 HueMoveMode moveMode = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -04002162 int8u rate = 1;
2163 bitmap8 optionsMask = 2;
2164 bitmap8 optionsOverride = 3;
Marc Lepagec14faeb2022-03-25 13:51:27 -04002165 }
2166
2167 request struct StepHueRequest {
2168 HueStepMode stepMode = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -04002169 int8u stepSize = 1;
2170 int8u transitionTime = 2;
2171 bitmap8 optionsMask = 3;
2172 bitmap8 optionsOverride = 4;
Marc Lepagec14faeb2022-03-25 13:51:27 -04002173 }
2174
2175 request struct MoveToSaturationRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04002176 int8u saturation = 0;
2177 int16u transitionTime = 1;
2178 bitmap8 optionsMask = 2;
2179 bitmap8 optionsOverride = 3;
Marc Lepagec14faeb2022-03-25 13:51:27 -04002180 }
2181
2182 request struct MoveSaturationRequest {
2183 SaturationMoveMode moveMode = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -04002184 int8u rate = 1;
2185 bitmap8 optionsMask = 2;
2186 bitmap8 optionsOverride = 3;
Marc Lepagec14faeb2022-03-25 13:51:27 -04002187 }
2188
2189 request struct StepSaturationRequest {
2190 SaturationStepMode stepMode = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -04002191 int8u stepSize = 1;
2192 int8u transitionTime = 2;
2193 bitmap8 optionsMask = 3;
2194 bitmap8 optionsOverride = 4;
Marc Lepagec14faeb2022-03-25 13:51:27 -04002195 }
2196
2197 request struct MoveToHueAndSaturationRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04002198 int8u hue = 0;
2199 int8u saturation = 1;
2200 int16u transitionTime = 2;
2201 bitmap8 optionsMask = 3;
2202 bitmap8 optionsOverride = 4;
Marc Lepagec14faeb2022-03-25 13:51:27 -04002203 }
2204
2205 request struct MoveToColorRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04002206 int16u colorX = 0;
2207 int16u colorY = 1;
2208 int16u transitionTime = 2;
2209 bitmap8 optionsMask = 3;
2210 bitmap8 optionsOverride = 4;
Marc Lepagec14faeb2022-03-25 13:51:27 -04002211 }
2212
2213 request struct MoveColorRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04002214 int16s rateX = 0;
2215 int16s rateY = 1;
2216 bitmap8 optionsMask = 2;
2217 bitmap8 optionsOverride = 3;
Marc Lepagec14faeb2022-03-25 13:51:27 -04002218 }
2219
2220 request struct StepColorRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04002221 int16s stepX = 0;
2222 int16s stepY = 1;
2223 int16u transitionTime = 2;
2224 bitmap8 optionsMask = 3;
2225 bitmap8 optionsOverride = 4;
Marc Lepagec14faeb2022-03-25 13:51:27 -04002226 }
2227
2228 request struct MoveToColorTemperatureRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04002229 int16u colorTemperatureMireds = 0;
2230 int16u transitionTime = 1;
2231 bitmap8 optionsMask = 2;
2232 bitmap8 optionsOverride = 3;
Marc Lepagec14faeb2022-03-25 13:51:27 -04002233 }
2234
2235 request struct EnhancedMoveToHueRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04002236 int16u enhancedHue = 0;
Marc Lepagec14faeb2022-03-25 13:51:27 -04002237 HueDirection direction = 1;
Andrei Litvin47836d22023-10-12 18:08:11 -04002238 int16u transitionTime = 2;
2239 bitmap8 optionsMask = 3;
2240 bitmap8 optionsOverride = 4;
Andrei Litvin6e3c1092022-01-14 15:30:21 -05002241 }
2242
2243 request struct EnhancedMoveHueRequest {
2244 HueMoveMode moveMode = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -04002245 int16u rate = 1;
2246 bitmap8 optionsMask = 2;
2247 bitmap8 optionsOverride = 3;
Andrei Litvin6e3c1092022-01-14 15:30:21 -05002248 }
2249
Marc Lepagec14faeb2022-03-25 13:51:27 -04002250 request struct EnhancedStepHueRequest {
2251 HueStepMode stepMode = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -04002252 int16u stepSize = 1;
2253 int16u transitionTime = 2;
2254 bitmap8 optionsMask = 3;
2255 bitmap8 optionsOverride = 4;
Andrei Litvin6e3c1092022-01-14 15:30:21 -05002256 }
2257
2258 request struct EnhancedMoveToHueAndSaturationRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04002259 int16u enhancedHue = 0;
2260 int8u saturation = 1;
2261 int16u transitionTime = 2;
2262 bitmap8 optionsMask = 3;
2263 bitmap8 optionsOverride = 4;
Andrei Litvin6e3c1092022-01-14 15:30:21 -05002264 }
2265
Marc Lepagec14faeb2022-03-25 13:51:27 -04002266 request struct ColorLoopSetRequest {
2267 ColorLoopUpdateFlags updateFlags = 0;
2268 ColorLoopAction action = 1;
2269 ColorLoopDirection direction = 2;
Andrei Litvin47836d22023-10-12 18:08:11 -04002270 int16u time = 3;
2271 int16u startHue = 4;
2272 bitmap8 optionsMask = 5;
2273 bitmap8 optionsOverride = 6;
Andrei Litvin6e3c1092022-01-14 15:30:21 -05002274 }
2275
Marc Lepagec14faeb2022-03-25 13:51:27 -04002276 request struct StopMoveStepRequest {
Andrei Litvin47836d22023-10-12 18:08:11 -04002277 bitmap8 optionsMask = 0;
2278 bitmap8 optionsOverride = 1;
Andrei Litvin6e3c1092022-01-14 15:30:21 -05002279 }
2280
2281 request struct MoveColorTemperatureRequest {
2282 HueMoveMode moveMode = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -04002283 int16u rate = 1;
2284 int16u colorTemperatureMinimumMireds = 2;
2285 int16u colorTemperatureMaximumMireds = 3;
2286 bitmap8 optionsMask = 4;
2287 bitmap8 optionsOverride = 5;
Andrei Litvin6e3c1092022-01-14 15:30:21 -05002288 }
2289
Andrei Litvin6e3c1092022-01-14 15:30:21 -05002290 request struct StepColorTemperatureRequest {
2291 HueStepMode stepMode = 0;
Andrei Litvin47836d22023-10-12 18:08:11 -04002292 int16u stepSize = 1;
2293 int16u transitionTime = 2;
2294 int16u colorTemperatureMinimumMireds = 3;
2295 int16u colorTemperatureMaximumMireds = 4;
2296 bitmap8 optionsMask = 5;
2297 bitmap8 optionsOverride = 6;
Andrei Litvin6e3c1092022-01-14 15:30:21 -05002298 }
2299
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002300 /** Move to specified hue. */
Andrei Litvin6e3c1092022-01-14 15:30:21 -05002301 command MoveToHue(MoveToHueRequest): DefaultSuccess = 0;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002302 /** Move hue up or down at specified rate. */
Marc Lepagec14faeb2022-03-25 13:51:27 -04002303 command MoveHue(MoveHueRequest): DefaultSuccess = 1;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002304 /** Step hue up or down by specified size at specified rate. */
Andrei Litvin6e3c1092022-01-14 15:30:21 -05002305 command StepHue(StepHueRequest): DefaultSuccess = 2;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002306 /** Move to specified saturation. */
Marc Lepagec14faeb2022-03-25 13:51:27 -04002307 command MoveToSaturation(MoveToSaturationRequest): DefaultSuccess = 3;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002308 /** Move saturation up or down at specified rate. */
Marc Lepagec14faeb2022-03-25 13:51:27 -04002309 command MoveSaturation(MoveSaturationRequest): DefaultSuccess = 4;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002310 /** Step saturation up or down by specified size at specified rate. */
Andrei Litvin6e3c1092022-01-14 15:30:21 -05002311 command StepSaturation(StepSaturationRequest): DefaultSuccess = 5;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002312 /** Move to hue and saturation. */
Marc Lepagec14faeb2022-03-25 13:51:27 -04002313 command MoveToHueAndSaturation(MoveToHueAndSaturationRequest): DefaultSuccess = 6;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002314 /** Move to specified color. */
Marc Lepagec14faeb2022-03-25 13:51:27 -04002315 command MoveToColor(MoveToColorRequest): DefaultSuccess = 7;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002316 /** Moves the color. */
Marc Lepagec14faeb2022-03-25 13:51:27 -04002317 command MoveColor(MoveColorRequest): DefaultSuccess = 8;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002318 /** Steps the lighting to a specific color. */
Marc Lepagec14faeb2022-03-25 13:51:27 -04002319 command StepColor(StepColorRequest): DefaultSuccess = 9;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002320 /** Move to a specific color temperature. */
Marc Lepagec14faeb2022-03-25 13:51:27 -04002321 command MoveToColorTemperature(MoveToColorTemperatureRequest): DefaultSuccess = 10;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002322 /** Command description for EnhancedMoveToHue */
Marc Lepagec14faeb2022-03-25 13:51:27 -04002323 command EnhancedMoveToHue(EnhancedMoveToHueRequest): DefaultSuccess = 64;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002324 /** Command description for EnhancedMoveHue */
Marc Lepagec14faeb2022-03-25 13:51:27 -04002325 command EnhancedMoveHue(EnhancedMoveHueRequest): DefaultSuccess = 65;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002326 /** Command description for EnhancedStepHue */
Marc Lepagec14faeb2022-03-25 13:51:27 -04002327 command EnhancedStepHue(EnhancedStepHueRequest): DefaultSuccess = 66;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002328 /** Command description for EnhancedMoveToHueAndSaturation */
Marc Lepagec14faeb2022-03-25 13:51:27 -04002329 command EnhancedMoveToHueAndSaturation(EnhancedMoveToHueAndSaturationRequest): DefaultSuccess = 67;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002330 /** Command description for ColorLoopSet */
Marc Lepagec14faeb2022-03-25 13:51:27 -04002331 command ColorLoopSet(ColorLoopSetRequest): DefaultSuccess = 68;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002332 /** Command description for StopMoveStep */
Andrei Litvin6e3c1092022-01-14 15:30:21 -05002333 command StopMoveStep(StopMoveStepRequest): DefaultSuccess = 71;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002334 /** Command description for MoveColorTemperature */
Marc Lepagec14faeb2022-03-25 13:51:27 -04002335 command MoveColorTemperature(MoveColorTemperatureRequest): DefaultSuccess = 75;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002336 /** Command description for StepColorTemperature */
Marc Lepagec14faeb2022-03-25 13:51:27 -04002337 command StepColorTemperature(StepColorTemperatureRequest): DefaultSuccess = 76;
Andrei Litvin6e3c1092022-01-14 15:30:21 -05002338}
2339
Andrei Litvin21c43e22023-04-04 18:50:26 -04002340/** Attributes and commands for configuring occupancy sensing, and reporting occupancy status. */
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002341cluster OccupancySensing = 1030 {
Andrei Litvin90d60f02023-11-23 16:51:51 -05002342 revision 3;
2343
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04002344 enum OccupancySensorTypeEnum : enum8 {
Andrei Litvin413a9002023-06-28 13:02:18 -04002345 kPIR = 0;
Jakob Sloth Olesen1071d8d2023-02-16 14:36:58 +01002346 kUltrasonic = 1;
2347 kPIRAndUltrasonic = 2;
2348 kPhysicalContact = 3;
2349 }
2350
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04002351 bitmap OccupancyBitmap : bitmap8 {
Jakob Sloth Olesen1071d8d2023-02-16 14:36:58 +01002352 kOccupied = 0x1;
2353 }
2354
Andrei Litvin4f65f6c2023-10-18 11:57:33 -04002355 bitmap OccupancySensorTypeBitmap : bitmap8 {
Andrei Litvin413a9002023-06-28 13:02:18 -04002356 kPIR = 0x1;
Jakob Sloth Olesen1071d8d2023-02-16 14:36:58 +01002357 kUltrasonic = 0x2;
2358 kPhysicalContact = 0x4;
2359 }
2360
2361 readonly attribute OccupancyBitmap occupancy = 0;
2362 readonly attribute OccupancySensorTypeEnum occupancySensorType = 1;
2363 readonly attribute OccupancySensorTypeBitmap occupancySensorTypeBitmap = 2;
Andrei Litvinf94a44e2023-11-28 11:15:13 -05002364 attribute access(write: manage) optional int16u PIROccupiedToUnoccupiedDelay = 16;
2365 attribute access(write: manage) optional int16u PIRUnoccupiedToOccupiedDelay = 17;
2366 attribute access(write: manage) optional int8u PIRUnoccupiedToOccupiedThreshold = 18;
2367 attribute access(write: manage) optional int16u ultrasonicOccupiedToUnoccupiedDelay = 32;
2368 attribute access(write: manage) optional int16u ultrasonicUnoccupiedToOccupiedDelay = 33;
2369 attribute access(write: manage) optional int8u ultrasonicUnoccupiedToOccupiedThreshold = 34;
2370 attribute access(write: manage) optional int16u physicalContactOccupiedToUnoccupiedDelay = 48;
2371 attribute access(write: manage) optional int16u physicalContactUnoccupiedToOccupiedDelay = 49;
2372 attribute access(write: manage) optional int8u physicalContactUnoccupiedToOccupiedThreshold = 50;
Andrei Litvinc6ae82c2023-02-10 15:31:59 -05002373 readonly attribute command_id generatedCommandList[] = 65528;
2374 readonly attribute command_id acceptedCommandList[] = 65529;
2375 readonly attribute event_id eventList[] = 65530;
2376 readonly attribute attrib_id attributeList[] = 65531;
tehampson2db812e2022-05-23 15:24:29 -04002377 readonly attribute bitmap32 featureMap = 65532;
Andrei Litvin306e8a42022-04-07 05:42:07 -10002378 readonly attribute int16u clusterRevision = 65533;
Andrei Litvin6e3c1092022-01-14 15:30:21 -05002379}
2380
Andrei Litvin6e3c1092022-01-14 15:30:21 -05002381endpoint 0 {
Andrei Litvin83634942023-08-05 00:50:32 -04002382 device type ma_rootdevice = 22, version 1;
2383
Andrei Litvinbe806bb2022-01-18 10:19:17 -05002384 binding cluster OtaSoftwareUpdateProvider;
Andrei Litvin90d19572022-05-05 21:25:28 -04002385
Andrei Litvin90d19572022-05-05 21:25:28 -04002386 server cluster Descriptor {
Boris Zbarskye4c075f2022-09-12 08:23:17 -04002387 callback attribute deviceTypeList;
Andrei Litvin90d19572022-05-05 21:25:28 -04002388 callback attribute serverList;
2389 callback attribute clientList;
2390 callback attribute partsList;
Andrei Litvin6d359752023-04-05 15:58:59 -04002391 ram attribute featureMap default = 0;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05002392 callback attribute clusterRevision;
Andrei Litvin90d19572022-05-05 21:25:28 -04002393 }
2394
2395 server cluster AccessControl {
Evgeny Margolis03f27822023-02-15 12:41:15 -08002396 emits event AccessControlEntryChanged;
2397 emits event AccessControlExtensionChanged;
Andrei Litvin90d19572022-05-05 21:25:28 -04002398 callback attribute acl;
2399 callback attribute extension;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05002400 callback attribute subjectsPerAccessControlEntry;
2401 callback attribute targetsPerAccessControlEntry;
2402 callback attribute accessControlEntriesPerFabric;
Andrei Litvin90d19572022-05-05 21:25:28 -04002403 callback attribute attributeList;
Andrei Litvin6d359752023-04-05 15:58:59 -04002404 ram attribute featureMap default = 0;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05002405 callback attribute clusterRevision;
Andrei Litvin90d19572022-05-05 21:25:28 -04002406 }
2407
Boris Zbarsky04c20f62022-12-18 10:09:13 -05002408 server cluster BasicInformation {
Evgeny Margolis03f27822023-02-15 12:41:15 -08002409 emits event StartUp;
2410 emits event ShutDown;
2411 emits event Leave;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05002412 callback attribute dataModelRevision;
Andrei Litvin90d19572022-05-05 21:25:28 -04002413 callback attribute vendorName;
2414 callback attribute vendorID;
2415 callback attribute productName;
2416 callback attribute productID;
2417 persist attribute nodeLabel;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05002418 callback attribute location;
2419 callback attribute hardwareVersion;
Andrei Litvin90d19572022-05-05 21:25:28 -04002420 callback attribute hardwareVersionString;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05002421 callback attribute softwareVersion;
Andrei Litvin90d19572022-05-05 21:25:28 -04002422 callback attribute softwareVersionString;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05002423 callback attribute manufacturingDate;
Andrei Litvin90d19572022-05-05 21:25:28 -04002424 callback attribute partNumber;
2425 callback attribute productURL;
2426 callback attribute productLabel;
2427 callback attribute serialNumber;
Andrei Litvin6d359752023-04-05 15:58:59 -04002428 persist attribute localConfigDisabled default = 0;
Andrei Litvin90d19572022-05-05 21:25:28 -04002429 callback attribute uniqueID;
2430 callback attribute capabilityMinima;
Terence Hampson9969d442023-11-16 11:30:48 -05002431 callback attribute specificationVersion;
2432 callback attribute maxPathsPerInvoke;
Andrei Litvin6d359752023-04-05 15:58:59 -04002433 ram attribute featureMap default = 0;
Terence Hampson9969d442023-11-16 11:30:48 -05002434 ram attribute clusterRevision default = 3;
Andrei Litvin90d19572022-05-05 21:25:28 -04002435 }
2436
2437 server cluster OtaSoftwareUpdateRequestor {
Evgeny Margolis03f27822023-02-15 12:41:15 -08002438 emits event StateTransition;
2439 emits event VersionApplied;
2440 emits event DownloadError;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05002441 callback attribute defaultOTAProviders;
Andrei Litvin90d19572022-05-05 21:25:28 -04002442 ram attribute updatePossible default = 1;
Andrei Litvin6d359752023-04-05 15:58:59 -04002443 ram attribute updateState default = 0;
2444 ram attribute updateStateProgress default = 0;
2445 ram attribute featureMap default = 0;
Andrei Litvin90d19572022-05-05 21:25:28 -04002446 ram attribute clusterRevision default = 1;
Andrei Litvin49fff5b2023-10-11 18:25:37 -04002447
2448 handle command AnnounceOTAProvider;
Andrei Litvin90d19572022-05-05 21:25:28 -04002449 }
2450
2451 server cluster LocalizationConfiguration {
2452 persist attribute activeLocale default = "en-US";
2453 callback attribute supportedLocales;
Andrei Litvin6d359752023-04-05 15:58:59 -04002454 ram attribute featureMap default = 0;
Andrei Litvin90d19572022-05-05 21:25:28 -04002455 ram attribute clusterRevision default = 1;
2456 }
2457
2458 server cluster TimeFormatLocalization {
Andrei Litvin6d359752023-04-05 15:58:59 -04002459 persist attribute hourFormat default = 0;
2460 persist attribute activeCalendarType default = 0;
Andrei Litvin90d19572022-05-05 21:25:28 -04002461 callback attribute supportedCalendarTypes;
Andrei Litvin6d359752023-04-05 15:58:59 -04002462 ram attribute featureMap default = 0;
Andrei Litvin90d19572022-05-05 21:25:28 -04002463 ram attribute clusterRevision default = 1;
2464 }
2465
2466 server cluster GeneralCommissioning {
Andrei Litvin6d359752023-04-05 15:58:59 -04002467 ram attribute breadcrumb default = 0x0000000000000000;
Andrei Litvin90d19572022-05-05 21:25:28 -04002468 callback attribute basicCommissioningInfo;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05002469 callback attribute regulatoryConfig;
2470 callback attribute locationCapability;
2471 callback attribute supportsConcurrentConnection;
Andrei Litvin6d359752023-04-05 15:58:59 -04002472 ram attribute featureMap default = 0;
Andrei Litvin90d19572022-05-05 21:25:28 -04002473 ram attribute clusterRevision default = 1;
Andrei Litvin49fff5b2023-10-11 18:25:37 -04002474
2475 handle command ArmFailSafe;
2476 handle command ArmFailSafeResponse;
2477 handle command SetRegulatoryConfig;
2478 handle command SetRegulatoryConfigResponse;
2479 handle command CommissioningComplete;
2480 handle command CommissioningCompleteResponse;
Andrei Litvin90d19572022-05-05 21:25:28 -04002481 }
2482
2483 server cluster NetworkCommissioning {
2484 ram attribute maxNetworks;
2485 callback attribute networks;
2486 ram attribute scanMaxTimeSeconds;
2487 ram attribute connectMaxTimeSeconds;
2488 ram attribute interfaceEnabled;
2489 ram attribute lastNetworkingStatus;
2490 ram attribute lastNetworkID;
2491 ram attribute lastConnectErrorValue;
2492 ram attribute featureMap default = 2;
2493 ram attribute clusterRevision default = 1;
Andrei Litvin49fff5b2023-10-11 18:25:37 -04002494
2495 handle command ScanNetworks;
2496 handle command ScanNetworksResponse;
2497 handle command AddOrUpdateWiFiNetwork;
2498 handle command AddOrUpdateThreadNetwork;
2499 handle command RemoveNetwork;
2500 handle command NetworkConfigResponse;
2501 handle command ConnectNetwork;
2502 handle command ConnectNetworkResponse;
2503 handle command ReorderNetwork;
Andrei Litvin90d19572022-05-05 21:25:28 -04002504 }
2505
2506 server cluster DiagnosticLogs {
Andrei Litvin6d359752023-04-05 15:58:59 -04002507 ram attribute featureMap default = 0;
tehampson2db812e2022-05-23 15:24:29 -04002508 ram attribute clusterRevision default = 1;
Andrei Litvin49fff5b2023-10-11 18:25:37 -04002509
2510 handle command RetrieveLogsRequest;
Andrei Litvin90d19572022-05-05 21:25:28 -04002511 }
2512
2513 server cluster GeneralDiagnostics {
Evgeny Margolis03f27822023-02-15 12:41:15 -08002514 emits event HardwareFaultChange;
2515 emits event RadioFaultChange;
2516 emits event NetworkFaultChange;
2517 emits event BootReason;
Andrei Litvin90d19572022-05-05 21:25:28 -04002518 callback attribute networkInterfaces;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05002519 callback attribute rebootCount;
2520 callback attribute upTime;
2521 callback attribute totalOperationalHours;
Boris Zbarskydd6ae932023-01-09 12:08:17 -05002522 callback attribute bootReason;
Andrei Litvin90d19572022-05-05 21:25:28 -04002523 callback attribute activeHardwareFaults;
2524 callback attribute activeRadioFaults;
2525 callback attribute activeNetworkFaults;
Andrei Litvin6d359752023-04-05 15:58:59 -04002526 callback attribute testEventTriggersEnabled default = false;
2527 ram attribute featureMap default = 0;
Tennessee Carmel-Veilleuxd165f622023-10-31 10:50:04 -04002528 ram attribute clusterRevision default = 0x0002;
Andrei Litvin49fff5b2023-10-11 18:25:37 -04002529
2530 handle command TestEventTrigger;
Tennessee Carmel-Veilleuxd165f622023-10-31 10:50:04 -04002531 handle command TimeSnapshot;
2532 handle command TimeSnapshotResponse;
Andrei Litvin90d19572022-05-05 21:25:28 -04002533 }
2534
2535 server cluster SoftwareDiagnostics {
2536 callback attribute threadMetrics;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05002537 callback attribute currentHeapFree;
2538 callback attribute currentHeapUsed;
2539 callback attribute currentHeapHighWatermark;
2540 callback attribute featureMap;
Andrei Litvin90d19572022-05-05 21:25:28 -04002541 ram attribute clusterRevision default = 1;
Andrei Litvin49fff5b2023-10-11 18:25:37 -04002542
2543 handle command ResetWatermarks;
Andrei Litvin90d19572022-05-05 21:25:28 -04002544 }
2545
2546 server cluster ThreadNetworkDiagnostics {
Yufeng Wang58653522022-05-27 22:10:22 -07002547 callback attribute channel;
2548 callback attribute routingRole;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05002549 callback attribute networkName;
2550 callback attribute panId;
2551 callback attribute extendedPanId;
Yufeng Wang58653522022-05-27 22:10:22 -07002552 callback attribute meshLocalPrefix;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05002553 callback attribute overrunCount;
Boris Zbarsky6395db62023-01-06 12:08:22 -05002554 callback attribute neighborTable;
2555 callback attribute routeTable;
Yufeng Wang58653522022-05-27 22:10:22 -07002556 callback attribute partitionId;
2557 callback attribute weighting;
2558 callback attribute dataVersion;
2559 callback attribute stableDataVersion;
2560 callback attribute leaderRouterId;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05002561 callback attribute detachedRoleCount;
2562 callback attribute childRoleCount;
2563 callback attribute routerRoleCount;
2564 callback attribute leaderRoleCount;
2565 callback attribute attachAttemptCount;
2566 callback attribute partitionIdChangeCount;
2567 callback attribute betterPartitionAttachAttemptCount;
2568 callback attribute parentChangeCount;
2569 callback attribute txTotalCount;
2570 callback attribute txUnicastCount;
2571 callback attribute txBroadcastCount;
2572 callback attribute txAckRequestedCount;
2573 callback attribute txAckedCount;
2574 callback attribute txNoAckRequestedCount;
2575 callback attribute txDataCount;
2576 callback attribute txDataPollCount;
2577 callback attribute txBeaconCount;
2578 callback attribute txBeaconRequestCount;
2579 callback attribute txOtherCount;
2580 callback attribute txRetryCount;
2581 callback attribute txDirectMaxRetryExpiryCount;
2582 callback attribute txIndirectMaxRetryExpiryCount;
2583 callback attribute txErrCcaCount;
2584 callback attribute txErrAbortCount;
2585 callback attribute txErrBusyChannelCount;
2586 callback attribute rxTotalCount;
2587 callback attribute rxUnicastCount;
2588 callback attribute rxBroadcastCount;
2589 callback attribute rxDataCount;
2590 callback attribute rxDataPollCount;
2591 callback attribute rxBeaconCount;
2592 callback attribute rxBeaconRequestCount;
2593 callback attribute rxOtherCount;
2594 callback attribute rxAddressFilteredCount;
2595 callback attribute rxDestAddrFilteredCount;
2596 callback attribute rxDuplicatedCount;
2597 callback attribute rxErrNoFrameCount;
2598 callback attribute rxErrUnknownNeighborCount;
2599 callback attribute rxErrInvalidSrcAddrCount;
2600 callback attribute rxErrSecCount;
2601 callback attribute rxErrFcsCount;
2602 callback attribute rxErrOtherCount;
2603 callback attribute activeTimestamp;
2604 callback attribute pendingTimestamp;
2605 callback attribute delay;
Andrei Litvin90d19572022-05-05 21:25:28 -04002606 callback attribute securityPolicy;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05002607 callback attribute channelPage0Mask;
Andrei Litvin90d19572022-05-05 21:25:28 -04002608 callback attribute operationalDatasetComponents;
2609 callback attribute activeNetworkFaultsList;
2610 ram attribute featureMap default = 0x000F;
2611 ram attribute clusterRevision default = 1;
Andrei Litvin49fff5b2023-10-11 18:25:37 -04002612
2613 handle command ResetCounts;
Andrei Litvin90d19572022-05-05 21:25:28 -04002614 }
2615
2616 server cluster WiFiNetworkDiagnostics {
Evgeny Margolis03f27822023-02-15 12:41:15 -08002617 emits event Disconnection;
2618 emits event AssociationFailure;
2619 emits event ConnectionStatus;
Andrei Litvin90d19572022-05-05 21:25:28 -04002620 callback attribute bssid;
2621 callback attribute securityType;
2622 callback attribute wiFiVersion;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05002623 callback attribute channelNumber;
2624 callback attribute rssi;
2625 callback attribute beaconLostCount;
2626 callback attribute beaconRxCount;
2627 callback attribute packetMulticastRxCount;
2628 callback attribute packetMulticastTxCount;
2629 callback attribute packetUnicastRxCount;
2630 callback attribute packetUnicastTxCount;
2631 callback attribute currentMaxRate;
2632 callback attribute overrunCount;
Andrei Litvin90d19572022-05-05 21:25:28 -04002633 ram attribute featureMap default = 3;
2634 ram attribute clusterRevision default = 1;
Andrei Litvin49fff5b2023-10-11 18:25:37 -04002635
2636 handle command ResetCounts;
Andrei Litvin90d19572022-05-05 21:25:28 -04002637 }
2638
2639 server cluster EthernetNetworkDiagnostics {
2640 callback attribute PHYRate;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05002641 callback attribute fullDuplex;
2642 callback attribute packetRxCount;
2643 callback attribute packetTxCount;
2644 callback attribute txErrCount;
2645 callback attribute collisionCount;
2646 callback attribute overrunCount;
2647 callback attribute carrierDetect;
2648 callback attribute timeSinceReset;
Andrei Litvin90d19572022-05-05 21:25:28 -04002649 ram attribute featureMap default = 3;
2650 ram attribute clusterRevision default = 1;
Andrei Litvin49fff5b2023-10-11 18:25:37 -04002651
2652 handle command ResetCounts;
Andrei Litvin90d19572022-05-05 21:25:28 -04002653 }
2654
2655 server cluster Switch {
Yufeng Wangae1cb322023-07-28 09:10:50 -07002656 emits event SwitchLatched;
Alex Pygin344c1e32023-02-10 20:42:48 -06002657 ram attribute numberOfPositions default = 2;
2658 ram attribute currentPosition;
Andrei Litvin6d359752023-04-05 15:58:59 -04002659 ram attribute featureMap default = 0;
tehampson2db812e2022-05-23 15:24:29 -04002660 ram attribute clusterRevision default = 1;
Andrei Litvin90d19572022-05-05 21:25:28 -04002661 }
2662
2663 server cluster AdministratorCommissioning {
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05002664 callback attribute windowStatus;
2665 callback attribute adminFabricIndex;
2666 callback attribute adminVendorId;
Andrei Litvin6d359752023-04-05 15:58:59 -04002667 ram attribute featureMap default = 0;
Andrei Litvin90d19572022-05-05 21:25:28 -04002668 ram attribute clusterRevision default = 1;
Andrei Litvin49fff5b2023-10-11 18:25:37 -04002669
2670 handle command OpenCommissioningWindow;
2671 handle command OpenBasicCommissioningWindow;
2672 handle command RevokeCommissioning;
Andrei Litvin90d19572022-05-05 21:25:28 -04002673 }
2674
2675 server cluster OperationalCredentials {
2676 callback attribute NOCs;
2677 callback attribute fabrics;
Andrei Litvinbaf18ff2022-05-06 09:57:50 -04002678 callback attribute supportedFabrics;
2679 callback attribute commissionedFabrics;
Andrei Litvin90d19572022-05-05 21:25:28 -04002680 callback attribute trustedRootCertificates;
2681 callback attribute currentFabricIndex;
Andrei Litvin6d359752023-04-05 15:58:59 -04002682 ram attribute featureMap default = 0;
Andrei Litvin90d19572022-05-05 21:25:28 -04002683 ram attribute clusterRevision default = 1;
Andrei Litvin49fff5b2023-10-11 18:25:37 -04002684
2685 handle command AttestationRequest;
2686 handle command AttestationResponse;
2687 handle command CertificateChainRequest;
2688 handle command CertificateChainResponse;
2689 handle command CSRRequest;
2690 handle command CSRResponse;
2691 handle command AddNOC;
2692 handle command UpdateNOC;
2693 handle command NOCResponse;
2694 handle command UpdateFabricLabel;
2695 handle command RemoveFabric;
2696 handle command AddTrustedRootCertificate;
Andrei Litvin90d19572022-05-05 21:25:28 -04002697 }
2698
2699 server cluster GroupKeyManagement {
2700 callback attribute groupKeyMap;
2701 callback attribute groupTable;
2702 callback attribute maxGroupsPerFabric;
2703 callback attribute maxGroupKeysPerFabric;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05002704 callback attribute featureMap;
2705 callback attribute clusterRevision;
Andrei Litvin49fff5b2023-10-11 18:25:37 -04002706
2707 handle command KeySetWrite;
2708 handle command KeySetRead;
2709 handle command KeySetReadResponse;
2710 handle command KeySetRemove;
2711 handle command KeySetReadAllIndices;
2712 handle command KeySetReadAllIndicesResponse;
Andrei Litvin90d19572022-05-05 21:25:28 -04002713 }
2714
2715 server cluster FixedLabel {
2716 callback attribute labelList;
Andrei Litvin6d359752023-04-05 15:58:59 -04002717 ram attribute featureMap default = 0;
Andrei Litvin90d19572022-05-05 21:25:28 -04002718 ram attribute clusterRevision default = 1;
2719 }
2720
2721 server cluster UserLabel {
2722 callback attribute labelList;
Andrei Litvin6d359752023-04-05 15:58:59 -04002723 ram attribute featureMap default = 0;
Andrei Litvin90d19572022-05-05 21:25:28 -04002724 ram attribute clusterRevision default = 1;
2725 }
Andrei Litvin6e3c1092022-01-14 15:30:21 -05002726}
Andrei Litvin6e3c1092022-01-14 15:30:21 -05002727endpoint 1 {
Andrei Litvin83634942023-08-05 00:50:32 -04002728 device type ma_dimmablelight = 257, version 1;
2729
Andrei Litvin90d19572022-05-05 21:25:28 -04002730
2731 server cluster Identify {
Andrei Litvin6d359752023-04-05 15:58:59 -04002732 ram attribute identifyTime default = 0x0000;
2733 ram attribute identifyType default = 0x0;
2734 ram attribute featureMap default = 0;
Andrei Litvin90d19572022-05-05 21:25:28 -04002735 ram attribute clusterRevision default = 4;
Andrei Litvin49fff5b2023-10-11 18:25:37 -04002736
2737 handle command Identify;
2738 handle command TriggerEffect;
Andrei Litvin90d19572022-05-05 21:25:28 -04002739 }
2740
2741 server cluster Groups {
2742 ram attribute nameSupport;
Andrei Litvin6d359752023-04-05 15:58:59 -04002743 ram attribute featureMap default = 0;
Andrei Litvin90d19572022-05-05 21:25:28 -04002744 ram attribute clusterRevision default = 4;
Andrei Litvin49fff5b2023-10-11 18:25:37 -04002745
2746 handle command AddGroup;
2747 handle command AddGroupResponse;
2748 handle command ViewGroup;
2749 handle command ViewGroupResponse;
2750 handle command GetGroupMembership;
2751 handle command GetGroupMembershipResponse;
2752 handle command RemoveGroup;
2753 handle command RemoveGroupResponse;
2754 handle command RemoveAllGroups;
2755 handle command AddGroupIfIdentifying;
Andrei Litvin90d19572022-05-05 21:25:28 -04002756 }
2757
lpbeliveau-silabs5dea83e2023-05-30 19:23:04 -04002758 server cluster Scenes {
lpbeliveau-silabs5dea83e2023-05-30 19:23:04 -04002759 ram attribute nameSupport default = 0x80;
2760 ram attribute lastConfiguredBy;
lpbeliveau-silabsf03e9ef2023-10-05 09:27:10 -04002761 ram attribute sceneTableSize default = 16;
lpbeliveau-silabs732d5e72023-11-16 12:36:24 -05002762 callback attribute fabricSceneInfo;
lpbeliveau-silabs5dea83e2023-05-30 19:23:04 -04002763 callback attribute generatedCommandList;
2764 callback attribute acceptedCommandList;
lpbeliveau-silabs5dea83e2023-05-30 19:23:04 -04002765 callback attribute attributeList;
lpbeliveau-silabs732d5e72023-11-16 12:36:24 -05002766 ram attribute featureMap default = 15;
lpbeliveau-silabs2520f472023-06-06 19:53:07 -04002767 ram attribute clusterRevision default = 5;
Andrei Litvin49fff5b2023-10-11 18:25:37 -04002768
2769 handle command AddScene;
2770 handle command AddSceneResponse;
2771 handle command ViewScene;
2772 handle command ViewSceneResponse;
2773 handle command RemoveScene;
2774 handle command RemoveSceneResponse;
2775 handle command RemoveAllScenes;
2776 handle command RemoveAllScenesResponse;
2777 handle command StoreScene;
2778 handle command StoreSceneResponse;
2779 handle command RecallScene;
2780 handle command GetSceneMembership;
2781 handle command GetSceneMembershipResponse;
2782 handle command EnhancedAddScene;
2783 handle command EnhancedViewScene;
2784 handle command CopyScene;
lpbeliveau-silabs5dea83e2023-05-30 19:23:04 -04002785 }
2786
Andrei Litvin90d19572022-05-05 21:25:28 -04002787 server cluster OnOff {
Andrei Litvin6d359752023-04-05 15:58:59 -04002788 persist attribute onOff default = 0x00;
Andrei Litvin90d19572022-05-05 21:25:28 -04002789 ram attribute globalSceneControl default = 0x01;
Andrei Litvin6d359752023-04-05 15:58:59 -04002790 ram attribute onTime default = 0x0000;
2791 ram attribute offWaitTime default = 0x0000;
Andrei Litvin90d19572022-05-05 21:25:28 -04002792 persist attribute startUpOnOff default = 0xFF;
2793 ram attribute featureMap default = 1;
marktrayerb312dfe2023-07-18 13:55:35 -05002794 ram attribute clusterRevision default = 5;
Andrei Litvin49fff5b2023-10-11 18:25:37 -04002795
2796 handle command Off;
2797 handle command On;
2798 handle command Toggle;
2799 handle command OffWithEffect;
2800 handle command OnWithRecallGlobalScene;
2801 handle command OnWithTimedOff;
Andrei Litvin90d19572022-05-05 21:25:28 -04002802 }
2803
2804 server cluster LevelControl {
2805 persist attribute currentLevel default = 0x01;
Andrei Litvin6d359752023-04-05 15:58:59 -04002806 ram attribute remainingTime default = 0x0000;
jmartinez-silabs3948b402022-06-08 16:59:41 -04002807 ram attribute minLevel default = 0x01;
Andrei Litvin90d19572022-05-05 21:25:28 -04002808 ram attribute maxLevel default = 0xFE;
Andrei Litvin6d359752023-04-05 15:58:59 -04002809 ram attribute currentFrequency default = 0x0000;
2810 ram attribute minFrequency default = 0x0000;
2811 ram attribute maxFrequency default = 0x0000;
2812 ram attribute options default = 0x00;
2813 ram attribute onOffTransitionTime default = 0x0000;
Andrei Litvin90d19572022-05-05 21:25:28 -04002814 ram attribute onLevel default = 0xFF;
2815 ram attribute onTransitionTime;
2816 ram attribute offTransitionTime;
2817 ram attribute defaultMoveRate default = 50;
2818 persist attribute startUpCurrentLevel default = 255;
2819 ram attribute featureMap default = 3;
2820 ram attribute clusterRevision default = 5;
Andrei Litvin49fff5b2023-10-11 18:25:37 -04002821
2822 handle command MoveToLevel;
2823 handle command Move;
2824 handle command Step;
2825 handle command Stop;
2826 handle command MoveToLevelWithOnOff;
2827 handle command MoveWithOnOff;
2828 handle command StepWithOnOff;
2829 handle command StopWithOnOff;
Andrei Litvin90d19572022-05-05 21:25:28 -04002830 }
2831
2832 server cluster Descriptor {
Boris Zbarskye4c075f2022-09-12 08:23:17 -04002833 callback attribute deviceTypeList;
Andrei Litvin90d19572022-05-05 21:25:28 -04002834 callback attribute serverList;
2835 callback attribute clientList;
2836 callback attribute partsList;
Andrei Litvin6d359752023-04-05 15:58:59 -04002837 ram attribute featureMap default = 0;
Boris Zbarskyf1b6ea52023-11-29 05:07:22 -05002838 callback attribute clusterRevision;
Andrei Litvin90d19572022-05-05 21:25:28 -04002839 }
2840
2841 server cluster ColorControl {
Boris Zbarsky9b2f1c82023-05-25 00:55:00 -04002842 persist attribute currentHue default = 0x00;
2843 persist attribute currentSaturation default = 0x00;
Andrei Litvin6d359752023-04-05 15:58:59 -04002844 ram attribute remainingTime default = 0x0000;
Boris Zbarsky9b2f1c82023-05-25 00:55:00 -04002845 persist attribute currentX default = 0x616B;
2846 persist attribute currentY default = 0x607D;
2847 persist attribute colorTemperatureMireds default = 0x00FA;
2848 persist attribute colorMode default = 0x01;
Andrei Litvin6d359752023-04-05 15:58:59 -04002849 ram attribute options default = 0x00;
Andrei Litvin90d19572022-05-05 21:25:28 -04002850 ram attribute numberOfPrimaries;
Boris Zbarsky9b2f1c82023-05-25 00:55:00 -04002851 persist attribute enhancedCurrentHue default = 0x0000;
2852 persist attribute enhancedColorMode default = 0x01;
2853 persist attribute colorLoopActive default = 0x00;
2854 persist attribute colorLoopDirection default = 0x00;
2855 persist attribute colorLoopTime default = 0x0019;
Andrei Litvin90d19572022-05-05 21:25:28 -04002856 ram attribute colorLoopStartEnhancedHue default = 0x2300;
Andrei Litvin6d359752023-04-05 15:58:59 -04002857 ram attribute colorLoopStoredEnhancedHue default = 0x0000;
jmartinez-silabs756e3ab2022-06-22 11:20:14 -04002858 ram attribute colorCapabilities default = 0x1F;
Andrei Litvin6d359752023-04-05 15:58:59 -04002859 ram attribute colorTempPhysicalMinMireds default = 0x0000;
jmartinez-silabs2ac8a102022-05-23 23:15:08 -04002860 ram attribute colorTempPhysicalMaxMireds default = 0xFEFF;
Andrei Litvin90d19572022-05-05 21:25:28 -04002861 ram attribute coupleColorTempToLevelMinMireds;
Boris Zbarsky9b2f1c82023-05-25 00:55:00 -04002862 persist attribute startUpColorTemperatureMireds;
Andrei Litvin90d19572022-05-05 21:25:28 -04002863 ram attribute featureMap default = 0x1F;
Junior Martinezf058d8e2023-08-21 17:44:41 -04002864 ram attribute clusterRevision default = 6;
Andrei Litvin49fff5b2023-10-11 18:25:37 -04002865
2866 handle command MoveToHue;
2867 handle command MoveHue;
2868 handle command StepHue;
2869 handle command MoveToSaturation;
2870 handle command MoveSaturation;
2871 handle command StepSaturation;
2872 handle command MoveToHueAndSaturation;
2873 handle command MoveToColor;
2874 handle command MoveColor;
2875 handle command StepColor;
2876 handle command MoveToColorTemperature;
2877 handle command EnhancedMoveToHue;
2878 handle command EnhancedMoveHue;
2879 handle command EnhancedStepHue;
2880 handle command EnhancedMoveToHueAndSaturation;
2881 handle command ColorLoopSet;
2882 handle command StopMoveStep;
2883 handle command MoveColorTemperature;
2884 handle command StepColorTemperature;
Andrei Litvin90d19572022-05-05 21:25:28 -04002885 }
2886
2887 server cluster OccupancySensing {
2888 ram attribute occupancy;
2889 ram attribute occupancySensorType;
2890 ram attribute occupancySensorTypeBitmap;
Andrei Litvin6d359752023-04-05 15:58:59 -04002891 ram attribute featureMap default = 0;
Andrei Litvin90d19572022-05-05 21:25:28 -04002892 ram attribute clusterRevision default = 3;
2893 }
Andrei Litvin6e3c1092022-01-14 15:30:21 -05002894}
2895
Andrei Litvin90d19572022-05-05 21:25:28 -04002896