Skip to content

Commit 60e78a8

Browse files
committed
GH:43: Unify_UserCredential XML definition
Forwarded: SiliconLabs#43 Bug-SiliconLabs: UIC-3222 Bug-Github: SiliconLabs#43
1 parent 5344208 commit 60e78a8

File tree

4 files changed

+242
-1
lines changed

4 files changed

+242
-1
lines changed
Lines changed: 236 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,236 @@
1+
<?xml version="1.0"?>
2+
<!--
3+
ConfigurationParameters
4+
This is a manufacturer specific cluster.
5+
-->
6+
<zcl:cluster xmlns:zcl="http://zigbee.org/zcl/clusters"
7+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
8+
xmlns:type="http://zigbee.org/zcl/types"
9+
xmlns:xi="http://www.w3.org/2001/XInclude" xsi:schemaLocation="http://zigbee.org/zcl/clusters cluster.xsd http://zigbee.org/zcl/types type.xsd" id="FD08" revision="1" name="UserCredential">
10+
<classification role="application" picsCode="USRCRED" />
11+
12+
13+
<type:type short="UserTypeEnum" name="UserTypeEnum" id="10" inheritsFrom="enum8">
14+
<restriction>
15+
<type:enumeration value="00" name="GeneralUser" />
16+
<!-- Reserved for future use
17+
<type:enumeration value="01" name="RESERVED"/>
18+
<type:enumeration value="02" name="RESERVED"/>
19+
-->
20+
<type:enumeration value="03" name="ProgrammingUser"/>
21+
<type:enumeration value="04" name="NonAccessUser"/>
22+
<type:enumeration value="05" name="DuressUser"/>
23+
<type:enumeration value="06" name="DisposableUser"/>
24+
<type:enumeration value="07" name="ExpiringUser"/>
25+
<!-- Reserved for future use
26+
<type:enumeration value="08" name="RESERVED"/>
27+
-->
28+
<type:enumeration value="09" name="RemoteOnlyUser"/>
29+
</restriction>
30+
</type:type>
31+
<type:type short="CredRule" name="CredRule" id="11" inheritsFrom="enum8">
32+
<restriction>
33+
<type:enumeration value="01" name="Single" />
34+
<type:enumeration value="02" name="Dual"/>
35+
<type:enumeration value="03" name="Triple"/>
36+
</restriction>
37+
</type:type>
38+
<type:type short="CredType" name="CredType" id="12" inheritsFrom="enum8">
39+
<restriction>
40+
<type:enumeration value="01" name="PINCode"/>
41+
<type:enumeration value="02" name="Password"/>
42+
<type:enumeration value="03" name="RFIDCode" />
43+
<type:enumeration value="04" name="BLE" />
44+
<type:enumeration value="05" name="NFC" />
45+
<type:enumeration value="06" name="UWB" />
46+
<type:enumeration value="07" name="EyeBiometric"/>
47+
<type:enumeration value="08" name="FaceBiometric"/>
48+
<type:enumeration value="09" name="FingerBiometric"/>
49+
<type:enumeration value="0A" name="HandBiometric"/>
50+
<type:enumeration value="0B" name="UnspecifiedBiometric"/>
51+
</restriction>
52+
</type:type>
53+
<type:type short="UserNameEncodingType" name="UserNameEncodingType" id="13" inheritsFrom="enum8">
54+
<restriction>
55+
<type:enumeration value="00" name="ASCII"/>
56+
<type:enumeration value="01" name="OEMExtendedASCII"/>
57+
<type:enumeration value="02" name="UTF-16" />
58+
</restriction>
59+
</type:type>
60+
61+
<type:type short="UserModifierType" name="UserModifierType" id="20" inheritsFrom="enum8">
62+
<restriction>
63+
<type:enumeration value="00" name="DNE"/>
64+
<type:enumeration value="01" name="Unknown"/>
65+
<type:enumeration value="02" name="Z-Wave" />
66+
<type:enumeration value="03" name="Locally" />
67+
<type:enumeration value="04" name="MobileAppOrOtherIoT"/>
68+
</restriction>
69+
</type:type>
70+
71+
72+
<server>
73+
<attributes>
74+
<attribute id="0000" name="SupportedUserUniqueIdentifiers" type="uint16" required="true"/>
75+
<attribute id="0001" name="SupportedCredentialRules" type="map8" required="true">
76+
<bitmap>
77+
<!-- <element name="RESERVED" type="bool" mask="01"/> -->
78+
<element name="Single" type="bool" mask="02" shiftRight="1" />
79+
<element name="Dual" type="bool" mask="04" shiftRight="2" />
80+
<element name="Triple" type="bool" mask="08" shiftRight="3" />
81+
</bitmap>
82+
</attribute>
83+
<attribute id="0002" name="SupportedCredentialTypes" type="map16" required="true">
84+
<bitmap>
85+
<element name="PINCode" type="bool" mask="01" />
86+
<element name="Password" type="bool" mask="02" shiftRight="1" />
87+
<element name="RFIDCode" type="bool" mask="04" shiftRight="2" />
88+
<element name="BLE" type="bool" mask="08" shiftRight="2" />
89+
<element name="NFC" type="bool" mask="10" shiftRight="3" />
90+
<element name="UWB" type="bool" mask="20" shiftRight="4" />
91+
<element name="EyeBiometric" type="bool" mask="40" shiftRight="5" />
92+
<element name="FaceBiometric" type="bool" mask="80" shiftRight="6" />
93+
<element name="FingerBiometric" type="bool" mask="0100" shiftRight="7" />
94+
<element name="HandBiometric" type="bool" mask="0200" shiftRight="8" />
95+
<element name="UnspecifiedBiometric" type="bool" mask="0400" shiftRight="9"/>
96+
</bitmap>
97+
</attribute>
98+
<attribute id="0003" name="SupportedUserTypes" type="map16" required="true">
99+
<bitmap>
100+
<element name="GeneralUser" type="bool" mask="01" />
101+
<!-- Reserved for future use
102+
<element name="RESERVED" type="bool" mask="02" shiftRight="1" />
103+
<element name="RESERVED" type="bool" mask="04" shiftRight="2" /> -->
104+
<element name="ProgrammingUser" type="bool" mask="08" shiftRight="2" />
105+
<element name="NonAccessUser" type="bool" mask="10" shiftRight="3" />
106+
<element name="DuressUser" type="bool" mask="20" shiftRight="4" />
107+
<element name="DisposableUser" type="bool" mask="40" shiftRight="5" />
108+
<element name="ExpiringUser" type="bool" mask="80" shiftRight="6" />
109+
<!-- <element name="RESERVED" type="bool" mask="0100" shiftRight="7" /> -->
110+
<element name="RemoteOnlyUser" type="bool" mask="0200" shiftRight="8" />
111+
</bitmap>
112+
</attribute>
113+
<attribute id="0004" name="SupportCredentialChecksum" type="bool" required="true"/>
114+
<attribute id="0005" name="SupportAdminPinCode" type="bool" required="true"/>
115+
<attribute id="0006" name="SupportAdminPinCodeDeactivation" type="bool" required="true"/>
116+
<attribute id="0007" name="AdminPinCode" type="string"/>
117+
<!--Users and credentials not appears here due to the lack of options for array types.
118+
The attributes will be published as read only. See user_credential_cluster_server.h for details -->
119+
</attributes>
120+
121+
122+
<commands>
123+
<command id="01" name="AddUser">
124+
<fields>
125+
<field name="UserUniqueID" type="uint16"/>
126+
<field name="UserType" type="UserTypeEnum" />
127+
<field name="UserActiveState" type="bool" />
128+
<field name="CredentialRule" type="CredRule" />
129+
<field name="UserName" type="string" />
130+
<field name="ExpiringTimeoutMinutes" type="uint16" presentIf="UserType = 07"/>
131+
<field name="UserNameEncoding" type="UserNameEncodingType"/>
132+
</fields>
133+
</command>
134+
<command id="02" name="ModifyUser">
135+
<fields>
136+
<field name="UserUniqueID" type="uint16"/>
137+
<field name="UserType" type="UserTypeEnum" />
138+
<field name="UserActiveState" type="bool" />
139+
<field name="CredentialRule" type="CredRule" />
140+
<field name="UserName" type="string" />
141+
<field name="ExpiringTimeoutMinutes" type="uint16" presentIf="UserType = 07"/>
142+
<field name="UserNameEncoding" type="UserNameEncodingType"/>
143+
</fields>
144+
</command>
145+
<command id="03" name="DeleteUser">
146+
<fields>
147+
<field name="UserUniqueID" type="uint16"/>
148+
</fields>
149+
</command>
150+
<command id="04" name="AddCredential">
151+
<fields>
152+
<field name="UserUniqueID" type="uint16"/>
153+
<field name="CredentialType" type="CredType"/>
154+
<field name="CredentialSlot" type="uint16"/>
155+
<field name="CredentialData" type="string"/>
156+
</fields>
157+
</command>
158+
<command id="05" name="ModifyCredential">
159+
<fields>
160+
<field name="UserUniqueID" type="uint16"/>
161+
<field name="CredentialType" type="CredType"/>
162+
<field name="CredentialSlot" type="uint16"/>
163+
<field name="CredentialData" type="string"/>
164+
</fields>
165+
</command>
166+
<command id="06" name="DeleteCredential">
167+
<fields>
168+
<field name="UserUniqueID" type="uint16"/>
169+
<field name="CredentialType" type="CredType"/>
170+
<field name="CredentialSlot" type="uint16"/>
171+
</fields>
172+
</command>
173+
<command id="07" name="DeleteAllUsers"/>
174+
<command id="08" name="DeleteAllCredentials"/>
175+
<command id="09" name="DeleteAllCredentialsByType">
176+
<fields>
177+
<field name="CredentialType" type="CredType"/>
178+
</fields>
179+
</command>
180+
<command id="0A" name="DeleteAllCredentialsForUser">
181+
<fields>
182+
<field name="UserUniqueID" type="uint16"/>
183+
</fields>
184+
</command>
185+
<command id="0B" name="DeleteAllCredentialsForUserByType">
186+
<fields>
187+
<field name="UserUniqueID" type="uint16"/>
188+
<field name="CredentialType" type="CredType"/>
189+
</fields>
190+
</command>
191+
<command id="0C" name="CredentialLearnStartAdd">
192+
<fields>
193+
<field name="UserUniqueID" type="uint16"/>
194+
<field name="CredentialType" type="CredType"/>
195+
<field name="CredentialSlot" type="uint16"/>
196+
<field name="CredentialLearnTimeout" type="uint8" default="0"/>
197+
</fields>
198+
</command>
199+
<command id="0D" name="CredentialLearnStartModify">
200+
<fields>
201+
<field name="UserUniqueID" type="uint16"/>
202+
<field name="CredentialType" type="CredType"/>
203+
<field name="CredentialSlot" type="uint16"/>
204+
<field name="CredentialLearnTimeout" type="uint8" default="0"/>
205+
</fields>
206+
</command>
207+
<command id="0E" name="CredentialLearnStop"/>
208+
<command id="0F" name="CredentialAssociation">
209+
<fields>
210+
<field name="CredentialType" type="CredType"/>
211+
<field name="SourceUserUniqueID" type="uint16"/>
212+
<field name="SourceCredentialSlot" type="uint16"/>
213+
<field name="DestinationUserUniqueID" type="uint16"/>
214+
<field name="DestinationCredentialSlot" type="uint16"/>
215+
</fields>
216+
</command>
217+
<command id="10" name="GetUserChecksum">
218+
<fields>
219+
<field name="UserUniqueID" type="uint16"/>
220+
</fields>
221+
</command>
222+
<command id="11" name="GetCredentialChecksum">
223+
<fields>
224+
<field name="CredentialType" type="CredType"/>
225+
</fields>
226+
</command>
227+
<command id="12" name="GetAllUsersChecksum"/>
228+
<command id="13" name="SetAdminPINCode">
229+
<fields>
230+
<field name="PINCode" type="string"/>
231+
</fields>
232+
</command>
233+
<command id="14" name="DeactivateAdminPINCode"/>
234+
</commands>
235+
</server>
236+
</zcl:cluster>

