Files
2026-08-24 10:03:24 +08:00

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