blob: a0c5f9e63be3d76017695272c4933d9608339c0a [file] [log] [blame]
<?xml version="1.0"?>
<!--
Copyright (C) Connectivity Standards Alliance (2021). All rights reserved.
The information within this document is the property of the Connectivity
Standards Alliance and its use and disclosure are restricted, except as
expressly set forth herein.
Connectivity Standards Alliance hereby grants you a fully-paid, non-exclusive,
nontransferable, worldwide, limited and revocable license (without the right to
sublicense), under Connectivity Standards Alliance's applicable copyright
rights, to view, download, save, reproduce and use the document solely for your
own internal purposes and in accordance with the terms of the license set forth
herein. This license does not authorize you to, and you expressly warrant that
you shall not: (a) permit others (outside your organization) to use this
document; (b) post or publish this document; (c) modify, adapt, translate, or
otherwise change this document in any manner or create any derivative work
based on this document; (d) remove or modify any notice or label on this
document, including this Copyright Notice, License and Disclaimer. The
Connectivity Standards Alliance does not grant you any license hereunder other
than as expressly stated herein.
Elements of this document may be subject to third party intellectual property
rights, including without limitation, patent, copyright or trademark rights,
and any such third party may or may not be a member of the Connectivity
Standards Alliance. Connectivity Standards Alliance members grant other
Connectivity Standards Alliance members certain intellectual property rights as
set forth in the Connectivity Standards Alliance IPR Policy. Connectivity
Standards Alliance members do not grant you any rights under this license. The
Connectivity Standards Alliance is not responsible for, and shall not be held
responsible in any manner for, identifying or failing to identify any or all
such third party intellectual property rights. Please visit www.csa-iot.org for
more information on how to become a member of the Connectivity Standards
Alliance.
This document and the information contained herein are provided on an “AS IS”
basis and the Connectivity Standards Alliance DISCLAIMS ALL WARRANTIES EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO (A) ANY WARRANTY THAT THE USE OF THE
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OF THIRD PARTIES (INCLUDING
WITHOUT LIMITATION ANY INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENT, COPYRIGHT
OR TRADEMARK RIGHTS); OR (B) ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE, TITLE OR NONINFRINGEMENT. IN NO EVENT WILL THE
CONNECTIVITY STANDARDS ALLIANCE BE LIABLE FOR ANY LOSS OF PROFITS, LOSS OF
BUSINESS, LOSS OF USE OF DATA, INTERRUPTION OF BUSINESS, OR FOR ANY OTHER
DIRECT, INDIRECT, SPECIAL OR EXEMPLARY, INCIDENTAL, PUNITIVE OR CONSEQUENTIAL
DAMAGES OF ANY KIND, IN CONTRACT OR IN TORT, IN CONNECTION WITH THIS DOCUMENT
OR THE INFORMATION CONTAINED HEREIN, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
LOSS OR DAMAGE.
All company, brand and product names in this document may be trademarks that
are the sole property of their respective owners.
This notice and disclaimer must be included on all copies of this document.
Connectivity Standards Alliance
508 Second Street, Suite 206
Davis, CA 95616, USA
-->
<cluster xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="types types.xsd cluster cluster.xsd" id="0x0101" name="Door Lock" revision="7">
<revisionHistory>
<revision revision="1" summary="mandatory global ClusterRevision attribute added; CCB 1811 1812 1821"/>
<revision revision="2" summary="CCB 2430"/>
<revision revision="3" summary="CCB 2629 2630"/>
<revision revision="4" summary="All Hubs changes and added feature map"/>
<revision revision="5"/>
<revision revision="6" summary="New data model format and notation. Added User features. General cleanup of functionality"/>
<revision revision="7" summary="Added support for European door locks (unbolt feature)"/>
</revisionHistory>
<classification hierarchy="base" role="application" picsCode="DRLK" scope="Endpoint"/>
<features>
<feature bit="0" code="PIN" name="PIN Credential" summary="Lock supports PIN credentials (via keypad, or over-the-air)">
<optionalConform/>
</feature>
<feature bit="1" code="RID" name="RFID Credential" summary="Lock supports RFID credentials">
<optionalConform/>
</feature>
<feature bit="2" code="FGP" name="Finger Credentials" summary="Lock supports finger related credentials (fingerprint, finger vein)">
<otherwiseConform>
<provisionalConform/>
<optionalConform/>
</otherwiseConform>
</feature>
<feature bit="3" code="LOG" name="Logging" summary="Lock supports local/on-lock logging when Events are not supported">
<optionalConform/>
</feature>
<feature bit="4" code="WDSCH" name="Week Day Access Schedules" summary="Lock supports week day user access schedules">
<optionalConform/>
</feature>
<feature bit="5" code="DPS" name="Door Position Sensor" summary="Lock supports a door position sensor that indicates door's state">
<optionalConform/>
</feature>
<feature bit="6" code="FACE" name="Face Credentials" summary="Lock supports face related credentials (face, iris, retina)">
<otherwiseConform>
<provisionalConform/>
<optionalConform/>
</otherwiseConform>
</feature>
<feature bit="7" code="COTA" name="Credential Over-the-Air Access" summary="PIN codes over-the-air supported for lock/unlock operations">
<optionalConform/>
</feature>
<feature bit="8" code="USR" name="User" summary="Lock supports the user commands and database">
<optionalConform>
<orTerm>
<feature name="PIN"/>
<feature name="RID"/>
<feature name="FGP"/>
<feature name="FACE"/>
</orTerm>
</optionalConform>
</feature>
<feature bit="9" code="NOT" name="Notification" summary="Operation and Programming Notifications">
<optionalConform/>
</feature>
<feature bit="10" code="YDSCH" name="Year Day Access Schedules" summary="Lock supports year day user access schedules">
<optionalConform/>
</feature>
<feature bit="11" code="HDSCH" name="Holiday Schedules" summary="Lock supports holiday schedules">
<optionalConform/>
</feature>
<feature bit="12" code="UBOLT" name="Unbolting" summary="Lock supports unbolting">
<optionalConform/>
</feature>
</features>
<dataTypes>
<number name="PIN/RFID Code Format" type=""/>
<enum name="AlarmCodeEnum">
<item value="0" name="LockJammed" summary="Locking Mechanism Jammed">
<mandatoryConform/>
</item>
<item value="1" name="LockFactoryReset" summary="Lock Reset to Factory Defaults">
<optionalConform/>
</item>
<item value="3" name="LockRadioPowerCycled" summary="Lock Radio Power Cycled">
<optionalConform/>
</item>
<item value="4" name="WrongCodeEntryLimit" summary="Tamper Alarm - wrong code entry limit">
<optionalConform>
<feature name="USR"/>
</optionalConform>
</item>
<item value="5" name="FrontEsceutcheonRemoved" summary="Tamper Alarm - front escutcheon removed from main">
<optionalConform/>
</item>
<item value="6" name="DoorForcedOpen" summary="Forced Door Open under Door Locked Condition">
<optionalConform>
<feature name="DPS"/>
</optionalConform>
</item>
<item value="7" name="DoorAjar" summary="Door ajar">
<optionalConform>
<feature name="DPS"/>
</optionalConform>
</item>
<item value="8" name="ForcedUser" summary="Force User SOS alarm">
<optionalConform>
<feature name="USR"/>
</optionalConform>
</item>
</enum>
<enum name="CredentialRuleEnum">
<item value="0" name="Single" summary="Only one credential is required for lock operation">
<mandatoryConform>
<feature name="USR"/>
</mandatoryConform>
</item>
<item value="1" name="Dual" summary="Any two credentials are required for lock operation">
<optionalConform>
<feature name="USR"/>
</optionalConform>
</item>
<item value="2" name="Tri" summary="Any three credentials are required for lock operation">
<optionalConform>
<feature name="USR"/>
</optionalConform>
</item>
</enum>
<enum name="CredentialTypeEnum">
<item value="0" name="ProgrammingPIN" summary="Programming PIN code credential type">
<optionalConform/>
</item>
<item value="1" name="PIN" summary="PIN code credential type">
<mandatoryConform>
<feature name="PIN"/>
</mandatoryConform>
</item>
<item value="2" name="RFID" summary="RFID identifier credential type">
<mandatoryConform>
<feature name="RID"/>
</mandatoryConform>
</item>
<item value="3" name="Fingerprint" summary="Fingerprint identifier credential type">
<mandatoryConform>
<feature name="FGP"/>
</mandatoryConform>
</item>
<item value="4" name="FingerVein" summary="Finger vein identifier credential type">
<mandatoryConform>
<feature name="FGP"/>
</mandatoryConform>
</item>
<item value="5" name="Face" summary="Face identifier credential type">
<mandatoryConform>
<feature name="FACE"/>
</mandatoryConform>
</item>
</enum>
<enum name="DataOperationTypeEnum">
<item value="0" name="Add" summary="Data is being added or was added">
<mandatoryConform/>
</item>
<item value="1" name="Clear" summary="Data is being cleared or was cleared">
<mandatoryConform/>
</item>
<item value="2" name="Modify" summary="Data is being modified or was modified">
<mandatoryConform/>
</item>
</enum>
<enum name="DoorLockStatus">
<item value="2" summary="Entry would cause a duplicate credential/ID.">
<mandatoryConform/>
</item>
<item value="3" summary="Entry would replace an occupied slot.">
<mandatoryConform/>
</item>
</enum>
<enum name="DoorStateEnum">
<item value="0" name="DoorOpen" summary="Door state is open">
<mandatoryConform>
<feature name="DPS"/>
</mandatoryConform>
</item>
<item value="1" name="DoorClosed" summary="Door state is closed">
<mandatoryConform>
<feature name="DPS"/>
</mandatoryConform>
</item>
<item value="2" name="DoorJammed" summary="Door state is jammed">
<optionalConform>
<feature name="DPS"/>
</optionalConform>
</item>
<item value="3" name="DoorForcedOpen" summary="Door state is currently forced open">
<optionalConform>
<feature name="DPS"/>
</optionalConform>
</item>
<item value="4" name="DoorUnspecifiedError" summary="Door state is invalid for unspecified reason">
<optionalConform>
<feature name="DPS"/>
</optionalConform>
</item>
<item value="5" name="DoorAjar" summary="Door state is ajar">
<optionalConform>
<feature name="DPS"/>
</optionalConform>
</item>
</enum>
<enum name="LockDataTypeEnum">
<item value="0" name="Unspecified" summary="Unspecified or manufacturer specific lock user data added, cleared, or modified.">
<optionalConform/>
</item>
<item value="1" name="ProgrammingCode" summary="Lock programming PIN code was added, cleared, or modified.">
<optionalConform/>
</item>
<item value="2" name="UserIndex" summary="Lock user index was added, cleared, or modified.">
<mandatoryConform/>
</item>
<item value="3" name="WeekDaySchedule" summary="Lock user week day schedule was added, cleared, or modified.">
<mandatoryConform>
<feature name="WDSCH"/>
</mandatoryConform>
</item>
<item value="4" name="YearDaySchedule" summary="Lock user year day schedule was added, cleared, or modified.">
<mandatoryConform>
<feature name="YDSCH"/>
</mandatoryConform>
</item>
<item value="5" name="HolidaySchedule" summary="Lock holiday schedule was added, cleared, or modified.">
<mandatoryConform>
<feature name="HDSCH"/>
</mandatoryConform>
</item>
<item value="6" name="PIN" summary="Lock user PIN code was added, cleared, or modified.">
<mandatoryConform>
<feature name="PIN"/>
</mandatoryConform>
</item>
<item value="7" name="RFID" summary="Lock user RFID code was added, cleared, or modified.">
<mandatoryConform>
<feature name="RID"/>
</mandatoryConform>
</item>
<item value="8" name="Fingerprint" summary="Lock user fingerprint was added, cleared, or modified.">
<mandatoryConform>
<feature name="FGP"/>
</mandatoryConform>
</item>
<item value="9" name="FingerVein" summary="Lock user finger-vein information was added, cleared, or modified.">
<mandatoryConform>
<feature name="FGP"/>
</mandatoryConform>
</item>
<item value="10" name="Face" summary="Lock user face information was added, cleared, or modified.">
<mandatoryConform>
<feature name="FACE"/>
</mandatoryConform>
</item>
</enum>
<enum name="LockOperationTypeEnum">
<item value="0" name="Lock" summary="Lock operation">
<mandatoryConform/>
</item>
<item value="1" name="Unlock" summary="Unlock operation">
<mandatoryConform/>
</item>
<item value="2" name="NonAccessUserEvent" summary="Triggered by keypad entry for user with User Type set to Non Access User">
<optionalConform/>
</item>
<item value="3" name="ForcedUserEvent" summary="Triggered by using a user with UserType set to Forced User">
<optionalConform/>
</item>
<item value="4" name="Unlatch" summary="Unlatch operation">
<mandatoryConform/>
</item>
</enum>
<enum name="OperatingModeEnum">
<item value="0" name="Normal">
<mandatoryConform/>
</item>
<item value="1" name="Vacation">
<optionalConform/>
</item>
<item value="2" name="Privacy">
<optionalConform/>
</item>
<item value="3" name="NoRemoteLockUnlock">
<mandatoryConform/>
</item>
<item value="4" name="Passage">
<optionalConform/>
</item>
</enum>
<enum name="OperationErrorEnum">
<item value="0" name="Unspecified" summary="Lock/unlock error caused by unknown or unspecified source">
<optionalConform/>
</item>
<item value="1" name="InvalidCredential" summary="Lock/unlock error caused by invalid PIN, RFID, fingerprint or other credential">
<mandatoryConform>
<feature name="USR"/>
</mandatoryConform>
</item>
<item value="2" name="DisabledUserDenied" summary="Lock/unlock error caused by disabled USER or credential">
<mandatoryConform/>
</item>
<item value="3" name="Restricted" summary="Lock/unlock error caused by schedule restriction">
<mandatoryConform>
<orTerm>
<feature name="WDSCH"/>
<feature name="YDSCH"/>
</orTerm>
</mandatoryConform>
</item>
<item value="4" name="InsufficientBattery" summary="Lock/unlock error caused by insufficient battery power left to safely actuate the lock">
<optionalConform/>
</item>
</enum>
<enum name="OperationSourceEnum">
<item value="0" name="Unspecified" summary="Lock/unlock operation came from unspecified source">
<optionalConform/>
</item>
<item value="1" name="Manual" summary="Lock/unlock operation came from manual operation (key, thumbturn, handle, etc).">
<optionalConform/>
</item>
<item value="2" name="ProprietaryRemote" summary="Lock/unlock operation came from prioretary remote source (e.g. vendor app/cloud)">
<optionalConform/>
</item>
<item value="3" name="Keypad" summary="Lock/unlock operation came from keypad">
<optionalConform/>
</item>
<item value="4" name="Auto" summary="Lock/unlock operation came from lock automatically (e.g. relock timer)">
<optionalConform/>
</item>
<item value="5" name="Button" summary="Lock/unlock operation came from lock button (e.g. one touch or button)">
<optionalConform/>
</item>
<item value="6" name="Schedule" summary="Lock/unlock operation came from lock due to a schedule">
<mandatoryConform>
<feature name="HDSCH"/>
</mandatoryConform>
</item>
<item value="7" name="Remote" summary="Lock/unlock operation came from remote node">
<mandatoryConform/>
</item>
<item value="8" name="RFID" summary="Lock/unlock operation came from RFID card">
<mandatoryConform>
<feature name="RID"/>
</mandatoryConform>
</item>
<item value="9" name="Biometric" summary="Lock/unlock operation came from biometric source (e.g. face, fingerprint/fingervein)">
<optionalConform>
<feature name="USR"/>
</optionalConform>
</item>
</enum>
<enum name="UserStatusEnum">
<item value="0" name="Available">
<mandatoryConform/>
</item>
<item value="1" name="OccupiedEnabled">
<mandatoryConform/>
</item>
<item value="3" name="OccupiedDisabled">
<optionalConform/>
</item>
</enum>
<enum name="UserTypeEnum">
<item value="0" name="UnrestrictedUser">
<mandatoryConform/>
</item>
<item value="1" name="YearDayScheduleUser">
<optionalConform/>
</item>
<item value="2" name="WeekDayScheduleUser">
<optionalConform/>
</item>
<item value="3" name="ProgrammingUser">
<optionalConform/>
</item>
<item value="4" name="NonAccessUser">
<optionalConform/>
</item>
<item value="5" name="ForcedUser">
<optionalConform>
<feature name="USR"/>
</optionalConform>
</item>
<item value="6" name="DisposableUser">
<optionalConform>
<feature name="USR"/>
</optionalConform>
</item>
<item value="7" name="ExpiringUser">
<optionalConform>
<feature name="USR"/>
</optionalConform>
</item>
<item value="8" name="ScheduleRestrictedUser">
<mandatoryConform>
<orTerm>
<feature name="WDSCH"/>
<feature name="YDSCH"/>
</orTerm>
</mandatoryConform>
</item>
<item value="9" name="RemoteOnlyUser">
<mandatoryConform>
<andTerm>
<feature name="USR"/>
<feature name="COTA"/>
<feature name="PIN"/>
</andTerm>
</mandatoryConform>
</item>
</enum>
<bitmap name="DaysMaskMap">
<bitfield name="Sunday" bit="0">
<mandatoryConform/>
</bitfield>
<bitfield name="Monday" bit="1">
<mandatoryConform/>
</bitfield>
<bitfield name="Tuesday" bit="2">
<mandatoryConform/>
</bitfield>
<bitfield name="Wednesday" bit="3">
<mandatoryConform/>
</bitfield>
<bitfield name="Thursday" bit="4">
<mandatoryConform/>
</bitfield>
<bitfield name="Friday" bit="5">
<mandatoryConform/>
</bitfield>
<bitfield name="Saturday" bit="6">
<mandatoryConform/>
</bitfield>
</bitmap>
<struct name="CredentialStruct">
<field id="0" name="CredentialType" type="CredentialTypeEnum">
<access read="true" write="true"/>
<mandatoryConform/>
</field>
<field id="1" name="CredentialIndex" type="uint16" default="0">
<access read="true" write="true"/>
<mandatoryConform/>
</field>
</struct>
</dataTypes>
<attributes>
<attribute id="0x0000" name="LockState" type="enum8">
<enum>
<item value="0" name="Not Fully Locked" summary="Lock state is not fully locked">
<mandatoryConform/>
</item>
<item value="1" name="Locked" summary="Lock state is fully locked">
<mandatoryConform/>
</item>
<item value="2" name="Unlocked" summary="Lock state is fully unlocked">
<mandatoryConform/>
</item>
<item value="3" name="Unlatched" summary="Lock state is fully unlocked and the latch is pulled">
<optionalConform/>
</item>
</enum>
<access read="true" readPrivilege="view"/>
<quality changeOmitted="false" nullable="true" scene="true" persistence="volatile" reportable="true"/>
<mandatoryConform/>
<constraint type="desc"/>
</attribute>
<attribute id="0x0001" name="LockType" type="enum8">
<enum>
<item value="0" name="Dead bolt" summary="Physical lock type is dead bolt">
<mandatoryConform/>
</item>
<item value="1" name="Magnetic" summary="Physical lock type is magnetic">
<mandatoryConform/>
</item>
<item value="2" name="Other" summary="Physical lock type is other">
<mandatoryConform/>
</item>
<item value="3" name="Mortise" summary="Physical lock type is mortise">
<mandatoryConform/>
</item>
<item value="4" name="Rim" summary="Physical lock type is rim">
<mandatoryConform/>
</item>
<item value="5" name="Latch Bolt" summary="Physical lock type is latch bolt">
<mandatoryConform/>
</item>
<item value="6" name="Cylindrical Lock" summary="Physical lock type is cylindrical lock">
<mandatoryConform/>
</item>
<item value="7" name="Tubular Lock" summary="Physical lock type is tubular lock">
<mandatoryConform/>
</item>
<item value="8" name="Interconnected Lock" summary="Physical lock type is interconnected lock">
<mandatoryConform/>
</item>
<item value="9" name="Dead Latch" summary="Physical lock type is dead latch">
<mandatoryConform/>
</item>
<item value="10" name="Door Furniture" summary="Physical lock type is door furniture">
<mandatoryConform/>
</item>
<item value="11" name="Eurocylinder" summary="Physical lock type is eurocylinder">
<mandatoryConform/>
</item>
</enum>
<access read="true" readPrivilege="view"/>
<mandatoryConform/>
<constraint type="desc"/>
</attribute>
<attribute id="0x0002" name="ActuatorEnabled" type="bool">
<access read="true" readPrivilege="view"/>
<mandatoryConform/>
</attribute>
<attribute id="0x0003" name="DoorState" type="enum8">
<access read="true" readPrivilege="view"/>
<quality changeOmitted="false" nullable="true" scene="false" persistence="volatile" reportable="true"/>
<mandatoryConform>
<feature name="DPS"/>
</mandatoryConform>
<constraint type="desc"/>
</attribute>
<attribute id="0x0004" name="DoorOpenEvents" type="uint32">
<access read="true" write="true" readPrivilege="view" writePrivilege="manage"/>
<optionalConform>
<feature name="DPS"/>
</optionalConform>
</attribute>
<attribute id="0x0005" name="DoorClosedEvents" type="uint32">
<access read="true" write="true" readPrivilege="view" writePrivilege="manage"/>
<optionalConform>
<feature name="DPS"/>
</optionalConform>
</attribute>
<attribute id="0x0006" name="OpenPeriod" type="uint16">
<access read="true" write="true" readPrivilege="view" writePrivilege="manage"/>
<optionalConform>
<feature name="DPS"/>
</optionalConform>
</attribute>
<attribute id="0x0010" name="NumberOfLogRecordsSupported" type="uint16" default="0">
<access read="true" readPrivilege="view"/>
<quality changeOmitted="false" nullable="false" scene="false" persistence="fixed" reportable="false"/>
<mandatoryConform>
<feature name="LOG"/>
</mandatoryConform>
</attribute>
<attribute id="0x0011" name="NumberOfTotalUsersSupported" type="uint16" default="0">
<access read="true" readPrivilege="view"/>
<quality changeOmitted="false" nullable="false" scene="false" persistence="fixed" reportable="false"/>
<mandatoryConform>
<feature name="USR"/>
</mandatoryConform>
</attribute>
<attribute id="0x0012" name="NumberOfPINUsersSupported" type="uint16" default="0">
<access read="true" readPrivilege="view"/>
<quality changeOmitted="false" nullable="false" scene="false" persistence="fixed" reportable="false"/>
<mandatoryConform>
<feature name="PIN"/>
</mandatoryConform>
</attribute>
<attribute id="0x0013" name="NumberOfRFIDUsersSupported" type="uint16" default="0">
<access read="true" readPrivilege="view"/>
<quality changeOmitted="false" nullable="false" scene="false" persistence="fixed" reportable="false"/>
<mandatoryConform>
<feature name="RID"/>
</mandatoryConform>
</attribute>
<attribute id="0x0014" name="NumberOfWeekDaySchedulesSupportedPerUser" type="uint8" default="0">
<access read="true" readPrivilege="view"/>
<quality changeOmitted="false" nullable="false" scene="false" persistence="fixed" reportable="false"/>
<mandatoryConform>
<feature name="WDSCH"/>
</mandatoryConform>
</attribute>
<attribute id="0x0015" name="NumberOfYearDaySchedulesSupportedPerUser" type="uint8" default="0">
<access read="true" readPrivilege="view"/>
<quality changeOmitted="false" nullable="false" scene="false" persistence="fixed" reportable="false"/>
<mandatoryConform>
<feature name="YDSCH"/>
</mandatoryConform>
</attribute>
<attribute id="0x0016" name="NumberOfHolidaySchedulesSupported" type="uint8" default="0">
<access read="true" readPrivilege="view"/>
<quality changeOmitted="false" nullable="false" scene="false" persistence="fixed" reportable="false"/>
<mandatoryConform>
<feature name="HDSCH"/>
</mandatoryConform>
</attribute>
<attribute id="0x0017" name="MaxPINCodeLength" type="uint8" default="MS">
<access read="true" readPrivilege="view"/>
<quality changeOmitted="false" nullable="false" scene="false" persistence="fixed" reportable="false"/>
<mandatoryConform>
<feature name="PIN"/>
</mandatoryConform>
</attribute>
<attribute id="0x0018" name="MinPINCodeLength" type="uint8" default="MS">
<access read="true" readPrivilege="view"/>
<quality changeOmitted="false" nullable="false" scene="false" persistence="fixed" reportable="false"/>
<mandatoryConform>
<feature name="PIN"/>
</mandatoryConform>
</attribute>
<attribute id="0x0019" name="MaxRFIDCodeLength" type="uint8" default="MS">
<access read="true" readPrivilege="view"/>
<quality changeOmitted="false" nullable="false" scene="false" persistence="fixed" reportable="false"/>
<mandatoryConform>
<feature name="RID"/>
</mandatoryConform>
</attribute>
<attribute id="0x001a" name="MinRFIDCodeLength" type="uint8" default="MS">
<access read="true" readPrivilege="view"/>
<quality changeOmitted="false" nullable="false" scene="false" persistence="fixed" reportable="false"/>
<mandatoryConform>
<feature name="RID"/>
</mandatoryConform>
</attribute>
<attribute id="0x001b" name="CredentialRulesSupport" type="map8" default="1">
<bitmap>
<bitfield name="Single" bit="0" summary="Only one credential is required for lock operation">
<mandatoryConform/>
</bitfield>
<bitfield name="Dual" bit="1" summary="Any two credentials are required for lock operation">
<mandatoryConform/>
</bitfield>
<bitfield name="Tri" bit="2" summary="Any three credentials are required for lock operation">
<mandatoryConform/>
</bitfield>
</bitmap>
<access read="true" readPrivilege="view"/>
<quality changeOmitted="false" nullable="false" scene="false" persistence="fixed" reportable="false"/>
<mandatoryConform>
<feature name="USR"/>
</mandatoryConform>
</attribute>
<attribute id="0x001c" name="NumberOfCredentialsSupportedPerUser" type="uint8" default="0">
<access read="true" readPrivilege="view"/>
<quality changeOmitted="false" nullable="false" scene="false" persistence="fixed" reportable="false"/>
<mandatoryConform>
<feature name="USR"/>
</mandatoryConform>
</attribute>
<attribute id="0x0020" name="EnableLogging" type="bool" default="0">
<access read="true" write="optional" readPrivilege="view" writePrivilege="admin"/>
<quality changeOmitted="false" nullable="false" scene="false" persistence="volatile" reportable="true"/>
<mandatoryConform>
<feature name="LOG"/>
</mandatoryConform>
</attribute>
<attribute id="0x0021" name="Language" type="string" default="MS">
<access read="true" write="optional" readPrivilege="view" writePrivilege="manage"/>
<quality changeOmitted="false" nullable="false" scene="false" persistence="volatile" reportable="true"/>
<optionalConform/>
<constraint type="maxLength" value="3"/>
</attribute>
<attribute id="0x0022" name="LEDSettings" type="uint8" default="0">
<access read="true" write="optional" readPrivilege="view" writePrivilege="manage"/>
<quality changeOmitted="false" nullable="false" scene="false" persistence="volatile" reportable="true"/>
<optionalConform/>
<constraint type="desc"/>
</attribute>
<attribute id="0x0023" name="AutoRelockTime" type="uint32" default="MS">
<access read="true" write="optional" readPrivilege="view" writePrivilege="manage"/>
<quality changeOmitted="false" nullable="false" scene="false" persistence="volatile" reportable="true"/>
<optionalConform/>
</attribute>
<attribute id="0x0024" name="SoundVolume" type="uint8" default="0">
<access read="true" write="optional" readPrivilege="view" writePrivilege="manage"/>
<quality changeOmitted="false" nullable="false" scene="false" persistence="volatile" reportable="true"/>
<optionalConform/>
<constraint type="desc"/>
</attribute>
<attribute id="0x0025" name="OperatingMode" type="enum8" default="0">
<access read="true" write="optional" readPrivilege="view" writePrivilege="manage"/>
<quality changeOmitted="false" nullable="false" scene="false" persistence="volatile" reportable="true"/>
<mandatoryConform/>
<constraint type="desc"/>
</attribute>
<attribute id="0x0026" name="SupportedOperatingModes" type="map16" default="0xFFF6">
<bitmap>
<bitfield name="Normal" bit="0">
<mandatoryConform/>
</bitfield>
<bitfield name="Vacation" bit="1">
<optionalConform/>
</bitfield>
<bitfield name="Privacy" bit="2">
<optionalConform/>
</bitfield>
<bitfield name="NoRemoteLockUnlock" bit="3">
<mandatoryConform/>
</bitfield>
<bitfield name="Passage" bit="4">
<optionalConform/>
</bitfield>
</bitmap>
<access read="true" readPrivilege="view"/>
<quality changeOmitted="false" nullable="false" scene="false" persistence="fixed" reportable="false"/>
<mandatoryConform/>
</attribute>
<attribute id="0x0027" name="DefaultConfigurationRegister" type="map16" default="0">
<bitmap>
<bitfield name="Local Programming" bit="0" summary="0 - Enable Local Programming Attribute default value is 0 (disabled)
1 - Enable Local Programming Attribute default value is 1 (enabled)">
<mandatoryConform/>
</bitfield>
<bitfield name="Keypad Interface" bit="1" summary="0 –Keypad Interface default access is disabled
1 - Keypad Interface default access is enabled">
<mandatoryConform/>
</bitfield>
<bitfield name="Remote Interface" bit="2" summary="0 - Remote Interface default access is disabled
1 - Remote Interface default access is enabled">
<mandatoryConform/>
</bitfield>
<bitfield name="Sound Volume" bit="5" summary="0 – Sound Volume attribute default value is 0 (Silent Mode)
1 – Sound Volume attribute default value is equal to something other
than 0">
<mandatoryConform/>
</bitfield>
<bitfield name="Auto Relock" bit="6" summary="0 – Auto Relock Time attribute default value = 0
1 – Auto Relock Time attribute default value is equal to something other
than 0">
<mandatoryConform/>
</bitfield>
<bitfield name="LED Settings" bit="7" summary="0 – LED Settings attribute default value = 0
1 – LED Settings attribute default value is equal to something other
than 0">
<mandatoryConform/>
</bitfield>
</bitmap>
<access read="true" readPrivilege="view"/>
<quality changeOmitted="false" nullable="false" scene="false" persistence="volatile" reportable="true"/>
<optionalConform/>
</attribute>
<attribute id="0x0028" name="EnableLocalProgramming" type="bool" default="1">
<access read="true" write="optional" readPrivilege="view" writePrivilege="admin"/>
<quality changeOmitted="false" nullable="false" scene="false" persistence="volatile" reportable="true"/>
<optionalConform/>
</attribute>
<attribute id="0x0029" name="EnableOneTouchLocking" type="bool" default="0">
<access read="true" write="true" readPrivilege="view" writePrivilege="manage"/>
<quality changeOmitted="false" nullable="false" scene="false" persistence="volatile" reportable="true"/>
<optionalConform/>
</attribute>
<attribute id="0x002a" name="EnableInsideStatusLED" type="bool" default="0">
<access read="true" write="true" readPrivilege="view" writePrivilege="manage"/>
<quality changeOmitted="false" nullable="false" scene="false" persistence="volatile" reportable="true"/>
<optionalConform/>
</attribute>
<attribute id="0x002b" name="EnablePrivacyModeButton" type="bool" default="0">
<access read="true" write="true" readPrivilege="view" writePrivilege="manage"/>
<quality changeOmitted="false" nullable="false" scene="false" persistence="volatile" reportable="true"/>
<optionalConform/>
</attribute>
<attribute id="0x002c" name="LocalProgrammingFeatures" type="map8" default="0">
<bitmap>
<bitfield name="Add Locally" bit="0" summary="0 - The ability to add Users/credentials/Schedules locally is disabled
1 - The ability to add Users/Credentials/Schedules locally is enabled">
<mandatoryConform/>
</bitfield>
<bitfield name="Modify Locally" bit="1" summary="0 - The ability to modify Users/credentials/Schedules locally is disabled
1 - The ability to modify Users/Credentials/Schedules locally is enabled">
<mandatoryConform/>
</bitfield>
<bitfield name="Clear Locally" bit="2" summary="0 - The ability to clear Users/credentials/Schedules locally is disabled
1 - The ability to clear Users/Credentials/Schedules locally is enabled">
<mandatoryConform/>
</bitfield>
<bitfield name="Adjust Locally" bit="3" summary="0 - The ability to adjust lock settings locally is disabled
1 - The ability to adjust lock settings locally is enabled">
<mandatoryConform/>
</bitfield>
</bitmap>
<access read="true" write="optional" readPrivilege="view" writePrivilege="admin"/>
<quality changeOmitted="false" nullable="false" scene="false" persistence="volatile" reportable="true"/>
<optionalConform/>
</attribute>
<attribute id="0x0030" name="WrongCodeEntryLimit" type="uint8" default="MS">
<access read="true" write="optional" readPrivilege="view" writePrivilege="admin"/>
<quality changeOmitted="false" nullable="false" scene="false" persistence="volatile" reportable="true"/>
<mandatoryConform>
<orTerm>
<feature name="PIN"/>
<feature name="RID"/>
</orTerm>
</mandatoryConform>
<constraint type="between" from="1" to="255"/>
</attribute>
<attribute id="0x0031" name="UserCodeTemporaryDisableTime" type="uint8" default="MS">
<access read="true" write="optional" readPrivilege="view" writePrivilege="admin"/>
<quality changeOmitted="false" nullable="false" scene="false" persistence="volatile" reportable="true"/>
<mandatoryConform>
<orTerm>
<feature name="PIN"/>
<feature name="RID"/>
</orTerm>
</mandatoryConform>
<constraint type="between" from="1" to="255"/>
</attribute>
<attribute id="0x0032" name="SendPINOverTheAir" type="bool" default="0">
<access read="true" write="optional" readPrivilege="view" writePrivilege="admin"/>
<quality changeOmitted="false" nullable="false" scene="false" persistence="volatile" reportable="true"/>
<optionalConform>
<andTerm>
<notTerm>
<feature name="USR"/>
</notTerm>
<feature name="PIN"/>
</andTerm>
</optionalConform>
</attribute>
<attribute id="0x0033" name="RequirePINforRemoteOperation" type="bool" default="0">
<access read="true" write="optional" readPrivilege="view" writePrivilege="admin"/>
<quality changeOmitted="false" nullable="false" scene="false" persistence="volatile" reportable="true"/>
<mandatoryConform>
<andTerm>
<feature name="COTA"/>
<feature name="PIN"/>
</andTerm>
</mandatoryConform>
</attribute>
<attribute id="0x0034" name="SecurityLevel" default="0">
<deprecateConform/>
</attribute>
<attribute id="0x0035" name="ExpiringUserTimeout" type="uint16" default="MS">
<access read="true" write="optional" readPrivilege="view" writePrivilege="admin"/>
<quality changeOmitted="false" nullable="false" scene="false" persistence="volatile" reportable="true"/>
<optionalConform>
<feature name="USR"/>
</optionalConform>
<constraint type="between" from="1" to="2880"/>
</attribute>
<attribute id="0x0040" name="AlarmMask" type="map16" default="0xFFFF">
<bitmap>
<bitfield name="Alarm Code 0" bit="0" summary="Locking Mechanism Jammed">
<mandatoryConform/>
</bitfield>
<bitfield name="Alarm Code 1" bit="1" summary="Lock Reset to Factory Defaults">
<optionalConform/>
</bitfield>
<bitfield name="Alarm Code 2" bit="2" summary="Reserved">
<optionalConform/>
</bitfield>
<bitfield name="Alarm Code 3" bit="3" summary="RF Module Power Cycled">
<optionalConform/>
</bitfield>
<bitfield name="Alarm Code 4" bit="4" summary="Tamper Alarm - wrong code entry limit">
<mandatoryConform>
<orTerm>
<feature name="PIN"/>
<feature name="RID"/>
</orTerm>
</mandatoryConform>
</bitfield>
<bitfield name="Alarm Code 5" bit="5" summary="Tamper Alarm - front escutcheon removed from main">
<optionalConform/>
</bitfield>
<bitfield name="Alarm Code 6" bit="6" summary="Forced Door Open under Door Locked Condition">
<optionalConform/>
</bitfield>
</bitmap>
<access read="true" write="true" readPrivilege="view" writePrivilege="admin"/>
<quality changeOmitted="false" nullable="false" scene="false" persistence="volatile" reportable="true"/>
<optionalConform/>
</attribute>
<attribute id="0x0041" name="KeypadOperationEventMask" type="map16" default="0xFFFF">
<bitmap>
<bitfield name="Operation Event Code 0" bit="0" summary="Unknown or manufacturer-specific keypad operation event">
<mandatoryConform/>
</bitfield>
<bitfield name="Operation Event Code 1" bit="1" summary="Lock, source: keypad">
<mandatoryConform/>
</bitfield>
<bitfield name="Operation Event Code 2" bit="2" summary="Unlock, source: keypad">
<mandatoryConform/>
</bitfield>
<bitfield name="Operation Event Code 3" bit="3" summary="Lock, source: keypad, error: invalid PIN">
<mandatoryConform/>
</bitfield>
<bitfield name="Operation Event Code 4" bit="4" summary="Lock, source: keypad, error: invalid schedule">
<mandatoryConform/>
</bitfield>
<bitfield name="Operation Event Code 5" bit="5" summary="Unlock, source: keypad, error: invalid code">
<mandatoryConform/>
</bitfield>
<bitfield name="Operation Event Code 6" bit="6" summary="Unlock, source: keypad, error: invalid schedule">
<mandatoryConform/>
</bitfield>
<bitfield name="Operation Event Code 15" bit="7" summary="Non-Access User operation event, source keypad.">
<mandatoryConform/>
</bitfield>
</bitmap>
<access read="true" write="true" readPrivilege="view" writePrivilege="admin"/>
<quality changeOmitted="false" nullable="false" scene="false" persistence="volatile" reportable="true"/>
<optionalConform>
<andTerm>
<feature name="NOT"/>
<feature name="PIN"/>
</andTerm>
</optionalConform>
</attribute>
<attribute id="0x0042" name="RemoteOperationEventMask" type="map16" default="0xFFFF">
<bitmap>
<bitfield name="Operation Event Code 0" bit="0" summary="Unknown or manufacturer-specific remote operation event">
<mandatoryConform/>
</bitfield>
<bitfield name="Operation Event Code 1" bit="1" summary="Lock, source: remote">
<mandatoryConform/>
</bitfield>
<bitfield name="Operation Event Code 2" bit="2" summary="Unlock, source: remote">
<mandatoryConform/>
</bitfield>
<bitfield name="Operation Event Code 3" bit="3" summary="Lock, source: remote, error: invalid code">
<mandatoryConform/>
</bitfield>
<bitfield name="Operation Event Code 4" bit="4" summary="Lock, source: remote, error: invalid schedule">
<mandatoryConform/>
</bitfield>
<bitfield name="Operation Event Code 5" bit="5" summary="Unlock, source: remote, error: invalid code">
<mandatoryConform/>
</bitfield>
<bitfield name="Operation Event Code 6" bit="6" summary="Unlock, source: remote, error: invalid schedule">
<mandatoryConform/>
</bitfield>
</bitmap>
<access read="true" write="true" readPrivilege="view" writePrivilege="admin"/>
<quality changeOmitted="false" nullable="false" scene="false" persistence="volatile" reportable="true"/>
<optionalConform>
<feature name="NOT"/>
</optionalConform>
</attribute>
<attribute id="0x0043" name="ManualOperationEventMask" type="map16" default="0xFFFF">
<bitmap>
<bitfield name="Operation Even Code 0" bit="0" summary="Unknown or manufacturer-specific manual operation event">
<mandatoryConform/>
</bitfield>
<bitfield name="Operation Even Code 1" bit="1" summary="Thumbturn Lock">
<mandatoryConform/>
</bitfield>
<bitfield name="Operation Even Code 2" bit="2" summary="Thumbturn Unlock">
<mandatoryConform/>
</bitfield>
<bitfield name="Operation Even Code 7" bit="3" summary="One touch lock">
<mandatoryConform/>
</bitfield>
<bitfield name="Operation Even Code 8" bit="4" summary="Key Lock">
<mandatoryConform/>
</bitfield>
<bitfield name="Operation Even Code 9" bit="5" summary="Key Unlock">
<mandatoryConform/>
</bitfield>
<bitfield name="Operation Even Code 10" bit="6" summary="Auto lock">
<mandatoryConform/>
</bitfield>
<bitfield name="Operation Even Code 11" bit="7" summary="Schedule Lock">
<mandatoryConform/>
</bitfield>
<bitfield name="Operation Even Code 12" bit="8" summary="Schedule Unlock">
<mandatoryConform/>
</bitfield>
<bitfield name="Operation Even Code 13" bit="9" summary="Manual Lock (Key or Thumbturn)">
<mandatoryConform/>
</bitfield>
<bitfield name="Operation Even Code 14" bit="10" summary="Manual Unlock (Key or Thumbturn)">
<mandatoryConform/>
</bitfield>
</bitmap>
<access read="true" write="true" readPrivilege="view" writePrivilege="admin"/>
<quality changeOmitted="false" nullable="false" scene="false" persistence="volatile" reportable="true"/>
<optionalConform>
<feature name="NOT"/>
</optionalConform>
</attribute>
<attribute id="0x0044" name="RFIDOperationEventMask" type="map16" default="0xFFFF">
<bitmap>
<bitfield name="Operation Event Code 0" bit="0" summary="Unknown or manufacturer-specific keypad operation event">
<mandatoryConform/>
</bitfield>
<bitfield name="Operation Event Code 1" bit="1" summary="Lock, source: RFID">
<mandatoryConform/>
</bitfield>
<bitfield name="Operation Event Code 2" bit="2" summary="Unlock, source: RFID">
<mandatoryConform/>
</bitfield>
<bitfield name="Operation Event Code 3" bit="3" summary="Lock, source: RFID, error: invalid RFID ID">
<mandatoryConform/>
</bitfield>
<bitfield name="Operation Event Code 4" bit="4" summary="Lock, source: RFID, error: invalid schedule">
<mandatoryConform/>
</bitfield>
<bitfield name="Operation Event Code 5" bit="5" summary="Unlock, source: RFID, error: invalid RFID ID">
<mandatoryConform/>
</bitfield>
<bitfield name="Operation Event Code 6" bit="6" summary="Unlock, source: RFID, error: invalid schedule">
<mandatoryConform/>
</bitfield>
</bitmap>
<access read="true" write="true" readPrivilege="view" writePrivilege="admin"/>
<quality changeOmitted="false" nullable="false" scene="false" persistence="volatile" reportable="true"/>
<optionalConform>
<andTerm>
<feature name="NOT"/>
<feature name="RID"/>
</andTerm>
</optionalConform>
</attribute>
<attribute id="0x0045" name="KeypadProgrammingEventMask" type="map16" default="0xFFFF">
<bitmap>
<bitfield name="Program Event Code 0" bit="0" summary="Unknown or manufacturer-specific keypad programming event">
<mandatoryConform/>
</bitfield>
<bitfield name="Program Event Code 1" bit="1" summary="Programming PIN code changed, source: keypad
User ID: programming user ID.
PIN: default or programming PIN code if codes can be sent over the air per attribute.
User type: default
User Status: default">
<mandatoryConform/>
</bitfield>
<bitfield name="Program Event Code 2" bit="2" summary="PIN added, source: keypad
User ID: user ID that was added.
PIN: code that was added (if codes can be sent over the air per attribute.)
User type: default or type added.
User Status: default or status added.">
<mandatoryConform/>
</bitfield>
<bitfield name="Program Event Code 3" bit="3" summary="PIN cleared, source: keypad
User ID: user ID that was cleared.
PIN: code that was cleared (if codes can be sent over the air per attribute.)
User type: default or type cleared.
User Status: default or status cleared.">
<mandatoryConform/>
</bitfield>
<bitfield name="Program Event Code 4" bit="4" summary="PIN changed
Source: keypad
User ID: user ID that was changed
PIN: code that was changed (if codes can be sent over the air per attribute.)
User type: default or type changed.
User Status: default or status changed.">
<mandatoryConform/>
</bitfield>
</bitmap>
<access read="true" write="true" readPrivilege="view" writePrivilege="admin"/>
<quality changeOmitted="false" nullable="false" scene="false" persistence="volatile" reportable="true"/>
<optionalConform>
<andTerm>
<feature name="NOT"/>
<feature name="PIN"/>
</andTerm>
</optionalConform>
</attribute>
<attribute id="0x0046" name="RemoteProgrammingEventMask" type="map16" default="0xFFFF">
<bitmap>
<bitfield name="Program Event Code 0" bit="0" summary="Unknown or manufacturer-specific remote programming event.">
<mandatoryConform/>
</bitfield>
<bitfield name="Program Event Code 2" bit="2" summary="PIN added, source remote
Same as keypad source above">
<mandatoryConform/>
</bitfield>
<bitfield name="Program Event Code 3" bit="3" summary="PIN cleared, source remote
Same as keypad source above.">
<mandatoryConform/>
</bitfield>
<bitfield name="Program Event Code 4" bit="4" summary="PIN changed
Source remote
Same as keypad source above">
<mandatoryConform/>
</bitfield>
<bitfield name="Program Event Code 5" bit="5" summary="RFID code added, Source remote">
<mandatoryConform/>
</bitfield>
<bitfield name="Program Event Code 6" bit="6" summary="RFID code cleared, Source remote">
<mandatoryConform/>
</bitfield>
</bitmap>
<access read="true" write="true" readPrivilege="view" writePrivilege="admin"/>
<quality changeOmitted="false" nullable="false" scene="false" persistence="volatile" reportable="true"/>
<optionalConform>
<feature name="NOT"/>
</optionalConform>
</attribute>
<attribute id="0x0047" name="RFIDProgrammingEventMask" type="map16" default="0xFFFF">
<bitmap>
<bitfield name="Program Event Code 0" bit="0" summary="Unknown or manufacturer-specific keypad programming event">
<mandatoryConform/>
</bitfield>
<bitfield name="Program Event Code 5" bit="5" summary="ID Added, Source: RFID
User ID: user ID that was added.
ID: ID that was added (if codes can be sent over the air per attribute.)
User Type: default or type added.
User Status: default or status added.">
<mandatoryConform/>
</bitfield>
<bitfield name="Program Event Code 6" bit="6" summary="ID cleared, Source: RFID
User ID: user ID that was cleared.
ID: ID that was cleared (if codes can be sent over the air per attribute.)
User Type: default or type cleared.
User Status: default or status cleared.">
<mandatoryConform/>
</bitfield>
</bitmap>
<access read="true" write="true" readPrivilege="view" writePrivilege="admin"/>
<quality changeOmitted="false" nullable="false" scene="false" persistence="volatile" reportable="true"/>
<optionalConform>
<andTerm>
<feature name="NOT"/>
<feature name="RID"/>
</andTerm>
</optionalConform>
</attribute>
</attributes>
<commands>
<command id="0x00" name="Lock Door" response="Y">
<access invokePrivilege="operate" timed="true"/>
<mandatoryConform/>
<field id="0" name="PINCode
PIN/RFID Code&amp;#8224;" type="octets">
<optionalConform>
<andTerm>
<feature name="COTA"/>
<feature name="PIN"/>
</andTerm>
</optionalConform>
</field>
</command>
<command id="0x01" name="Unlock Door" response="Y">
<access invokePrivilege="operate" timed="true"/>
<mandatoryConform/>
<field id="0" name="PINCode
PIN/RFID Code&amp;#8224;" type="octets">
<optionalConform>
<andTerm>
<feature name="COTA"/>
<feature name="PIN"/>
</andTerm>
</optionalConform>
</field>
</command>
<command id="0x02" name="Toggle" response="Y">
<access invokePrivilege="operate" timed="true"/>
<disallowConform/>
</command>
<command id="0x03" name="Unlock with Timeout" response="Y">
<access invokePrivilege="operate" timed="true"/>
<optionalConform/>
<field id="0" name="Timeout" type="uint16">
<mandatoryConform/>
</field>
<field id="1" name="PINCode
PIN/RFID Code&amp;#8224;" type="octets">
<optionalConform>
<andTerm>
<feature name="COTA"/>
<feature name="PIN"/>
</andTerm>
</optionalConform>
</field>
</command>
<command id="0x04" name="Get Log Record" response="Get Log Record Response">
<access invokePrivilege="manage"/>
<mandatoryConform>
<feature name="LOG"/>
</mandatoryConform>
<field id="0" name="Log Index" type="uint16">
<mandatoryConform/>
<constraint type="desc"/>
</field>
</command>
<command id="0x04" name="Get Log Record Response" direction="responseFromServer">
<access invokePrivilege="operate"/>
<mandatoryConform>
<feature name="LOG"/>
</mandatoryConform>
<field id="0" name="Log Entry ID" type="uint16">
<mandatoryConform/>
<constraint type="desc"/>
</field>
<field id="1" name="Timestamp" type="epoch-s">
<mandatoryConform/>
</field>
<field id="2" name="Event Type" type="enum8">
<enum>
<item value="0" name="Operation">
<mandatoryConform/>
</item>
<item value="1" name="Programming">
<mandatoryConform/>
</item>
<item value="2" name="Alarm">
<mandatoryConform/>
</item>
</enum>
<mandatoryConform/>
<constraint type="desc"/>
</field>
<field id="3" name="Source" type="uint8">
<mandatoryConform/>
<constraint type="desc"/>
</field>
<field id="4" name="Event ID/Alarm Code" type="uint8">
<mandatoryConform/>
<constraint type="desc"/>
</field>
<field id="5" name="User ID" type="uint16">
<mandatoryConform/>
<constraint type="desc"/>
</field>
<field id="6" name="PIN" type="octets">
<mandatoryConform/>
</field>
</command>
<command id="0x05" name="Set PIN Code" response="Y">
<access invokePrivilege="admin" timed="true"/>
<mandatoryConform>
<andTerm>
<notTerm>
<feature name="USR"/>
</notTerm>
<feature name="PIN"/>
</andTerm>
</mandatoryConform>
<field id="0" name="User ID" type="uint16">
<mandatoryConform/>
<constraint type="desc"/>
</field>
<field id="1" name="User Status" type="uint8" default="OccupiedEnabled">
<quality nullable="true"/>
<mandatoryConform/>
<constraint type="allowed" value="UserStatusEnum"/>
</field>
<field id="2" name="User Type" type="enum8" default="UnrestrictedUser">
<quality nullable="true"/>
<mandatoryConform/>
<constraint type="allowed" value="UserTypeEnum"/>
</field>
<field id="3" name="PIN" type="octets">
<mandatoryConform/>
</field>
</command>
<command id="0x06" name="Get PIN Code" response="Get PIN Code Response">
<access invokePrivilege="admin"/>
<mandatoryConform>
<andTerm>
<notTerm>
<feature name="USR"/>
</notTerm>
<feature name="PIN"/>
</andTerm>
</mandatoryConform>
<field id="0" name="User ID" type="uint16">
<mandatoryConform/>
<constraint type="desc"/>
</field>
</command>
<command id="0x06" name="Get PIN Code Response" direction="responseFromServer">
<access invokePrivilege="operate"/>
<mandatoryConform>
<andTerm>
<notTerm>
<feature name="USR"/>
</notTerm>
<feature name="PIN"/>
</andTerm>
</mandatoryConform>
<field id="0" name="User ID" type="uint16">
<mandatoryConform/>
<constraint type="desc"/>
</field>
<field id="1" name="User Status" type="uint8" default="Available">
<quality nullable="true"/>
<mandatoryConform/>
<constraint type="allowed" value="UserStatusEnum"/>
</field>
<field id="2" name="User Type" type="enum8">
<quality nullable="true"/>
<mandatoryConform/>
<constraint type="allowed" value="UserTypeEnum"/>
</field>
<field id="3" name="PIN Code" type="octets" default="empty">
<quality nullable="true"/>
<mandatoryConform/>
</field>
</command>
<command id="0x07" name="Clear PIN Code" response="Y">
<access invokePrivilege="admin" timed="true"/>
<mandatoryConform>
<andTerm>
<notTerm>
<feature name="USR"/>
</notTerm>
<feature name="PIN"/>
</andTerm>
</mandatoryConform>
<field id="0" name="PINSlotIndex
User ID&amp;#8224;" type="uint16">
<mandatoryConform/>
<constraint type="between" from="1" to="NumberOfPINUsersSupported"/>
<constraint type="allowed" value="0xFFFE"/>
</field>
</command>
<command id="0x08" name="Clear All PIN Codes" response="Y">
<access invokePrivilege="admin" timed="true"/>
<mandatoryConform>
<andTerm>
<notTerm>
<feature name="USR"/>
</notTerm>
<feature name="PIN"/>
</andTerm>
</mandatoryConform>
</command>
<command id="0x09" name="Set User Status" response="Y">
<access invokePrivilege="admin"/>
<mandatoryConform>
<andTerm>
<notTerm>
<feature name="USR"/>
</notTerm>
<orTerm>
<feature name="PIN"/>
<feature name="RID"/>
<feature name="FGP"/>
</orTerm>
</andTerm>
</mandatoryConform>
<field id="0" name="User ID" type="uint16">
<mandatoryConform/>
<constraint type="desc"/>
</field>
<field id="1" name="User Status" type="uint8">
<mandatoryConform/>
<constraint type="allowed" value="UserStatusEnum"/>
</field>
</command>
<command id="0x0a" name="Get User Status" response="Get User Status Response">
<access invokePrivilege="admin"/>
<mandatoryConform>
<andTerm>
<notTerm>
<feature name="USR"/>
</notTerm>
<orTerm>
<feature name="PIN"/>
<feature name="RID"/>
<feature name="FGP"/>
</orTerm>
</andTerm>
</mandatoryConform>
<field id="0" name="User ID" type="uint16">
<mandatoryConform/>
<constraint type="desc"/>
</field>
</command>
<command id="0x0a" name="Get User Status Response" direction="responseFromServer">
<access invokePrivilege="operate"/>
<mandatoryConform>
<notTerm>
<feature name="USR"/>
</notTerm>
</mandatoryConform>
<field id="0" name="User ID" type="uint16">
<mandatoryConform/>
<constraint type="desc"/>
</field>
<field id="1" name="User Status" type="enum8">
<mandatoryConform/>
<constraint type="allowed" value="UserStatusEnum"/>
</field>
</command>
<command id="0x0b" name="Set Week Day Schedule" response="Y">
<access invokePrivilege="admin"/>
<mandatoryConform>
<feature name="WDSCH"/>
</mandatoryConform>
<field id="0" name="WeekDayIndex
Schedule ID&amp;#8224;" type="uint8">
<mandatoryConform/>
<constraint type="between" from="1" to="NumberOfWeekDaySchedulesSupportedPerUser"/>
</field>
<field id="1" name="UserIndex
User ID&amp;#8224;" type="uint16">
<mandatoryConform/>
<constraint type="between" from="1" to="NumberOfTotalUsersSupported"/>
</field>
<field id="2" name="DaysMask" type="DaysMaskMap">
<mandatoryConform/>
</field>
<field id="3" name="StartHour" type="uint8">
<mandatoryConform/>
<constraint type="between" from="0" to="23"/>
</field>
<field id="4" name="StartMinute" type="uint8">
<mandatoryConform/>
<constraint type="between" from="0" to="59"/>
</field>
<field id="5" name="EndHour" type="uint8">
<mandatoryConform/>
<constraint type="between" from="0" to="23"/>
</field>
<field id="6" name="EndMinute" type="uint8">
<mandatoryConform/>
<constraint type="between" from="0" to="59"/>
</field>
</command>
<command id="0x0c" name="Get Week Day Schedule" response="Get Week Day Schedule Response">
<access invokePrivilege="admin"/>
<mandatoryConform>
<feature name="WDSCH"/>
</mandatoryConform>
<field id="0" name="WeekDayIndex
Schedule ID&amp;#8224;" type="uint8">
<mandatoryConform/>
<constraint type="between" from="1" to="NumberOfWeekDaySchedulesSupportedPerUser"/>
</field>
<field id="1" name="UserIndex
User ID&amp;#8224;" type="uint16">
<mandatoryConform/>
<constraint type="between" from="1" to="NumberOfTotalUsersSupported"/>
</field>
</command>
<command id="0x0c" name="Get Week Day Schedule Response" direction="responseFromServer">
<access invokePrivilege="operate"/>
<mandatoryConform>
<feature name="WDSCH"/>
</mandatoryConform>
<field id="0" name="WeekDayIndex
Schedule ID&amp;#8224;" type="uint8">
<mandatoryConform/>
<constraint type="between" from="1" to="NumberOfWeekDaySchedulesSupportedPerUser"/>
</field>
<field id="1" name="UserIndex
User ID&amp;#8224;" type="uint16">
<mandatoryConform/>
<constraint type="between" from="1" to="NumberOfTotalUsersSupported"/>
</field>
<field id="2" name="Status" type="enum8" default="SUCCESS">
<mandatoryConform/>
<constraint type="desc"/>
</field>
<field id="3" name="DaysMask" type="DaysMaskMap">
<optionalConform/>
</field>
<field id="4" name="StartHour" type="uint8">
<optionalConform/>
<constraint type="between" from="0" to="23"/>
</field>
<field id="5" name="StartMinute" type="uint8">
<optionalConform/>
<constraint type="between" from="0" to="59"/>
</field>
<field id="6" name="EndHour" type="uint8">
<optionalConform/>
<constraint type="between" from="0" to="23"/>
</field>
<field id="7" name="EndMinute" type="uint8">
<optionalConform/>
<constraint type="between" from="0" to="59"/>
</field>
</command>
<command id="0x0d" name="Clear Week Day Schedule" response="Y">
<access invokePrivilege="admin"/>
<mandatoryConform>
<feature name="WDSCH"/>
</mandatoryConform>
<field id="0" name="WeekDayIndex
Schedule ID&amp;#8224;" type="uint8">
<mandatoryConform/>
<constraint type="between" from="1" to="NumberOfWeekDaySchedulesSupportedPerUser"/>
<constraint type="allowed" value="0xFE"/>
</field>
<field id="1" name="UserIndex
User ID&amp;#8224;" type="uint16">
<mandatoryConform/>
<constraint type="between" from="1" to="NumberOfTotalUsersSupported"/>
</field>
</command>
<command id="0x0e" name="Set Year Day Schedule" response="Y">
<access invokePrivilege="admin"/>
<mandatoryConform>
<feature name="YDSCH"/>
</mandatoryConform>
<field id="0" name="YearDayIndex
Schedule ID&amp;#8224;" type="uint8">
<mandatoryConform/>
<constraint type="between" from="1" to="NumberOfYearDaySchedulesSupportedPerUser"/>
</field>
<field id="1" name="UserIndex
User ID&amp;#8224;" type="uint16">
<mandatoryConform/>
<constraint type="between" from="1" to="NumberOfTotalUsersSupported"/>
</field>
<field id="2" name="LocalStartTime" type="epoch-s">
<mandatoryConform/>
</field>
<field id="3" name="LocalEndTime" type="epoch-s">
<mandatoryConform/>
</field>
</command>
<command id="0x0f" name="Get Year Day Schedule" response="Get Year Day Schedule Response">
<access invokePrivilege="admin"/>
<mandatoryConform>
<feature name="YDSCH"/>
</mandatoryConform>
<field id="0" name="YearDayIndex
Schedule ID&amp;#8224;" type="uint8">
<mandatoryConform/>
<constraint type="between" from="1" to="NumberOfYearDaySchedulesSupportedPerUser"/>
</field>
<field id="1" name="UserIndex
User ID&amp;#8224;" type="uint16">
<mandatoryConform/>
<constraint type="between" from="1" to="NumberOfTotalUsersSupported"/>
</field>
</command>
<command id="0x0f" name="Get Year Day Schedule Response" direction="responseFromServer">
<access invokePrivilege="operate"/>
<mandatoryConform>
<feature name="YDSCH"/>
</mandatoryConform>
<field id="0" name="YearDayIndex
Schedule ID&amp;#8224;" type="uint8">
<mandatoryConform/>
<constraint type="between" from="1" to="NumberOfYearDaySchedulesSupportedPerUser"/>
</field>
<field id="1" name="UserIndex
User ID&amp;#8224;" type="uint16">
<mandatoryConform/>
<constraint type="between" from="1" to="NumberOfTotalUsersSupported"/>
</field>
<field id="2" name="Status" type="enum8" default="SUCCESS">
<mandatoryConform/>
<constraint type="desc"/>
</field>
<field id="2" name="LocalStartTime" type="epoch-s">
<optionalConform/>
</field>
<field id="3" name="LocalEndTime" type="epoch-s">
<optionalConform/>
</field>
</command>
<command id="0x10" name="Clear Year Day Schedule" response="Y">
<access invokePrivilege="admin"/>
<mandatoryConform>
<feature name="YDSCH"/>
</mandatoryConform>
<field id="0" name="YearDayIndex
Schedule ID&amp;#8224;" type="uint8">
<mandatoryConform/>
<constraint type="between" from="1" to="NumberOfYearDaySchedulesSupportedPerUser"/>
<constraint type="allowed" value="0xFE"/>
</field>
<field id="1" name="UserIndex
User ID&amp;#8224;" type="uint16">
<mandatoryConform/>
<constraint type="between" from="1" to="NumberOfTotalUsersSupported"/>
</field>
</command>
<command id="0x11" name="Set Holiday Schedule" response="Y">
<access invokePrivilege="admin"/>
<mandatoryConform>
<feature name="HDSCH"/>
</mandatoryConform>
<field id="0" name="HolidayIndex
Holiday Schedule ID&amp;#8224;" type="uint8">
<mandatoryConform/>
<constraint type="between" from="1" to="NumberOfHolidaySchedulesSupported"/>
</field>
<field id="1" name="LocalStartTime" type="epoch-s">
<mandatoryConform/>
</field>
<field id="2" name="LocalEndTime" type="epoch-s">
<mandatoryConform/>
</field>
<field id="3" name="OperatingMode" type="OperatingModeEnum">
<mandatoryConform/>
</field>
</command>
<command id="0x12" name="Get Holiday Schedule" response="Get Holiday Schedule Response">
<access invokePrivilege="admin"/>
<mandatoryConform>
<feature name="HDSCH"/>
</mandatoryConform>
<field id="0" name="HolidayIndex
Holiday Schedule ID&amp;#8224;" type="uint8">
<mandatoryConform/>
<constraint type="between" from="1" to="NumberOfHolidaySchedulesSupported"/>
</field>
</command>
<command id="0x12" name="Get Holiday Schedule Response" direction="responseFromServer">
<access invokePrivilege="operate"/>
<mandatoryConform>
<feature name="HDSCH"/>
</mandatoryConform>
<field id="0" name="HolidayIndex
Holiday Schedule ID&amp;#8224;" type="uint8">
<mandatoryConform/>
<constraint type="between" from="1" to="NumberOfHolidaySchedulesSupported"/>
</field>
<field id="1" name="Status" type="enum8" default="SUCCESS">
<mandatoryConform/>
<constraint type="desc"/>
</field>
<field id="2" name="LocalStartTime" type="epoch-s">
<quality nullable="true"/>
<optionalConform/>
</field>
<field id="3" name="Local End Time" type="epoch-s">
<quality nullable="true"/>
<optionalConform/>
</field>
<field id="4" name="OperatingMode" type="OperatingModeEnum">
<quality nullable="true"/>
<optionalConform/>
</field>
</command>
<command id="0x13" name="Clear Holiday Schedule" response="Y">
<access invokePrivilege="admin"/>
<mandatoryConform>
<feature name="HDSCH"/>
</mandatoryConform>
<field id="0" name="HolidayIndex
Holiday Schedule ID&amp;#8224;" type="uint8">
<mandatoryConform/>
<constraint type="between" from="1" to="NumberOfHolidaySchedulesSupported"/>
<constraint type="allowed" value="0xFE"/>
</field>
</command>
<command id="0x14" name="Set User Type" response="Y">
<access invokePrivilege="admin"/>
<mandatoryConform>
<andTerm>
<notTerm>
<feature name="USR"/>
</notTerm>
<orTerm>
<feature name="PIN"/>
<feature name="RID"/>
<feature name="FGP"/>
</orTerm>
</andTerm>
</mandatoryConform>
<field id="0" name="User ID" type="uint16">
<mandatoryConform/>
<constraint type="desc"/>
</field>
<field id="1" name="User Type" type="enum8">
<mandatoryConform/>
<constraint type="allowed" value="UserTypeEnum"/>
</field>
</command>
<command id="0x15" name="Get User Type" response="Get User Type Response">
<access invokePrivilege="admin"/>
<mandatoryConform>
<andTerm>
<notTerm>
<feature name="USR"/>
</notTerm>
<orTerm>
<feature name="PIN"/>
<feature name="RID"/>
<feature name="FGP"/>
</orTerm>
</andTerm>
</mandatoryConform>
<field id="0" name="User ID" type="uint16">
<mandatoryConform/>
<constraint type="desc"/>
</field>
</command>
<command id="0x15" name="Get User Type Response" direction="responseFromServer">
<access invokePrivilege="operate"/>
<mandatoryConform>
<notTerm>
<feature name="USR"/>
</notTerm>
</mandatoryConform>
<field id="0" name="User ID" type="uint16">
<mandatoryConform/>
<constraint type="desc"/>
</field>
<field id="1" name="User Type" type="enum8">
<mandatoryConform/>
<constraint type="allowed" value="UserTypeEnum"/>
</field>
</command>
<command id="0x16" name="Set RFID Code" response="Y">
<access invokePrivilege="admin" timed="true"/>
<mandatoryConform>
<andTerm>
<notTerm>
<feature name="USR"/>
</notTerm>
<feature name="RID"/>
</andTerm>
</mandatoryConform>
<field id="0" name="User ID" type="uint16">
<mandatoryConform/>
<constraint type="desc"/>
</field>
<field id="1" name="User Status" type="uint8" default="OccupiedEnabled">
<quality nullable="true"/>
<mandatoryConform/>
<constraint type="allowed" value="UserStatusEnum"/>
</field>
<field id="2" name="User Type" type="enum8" default="UnrestrictedUser">
<quality nullable="true"/>
<mandatoryConform/>
<constraint type="allowed" value="UserTypeEnum"/>
</field>
<field id="3" name="RFID Code" type="octets">
<mandatoryConform/>
</field>
</command>
<command id="0x17" name="Get RFID Code" response="Get RFID Code Response">
<access invokePrivilege="admin"/>
<mandatoryConform>
<andTerm>
<notTerm>
<feature name="USR"/>
</notTerm>
<feature name="RID"/>
</andTerm>
</mandatoryConform>
<field id="0" name="User ID" type="uint16">
<mandatoryConform/>
<constraint type="desc"/>
</field>
</command>
<command id="0x17" name="Get RFID Code Response" direction="responseFromServer">
<access invokePrivilege="operate"/>
<mandatoryConform>
<andTerm>
<notTerm>
<feature name="USR"/>
</notTerm>
<feature name="RID"/>
</andTerm>
</mandatoryConform>
<field id="0" name="User ID" type="uint16">
<mandatoryConform/>
<constraint type="desc"/>
</field>
<field id="1" name="User Status" type="enum8" default="Available">
<quality nullable="true"/>
<mandatoryConform/>
<constraint type="allowed" value="UserStatusEnum"/>
</field>
<field id="2" name="User Type" type="enum8">
<quality nullable="true"/>
<mandatoryConform/>
<constraint type="allowed" value="UserTypeEnum"/>
</field>
<field id="3" name="RFID Code" type="octets" default="empty">
<quality nullable="true"/>
<mandatoryConform/>
</field>
</command>
<command id="0x18" name="Clear RFID Code" response="Y">
<access invokePrivilege="admin" timed="true"/>
<mandatoryConform>
<andTerm>
<notTerm>
<feature name="USR"/>
</notTerm>
<feature name="RID"/>
</andTerm>
</mandatoryConform>
<field id="0" name="RFIDSlotIndex
User ID&amp;#8224;" type="uint16">
<mandatoryConform/>
<constraint type="between" from="1" to="NumberOfRFIDUsersSupported"/>
<constraint type="allowed" value="0xFFFE"/>
</field>
</command>
<command id="0x19" name="Clear All RFID Codes" response="Y">
<access invokePrivilege="admin" timed="true"/>
<mandatoryConform>
<andTerm>
<notTerm>
<feature name="USR"/>
</notTerm>
<feature name="RID"/>
</andTerm>
</mandatoryConform>
</command>
<command id="0x1a" name="Set User" response="Y">
<access invokePrivilege="admin" timed="true"/>
<mandatoryConform>
<feature name="USR"/>
</mandatoryConform>
<field id="0" name="OperationType" type="DataOperationTypeEnum">
<mandatoryConform/>
<constraint type="allowed" value="Add"/>
<constraint type="allowed" value="Modify"/>
</field>
<field id="1" name="UserIndex" type="uint16">
<mandatoryConform/>
<constraint type="between" from="1" to="NumberOfTotalUsersSupported"/>
</field>
<field id="2" name="UserName" type="string" default="empty">
<quality nullable="true"/>
<mandatoryConform/>
<constraint type="maxLength" value="10"/>
</field>
<field id="3" name="UserUniqueID" type="uint32" default="0xFFFFFFFF">
<quality nullable="true"/>
<mandatoryConform/>
</field>
<field id="4" name="UserStatus" type="UserStatusEnum" default="OccupiedEnabled">
<quality nullable="true"/>
<mandatoryConform/>
<constraint type="allowed" value="OccupiedEnabled"/>
<constraint type="allowed" value="OccupiedDisabled"/>
</field>
<field id="5" name="UserType" type="UserTypeEnum" default="UnrestrictedUser">
<quality nullable="true"/>
<mandatoryConform/>
<constraint type="allowed" value="UnrestrictedUser"/>
<constraint type="allowed" value="NonAccessUser"/>
<constraint type="allowed" value="ForcedUser"/>
<constraint type="allowed" value="DisposableUser"/>
<constraint type="allowed" value="ExpiringUser"/>
<constraint type="allowed" value="ScheduleRestrictedUser"/>
<constraint type="allowed" value="RemoteOnlyUser"/>
</field>
<field id="6" name="CredentialRule" type="CredentialRuleEnum" default="Single">
<quality nullable="true"/>
<mandatoryConform/>
</field>
</command>
<command id="0x1b" name="Get User" response="Get User Response">
<access invokePrivilege="admin"/>
<mandatoryConform>
<feature name="USR"/>
</mandatoryConform>
<field id="0" name="UserIndex" type="uint16">
<mandatoryConform/>
<constraint type="between" from="1" to="NumberOfTotalUsersSupported"/>
</field>
</command>
<command id="0x1c" name="Get User Response" direction="responseFromServer">
<access invokePrivilege="operate"/>
<mandatoryConform>
<feature name="USR"/>
</mandatoryConform>
<field id="0" name="UserIndex" type="uint16">
<mandatoryConform/>
<constraint type="between" from="1" to="NumberOfTotalUsersSupported"/>
</field>
<field id="1" name="UserName" type="string" default="empty">
<quality nullable="true"/>
<mandatoryConform/>
<constraint type="maxLength" value="10"/>
</field>
<field id="2" name="UserUniqueID" type="uint32" default="0">
<quality nullable="true"/>
<mandatoryConform/>
</field>
<field id="3" name="UserStatus" type="UserStatusEnum" default="Available">
<quality nullable="true"/>
<mandatoryConform/>
</field>
<field id="4" name="UserType" type="UserTypeEnum" default="UnrestrictedUser">
<quality nullable="true"/>
<mandatoryConform/>
</field>
<field id="5" name="CredentialRule" type="CredentialRuleEnum" default="Single">
<quality nullable="true"/>
<mandatoryConform/>
<constraint type="desc"/>
</field>
<field id="6" name="Credentials" type="list">
<entry type="CredentialStruct"/>
<quality nullable="true"/>
<mandatoryConform/>
<constraint type="countBetween" from="0" to="NumberOfCredentialsSupportedPerUser"/>
</field>
<field id="7" name="CreatorFabricIndex" type="fabric-idx">
<quality nullable="true"/>
<mandatoryConform/>
</field>
<field id="8" name="LastModifiedFabricIndex" type="fabric-idx">
<quality nullable="true"/>
<mandatoryConform/>
</field>
<field id="9" name="NextUserIndex" type="uint16">
<quality nullable="true"/>
<mandatoryConform/>
<constraint type="between" from="1" to="NumberOfTotalUsersSupported"/>
</field>
</command>
<command id="0x1d" name="Clear User" response="Y">
<access invokePrivilege="admin" timed="true"/>
<mandatoryConform>
<feature name="USR"/>
</mandatoryConform>
<field id="0" name="UserIndex" type="uint16">
<mandatoryConform/>
<constraint type="between" from="1" to="NumberOfTotalUsersSupported"/>
<constraint type="allowed" value="0xFFFE"/>
</field>
</command>
<command id="0x20" name="Operating Event Notification" direction="commandToClient">
<access invokePrivilege="operate"/>
<optionalConform>
<feature name="NOT"/>
</optionalConform>
</command>
<command id="0x21" name="Programming Event Notification" direction="commandToClient">
<access invokePrivilege="operate"/>
<optionalConform>
<feature name="NOT"/>
</optionalConform>
<field id="0" name="Program Event Source" type="uint8">
<mandatoryConform/>
<constraint type="desc"/>
</field>
<field id="1" name="Program Event Code" type="uint8">
<mandatoryConform/>
<constraint type="desc"/>
</field>
<field id="2" name="User ID" type="uint16">
<mandatoryConform/>
<constraint type="desc"/>
</field>
<field id="3" name="PIN" type="octets">
<mandatoryConform/>
</field>
<field id="4" name="User Type" type="enum8">
<mandatoryConform/>
<constraint type="desc"/>
</field>
<field id="5" name="User Status" type="enum8">
<mandatoryConform/>
<constraint type="desc"/>
</field>
<field id="6" name="LocalTime" type="epoch-s">
<mandatoryConform/>
</field>
<field id="7" name="Data" type="string">
<optionalConform/>
</field>
</command>
<command id="0x22" name="Set Credential" response="Set Credential Response">
<access invokePrivilege="admin" timed="true"/>
<mandatoryConform>
<feature name="USR"/>
</mandatoryConform>
<field id="0" name="OperationType" type="DataOperationTypeEnum">
<mandatoryConform/>
<constraint type="allowed" value="Add"/>
<constraint type="allowed" value="Modify"/>
</field>
<field id="1" name="Credential" type="CredentialStruct">
<mandatoryConform/>
</field>
<field id="2" name="CredentialData" type="octets">
<mandatoryConform/>
<constraint type="desc"/>
</field>
<field id="3" name="UserIndex" type="uint16">
<quality nullable="true"/>
<mandatoryConform/>
<constraint type="between" from="1" to="NumberOfTotalUsersSupported"/>
</field>
<field id="4" name="UserStatus" type="UserStatusEnum" default="OccupiedEnabled">
<quality nullable="true"/>
<mandatoryConform/>
<constraint type="allowed" value="OccupiedEnabled"/>
<constraint type="allowed" value="OccupiedDisabled"/>
</field>
<field id="5" name="UserType" type="UserTypeEnum" default="UnrestrictedUser">
<quality nullable="true"/>
<mandatoryConform/>
<constraint type="allowed" value="UnrestrictedUser"/>
<constraint type="allowed" value="ProgrammingUser"/>
<constraint type="allowed" value="NonAccessUser"/>
<constraint type="allowed" value="ForcedUser"/>
<constraint type="allowed" value="DisposableUser"/>
<constraint type="allowed" value="ExpiringUser"/>
<constraint type="allowed" value="RemoteOnlyUser"/>
</field>
</command>
<command id="0x23" name="Set Credential Response" direction="responseFromServer">
<access invokePrivilege="operate"/>
<mandatoryConform>
<feature name="USR"/>
</mandatoryConform>
<field id="0" name="Status" type="status">
<mandatoryConform/>
<constraint type="desc"/>
</field>
<field id="1" name="UserIndex" type="uint16" default="0">
<quality nullable="true"/>
<mandatoryConform/>
<constraint type="between" from="1" to="NumberOfTotalUsersSupported"/>
</field>
<field id="2" name="NextCredentialIndex" type="uint16">
<quality nullable="true"/>
<optionalConform/>
<constraint type="desc"/>
</field>
</command>
<command id="0x24" name="Get Credential Status" response="Get Credential Status Response">
<access invokePrivilege="admin"/>
<mandatoryConform>
<feature name="USR"/>
</mandatoryConform>
<field id="0" name="Credential" type="CredentialStruct">
<mandatoryConform/>
</field>
</command>
<command id="0x25" name="Get Credential Status Response" direction="responseFromServer">
<access invokePrivilege="operate"/>
<mandatoryConform>
<feature name="USR"/>
</mandatoryConform>
<field id="0" name="CredentialExists" type="bool">
<mandatoryConform/>
</field>
<field id="1" name="UserIndex" type="uint16">
<quality nullable="true"/>
<mandatoryConform/>
<constraint type="between" from="1" to="NumberOfTotalUsersSupported"/>
</field>
<field id="2" name="CreatorFabricIndex" type="fabric-idx">
<quality nullable="true"/>
<mandatoryConform/>
</field>
<field id="3" name="LastModifiedFabricIndex" type="fabric-idx">
<quality nullable="true"/>
<mandatoryConform/>
</field>
<field id="4" name="NextCredentialIndex" type="uint16">
<quality nullable="true"/>
<optionalConform/>
<constraint type="desc"/>
</field>
</command>
<command id="0x26" name="Clear Credential" response="Y">
<access invokePrivilege="admin" timed="true"/>
<mandatoryConform>
<feature name="USR"/>
</mandatoryConform>
<field id="0" name="Credential" type="CredentialStruct">
<quality nullable="true"/>
<mandatoryConform/>
<constraint type="desc"/>
</field>
</command>
<command id="0x27" name="Unbolt Door" response="Y">
<access invokePrivilege="operate" timed="true"/>
<mandatoryConform>
<feature name="UBOLT"/>
</mandatoryConform>
<field id="0" name="PINCode" type="octets">
<optionalConform>
<andTerm>
<feature name="COTA"/>
<feature name="PIN"/>
</andTerm>
</optionalConform>
</field>
</command>
</commands>
<events>
<event id="0x00" name="DoorLockAlarm" priority="critical">
<access readPrivilege="view"/>
<mandatoryConform/>
<field id="0" name="AlarmCode" type="AlarmCodeEnum">
<mandatoryConform/>
</field>
</event>
<event id="0x01" name="DoorStateChange" priority="desc">
<access readPrivilege="view"/>
<mandatoryConform>
<feature name="DPS"/>
</mandatoryConform>
<field id="0" name="DoorState" type="DoorStateEnum">
<mandatoryConform/>
</field>
</event>
<event id="0x02" name="LockOperation" priority="desc">
<access readPrivilege="view"/>
<mandatoryConform/>
<field id="0" name="LockOperationType" type="LockOperationTypeEnum">
<mandatoryConform/>
</field>
<field id="1" name="OperationSource" type="OperationSourceEnum">
<mandatoryConform/>
</field>
<field id="2" name="UserIndex" type="uint16">
<quality nullable="true"/>
<mandatoryConform/>
</field>
<field id="3" name="FabricIndex" type="fabric-idx">
<quality nullable="true"/>
<mandatoryConform/>
</field>
<field id="4" name="SourceNode" type="node-id">
<quality nullable="true"/>
<mandatoryConform/>
</field>
<field id="5" name="Credentials" type="list">
<entry type="CredentialStruct"/>
<quality nullable="true"/>
<optionalConform>
<feature name="USR"/>
</optionalConform>
<constraint type="countBetween" from="1" to="NumberOfCredentialsSupportedPerUser"/>
</field>
</event>
<event id="0x03" name="LockOperationError" priority="desc">
<access readPrivilege="view"/>
<mandatoryConform/>
<field id="0" name="LockOperationType" type="LockOperationTypeEnum">
<mandatoryConform/>
</field>
<field id="1" name="OperationSource" type="OperationSourceEnum">
<mandatoryConform/>
</field>
<field id="2" name="OperationError" type="OperationErrorEnum">
<mandatoryConform/>
</field>
<field id="3" name="UserIndex" type="uint16">
<quality nullable="true"/>
<mandatoryConform/>
</field>
<field id="4" name="FabricIndex" type="fabric-idx">
<quality nullable="true"/>
<mandatoryConform/>
</field>
<field id="5" name="SourceNode" type="node-id">
<quality nullable="true"/>
<mandatoryConform/>
</field>
<field id="6" name="Credentials" type="list">
<entry type="CredentialStruct"/>
<quality nullable="true"/>
<optionalConform>
<feature name="USR"/>
</optionalConform>
<constraint type="countBetween" from="1" to="NumberOfCredentialsSupportedPerUser"/>
</field>
</event>
<event id="0x04" name="LockUserChange" priority="info">
<access readPrivilege="view"/>
<mandatoryConform>
<feature name="USR"/>
</mandatoryConform>
<field id="0" name="LockDataType" type="LockDataTypeEnum">
<mandatoryConform/>
</field>
<field id="1" name="DataOperationType" type="DataOperationTypeEnum">
<mandatoryConform/>
</field>
<field id="2" name="OperationSource" type="OperationSourceEnum">
<mandatoryConform/>
<constraint type="allowed" value="Unspecified"/>
<constraint type="allowed" value="Keypad"/>
<constraint type="allowed" value="Remote"/>
</field>
<field id="3" name="UserIndex" type="uint16">
<quality nullable="true"/>
<mandatoryConform/>
</field>
<field id="4" name="FabricIndex" type="fabric-idx">
<quality nullable="true"/>
<mandatoryConform/>
</field>
<field id="5" name="SourceNode" type="node-id">
<quality nullable="true"/>
<mandatoryConform/>
</field>
<field id="6" name="DataIndex" type="uint16">
<quality nullable="true"/>
<mandatoryConform/>
</field>
</event>
</events>
</cluster>