components/uic_dotdot/dotdot-xml/library.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -493,4 +493,6 @@ applicable to this document can be found in the LICENSE.md file.
493493
<xi:include href="Unify_HumidityControl.xml" parse="xml"/>
494494
<xi:include href="Unify_Thermostat.xml" parse="xml"/>
495495
<xi:include href="Unify_FanControl.xml" parse="xml"/>
496+
<xi:include href="Unify_UserCredential.xml" parse="xml"/>
497+
496498
</zcl:library>

components/uic_dotdot/zap/addon-base-helper.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,10 @@ zcl_type_map = (function() {
100100
CredentialRuleEnum: 'enum8',
101101
ZWaveFanModeEnum: 'enum8',
102102
ZWaveFanStateEnum: 'enum8',
103+
CredRule: 'enum8',
104+
UserTypeEnum: 'enum8',
105+
CredType: 'enum8',
106+
UserNameEncodingType: 'enum8',
103107
// zclType: 'uint8',
104108

105109
BarrierControlSafetyStatus: 'map16',

components/uic_dotdot/zap/addon-helper.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,6 @@ function isStruct(type) {
124124
case 'NetworkManagementState': return true
125125
case 'SSceneTable': return true
126126
case 'DeviceTypeStruct': return true
127-
case 'CredentialStruct': return true
128127
default: return false
129128
}
130129
}

0 commit comments

Comments
 (0)