<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:inst="urn:IEEE-1671.2:2009.02:InstrumentDescription" xmlns:hc="urn:IEEE-1671:2009.02:HardwareCommon" xmlns:c="urn:IEEE-1671:2009.02:Common" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:IEEE-1671.2:2009.02:InstrumentDescription" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.03">
<xs:annotation>
<xs:documentation xml:lang="en">

This schema is specified in IEEE Std 1671.2-2008, "IEEE Trial-Use Standard
for Automatic Test Markup Language (ATML) for Exchanging Automatic Test 
Equipment and Test Information via XML:Exchanging Instrument Descriptions."
 
This schema is a World Wide Web Consortium (W3C) Extensible 
Markup Language (XML) binding of the ATML Instrument Description component defined in IEEE
Std 1671.2-2008,"IEEE Trial-Use Standard for Automatic Test Markup 
Language (ATML) for Exchanging Automatic Test Equipment and Test
Information via XML:Exchanging Instrument Descriptions."

The purpose of this schema is to allow the creation of IEEE Std 1671.2-2008
Instrument Description instance documents.
This schema uses the W3C XML Schema definition
language as the encoding. This allows for interoperability and 
the exchange of ATML component instances between various systems.
This schema shall not be modified but may be included in 
derivative works. 

Copyright (c) 2009 Institute of Electrical and Electronics 
Engineers, Inc.

USE AT YOUR OWN RISK

</xs:documentation> 
</xs:annotation>
	<xs:import namespace="urn:IEEE-1671:2009.02:HardwareCommon" schemaLocation="HardwareCommon.xsd"/>
	<xs:import namespace="urn:IEEE-1671:2009.02:Common" schemaLocation="Common.xsd"/>
	<xs:element name="InstrumentDescription">
		<xs:annotation>
			<xs:documentation>Instrument Description</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:complexContent>
				<xs:extension base="hc:HardwareItemDescription">
					<xs:sequence>
						<xs:element name="Buses" minOccurs="0">
							<xs:complexType>
								<xs:sequence>
									<xs:element name="Bus" type="inst:Bus" maxOccurs="unbounded">
										<xs:annotation>
											<xs:documentation>The bus type is specified by specifying a type derivied from the "Bus" abstract type.  The schema includes derived types for common instrumentation control buses.</xs:documentation>
										</xs:annotation>
									</xs:element>
								</xs:sequence>
							</xs:complexType>
						</xs:element>
						<xs:element name="PowerOnDefaults" minOccurs="0">
							<xs:complexType>
								<xs:sequence>
									<xs:element name="Default" type="c:NamedValue" maxOccurs="unbounded">
										<xs:annotation>
											<xs:documentation>Keyword-value pair for identifying power-on defaults.</xs:documentation>
										</xs:annotation>
									</xs:element>
								</xs:sequence>
							</xs:complexType>
						</xs:element>
						<xs:element name="Specifications" type="hc:Specifications" minOccurs="0"/>
						<xs:element name="Resources" type="hc:Resources" minOccurs="0">
							<xs:annotation>
								<xs:documentation>Resources are the physical entities in the instrument that provides the source and measure capabilities.</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="Switching" type="hc:Switching" minOccurs="0"/>
						<xs:element name="Capabilities" type="hc:Capabilities" minOccurs="0"/>
					</xs:sequence>
					<xs:attributeGroup ref="c:DocumentRootAttributes"/>
					<xs:attribute name="type" use="required">
						<xs:simpleType>
							<xs:restriction base="xs:string">
								<xs:enumeration value="Instrument"/>
								<xs:enumeration value="Module"/>
								<xs:enumeration value="Option"/>
							</xs:restriction>
						</xs:simpleType>
					</xs:attribute>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<!--Bus type is an abstract type from which specific bus types are derived.  The Instrument schema defines a number of standard instrument communication buses.-->
	<xs:complexType name="Bus" abstract="true">
		<xs:annotation>
			<xs:documentation>Abstract type for identifying the bus used to communicate with the instrument</xs:documentation>
		</xs:annotation>
		<xs:attribute name="defaultAddress" type="c:NonBlankString"/>
	</xs:complexType>
	<xs:complexType name="VXI">
		<xs:annotation>
			<xs:documentation>VXI Bus</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="inst:Bus">
				<xs:sequence>
					<xs:element name="DynamicCurrent" type="inst:VXIBackplaneVoltages">
						<xs:annotation>
							<xs:documentation>The amount of dynamic current in
amps consumed by the device on each of the VXI backplane voltage lines.</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="PeakCurrent" type="inst:VXIBackplaneVoltages">
						<xs:annotation>
							<xs:documentation>The amount of peak current in amps consumed by the device on each of the VXI backplane voltage lines.</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="ECLTrigger" type="inst:VXITriggerLines">
						<xs:annotation>
							<xs:documentation>The number of ECL trigger lines concurrently input or sensed.</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="TTLTrigger" type="inst:VXITriggerLines">
						<xs:annotation>
							<xs:documentation>The number of TTL trigger lines concurrently input or sensed.</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="Keying">
						<xs:annotation>
							<xs:documentation>Identifies the keying class (1-6) defined by the VXI specification. Classes 7, 8,
