blob: c644fff1a75ac2ea4130ba951fddbb661ac54546 [file] [edit]
<?xml version="1.0"?>
<!--
Zigbee Alliance owns the copyright to the text and content displayed or
included in this document (including in PDF, XML files and other formats) in
all forms of media, which copyright is protected by the copyright laws of the
United States and by international treaties. Full text of licensing terms
applicable to this document can be found in the LICENSE.md file.
-->
<zcl:cluster xmlns:zcl="http://zigbee.org/zcl/clusters"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:type="http://zigbee.org/zcl/types"
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="0019" revision="3" name="OTAUpgrade">
<classification role="utility" picsCode="OTA" />
<type:type short="OTAImageType" name="Image Type Id" id="21" inheritsFrom="uint16">
<restriction>
<type:maxInclusive value="65471"/>
<type:special name="Wildcard" value="65535"/>
</restriction>
</type:type>
<type:type short="OTADeviceSpecificImageType" name="Image Type Id (Device Specific)" id="21" inheritsFrom="uint16">
<restriction>
<type:minInclusive value="65472" />
<type:maxInclusive value="65534"/>
<type:enumeration name="ClientSecurityCredentials" value="ffc0"/>
<type:enumeration name="ClientConfiguration" value="ffc1" />
<type:enumeration name="ServerLog" value="ffc2" />
<type:enumeration name="Picture" value="ffc3" />
<type:special name="Wildcard" value="65535"/>
</restriction>
</type:type>
<server>
<commands>
<command id="01" name="QueryNextImageRequest" required="true">
<fields>
<field name="FieldControl" type="map8">
<bitmap>
<element name="HardwareVersionPresent" type="bool" mask="01" />
</bitmap>
</field>
<field name="ManufacturerCode" type="uint16" />
<field name="ImageType" type="OTAImageType" />
<field name="CurrentFileVersion" type="uint32" />
<field name="HardwareVersion" type="uint16" presentIf="FieldControl.HardwareVersionPresent" />
</fields>
</command>
<command id="03" name="ImageBlockRequest" required="true">
<fields>
<field name="FieldControl" type="map8">
<bitmap>
<element name="RequestNodeIEEEAddressPresent" type="bool" mask="01" />
<element name="MinimumBlockPeriodPresent" type="bool" mask="02" shiftRight="1" />
</bitmap>
</field>
<field name="ManufacturerCode" type="uint16" />
<field name="ImageType" type="OTAImageType" />
<field name="FileVersion" type="uint32" />
<field name="FileOffset" type="uint32" />
<field name="MaximumDataSize" type="uint8" />
<field name="RequestNodeAddress" type="EUI64" presentIf="FieldControl.RequestNodeIEEEAddressPresent" />
<field name="MinimumBlockPeriod" type="uint16" presentIf="FieldControl.MinimumBlockPeriodPresent" />
</fields>
</command>
<command id="04" name="ImagePageRequest">
<fields>
<field name="FieldControl" type="map8">
<bitmap>
<element name="RequestNodeIEEEAddressPresent" type="bool" mask="01" />
</bitmap>
</field>
<field name="ManufacturerCode" type="uint16" />
<field name="ImageType" type="OTAImageType" />
<field name="FileVersion" type="uint32" />
<field name="FileOffset" type="uint32" />
<field name="MaximumDataSize" type="uint8" />
<field name="PageSize" type="uint16" />
<field name="ResponseSpacing" type="uint16" />
<field name="RequestNodeAddress" type="EUI64" presentIf="FieldControl.RequestNodeIEEEAddressPresent" />
</fields>
</command>
<command id="06" name="UpgradeEndRequest" required="true">
<fields>
<field name="Status" type="zclStatus" />
<field name="ManufacturerCode" type="uint16" />
<field name="ImageType" type="OTAImageType" />
<field name="FileVersion" type="uint32" />
</fields>
</command>
<command id="08" name="QueryDeviceSpecificFileRequest">
<fields>
<field name="RequestNodeAddress" type="EUI64" />
<field name="ManufacturerCode" type="uint16" />
<field name="ImageType" type="OTADeviceSpecificImageType" />
<field name="FileVersion" type="uint32" />
<field name="CurrentZigbeeStackVersion" type="uint16" />
</fields>
</command>
</commands>
</server>
<client>
<attributes>
<attribute id="0000" name="UpgradeServerID" type="EUI64" required="true" default="18446744073709551615" />
<attribute id="0001" name="FileOffset" type="uint32" default="4294967294" />
<attribute id="0002" name="CurrentFileVersion" type="uint32" default="4294967294" />
<attribute id="0003" name="CurrentZigBeeStackVersion" type="uint16" default="65535" />
<attribute id="0004" name="DownloadedFileVersion" type="uint32" default="4294967294" />
<attribute id="0005" name="DownloadedZigBeeStackVersion" type="uint16" default="65535" />
<attribute id="0006" name="ImageUpgradeStatus" type="enum8" default="0" required="true">
<restriction>
<type:enumeration value="00" name="Normal" />
<type:enumeration value="01" name="DownloadInProgress" />
<type:enumeration value="02" name="DownloadComplete" />
<type:enumeration value="03" name="WaitingToUpgrade" />
<type:enumeration value="04" name="CountDown" />
<type:enumeration value="05" name="WaitForMore" />
<type:enumeration value="06" name="WaitingToUpgradeViaExternalEvent" />
</restriction>
</attribute>
<attribute id="0007" name="ManufacturerID" type="uint16" />
<attribute id="0008" name="ImageTypeID" type="uint16" />
<attribute id="0009" name="MinimumBlockPeriod" type="uint16" default="0" />
<attribute id="000A" name="ImageStamp" type="uint32" />
<attribute id="000B" name="UpgradeActivationPolicy" type="enum8" default="0">
<restriction>
<type:enumeration value="00" name="OTAServerActivationAllowed" />
<type:enumeration value="01" name="OutOfBandActivationOnly" />
</restriction>
</attribute>
<attribute id="000C" name="UpgradeTimeoutPolicy" type="enum8" default="0">
<restriction>
<type:enumeration value="00" name="ApplyUpgradeAfterTimeout" />
<type:enumeration value="01" name="DoNotApplyUpgradeAfterTimeout" />
</restriction>
</attribute>
</attributes>
<commands>
<command id="00" name="ImageNotify">
<fields>
<field name="PayloadType" type="enum8">
<restriction>
<type:enumeration value="00" name="QueryJitter" />
<type:enumeration value="01" name="QueryJitterAndManufacturerCode" />
<type:enumeration value="02" name="QueryJitterManufacturerCodeAndImageType" />
<type:enumeration value="03" name="QueryJitterManufacturerCodeImageTypeAndNewFileVersion" />
</restriction>
</field>
<field name="QueryJitter" type="uint8" />
<field name="ManufacturerCode" type="uint16" presentIf="PayloadType >= 1" />
<field name="ImageType" type="uint16" presentIf="PayloadType >= 2" />
<field name="NewFileVersion" type="uint32" presentIf="PayloadType >= 3" />
</fields>
</command>
<command id="02" name="QueryNextImageResponse" required="true">
<fields>
<field name="Status" type="zclStatus" />
<field name="ManufacturerCode" type="uint16" presentIf="Status=0"/>
<field name="ImageType" type="OTAImageType" presentIf="Status=0" />
<field name="FileVersion" type="uint32" presentIf="Status=0" />
<field name="ImageSize" type="uint32" presentIf="Status=0" />
</fields>
</command>
<command id="05" name="ImageBlockResponse" required="true">
<fields>
<field name="Status" type="zclStatus" />
<!-- Success Fields -->
<field name="ManufacturerCode" type="uint16" presentIf="Status=0"/>
<field name="ImageType" type="OTAImageType" presentIf="Status=0" />
<field name="FileVersion" type="uint32" presentIf="Status=0" />
<field name="FileOffset" type="uint32" presentIf="Status=0" />
<field name="ImageData" type="octstr" presentIf="Status=0" />
<!-- Wait For Data (0x97) Fields -->
<field name="CurrentTime" type="uint32" presentIf="Status=151" />
<field name="RequestTime" type="uint32" presentIf="Status=151" />
<field name="MinimumBlockPeriod" type="uint16" presentIf="Status=151" />
</fields>
</command>
<command id="07" name="UpgradeEndResponse" required="true">
<fields>
<field name="ManufacturerCode" type="uint16" />
<field name="ImageType" type="OTAImageType" />
<field name="FileVersion" type="uint32" />
<field name="CurrentTime" type="UTC" />
<field name="UpgradeTime" type="UTC" />
</fields>
</command>
<command id="09" name="QueryDeviceSpecificFileResponse">
<fields>
<field name="Status" type="zclStatus" />
<field name="ManufacturerCode" type="uint16" presentIf="Status=0"/>
<field name="ImageType" type="OTADeviceSpecificImageType" presentIf="Status=0" />
<field name="FileVersion" type="uint32" presentIf="Status=0" />
<field name="ImageSize" type="uint32" presentIf="Status=0" />
</fields>
</command>
</commands>
</client>
</zcl:cluster>