<?xml version="1.0" encoding="UTF-8"?>
<!--
    ;==========================================================================
    ; ORiNcommon.xsd                                       Edition: 27-Feb-2010
    ;==========================================================================
-->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="unqualified">

  <!-- Header information is contained in each schema file -->
  <xsd:annotation>
    <xsd:appinfo source="http://www.ORiN.jp/ISO20242-4/DCPTHeader.xsd">
      <DCPTHeader>
        <DCPTIdentification>ORiN_Common</DCPTIdentification>
        <DCPTRevision>1.0</DCPTRevision>
        <DCPTName>ORiNcommon</DCPTName>
        <DCPTSource>ORiNcommon.xsd</DCPTSource>
        <DCPTClassID>TechnlogySpecificDCPT</DCPTClassID>
        <DCPTDate>2010-02-27</DCPTDate>
        <ISO20242Reference>
          <ISO20242Edition>1</ISO20242Edition>
          <Technology>ORiN</Technology>
        </ISO20242Reference>
      </DCPTHeader>
    </xsd:appinfo>
  </xsd:annotation>

  <!-- Valid content for XML-Attribut category (kind of DCD element) -->
  <xsd:simpleType name="Category">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="MODULE"/>
      <xsd:enumeration value="INTERFACE"/>
      <xsd:enumeration value="ATTRIBUTE"/>
      <xsd:enumeration value="OPERATION"/>
      <xsd:enumeration value="IN"/>
      <xsd:enumeration value="OUT"/>
      <xsd:enumeration value="DCD"/>
      <xsd:enumeration value="CCD"/>
    </xsd:restriction>
  </xsd:simpleType>

  <!-- Group of attributes for assigning multilingual text to elements -->
  <xsd:attributeGroup name="TextAttributes">
    <xsd:attribute name="areaMsg"		type="xsd:unsignedShort"
use="optional"/>
    <xsd:attribute name="infMsg"		type="xsd:unsignedShort"
use="optional"/>
    <xsd:attribute name="areaText"	type="xsd:unsignedShort"
use="optional"/>
    <xsd:attribute name="infText"		type="xsd:unsignedShort"
use="optional"/>
  </xsd:attributeGroup>

  <!-- Basic type definition for most elements used in the DCD -->
  <xsd:complexType name="TNamedDCDElement" abstract="true">
    <xsd:attribute name="helpstring"	type="xsd:string"
use="optional"/>
    <xsd:attributeGroup ref="TextAttributes"/>
  </xsd:complexType>

  <!-- Virtual Devices have additional XML-attributes "moduleId" and
category="MODULE". -->
  <xsd:complexType name="ORiN_Module"	abstract="true">
    <xsd:complexContent>
      <xsd:extension base="TNamedDCDElement">
        <xsd:attribute name="moduleId"	type="xsd:unsignedShort"
use="required"/>
        <xsd:attribute name="category"	type="Category"
use="required"		fixed="MODULE"/>
        <xsd:attribute name="provider"	type="xsd:string"
use="required"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <!-- Function Objects have additional XML-attributes "funcId" and
category="INTERFACE". -->
  <xsd:complexType name="ORiN_Object" abstract="true">
    <xsd:complexContent>
      <xsd:extension base="TNamedDCDElement">
        <xsd:attribute name="funcId"		type="xsd:unsignedShort"
use="required"/>
        <xsd:attribute name="category"	type="Category"
use="required"		fixed="INTERFACE"/>
        <xsd:attribute name="name"		type="xsd:string"
use="optional"/>
        <xsd:attribute name="option"		type="xsd:string"
use="optional"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <!-- Communication Objects which may be changed have readonly="false" -->
  <!-- With respect to ORiN obejct model, they are called Properties here -->
  <xsd:complexType name="PropertyReadWrite" abstract="true">
    <xsd:complexContent>
      <xsd:extension base="TNamedDCDElement">
        <xsd:attribute name="readonly"	type="xsd:boolean"
fixed="false"/>
        <xsd:attribute name="category"	type="Category"
use="required"		fixed="ATTRIBUTE"/>
        <xsd:attribute name="infReport"	type="xsd:boolean"/>
        <xsd:attribute name="accept"		type="xsd:boolean"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <!-- Communication Objects which may not be changed have readonly="true" -->
  <!-- With respect to ORiN obejct model, they are called Properties here -->
  <xsd:complexType name="PropertyReadOnly" abstract="true">
    <xsd:complexContent>
      <xsd:extension base="TNamedDCDElement">
        <xsd:attribute name="readonly"	type="xsd:boolean"
use="required"		fixed="true"/>
        <xsd:attribute name="category"	type="Category"
use="required"		fixed="ATTRIBUTE"/>
        <xsd:attribute name="infReport"	type="xsd:boolean"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <!-- Operations / Methods -->
  <xsd:complexType name="Method" abstract="true">
    <xsd:complexContent>
      <xsd:extension base="TNamedDCDElement">
        <xsd:attribute name="operationId"		type="xsd:unsignedShort"
use="required"/>
        <xsd:attribute name="category"		type="Category"
use="required"			fixed="OPERATION"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="MethodOutParameter" abstract="true">
    <xsd:attribute name="category"	type="Category"
use="required"		fixed="OUT"/>
    <xsd:attributeGroup ref="TextAttributes"/>
  </xsd:complexType>

  <xsd:complexType name="MethodInParameter" abstract="true">
    <xsd:attribute name="category"	type="Category"
use="required"		fixed="IN"/>
    <xsd:attributeGroup ref="TextAttributes"/>
  </xsd:complexType>

  <!--
    ===========================================================================
    Types of ISO 20242-4 Annex C
    ===========================================================================
  -->
  <xsd:complexType name="ORiNVersionType">
    <xsd:sequence>
      <xsd:element name="Major"		type="xsd:unsignedByte"	default="2"/>
      <xsd:element name="Minor"		type="xsd:unsignedByte"	default="1"/>
      <xsd:element name="Revision"	type="xsd:unsignedByte"	default="0"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="HeaderType">
    <xsd:sequence>
      <xsd:element name="DCD_Version"			type="xsd:unsignedInt"/>
      <xsd:element name="DeviceVersion"		type="xsd:unsignedInt"/>
      <xsd:element name="ProviderName"		type="xsd:string"/>
      <xsd:element name="ProviderVersion"	type="xsd:unsignedInt"/>
      <xsd:element name="Factory"				type="xsd:string"/>
      <xsd:element name="DIT"					type="xsd:string"/>
      <xsd:element name="ORiN_Version"		type="ORiNVersionType"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="ORiN_DCD" abstract="true">
    <xsd:sequence>
      <xsd:element name="ORiN_Header"		type="HeaderType"	minOccurs="0"/>
    </xsd:sequence>
    <xsd:attribute name="category"			type="Category"
use="required"				fixed="DCD"/>
    <xsd:attributeGroup ref="TextAttributes"/>
    <xsd:attribute name="dllPath"				type="xsd:string"
use="required"/>
    <xsd:attribute name="ProviderVersion"	type="xsd:int"
use="required"/>
  </xsd:complexType>

</xsd:schema>
