<?xml version="1.0" encoding="utf-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema">
  <choice maxOccurs="unbounded">
    <element name="Control">
      <complexType>
        <sequence>
          <!--  Control request command series is shown as follows-->
          <!--  Command type: device control (required)-->
          <element name="CmdType" fixed="DeviceControl"/>
          <!--  Command SN (required) -->
          <element name="SN" type="integer" minInclusive="1"/>
          <!--  Target device ID (required) -->
          <element name="DeviceID" type="deviceIDType"/>
          <!-- PTZ control command (optional, the control code shall comply with the provisions in clause A.3-->
          <element name=" PTZCmd " type="PTZType"/>
          <!-- Ballhead camera/cradle control command additional parameters (optional)-->
          <element name="PTZCmdParams" minOccurs="0">
            <sequence>
              <!-- Preset name (optional when PTZCmd is a preset position setting command)-->
              <element name="PresetName" type="string" minOccurs="0"/>
              <!-- Cruise track name (optional when PTZCmd is a cruise track setting command)-->
              <element name="CruiseTrackName" type="string" minOccurs="0"/>
            </sequence>
          </element>
          <!--  Teleboot control command (optional) -->
          <element name="TeleBoot" minOccurs="0">
            <restriction base="string">
              <enumeration value="Boot"/>
            </restriction>
          </element>
          <!--  Record control command (optional) -->
          <element name=" RecordCmd " type="recordType" minOccurs="0"/>
          <!--  Guard/Unguard command (optional) -->
          <element name=" GuardCmd " type="guardType" minOccurs="0"/>
          <!--  Alarm reset command (optional) -->
          <element name="AlarmCmd" minOccurs="0">
            <restriction base="string">
              <enumeration value="ResetAlarm"/>
            </restriction>
          </element>
          <!--  instant image snapshot command (optional) -->
          <element name="CaptureCmd" minOccurs="0">
            <restriction base="string">
              <enumeration value="Snapshot"/>
            </restriction>
          </element>
          <!--Mandatory key frame command (optional), the device shall send an IDR frame after receiving this command (optional) -->
          <element name="IFameCmd" minOccurs="0">
            <restriction base="string">
              <enumeration value="Send"/>
            </restriction>
          </element>
          <!--  Drag zoom-in control command (optional) -->
          <element name="DragZoomIn" type="string" minOccurs="0"/>
          <complexType>
            <sequence>
              <!--Length pixel value of play window (required) -->
              <element name="Length" type="integer"/>
              <!--Width pixel value of play window (required) -->
              <element name="Width" type="integer"/>
              <!-- X-axis coordinate pixel value of drop-down box center-->
              <element name="MidPointX" type="integer"/>
              <!-- Y-axis coordinate pixel value of drop-down box center-->
              <element name="MidPointY" type="integer"/>
              <!--Length pixel value of drop-down box (required) -->
              <element name="LengthX" type="integer"/>
              <!--Width pixel value of drop-down box (required) -->
              <element name="LengthY" type="integer"/>
            </sequence>
          </complexType>
          <!--  Guard control command (optional) -->
          <element name="HomePosition" type="string" minOccurs="0"/>
          <complexType>
            <sequence>
              <!--  Guard enable 1-enabled, 0-disabled (required)-->
              <element name="Enabled" type="integer"/>
              <!-- Automatic rest time interval, used in guard enabling, unit: second (s) (optional) -->
              <element name="ResetTime" type="integer" minOccurs="0"/>
              <!-- Call preset position number, used in guard enabling, the value range: 0-255 (optional) -->
              <element name="PresetIndex" minOccurs="0"/>
              <simpleType>
                <restriction base="integer">
                  <minInclusive value="0"/>
                  <maxInclusive value="255"/>
                </restriction>
              </simpleType>
            </sequence>
          </complexType>
          <!--This item is expanded during alarm reset control, and carries alarm method and alarm type. -->
          <element name="Info" minOccurs="0">
            <complexType>
              <sequence>
                <!--Alarm method type of reset alarm -->
                <element name="AlarmMethod" type="string" minOccurs="0"/>
                <!--Alarm type of reset alarm -->
                <element name="AlarmType" type="string" minOccurs="0"/>
              </sequence>
            </complexType>
          </element>
          <!--PTZ precise control command (optional) -->
          <element name="PTZControl" type="PTZPreciseCtrlType" minOccurs="0"/>
          <!--PU OSD configuration commands (optional) -->
          <element name="OSDConfig" type="OSDConfigType" minOccurs="0"/>
          <!--Extended information, multiple -->
          <element name="Info" minOccurs="0" maxOccurs="unbounded">
            <restriction base="string">
              <maxLength value="1024"/>
            </restriction>
          </element>
        </sequence>
      </complexType>
    </element>
  </choice>
</schema>