﻿<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:tns="http://www.nrf-arts.org/UnifiedPOS/LineDisplay/" elementFormDefault="qualified" targetNamespace="http://www.nrf-arts.org/UnifiedPOS/LineDisplay/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="RetrieveStatistics">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="StatisticsBuffer" nillable="true" type="tns:StatisticList" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="StatisticList">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="Statistic" nillable="true" type="tns:Statistic" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="StatisticList" nillable="true" type="tns:StatisticList" />
  <xs:complexType name="Statistic">
    <xs:sequence>
      <xs:element minOccurs="0" name="Name" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="Value" nillable="true" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Statistic" nillable="true" type="tns:Statistic" />
  <xs:element name="RetrieveStatisticsResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="RetrieveStatisticsResult" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="UposException">
    <xs:sequence>
      <xs:element minOccurs="0" name="ErrorCode" type="tns:ErrorCode" />
      <xs:element minOccurs="0" name="ErrorCodeExtended" type="xs:int" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="UposException" nillable="true" type="tns:UposException" />
  <xs:simpleType name="ErrorCode">
    <xs:restriction base="xs:string">
      <xs:enumeration value="E_CLOSED" />
      <xs:enumeration value="E_CLAIMED" />
      <xs:enumeration value="E_NOTCLAIMED" />
      <xs:enumeration value="E_NOSERVICE" />
      <xs:enumeration value="E_DISABLED" />
      <xs:enumeration value="E_ILLEGAL" />
      <xs:enumeration value="E_NOHARDWARE" />
      <xs:enumeration value="E_OFFLINE" />
      <xs:enumeration value="E_NOEXIST" />
      <xs:enumeration value="E_EXISTS" />
      <xs:enumeration value="E_FAILURE" />
      <xs:enumeration value="E_TIMEOUT" />
      <xs:enumeration value="E_BUSY" />
      <xs:enumeration value="E_EXTENDED" />
      <xs:enumeration value="E_DEPRECATED" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="ErrorCode" nillable="true" type="tns:ErrorCode" />
  <xs:element name="UpdateFirmware">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="FirmwareFileName" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="UpdateFirmwareResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="UpdateStatistics">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="StatisticsBuffer" nillable="true" type="tns:StatisticList" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="UpdateStatisticsResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="ClearText">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="ClearTextResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="DisplayText">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="Data" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="Attribute" type="tns:DisplayTextMode" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="DisplayTextMode">
    <xs:restriction base="xs:string">
      <xs:enumeration value="DISP_DT_NORMAL" />
      <xs:enumeration value="DISP_DT_BLINK" />
      <xs:enumeration value="DISP_DT_REVERSE" />
      <xs:enumeration value="DISP_DT_BLINK_REVERSE" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="DisplayTextMode" nillable="true" type="tns:DisplayTextMode" />
  <xs:element name="DisplayTextResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="DisplayTextAt">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="Row" type="xs:int" />
        <xs:element minOccurs="0" name="Column" type="xs:int" />
        <xs:element minOccurs="0" name="Data" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="Attribute" type="tns:DisplayTextMode" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="DisplayTextAtResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="ScrollText">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="Direction" type="tns:DisplayScrollText" />
        <xs:element minOccurs="0" name="Units" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="DisplayScrollText">
    <xs:restriction base="xs:string">
      <xs:enumeration value="DISP_ST_UP" />
      <xs:enumeration value="DISP_ST_DOWN" />
      <xs:enumeration value="DISP_ST_LEFT" />
      <xs:enumeration value="DISP_ST_RIGHT" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="DisplayScrollText" nillable="true" type="tns:DisplayScrollText" />
  <xs:element name="ScrollTextResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="ClearDescriptors">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="ClearDescriptorsResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="SetDescriptor">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="Descriptor" type="xs:int" />
        <xs:element minOccurs="0" name="Attribute" type="tns:DisplaySetDescriptor" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="DisplaySetDescriptor">
    <xs:restriction base="xs:string">
      <xs:enumeration value="DISP_SD_ON" />
      <xs:enumeration value="DISP_SD_BLINK" />
      <xs:enumeration value="DISP_SD_OFF" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="DisplaySetDescriptor" nillable="true" type="tns:DisplaySetDescriptor" />
  <xs:element name="SetDescriptorResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="CreateWindow">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="ViewportRow" type="xs:int" />
        <xs:element minOccurs="0" name="ViewportColumn" type="xs:int" />
        <xs:element minOccurs="0" name="ViewportHeight" type="xs:int" />
        <xs:element minOccurs="0" name="ViewportWidth" type="xs:int" />
        <xs:element minOccurs="0" name="WindowHeight" type="xs:int" />
        <xs:element minOccurs="0" name="WindowWidth" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="CreateWindowResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="DestroyWindow">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="DestroyWindowResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="RefreshWindow">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="Window" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="RefreshWindowResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="DefineGlyph">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="GlyphCode" type="xs:int" />
        <xs:element minOccurs="0" name="Glyph" nillable="true" type="xs:base64Binary" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="DefineGlyphResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="ReadCharacterAtCursor">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="ReadCharacterAtCursorResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ReadCharacterAtCursorResult" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="DisplayBitmap">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="FileName" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="Width" type="xs:int" />
        <xs:element minOccurs="0" name="AlignmentX" type="xs:int" />
        <xs:element minOccurs="0" name="AlignmentY" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="DisplayBitmapResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="SetBitmap">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="BitmapNumber" type="xs:int" />
        <xs:element minOccurs="0" name="FileName" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="Width" type="xs:int" />
        <xs:element minOccurs="0" name="AlignmentX" type="xs:int" />
        <xs:element minOccurs="0" name="AlignmentY" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetBitmapResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="GetWSPOSVersion">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="GetWSPOSVersionResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetWSPOSVersionResult" nillable="true" type="tns:UposVersion" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="UposVersion">
    <xs:sequence>
      <xs:element minOccurs="0" name="Build" type="xs:int" />
      <xs:element minOccurs="0" name="Major" type="xs:int" />
      <xs:element minOccurs="0" name="Minor" type="xs:int" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="UposVersion" nillable="true" type="tns:UposVersion" />
  <xs:element name="GenerateConsumerID">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="GenerateConsumerIDResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GenerateConsumerIDResult" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="OpenSession">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="EndpointAddress" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="OpenSessionResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="CloseSession">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="CloseSessionResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="GetProviderSessionTimeout">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetProviderSessionTimeoutResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetProviderSessionTimeoutResult" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="KeepAlive">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="KeepAliveResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="OpenDevice">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="OpenDeviceResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="CloseDevice">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="CloseDeviceResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="PollForUPOSEvent">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="PollForUPOSEventResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="PollForUPOSEventResult" nillable="true" type="tns:LineDisplayEvent" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="LineDisplayEvent">
    <xs:sequence>
      <xs:element minOccurs="0" name="DirectIOEvent" nillable="true" type="tns:DirectIOEvent" />
      <xs:element minOccurs="0" name="StatusUpdateEvent" nillable="true" type="tns:StatusUpdateEvent" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="LineDisplayEvent" nillable="true" type="tns:LineDisplayEvent" />
  <xs:complexType name="DirectIOEvent">
    <xs:sequence>
      <xs:element minOccurs="0" name="Data" type="xs:int" />
      <xs:element minOccurs="0" name="EventID" type="xs:int" />
      <xs:element minOccurs="0" name="EventNumber" type="xs:int" />
      <xs:element minOccurs="0" name="Obj" nillable="true" type="xs:anyType" />
      <xs:element minOccurs="0" name="Source" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="TimeStamp" type="xs:dateTime" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="DirectIOEvent" nillable="true" type="tns:DirectIOEvent" />
  <xs:complexType name="StatusUpdateEvent">
    <xs:sequence>
      <xs:element minOccurs="0" name="EventID" type="xs:int" />
      <xs:element minOccurs="0" name="Source" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="Status" type="xs:int" />
      <xs:element minOccurs="0" name="TimeStamp" type="xs:dateTime" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="StatusUpdateEvent" nillable="true" type="tns:StatusUpdateEvent" />
  <xs:element name="SetEventResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="EventResponse" nillable="true" type="tns:LineDisplayEventResponse" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="LineDisplayEventResponse">
    <xs:sequence>
      <xs:element minOccurs="0" name="DirectIOEventResponse" nillable="true" type="tns:DirectIOEventResponse" />
      <xs:element minOccurs="0" name="StatusUpdateEventResponse" nillable="true" type="tns:StatusUpdateEventResponse" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="LineDisplayEventResponse" nillable="true" type="tns:LineDisplayEventResponse" />
  <xs:complexType name="DirectIOEventResponse">
    <xs:sequence>
      <xs:element minOccurs="0" name="DirectIOData" nillable="true" type="tns:DirectIOData" />
      <xs:element minOccurs="0" name="EventID" type="xs:int" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="DirectIOEventResponse" nillable="true" type="tns:DirectIOEventResponse" />
  <xs:complexType name="DirectIOData">
    <xs:sequence>
      <xs:element minOccurs="0" name="Data" type="xs:int" />
      <xs:element minOccurs="0" name="Obj" nillable="true" type="xs:anyType" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="DirectIOData" nillable="true" type="tns:DirectIOData" />
  <xs:complexType name="StatusUpdateEventResponse">
    <xs:sequence>
      <xs:element minOccurs="0" name="EventID" type="xs:int" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="StatusUpdateEventResponse" nillable="true" type="tns:StatusUpdateEventResponse" />
  <xs:element name="SetEventResponseResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="GetEncryptedClaimedConsumerID">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="GetEncryptedClaimedConsumerIDResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetEncryptedClaimedConsumerIDResult" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetBinaryConversion">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="consumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetBinaryConversionResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetBinaryConversionResult" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetBinaryConversion">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="consumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="binaryConversion" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetBinaryConversionResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapCompareFirmwareVersion">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapCompareFirmwareVersionResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetCapCompareFirmwareVersionResult" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapPowerReporting">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapPowerReportingResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetCapPowerReportingResult" type="tns:PowerReporting" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="PowerReporting">
    <xs:restriction base="xs:string">
      <xs:enumeration value="PR_NONE" />
      <xs:enumeration value="PR_STANDARD" />
      <xs:enumeration value="PR_ADVANCED" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="PowerReporting" nillable="true" type="tns:PowerReporting" />
  <xs:element name="GetCapStatisticsReporting">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapStatisticsReportingResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetCapStatisticsReportingResult" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapUpdateFirmware">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapUpdateFirmwareResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetCapUpdateFirmwareResult" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapUpdateStatistics">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapUpdateStatisticsResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetCapUpdateStatisticsResult" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCheckHealthText">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCheckHealthTextResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetCheckHealthTextResult" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetClaimed">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetClaimedResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetClaimedResult" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetDeviceEnabled">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetDeviceEnabledResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetDeviceEnabledResult" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetDeviceEnabled">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="DeviceEnabled" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetDeviceEnabledResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="GetFreezeEvents">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetFreezeEventsResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetFreezeEventsResult" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetFreezeEvents">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="FreezeEvents" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetFreezeEventsResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="GetPowerNotify">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetPowerNotifyResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetPowerNotifyResult" type="tns:PowerNotification" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="PowerNotification">
    <xs:restriction base="xs:string">
      <xs:enumeration value="PN_DISABLED" />
      <xs:enumeration value="PN_ENABLED" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="PowerNotification" nillable="true" type="tns:PowerNotification" />
  <xs:element name="SetPowerNotify">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="PowerNotify" type="tns:PowerNotification" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetPowerNotifyResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="GetPowerState">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetPowerStateResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetPowerStateResult" type="tns:PowerState" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="PowerState">
    <xs:restriction base="xs:string">
      <xs:enumeration value="PS_UNKNOWN" />
      <xs:enumeration value="PS_ONLINE" />
      <xs:enumeration value="PS_OFF" />
      <xs:enumeration value="PS_OFFLINE" />
      <xs:enumeration value="PS_OFF_OFFLINE" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="PowerState" nillable="true" type="tns:PowerState" />
  <xs:element name="GetState">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetStateResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetStateResult" type="tns:ControlState" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="ControlState">
    <xs:restriction base="xs:string">
      <xs:enumeration value="S_CLOSED" />
      <xs:enumeration value="S_IDLE" />
      <xs:enumeration value="S_BUSY" />
      <xs:enumeration value="S_ERROR" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="ControlState" nillable="true" type="tns:ControlState" />
  <xs:element name="GetDeviceControlDescription">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetDeviceControlDescriptionResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetDeviceControlDescriptionResult" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetDeviceControlVersion">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetDeviceControlVersionResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetDeviceControlVersionResult" nillable="true" type="tns:UposVersion" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetDeviceServiceDescription">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetDeviceServiceDescriptionResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetDeviceServiceDescriptionResult" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetDeviceServiceVersion">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetDeviceServiceVersionResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetDeviceServiceVersionResult" nillable="true" type="tns:UposVersion" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetPhysicalDeviceDescription">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetPhysicalDeviceDescriptionResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetPhysicalDeviceDescriptionResult" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetPhysicalDeviceName">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetPhysicalDeviceNameResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetPhysicalDeviceNameResult" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapBlink">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapBlinkResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetCapBlinkResult" type="tns:DisplayBlink" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="DisplayBlink">
    <xs:restriction base="xs:string">
      <xs:enumeration value="DISP_CB_NOBLINK" />
      <xs:enumeration value="DISP_CB_BLINKALL" />
      <xs:enumeration value="DISP_CB_BLINKEACH" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="DisplayBlink" nillable="true" type="tns:DisplayBlink" />
  <xs:element name="GetCapBitmap">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapBitmapResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetCapBitmapResult" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapBlinkRate">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapBlinkRateResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetCapBlinkRateResult" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapBrightness">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapBrightnessResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetCapBrightnessResult" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapCharacterSet">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapCharacterSetResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetCapCharacterSetResult" type="tns:CharacterSetCapability" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="CharacterSetCapability">
    <xs:restriction base="xs:string">
      <xs:enumeration value="DISP_CCS_NUMERIC" />
      <xs:enumeration value="DISP_CCS_ALPHA" />
      <xs:enumeration value="DISP_CCS_ASCII" />
      <xs:enumeration value="DISP_CCS_KANA" />
      <xs:enumeration value="DISP_CCS_KANJI" />
      <xs:enumeration value="DISP_CCS_UNICODE" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="CharacterSetCapability" nillable="true" type="tns:CharacterSetCapability" />
  <xs:element name="GetCapCursorType">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapCursorTypeResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetCapCursorTypeResult" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapCustomGlyph">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapCustomGlyphResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetCapCustomGlyphResult" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapDescriptors">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapDescriptorsResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetCapDescriptorsResult" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapHMarquee">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapHMarqueeResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetCapHMarqueeResult" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapICharWait">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapICharWaitResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetCapICharWaitResult" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapMapCharacterSet">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapMapCharacterSetResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetCapMapCharacterSetResult" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapReadBack">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapReadBackResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetCapReadBackResult" type="tns:DisplayReadBack" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="DisplayReadBack">
    <xs:restriction base="xs:string">
      <xs:enumeration value="DISP_CRB_NONE" />
      <xs:enumeration value="DISP_CRB_SINGLE" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="DisplayReadBack" nillable="true" type="tns:DisplayReadBack" />
  <xs:element name="GetCapReverse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapReverseResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetCapReverseResult" type="tns:DisplayReverse" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="DisplayReverse">
    <xs:restriction base="xs:string">
      <xs:enumeration value="DISP_CR_NONE" />
      <xs:enumeration value="DISP_CR_REVERSEALL" />
      <xs:enumeration value="DISP_CR_REVERSEARCH" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="DisplayReverse" nillable="true" type="tns:DisplayReverse" />
  <xs:element name="GetCapScreenMode">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapScreenModeResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetCapScreenModeResult" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapVMarquee">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapVMarqueeResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetCapVMarqueeResult" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetBlinkRate">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetBlinkRateResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetBlinkRateResult" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetBlinkRate">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="BlinkRate" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetBlinkRateResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCharacterSet">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCharacterSetResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetCharacterSetResult" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetCharacterSet">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="CharacterSet" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetCharacterSetResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCharacterSetList">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCharacterSetListResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetCharacterSetListResult" nillable="true" type="tns:CharacterSetList" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="CharacterSetList">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="CharacterSet" type="xs:int" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="CharacterSetList" nillable="true" type="tns:CharacterSetList" />
  <xs:element name="GetColumns">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetColumnsResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetColumnsResult" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCurrentWindow">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCurrentWindowResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetCurrentWindowResult" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetCurrentWindow">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="CurrentWindow" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetCurrentWindowResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCursorColumn">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCursorColumnResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetCursorColumnResult" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetCursorColumn">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="CursorColumn" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetCursorColumnResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCursorRow">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCursorRowResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetCursorRowResult" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetCursorRow">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="CursorRow" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetCursorRowResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCursorType">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCursorTypeResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetCursorTypeResult" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetCursorType">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="CursorType" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetCursorTypeResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCursorUpdate">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCursorUpdateResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetCursorUpdateResult" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetCursorUpdate">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="CursorUpdate" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetCursorUpdateResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCustomGlyphList">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCustomGlyphListResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetCustomGlyphListResult" nillable="true" type="tns:CustomGlyphList" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="CustomGlyphList">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="CustomGlyph" nillable="true" type="tns:RangeOfCharacters" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="CustomGlyphList" nillable="true" type="tns:CustomGlyphList" />
  <xs:complexType name="RangeOfCharacters">
    <xs:sequence>
      <xs:element minOccurs="0" name="From" type="xs:int" />
      <xs:element minOccurs="0" name="To" type="xs:int" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="RangeOfCharacters" nillable="true" type="tns:RangeOfCharacters" />
  <xs:element name="GetDeviceBrightness">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetDeviceBrightnessResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetDeviceBrightnessResult" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetDeviceBrightness">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="DeviceBrightness" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetDeviceBrightnessResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="GetDeviceColumns">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetDeviceColumnsResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetDeviceColumnsResult" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetDeviceDescriptors">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetDeviceDescriptorsResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetDeviceDescriptorsResult" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetDeviceRows">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetDeviceRowsResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetDeviceRowsResult" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetDeviceWindows">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetDeviceWindowsResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetDeviceWindowsResult" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetGlyphHeight">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetGlyphHeightResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetGlyphHeightResult" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetGlyphWidth">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetGlyphWidthResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetGlyphWidthResult" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetInterCharacterWait">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetInterCharacterWaitResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetInterCharacterWaitResult" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetInterCharacterWait">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="InterCharacterWait" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetInterCharacterWaitResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="GetMapCharacterSet">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetMapCharacterSetResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetMapCharacterSetResult" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetMapCharacterSet">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="MapCharacterSet" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetMapCharacterSetResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="GetMarqueeFormat">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetMarqueeFormatResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetMarqueeFormatResult" type="tns:DisplayMarqueeFormat" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="DisplayMarqueeFormat">
    <xs:restriction base="xs:string">
      <xs:enumeration value="DISP_MF_WALK" />
      <xs:enumeration value="DISP_MF_PLACE" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="DisplayMarqueeFormat" nillable="true" type="tns:DisplayMarqueeFormat" />
  <xs:element name="SetMarqueeFormat">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="MarqueeFormat" type="tns:DisplayMarqueeFormat" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetMarqueeFormatResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="GetMarqueeRepeatWait">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetMarqueeRepeatWaitResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetMarqueeRepeatWaitResult" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetMarqueeRepeatWait">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="MarqueeRepeatWait" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetMarqueeRepeatWaitResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="GetMarqueeType">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetMarqueeTypeResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetMarqueeTypeResult" type="tns:DisplayMarqueeType" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="DisplayMarqueeType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="DISP_MT_NONE" />
      <xs:enumeration value="DISP_MT_INIT" />
      <xs:enumeration value="DISP_MT_UP" />
      <xs:enumeration value="DISP_MT_DOWN" />
      <xs:enumeration value="DISP_MT_LEFT" />
      <xs:enumeration value="DISP_MT_RIGHT" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="DisplayMarqueeType" nillable="true" type="tns:DisplayMarqueeType" />
  <xs:element name="SetMarqueeType">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="MarqueeType" type="tns:DisplayMarqueeType" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetMarqueeTypeResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="GetMarqueeUnitWait">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetMarqueeUnitWaitResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetMarqueeUnitWaitResult" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetMarqueeUnitWait">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="MarqueeUnitWait" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetMarqueeUnitWaitResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="GetMaximumX">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetMaximumXResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetMaximumXResult" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetMaximumY">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetMaximumYResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetMaximumYResult" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetRows">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetRowsResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetRowsResult" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetScreenMode">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetScreenModeResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetScreenModeResult" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetScreenMode">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="ScreenMode" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetScreenModeResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="GetScreenModeList">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetScreenModeListResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetScreenModeListResult" nillable="true" type="tns:DisplayScreenModeList" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="DisplayScreenModeList">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="DisplayScreenMode" nillable="true" type="tns:DisplayScreenMode" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="DisplayScreenModeList" nillable="true" type="tns:DisplayScreenModeList" />
  <xs:complexType name="DisplayScreenMode">
    <xs:sequence>
      <xs:element minOccurs="0" name="Columns" type="xs:int" />
      <xs:element minOccurs="0" name="Rows" type="xs:int" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="DisplayScreenMode" nillable="true" type="tns:DisplayScreenMode" />
  <xs:element name="Claim">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="Timeout" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="ClaimResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="Release">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="ReleaseResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="CheckHealth">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="Level" type="tns:HealthCheckLevel" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="HealthCheckLevel">
    <xs:restriction base="xs:string">
      <xs:enumeration value="CH_INTERNAL" />
      <xs:enumeration value="CH_EXTERNAL" />
      <xs:enumeration value="CH_INTERACTIVE" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="HealthCheckLevel" nillable="true" type="tns:HealthCheckLevel" />
  <xs:element name="CheckHealthResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="DirectIO">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="Command" type="xs:int" />
        <xs:element minOccurs="0" name="Data" type="xs:int" />
        <xs:element minOccurs="0" name="Obj" nillable="true" type="xs:anyType" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="DirectIOResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="DirectIOResult" nillable="true" type="tns:DirectIOData" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="CompareFirmwareVersion">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="FirmwareFileName" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="CompareFirmwareVersionResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="CompareFirmwareVersionResult" type="tns:CompareFirmwareResult" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="CompareFirmwareResult">
    <xs:restriction base="xs:string">
      <xs:enumeration value="CFV_FIRMWARE_OLDER" />
      <xs:enumeration value="CFV_FIRMWARE_SAME" />
      <xs:enumeration value="CFV_FIRMWARE_NEWER" />
      <xs:enumeration value="CFV_FIRMWARE_DIFFERENT" />
      <xs:enumeration value="CFV_FIRMWARE_UNKNOWN" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="CompareFirmwareResult" nillable="true" type="tns:CompareFirmwareResult" />
  <xs:element name="ResetStatistics">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="StatisticsBuffer" nillable="true" type="tns:StatisticList" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="ResetStatisticsResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
</xs:schema>