<?xml version="1.0" encoding="UTF-8"?>
<!-- Example for IEEE 1671.1 ATML Test Description: Use of OperationRepeat and OperationConditional operation types; use of IteratorTransferSignal type -->
<TestDescription xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:c="urn:IEEE-1671:2009.02:Common" xmlns:hc="urn:IEEE-1671:2009.02:HardwareCommon" xmlns="urn:IEEE-1671.1:2009:TestDescription" xmlns:std="STDBSC" xmlns:tsf="STDTSFLib" xsi:schemaLocation="urn:IEEE-1671.1:2009:TestDescription TestDescription.xsd STDBSC STDBSC.xsd STDTSFLib STDTSFLib.xsd" uuid="{A0A7B49E-C227-405d-A337-991B701FA7BB}">
	<TsfLibraries>
		<TsfLibrary name="STDTSFLib" ID="1">
			<XmlSchemaURL> STDTSFLib.xsd </XmlSchemaURL>
			<XmlInstanceDocumentURL> STDTSFLib.xml </XmlInstanceDocumentURL>
		</TsfLibrary>
	</TsfLibraries>
	<UUT>
		<Description>
			<c:Definition>
				<c:Identification>
					<c:ModelName>ActionRepeat and ActionConditional Example</c:ModelName>
				</c:Identification>
			</c:Definition>
		</Description>
	</UUT>
	<InterfaceRequirements>
		<c:Ports>
			<c:Port name="P1" direction="Bi-Directional">
				<c:ConnectorPins>
					<c:ConnectorPin connectorID="J1" pinID="1"/>
					<c:ConnectorPin connectorID="J1" pinID="2"/>
					<c:ConnectorPin connectorID="J1" pinID="3"/>
					<c:ConnectorPin connectorID="J1" pinID="4"/>
					<c:ConnectorPin connectorID="J1" pinID="5"/>
					<c:ConnectorPin connectorID="J1" pinID="6"/>
					<c:ConnectorPin connectorID="J1" pinID="7"/>
					<c:ConnectorPin connectorID="J1" pinID="8"/>
				</c:ConnectorPins>
			</c:Port>
		</c:Ports>
		<c:Connectors>
			<c:Connector ID="J1" location="Front" type="001" matingConnectorType="001">
				<c:Identification designator="J1">
					<c:ModelName>ABC</c:ModelName>
					<c:IdentificationNumbers>
						<c:IdentificationNumber number="001" type="Part" qualifier="User"/>
					</c:IdentificationNumbers>
				</c:Identification>
			</c:Connector>
		</c:Connectors>
	</InterfaceRequirements>
	<DetailedTestInformation>
		<EntryPoints>
			<TestGroupEntryPoints primaryTestGroupEntryPointID="ep1">
				<TestGroupEntryPoint ID="ep1" testGroupID="seq1"/>
			</TestGroupEntryPoints>
		</EntryPoints>
		<Actions>
			<Action xsi:type="Test" ID="test1" name="Test1">
				<Description>Frequency sweep</Description>
				<Behavior>
					<Operations>
						<Operation xsi:type="OperationRepeat" ID="oprep1">
							<Setup>
								<!-- Setup and Connect stimulus signal -->
								<Operation xsi:type="OperationSetup" ID="op1">
									<Source>
										<LocalSourceSignalReference localSourceSignalID="ls1"/>
										<std:Signal>
											<tsf:AC_SIGNAL name="AC_Signal1" ac_ampl="0.5 V errlmt +- 1.0%" freq="1 MHz"/>
										</std:Signal>
									</Source>
								</Operation>
								<Operation xsi:type="OperationConnect" ID="op2">
									<Signal>
										<LocalSignalReference localSignalID="ls1"/>
										<std:Signal>
											<std:TwoWire name="Conn1" hi="J1-1" lo="J1-2"/>
										</std:Signal>
									</Signal>
								</Operation>
							</Setup>
							<Body>
								<!-- display frequency  -->
								<Operation xsi:type="OperationMessageOut" ID="op3">
									<Description>Display frequency to the operator</Description>
									<MessageOut>
										<c:Datum xsi:type="ValueFromIterator" iteratorID="it1"/>
									</MessageOut>
								</Operation>
								<!-- change stimulus frequency  -->
								<Operation xsi:type="OperationChange" ID="op4">
									<LocalSignalReference localSignalID="ls1"/>
									<!-- Change 'freq' attribute of signal with ID = stim1 using the current value of the iterator of the Repeat Action -->
									<AttributeChanges>
										<AttributeChange attributeName="freq">
											<IteratorInValue iteratorID="it1"/>
										</AttributeChange>
									</AttributeChanges>
								</Operation>
								<!-- measure response -->
								<Operation xsi:type="OperationSetup" ID="op5">
									<Sensor>
										<LocalSensorSignalReference localSensorSignalID="ls2"/>
										<std:Signal Out="MeasureDigital1">
											<tsf:DIGITAL_PARALLEL name="Digital1" logic_zero_value="0.5 V" logic_one_value="2.5 V"/>
											<std:Measure name="MeasureDigital1" As="Digital1" attribute="data_value"/>
										</std:Signal>
									</Sensor>
								</Operation>
								<Operation xsi:type="OperationConnect" ID="op6">
									<Signal>
										<LocalSignalReference localSignalID="ls2"/>
										<!--The current revision of IEEE Std. 1641 does not allow the specification of connectivity to UUT connector pins. This feature will be supported in the next revision.-->
										<std:Signal>
											<std:DigitalBus name="Conn2" channelWidth="08"/>
										</std:Signal>
									</Signal>
								</Operation>
								<Operation xsi:type="OperationRead" ID="op7">
									<Measurement ID="meas1"/>
									<LocalSensorSignalReference localSensorSignalID="ls2"/>
								</Operation>
								<Operation xsi:type="OperationOther" ID="op8">
									<DetailedInformation>Record value measured by Measurement with ID='1' in array, for subsequent processing </DetailedInformation>
								</Operation>
								<Operation xsi:type="OperationDisconnect" ID="op9">
									<Signal>
										<LocalSignalReference localSignalID="ls2"/>
									</Signal>
								</Operation>
							</Body>
							<Decision>
								<Iterator ID="it1" name="frequency">
									<IncrementValues>
										<Value xsi:type="IncrementedValue">
											<InitialValue>
												<c:Datum xsi:type="c:double" value="1.0" standardUnit="MHz"/>
											</InitialValue>
											<Increment>
												<Linear>
													<c:Datum xsi:type="c:double" value="10" standardUnit="kHz"/>
												</Linear>
											</Increment>
										</Value>
										<Limits>
											<Limit>
												<c:SingleLimit comparator="LE">
													<c:Datum xsi:type="c:double" value="2.0" standardUnit="MHz"/>
												</c:SingleLimit>
											</Limit>
										</Limits>
									</IncrementValues>
								</Iterator>
							</Decision>
						</Operation>
						<!-- disconnect and reset stimulus -->
						<Operation xsi:type="OperationDisconnect" ID="op9">
							<Signal>
								<LocalSignalReference localSignalID="ls1"/>
							</Signal>
						</Operation>
						<Operation xsi:type="OperationReset" ID="op10">
							<LocalSignalReference localSignalID="ls1"/>
						</Operation>
					</Operations>
				</Behavior>
				<LocalSignals>
					<LocalSignal name="stim1">
						<Source ID="ls1"/>
					</LocalSignal>
					<LocalSignal name="resp1">
						<Sensor ID="ls2"/>
					</LocalSignal>
				</LocalSignals>
				<Outcomes>
					<Outcome ID="t1o1" value="Passed"/>
					<Outcome ID="t1o2" value="Failed"/>
				</Outcomes>
			</Action>
			<Action xsi:type="Test" ID="test2" name="Test2">
				<Description>Repeat action based on value provided by operator</Description>
				<Behavior>
					<Operations>
						<Operation xsi:type="OperationRepeat" ID="oprep2">
							<Body>
								<Operation xsi:type="OperationOther" ID="op11">
									<DetailedInformation>Some action that changes the displayed value</DetailedInformation>
								</Operation>
								<Operation xsi:type="OperationMessageOut" ID="op12">
									<MessageOut>
										<c:Datum xsi:type="c:string">
											<c:Value>Type value shown on display</c:Value>
										</c:Datum>
									</MessageOut>
								</Operation>
								<Operation xsi:type="OperationMessageIn" ID="op13">
									<MessageIn ID="mes1">
										<ValueDescription>
											<DatumDescription xsi:type="integerDescription"/>
										</ValueDescription>
									</MessageIn>
								</Operation>
							</Body>
							<Decision>
								<Iterator ID="it2">
									<IncrementValues>
										<Value xsi:type="ValueFromOperationMessageIn" messageInID="mes1"/>
										<Limits>
											<Limit>
												<c:SingleLimit comparator="LE">
													<c:Datum xsi:type="c:integer" value="10"/>
												</c:SingleLimit>
											</Limit>
										</Limits>
									</IncrementValues>
								</Iterator>
							</Decision>
						</Operation>
					</Operations>
				</Behavior>
				<Outcomes>
					<Outcome ID="t2o1" value="Passed"/>
					<Outcome ID="t2o2" value="Failed"/>
				</Outcomes>
			</Action>
			<Action xsi:type="Test" ID="test3" name="Test3">
				<Description>Repeat action based on measured value</Description>
				<!-- Note: from a signal usage standpoint, this is an incomplete example. The signal is not properly connected, reset, etc.-->
				<Behavior>
					<Operations>
						<Operation xsi:type="OperationSetup" ID="op14">
							<Description>Setup sensor</Description>
							<Sensor>
								<LocalSensorSignalReference localSensorSignalID="ls1"/>
								<std:Signal Out="Measure2">
									<tsf:DC_SIGNAL name="DcSignal2" dc_ampl="0 V"/>
									<std:Measure name="Measure2" As="DcSignal2" attribute="dc_ampl"/>
								</std:Signal>
							</Sensor>
						</Operation>
						<Operation xsi:type="OperationRepeat" ID="oprep3">
							<Body>
								<Operation xsi:type="OperationOther" ID="op15">
									<DetailedInformation>Some action</DetailedInformation>
								</Operation>
								<Operation xsi:type="OperationRead" ID="op16">
									<Description>Measure value</Description>
									<Measurement ID="meas2"/>
									<LocalSensorSignalReference localSensorSignalID="ls1"/>
								</Operation>
							</Body>
							<Decision>
								<Iterator ID="it2">
									<IncrementValues>
										<Value xsi:type="ValueFromOperationMeasurement" measurementID="meas2"/>
										<Limits>
											<Limit>
												<c:SingleLimit comparator="LE">
													<c:Datum xsi:type="c:integer" value="10"/>
												</c:SingleLimit>
											</Limit>
										</Limits>
									</IncrementValues>
								</Iterator>
							</Decision>
						</Operation>
					</Operations>
				</Behavior>
				<LocalSignals>
					<LocalSignal name="sens1">
						<Sensor ID="ls1"/>
					</LocalSignal>
				</LocalSignals>
				<Outcomes>
					<Outcome ID="t3o1" value="Passed"/>
					<Outcome ID="t3o2" value="Failed"/>
				</Outcomes>
			</Action>
			<Action xsi:type="Test" ID="test4" name="Test4">
				<Description>Illustrates the use of Conditional Action</Description>
				<!-- Note: from a signal usage standpoint, this is an incomplete example. The signal is not properly connected, reset, etc.-->
				<Parameters>
					<Parameter ID="t4p1" name="CompareValue">
						<Value>
							<c:Datum xsi:type="c:double" standardUnit="V" value="0.15"/>
						</Value>
					</Parameter>
					<Parameter ID="t4p2" name="UpperLimit">
						<Value>
							<c:Datum xsi:type="c:double" standardUnit="V" value="0.20"/>
						</Value>
					</Parameter>
				</Parameters>
				<Behavior>
					<Operations>
						<Operation xsi:type="OperationSetup" ID="op17">
							<Description>Setup sensor</Description>
							<Sensor>
								<LocalSensorSignalReference localSensorSignalID="ls1"/>
								<std:Signal Out="Measure2">
									<tsf:DC_SIGNAL name="DcSignal3" dc_ampl="0 V"/>
									<std:Measure name="Measure3" As="DcSignal3" attribute="dc_ampl"/>
								</std:Signal>
							</Sensor>
						</Operation>
						<Operation xsi:type="OperationRead" ID="op18">
							<Description>Measure value</Description>
							<Measurement ID="meas3"/>
							<LocalSensorSignalReference localSensorSignalID="ls1"/>
						</Operation>
						<Operation xsi:type="OperationConditional" ID="op19">
							<Description>Conditional action based on measured value. Limit from Test Parameter.</Description>
							<Decision>
								<ValueComparison>
									<Value xsi:type="ValueFromOperationMeasurement" measurementID="meas3"/>
									<Limits>
										<Limit>
											<c:LimitPair operator="AND">
												<c:Limit comparator="GE">
													<c:Datum xsi:type="c:double" standardUnit="V" value="0.2"/>
												</c:Limit>
												<c:Limit comparator="LE">
													<c:Datum xsi:type="ValueFromActionParameter" parameterID="t4p2"/>
												</c:Limit>
											</c:LimitPair>
										</Limit>
									</Limits>
								</ValueComparison>
							</Decision>
							<OnTrue>
								<Operation xsi:type="OperationOther" ID="op21">
									<DetailedInformation>Some Operation</DetailedInformation>
								</Operation>
							</OnTrue>
							<OnFalse>
								<Operation xsi:type="OperationOther" ID="op22">
									<DetailedInformation>Some other Operation</DetailedInformation>
								</Operation>
							</OnFalse>
						</Operation>
						<Operation xsi:type="OperationConditional" ID="op20">
							<Description>Conditional action based on value from Test Parameter</Description>
							<Decision>
								<ValueComparison>
									<Value xsi:type="ValueFromActionParameter" parameterID="t4p1"/>
									<Limits>
										<Limit>
											<c:LimitPair operator="AND">
												<c:Limit comparator="GE">
													<c:Datum xsi:type="c:double" standardUnit="V" value="0.1"/>
												</c:Limit>
												<c:Limit comparator="LE">
													<c:Datum xsi:type="c:double" standardUnit="V" value="0.2"/>
												</c:Limit>
											</c:LimitPair>
										</Limit>
									</Limits>
								</ValueComparison>
							</Decision>
							<OnTrue>
								<Operation xsi:type="OperationOther" ID="op23">
									<DetailedInformation>Some Operation</DetailedInformation>
								</Operation>
							</OnTrue>
							<OnFalse>
								<Operation xsi:type="OperationOther" ID="op24">
									<DetailedInformation>Some other Operation</DetailedInformation>
								</Operation>
							</OnFalse>
						</Operation>
					</Operations>
				</Behavior>
				<LocalSignals>
					<LocalSignal name="sens2">
						<Sensor ID="ls1"/>
					</LocalSignal>
				</LocalSignals>
				<Outcomes>
					<Outcome ID="t4o1" value="Passed"/>
					<Outcome ID="t4o2" value="Failed"/>
				</Outcomes>
			</Action>
		</Actions>
		<TestGroups>
			<TestGroup xsi:type="TestGroupSequence" ID="seq1" name="Seq1">
				<Outcomes>
					<Outcome ID="s1o1" value="Passed"/>
					<Outcome ID="s1o2" value="Failed" qualifier="Fault1">
						<DetectionIsolation>
							<Faults>
								<Fault faultID="c1f1"/>
							</Faults>
						</DetectionIsolation>
					</Outcome>
					<Outcome ID="s1o3" value="Failed" qualifier="Fault2">
						<DetectionIsolation>
							<Faults>
								<Fault faultID="c2f1"/>
							</Faults>
						</DetectionIsolation>
					</Outcome>
					<Outcome ID="s1o4" value="Failed" qualifier="Fault3">
						<DetectionIsolation>
							<Faults>
								<Fault faultID="c3f1"/>
							</Faults>
						</DetectionIsolation>
					</Outcome>
					<Outcome ID="s1o5" value="Failed" qualifier="Fault4">
						<DetectionIsolation>
							<Faults>
								<Fault faultID="c4f1"/>
								<Fault faultID="c5f1"/>
								<Fault faultID="c6f1"/>
							</Faults>
						</DetectionIsolation>
					</Outcome>
				</Outcomes>
				<Steps>
					<Step ID="step1">
						<ActionReference actionID="test1"/>
						<Results>
							<Result>
								<ActionOutcomeReference actionOutcomeID="t1o1"/>
								<NextStep stepID="step2"/>
							</Result>
							<Result>
								<ActionOutcomeReference actionOutcomeID="t1o2"/>
								<NextStep stepID="step3"/>
							</Result>
						</Results>
					</Step>
					<Step ID="step2">
						<ActionReference actionID="test2"/>
						<Results>
							<Result>
								<ActionOutcomeReference actionOutcomeID="t2o1"/>
								<NextStep stepID="step4"/>
							</Result>
							<Result>
								<ActionOutcomeReference actionOutcomeID="t2o2"/>
								<SequenceOutcome sequenceOutcomeID="s1o4"/>
							</Result>
						</Results>
					</Step>
					<Step ID="step3">
						<ActionReference actionID="test3"/>
						<Results>
							<Result>
								<ActionOutcomeReference actionOutcomeID="t3o1"/>
								<SequenceOutcome sequenceOutcomeID="s1o2"/>
							</Result>
							<Result>
								<ActionOutcomeReference actionOutcomeID="t3o2"/>
								<SequenceOutcome sequenceOutcomeID="s1o3"/>
							</Result>
						</Results>
					</Step>
					<Step ID="step4">
						<ActionReference actionID="test4"/>
						<Results>
							<Result>
								<ActionOutcomeReference actionOutcomeID="t4o1"/>
								<SequenceOutcome sequenceOutcomeID="s1o1"/>
							</Result>
							<Result>
								<ActionOutcomeReference actionOutcomeID="t4o2"/>
								<SequenceOutcome sequenceOutcomeID="s1o5"/>
							</Result>
						</Results>
					</Step>
				</Steps>
				<EntryPoints primaryEntryPointID="ep2">
					<EntryPoint ID="ep2" stepID="step1"/>
				</EntryPoints>
			</TestGroup>
		</TestGroups>
	</DetailedTestInformation>
	<FailureFaultData>
		<FaultData>
			<Components>
				<Component ID="c1">
					<c:Identification designator="C1">
						<c:ModelName>Capacitor</c:ModelName>
						<c:IdentificationNumbers>
							<c:IdentificationNumber type="Model" number="1111" qualifier="User"/>
						</c:IdentificationNumbers>
					</c:Identification>
					<Faults>
						<Fault detectability="DetectableInsertable" ID="c1f1">
							<FailureMode>Unnamed</FailureMode>
						</Fault>
					</Faults>
				</Component>
				<Component ID="c2">
					<c:Identification designator="C2">
						<c:ModelName>Capacitor</c:ModelName>
						<c:IdentificationNumbers>
							<c:IdentificationNumber type="Model" number="1111" qualifier="User"/>
						</c:IdentificationNumbers>
					</c:Identification>
					<Faults>
						<Fault detectability="DetectableInsertable" ID="c2f1">
							<FailureMode>Unnamed</FailureMode>
						</Fault>
					</Faults>
				</Component>
				<Component ID="c3">
					<c:Identification designator="C3">
						<c:ModelName>Capacitor</c:ModelName>
						<c:IdentificationNumbers>
							<c:IdentificationNumber type="Model" number="1111" qualifier="User"/>
						</c:IdentificationNumbers>
					</c:Identification>
					<Faults>
						<Fault detectability="DetectableInsertable" ID="c3f1">
							<FailureMode>Unnamed</FailureMode>
						</Fault>
					</Faults>
				</Component>
				<Component ID="c4">
					<c:Identification designator="C4">
						<c:ModelName>Capacitor</c:ModelName>
						<c:IdentificationNumbers>
							<c:IdentificationNumber type="Model" number="1111" qualifier="User"/>
						</c:IdentificationNumbers>
					</c:Identification>
					<Faults>
						<Fault detectability="DetectableInsertable" ID="c4f1">
							<FailureMode>Unnamed</FailureMode>
						</Fault>
					</Faults>
				</Component>
				<Component ID="c5">
					<c:Identification designator="C5">
						<c:ModelName>Capacitor</c:ModelName>
						<c:IdentificationNumbers>
							<c:IdentificationNumber type="Model" number="1111" qualifier="User"/>
						</c:IdentificationNumbers>
					</c:Identification>
					<Faults>
						<Fault detectability="DetectableInsertable" ID="c5f1">
							<FailureMode>Unnamed</FailureMode>
						</Fault>
					</Faults>
				</Component>
				<Component ID="c6">
					<c:Identification designator="C6">
						<c:ModelName>Capacitor</c:ModelName>
						<c:IdentificationNumbers>
							<c:IdentificationNumber type="Model" number="1111" qualifier="User"/>
						</c:IdentificationNumbers>
					</c:Identification>
					<Faults>
						<Fault detectability="DetectableInsertable" ID="c6f1">
							<FailureMode>Unnamed</FailureMode>
						</Fault>
					</Faults>
				</Component>
			</Components>
		</FaultData>
	</FailureFaultData>
</TestDescription>
