Blame bat/alsabat-test.sh

Packit Service a9274b
#!/bin/bash
Packit Service a9274b
Packit Service a9274b
# default devices
Packit Service a9274b
dev_playback="default"
Packit Service a9274b
dev_capture="default"
Packit Service a9274b
Packit Service a9274b
bin="alsabat"
Packit Service a9274b
commands="$bin -P $dev_playback -C $dev_capture"
Packit Service a9274b
Packit Service a9274b
file_sin_mono="default_mono.wav"
Packit Service a9274b
file_sin_dual="default_dual.wav"
Packit Service a9274b
logdir="tmp"
Packit Service a9274b
Packit Service a9274b
# frequency range of signal
Packit Service a9274b
maxfreq=16547
Packit Service a9274b
minfreq=17
Packit Service a9274b
Packit Service a9274b
# sleep time and pause time
Packit Service a9274b
sleep_time=5
Packit Service a9274b
pause_time=2
Packit Service a9274b
Packit Service a9274b
# features passes vs. features all
Packit Service a9274b
feature_pass=0
Packit Service a9274b
feature_cnt=0
Packit Service a9274b
Packit Service a9274b
init_counter () {
Packit Service a9274b
	feature_pass=0
Packit Service a9274b
	feature_all=0
Packit Service a9274b
}
Packit Service a9274b
Packit Service a9274b
evaluate_result () {
Packit Service a9274b
	feature_cnt=$((feature_cnt+1))
Packit Service a9274b
	if [ $1 -eq 0 ]; then
Packit Service a9274b
		feature_pass=$((feature_pass+1))
Packit Service a9274b
		echo "pass"
Packit Service a9274b
	else
Packit Service a9274b
		echo "fail"
Packit Service a9274b
	fi
Packit Service a9274b
}
Packit Service a9274b
Packit Service a9274b
print_result () {
Packit Service a9274b
	echo "[$feature_pass/$feature_cnt] features passes."
Packit Service a9274b
}
Packit Service a9274b
Packit Service a9274b
feature_test () {
Packit Service a9274b
	echo "============================================"
Packit Service a9274b
	echo "$feature_cnt: ALSA $2"
Packit Service a9274b
	echo "-------------------------------------------"
Packit Service a9274b
	echo "$commands $1 --log=$logdir/$feature_cnt.log"
Packit Service a9274b
	$commands $1 --log=$logdir/$feature_cnt.log
Packit Service a9274b
	evaluate_result $?
Packit Service a9274b
	echo "$commands $1" >> $logdir/$((feature_cnt-1)).log
Packit Service a9274b
}
Packit Service a9274b
Packit Service a9274b
feature_test_power () {
Packit Service a9274b
	echo "============================================"
Packit Service a9274b
	echo "$feature_cnt: ALSA $2"
Packit Service a9274b
	echo "-------------------------------------------"
Packit Service a9274b
	echo "$commands $1 --log=$logdir/$feature_cnt.log"
Packit Service a9274b
Packit Service a9274b
	# run alsabat in the background
Packit Service a9274b
	nohup $commands $1 > $logdir/$feature_cnt.log 2>&1 &
Packit Service a9274b
	sleep $pause_time
Packit Service a9274b
	pid=`ps -aux |grep alsabat|head -1 |awk -F ' ' '{print $2}'`
Packit Service a9274b
Packit Service a9274b
	# stop the alsabat thread
Packit Service a9274b
	kill -STOP $pid > /dev/null
Packit Service a9274b
	sleep 4
Packit Service a9274b
Packit Service a9274b
	# do system S3
Packit Service a9274b
	rtcwake -m mem -s $sleep_time
Packit Service a9274b
	sleep $pause_time
Packit Service a9274b
Packit Service a9274b
	# resume the alasbat thread to run
Packit Service a9274b
	kill -CONT $pid > /dev/null
Packit Service a9274b
Packit Service a9274b
	# wait for alsabat to complete the analysis
Packit Service a9274b
	sleep $pause_time
Packit Service a9274b
	cat $logdir/$feature_cnt.log |grep -i "Return value is 0" > /dev/null
Packit Service a9274b
	evaluate_result $?
Packit Service a9274b
	echo "$commands $1" >> $logdir/$((feature_cnt-1)).log
Packit Service a9274b
}
Packit Service a9274b
Packit Service a9274b
# test items
Packit Service a9274b
feature_list_test () {
Packit Service a9274b
	init_counter
Packit Service a9274b
Packit Service a9274b
	commands="$bin"
Packit Service a9274b
	feature_test "-c1 --saveplay $file_sin_mono" \
Packit Service a9274b
			"generate mono wav file with default params"
Packit Service a9274b
	feature_test "-c2 --saveplay $file_sin_dual" \
Packit Service a9274b
			"generate dual wav file with default params"
Packit Service a9274b
	sleep 5
Packit Service a9274b
	feature_test "-P $dev_playback" "single line mode, playback"
Packit Service a9274b
	feature_test "-C $dev_capture --standalone" "single line mode, capture"
Packit Service a9274b
Packit Service a9274b
	commands="$bin -P $dev_playback -C $dev_capture"
Packit Service a9274b
	feature_test "--file $file_sin_mono" "play mono wav file and detect"
Packit Service a9274b
	feature_test "--file $file_sin_dual" "play dual wav file and detect"
Packit Service a9274b
	feature_test "-c1" "configurable channel number: 1"
Packit Service a9274b
	feature_test "-c2 -F $minfreq:$maxfreq" "configurable channel number: 2"
Packit Service a9274b
	feature_test "-r44100" "configurable sample rate: 44100"
Packit Service a9274b
	feature_test "-r48000" "configurable sample rate: 48000"
Packit Service a9274b
	feature_test "-n10000" "configurable duration: in samples"
Packit Service a9274b
	feature_test "-n2.5s" "configurable duration: in seconds"
Packit Service a9274b
	feature_test "-f U8" "configurable data format: U8"
Packit Service a9274b
	feature_test "-f S16_LE" "configurable data format: S16_LE"
Packit Service a9274b
	feature_test "-f S24_3LE" "configurable data format: S24_3LE"
Packit Service a9274b
	feature_test "-f S32_LE" "configurable data format: S32_LE"
Packit Service a9274b
	feature_test "-f cd" "configurable data format: cd"
Packit Service a9274b
	feature_test "-f dat" "configurable data format: dat"
Packit Service a9274b
	feature_test "-F $maxfreq --standalone" \
Packit Service a9274b
			"standalone mode: play and capture"
Packit Service a9274b
	latestfile=`ls -t1 /tmp/bat.wav.* | head -n 1`
Packit Service a9274b
	feature_test "--local -F $maxfreq --file $latestfile" \
Packit Service a9274b
			"local mode: analyze local file"
Packit Service a9274b
	feature_test "--roundtriplatency" \
Packit Service a9274b
			"round trip latency test"
Packit Service a9274b
	feature_test "--snr-db 26" \
Packit Service a9274b
			"noise detect threshold in SNR(dB)"
Packit Service a9274b
	feature_test "--snr-pc 5" \
Packit Service a9274b
			"noise detect threshold in noise percentage(%)"
Packit Service a9274b
	feature_test_power "-n5s" "power management: S3 test"
Packit Service a9274b
Packit Service a9274b
	print_result
Packit Service a9274b
}
Packit Service a9274b
Packit Service a9274b
echo "*******************************************"
Packit Service a9274b
echo "                BAT Test                   "
Packit Service a9274b
echo "-------------------------------------------"
Packit Service a9274b
Packit Service a9274b
# get device
Packit Service a9274b
echo "usage:"
Packit Service a9274b
echo "  $0 <sound card>"
Packit Service a9274b
echo "  $0 <device-playback> <device-capture>"
Packit Service a9274b
Packit Service a9274b
if [ $# -eq 2 ]; then
Packit Service a9274b
	dev_playback=$1
Packit Service a9274b
	dev_capture=$2
Packit Service a9274b
elif [ $# -eq 1 ]; then
Packit Service a9274b
	dev_playback=$1
Packit Service a9274b
	dev_capture=$1
Packit Service a9274b
fi
Packit Service a9274b
Packit Service a9274b
echo "current setting:"
Packit Service a9274b
echo "  $0 $dev_playback $dev_capture"
Packit Service a9274b
Packit Service a9274b
# run
Packit Service a9274b
mkdir -p $logdir
Packit Service a9274b
feature_list_test
Packit Service a9274b
Packit Service a9274b
echo "*******************************************"