153a5a1b3Sopenharmony_ci#!/bin/bash
253a5a1b3Sopenharmony_ci
353a5a1b3Sopenharmony_ci# This file is part of PulseAudio.
453a5a1b3Sopenharmony_ci#
553a5a1b3Sopenharmony_ci# Copyright 2019 Russell Treleaven <rtreleaven@bunnykick.ca>
653a5a1b3Sopenharmony_ci#
753a5a1b3Sopenharmony_ci# PulseAudio is free software; you can redistribute it and/or modify
853a5a1b3Sopenharmony_ci# it under the terms of the GNU Lesser General Public License as published by
953a5a1b3Sopenharmony_ci# the Free Software Foundation; either version 2 of the License, or
1053a5a1b3Sopenharmony_ci# (at your option) any later version.
1153a5a1b3Sopenharmony_ci#
1253a5a1b3Sopenharmony_ci# PulseAudio is distributed in the hope that it will be useful, but
1353a5a1b3Sopenharmony_ci# WITHOUT ANY WARRANTY; without even the implied warranty of
1453a5a1b3Sopenharmony_ci# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1553a5a1b3Sopenharmony_ci# General Public License for more details.
1653a5a1b3Sopenharmony_ci#
1753a5a1b3Sopenharmony_ci# You should have received a copy of the GNU Lesser General Public License
1853a5a1b3Sopenharmony_ci# along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
1953a5a1b3Sopenharmony_ci
2053a5a1b3Sopenharmony_ciexport LC_ALL=C
2153a5a1b3Sopenharmony_ciheader='________________'
2253a5a1b3Sopenharmony_cifunction cards_get {
2353a5a1b3Sopenharmony_ci	local line
2453a5a1b3Sopenharmony_ci	local re='/proc/asound/card([0-9])'
2553a5a1b3Sopenharmony_ci	local cards=()
2653a5a1b3Sopenharmony_ci	while read -r line; do
2753a5a1b3Sopenharmony_ci		[[ $line =~ $re ]] && cards+="${BASH_REMATCH[1]} "
2853a5a1b3Sopenharmony_ci	done <<< "$(ls --directory /proc/asound/card[0-9])"
2953a5a1b3Sopenharmony_ci	echo $cards
3053a5a1b3Sopenharmony_ci}
3153a5a1b3Sopenharmony_cifunction jacks_do {
3253a5a1b3Sopenharmony_ci	local cards=($(cards_get))
3353a5a1b3Sopenharmony_ci	for card in "${cards[@]}" ; do
3453a5a1b3Sopenharmony_ci		echo "card=$card"
3553a5a1b3Sopenharmony_ci		while read -r line; do
3653a5a1b3Sopenharmony_ci			[[ $line != "" ]] && amixer -c$card cget "$line";
3753a5a1b3Sopenharmony_ci		done <<< "$(amixer -c$card controls | grep Jack)"
3853a5a1b3Sopenharmony_ci	done
3953a5a1b3Sopenharmony_ci}
4053a5a1b3Sopenharmony_cifunction alsa_info_do {
4153a5a1b3Sopenharmony_ci	alsa_info=$(which alsa-info.sh)
4253a5a1b3Sopenharmony_ci	[ $alsa_info ] || alsa_info=$(which alsa-info)
4353a5a1b3Sopenharmony_ci	[ $alsa_info ] || alsa_info='/usr/sbin/alsa-info.sh'
4453a5a1b3Sopenharmony_ci	[ $alsa_info ] || alsa_info='/usr/share/alsa-base/alsa-info.sh'
4553a5a1b3Sopenharmony_ci	[ -f $alsa_info ] && {
4653a5a1b3Sopenharmony_ci		$alsa_info --stdout
4753a5a1b3Sopenharmony_ci		return
4853a5a1b3Sopenharmony_ci	}
4953a5a1b3Sopenharmony_ci	echo "neither alsa-info.sh or alsa-info were found"
5053a5a1b3Sopenharmony_ci}
5153a5a1b3Sopenharmony_cifunction pulseaudio_ps_do {
5253a5a1b3Sopenharmony_ci	ps aux | grep pulseaudio
5353a5a1b3Sopenharmony_ci}
5453a5a1b3Sopenharmony_cifunction cmd_do {
5553a5a1b3Sopenharmony_ci	echo "$header"
5653a5a1b3Sopenharmony_ci	echo "> $1"
5753a5a1b3Sopenharmony_ci	$1
5853a5a1b3Sopenharmony_ci}
5953a5a1b3Sopenharmony_cifunction dot_d_files {
6053a5a1b3Sopenharmony_ci    local files=$1
6153a5a1b3Sopenharmony_ci    if ls -d1 "$files" 2> /dev/null; then
6253a5a1b3Sopenharmony_ci        for fn in $files; do
6353a5a1b3Sopenharmony_ci            cmd_do "cat $fn";
6453a5a1b3Sopenharmony_ci        done
6553a5a1b3Sopenharmony_ci    fi
6653a5a1b3Sopenharmony_ci}
6753a5a1b3Sopenharmony_cicmds=(
6853a5a1b3Sopenharmony_ci	'pulseaudio_ps_do'
6953a5a1b3Sopenharmony_ci	'which pulseaudio'
7053a5a1b3Sopenharmony_ci	'pidof pulseaudio'
7153a5a1b3Sopenharmony_ci	'pulseaudio --version'
7253a5a1b3Sopenharmony_ci	'pactl info'
7353a5a1b3Sopenharmony_ci	'pactl list'
7453a5a1b3Sopenharmony_ci	'cat /etc/pulse/daemon.conf'
7553a5a1b3Sopenharmony_ci	'cat /etc/pulse/client.conf'
7653a5a1b3Sopenharmony_ci	'dot_d_files /etc/pulse/client.conf.d/*.conf'
7753a5a1b3Sopenharmony_ci	'cat /etc/pulse/default.pa'
7853a5a1b3Sopenharmony_ci	'dot_d_files /etc/pulse/default.pa.d/*.pa'
7953a5a1b3Sopenharmony_ci	'cat /etc/pulse/system.pa'
8053a5a1b3Sopenharmony_ci	'ls -alt /dev/snd/*'
8153a5a1b3Sopenharmony_ci	'lsof /dev/snd/*'
8253a5a1b3Sopenharmony_ci	'jacks_do'
8353a5a1b3Sopenharmony_ci	'aplay -L'
8453a5a1b3Sopenharmony_ci	'arecord -L'
8553a5a1b3Sopenharmony_ci	'alsa_info_do'
8653a5a1b3Sopenharmony_ci)
8753a5a1b3Sopenharmony_cifor cmd in "${cmds[@]}" ; do
8853a5a1b3Sopenharmony_ci	cmd_do "$cmd"
8953a5a1b3Sopenharmony_cidone
90