#!/bin/bash


# Check if another instance of script is running
pidof -o %PPID -x $0 >/dev/null && echo "ERROR: Script $0 already running" && exit 1

while true
do
	# Parse default conf
	. /etc/io-studio.conf

	# Parse user conf
	[ -e ~/.config/io-studio.conf ] && . ~/.config/io-studio.conf

	killall alsa_in alsa_out jack-aloop-daemon jack-zbridge-daemon zita-a2j zita-j2a > /dev/null 2>&1

	if jack_control status | grep -qs started && ladish_control sisloaded | grep -qs yes
	then
		if ! ps -A | grep "pulseaudio" | grep -v grep > /dev/null 2>&1
		then
			pulseaudio --start
			sleep 0.5
		fi
		sleep 1
		if ! jack_lsp | grep "PulseAudio JACK Sink" > /dev/null 2>&1
		then
			pactl load-module module-jack-sink channels=2
			ret=$?

			if [ "${ret}" -eq 1 ]
			then
				killall pulseaudio
				pulseaudio --start
				sleep 0.5
				#pactl load-module module-jack-sink channels=2
			fi
		fi
		if ! jack_lsp | grep "PulseAudio JACK Source" > /dev/null 2>&1
		then
			pactl load-module module-jack-source channels=2
		fi
		sleep 0.5
		pacmd set-default-sink jack_out
		pacmd set-default-source jack_in

		if [ "${AUTO_CONNECT}" = "TRUE" ]
		then
			# Wait a bit and connect to the system ports
			sleep 0.5
			jack_connect "PulseAudio JACK Sink:front-left" "system:playback_1" 2>&1 1> /dev/null &
			jack_connect "PulseAudio JACK Sink:front-right" "system:playback_2" 2>&1 1> /dev/null &
			jack_connect "PulseAudio JACK Sink:front-left" "system:playback_3" 2>&1 1> /dev/null &
			jack_connect "PulseAudio JACK Sink:front-right" "system:playback_4" 2>&1 1> /dev/null &
			jack_connect "system:capture_1" "PulseAudio JACK Source:front-left" 2>&1 1> /dev/null &
			jack_connect "system:capture_2" "PulseAudio JACK Source:front-right" 2>&1 1> /dev/null &
		else
			# Wait a bit and disconnect the system ports
			sleep 2
			jack_disconnect "PulseAudio JACK Sink:front-left" "system:playback_1" 2>&1 1> /dev/null &
			jack_disconnect "PulseAudio JACK Sink:front-right" "system:playback_2" 2>&1 1> /dev/null &
			jack_disconnect "PulseAudio JACK Sink:front-left" "system:playback_3" 2>&1 1> /dev/null &
			jack_disconnect "PulseAudio JACK Sink:front-right" "system:playback_4" 2>&1 1> /dev/null &
			jack_disconnect "system:capture_1" "PulseAudio JACK Source:front-left" 2>&1 1> /dev/null &
			jack_disconnect "system:capture_2" "PulseAudio JACK Source:front-right" 2>&1 1> /dev/null &
		fi

		# Ensure volumes at 100%
		#sleep 0.5
		#pactl set-sink-volume jack_out 100%
		#pactl set-source-volume jack_in 100%
	fi

	sleep 120

done


exit 0
