在QCS405 的Soundbar上實現按一個按鍵來切換聲音訊號源為HDMI input或是LINE input
1.evtest
對於 input輸入裝置有一個常用方便的測試工具: evtest。
將預先透過cross compiler build好的 evtest binary file透過 ADB push到 device
adb push evtest /bin
adb shell chmod 777 /bin/evtest
便可於 device console直接 輸入「 evtest」 測試 Linux系統底下所有 input device。
下例中我們選擇
device event number輸入 1,會列出該 input device目前支援的所有
event code,實際按下 HW板上實體 button時能確認是否正確觸發 event。
按下ctrl+c可結束測試。
2.新增自動啟動應用服務
(預先準備好aitg.service / aitg_start.sh)
adb root
adb disable-verity
(重開機)
adb root
adb shell mount -o remount,rw /
adb push aitg.service /etc/systemd/system/
adb push aitg_start.sh /etc/
adb shell sync
adb shell chmod 777 /etc/systemd/system/aitg.service
adb shell chmod 777 /etc/aitg_start.sh
adb shell systemctl enable aitg.service
aitg.service的代碼如下:
[Unit]
Description=start aitg r&d service
[Service]
Type=simple
ExecStart=/bin/sh /etc/aitg_start.sh
[Install]
WantedBy=multi-user.target
aitg_start.sh 的代碼如下:
chmod 777 /dev/diag
chmod 0666 /dev/ion
sleep 100
mount -o remount,rw /
systemctl stop display-bridge.service
pactl set-default-sink 2
pactl set-sink-port 2 speaker
loop_back_app --source=2 &
sh ./etc/Audio_source_switch.sh
wait
Audio_source_switch.sh的代碼如下:
# Script Start
chmod 777 /dev/diag
chmod 0666 /dev/ion
mount -o remount,rw /
cd /sys/class/gpio
echo 110 > export
sleep 0.5
cd /
# Replace "eventX" with the name of your mouse input device
DEVICE_NAME="event2"
x=0
# Listen to events
./evtest /dev/input/$DEVICE_NAME| while read -r line; --->讀取evtest message
if echo "$line" | grep -q "KEY_HOME"; then
if echo "$line" | grep -q "value 0"; then
if [ $x -eq 0 ]; then
echo "+++++++++++++KEY_HOME+Value=0"
echo out > /sys/class/gpio/gpio110/direction
->用GPIO控制LED顯示Audio source 的狀態
echo 0 > /sys/class/gpio/gpio110/value
killall loop_back_app
loop_back_app --source=1 & ---->切換audio source為HDM-IN
sleep 1
x=1
else
echo "+++++++++++++KEY_HOME+Value=1"
echo out > /sys/class/gpio/gpio110/direction
echo 1 > /sys/class/gpio/gpio110/value
killall loop_back_app
loop_back_app --source=2 & ----->切換audio source 為 LINE-IN
sleep 1
x=0
fi
fi
fi
done
由dmesg log 查看按鍵偵測的訊息.接收到後就可以完成一鍵切換聲音訊號源為HDMI input或是LINE input