<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="http://www.ieee.org/ATML/2006/HardwareCommon" xmlns:c="http://www.ieee.org/ATML/2006/Common" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.ieee.org/ATML/2006/HardwareCommon" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.00">
	<xs:import namespace="http://www.ieee.org/ATML/2006/Common" schemaLocation="Common.xsd"/>
	<xs:simpleType name="ErrorType">
		<xs:annotation>
			<xs:documentation>Identifies the type of error.</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:NMTOKENS">
			<xs:enumeration value="Warning"/>
			<xs:enumeration value="Error"/>
			<xs:enumeration value="Fatal"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="HardwareItemDescription" abstract="true">
		<xs:annotation>
			<xs:documentation>Abstract type used to describe hardware entities.  Derived types include Instrument Description, UUT Description, Test Station Description, etc.</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="c:ItemDescription">
				<xs:sequence>
					<xs:element name="Interface" type="c:Interface"/>
					<xs:element name="Components" minOccurs="0">
						<xs:annotation>
							<xs:documentation>This collector permits listing any subcomponents of the subject Hardware Item.</xs:documentation>
						</xs:annotation>
						<xs:complexType>
							<xs:sequence>
								<xs:element name="Component" type="c:ItemDescriptionReference" maxOccurs="unbounded">
									<xs:annotation>
										<xs:documentation>Unbounded set of elements describing and identifying each subcomponent. At a minimum, there must be a description and a Part Number. </xs:documentation>
									</xs:annotation>
								</xs:element>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="ParentComponents" minOccurs="0">
						<xs:annotation>
							<xs:documentation>This collector permits listing the parents of the Hardware Item.</xs:documentation>
						</xs:annotation>
						<xs:complexType>
							<xs:sequence>
								<xs:element name="Component" type="c:ItemDescriptionReference" maxOccurs="unbounded">
									<xs:annotation>
										<xs:documentation>Unbounded set of elements describing the Hardware Items into which this Hardware Item can be used as a component.</xs:documentation>
									</xs:annotation>
								</xs:element>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="Control" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element name="Firmware" minOccurs="0">
									<xs:annotation>
										<xs:documentation>TODO: Need a better name for singular/plural firmware</xs:documentation>
									</xs:annotation>
									<xs:complexType>
										<xs:sequence>
											<xs:element name="Firmware" type="VersionIdentifier" maxOccurs="unbounded"/>
										</xs:sequence>
									</xs:complexType>
								</xs:element>
								<xs:element name="Drivers" minOccurs="0">
									<xs:complexType>
										<xs:sequence>
											<xs:element name="Driver" maxOccurs="unbounded">
												<xs:complexType>
													<xs:sequence>
														<xs:element name="Type" type="Driver">
															<xs:annotation>
																<xs:documentation>The driver type is specified by providing a type that derives from the "Driver" abstract type.  The derived type includes any informaiton that is specific to that driver type.  The schema includes derived types for serveral different driver types. </xs:documentation>
															</xs:annotation>
														</xs:element>
														<xs:element name="Dependencies" minOccurs="0">
															<xs:annotation>
																<xs:documentation>Identifies any dependencies.</xs:documentation>
															</xs:annotation>
															<xs:complexType>
																<xs:sequence>
																	<xs:element name="Firmware" type="VersionIdentifier" minOccurs="0" maxOccurs="unbounded"/>
																	<xs:element name="Software" type="VersionIdentifier" minOccurs="0" maxOccurs="unbounded"/>
																</xs:sequence>
															</xs:complexType>
														</xs:element>
														<xs:element name="Platform">
															<xs:annotation>
																<xs:documentation>Identifies the platform requirements for using this driver.</xs:documentation>
															</xs:annotation>
															<xs:complexType>
																<xs:sequence>
																	<xs:element name="OperatingSystem" maxOccurs="unbounded">
																		<xs:complexType>
																			<xs:complexContent>
																				<xs:extension base="VersionIdentifier">
																					<xs:attribute name="servicePack" type="c:NonBlankString"/>
																				</xs:extension>
																			</xs:complexContent>
																		</xs:complexType>
																	</xs:element>
																	<xs:element name="Processor" minOccurs="0">
																		<xs:complexType>
																			<xs:attribute name="speed" type="c:NonBlankString"/>
																		</xs:complexType>
																	</xs:element>
																	<xs:element name="PhysicalMemory" minOccurs="0">
																		<xs:complexType>
																			<xs:attribute name="minimum" type="c:NonBlankString"/>
																		</xs:complexType>
																	</xs:element>
																	<xs:element name="HardDisk" minOccurs="0">
																		<xs:complexType>
																			<xs:attribute name="minimum" type="c:NonBlankString"/>
																		</xs:complexType>
																	</xs:element>
																</xs:sequence>
															</xs:complexType>
														</xs:element>
														<xs:element name="Extension" type="c:Extension" minOccurs="0"/>
													</xs:sequence>
													<xs:attribute name="version" type="c:NonBlankString" use="required"/>
													<xs:attribute name="qualifier">
														<xs:simpleType>
															<xs:restriction base="xs:NMTOKENS">
																<xs:enumeration value="Min"/>
																<xs:enumeration value="Max"/>
															</xs:restriction>
														</xs:simpleType>
													</xs:attribute>
												</xs:complexType>
											</xs:element>
										</xs:sequence>
									</xs:complexType>
								</xs:element>
								<xs:element name="ControlLanguages" minOccurs="0">
									<xs:complexType>
										<xs:sequence>
											<xs:element name="ControlLanguage" type="ControlLanguage" maxOccurs="unbounded">
												<xs:annotation>
													<xs:documentation>The control language is specified by provideing a type that derives from the "ControlLanguage" abstract type.</xs:documentation>
												</xs:annotation>
											</xs:element>
										</xs:sequence>
									</xs:complexType>
								</xs:element>
								<xs:element name="Tools" minOccurs="0">
									<xs:annotation>
										<xs:documentation>Any software tool that comes with the item, e.g., Calibration Utility, Soft Front Panel, etc.</xs:documentation>
									</xs:annotation>
									<xs:complexType>
										<xs:sequence>
											<xs:element name="Tool" maxOccurs="unbounded">
												<xs:complexType>
													<xs:sequence>
														<xs:element name="Dependencies" minOccurs="0">
															<xs:annotation>
																<xs:documentation>Identifies any dependencies.</xs:documentation>
															</xs:annotation>
															<xs:complexType>
																<xs:sequence>
																	<xs:element name="Driver" minOccurs="0" maxOccurs="unbounded">
																		<xs:complexType>
																			<xs:complexContent>
																				<xs:extension base="VersionIdentifier"/>
																			</xs:complexContent>
																		</xs:complexType>
																	</xs:element>
																	<xs:element name="Software" minOccurs="0" maxOccurs="unbounded">
																		<xs:complexType>
																			<xs:complexContent>
																				<xs:extension base="VersionIdentifier"/>
																			</xs:complexContent>
																		</xs:complexType>
																	</xs:element>
																</xs:sequence>
															</xs:complexType>
														</xs:element>
													</xs:sequence>
													<xs:attribute name="name" use="required"/>
													<xs:attribute name="version"/>
													<xs:attribute name="filePath"/>
												</xs:complexType>
											</xs:element>
										</xs:sequence>
									</xs:complexType>
								</xs:element>
								<xs:element name="Extension" type="c:Extension" minOccurs="0"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="Documentation" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element name="Document" type="c:Document" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="ConfigurationOptions" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element name="Option" maxOccurs="unbounded">
									<xs:annotation>
										<xs:documentation>Name of the configuration option. Configuration options are values the user can modify that persist after a power-cycle.</xs:documentation>
									</xs:annotation>
									<xs:complexType>
										<xs:attribute name="name" type="c:NonBlankString" use="required"/>
									</xs:complexType>
								</xs:element>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="FactoryDefaults" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element name="Default" type="c:NamedValue" maxOccurs="unbounded">
									<xs:annotation>
										<xs:documentation>Keyword-value pair for identifying manufacturer item defaults.</xs:documentation>
									</xs:annotation>
								</xs:element>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="CalibrationRequirements" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element name="CalibrationRequirement" maxOccurs="unbounded">
									<xs:complexType>
										<xs:sequence>
											<xs:element name="SupportEquipment" type="c:NonBlankString" minOccurs="0" maxOccurs="unbounded">
												<xs:annotation>
													<xs:documentation>Identifies the support equipment needed for running calibration.</xs:documentation>
												</xs:annotation>
											</xs:element>
											<xs:element name="Procedure" type="c:Document">
												<xs:annotation>
													<xs:documentation>The calibration procedure.</xs:documentation>
												</xs:annotation>
											</xs:element>
										</xs:sequence>
										<xs:attribute name="frequency" type="xs:duration" use="required">
											<xs:annotation>
												<xs:documentation>Specifies how often calibration needs to be executed.</xs:documentation>
											</xs:annotation>
										</xs:attribute>
									</xs:complexType>
								</xs:element>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="OperationalRequirements" type="OperationalRequirements" minOccurs="0"/>
					<xs:element name="EnvironmentalRequirements" type="c:EnvironmentalRequirements" minOccurs="0"/>
					<xs:element name="PowerRequirements" type="PowerSpecifications" minOccurs="0"/>
					<xs:element name="PhysicalCharacteristics" type="PhysicalCharacteristics" minOccurs="0"/>
					<xs:element name="Errors" minOccurs="0">
						<xs:annotation>
							<xs:documentation>List of errors associated with the item.</xs:documentation>
						</xs:annotation>
						<xs:complexType>
							<xs:sequence>
								<xs:element name="Error" maxOccurs="unbounded">
									<xs:complexType>
										<xs:sequence>
											<xs:element name="Description" type="c:NonBlankString"/>
										</xs:sequence>
										<xs:attribute name="type" type="ErrorType">
											<xs:annotation>
												<xs:documentation>Warning, error fatal</xs:documentation>
											</xs:annotation>
										</xs:attribute>
										<xs:attribute name="source" type="c:NonBlankString">
											<xs:annotation>
												<xs:documentation>item, driver</xs:documentation>
											</xs:annotation>
										</xs:attribute>
										<xs:attribute name="id" type="c:NonBlankString" use="required"/>
									</xs:complexType>
								</xs:element>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="NetworkList" minOccurs="0">
						<xs:annotation>
							<xs:documentation>Netlist describing how all the ports in the item are wired together.  In the simplest scenario, the capability ports get wired to Resource ports and the resource ports get wired to the item ports.</xs:documentation>
						</xs:annotation>
						<xs:complexType>
							<xs:sequence>
								<xs:element name="Network" type="Network" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="LegalDocuments" minOccurs="0">
						<xs:complexType>
							<xs:choice maxOccurs="unbounded">
								<xs:element name="Warranty" type="c:Document"/>
								<xs:element name="License" type="c:Document"/>
								<xs:element name="Exportability" type="c:Document"/>
								<xs:element name="Conformance" type="c:Document"/>
								<xs:element name="Safety" type="c:Document"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<!--Control langague abstract types and derived types-->
	<xs:complexType name="ControlLanguage" abstract="true">
		<xs:annotation>
			<xs:documentation>Abstract type for control language identification  Derived types include SCPI and Register</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="Documentation" type="c:Document" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="SCPI">
		<xs:annotation>
			<xs:documentation>Specifies that the item can be controlled using SCPI commands</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="ControlLanguage"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="Register">
		<xs:annotation>
			<xs:documentation>Specifies that the item is register based</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="ControlLanguage"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="Generic">
		<xs:annotation>
			<xs:documentation>Specifies that the item can be controled using some generic control language</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="ControlLanguage"/>
		</xs:complexContent>
	</xs:complexType>
	<!--Driver abstract type and derived types-->
	<xs:complexType name="Driver" abstract="true">
		<xs:annotation>
			<xs:documentation>Abstract type for drivers.  Derived types include VPP, IVI, IVI-C, IVI-COM, etc.</xs:documentation>
		</xs:annotation>
		<xs:attribute name="fileName" type="c:NonBlankString" use="required"/>
		<xs:attribute name="filePath" type="c:NonBlankString"/>
	</xs:complexType>
	<xs:complexType name="VPP">
		<xs:annotation>
			<xs:documentation>VXI plug and play driver</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="Driver">
				<xs:attribute name="prefix" type="c:NonBlankString" use="required"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="IVI" abstract="true">
		<xs:annotation>
			<xs:documentation>IVI driver - includes structure for specifying whether the driver is an IVI-C or IVI-COM driver</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="Driver">
				<xs:sequence>
					<xs:element name="Class" type="c:NonBlankString" minOccurs="0" maxOccurs="unbounded">
						<xs:annotation>
							<xs:documentation>Name of IVI class(es) provided by this driver</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="ComplianceDocument" type="c:Document" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="IVI-C">
		<xs:annotation>
			<xs:documentation>IVI-C driver</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="IVI">
				<xs:attribute name="prefix" type="c:NonBlankString" use="required"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="IVI-COM">
		<xs:annotation>
			<xs:documentation>IVI-COM driver</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="IVI">
				<xs:attribute name="progID" type="c:NonBlankString" use="required">
					<xs:annotation>
						<xs:documentation>ProgID used to instantiate the driver class.</xs:documentation>
					</xs:annotation>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="COM">
		<xs:annotation>
			<xs:documentation>COM driver</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="Driver">
				<xs:attribute name="progID" type="c:NonBlankString" use="required"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="Win32">
		<xs:annotation>
			<xs:documentation>Win32 DLL based driver</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="Driver"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="LabView">
		<xs:annotation>
			<xs:documentation>LabView driver</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="Driver"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="Matlab">
		<xs:annotation>
			<xs:documentation>Matlab driver</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="Driver"/>
		</xs:complexContent>
	</xs:complexType>
	<!--Types for identifying hardware item sub-components: resources, switches, triggers-->
	<xs:complexType name="Item">
		<xs:annotation>
			<xs:documentation>Base type for sub-components of a hardware item</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="Description" type="c:NonBlankString" minOccurs="0"/>
			<xs:element name="Extension" type="c:Extension" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute name="name" type="c:NonBlankString" use="required"/>
	</xs:complexType>
	<xs:complexType name="RepeatedItem">
		<xs:annotation>
			<xs:documentation>Allows multiple identical items to be described with a single element in an instance document.</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="Item">
				<xs:attribute name="baseIndex" type="xs:int" use="optional">
					<xs:annotation>
						<xs:documentation>Starting index for the items.</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="count" type="xs:int" use="optional">
					<xs:annotation>
						<xs:documentation>Number fo identical items</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="incrementBy" type="xs:int" use="optional" default="1">
					<xs:annotation>
						<xs:documentation>Specifies the value to increment by when calculating the value with which the replacement character is replaced.  Allows for defining items where paired items have different characteristics.  Defaults to 1.</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="replacementCharacter" type="c:NonBlankString" use="optional" default="#">
					<xs:annotation>
						<xs:documentation>Character replaced with calculated index when repeated items are expanded. </xs:documentation>
					</xs:annotation>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="Resource">
		<xs:complexContent>
			<xs:extension base="RepeatedItem">
				<xs:sequence>
					<xs:element name="Interface" type="c:Interface"/>
				</xs:sequence>
				<xs:attribute name="index" type="xs:int">
					<xs:annotation>
						<xs:documentation>Index used to identify the resource.</xs:documentation>
					</xs:annotation>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="Resources">
		<xs:sequence>
			<xs:element name="Resource" type="Resource" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="Triggers">
		<xs:sequence>
			<xs:element name="Trigger" type="Trigger" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<!--Types for describing switching-->
	<xs:complexType name="Switching">
		<xs:sequence>
			<xs:choice maxOccurs="unbounded">
				<xs:element name="Switch" type="Switch"/>
				<xs:element name="CrossPointSwitch" type="CrossPointSwitch"/>
				<xs:element name="MatrixSwitch" type="MatrixSwitch"/>
			</xs:choice>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="Switch">
		<xs:complexContent>
			<xs:extension base="RepeatedItem">
				<xs:sequence>
					<xs:element name="Interface" type="c:Interface"/>
					<xs:element name="Connections">
						<xs:complexType>
							<xs:sequence>
								<xs:element name="RelaySetting" maxOccurs="unbounded">
									<xs:complexType>
										<xs:sequence>
											<xs:element name="RelayConnection" minOccurs="0">
												<xs:complexType>
													<xs:attribute name="from" type="c:NonBlankString" use="required"/>
													<xs:attribute name="to" type="c:NonBlankString" use="required"/>
												</xs:complexType>
											</xs:element>
										</xs:sequence>
										<xs:attribute name="name" type="xs:string"/>
									</xs:complexType>
								</xs:element>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="CrossPointSwitch">
		<xs:complexContent>
			<xs:extension base="Item">
				<xs:sequence>
					<xs:element name="Columns">
						<xs:complexType>
							<xs:sequence>
								<xs:element name="Port" type="SwitchPort" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="Rows">
						<xs:complexType>
							<xs:sequence>
								<xs:element name="Port" type="SwitchPort" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="lineCount" type="xs:int" use="required"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="SwitchPort">
		<xs:complexContent>
			<xs:extension base="RepeatedItem">
				<xs:sequence>
					<xs:element name="Pin" maxOccurs="unbounded">
						<xs:complexType>
							<xs:attribute name="name" type="c:NonBlankString" use="required"/>
							<xs:attribute name="line" type="xs:int" use="required"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="MatrixSwitch">
		<xs:complexContent>
			<xs:extension base="Item">
				<xs:sequence>
					<xs:element name="Columns">
						<xs:complexType>
							<xs:sequence>
								<xs:element name="Pin" type="MatrixPort" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="Rows">
						<xs:complexType>
							<xs:sequence>
								<xs:element name="Pin" type="MatrixPort" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="MatrixPort">
		<xs:complexContent>
			<xs:extension base="RepeatedItem"/>
		</xs:complexContent>
	</xs:complexType>
	<!--Types used to describe component connectivity-->
	<xs:complexType name="Network">
		<xs:annotation>
			<xs:documentation>Describes how the various item entities are connected.</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="RepeatedItem">
				<xs:sequence>
					<xs:element name="Node" type="NetworkNode" maxOccurs="unbounded"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="NetworkNode">
		<xs:complexContent>
			<xs:extension base="Item">
				<xs:attribute name="parent" type="c:NonBlankString" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<!--Remaining types-->
	<xs:complexType name="FacilitiesRequirments">
		<xs:sequence>
			<xs:element name="FacilitiesInterface" type="c:Interface" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Non-power interfaces.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="FacilityRequirementsDocuments" minOccurs="0">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="FacilitiesRequirementsDocument" type="c:Document" maxOccurs="unbounded"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="Hydraulic" type="xs:string" minOccurs="0"/>
			<xs:element name="Pneumatic" type="xs:string" minOccurs="0"/>
			<xs:element name="Cooling" type="xs:string" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Test Station cooling requirements.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="Extension" type="c:Extension" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="OperationalRequirements">
		<xs:sequence>
			<xs:element name="OperationalRequirement" type="c:NamedValue" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="warmUpTime" type="xs:duration" use="required"/>
	</xs:complexType>
	<xs:complexType name="PhysicalCharacteristics">
		<xs:all>
			<xs:element name="Mass" type="c:double" minOccurs="0"/>
			<xs:element name="Volume" type="c:double" minOccurs="0"/>
			<xs:element name="LinearMeasurements" minOccurs="0">
				<xs:complexType>
					<xs:all>
						<xs:element name="Height" type="c:double" minOccurs="0"/>
						<xs:element name="Width" type="c:double" minOccurs="0"/>
						<xs:element name="Depth" type="c:double" minOccurs="0"/>
						<xs:element name="RackUSize" minOccurs="0">
							<xs:complexType>
								<xs:attribute name="value" type="xs:double" use="required"/>
							</xs:complexType>
						</xs:element>
					</xs:all>
				</xs:complexType>
			</xs:element>
			<xs:element name="Other" minOccurs="0">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="Value" type="c:NamedValue" maxOccurs="unbounded"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
		</xs:all>
	</xs:complexType>
	<xs:complexType name="PowerSpecifications">
		<xs:choice maxOccurs="unbounded">
			<xs:element name="AC">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="Frequency" type="c:ToleranceValue"/>
						<xs:element name="Voltage" type="c:ToleranceValue"/>
						<xs:element name="Amperage" type="c:ToleranceValue" minOccurs="0"/>
						<xs:element name="Connector" type="c:ConnectorLocation" minOccurs="0"/>
					</xs:sequence>
					<xs:attribute name="phase" type="xs:double" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="DC">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="Voltage" type="c:ToleranceValue"/>
						<xs:element name="Amperage" type="c:ToleranceValue" minOccurs="0"/>
						<xs:element name="Connector" type="c:ConnectorLocation" minOccurs="0"/>
					</xs:sequence>
					<xs:attribute name="polarity" type="xs:double" use="optional"/>
					<xs:attribute name="ripple" type="xs:double" use="optional"/>
				</xs:complexType>
			</xs:element>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="VersionIdentifier">
		<xs:annotation>
			<xs:documentation>Used to identify the minimum/maximum version</xs:documentation>
		</xs:annotation>
		<xs:attribute name="name" type="c:NonBlankString" use="optional"/>
		<xs:attribute name="version" type="c:NonBlankString" use="required"/>
		<xs:attribute name="qualifier" use="required">
			<xs:annotation>
				<xs:documentation>Used to indicate whether the version speciifed is the minum or maximum version supported.</xs:documentation>
			</xs:annotation>
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKENS">
					<xs:enumeration value="Min"/>
					<xs:enumeration value="Max"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
	</xs:complexType>
	<!--Trigger Support-->
	<xs:complexType name="Trigger">
		<xs:annotation>
			<xs:documentation>Details needed to interface with this trigger signal</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="Description" type="c:NonBlankString" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Free text to give details of this trigger signal</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="TriggerProperties">
				<xs:annotation>
					<xs:documentation>Details of the signal that will generate the trigger</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="TriggerPropertyGroup" type="TriggerPropertyGroup" maxOccurs="unbounded"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="TriggerPorts">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="TriggerPort" type="TriggerPort" maxOccurs="unbounded"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="name" type="c:NonBlankString" use="required">
			<xs:annotation>
				<xs:documentation>Name should be descriptive of what this signal does</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="TriggerPropertyGroup" abstract="true">
		<xs:annotation>
			<xs:documentation>Base type for trigger properties</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="Description" type="c:NonBlankString" minOccurs="0"/>
			<xs:element name="Extension" type="c:Extension" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute name="name" type="c:NonBlankString" use="required"/>
	</xs:complexType>
	<xs:complexType name="AnalogTriggerPropertyGroup">
		<xs:annotation>
			<xs:documentation>Properties if trigger comes from an analog signal</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="TriggerPropertyGroup">
				<xs:sequence>
					<xs:element name="Level" type="LevelType"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="DigitalTriggerPropertyGroup">
		<xs:annotation>
			<xs:documentation>Properties if trigger comes from a digital signal</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="TriggerPropertyGroup">
				<xs:sequence>
					<xs:element name="Detection" type="DetectionType"/>
					<xs:element name="MinPulseWidth" type="MinPulseWidthType"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="SoftwareTriggerPropertyGroup">
		<xs:annotation>
			<xs:documentation>Properties if the trigger is intiated by a SW call</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="TriggerPropertyGroup"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="LXILANTriggerPropertyGroup">
		<xs:annotation>
			<xs:documentation>Properties if the trigger is a LXI LAN trigger</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="TriggerPropertyGroup"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="LevelType">
		<xs:annotation>
			<xs:documentation>Describes the analog voltage needed for the trigger</xs:documentation>
		</xs:annotation>
		<xs:attribute name="value" type="xs:double" use="required"/>
		<xs:attribute name="units" type="LevelUnits" use="required"/>
		<xs:attribute name="resolution" type="ResolutionUnits" use="required"/>
	</xs:complexType>
	<xs:complexType name="DetectionType">
		<xs:annotation>
			<xs:documentation>Need to have edgeDetection or levelDetection or both</xs:documentation>
		</xs:annotation>
		<xs:attribute name="edgeDetection" type="DigitalEdge" use="optional"/>
		<xs:attribute name="levelDetection" type="DigitalLevel" use="optional"/>
	</xs:complexType>
	<xs:complexType name="MinPulseWidthType">
		<xs:attribute name="value" type="xs:double" use="required"/>
		<xs:attribute name="units" type="PulseUnits" use="required"/>
	</xs:complexType>
	<xs:complexType name="TriggerPort">
		<xs:annotation>
			<xs:documentation>Direction and type are important to know what interfaces this trigger can be routed to/from.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="Description" type="c:NonBlankString" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute name="name" type="c:NonBlankString" use="required"/>
		<xs:attribute name="direction" type="c:PortDirection" use="required"/>
		<xs:attribute name="type" type="TriggerPortType" use="required">
			<xs:annotation>
				<xs:documentation>Created TriggerPortType to allow capturing of LAN and SW trigger types.</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:simpleType name="TriggerPortType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="Digital"/>
			<xs:enumeration value="Analog"/>
			<xs:enumeration value="Software"/>
			<xs:enumeration value="LAN"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="ResolutionUnits">
		<xs:restriction base="xs:string">
			<xs:enumeration value="8-bits"/>
			<xs:enumeration value="10-bits"/>
			<xs:enumeration value="12-bits"/>
			<xs:enumeration value="14-bits"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="LevelUnits">
		<xs:restriction base="xs:string">
			<xs:enumeration value="%FullScale"/>
			<xs:enumeration value="+/-V"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="DigitalEdge">
		<xs:restriction base="xs:string">
			<xs:enumeration value="Rising"/>
			<xs:enumeration value="Falling"/>
			<xs:enumeration value="Selectable"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="DigitalLevel">
		<xs:restriction base="xs:string">
			<xs:enumeration value="High"/>
			<xs:enumeration value="Low"/>
			<xs:enumeration value="Selectable"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="PulseUnits">
		<xs:restriction base="xs:string">
			<xs:enumeration value="S"/>
			<xs:enumeration value="mS"/>
			<xs:enumeration value="uS"/>
			<xs:enumeration value="nS"/>
			<xs:enumeration value="pS"/>
			<xs:enumeration value="fS"/>
		</xs:restriction>
	</xs:simpleType>
	<!--Capabilities Support-->
	<xs:complexType name="Capabilities">
		<xs:annotation>
			<xs:documentation>Collector element used to group list of capabilities and the mapping of capabilities to ports</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="Capability" type="Capability" maxOccurs="unbounded"/>
			<xs:element name="CapabilityMap" type="CapabilityMap"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="Capability">
		<xs:annotation>
			<xs:documentation>Base type used to describe capabilities</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="Item">
				<xs:sequence>
					<xs:element name="Interface" type="c:Interface"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="CapabilityMap">
		<xs:annotation>
			<xs:documentation>Describes how capabilities are mapped to resource ports</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="CapabilityMapping" type="Network"/>
		</xs:sequence>
	</xs:complexType>
</xs:schema>
