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