#!/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 
 |