and 9 are defined as follows:
Class 7 – No local bus
Class 8 – Sensor +/-16V
Class 9 – Sensor +/-42V
Top Key supports C size modules.
Bottom Key supports D size
modules (Bottom Key on C size
modules is always 7).</xs:documentation>
						</xs:annotation>
						<xs:complexType>
							<xs:attribute name="bottomRight" use="required">
								<xs:simpleType>
									<xs:restriction base="xs:int">
										<xs:minInclusive value="1"/>
										<xs:maxInclusive value="9"/>
									</xs:restriction>
								</xs:simpleType>
							</xs:attribute>
							<xs:attribute name="bottomLeft" use="required">
								<xs:simpleType>
									<xs:restriction base="xs:int">
										<xs:minInclusive value="1"/>
										<xs:maxInclusive value="9"/>
									</xs:restriction>
								</xs:simpleType>
							</xs:attribute>
							<xs:attribute name="topRight" use="required">
								<xs:simpleType>
									<xs:restriction base="xs:int">
										<xs:minInclusive value="1"/>
										<xs:maxInclusive value="9"/>
									</xs:restriction>
								</xs:simpleType>
							</xs:attribute>
							<xs:attribute name="topLeft" use="required">
								<xs:simpleType>
									<xs:restriction base="xs:int">
										<xs:minInclusive value="1"/>
										<xs:maxInclusive value="9"/>
									</xs:restriction>
								</xs:simpleType>
							</xs:attribute>
						</xs:complexType>
					</xs:element>
					<xs:element name="ModuleCooling">
						<xs:complexType>
							<xs:attribute name="backPressure" type="xs:double" use="required">
								<xs:annotation>
									<xs:documentation>The module cooling as back pressure in mm/H2O</xs:documentation>
								</xs:annotation>
							</xs:attribute>
							<xs:attribute name="airFlow" type="xs:double" use="required">
								<xs:annotation>
									<xs:documentation>Represents Module Cooling as air flow in liters/sec.</xs:documentation>
								</xs:annotation>
							</xs:attribute>
						</xs:complexType>
					</xs:element>
					<xs:element name="SupportedClockSources" type="inst:SupportedClockSources">
						<xs:annotation>
							<xs:documentation>Identifies the supported clock sources for the instrument.</xs:documentation>
						</xs:annotation>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="addressSpace" use="required">
					<xs:annotation>
						<xs:documentation>Identifies the type of VXI address space needed by the instrument or module in addition to A16.</xs:documentation>
					</xs:annotation>
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:enumeration value="A16"/>
							<xs:enumeration value="A24"/>
							<xs:enumeration value="A32"/>
							<xs:enumeration value="A64"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
				<xs:attribute name="deviceClass" use="required">
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:enumeration value="Message"/>
							<xs:enumeration value="Register"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
				<xs:attribute name="deviceCategory" type="inst:DeviceCategory" use="required"/>
				<xs:attribute name="dynamicallyConfigured" type="xs:boolean" use="required"/>
				<xs:attribute name="interruptLines" type="xs:int" use="required">
					<xs:annotation>
						<xs:documentation>The number of interrupt lines utilized by a device.</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="manufacturerID" type="c:HexValue" use="required"/>
				<xs:attribute name="modelCode" type="c:HexValue" use="required"/>
				<xs:attribute name="requiredMemory" type="c:HexValue" use="required"/>
				<xs:attribute name="slotSize" use="required">
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:enumeration value="A"/>
							<xs:enumeration value="B"/>
							<xs:enumeration value="C"/>
							<xs:enumeration value="D"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
				<xs:attribute name="slotWeight" type="xs:double" use="required">
					<xs:annotation>
						<xs:documentation>The weight of the module in kilograms per slot occupied.</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="slots" type="xs:int" use="required">
					<xs:annotation>
						<xs:documentation>The number of slots consumed.</xs:documentation>
					</xs:annotation>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="VXIBackplaneVoltages">
		<xs:annotation>
			<xs:documentation>This type is used to store the amount of current in amps consumed by the device for each of the VXI backplane voltages.</xs:documentation>
		</xs:annotation>
		<xs:attribute name="plus_12" type="xs:double" use="required"/>
		<xs:attribute name="plus_24" type="xs:double" use="required"/>
		<xs:attribute name="plus_5_standby" type="xs:double" use="required"/>
		<xs:attribute name="plus_5" type="xs:double" use="required"/>
		<xs:attribute name="minus_12" type="xs:double" use="required"/>
		<xs:attribute name="minus_24" type="xs:double" use="required"/>
		<xs:attribute name="minus_2" type="xs:double" use="required"/>
		<xs:attribute name="minus_5.2" type="xs:double" use="required"/>
	</xs:complexType>
	<xs:complexType name="VXITriggerLines">
		<xs:annotation>
			<xs:documentation>Used to specify the number of triggers concurrently input or sensed.</xs:documentation>
		</xs:annotation>
		<xs:attribute name="source" type="xs:int" use="optional"/>
		<xs:attribute name="sense" type="xs:int" use="optional"/>
	</xs:complexType>
	<xs:complexType name="IEEE-488">
		<xs:annotation>
			<xs:documentation>IEEE-488 bus</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="inst:Bus"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="VME">
		<xs:annotation>
			<xs:documentation>VME Bus</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="inst:Bus"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="Ethernet">
		<xs:annotation>
			<xs:documentation>Ethernet</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="inst:Bus">
				<xs:attribute name="supportsDHCP" type="xs:boolean" use="required"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="EIA-232">
		<xs:annotation>
			<xs:documentation>RS-232</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="inst:Bus"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="USB">
		<xs:annotation>
			<xs:documentation>USB</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="inst:Bus">
				<xs:sequence>
					<xs:element name="Version" type="hc:VersionIdentifier">
						<xs:annotation>
							<xs:documentation>Used to identify the version of USB supported.</xs:documentation>
						</xs:annotation>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="IEEE-1394">
		<xs:annotation>
			<xs:documentation>IEEE--1394</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="inst:Bus"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="LXI">
		<xs:annotation>
			<xs:documentation>LXI</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="inst:Ethernet">
				<xs:attribute name="LXIVersion" type="c:NonBlankString" use="required"/>
				<xs:attribute name="class" use="required">
					<xs:simpleType>
						<xs:restriction base="c:NonBlankString">
							<xs:enumeration value="A"/>
							<xs:enumeration value="B"/>
							<xs:enumeration value="C"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="PCI">
		<xs:annotation>
			<xs:documentation>PCI</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="inst:Bus">
				<xs:attribute name="vendorID" type="c:HexValue" use="required"/>
				<xs:attribute name="deviceID" type="c:HexValue" use="required"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="PCIe">
		<xs:annotation>
			<xs:documentation>PCI Express</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="inst:PCI">
				<xs:attribute name="numberOfLanes" type="xs:int" use="required"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="PXI">
		<xs:annotation>
			<xs:documentation>PXI</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="inst:PCI">
				<xs:sequence>
					<xs:element name="DynamicCurrent" type="inst:PXIBackplaneVoltages">
						<xs:annotation>
							<xs:documentation>The amount of dynamic current in
