<?xml version="1.0" encoding="utf-8"?>

<!-- Copyright (C) 2014 The Android Open Source Project

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
-->

<case name="dut_playback_sample" version="1.0" description="Sample test which check frequency of DUT's playback">
	<setup>
		<!-- prepare sound source id: to be used in output, sine 1000Hz, 4000ms long -->
		<sound id="sound1" type="sin:32000:1000:4000" preload="1" />
	</setup>
	<action>
		<sequential repeat="1" index="i">
			<output device="DUT" id="sound1" gain="100" sync="start" waitforcompletion="0" />
			<sequential repeat="1" index="j">
				<!-- dummy recording to compensate for possible playback latency -->
				<input device="host" id="dummy" gain="100" time="1000" sync="complete" />
				<input device="host" id="host_in_$j" gain="100" time="2000" sync="complete" />
			</sequential>
		</sequential>
		<sequential repeat="1" index="k">
			<!-- input: host record, signal frequency in Hz, threshold, output: frequency calculated -->
			<process method="script:playback_sample" input="id:host_in_$k,consti:1000,constf:5.0" output="val:freq_device_$k" />
		</sequential>
	</action>
	<save file="host_in_.*" report="freq_device_.*" />
</case>
