Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1 | // This IDL was generated automatically by ZAP. |
| 2 | // It is for view/code review purposes only. |
| 3 | |
Andrei Litvin | 21c43e2 | 2023-04-04 18:50:26 -0400 | [diff] [blame] | 4 | /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 5 | cluster Identify = 3 { |
Andrei Litvin | 90d60f0 | 2023-11-23 16:51:51 -0500 | [diff] [blame] | 6 | revision 4; |
| 7 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 8 | enum EffectIdentifierEnum : enum8 { |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 9 | kBlink = 0; |
| 10 | kBreathe = 1; |
| 11 | kOkay = 2; |
| 12 | kChannelChange = 11; |
| 13 | kFinishEffect = 254; |
| 14 | kStopEffect = 255; |
| 15 | } |
| 16 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 17 | enum EffectVariantEnum : enum8 { |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 18 | kDefault = 0; |
| 19 | } |
| 20 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 21 | enum IdentifyTypeEnum : enum8 { |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 22 | kNone = 0; |
fesseha-eve | e663746 | 2023-05-26 18:34:09 +0200 | [diff] [blame] | 23 | kLightOutput = 1; |
| 24 | kVisibleIndicator = 2; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 25 | kAudibleBeep = 3; |
| 26 | kDisplay = 4; |
| 27 | kActuator = 5; |
| 28 | } |
| 29 | |
| 30 | attribute int16u identifyTime = 0; |
fesseha-eve | e663746 | 2023-05-26 18:34:09 +0200 | [diff] [blame] | 31 | readonly attribute IdentifyTypeEnum identifyType = 1; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 32 | readonly attribute command_id generatedCommandList[] = 65528; |
| 33 | readonly attribute command_id acceptedCommandList[] = 65529; |
Andrei Litvin | c6ae82c | 2023-02-10 15:31:59 -0500 | [diff] [blame] | 34 | readonly attribute event_id eventList[] = 65530; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 35 | readonly attribute attrib_id attributeList[] = 65531; |
| 36 | readonly attribute bitmap32 featureMap = 65532; |
| 37 | readonly attribute int16u clusterRevision = 65533; |
| 38 | |
| 39 | request struct IdentifyRequest { |
Andrei Litvin | 47836d2 | 2023-10-12 18:08:11 -0400 | [diff] [blame] | 40 | int16u identifyTime = 0; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 41 | } |
| 42 | |
| 43 | request struct TriggerEffectRequest { |
fesseha-eve | e663746 | 2023-05-26 18:34:09 +0200 | [diff] [blame] | 44 | EffectIdentifierEnum effectIdentifier = 0; |
| 45 | EffectVariantEnum effectVariant = 1; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 46 | } |
| 47 | |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 48 | /** Command description for Identify */ |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 49 | command access(invoke: manage) Identify(IdentifyRequest): DefaultSuccess = 0; |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 50 | /** Command description for TriggerEffect */ |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 51 | command access(invoke: manage) TriggerEffect(TriggerEffectRequest): DefaultSuccess = 64; |
| 52 | } |
| 53 | |
Andrei Litvin | 21c43e2 | 2023-04-04 18:50:26 -0400 | [diff] [blame] | 54 | /** Attributes and commands for group configuration and manipulation. */ |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 55 | cluster Groups = 4 { |
Andrei Litvin | 90d60f0 | 2023-11-23 16:51:51 -0500 | [diff] [blame] | 56 | revision 4; |
| 57 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 58 | bitmap Feature : bitmap32 { |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 59 | kGroupNames = 0x1; |
| 60 | } |
| 61 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 62 | bitmap NameSupportBitmap : bitmap8 { |
Boris Zbarsky | cb1955f | 2023-05-25 14:01:41 -0400 | [diff] [blame] | 63 | kGroupNames = 0x80; |
| 64 | } |
| 65 | |
| 66 | readonly attribute NameSupportBitmap nameSupport = 0; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 67 | readonly attribute command_id generatedCommandList[] = 65528; |
| 68 | readonly attribute command_id acceptedCommandList[] = 65529; |
Andrei Litvin | c6ae82c | 2023-02-10 15:31:59 -0500 | [diff] [blame] | 69 | readonly attribute event_id eventList[] = 65530; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 70 | readonly attribute attrib_id attributeList[] = 65531; |
| 71 | readonly attribute bitmap32 featureMap = 65532; |
| 72 | readonly attribute int16u clusterRevision = 65533; |
| 73 | |
| 74 | request struct AddGroupRequest { |
Boris Zbarsky | a83ce32 | 2023-01-03 11:38:33 -0500 | [diff] [blame] | 75 | group_id groupID = 0; |
Andrei Litvin | bd8aa07 | 2023-10-27 18:12:37 -0400 | [diff] [blame] | 76 | char_string<16> groupName = 1; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 77 | } |
| 78 | |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 79 | response struct AddGroupResponse = 0 { |
Andrei Litvin | 47836d2 | 2023-10-12 18:08:11 -0400 | [diff] [blame] | 80 | enum8 status = 0; |
Boris Zbarsky | a83ce32 | 2023-01-03 11:38:33 -0500 | [diff] [blame] | 81 | group_id groupID = 1; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 82 | } |
| 83 | |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 84 | request struct ViewGroupRequest { |
| 85 | group_id groupID = 0; |
| 86 | } |
| 87 | |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 88 | response struct ViewGroupResponse = 1 { |
Andrei Litvin | 47836d2 | 2023-10-12 18:08:11 -0400 | [diff] [blame] | 89 | enum8 status = 0; |
Boris Zbarsky | a83ce32 | 2023-01-03 11:38:33 -0500 | [diff] [blame] | 90 | group_id groupID = 1; |
Andrei Litvin | bd8aa07 | 2023-10-27 18:12:37 -0400 | [diff] [blame] | 91 | char_string<16> groupName = 2; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 92 | } |
| 93 | |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 94 | request struct GetGroupMembershipRequest { |
| 95 | group_id groupList[] = 0; |
| 96 | } |
| 97 | |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 98 | response struct GetGroupMembershipResponse = 2 { |
Andrei Litvin | 47836d2 | 2023-10-12 18:08:11 -0400 | [diff] [blame] | 99 | nullable int8u capacity = 0; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 100 | group_id groupList[] = 1; |
| 101 | } |
| 102 | |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 103 | request struct RemoveGroupRequest { |
| 104 | group_id groupID = 0; |
| 105 | } |
| 106 | |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 107 | response struct RemoveGroupResponse = 3 { |
Andrei Litvin | 47836d2 | 2023-10-12 18:08:11 -0400 | [diff] [blame] | 108 | enum8 status = 0; |
Boris Zbarsky | a83ce32 | 2023-01-03 11:38:33 -0500 | [diff] [blame] | 109 | group_id groupID = 1; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 110 | } |
| 111 | |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 112 | request struct AddGroupIfIdentifyingRequest { |
| 113 | group_id groupID = 0; |
| 114 | char_string<16> groupName = 1; |
| 115 | } |
| 116 | |
| 117 | /** Command description for AddGroup */ |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 118 | fabric command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 119 | /** Command description for ViewGroup */ |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 120 | fabric command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 121 | /** Command description for GetGroupMembership */ |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 122 | fabric command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 123 | /** Command description for RemoveGroup */ |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 124 | fabric command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 125 | /** Command description for RemoveAllGroups */ |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 126 | fabric command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 127 | /** Command description for AddGroupIfIdentifying */ |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 128 | fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; |
| 129 | } |
| 130 | |
Andrei Litvin | 21c43e2 | 2023-04-04 18:50:26 -0400 | [diff] [blame] | 131 | /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 132 | cluster Descriptor = 29 { |
Andrei Litvin | 90d60f0 | 2023-11-23 16:51:51 -0500 | [diff] [blame] | 133 | revision 2; |
| 134 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 135 | bitmap Feature : bitmap32 { |
Boris Zbarsky | bf0b45a | 2023-08-11 08:04:15 -0400 | [diff] [blame] | 136 | kTagList = 0x1; |
| 137 | } |
| 138 | |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 139 | struct DeviceTypeStruct { |
Boris Zbarsky | 7195bd8 | 2023-01-03 17:34:16 -0500 | [diff] [blame] | 140 | devtype_id deviceType = 0; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 141 | int16u revision = 1; |
| 142 | } |
| 143 | |
abeck-whirlpool | a1c1126 | 2023-07-21 00:22:56 -0500 | [diff] [blame] | 144 | struct SemanticTagStruct { |
| 145 | nullable vendor_id mfgCode = 0; |
| 146 | enum8 namespaceID = 1; |
| 147 | enum8 tag = 2; |
| 148 | optional nullable char_string label = 3; |
| 149 | } |
| 150 | |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 151 | readonly attribute DeviceTypeStruct deviceTypeList[] = 0; |
Andrei Litvin | 47836d2 | 2023-10-12 18:08:11 -0400 | [diff] [blame] | 152 | readonly attribute cluster_id serverList[] = 1; |
| 153 | readonly attribute cluster_id clientList[] = 2; |
| 154 | readonly attribute endpoint_no partsList[] = 3; |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 155 | readonly attribute optional SemanticTagStruct tagList[] = 4; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 156 | readonly attribute command_id generatedCommandList[] = 65528; |
| 157 | readonly attribute command_id acceptedCommandList[] = 65529; |
Andrei Litvin | c6ae82c | 2023-02-10 15:31:59 -0500 | [diff] [blame] | 158 | readonly attribute event_id eventList[] = 65530; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 159 | readonly attribute attrib_id attributeList[] = 65531; |
| 160 | readonly attribute bitmap32 featureMap = 65532; |
| 161 | readonly attribute int16u clusterRevision = 65533; |
| 162 | } |
| 163 | |
Andrei Litvin | 21c43e2 | 2023-04-04 18:50:26 -0400 | [diff] [blame] | 164 | /** The Access Control Cluster exposes a data model view of a |
| 165 | Node's Access Control List (ACL), which codifies the rules used to manage |
| 166 | and enforce Access Control for the Node's endpoints and their associated |
| 167 | cluster instances. */ |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 168 | cluster AccessControl = 31 { |
Andrei Litvin | 90d60f0 | 2023-11-23 16:51:51 -0500 | [diff] [blame] | 169 | revision 1; // NOTE: Default/not specifically set |
| 170 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 171 | enum AccessControlEntryAuthModeEnum : enum8 { |
Andrei Litvin | 413a900 | 2023-06-28 13:02:18 -0400 | [diff] [blame] | 172 | kPASE = 1; |
| 173 | kCASE = 2; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 174 | kGroup = 3; |
| 175 | } |
| 176 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 177 | enum AccessControlEntryPrivilegeEnum : enum8 { |
Boris Zbarsky | 28cb6cc | 2023-01-04 04:46:21 -0500 | [diff] [blame] | 178 | kView = 1; |
| 179 | kProxyView = 2; |
| 180 | kOperate = 3; |
| 181 | kManage = 4; |
| 182 | kAdminister = 5; |
| 183 | } |
| 184 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 185 | enum ChangeTypeEnum : enum8 { |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 186 | kChanged = 0; |
| 187 | kAdded = 1; |
| 188 | kRemoved = 2; |
| 189 | } |
| 190 | |
Boris Zbarsky | f9731a8 | 2023-05-24 15:08:53 -0400 | [diff] [blame] | 191 | struct AccessControlTargetStruct { |
Bharat Raju | f25702c | 2023-04-12 11:14:12 -0400 | [diff] [blame] | 192 | nullable cluster_id cluster = 0; |
| 193 | nullable endpoint_no endpoint = 1; |
| 194 | nullable devtype_id deviceType = 2; |
| 195 | } |
| 196 | |
Boris Zbarsky | 28cb6cc | 2023-01-04 04:46:21 -0500 | [diff] [blame] | 197 | fabric_scoped struct AccessControlEntryStruct { |
| 198 | fabric_sensitive AccessControlEntryPrivilegeEnum privilege = 1; |
| 199 | fabric_sensitive AccessControlEntryAuthModeEnum authMode = 2; |
Andrei Litvin | d38820d | 2022-10-04 09:25:26 -0400 | [diff] [blame] | 200 | nullable fabric_sensitive int64u subjects[] = 3; |
Boris Zbarsky | f9731a8 | 2023-05-24 15:08:53 -0400 | [diff] [blame] | 201 | nullable fabric_sensitive AccessControlTargetStruct targets[] = 4; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 202 | fabric_idx fabricIndex = 254; |
| 203 | } |
| 204 | |
Boris Zbarsky | 28cb6cc | 2023-01-04 04:46:21 -0500 | [diff] [blame] | 205 | fabric_scoped struct AccessControlExtensionStruct { |
Andrei Litvin | d38820d | 2022-10-04 09:25:26 -0400 | [diff] [blame] | 206 | fabric_sensitive octet_string<128> data = 1; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 207 | fabric_idx fabricIndex = 254; |
| 208 | } |
| 209 | |
Andrei Litvin | d38820d | 2022-10-04 09:25:26 -0400 | [diff] [blame] | 210 | fabric_sensitive info event access(read: administer) AccessControlEntryChanged = 0 { |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 211 | nullable node_id adminNodeID = 1; |
Andrei Litvin | 47836d2 | 2023-10-12 18:08:11 -0400 | [diff] [blame] | 212 | nullable int16u adminPasscodeID = 2; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 213 | ChangeTypeEnum changeType = 3; |
Boris Zbarsky | 28cb6cc | 2023-01-04 04:46:21 -0500 | [diff] [blame] | 214 | nullable AccessControlEntryStruct latestValue = 4; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 215 | fabric_idx fabricIndex = 254; |
| 216 | } |
| 217 | |
Andrei Litvin | d38820d | 2022-10-04 09:25:26 -0400 | [diff] [blame] | 218 | fabric_sensitive info event access(read: administer) AccessControlExtensionChanged = 1 { |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 219 | nullable node_id adminNodeID = 1; |
Andrei Litvin | 47836d2 | 2023-10-12 18:08:11 -0400 | [diff] [blame] | 220 | nullable int16u adminPasscodeID = 2; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 221 | ChangeTypeEnum changeType = 3; |
Boris Zbarsky | 28cb6cc | 2023-01-04 04:46:21 -0500 | [diff] [blame] | 222 | nullable AccessControlExtensionStruct latestValue = 4; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 223 | fabric_idx fabricIndex = 254; |
| 224 | } |
| 225 | |
Boris Zbarsky | 28cb6cc | 2023-01-04 04:46:21 -0500 | [diff] [blame] | 226 | attribute access(read: administer, write: administer) AccessControlEntryStruct acl[] = 0; |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 227 | attribute access(read: administer, write: administer) optional AccessControlExtensionStruct extension[] = 1; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 228 | readonly attribute int16u subjectsPerAccessControlEntry = 2; |
| 229 | readonly attribute int16u targetsPerAccessControlEntry = 3; |
| 230 | readonly attribute int16u accessControlEntriesPerFabric = 4; |
Andrei Litvin | c6ae82c | 2023-02-10 15:31:59 -0500 | [diff] [blame] | 231 | readonly attribute command_id generatedCommandList[] = 65528; |
| 232 | readonly attribute command_id acceptedCommandList[] = 65529; |
| 233 | readonly attribute event_id eventList[] = 65530; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 234 | readonly attribute attrib_id attributeList[] = 65531; |
| 235 | readonly attribute bitmap32 featureMap = 65532; |
| 236 | readonly attribute int16u clusterRevision = 65533; |
| 237 | } |
| 238 | |
Andrei Litvin | 21c43e2 | 2023-04-04 18:50:26 -0400 | [diff] [blame] | 239 | /** This cluster provides attributes and events for determining basic information about Nodes, which supports both |
| 240 | Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, |
| 241 | which apply to the whole Node. Also allows setting user device information such as location. */ |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 242 | cluster BasicInformation = 40 { |
Andrei Litvin | 90d60f0 | 2023-11-23 16:51:51 -0500 | [diff] [blame] | 243 | revision 3; |
| 244 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 245 | enum ColorEnum : enum8 { |
Boris Zbarsky | ab59adc | 2023-05-02 10:45:44 -0400 | [diff] [blame] | 246 | kBlack = 0; |
| 247 | kNavy = 1; |
| 248 | kGreen = 2; |
| 249 | kTeal = 3; |
| 250 | kMaroon = 4; |
| 251 | kPurple = 5; |
| 252 | kOlive = 6; |
| 253 | kGray = 7; |
| 254 | kBlue = 8; |
| 255 | kLime = 9; |
| 256 | kAqua = 10; |
| 257 | kRed = 11; |
| 258 | kFuchsia = 12; |
| 259 | kYellow = 13; |
| 260 | kWhite = 14; |
| 261 | kNickel = 15; |
| 262 | kChrome = 16; |
| 263 | kBrass = 17; |
| 264 | kCopper = 18; |
| 265 | kSilver = 19; |
| 266 | kGold = 20; |
| 267 | } |
| 268 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 269 | enum ProductFinishEnum : enum8 { |
Boris Zbarsky | ab59adc | 2023-05-02 10:45:44 -0400 | [diff] [blame] | 270 | kOther = 0; |
| 271 | kMatte = 1; |
| 272 | kSatin = 2; |
| 273 | kPolished = 3; |
| 274 | kRugged = 4; |
| 275 | kFabric = 5; |
| 276 | } |
| 277 | |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 278 | struct CapabilityMinimaStruct { |
| 279 | int16u caseSessionsPerFabric = 0; |
| 280 | int16u subscriptionsPerFabric = 1; |
| 281 | } |
| 282 | |
Boris Zbarsky | ab59adc | 2023-05-02 10:45:44 -0400 | [diff] [blame] | 283 | struct ProductAppearanceStruct { |
| 284 | ProductFinishEnum finish = 0; |
| 285 | nullable ColorEnum primaryColor = 1; |
| 286 | } |
| 287 | |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 288 | critical event StartUp = 0 { |
Andrei Litvin | 47836d2 | 2023-10-12 18:08:11 -0400 | [diff] [blame] | 289 | int32u softwareVersion = 0; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 290 | } |
| 291 | |
| 292 | critical event ShutDown = 1 { |
| 293 | } |
| 294 | |
| 295 | info event Leave = 2 { |
| 296 | fabric_idx fabricIndex = 0; |
| 297 | } |
| 298 | |
| 299 | info event ReachableChanged = 3 { |
| 300 | boolean reachableNewValue = 0; |
| 301 | } |
| 302 | |
| 303 | readonly attribute int16u dataModelRevision = 0; |
| 304 | readonly attribute char_string<32> vendorName = 1; |
| 305 | readonly attribute vendor_id vendorID = 2; |
| 306 | readonly attribute char_string<32> productName = 3; |
| 307 | readonly attribute int16u productID = 4; |
| 308 | attribute access(write: manage) char_string<32> nodeLabel = 5; |
| 309 | attribute access(write: administer) char_string<2> location = 6; |
| 310 | readonly attribute int16u hardwareVersion = 7; |
| 311 | readonly attribute char_string<64> hardwareVersionString = 8; |
| 312 | readonly attribute int32u softwareVersion = 9; |
| 313 | readonly attribute char_string<64> softwareVersionString = 10; |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 314 | readonly attribute optional char_string<16> manufacturingDate = 11; |
| 315 | readonly attribute optional char_string<32> partNumber = 12; |
| 316 | readonly attribute optional long_char_string<256> productURL = 13; |
| 317 | readonly attribute optional char_string<64> productLabel = 14; |
| 318 | readonly attribute optional char_string<32> serialNumber = 15; |
| 319 | attribute access(write: manage) optional boolean localConfigDisabled = 16; |
| 320 | readonly attribute optional boolean reachable = 17; |
| 321 | readonly attribute optional char_string<32> uniqueID = 18; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 322 | readonly attribute CapabilityMinimaStruct capabilityMinima = 19; |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 323 | readonly attribute optional ProductAppearanceStruct productAppearance = 20; |
Terence Hampson | 9969d44 | 2023-11-16 11:30:48 -0500 | [diff] [blame] | 324 | readonly attribute int32u specificationVersion = 21; |
| 325 | readonly attribute int16u maxPathsPerInvoke = 22; |
Andrei Litvin | c6ae82c | 2023-02-10 15:31:59 -0500 | [diff] [blame] | 326 | readonly attribute command_id generatedCommandList[] = 65528; |
| 327 | readonly attribute command_id acceptedCommandList[] = 65529; |
| 328 | readonly attribute event_id eventList[] = 65530; |
| 329 | readonly attribute attrib_id attributeList[] = 65531; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 330 | readonly attribute bitmap32 featureMap = 65532; |
| 331 | readonly attribute int16u clusterRevision = 65533; |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 332 | |
| 333 | command MfgSpecificPing(): DefaultSuccess = 0; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 334 | } |
| 335 | |
Andrei Litvin | 21c43e2 | 2023-04-04 18:50:26 -0400 | [diff] [blame] | 336 | /** Provides an interface for providing OTA software updates */ |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 337 | cluster OtaSoftwareUpdateProvider = 41 { |
Andrei Litvin | 90d60f0 | 2023-11-23 16:51:51 -0500 | [diff] [blame] | 338 | revision 1; // NOTE: Default/not specifically set |
| 339 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 340 | enum ApplyUpdateActionEnum : enum8 { |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 341 | kProceed = 0; |
| 342 | kAwaitNextAction = 1; |
| 343 | kDiscontinue = 2; |
| 344 | } |
| 345 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 346 | enum DownloadProtocolEnum : enum8 { |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 347 | kBDXSynchronous = 0; |
| 348 | kBDXAsynchronous = 1; |
Andrei Litvin | 413a900 | 2023-06-28 13:02:18 -0400 | [diff] [blame] | 349 | kHTTPS = 2; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 350 | kVendorSpecific = 3; |
| 351 | } |
| 352 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 353 | enum StatusEnum : enum8 { |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 354 | kUpdateAvailable = 0; |
| 355 | kBusy = 1; |
| 356 | kNotAvailable = 2; |
| 357 | kDownloadProtocolNotSupported = 3; |
| 358 | } |
| 359 | |
Andrei Litvin | c6ae82c | 2023-02-10 15:31:59 -0500 | [diff] [blame] | 360 | readonly attribute command_id generatedCommandList[] = 65528; |
| 361 | readonly attribute command_id acceptedCommandList[] = 65529; |
| 362 | readonly attribute event_id eventList[] = 65530; |
| 363 | readonly attribute attrib_id attributeList[] = 65531; |
| 364 | readonly attribute bitmap32 featureMap = 65532; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 365 | readonly attribute int16u clusterRevision = 65533; |
| 366 | |
| 367 | request struct QueryImageRequest { |
Boris Zbarsky | 458bbbf | 2023-01-03 13:11:18 -0500 | [diff] [blame] | 368 | vendor_id vendorID = 0; |
Andrei Litvin | 47836d2 | 2023-10-12 18:08:11 -0400 | [diff] [blame] | 369 | int16u productID = 1; |
| 370 | int32u softwareVersion = 2; |
Boris Zbarsky | 71317fa | 2023-10-11 15:56:01 -0400 | [diff] [blame] | 371 | DownloadProtocolEnum protocolsSupported[] = 3; |
Andrei Litvin | 47836d2 | 2023-10-12 18:08:11 -0400 | [diff] [blame] | 372 | optional int16u hardwareVersion = 4; |
| 373 | optional char_string<2> location = 5; |
| 374 | optional boolean requestorCanConsent = 6; |
| 375 | optional octet_string<512> metadataForProvider = 7; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 376 | } |
| 377 | |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 378 | response struct QueryImageResponse = 1 { |
Boris Zbarsky | 71317fa | 2023-10-11 15:56:01 -0400 | [diff] [blame] | 379 | StatusEnum status = 0; |
Andrei Litvin | 47836d2 | 2023-10-12 18:08:11 -0400 | [diff] [blame] | 380 | optional int32u delayedActionTime = 1; |
| 381 | optional char_string<256> imageURI = 2; |
| 382 | optional int32u softwareVersion = 3; |
| 383 | optional char_string<64> softwareVersionString = 4; |
| 384 | optional octet_string<32> updateToken = 5; |
| 385 | optional boolean userConsentNeeded = 6; |
| 386 | optional octet_string<512> metadataForRequestor = 7; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 387 | } |
| 388 | |
Andrei Litvin | 040c65d | 2023-03-28 16:23:26 -0400 | [diff] [blame] | 389 | request struct ApplyUpdateRequestRequest { |
Andrei Litvin | 47836d2 | 2023-10-12 18:08:11 -0400 | [diff] [blame] | 390 | octet_string<32> updateToken = 0; |
| 391 | int32u newVersion = 1; |
Andrei Litvin | 040c65d | 2023-03-28 16:23:26 -0400 | [diff] [blame] | 392 | } |
| 393 | |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 394 | response struct ApplyUpdateResponse = 3 { |
Boris Zbarsky | 71317fa | 2023-10-11 15:56:01 -0400 | [diff] [blame] | 395 | ApplyUpdateActionEnum action = 0; |
Andrei Litvin | 47836d2 | 2023-10-12 18:08:11 -0400 | [diff] [blame] | 396 | int32u delayedActionTime = 1; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 397 | } |
| 398 | |
Andrei Litvin | 040c65d | 2023-03-28 16:23:26 -0400 | [diff] [blame] | 399 | request struct NotifyUpdateAppliedRequest { |
Andrei Litvin | 47836d2 | 2023-10-12 18:08:11 -0400 | [diff] [blame] | 400 | octet_string<32> updateToken = 0; |
| 401 | int32u softwareVersion = 1; |
Andrei Litvin | 040c65d | 2023-03-28 16:23:26 -0400 | [diff] [blame] | 402 | } |
| 403 | |
Andrei Litvin | 21c43e2 | 2023-04-04 18:50:26 -0400 | [diff] [blame] | 404 | /** Determine availability of a new Software Image */ |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 405 | command QueryImage(QueryImageRequest): QueryImageResponse = 0; |
Andrei Litvin | 21c43e2 | 2023-04-04 18:50:26 -0400 | [diff] [blame] | 406 | /** Determine next action to take for a downloaded Software Image */ |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 407 | command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2; |
Andrei Litvin | 21c43e2 | 2023-04-04 18:50:26 -0400 | [diff] [blame] | 408 | /** Notify OTA Provider that an update was applied */ |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 409 | command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; |
| 410 | } |
| 411 | |
Andrei Litvin | 21c43e2 | 2023-04-04 18:50:26 -0400 | [diff] [blame] | 412 | /** Provides an interface for downloading and applying OTA software updates */ |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 413 | cluster OtaSoftwareUpdateRequestor = 42 { |
Andrei Litvin | 90d60f0 | 2023-11-23 16:51:51 -0500 | [diff] [blame] | 414 | revision 1; // NOTE: Default/not specifically set |
| 415 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 416 | enum AnnouncementReasonEnum : enum8 { |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 417 | kSimpleAnnouncement = 0; |
| 418 | kUpdateAvailable = 1; |
| 419 | kUrgentUpdateAvailable = 2; |
| 420 | } |
| 421 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 422 | enum ChangeReasonEnum : enum8 { |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 423 | kUnknown = 0; |
| 424 | kSuccess = 1; |
| 425 | kFailure = 2; |
| 426 | kTimeOut = 3; |
| 427 | kDelayByProvider = 4; |
| 428 | } |
| 429 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 430 | enum UpdateStateEnum : enum8 { |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 431 | kUnknown = 0; |
| 432 | kIdle = 1; |
| 433 | kQuerying = 2; |
| 434 | kDelayedOnQuery = 3; |
| 435 | kDownloading = 4; |
| 436 | kApplying = 5; |
| 437 | kDelayedOnApply = 6; |
| 438 | kRollingBack = 7; |
| 439 | kDelayedOnUserConsent = 8; |
| 440 | } |
| 441 | |
Andrei Litvin | d38820d | 2022-10-04 09:25:26 -0400 | [diff] [blame] | 442 | fabric_scoped struct ProviderLocation { |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 443 | node_id providerNodeID = 1; |
| 444 | endpoint_no endpoint = 2; |
| 445 | fabric_idx fabricIndex = 254; |
| 446 | } |
| 447 | |
| 448 | info event StateTransition = 0 { |
Boris Zbarsky | 71317fa | 2023-10-11 15:56:01 -0400 | [diff] [blame] | 449 | UpdateStateEnum previousState = 0; |
| 450 | UpdateStateEnum newState = 1; |
| 451 | ChangeReasonEnum reason = 2; |
Andrei Litvin | 47836d2 | 2023-10-12 18:08:11 -0400 | [diff] [blame] | 452 | nullable int32u targetSoftwareVersion = 3; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 453 | } |
| 454 | |
| 455 | critical event VersionApplied = 1 { |
Andrei Litvin | 47836d2 | 2023-10-12 18:08:11 -0400 | [diff] [blame] | 456 | int32u softwareVersion = 0; |
| 457 | int16u productID = 1; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 458 | } |
| 459 | |
| 460 | info event DownloadError = 2 { |
Andrei Litvin | 47836d2 | 2023-10-12 18:08:11 -0400 | [diff] [blame] | 461 | int32u softwareVersion = 0; |
| 462 | int64u bytesDownloaded = 1; |
| 463 | nullable int8u progressPercent = 2; |
| 464 | nullable int64s platformCode = 3; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 465 | } |
| 466 | |
Boris Zbarsky | 458bbbf | 2023-01-03 13:11:18 -0500 | [diff] [blame] | 467 | attribute ProviderLocation defaultOTAProviders[] = 0; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 468 | readonly attribute boolean updatePossible = 1; |
Boris Zbarsky | 71317fa | 2023-10-11 15:56:01 -0400 | [diff] [blame] | 469 | readonly attribute UpdateStateEnum updateState = 2; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 470 | readonly attribute nullable int8u updateStateProgress = 3; |
Andrei Litvin | c6ae82c | 2023-02-10 15:31:59 -0500 | [diff] [blame] | 471 | readonly attribute command_id generatedCommandList[] = 65528; |
| 472 | readonly attribute command_id acceptedCommandList[] = 65529; |
| 473 | readonly attribute event_id eventList[] = 65530; |
| 474 | readonly attribute attrib_id attributeList[] = 65531; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 475 | readonly attribute bitmap32 featureMap = 65532; |
| 476 | readonly attribute int16u clusterRevision = 65533; |
| 477 | |
Boris Zbarsky | 458bbbf | 2023-01-03 13:11:18 -0500 | [diff] [blame] | 478 | request struct AnnounceOTAProviderRequest { |
| 479 | node_id providerNodeID = 0; |
| 480 | vendor_id vendorID = 1; |
Boris Zbarsky | 71317fa | 2023-10-11 15:56:01 -0400 | [diff] [blame] | 481 | AnnouncementReasonEnum announcementReason = 2; |
Andrei Litvin | 47836d2 | 2023-10-12 18:08:11 -0400 | [diff] [blame] | 482 | optional octet_string<512> metadataForNode = 3; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 483 | endpoint_no endpoint = 4; |
| 484 | } |
| 485 | |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 486 | /** Announce the presence of an OTA Provider */ |
Boris Zbarsky | 458bbbf | 2023-01-03 13:11:18 -0500 | [diff] [blame] | 487 | command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 488 | } |
| 489 | |
Andrei Litvin | 21c43e2 | 2023-04-04 18:50:26 -0400 | [diff] [blame] | 490 | /** Nodes should be expected to be deployed to any and all regions of the world. These global regions |
| 491 | may have differing common languages, units of measurements, and numerical formatting |
| 492 | standards. As such, Nodes that visually or audibly convey information need a mechanism by which |
| 493 | they can be configured to use a user’s preferred language, units, etc */ |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 494 | cluster LocalizationConfiguration = 43 { |
Andrei Litvin | 90d60f0 | 2023-11-23 16:51:51 -0500 | [diff] [blame] | 495 | revision 1; // NOTE: Default/not specifically set |
| 496 | |
Andrei Litvin | dd920f2 | 2023-10-30 10:14:57 -0400 | [diff] [blame] | 497 | attribute access(write: manage) char_string<35> activeLocale = 0; |
Andrei Litvin | 47836d2 | 2023-10-12 18:08:11 -0400 | [diff] [blame] | 498 | readonly attribute char_string supportedLocales[] = 1; |
Andrei Litvin | c6ae82c | 2023-02-10 15:31:59 -0500 | [diff] [blame] | 499 | readonly attribute command_id generatedCommandList[] = 65528; |
| 500 | readonly attribute command_id acceptedCommandList[] = 65529; |
| 501 | readonly attribute event_id eventList[] = 65530; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 502 | readonly attribute attrib_id attributeList[] = 65531; |
| 503 | readonly attribute bitmap32 featureMap = 65532; |
| 504 | readonly attribute int16u clusterRevision = 65533; |
| 505 | } |
| 506 | |
Andrei Litvin | 21c43e2 | 2023-04-04 18:50:26 -0400 | [diff] [blame] | 507 | /** Nodes should be expected to be deployed to any and all regions of the world. These global regions |
| 508 | may have differing preferences for how dates and times are conveyed. As such, Nodes that visually |
| 509 | or audibly convey time information need a mechanism by which they can be configured to use a |
| 510 | user’s preferred format. */ |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 511 | cluster TimeFormatLocalization = 44 { |
Andrei Litvin | 90d60f0 | 2023-11-23 16:51:51 -0500 | [diff] [blame] | 512 | revision 1; // NOTE: Default/not specifically set |
| 513 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 514 | enum CalendarTypeEnum : enum8 { |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 515 | kBuddhist = 0; |
| 516 | kChinese = 1; |
| 517 | kCoptic = 2; |
| 518 | kEthiopian = 3; |
| 519 | kGregorian = 4; |
| 520 | kHebrew = 5; |
| 521 | kIndian = 6; |
| 522 | kIslamic = 7; |
| 523 | kJapanese = 8; |
| 524 | kKorean = 9; |
| 525 | kPersian = 10; |
| 526 | kTaiwanese = 11; |
| 527 | } |
| 528 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 529 | enum HourFormatEnum : enum8 { |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 530 | k12hr = 0; |
| 531 | k24hr = 1; |
| 532 | } |
| 533 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 534 | bitmap Feature : bitmap32 { |
Andrei Litvin | 98e3bc6 | 2023-08-30 14:19:04 -0400 | [diff] [blame] | 535 | kCalendarFormat = 0x1; |
| 536 | } |
| 537 | |
Andrei Litvin | 4f53c34 | 2023-11-06 17:01:02 -0500 | [diff] [blame] | 538 | attribute access(write: manage) HourFormatEnum hourFormat = 0; |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 539 | attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; |
| 540 | readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; |
Andrei Litvin | c6ae82c | 2023-02-10 15:31:59 -0500 | [diff] [blame] | 541 | readonly attribute command_id generatedCommandList[] = 65528; |
| 542 | readonly attribute command_id acceptedCommandList[] = 65529; |
| 543 | readonly attribute event_id eventList[] = 65530; |
| 544 | readonly attribute attrib_id attributeList[] = 65531; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 545 | readonly attribute bitmap32 featureMap = 65532; |
| 546 | readonly attribute int16u clusterRevision = 65533; |
| 547 | } |
| 548 | |
Andrei Litvin | 21c43e2 | 2023-04-04 18:50:26 -0400 | [diff] [blame] | 549 | /** This cluster is used to manage global aspects of the Commissioning flow. */ |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 550 | cluster GeneralCommissioning = 48 { |
Andrei Litvin | 90d60f0 | 2023-11-23 16:51:51 -0500 | [diff] [blame] | 551 | revision 1; // NOTE: Default/not specifically set |
| 552 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 553 | enum CommissioningErrorEnum : enum8 { |
Andrei Litvin | 413a900 | 2023-06-28 13:02:18 -0400 | [diff] [blame] | 554 | kOK = 0; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 555 | kValueOutsideRange = 1; |
| 556 | kInvalidAuthentication = 2; |
| 557 | kNoFailSafe = 3; |
| 558 | kBusyWithOtherAdmin = 4; |
| 559 | } |
| 560 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 561 | enum RegulatoryLocationTypeEnum : enum8 { |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 562 | kIndoor = 0; |
| 563 | kOutdoor = 1; |
| 564 | kIndoorOutdoor = 2; |
| 565 | } |
| 566 | |
| 567 | struct BasicCommissioningInfo { |
| 568 | int16u failSafeExpiryLengthSeconds = 0; |
| 569 | int16u maxCumulativeFailsafeSeconds = 1; |
| 570 | } |
| 571 | |
| 572 | attribute access(write: administer) int64u breadcrumb = 0; |
| 573 | readonly attribute BasicCommissioningInfo basicCommissioningInfo = 1; |
Boris Zbarsky | 9876878 | 2023-05-23 12:01:23 -0400 | [diff] [blame] | 574 | readonly attribute RegulatoryLocationTypeEnum regulatoryConfig = 2; |
| 575 | readonly attribute RegulatoryLocationTypeEnum locationCapability = 3; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 576 | readonly attribute boolean supportsConcurrentConnection = 4; |
Andrei Litvin | c6ae82c | 2023-02-10 15:31:59 -0500 | [diff] [blame] | 577 | readonly attribute command_id generatedCommandList[] = 65528; |
| 578 | readonly attribute command_id acceptedCommandList[] = 65529; |
| 579 | readonly attribute event_id eventList[] = 65530; |
| 580 | readonly attribute attrib_id attributeList[] = 65531; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 581 | readonly attribute bitmap32 featureMap = 65532; |
| 582 | readonly attribute int16u clusterRevision = 65533; |
| 583 | |
| 584 | request struct ArmFailSafeRequest { |
Andrei Litvin | 47836d2 | 2023-10-12 18:08:11 -0400 | [diff] [blame] | 585 | int16u expiryLengthSeconds = 0; |
| 586 | int64u breadcrumb = 1; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 587 | } |
| 588 | |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 589 | response struct ArmFailSafeResponse = 1 { |
| 590 | CommissioningErrorEnum errorCode = 0; |
| 591 | char_string<128> debugText = 1; |
| 592 | } |
| 593 | |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 594 | request struct SetRegulatoryConfigRequest { |
Boris Zbarsky | 9876878 | 2023-05-23 12:01:23 -0400 | [diff] [blame] | 595 | RegulatoryLocationTypeEnum newRegulatoryConfig = 0; |
Andrei Litvin | d47aeb4 | 2023-11-15 06:16:41 -0500 | [diff] [blame] | 596 | char_string<2> countryCode = 1; |
Andrei Litvin | 47836d2 | 2023-10-12 18:08:11 -0400 | [diff] [blame] | 597 | int64u breadcrumb = 2; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 598 | } |
| 599 | |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 600 | response struct SetRegulatoryConfigResponse = 3 { |
Boris Zbarsky | 9876878 | 2023-05-23 12:01:23 -0400 | [diff] [blame] | 601 | CommissioningErrorEnum errorCode = 0; |
Andrei Litvin | 47836d2 | 2023-10-12 18:08:11 -0400 | [diff] [blame] | 602 | char_string debugText = 1; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 603 | } |
| 604 | |
| 605 | response struct CommissioningCompleteResponse = 5 { |
Boris Zbarsky | 9876878 | 2023-05-23 12:01:23 -0400 | [diff] [blame] | 606 | CommissioningErrorEnum errorCode = 0; |
Andrei Litvin | 47836d2 | 2023-10-12 18:08:11 -0400 | [diff] [blame] | 607 | char_string debugText = 1; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 608 | } |
| 609 | |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 610 | /** Arm the persistent fail-safe timer with an expiry time of now + ExpiryLengthSeconds using device clock */ |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 611 | command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 612 | /** Set the regulatory configuration to be used during commissioning */ |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 613 | command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 614 | /** Signals the Server that the Client has successfully completed all steps of Commissioning/Recofiguration needed during fail-safe period. */ |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 615 | fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; |
| 616 | } |
| 617 | |
Andrei Litvin | 21c43e2 | 2023-04-04 18:50:26 -0400 | [diff] [blame] | 618 | /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 619 | cluster NetworkCommissioning = 49 { |
Andrei Litvin | 90d60f0 | 2023-11-23 16:51:51 -0500 | [diff] [blame] | 620 | revision 1; // NOTE: Default/not specifically set |
| 621 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 622 | enum NetworkCommissioningStatusEnum : enum8 { |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 623 | kSuccess = 0; |
| 624 | kOutOfRange = 1; |
| 625 | kBoundsExceeded = 2; |
| 626 | kNetworkIDNotFound = 3; |
| 627 | kDuplicateNetworkID = 4; |
| 628 | kNetworkNotFound = 5; |
| 629 | kRegulatoryError = 6; |
| 630 | kAuthFailure = 7; |
| 631 | kUnsupportedSecurity = 8; |
| 632 | kOtherConnectionFailure = 9; |
| 633 | kIPV6Failed = 10; |
| 634 | kIPBindFailed = 11; |
| 635 | kUnknownError = 12; |
| 636 | } |
| 637 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 638 | enum WiFiBandEnum : enum8 { |
Andrei Litvin | 413a900 | 2023-06-28 13:02:18 -0400 | [diff] [blame] | 639 | k2G4 = 0; |
| 640 | k3G65 = 1; |
| 641 | k5G = 2; |
| 642 | k6G = 3; |
| 643 | k60G = 4; |
| 644 | k1G = 5; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 645 | } |
| 646 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 647 | bitmap Feature : bitmap32 { |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 648 | kWiFiNetworkInterface = 0x1; |
| 649 | kThreadNetworkInterface = 0x2; |
| 650 | kEthernetNetworkInterface = 0x4; |
Karsten Sperling | 261b03f | 2023-11-09 06:45:38 +1300 | [diff] [blame] | 651 | kPerDeviceCredentials = 0x8; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 652 | } |
| 653 | |
Tennessee Carmel-Veilleux | 7879111 | 2023-10-24 13:39:10 -0400 | [diff] [blame] | 654 | bitmap ThreadCapabilitiesBitmap : bitmap16 { |
| 655 | kIsBorderRouterCapable = 0x1; |
| 656 | kIsRouterCapable = 0x2; |
| 657 | kIsSleepyEndDeviceCapable = 0x4; |
| 658 | kIsFullThreadDevice = 0x8; |
| 659 | kIsSynchronizedSleepyEndDeviceCapable = 0x10; |
| 660 | } |
| 661 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 662 | bitmap WiFiSecurityBitmap : bitmap8 { |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 663 | kUnencrypted = 0x1; |
Andrei Litvin | 413a900 | 2023-06-28 13:02:18 -0400 | [diff] [blame] | 664 | kWEP = 0x2; |
| 665 | kWPAPersonal = 0x4; |
| 666 | kWPA2Personal = 0x8; |
| 667 | kWPA3Personal = 0x10; |
Karsten Sperling | 261b03f | 2023-11-09 06:45:38 +1300 | [diff] [blame] | 668 | kWPA3MatterPDC = 0x20; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 669 | } |
| 670 | |
Boris Zbarsky | 0dc592e | 2023-06-01 15:25:00 -0400 | [diff] [blame] | 671 | struct NetworkInfoStruct { |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 672 | octet_string<32> networkID = 0; |
| 673 | boolean connected = 1; |
Karsten Sperling | 261b03f | 2023-11-09 06:45:38 +1300 | [diff] [blame] | 674 | optional nullable octet_string<20> networkIdentifier = 2; |
| 675 | optional nullable octet_string<20> clientIdentifier = 3; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 676 | } |
| 677 | |
Boris Zbarsky | 0dc592e | 2023-06-01 15:25:00 -0400 | [diff] [blame] | 678 | struct ThreadInterfaceScanResultStruct { |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 679 | int16u panId = 0; |
| 680 | int64u extendedPanId = 1; |
| 681 | char_string<16> networkName = 2; |
| 682 | int16u channel = 3; |
| 683 | int8u version = 4; |
| 684 | octet_string<8> extendedAddress = 5; |
| 685 | int8s rssi = 6; |
| 686 | int8u lqi = 7; |
| 687 | } |
| 688 | |
Boris Zbarsky | 0dc592e | 2023-06-01 15:25:00 -0400 | [diff] [blame] | 689 | struct WiFiInterfaceScanResultStruct { |
| 690 | WiFiSecurityBitmap security = 0; |
Bharat Raju | f25702c | 2023-04-12 11:14:12 -0400 | [diff] [blame] | 691 | octet_string<32> ssid = 1; |
| 692 | octet_string<6> bssid = 2; |
| 693 | int16u channel = 3; |
Boris Zbarsky | 0dc592e | 2023-06-01 15:25:00 -0400 | [diff] [blame] | 694 | WiFiBandEnum wiFiBand = 4; |
Bharat Raju | f25702c | 2023-04-12 11:14:12 -0400 | [diff] [blame] | 695 | int8s rssi = 5; |
| 696 | } |
| 697 | |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 698 | readonly attribute access(read: administer) int8u maxNetworks = 0; |
Boris Zbarsky | 0dc592e | 2023-06-01 15:25:00 -0400 | [diff] [blame] | 699 | readonly attribute access(read: administer) NetworkInfoStruct networks[] = 1; |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 700 | readonly attribute optional int8u scanMaxTimeSeconds = 2; |
| 701 | readonly attribute optional int8u connectMaxTimeSeconds = 3; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 702 | attribute access(write: administer) boolean interfaceEnabled = 4; |
Boris Zbarsky | 0dc592e | 2023-06-01 15:25:00 -0400 | [diff] [blame] | 703 | readonly attribute access(read: administer) nullable NetworkCommissioningStatusEnum lastNetworkingStatus = 5; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 704 | readonly attribute access(read: administer) nullable octet_string<32> lastNetworkID = 6; |
| 705 | readonly attribute access(read: administer) nullable int32s lastConnectErrorValue = 7; |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 706 | readonly attribute optional WiFiBandEnum supportedWiFiBands[] = 8; |
| 707 | readonly attribute optional ThreadCapabilitiesBitmap supportedThreadFeatures = 9; |
| 708 | readonly attribute optional int16u threadVersion = 10; |
Andrei Litvin | c6ae82c | 2023-02-10 15:31:59 -0500 | [diff] [blame] | 709 | readonly attribute command_id generatedCommandList[] = 65528; |
| 710 | readonly attribute command_id acceptedCommandList[] = 65529; |
| 711 | readonly attribute event_id eventList[] = 65530; |
| 712 | readonly attribute attrib_id attributeList[] = 65531; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 713 | readonly attribute bitmap32 featureMap = 65532; |
| 714 | readonly attribute int16u clusterRevision = 65533; |
| 715 | |
| 716 | request struct ScanNetworksRequest { |
Andrei Litvin | 47836d2 | 2023-10-12 18:08:11 -0400 | [diff] [blame] | 717 | optional nullable octet_string<32> ssid = 0; |
| 718 | optional int64u breadcrumb = 1; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 719 | } |
| 720 | |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 721 | response struct ScanNetworksResponse = 1 { |
| 722 | NetworkCommissioningStatusEnum networkingStatus = 0; |
| 723 | optional char_string debugText = 1; |
| 724 | optional WiFiInterfaceScanResultStruct wiFiScanResults[] = 2; |
| 725 | optional ThreadInterfaceScanResultStruct threadScanResults[] = 3; |
| 726 | } |
| 727 | |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 728 | request struct AddOrUpdateWiFiNetworkRequest { |
Andrei Litvin | 47836d2 | 2023-10-12 18:08:11 -0400 | [diff] [blame] | 729 | octet_string<32> ssid = 0; |
| 730 | octet_string<64> credentials = 1; |
| 731 | optional int64u breadcrumb = 2; |
Karsten Sperling | 261b03f | 2023-11-09 06:45:38 +1300 | [diff] [blame] | 732 | optional octet_string<140> networkIdentity = 3; |
| 733 | optional octet_string<20> clientIdentifier = 4; |
| 734 | optional octet_string<32> possessionNonce = 5; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 735 | } |
| 736 | |
| 737 | request struct AddOrUpdateThreadNetworkRequest { |
Andrei Litvin | 47836d2 | 2023-10-12 18:08:11 -0400 | [diff] [blame] | 738 | octet_string<254> operationalDataset = 0; |
| 739 | optional int64u breadcrumb = 1; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 740 | } |
| 741 | |
| 742 | request struct RemoveNetworkRequest { |
Andrei Litvin | 47836d2 | 2023-10-12 18:08:11 -0400 | [diff] [blame] | 743 | octet_string<32> networkID = 0; |
| 744 | optional int64u breadcrumb = 1; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 745 | } |
| 746 | |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 747 | response struct NetworkConfigResponse = 5 { |
Boris Zbarsky | 0dc592e | 2023-06-01 15:25:00 -0400 | [diff] [blame] | 748 | NetworkCommissioningStatusEnum networkingStatus = 0; |
Andrei Litvin | 47836d2 | 2023-10-12 18:08:11 -0400 | [diff] [blame] | 749 | optional char_string<512> debugText = 1; |
| 750 | optional int8u networkIndex = 2; |
Karsten Sperling | 261b03f | 2023-11-09 06:45:38 +1300 | [diff] [blame] | 751 | optional octet_string<140> clientIdentity = 3; |
| 752 | optional octet_string<64> possessionSignature = 4; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 753 | } |
| 754 | |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 755 | request struct ConnectNetworkRequest { |
| 756 | octet_string<32> networkID = 0; |
| 757 | optional int64u breadcrumb = 1; |
| 758 | } |
| 759 | |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 760 | response struct ConnectNetworkResponse = 7 { |
Boris Zbarsky | 0dc592e | 2023-06-01 15:25:00 -0400 | [diff] [blame] | 761 | NetworkCommissioningStatusEnum networkingStatus = 0; |
Andrei Litvin | 47836d2 | 2023-10-12 18:08:11 -0400 | [diff] [blame] | 762 | optional char_string debugText = 1; |
| 763 | nullable int32s errorValue = 2; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 764 | } |
| 765 | |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 766 | request struct ReorderNetworkRequest { |
| 767 | octet_string<32> networkID = 0; |
| 768 | int8u networkIndex = 1; |
| 769 | optional int64u breadcrumb = 2; |
| 770 | } |
| 771 | |
| 772 | request struct QueryIdentityRequest { |
| 773 | OCTET_STRING<20> keyIdentifier = 0; |
| 774 | optional OCTET_STRING<32> possessionNonce = 1; |
| 775 | } |
| 776 | |
| 777 | response struct QueryIdentityResponse = 10 { |
| 778 | OCTET_STRING<140> identity = 0; |
| 779 | optional OCTET_STRING<64> possessionSignature = 1; |
| 780 | } |
| 781 | |
| 782 | /** Detemine the set of networks the device sees as available. */ |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 783 | command access(invoke: administer) ScanNetworks(ScanNetworksRequest): ScanNetworksResponse = 0; |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 784 | /** Add or update the credentials for a given Wi-Fi network. */ |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 785 | command access(invoke: administer) AddOrUpdateWiFiNetwork(AddOrUpdateWiFiNetworkRequest): NetworkConfigResponse = 2; |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 786 | /** Add or update the credentials for a given Thread network. */ |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 787 | command access(invoke: administer) AddOrUpdateThreadNetwork(AddOrUpdateThreadNetworkRequest): NetworkConfigResponse = 3; |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 788 | /** Remove the definition of a given network (including its credentials). */ |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 789 | command access(invoke: administer) RemoveNetwork(RemoveNetworkRequest): NetworkConfigResponse = 4; |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 790 | /** Connect to the specified network, using previously-defined credentials. */ |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 791 | command access(invoke: administer) ConnectNetwork(ConnectNetworkRequest): ConnectNetworkResponse = 6; |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 792 | /** Modify the order in which networks will be presented in the Networks attribute. */ |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 793 | command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 794 | /** Retrieve details about and optionally proof of possession of a network client identity. */ |
| 795 | command access(invoke: administer) QueryIdentity(QueryIdentityRequest): QueryIdentityResponse = 9; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 796 | } |
| 797 | |
Andrei Litvin | 21c43e2 | 2023-04-04 18:50:26 -0400 | [diff] [blame] | 798 | /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 799 | cluster DiagnosticLogs = 50 { |
Andrei Litvin | 90d60f0 | 2023-11-23 16:51:51 -0500 | [diff] [blame] | 800 | revision 1; // NOTE: Default/not specifically set |
| 801 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 802 | enum IntentEnum : enum8 { |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 803 | kEndUserSupport = 0; |
| 804 | kNetworkDiag = 1; |
| 805 | kCrashLogs = 2; |
| 806 | } |
| 807 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 808 | enum StatusEnum : enum8 { |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 809 | kSuccess = 0; |
| 810 | kExhausted = 1; |
| 811 | kNoLogs = 2; |
| 812 | kBusy = 3; |
| 813 | kDenied = 4; |
| 814 | } |
| 815 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 816 | enum TransferProtocolEnum : enum8 { |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 817 | kResponsePayload = 0; |
Andrei Litvin | 413a900 | 2023-06-28 13:02:18 -0400 | [diff] [blame] | 818 | kBDX = 1; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 819 | } |
| 820 | |
Andrei Litvin | c6ae82c | 2023-02-10 15:31:59 -0500 | [diff] [blame] | 821 | readonly attribute command_id generatedCommandList[] = 65528; |
| 822 | readonly attribute command_id acceptedCommandList[] = 65529; |
| 823 | readonly attribute event_id eventList[] = 65530; |
| 824 | readonly attribute attrib_id attributeList[] = 65531; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 825 | readonly attribute bitmap32 featureMap = 65532; |
| 826 | readonly attribute int16u clusterRevision = 65533; |
| 827 | |
| 828 | request struct RetrieveLogsRequestRequest { |
Boris Zbarsky | 60200ca | 2023-02-15 09:38:28 -0500 | [diff] [blame] | 829 | IntentEnum intent = 0; |
| 830 | TransferProtocolEnum requestedProtocol = 1; |
Andrei Litvin | 47836d2 | 2023-10-12 18:08:11 -0400 | [diff] [blame] | 831 | optional char_string<32> transferFileDesignator = 2; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 832 | } |
| 833 | |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 834 | response struct RetrieveLogsResponse = 1 { |
| 835 | StatusEnum status = 0; |
| 836 | LONG_OCTET_STRING logContent = 1; |
| 837 | optional epoch_us UTCTimeStamp = 2; |
| 838 | optional systime_us timeSinceBoot = 3; |
| 839 | } |
| 840 | |
| 841 | /** Retrieving diagnostic logs from a Node */ |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 842 | command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; |
| 843 | } |
| 844 | |
Andrei Litvin | 21c43e2 | 2023-04-04 18:50:26 -0400 | [diff] [blame] | 845 | /** 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 Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 846 | cluster GeneralDiagnostics = 51 { |
Andrei Litvin | 90d60f0 | 2023-11-23 16:51:51 -0500 | [diff] [blame] | 847 | revision 1; // NOTE: Default/not specifically set |
| 848 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 849 | enum BootReasonEnum : enum8 { |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 850 | kUnspecified = 0; |
| 851 | kPowerOnReboot = 1; |
| 852 | kBrownOutReset = 2; |
| 853 | kSoftwareWatchdogReset = 3; |
| 854 | kHardwareWatchdogReset = 4; |
| 855 | kSoftwareUpdateCompleted = 5; |
| 856 | kSoftwareReset = 6; |
| 857 | } |
| 858 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 859 | enum HardwareFaultEnum : enum8 { |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 860 | kUnspecified = 0; |
| 861 | kRadio = 1; |
| 862 | kSensor = 2; |
| 863 | kResettableOverTemp = 3; |
| 864 | kNonResettableOverTemp = 4; |
| 865 | kPowerSource = 5; |
| 866 | kVisualDisplayFault = 6; |
| 867 | kAudioOutputFault = 7; |
| 868 | kUserInterfaceFault = 8; |
| 869 | kNonVolatileMemoryError = 9; |
| 870 | kTamperDetected = 10; |
| 871 | } |
| 872 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 873 | enum InterfaceTypeEnum : enum8 { |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 874 | kUnspecified = 0; |
| 875 | kWiFi = 1; |
| 876 | kEthernet = 2; |
| 877 | kCellular = 3; |
| 878 | kThread = 4; |
| 879 | } |
| 880 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 881 | enum NetworkFaultEnum : enum8 { |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 882 | kUnspecified = 0; |
| 883 | kHardwareFailure = 1; |
| 884 | kNetworkJammed = 2; |
| 885 | kConnectionFailed = 3; |
| 886 | } |
| 887 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 888 | enum RadioFaultEnum : enum8 { |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 889 | kUnspecified = 0; |
| 890 | kWiFiFault = 1; |
| 891 | kCellularFault = 2; |
| 892 | kThreadFault = 3; |
| 893 | kNFCFault = 4; |
| 894 | kBLEFault = 5; |
| 895 | kEthernetFault = 6; |
| 896 | } |
| 897 | |
Boris Zbarsky | dd6ae93 | 2023-01-09 12:08:17 -0500 | [diff] [blame] | 898 | struct NetworkInterface { |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 899 | char_string<32> name = 0; |
| 900 | boolean isOperational = 1; |
| 901 | nullable boolean offPremiseServicesReachableIPv4 = 2; |
| 902 | nullable boolean offPremiseServicesReachableIPv6 = 3; |
| 903 | octet_string<8> hardwareAddress = 4; |
| 904 | octet_string IPv4Addresses[] = 5; |
| 905 | octet_string IPv6Addresses[] = 6; |
Boris Zbarsky | 1b226d4 | 2023-01-18 23:43:09 -0500 | [diff] [blame] | 906 | InterfaceTypeEnum type = 7; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 907 | } |
| 908 | |
| 909 | critical event HardwareFaultChange = 0 { |
Boris Zbarsky | 1b226d4 | 2023-01-18 23:43:09 -0500 | [diff] [blame] | 910 | HardwareFaultEnum current[] = 0; |
| 911 | HardwareFaultEnum previous[] = 1; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 912 | } |
| 913 | |
| 914 | critical event RadioFaultChange = 1 { |
Boris Zbarsky | 1b226d4 | 2023-01-18 23:43:09 -0500 | [diff] [blame] | 915 | RadioFaultEnum current[] = 0; |
| 916 | RadioFaultEnum previous[] = 1; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 917 | } |
| 918 | |
| 919 | critical event NetworkFaultChange = 2 { |
Boris Zbarsky | 1b226d4 | 2023-01-18 23:43:09 -0500 | [diff] [blame] | 920 | NetworkFaultEnum current[] = 0; |
| 921 | NetworkFaultEnum previous[] = 1; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 922 | } |
| 923 | |
| 924 | critical event BootReason = 3 { |
Boris Zbarsky | dd6ae93 | 2023-01-09 12:08:17 -0500 | [diff] [blame] | 925 | BootReasonEnum bootReason = 0; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 926 | } |
| 927 | |
Boris Zbarsky | dd6ae93 | 2023-01-09 12:08:17 -0500 | [diff] [blame] | 928 | readonly attribute NetworkInterface networkInterfaces[] = 0; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 929 | readonly attribute int16u rebootCount = 1; |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 930 | readonly attribute optional int64u upTime = 2; |
| 931 | readonly attribute optional int32u totalOperationalHours = 3; |
| 932 | readonly attribute optional BootReasonEnum bootReason = 4; |
| 933 | readonly attribute optional HardwareFaultEnum activeHardwareFaults[] = 5; |
| 934 | readonly attribute optional RadioFaultEnum activeRadioFaults[] = 6; |
| 935 | readonly attribute optional NetworkFaultEnum activeNetworkFaults[] = 7; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 936 | readonly attribute boolean testEventTriggersEnabled = 8; |
Andrei Litvin | c6ae82c | 2023-02-10 15:31:59 -0500 | [diff] [blame] | 937 | readonly attribute command_id generatedCommandList[] = 65528; |
| 938 | readonly attribute command_id acceptedCommandList[] = 65529; |
| 939 | readonly attribute event_id eventList[] = 65530; |
| 940 | readonly attribute attrib_id attributeList[] = 65531; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 941 | readonly attribute bitmap32 featureMap = 65532; |
| 942 | readonly attribute int16u clusterRevision = 65533; |
| 943 | |
| 944 | request struct TestEventTriggerRequest { |
Andrei Litvin | 47836d2 | 2023-10-12 18:08:11 -0400 | [diff] [blame] | 945 | octet_string<16> enableKey = 0; |
| 946 | int64u eventTrigger = 1; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 947 | } |
| 948 | |
Tennessee Carmel-Veilleux | d165f62 | 2023-10-31 10:50:04 -0400 | [diff] [blame] | 949 | response struct TimeSnapshotResponse = 2 { |
| 950 | systime_us systemTimeUs = 0; |
| 951 | nullable epoch_us UTCTimeUs = 1; |
| 952 | } |
| 953 | |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 954 | /** Provide a means for certification tests to trigger some test-plan-specific events */ |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 955 | command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 956 | /** Take a snapshot of system time and epoch time. */ |
Tennessee Carmel-Veilleux | d165f62 | 2023-10-31 10:50:04 -0400 | [diff] [blame] | 957 | command TimeSnapshot(): TimeSnapshotResponse = 1; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 958 | } |
| 959 | |
Andrei Litvin | 21c43e2 | 2023-04-04 18:50:26 -0400 | [diff] [blame] | 960 | /** 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 Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 961 | cluster SoftwareDiagnostics = 52 { |
Andrei Litvin | 90d60f0 | 2023-11-23 16:51:51 -0500 | [diff] [blame] | 962 | revision 1; // NOTE: Default/not specifically set |
| 963 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 964 | bitmap Feature : bitmap32 { |
Andrei Litvin | 89671e8 | 2023-10-29 21:27:57 -0400 | [diff] [blame] | 965 | kWatermarks = 0x1; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 966 | } |
| 967 | |
Boris Zbarsky | af7b393 | 2023-01-06 12:07:58 -0500 | [diff] [blame] | 968 | struct ThreadMetricsStruct { |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 969 | int64u id = 0; |
| 970 | optional char_string<8> name = 1; |
| 971 | optional int32u stackFreeCurrent = 2; |
| 972 | optional int32u stackFreeMinimum = 3; |
| 973 | optional int32u stackSize = 4; |
| 974 | } |
| 975 | |
| 976 | info event SoftwareFault = 0 { |
Andrei Litvin | 47836d2 | 2023-10-12 18:08:11 -0400 | [diff] [blame] | 977 | int64u id = 0; |
| 978 | optional char_string name = 1; |
| 979 | optional octet_string faultRecording = 2; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 980 | } |
| 981 | |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 982 | readonly attribute optional ThreadMetricsStruct threadMetrics[] = 0; |
| 983 | readonly attribute optional int64u currentHeapFree = 1; |
| 984 | readonly attribute optional int64u currentHeapUsed = 2; |
| 985 | readonly attribute optional int64u currentHeapHighWatermark = 3; |
Andrei Litvin | c6ae82c | 2023-02-10 15:31:59 -0500 | [diff] [blame] | 986 | readonly attribute command_id generatedCommandList[] = 65528; |
| 987 | readonly attribute command_id acceptedCommandList[] = 65529; |
| 988 | readonly attribute event_id eventList[] = 65530; |
| 989 | readonly attribute attrib_id attributeList[] = 65531; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 990 | readonly attribute bitmap32 featureMap = 65532; |
| 991 | readonly attribute int16u clusterRevision = 65533; |
| 992 | |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 993 | /** Reception of this command SHALL reset the values: The StackFreeMinimum field of the ThreadMetrics attribute, CurrentHeapHighWaterMark attribute. */ |
Andrei Litvin | 89671e8 | 2023-10-29 21:27:57 -0400 | [diff] [blame] | 994 | command access(invoke: manage) ResetWatermarks(): DefaultSuccess = 0; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 995 | } |
| 996 | |
Andrei Litvin | 21c43e2 | 2023-04-04 18:50:26 -0400 | [diff] [blame] | 997 | /** Commands to trigger a Node to allow a new Administrator to commission it. */ |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 998 | cluster AdministratorCommissioning = 60 { |
Andrei Litvin | 90d60f0 | 2023-11-23 16:51:51 -0500 | [diff] [blame] | 999 | revision 1; // NOTE: Default/not specifically set |
| 1000 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 1001 | enum CommissioningWindowStatusEnum : enum8 { |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1002 | kWindowNotOpen = 0; |
| 1003 | kEnhancedWindowOpen = 1; |
| 1004 | kBasicWindowOpen = 2; |
| 1005 | } |
| 1006 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 1007 | enum StatusCode : enum8 { |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1008 | kBusy = 2; |
| 1009 | kPAKEParameterError = 3; |
| 1010 | kWindowNotOpen = 4; |
| 1011 | } |
| 1012 | |
Andrei Litvin | 1f9814e | 2023-10-26 15:35:06 -0400 | [diff] [blame] | 1013 | bitmap Feature : bitmap32 { |
| 1014 | kBasic = 0x1; |
| 1015 | } |
| 1016 | |
Boris Zbarsky | 232b5a1 | 2023-01-18 21:35:14 -0500 | [diff] [blame] | 1017 | readonly attribute CommissioningWindowStatusEnum windowStatus = 0; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1018 | readonly attribute nullable fabric_idx adminFabricIndex = 1; |
Andrei Litvin | 1f9814e | 2023-10-26 15:35:06 -0400 | [diff] [blame] | 1019 | readonly attribute nullable vendor_id adminVendorId = 2; |
Andrei Litvin | c6ae82c | 2023-02-10 15:31:59 -0500 | [diff] [blame] | 1020 | readonly attribute command_id generatedCommandList[] = 65528; |
| 1021 | readonly attribute command_id acceptedCommandList[] = 65529; |
| 1022 | readonly attribute event_id eventList[] = 65530; |
| 1023 | readonly attribute attrib_id attributeList[] = 65531; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1024 | readonly attribute bitmap32 featureMap = 65532; |
| 1025 | readonly attribute int16u clusterRevision = 65533; |
| 1026 | |
| 1027 | request struct OpenCommissioningWindowRequest { |
Andrei Litvin | 47836d2 | 2023-10-12 18:08:11 -0400 | [diff] [blame] | 1028 | int16u commissioningTimeout = 0; |
| 1029 | octet_string PAKEPasscodeVerifier = 1; |
| 1030 | int16u discriminator = 2; |
| 1031 | int32u iterations = 3; |
Andrei Litvin | 1f9814e | 2023-10-26 15:35:06 -0400 | [diff] [blame] | 1032 | octet_string<32> salt = 4; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1033 | } |
| 1034 | |
| 1035 | request struct OpenBasicCommissioningWindowRequest { |
Andrei Litvin | 47836d2 | 2023-10-12 18:08:11 -0400 | [diff] [blame] | 1036 | int16u commissioningTimeout = 0; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1037 | } |
| 1038 | |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 1039 | /** This command is used by a current Administrator to instruct a Node to go into commissioning mode using enhanced commissioning method. */ |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1040 | timed command access(invoke: administer) OpenCommissioningWindow(OpenCommissioningWindowRequest): DefaultSuccess = 0; |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 1041 | /** This command is used by a current Administrator to instruct a Node to go into commissioning mode using basic commissioning method, if the node supports it. */ |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1042 | timed command access(invoke: administer) OpenBasicCommissioningWindow(OpenBasicCommissioningWindowRequest): DefaultSuccess = 1; |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 1043 | /** This command is used by a current Administrator to instruct a Node to revoke any active Open Commissioning Window or Open Basic Commissioning Window command. */ |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1044 | timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; |
| 1045 | } |
| 1046 | |
Andrei Litvin | 21c43e2 | 2023-04-04 18:50:26 -0400 | [diff] [blame] | 1047 | /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 1048 | cluster OperationalCredentials = 62 { |
Andrei Litvin | 90d60f0 | 2023-11-23 16:51:51 -0500 | [diff] [blame] | 1049 | revision 1; // NOTE: Default/not specifically set |
| 1050 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 1051 | enum CertificateChainTypeEnum : enum8 { |
Boris Zbarsky | cccce01 | 2023-01-18 11:27:01 -0500 | [diff] [blame] | 1052 | kDACCertificate = 1; |
| 1053 | kPAICertificate = 2; |
| 1054 | } |
| 1055 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 1056 | enum NodeOperationalCertStatusEnum : enum8 { |
Andrei Litvin | 413a900 | 2023-06-28 13:02:18 -0400 | [diff] [blame] | 1057 | kOK = 0; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1058 | kInvalidPublicKey = 1; |
| 1059 | kInvalidNodeOpId = 2; |
| 1060 | kInvalidNOC = 3; |
| 1061 | kMissingCsr = 4; |
| 1062 | kTableFull = 5; |
| 1063 | kInvalidAdminSubject = 6; |
| 1064 | kFabricConflict = 9; |
| 1065 | kLabelConflict = 10; |
| 1066 | kInvalidFabricIndex = 11; |
| 1067 | } |
| 1068 | |
Boris Zbarsky | cccce01 | 2023-01-18 11:27:01 -0500 | [diff] [blame] | 1069 | fabric_scoped struct FabricDescriptorStruct { |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1070 | octet_string<65> rootPublicKey = 1; |
Boris Zbarsky | cccce01 | 2023-01-18 11:27:01 -0500 | [diff] [blame] | 1071 | vendor_id vendorID = 2; |
| 1072 | fabric_id fabricID = 3; |
| 1073 | node_id nodeID = 4; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1074 | char_string<32> label = 5; |
| 1075 | fabric_idx fabricIndex = 254; |
| 1076 | } |
| 1077 | |
Bharat Raju | f25702c | 2023-04-12 11:14:12 -0400 | [diff] [blame] | 1078 | fabric_scoped struct NOCStruct { |
| 1079 | fabric_sensitive octet_string noc = 1; |
| 1080 | nullable fabric_sensitive octet_string icac = 2; |
| 1081 | fabric_idx fabricIndex = 254; |
| 1082 | } |
| 1083 | |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1084 | readonly attribute access(read: administer) NOCStruct NOCs[] = 0; |
Boris Zbarsky | cccce01 | 2023-01-18 11:27:01 -0500 | [diff] [blame] | 1085 | readonly attribute FabricDescriptorStruct fabrics[] = 1; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1086 | readonly attribute int8u supportedFabrics = 2; |
| 1087 | readonly attribute int8u commissionedFabrics = 3; |
Andrei Litvin | 47836d2 | 2023-10-12 18:08:11 -0400 | [diff] [blame] | 1088 | readonly attribute octet_string trustedRootCertificates[] = 4; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1089 | readonly attribute int8u currentFabricIndex = 5; |
Andrei Litvin | c6ae82c | 2023-02-10 15:31:59 -0500 | [diff] [blame] | 1090 | readonly attribute command_id generatedCommandList[] = 65528; |
| 1091 | readonly attribute command_id acceptedCommandList[] = 65529; |
| 1092 | readonly attribute event_id eventList[] = 65530; |
| 1093 | readonly attribute attrib_id attributeList[] = 65531; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1094 | readonly attribute bitmap32 featureMap = 65532; |
| 1095 | readonly attribute int16u clusterRevision = 65533; |
| 1096 | |
| 1097 | request struct AttestationRequestRequest { |
Andrei Litvin | 0da67af | 2023-10-27 17:28:25 -0400 | [diff] [blame] | 1098 | octet_string<32> attestationNonce = 0; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1099 | } |
| 1100 | |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 1101 | response struct AttestationResponse = 1 { |
| 1102 | octet_string<900> attestationElements = 0; |
| 1103 | octet_string<64> attestationSignature = 1; |
| 1104 | } |
| 1105 | |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1106 | request struct CertificateChainRequestRequest { |
Boris Zbarsky | cccce01 | 2023-01-18 11:27:01 -0500 | [diff] [blame] | 1107 | CertificateChainTypeEnum certificateType = 0; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1108 | } |
| 1109 | |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 1110 | response struct CertificateChainResponse = 3 { |
| 1111 | octet_string<600> certificate = 0; |
| 1112 | } |
| 1113 | |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1114 | request struct CSRRequestRequest { |
Andrei Litvin | 0da67af | 2023-10-27 17:28:25 -0400 | [diff] [blame] | 1115 | octet_string<32> CSRNonce = 0; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1116 | optional boolean isForUpdateNOC = 1; |
| 1117 | } |
| 1118 | |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 1119 | response struct CSRResponse = 5 { |
| 1120 | octet_string NOCSRElements = 0; |
| 1121 | octet_string attestationSignature = 1; |
| 1122 | } |
| 1123 | |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1124 | request struct AddNOCRequest { |
Andrei Litvin | 0da67af | 2023-10-27 17:28:25 -0400 | [diff] [blame] | 1125 | octet_string<400> NOCValue = 0; |
| 1126 | optional octet_string<400> ICACValue = 1; |
| 1127 | octet_string<16> IPKValue = 2; |
Andrei Litvin | 47836d2 | 2023-10-12 18:08:11 -0400 | [diff] [blame] | 1128 | int64u caseAdminSubject = 3; |
| 1129 | vendor_id adminVendorId = 4; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1130 | } |
| 1131 | |
| 1132 | request struct UpdateNOCRequest { |
Andrei Litvin | 47836d2 | 2023-10-12 18:08:11 -0400 | [diff] [blame] | 1133 | octet_string NOCValue = 0; |
| 1134 | optional octet_string ICACValue = 1; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1135 | } |
| 1136 | |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 1137 | response struct NOCResponse = 8 { |
| 1138 | NodeOperationalCertStatusEnum statusCode = 0; |
| 1139 | optional fabric_idx fabricIndex = 1; |
| 1140 | optional char_string<128> debugText = 2; |
| 1141 | } |
| 1142 | |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1143 | request struct UpdateFabricLabelRequest { |
Andrei Litvin | 47836d2 | 2023-10-12 18:08:11 -0400 | [diff] [blame] | 1144 | char_string<32> label = 0; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1145 | } |
| 1146 | |
| 1147 | request struct RemoveFabricRequest { |
| 1148 | fabric_idx fabricIndex = 0; |
| 1149 | } |
| 1150 | |
| 1151 | request struct AddTrustedRootCertificateRequest { |
Andrei Litvin | 47836d2 | 2023-10-12 18:08:11 -0400 | [diff] [blame] | 1152 | octet_string rootCACertificate = 0; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1153 | } |
| 1154 | |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 1155 | /** Sender is requesting attestation information from the receiver. */ |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1156 | command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0; |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 1157 | /** Sender is requesting a device attestation certificate from the receiver. */ |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1158 | command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 1159 | /** Sender is requesting a certificate signing request (CSR) from the receiver. */ |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1160 | command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 1161 | /** Sender is requesting to add the new node operational certificates. */ |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1162 | command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 1163 | /** Sender is requesting to update the node operational certificates. */ |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1164 | fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 1165 | /** This command SHALL be used by an Administrative Node to set the user-visible Label field for a given Fabric, as reflected by entries in the Fabrics attribute. */ |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1166 | fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 1167 | /** This command is used by Administrative Nodes to remove a given fabric index and delete all associated fabric-scoped data. */ |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1168 | command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 1169 | /** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */ |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1170 | command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; |
| 1171 | } |
| 1172 | |
Andrei Litvin | 21c43e2 | 2023-04-04 18:50:26 -0400 | [diff] [blame] | 1173 | /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 1174 | cluster GroupKeyManagement = 63 { |
Andrei Litvin | 90d60f0 | 2023-11-23 16:51:51 -0500 | [diff] [blame] | 1175 | revision 1; // NOTE: Default/not specifically set |
| 1176 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 1177 | enum GroupKeySecurityPolicyEnum : enum8 { |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1178 | kTrustFirst = 0; |
| 1179 | kCacheAndSync = 1; |
| 1180 | } |
| 1181 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 1182 | bitmap Feature : bitmap32 { |
Tennessee Carmel-Veilleux | f71a48f | 2023-07-31 15:58:40 -0400 | [diff] [blame] | 1183 | kCacheAndSync = 0x1; |
| 1184 | } |
| 1185 | |
Andrei Litvin | d38820d | 2022-10-04 09:25:26 -0400 | [diff] [blame] | 1186 | fabric_scoped struct GroupInfoMapStruct { |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1187 | group_id groupId = 1; |
| 1188 | endpoint_no endpoints[] = 2; |
| 1189 | optional char_string<16> groupName = 3; |
| 1190 | fabric_idx fabricIndex = 254; |
| 1191 | } |
| 1192 | |
Bharat Raju | f25702c | 2023-04-12 11:14:12 -0400 | [diff] [blame] | 1193 | fabric_scoped struct GroupKeyMapStruct { |
| 1194 | group_id groupId = 1; |
| 1195 | int16u groupKeySetID = 2; |
| 1196 | fabric_idx fabricIndex = 254; |
| 1197 | } |
| 1198 | |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1199 | struct GroupKeySetStruct { |
| 1200 | int16u groupKeySetID = 0; |
Boris Zbarsky | aab0d7c | 2023-02-21 14:46:25 -0500 | [diff] [blame] | 1201 | GroupKeySecurityPolicyEnum groupKeySecurityPolicy = 1; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1202 | nullable octet_string<16> epochKey0 = 2; |
| 1203 | nullable epoch_us epochStartTime0 = 3; |
| 1204 | nullable octet_string<16> epochKey1 = 4; |
| 1205 | nullable epoch_us epochStartTime1 = 5; |
| 1206 | nullable octet_string<16> epochKey2 = 6; |
| 1207 | nullable epoch_us epochStartTime2 = 7; |
| 1208 | } |
| 1209 | |
| 1210 | attribute access(write: manage) GroupKeyMapStruct groupKeyMap[] = 0; |
| 1211 | readonly attribute GroupInfoMapStruct groupTable[] = 1; |
| 1212 | readonly attribute int16u maxGroupsPerFabric = 2; |
| 1213 | readonly attribute int16u maxGroupKeysPerFabric = 3; |
Andrei Litvin | c6ae82c | 2023-02-10 15:31:59 -0500 | [diff] [blame] | 1214 | readonly attribute command_id generatedCommandList[] = 65528; |
| 1215 | readonly attribute command_id acceptedCommandList[] = 65529; |
| 1216 | readonly attribute event_id eventList[] = 65530; |
| 1217 | readonly attribute attrib_id attributeList[] = 65531; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1218 | readonly attribute bitmap32 featureMap = 65532; |
| 1219 | readonly attribute int16u clusterRevision = 65533; |
| 1220 | |
| 1221 | request struct KeySetWriteRequest { |
| 1222 | GroupKeySetStruct groupKeySet = 0; |
| 1223 | } |
| 1224 | |
| 1225 | request struct KeySetReadRequest { |
Andrei Litvin | 47836d2 | 2023-10-12 18:08:11 -0400 | [diff] [blame] | 1226 | int16u groupKeySetID = 0; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1227 | } |
| 1228 | |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1229 | response struct KeySetReadResponse = 2 { |
| 1230 | GroupKeySetStruct groupKeySet = 0; |
| 1231 | } |
| 1232 | |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 1233 | request struct KeySetRemoveRequest { |
| 1234 | int16u groupKeySetID = 0; |
| 1235 | } |
| 1236 | |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1237 | response struct KeySetReadAllIndicesResponse = 5 { |
Andrei Litvin | 47836d2 | 2023-10-12 18:08:11 -0400 | [diff] [blame] | 1238 | int16u groupKeySetIDs[] = 0; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1239 | } |
| 1240 | |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 1241 | /** Write a new set of keys for the given key set id. */ |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1242 | fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 1243 | /** Read the keys for a given key set id. */ |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1244 | fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 1245 | /** Revoke a Root Key from a Group */ |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1246 | fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 1247 | /** Return the list of Group Key Sets associated with the accessing fabric */ |
Boris Zbarsky | 3d44787 | 2023-06-06 10:15:31 -0400 | [diff] [blame] | 1248 | fabric command access(invoke: administer) KeySetReadAllIndices(): KeySetReadAllIndicesResponse = 4; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1249 | } |
| 1250 | |
Andrei Litvin | 21c43e2 | 2023-04-04 18:50:26 -0400 | [diff] [blame] | 1251 | /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only |
| 1252 | labels. */ |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 1253 | cluster FixedLabel = 64 { |
Andrei Litvin | 90d60f0 | 2023-11-23 16:51:51 -0500 | [diff] [blame] | 1254 | revision 1; // NOTE: Default/not specifically set |
| 1255 | |
Douglas Rocha Ferraz | c08b765 | 2022-11-03 09:56:12 -0400 | [diff] [blame] | 1256 | struct LabelStruct { |
| 1257 | char_string<16> label = 0; |
| 1258 | char_string<16> value = 1; |
| 1259 | } |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1260 | |
Douglas Rocha Ferraz | c08b765 | 2022-11-03 09:56:12 -0400 | [diff] [blame] | 1261 | readonly attribute LabelStruct labelList[] = 0; |
Andrei Litvin | c6ae82c | 2023-02-10 15:31:59 -0500 | [diff] [blame] | 1262 | readonly attribute command_id generatedCommandList[] = 65528; |
| 1263 | readonly attribute command_id acceptedCommandList[] = 65529; |
| 1264 | readonly attribute event_id eventList[] = 65530; |
| 1265 | readonly attribute attrib_id attributeList[] = 65531; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1266 | readonly attribute bitmap32 featureMap = 65532; |
| 1267 | readonly attribute int16u clusterRevision = 65533; |
| 1268 | } |
| 1269 | |
Andrei Litvin | 21c43e2 | 2023-04-04 18:50:26 -0400 | [diff] [blame] | 1270 | /** An interface for controlling a fan in a heating/cooling system. */ |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 1271 | provisional cluster FanControl = 514 { |
Andrei Litvin | 90d60f0 | 2023-11-23 16:51:51 -0500 | [diff] [blame] | 1272 | revision 4; |
| 1273 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 1274 | enum AirflowDirectionEnum : enum8 { |
Matt Hazley | c79af24 | 2023-05-30 13:51:49 +0100 | [diff] [blame] | 1275 | kForward = 0; |
| 1276 | kReverse = 1; |
| 1277 | } |
| 1278 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 1279 | enum FanModeEnum : enum8 { |
Matt Hazley | 0db9abf | 2023-06-28 18:19:34 +0100 | [diff] [blame] | 1280 | kOff = 0; |
| 1281 | kLow = 1; |
| 1282 | kMedium = 2; |
| 1283 | kHigh = 3; |
| 1284 | kOn = 4; |
| 1285 | kAuto = 5; |
| 1286 | kSmart = 6; |
Matt Hazley | c79af24 | 2023-05-30 13:51:49 +0100 | [diff] [blame] | 1287 | } |
| 1288 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 1289 | enum FanModeSequenceEnum : enum8 { |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1290 | kOffLowMedHigh = 0; |
| 1291 | kOffLowHigh = 1; |
| 1292 | kOffLowMedHighAuto = 2; |
| 1293 | kOffLowHighAuto = 3; |
Andrei Litvin | 5c4a9c8 | 2023-11-07 11:25:30 -0500 | [diff] [blame] | 1294 | kOffHighAuto = 4; |
| 1295 | kOffHigh = 5; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1296 | } |
| 1297 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 1298 | enum StepDirectionEnum : enum8 { |
Matt Hazley | 0db9abf | 2023-06-28 18:19:34 +0100 | [diff] [blame] | 1299 | kIncrease = 0; |
| 1300 | kDecrease = 1; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1301 | } |
| 1302 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 1303 | bitmap Feature : bitmap32 { |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1304 | kMultiSpeed = 0x1; |
| 1305 | kAuto = 0x2; |
| 1306 | kRocking = 0x4; |
| 1307 | kWind = 0x8; |
Matt Hazley | c79af24 | 2023-05-30 13:51:49 +0100 | [diff] [blame] | 1308 | kStep = 0x10; |
| 1309 | kAirflowDirection = 0x20; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1310 | } |
| 1311 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 1312 | bitmap RockBitmap : bitmap8 { |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1313 | kRockLeftRight = 0x1; |
| 1314 | kRockUpDown = 0x2; |
| 1315 | kRockRound = 0x4; |
| 1316 | } |
| 1317 | |
Andrei Litvin | 4f65f6c | 2023-10-18 11:57:33 -0400 | [diff] [blame] | 1318 | bitmap WindBitmap : bitmap8 { |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1319 | kSleepWind = 0x1; |
| 1320 | kNaturalWind = 0x2; |
| 1321 | } |
| 1322 | |
Matt Hazley | 0db9abf | 2023-06-28 18:19:34 +0100 | [diff] [blame] | 1323 | attribute FanModeEnum fanMode = 0; |
Andrei Litvin | 5c4a9c8 | 2023-11-07 11:25:30 -0500 | [diff] [blame] | 1324 | readonly attribute FanModeSequenceEnum fanModeSequence = 1; |
Andrei Litvin | 47836d2 | 2023-10-12 18:08:11 -0400 | [diff] [blame] | 1325 | attribute nullable percent percentSetting = 2; |
| 1326 | readonly attribute percent percentCurrent = 3; |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 1327 | readonly attribute optional int8u speedMax = 4; |
| 1328 | attribute optional nullable int8u speedSetting = 5; |
| 1329 | readonly attribute optional int8u speedCurrent = 6; |
| 1330 | readonly attribute optional RockBitmap rockSupport = 7; |
| 1331 | attribute optional RockBitmap rockSetting = 8; |
| 1332 | readonly attribute optional WindBitmap windSupport = 9; |
| 1333 | attribute optional WindBitmap windSetting = 10; |
| 1334 | attribute optional AirflowDirectionEnum airflowDirection = 11; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1335 | readonly attribute command_id generatedCommandList[] = 65528; |
| 1336 | readonly attribute command_id acceptedCommandList[] = 65529; |
Andrei Litvin | c6ae82c | 2023-02-10 15:31:59 -0500 | [diff] [blame] | 1337 | readonly attribute event_id eventList[] = 65530; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1338 | readonly attribute attrib_id attributeList[] = 65531; |
| 1339 | readonly attribute bitmap32 featureMap = 65532; |
| 1340 | readonly attribute int16u clusterRevision = 65533; |
Andrei Litvin | f94a44e | 2023-11-28 11:15:13 -0500 | [diff] [blame] | 1341 | |
| 1342 | request struct StepRequest { |
| 1343 | StepDirectionEnum direction = 0; |
| 1344 | optional boolean wrap = 1; |
| 1345 | optional boolean lowestOff = 2; |
| 1346 | } |
| 1347 | |
| 1348 | /** The Step command speeds up or slows down the fan, in steps. */ |
| 1349 | command Step(StepRequest): DefaultSuccess = 0; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1350 | } |
| 1351 | |
| 1352 | endpoint 0 { |
Andrei Litvin | 8363494 | 2023-08-05 00:50:32 -0400 | [diff] [blame] | 1353 | device type ma_rootdevice = 22, version 1; |
| 1354 | |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1355 | binding cluster OtaSoftwareUpdateProvider; |
| 1356 | |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1357 | server cluster Descriptor { |
| 1358 | callback attribute deviceTypeList; |
| 1359 | callback attribute serverList; |
| 1360 | callback attribute clientList; |
| 1361 | callback attribute partsList; |
Andrei Litvin | 6d35975 | 2023-04-05 15:58:59 -0400 | [diff] [blame] | 1362 | ram attribute featureMap default = 0; |
Boris Zbarsky | f1b6ea5 | 2023-11-29 05:07:22 -0500 | [diff] [blame^] | 1363 | callback attribute clusterRevision; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1364 | } |
| 1365 | |
| 1366 | server cluster AccessControl { |
Evgeny Margolis | db4c5c9 | 2023-02-21 13:50:29 -0800 | [diff] [blame] | 1367 | emits event AccessControlEntryChanged; |
| 1368 | emits event AccessControlExtensionChanged; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1369 | callback attribute acl; |
| 1370 | callback attribute extension; |
| 1371 | callback attribute subjectsPerAccessControlEntry; |
| 1372 | callback attribute targetsPerAccessControlEntry; |
| 1373 | callback attribute accessControlEntriesPerFabric; |
| 1374 | callback attribute attributeList; |
Andrei Litvin | 6d35975 | 2023-04-05 15:58:59 -0400 | [diff] [blame] | 1375 | ram attribute featureMap default = 0; |
Boris Zbarsky | f1b6ea5 | 2023-11-29 05:07:22 -0500 | [diff] [blame^] | 1376 | callback attribute clusterRevision; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1377 | } |
| 1378 | |
Boris Zbarsky | 04c20f6 | 2022-12-18 10:09:13 -0500 | [diff] [blame] | 1379 | server cluster BasicInformation { |
Evgeny Margolis | db4c5c9 | 2023-02-21 13:50:29 -0800 | [diff] [blame] | 1380 | emits event StartUp; |
| 1381 | emits event ShutDown; |
| 1382 | emits event Leave; |
Boris Zbarsky | f1b6ea5 | 2023-11-29 05:07:22 -0500 | [diff] [blame^] | 1383 | callback attribute dataModelRevision; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1384 | callback attribute vendorName; |
| 1385 | callback attribute vendorID; |
| 1386 | callback attribute productName; |
| 1387 | callback attribute productID; |
| 1388 | persist attribute nodeLabel; |
Boris Zbarsky | f1b6ea5 | 2023-11-29 05:07:22 -0500 | [diff] [blame^] | 1389 | callback attribute location; |
| 1390 | callback attribute hardwareVersion; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1391 | callback attribute hardwareVersionString; |
Boris Zbarsky | f1b6ea5 | 2023-11-29 05:07:22 -0500 | [diff] [blame^] | 1392 | callback attribute softwareVersion; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1393 | callback attribute softwareVersionString; |
Boris Zbarsky | f1b6ea5 | 2023-11-29 05:07:22 -0500 | [diff] [blame^] | 1394 | callback attribute manufacturingDate; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1395 | callback attribute partNumber; |
| 1396 | callback attribute productURL; |
| 1397 | callback attribute productLabel; |
| 1398 | callback attribute serialNumber; |
Andrei Litvin | 6d35975 | 2023-04-05 15:58:59 -0400 | [diff] [blame] | 1399 | persist attribute localConfigDisabled default = 0; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1400 | callback attribute uniqueID; |
| 1401 | callback attribute capabilityMinima; |
Terence Hampson | 9969d44 | 2023-11-16 11:30:48 -0500 | [diff] [blame] | 1402 | callback attribute specificationVersion; |
| 1403 | callback attribute maxPathsPerInvoke; |
Andrei Litvin | 6d35975 | 2023-04-05 15:58:59 -0400 | [diff] [blame] | 1404 | ram attribute featureMap default = 0; |
Terence Hampson | 9969d44 | 2023-11-16 11:30:48 -0500 | [diff] [blame] | 1405 | ram attribute clusterRevision default = 3; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1406 | } |
| 1407 | |
| 1408 | server cluster OtaSoftwareUpdateRequestor { |
Evgeny Margolis | db4c5c9 | 2023-02-21 13:50:29 -0800 | [diff] [blame] | 1409 | emits event StateTransition; |
| 1410 | emits event VersionApplied; |
| 1411 | emits event DownloadError; |
Boris Zbarsky | 458bbbf | 2023-01-03 13:11:18 -0500 | [diff] [blame] | 1412 | callback attribute defaultOTAProviders; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1413 | ram attribute updatePossible default = 1; |
Andrei Litvin | 6d35975 | 2023-04-05 15:58:59 -0400 | [diff] [blame] | 1414 | ram attribute updateState default = 0; |
| 1415 | ram attribute updateStateProgress default = 0; |
| 1416 | ram attribute featureMap default = 0; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1417 | ram attribute clusterRevision default = 1; |
Andrei Litvin | 49fff5b | 2023-10-11 18:25:37 -0400 | [diff] [blame] | 1418 | |
| 1419 | handle command AnnounceOTAProvider; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1420 | } |
| 1421 | |
| 1422 | server cluster LocalizationConfiguration { |
| 1423 | ram attribute activeLocale; |
| 1424 | callback attribute supportedLocales; |
| 1425 | callback attribute attributeList; |
Andrei Litvin | 6d35975 | 2023-04-05 15:58:59 -0400 | [diff] [blame] | 1426 | ram attribute featureMap default = 0; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1427 | ram attribute clusterRevision default = 1; |
| 1428 | } |
| 1429 | |
| 1430 | server cluster TimeFormatLocalization { |
Andrei Litvin | 6d35975 | 2023-04-05 15:58:59 -0400 | [diff] [blame] | 1431 | persist attribute hourFormat default = 0; |
| 1432 | persist attribute activeCalendarType default = 0; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1433 | callback attribute supportedCalendarTypes; |
Andrei Litvin | 6d35975 | 2023-04-05 15:58:59 -0400 | [diff] [blame] | 1434 | ram attribute featureMap default = 0; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1435 | ram attribute clusterRevision default = 1; |
| 1436 | } |
| 1437 | |
| 1438 | server cluster GeneralCommissioning { |
Andrei Litvin | 6d35975 | 2023-04-05 15:58:59 -0400 | [diff] [blame] | 1439 | ram attribute breadcrumb default = 0x0000000000000000; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1440 | callback attribute basicCommissioningInfo; |
Boris Zbarsky | f1b6ea5 | 2023-11-29 05:07:22 -0500 | [diff] [blame^] | 1441 | callback attribute regulatoryConfig; |
| 1442 | callback attribute locationCapability; |
| 1443 | callback attribute supportsConcurrentConnection; |
Andrei Litvin | 6d35975 | 2023-04-05 15:58:59 -0400 | [diff] [blame] | 1444 | ram attribute featureMap default = 0; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1445 | ram attribute clusterRevision default = 0x0001; |
Andrei Litvin | 49fff5b | 2023-10-11 18:25:37 -0400 | [diff] [blame] | 1446 | |
| 1447 | handle command ArmFailSafe; |
| 1448 | handle command ArmFailSafeResponse; |
| 1449 | handle command SetRegulatoryConfig; |
| 1450 | handle command SetRegulatoryConfigResponse; |
| 1451 | handle command CommissioningComplete; |
| 1452 | handle command CommissioningCompleteResponse; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1453 | } |
| 1454 | |
| 1455 | server cluster NetworkCommissioning { |
| 1456 | ram attribute maxNetworks; |
| 1457 | callback attribute networks; |
| 1458 | ram attribute scanMaxTimeSeconds; |
| 1459 | ram attribute connectMaxTimeSeconds; |
| 1460 | ram attribute interfaceEnabled; |
| 1461 | ram attribute lastNetworkingStatus; |
| 1462 | ram attribute lastNetworkID; |
| 1463 | ram attribute lastConnectErrorValue; |
| 1464 | ram attribute featureMap default = 1; |
| 1465 | ram attribute clusterRevision default = 0x0001; |
Andrei Litvin | 49fff5b | 2023-10-11 18:25:37 -0400 | [diff] [blame] | 1466 | |
| 1467 | handle command ScanNetworks; |
| 1468 | handle command ScanNetworksResponse; |
| 1469 | handle command AddOrUpdateWiFiNetwork; |
| 1470 | handle command AddOrUpdateThreadNetwork; |
| 1471 | handle command RemoveNetwork; |
| 1472 | handle command NetworkConfigResponse; |
| 1473 | handle command ConnectNetwork; |
| 1474 | handle command ConnectNetworkResponse; |
| 1475 | handle command ReorderNetwork; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1476 | } |
| 1477 | |
| 1478 | server cluster DiagnosticLogs { |
Andrei Litvin | 6d35975 | 2023-04-05 15:58:59 -0400 | [diff] [blame] | 1479 | ram attribute featureMap default = 0; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1480 | ram attribute clusterRevision default = 1; |
Andrei Litvin | 49fff5b | 2023-10-11 18:25:37 -0400 | [diff] [blame] | 1481 | |
| 1482 | handle command RetrieveLogsRequest; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1483 | } |
| 1484 | |
| 1485 | server cluster GeneralDiagnostics { |
Evgeny Margolis | db4c5c9 | 2023-02-21 13:50:29 -0800 | [diff] [blame] | 1486 | emits event BootReason; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1487 | callback attribute networkInterfaces; |
Boris Zbarsky | f1b6ea5 | 2023-11-29 05:07:22 -0500 | [diff] [blame^] | 1488 | callback attribute rebootCount; |
| 1489 | callback attribute upTime; |
| 1490 | callback attribute totalOperationalHours; |
Boris Zbarsky | dd6ae93 | 2023-01-09 12:08:17 -0500 | [diff] [blame] | 1491 | callback attribute bootReason; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1492 | callback attribute activeHardwareFaults; |
| 1493 | callback attribute activeRadioFaults; |
| 1494 | callback attribute activeNetworkFaults; |
Andrei Litvin | 6d35975 | 2023-04-05 15:58:59 -0400 | [diff] [blame] | 1495 | callback attribute testEventTriggersEnabled default = false; |
| 1496 | ram attribute featureMap default = 0; |
Tennessee Carmel-Veilleux | d165f62 | 2023-10-31 10:50:04 -0400 | [diff] [blame] | 1497 | ram attribute clusterRevision default = 0x0002; |
Andrei Litvin | 49fff5b | 2023-10-11 18:25:37 -0400 | [diff] [blame] | 1498 | |
| 1499 | handle command TestEventTrigger; |
Tennessee Carmel-Veilleux | d165f62 | 2023-10-31 10:50:04 -0400 | [diff] [blame] | 1500 | handle command TimeSnapshot; |
| 1501 | handle command TimeSnapshotResponse; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1502 | } |
| 1503 | |
| 1504 | server cluster SoftwareDiagnostics { |
| 1505 | callback attribute threadMetrics; |
Boris Zbarsky | f1b6ea5 | 2023-11-29 05:07:22 -0500 | [diff] [blame^] | 1506 | callback attribute currentHeapFree; |
| 1507 | callback attribute currentHeapUsed; |
| 1508 | callback attribute currentHeapHighWatermark; |
| 1509 | callback attribute featureMap; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1510 | ram attribute clusterRevision default = 0x0001; |
Andrei Litvin | 49fff5b | 2023-10-11 18:25:37 -0400 | [diff] [blame] | 1511 | |
| 1512 | handle command ResetWatermarks; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1513 | } |
| 1514 | |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1515 | server cluster AdministratorCommissioning { |
Boris Zbarsky | f1b6ea5 | 2023-11-29 05:07:22 -0500 | [diff] [blame^] | 1516 | callback attribute windowStatus; |
| 1517 | callback attribute adminFabricIndex; |
| 1518 | callback attribute adminVendorId; |
Andrei Litvin | 6d35975 | 2023-04-05 15:58:59 -0400 | [diff] [blame] | 1519 | ram attribute featureMap default = 0; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1520 | ram attribute clusterRevision default = 0x0001; |
Andrei Litvin | 49fff5b | 2023-10-11 18:25:37 -0400 | [diff] [blame] | 1521 | |
| 1522 | handle command OpenCommissioningWindow; |
| 1523 | handle command OpenBasicCommissioningWindow; |
| 1524 | handle command RevokeCommissioning; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1525 | } |
| 1526 | |
| 1527 | server cluster OperationalCredentials { |
| 1528 | callback attribute NOCs; |
| 1529 | callback attribute fabrics; |
| 1530 | callback attribute supportedFabrics; |
| 1531 | callback attribute commissionedFabrics; |
| 1532 | callback attribute trustedRootCertificates; |
| 1533 | callback attribute currentFabricIndex; |
Andrei Litvin | 6d35975 | 2023-04-05 15:58:59 -0400 | [diff] [blame] | 1534 | ram attribute featureMap default = 0; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1535 | ram attribute clusterRevision default = 0x0001; |
Andrei Litvin | 49fff5b | 2023-10-11 18:25:37 -0400 | [diff] [blame] | 1536 | |
| 1537 | handle command AttestationRequest; |
| 1538 | handle command AttestationResponse; |
| 1539 | handle command CertificateChainRequest; |
| 1540 | handle command CertificateChainResponse; |
| 1541 | handle command CSRRequest; |
| 1542 | handle command CSRResponse; |
| 1543 | handle command AddNOC; |
| 1544 | handle command UpdateNOC; |
| 1545 | handle command NOCResponse; |
| 1546 | handle command UpdateFabricLabel; |
| 1547 | handle command RemoveFabric; |
| 1548 | handle command AddTrustedRootCertificate; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1549 | } |
| 1550 | |
| 1551 | server cluster GroupKeyManagement { |
| 1552 | callback attribute groupKeyMap; |
| 1553 | callback attribute groupTable; |
| 1554 | callback attribute maxGroupsPerFabric; |
| 1555 | callback attribute maxGroupKeysPerFabric; |
Boris Zbarsky | f1b6ea5 | 2023-11-29 05:07:22 -0500 | [diff] [blame^] | 1556 | callback attribute featureMap; |
| 1557 | callback attribute clusterRevision; |
Andrei Litvin | 49fff5b | 2023-10-11 18:25:37 -0400 | [diff] [blame] | 1558 | |
| 1559 | handle command KeySetWrite; |
| 1560 | handle command KeySetRead; |
| 1561 | handle command KeySetReadResponse; |
| 1562 | handle command KeySetRemove; |
| 1563 | handle command KeySetReadAllIndices; |
| 1564 | handle command KeySetReadAllIndicesResponse; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1565 | } |
| 1566 | |
| 1567 | server cluster FixedLabel { |
| 1568 | callback attribute labelList; |
Andrei Litvin | 6d35975 | 2023-04-05 15:58:59 -0400 | [diff] [blame] | 1569 | ram attribute featureMap default = 0; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1570 | ram attribute clusterRevision default = 1; |
| 1571 | } |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1572 | } |
| 1573 | endpoint 1 { |
Andrei Litvin | 8363494 | 2023-08-05 00:50:32 -0400 | [diff] [blame] | 1574 | device type ma_fan = 43, version 1; |
| 1575 | |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1576 | |
| 1577 | server cluster Identify { |
Andrei Litvin | 6d35975 | 2023-04-05 15:58:59 -0400 | [diff] [blame] | 1578 | ram attribute identifyTime default = 0x0; |
| 1579 | ram attribute identifyType default = 0x0; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1580 | callback attribute generatedCommandList; |
| 1581 | callback attribute acceptedCommandList; |
| 1582 | callback attribute attributeList; |
Andrei Litvin | 6d35975 | 2023-04-05 15:58:59 -0400 | [diff] [blame] | 1583 | ram attribute featureMap default = 0; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1584 | ram attribute clusterRevision default = 4; |
Andrei Litvin | 49fff5b | 2023-10-11 18:25:37 -0400 | [diff] [blame] | 1585 | |
| 1586 | handle command Identify; |
| 1587 | handle command TriggerEffect; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1588 | } |
| 1589 | |
| 1590 | server cluster Groups { |
| 1591 | ram attribute nameSupport; |
| 1592 | callback attribute generatedCommandList; |
| 1593 | callback attribute acceptedCommandList; |
| 1594 | callback attribute attributeList; |
Andrei Litvin | 6d35975 | 2023-04-05 15:58:59 -0400 | [diff] [blame] | 1595 | ram attribute featureMap default = 0; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1596 | ram attribute clusterRevision default = 3; |
Andrei Litvin | 49fff5b | 2023-10-11 18:25:37 -0400 | [diff] [blame] | 1597 | |
| 1598 | handle command AddGroup; |
| 1599 | handle command AddGroupResponse; |
| 1600 | handle command ViewGroup; |
| 1601 | handle command ViewGroupResponse; |
| 1602 | handle command GetGroupMembership; |
| 1603 | handle command GetGroupMembershipResponse; |
| 1604 | handle command RemoveGroup; |
| 1605 | handle command RemoveGroupResponse; |
| 1606 | handle command RemoveAllGroups; |
| 1607 | handle command AddGroupIfIdentifying; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1608 | } |
| 1609 | |
| 1610 | server cluster Descriptor { |
| 1611 | callback attribute deviceTypeList; |
| 1612 | callback attribute serverList; |
| 1613 | callback attribute clientList; |
| 1614 | callback attribute partsList; |
| 1615 | callback attribute generatedCommandList; |
| 1616 | callback attribute acceptedCommandList; |
| 1617 | callback attribute attributeList; |
Andrei Litvin | 6d35975 | 2023-04-05 15:58:59 -0400 | [diff] [blame] | 1618 | ram attribute featureMap default = 0; |
Boris Zbarsky | f1b6ea5 | 2023-11-29 05:07:22 -0500 | [diff] [blame^] | 1619 | callback attribute clusterRevision; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1620 | } |
| 1621 | |
| 1622 | server cluster FanControl { |
Andrei Litvin | 6d35975 | 2023-04-05 15:58:59 -0400 | [diff] [blame] | 1623 | ram attribute fanMode default = 0; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1624 | ram attribute fanModeSequence default = 2; |
Andrei Litvin | 6d35975 | 2023-04-05 15:58:59 -0400 | [diff] [blame] | 1625 | ram attribute percentSetting default = 0; |
| 1626 | ram attribute percentCurrent default = 0; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1627 | ram attribute speedMax default = 1; |
Andrei Litvin | 6d35975 | 2023-04-05 15:58:59 -0400 | [diff] [blame] | 1628 | ram attribute speedSetting default = 0; |
| 1629 | ram attribute speedCurrent default = 0; |
| 1630 | ram attribute rockSupport default = 0x00; |
| 1631 | ram attribute rockSetting default = 0x00; |
| 1632 | ram attribute windSupport default = 0x00; |
| 1633 | ram attribute windSetting default = 0x00; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1634 | callback attribute generatedCommandList; |
| 1635 | callback attribute acceptedCommandList; |
| 1636 | callback attribute attributeList; |
Andrei Litvin | 6d35975 | 2023-04-05 15:58:59 -0400 | [diff] [blame] | 1637 | ram attribute featureMap default = 0; |
Erwin Pan | 684c6de | 2022-09-20 21:39:56 +0800 | [diff] [blame] | 1638 | ram attribute clusterRevision default = 1; |
| 1639 | } |
| 1640 | } |
| 1641 | |
| 1642 | |