amps consumed by the device on each of the PXI backplane voltage lines.</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="PeakCurrent" type="inst:PXIBackplaneVoltages">
						<xs:annotation>
							<xs:documentation>The amount of peak current in amps consumed by the device on each of the PXI backplane voltage lines.</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="SupportedClockSources" type="inst:SupportedClockSources">
						<xs:annotation>
							<xs:documentation>Identifies the supported clock sources for the instrument.</xs:documentation>
						</xs:annotation>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="deviceCategory" type="inst:DeviceCategory" use="required"/>
				<xs:attribute name="slots" type="xs:int" use="required">
					<xs:annotation>
						<xs:documentation>The number of PXI slots provided or consumed by this device.</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="slotSize" use="required">
					<xs:annotation>
						<xs:documentation>A string specifying which of the defined sizes this PXI component supports. The string shall be one of the following: 3U, 6U.</xs:documentation>
					</xs:annotation>
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:enumeration value="3U"/>
							<xs:enumeration value="6U"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
				<xs:attribute name="slotWeigth" type="xs:double" use="required">
					<xs:annotation>
						<xs:documentation>For a PXI module, this is a negative floating point number representing the weight of the module in kilogram per slot occupied.
For a PXI mainframe, this is a positive floating point number representing the weight of the mainframe in kilogram per slot provided.</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="memorySize" type="xs:int" use="required"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="PXIBackplaneVoltages">
		<xs:annotation>
			<xs:documentation>This type is used to store the amount of current in amps consumed by the device</xs:documentation>
		</xs:annotation>
		<xs:attribute name="plus_5" type="xs:double" use="required"/>
		<xs:attribute name="plus_3.3" type="xs:double" use="required"/>
		<xs:attribute name="plus_12" type="xs:double" use="required"/>
		<xs:attribute name="minus_12" type="xs:double" use="required"/>
	</xs:complexType>
	<xs:complexType name="PXIe">
		<xs:annotation>
			<xs:documentation>PXI Express</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="inst:PXI">
				<xs:attribute name="numberOfLanes" type="xs:int" use="required"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:simpleType name="DeviceCategory">
		<xs:annotation>
			<xs:documentation>PXI and VXI device categories</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:enumeration value="InstrumentModule"/>
			<xs:enumeration value="Slot0Device"/>
			<xs:enumeration value="Mainframe"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="SupportedClockSources">
		<xs:attribute name="internal" type="xs:boolean" use="required"/>
		<xs:attribute name="external" type="xs:boolean" use="required"/>
		<xs:attribute name="backplane" type="xs:boolean" use="required"/>
	</xs:complexType>
</xs:schema>
