136 lines
3.5 KiB
Bash
Executable File
136 lines
3.5 KiB
Bash
Executable File
#!/bin/sh
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
# Copyright (C) 2025 Amlogic, Inc. All rights reserved
|
|
|
|
[ -r "/etc/default/pipewire" ] && . "/etc/default/pipewire"
|
|
if [ -n "$PIPEWIRE_RUN" ]; then
|
|
export XDG_RUNTIME_DIR="$PIPEWIRE_RUN"
|
|
fi
|
|
|
|
SCRIPT_NAME=$(basename "$0" .sh)
|
|
LOCKDIR="/tmp/${SCRIPT_NAME}.lockdir"
|
|
|
|
if ! mkdir "$LOCKDIR" 2>/dev/null; then
|
|
echo "$0 script is executing now"
|
|
exit 1
|
|
fi
|
|
|
|
# use trap to clean lockdir when exit
|
|
trap "rm -rf '$LOCKDIR'" EXIT
|
|
|
|
|
|
# qos0: 16k/2bis
|
|
# qos1: 16k/1bis
|
|
# qos2: 48k/2bis
|
|
# qos3: 48k/1bis
|
|
# qos4: 48k-4/2bis
|
|
# qos5: 48k-4/1bis
|
|
qos0_node0_name=""
|
|
qos0_node1_name=""
|
|
|
|
qos1_node0_name=""
|
|
|
|
qos2_node0_name=""
|
|
qos2_node1_name=""
|
|
|
|
qos3_node0_name=""
|
|
|
|
qos4_node0_name=""
|
|
qos4_node1_name=""
|
|
|
|
qos5_node0_name=""
|
|
|
|
|
|
current_bis_qos=$(cat /tmp/bis_qos_config_name)
|
|
echo "current_bis_qos: $current_bis_qos"
|
|
|
|
|
|
|
|
function get_node_name() {
|
|
index=$1
|
|
awk_index=$((index + 1))
|
|
node_name=$(pw-cli ls Node | grep -w bluez_output | sort -V | awk -F ' = ' -v idx="$awk_index" 'NR==idx {print $2}' | tr -d '"')
|
|
if [ -z "$node_name" ]; then
|
|
echo "not found node" >&2
|
|
return 1
|
|
fi
|
|
echo "$node_name"
|
|
}
|
|
|
|
function bis_connect_two_bis() {
|
|
node0_name=$1
|
|
node1_name=$2
|
|
|
|
# Define port names
|
|
COMBINE_FL="my-combine-sink:monitor_FL"
|
|
COMBINE_FR="my-combine-sink:monitor_FR"
|
|
BLUEZ_FL="$node0_name:playback_FL"
|
|
BLUEZ_FR="$node1_name:playback_FR"
|
|
|
|
printf "pw-link %s %s\n" "$COMBINE_FL" "$BLUEZ_FL"
|
|
printf "pw-link %s %s\n" "$COMBINE_FR" "$BLUEZ_FR"
|
|
pw-link "$COMBINE_FL" "$BLUEZ_FL"
|
|
pw-link "$COMBINE_FR" "$BLUEZ_FR"
|
|
touch /tmp/bis_two
|
|
}
|
|
|
|
function bis_connect_one_bis() {
|
|
node_name=$1
|
|
|
|
# Define port names
|
|
COMBINE_FL="my-combine-sink:monitor_FL"
|
|
COMBINE_FR="my-combine-sink:monitor_FR"
|
|
BLUEZ_FL="$node_name:playback_FL"
|
|
BLUEZ_FR="$node_name:playback_FR"
|
|
|
|
printf "pw-link %s %s\n" "$COMBINE_FL" "$BLUEZ_FL"
|
|
printf "pw-link %s %s\n" "$COMBINE_FR" "$BLUEZ_FR"
|
|
pw-link "$COMBINE_FL" "$BLUEZ_FL"
|
|
pw-link "$COMBINE_FR" "$BLUEZ_FR"
|
|
rm -f /tmp/bis_two
|
|
}
|
|
|
|
case $current_bis_qos in
|
|
"16k_2bis")
|
|
qos0_node0_name=$(get_node_name 0)
|
|
qos0_node1_name=$(get_node_name 1)
|
|
echo "qos0_node0_name: $qos0_node0_name"
|
|
echo "qos0_node1_name: $qos0_node1_name"
|
|
bis_connect_two_bis "$qos0_node0_name" "$qos0_node1_name"
|
|
;;
|
|
"16k_1bis")
|
|
qos1_node0_name=$(get_node_name 2)
|
|
echo "qos1_node0_name: $qos1_node0_name"
|
|
bis_connect_one_bis "$qos1_node0_name"
|
|
;;
|
|
"48k_2bis")
|
|
qos2_node0_name=$(get_node_name 3)
|
|
qos2_node1_name=$(get_node_name 4)
|
|
echo "qos2_node0_name: $qos2_node0_name"
|
|
echo "qos2_node1_name: $qos2_node1_name"
|
|
bis_connect_two_bis "$qos2_node0_name" "$qos2_node1_name"
|
|
;;
|
|
"48k_1bis")
|
|
qos3_node0_name=$(get_node_name 5)
|
|
echo "qos3_node0_name: $qos3_node0_name"
|
|
bis_connect_one_bis "$qos3_node0_name"
|
|
;;
|
|
"48k_4_2bis")
|
|
qos4_node0_name=$(get_node_name 6)
|
|
qos4_node1_name=$(get_node_name 7)
|
|
echo "qos4_node0_name: $qos4_node0_name"
|
|
echo "qos4_node1_name: $qos4_node1_name"
|
|
bis_connect_two_bis "$qos4_node0_name" "$qos4_node1_name"
|
|
;;
|
|
"48k_4_1bis")
|
|
qos5_node0_name=$(get_node_name 8)
|
|
echo "qos5_node0_name: $qos5_node0_name"
|
|
bis_connect_one_bis "$qos5_node0_name"
|
|
;;
|
|
*)
|
|
echo "Unknown bis qos: $current_bis_qos" >&2
|
|
;;
|
|
esac
|
|
|
|
exit 0
|