/usr/sbin/alsabat-test is in alsa-utils 1.1.3-1ubuntu1.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 | #!/bin/bash
# default devices
dev_playback="default"
dev_capture="default"
bin="alsabat"
commands="$bin -P $dev_playback -C $dev_capture"
file_sin_mono="default_mono.wav"
file_sin_dual="default_dual.wav"
logdir="tmp"
# frequency range of signal
maxfreq=16547
minfreq=17
# sleep time and pause time
sleep_time=5
pause_time=2
# features passes vs. features all
feature_pass=0
feature_cnt=0
init_counter () {
feature_pass=0
feature_all=0
}
evaluate_result () {
feature_cnt=$((feature_cnt+1))
if [ $1 -eq 0 ]; then
feature_pass=$((feature_pass+1))
echo "pass"
else
echo "fail"
fi
}
print_result () {
echo "[$feature_pass/$feature_cnt] features passes."
}
feature_test () {
echo "============================================"
echo "$feature_cnt: ALSA $2"
echo "-------------------------------------------"
echo "$commands $1 --log=$logdir/$feature_cnt.log"
$commands $1 --log=$logdir/$feature_cnt.log
evaluate_result $?
echo "$commands $1" >> $logdir/$((feature_cnt-1)).log
}
feature_test_power () {
echo "============================================"
echo "$feature_cnt: ALSA $2"
echo "-------------------------------------------"
echo "$commands $1 --log=$logdir/$feature_cnt.log"
# run alsabat in the background
nohup $commands $1 > $logdir/$feature_cnt.log 2>&1 &
sleep $pause_time
pid=`ps -aux |grep alsabat|head -1 |awk -F ' ' '{print $2}'`
# stop the alsabat thread
kill -STOP $pid > /dev/null
sleep 4
# do system S3
rtcwake -m mem -s $sleep_time
sleep $pause_time
# resume the alasbat thread to run
kill -CONT $pid > /dev/null
# wait for alsabat to complete the analysis
sleep $pause_time
cat $logdir/$feature_cnt.log |grep -i "Return value is 0" > /dev/null
evaluate_result $?
echo "$commands $1" >> $logdir/$((feature_cnt-1)).log
}
# test items
feature_list_test () {
init_counter
commands="$bin"
feature_test "-c1 --saveplay $file_sin_mono" \
"generate mono wav file with default params"
feature_test "-c2 --saveplay $file_sin_dual" \
"generate dual wav file with default params"
sleep 5
feature_test "-P $dev_playback" "single line mode, playback"
feature_test "-C $dev_capture --standalone" "single line mode, capture"
commands="$bin -P $dev_playback -C $dev_capture"
feature_test "--file $file_sin_mono" "play mono wav file and detect"
feature_test "--file $file_sin_dual" "play dual wav file and detect"
feature_test "-c1" "configurable channel number: 1"
feature_test "-c2 -F $minfreq:$maxfreq" "configurable channel number: 2"
feature_test "-r44100" "configurable sample rate: 44100"
feature_test "-r48000" "configurable sample rate: 48000"
feature_test "-n10000" "configurable duration: in samples"
feature_test "-n2.5s" "configurable duration: in seconds"
feature_test "-f U8" "configurable data format: U8"
feature_test "-f S16_LE" "configurable data format: S16_LE"
feature_test "-f S24_3LE" "configurable data format: S24_3LE"
feature_test "-f S32_LE" "configurable data format: S32_LE"
feature_test "-f cd" "configurable data format: cd"
feature_test "-f dat" "configurable data format: dat"
feature_test "-F $maxfreq --standalone" \
"standalone mode: play and capture"
latestfile=`ls -t1 /tmp/bat.wav.* | head -n 1`
feature_test "--local -F $maxfreq --file $latestfile" \
"local mode: analyze local file"
feature_test "--roundtriplatency" \
"round trip latency test"
feature_test "--snr-db 26" \
"noise detect threshold in SNR(dB)"
feature_test "--snr-pc 5" \
"noise detect threshold in noise percentage(%)"
feature_test_power "-n5s" "power management: S3 test"
print_result
}
echo "*******************************************"
echo " BAT Test "
echo "-------------------------------------------"
# get device
echo "usage:"
echo " $0 <sound card>"
echo " $0 <device-playback> <device-capture>"
if [ $# -eq 2 ]; then
dev_playback=$1
dev_capture=$2
elif [ $# -eq 1 ]; then
dev_playback=$1
dev_capture=$1
fi
echo "current setting:"
echo " $0 $dev_playback $dev_capture"
# run
mkdir -p $logdir
feature_list_test
echo "*******************************************"
|