| #!/bin/bash | 
|   | 
| device_1=$1 | 
| device_2=$2 | 
|   | 
| echo "" | 
| echo "*****************************************************" | 
| echo "*      Rockchip Platform Audio Functions Test       *" | 
| echo "*****************************************************" | 
| echo "*  Loop playback:                              [0]  *" | 
| echo "*  Loop capture:                               [1]  *" | 
| echo "*  Test loopback:                              [2]  *" | 
| echo "*  Exit audio test:                            [q]  *" | 
| echo "*****************************************************" | 
|   | 
| echo "" | 
| echo -n  "Please select a test case: " | 
| read TEST_CASE | 
| echo "" | 
|   | 
| PATH_AUDIO=/tmp/audio_test | 
| mkdir -p $PATH_AUDIO | 
|   | 
| prepare_mic_capture() | 
| { | 
|     amixer set "Capture Digital" 192 | 
|     amixer set "Capture Mute" 0 | 
|     amixer set "Right PGA Mux" "DifferentialR" | 
|     amixer set "Left PGA Mux" "DifferentialL" | 
|     amixer set "Differential Mux" "Line 2" | 
|     amixer set "Left Channel" 0 | 
|     amixer set "Right Channel" 0 | 
| } | 
|   | 
| loop_playback() | 
| { | 
|     echo "******** Loop playback start ********" | 
|   | 
|     fs_tbl="8000 11025 16000 22050 32000 44100 48000 64000 88200 96000 176400 192000" | 
|     bits_tbl="16 24 32" | 
|     ch=2 | 
|     seconds=2 | 
|     gain=-30 | 
|     play_device="default" | 
|   | 
|     if [ -n "$1" ]; then | 
|         play_device=$1 | 
|     fi | 
|   | 
|     while [ $ch -ge 1 ] | 
|     do | 
|         for fs in $fs_tbl | 
|         do | 
|             for bits in $bits_tbl | 
|             do | 
|                     echo "play_device=$play_device, ch="$ch", rate="$fs", bit=$bits, $seconds sec, gain=$gain" | 
|                     sox -b $bits -r $fs -c $ch -n -t alsa $play_device synth $seconds sine 440 gain $gain | 
|             done | 
|         done | 
|     done | 
|   | 
|     echo "******** Loop playback end ********" | 
| } | 
|   | 
| loop_capture() | 
| { | 
|     PATH_CAPTURE=$PATH_AUDIO/cap_files | 
|     mkdir $PATH_CAPTURE | 
|   | 
|     fs_tbl="8000 11025 16000 22050 32000 44100 48000 64000 88200 96000 176400 192000" | 
|     bits_tbl="S16_LE S24_LE S32_LE" | 
|     ch_tbl="2" | 
|     seconds=3 | 
|     capt_device="default" | 
|   | 
|     if [ -n "$1" ]; then | 
|         capt_device=$1 | 
|     fi | 
|   | 
|     echo "******** Loop capture start ********" | 
|   | 
|     for fs in $fs_tbl | 
|     do | 
|         for bits in $bits_tbl | 
|         do | 
|             for ch in $ch_tbl | 
|             do | 
|                 DUMP_FILE=$(printf 'cap_fs%d_format_%s_ch%d.wav' $fs $bits $ch) | 
|                 echo "capt_device: $capt_device capture $DUMP_FILE $seconds sec" | 
|                 arecord -D $capt_device -r $fs -f $bits -c $ch -d $seconds $PATH_CAPTURE/$DUMP_FILE | 
|             done | 
|         done | 
|     done | 
|   | 
|     echo "******** Loop capture end ********" | 
|   | 
|     echo "!! Please using 'adb pull /tmp/audio_test/cap_files/ .' dump all capture files !!" | 
| } | 
|   | 
| case $TEST_CASE in | 
|     "0") | 
|         loop_playback $device_1 | 
|     ;; | 
|     "1") | 
|         prepare_mic_capture | 
|         loop_capture $device_1 | 
|     ;; | 
|     "2") | 
|         source ./test_loopback.sh $device_1 $device_2 | 
|     ;; | 
|     "q") | 
|         echo "Exit audio test" | 
|     ;; | 
|     *) | 
|         echo "Invalid case $TEST_CASE" | 
|     ;; | 
| esac | 
|   | 
| exit |