#!/bin/sh

source /usr/bin/qiba-leds.sh
source /usr/bin/qiba-exstreamerl.sh

echo "Setting up QIBA board ..."

FACTORY_INFO_PATH=/tmp/factory_info_partition
FACTORY_INFO_FILE=$FACTORY_INFO_PATH/factory_info
FACTORY_INFO_JSON_FILE=$FACTORY_INFO_PATH/factory_info_json

HW_INFO=`cat $FACTORY_INFO_JSON_FILE`

LEGACY_HW_TYPE=$(echo "$HW_INFO" | jq '.HW_DEVICE.Legacy_HW_Type' | tr -d \")
LEGACY_IPAM_TYPE=$(echo "$HW_INFO" | jq '.HW_DEVICE.Legacy_IPAM_Type' | tr -d \")
TEST_STATUS=$(echo "$HW_INFO" | jq '.HW_TEST.Status' | tr -d \")


#set CPU governor to performance
echo performance > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
echo 1 > /sys/devices/system/cpu/cpufreq/policy0/stats/reset

alsactl init
#unified for all board and images
if [ -d $LED1_GREEN ]; then
	#GRN - solid - System up and running
	led1_set_green
else
	#RED - solid - System up and running
	led1_set_red
fi

#disable capture and mute the playback of Line In, Mic1, Mic2
amixer sset "Line In" mute nocap
amixer sset "Mic1" mute nocap
amixer sset "Mic2" mute nocap

#setup audio
if ! [ -z $LEGACY_HW_TYPE ] && [ $LEGACY_HW_TYPE = "53" ]; then
	echo "408" > /sys/class/gpio/export
	echo "409" > /sys/class/gpio/export
	echo "410" > /sys/class/gpio/export
	echo "out" > /sys/class/gpio/gpio408/direction
	echo "out" > /sys/class/gpio/gpio409/direction
	echo "out" > /sys/class/gpio/gpio410/direction
  	#enable AMP2
  	echo "1" > /sys/class/gpio/gpio408/value
  	#select MIC
  	echo "0" > /sys/class/gpio/gpio409/value
  	#enable AMP
  	echo "1" > /sys/class/gpio/gpio410/value
else
	if ! [ -z $LEGACY_HW_TYPE ] && ! [ $LEGACY_HW_TYPE = "55" ]; then
		#GPIO17 controlled amplifier is not used on L400
		echo "17" > /sys/class/gpio/export
		echo "out" > /sys/class/gpio/gpio17/direction
	fi
	if ! [ -z $LEGACY_HW_TYPE ] && [ $LEGACY_HW_TYPE = "41" -o $LEGACY_HW_TYPE = "56" ]; then
    	#on Annuncicom 60/MA-400 amplifier is active low
    	echo "1" > /sys/class/gpio/gpio17/active_low
    	#on Annuncicom 60 enable the microphone
    	echo "13" > /sys/class/gpio/export
		echo "out" > /sys/class/gpio/gpio13/direction
		echo "0" > /sys/class/gpio/gpio13/value
    	# export the RTS pin of the COM port to be used as "relay" LED
    	echo "200" > /sys/class/gpio/export
    	echo "out" > /sys/class/gpio/gpio200/direction
    	# Export the CTS pin as input to be able to test the RTS
		# ATTN: This is used only on the SIP-DEMO (for now)
    	echo "201" > /sys/class/gpio/export
		echo "in" > /sys/class/gpio/gpio201/direction
	fi

	if ! [ -z $LEGACY_HW_TYPE ] && [ $LEGACY_HW_TYPE = "57" ]; then
		#initialize the GPIO expander that controls REL1(408), REL2(409) and GPI1(415), GPI2(414)
		echo "408" > /sys/class/gpio/export
		echo "409" > /sys/class/gpio/export
		echo "414" > /sys/class/gpio/export
		echo "415" > /sys/class/gpio/export
		echo "out" > /sys/class/gpio/gpio408/direction
		echo "out" > /sys/class/gpio/gpio409/direction
		echo "out" > /sys/class/gpio/gpio414/direction
		echo "out" > /sys/class/gpio/gpio415/direction
		echo "0" > /sys/class/gpio/gpio408/value
		echo "0" > /sys/class/gpio/gpio409/value
		echo "0" > /sys/class/gpio/gpio414/value
		echo "0" > /sys/class/gpio/gpio415/value
		# configure and enable the amplifier
		echo "14" > /sys/class/gpio/export
		echo "out" > /sys/class/gpio/gpio14/direction
		echo "1" > /sys/class/gpio/gpio14/value
	fi	
	
	if ! [ -z $LEGACY_HW_TYPE ] && [ $LEGACY_HW_TYPE = "67" ]; then
		#initialize the GPIO expander for the needs of the Redbox Intercom
		# outputs
		echo "408" > /sys/class/gpio/export
		echo "out" > /sys/class/gpio/gpio408/direction
		echo "1" > /sys/class/gpio/gpio408/value
		echo "409" > /sys/class/gpio/export
		echo "out" > /sys/class/gpio/gpio409/direction
		echo "1" > /sys/class/gpio/gpio409/value
		echo "410" > /sys/class/gpio/export
		echo "out" > /sys/class/gpio/gpio410/direction
		echo "1" > /sys/class/gpio/gpio410/value
		echo "411" > /sys/class/gpio/export
		echo "out" > /sys/class/gpio/gpio411/direction
		echo "1" > /sys/class/gpio/gpio411/value
		echo "412" > /sys/class/gpio/export
		echo "out" > /sys/class/gpio/gpio412/direction
		echo "0" > /sys/class/gpio/gpio412/value
		
		#inputs
		echo "414" > /sys/class/gpio/export
		echo "in" > /sys/class/gpio/gpio414/direction
		echo "415" > /sys/class/gpio/export
		echo "in" > /sys/class/gpio/gpio415/direction

		# configure and enable the amplifier
		echo "14" > /sys/class/gpio/export
		echo "out" > /sys/class/gpio/gpio14/direction
		echo "1" > /sys/class/gpio/gpio14/value
	fi

	#GPIO17 not used on L400
	if ! [ -z $LEGACY_HW_TYPE ] && ! [ $LEGACY_HW_TYPE = "55" ]; then
		# do not start this silent loop on Ann60/MA-400-it prevents the HDX feature of 
		# PJSIP to run properly
#		if ! [ -z $LEGACY_HW_TYPE ] && ! [ $LEGACY_HW_TYPE = "41" -o $LEGACY_HW_TYPE = "56" ]; then
#			/usr/bin/qiba-aplay-loop.sh &
#		fi
# 		sleep 1
		echo "1" > /sys/class/gpio/gpio17/value
	fi
fi

#Production speaker test sound for Barix FW images                             
#if ! [ -z $TEST_STATUS ]; then                                                 
#	if [ $TEST_STATUS = "2" ]; then                                        
#		# Debug issue when config is not properly set-up                      
#		# by playing white noise sound
#		if [ -s /mnt/data/local/config/network ]; then                        
#			echo "Running speaker test ..."                               
#			/usr/bin/qiba-speaker-test.sh &                               
#			/usr/bin/qiba-spi-set-production-info.sh -t 3                 
#		else                                                                  
#			echo "Playing white noise to announce error ..."                               
#			/usr/bin/speaker-test >/dev/null &                            
#		fi                                                                    
#	fi                                                                            
#fi           

if ! [ -z $LEGACY_HW_TYPE ] && [ $LEGACY_HW_TYPE = "55" ]; then
	ret=0

	# Initialize I2C GPIO Expanders, set their controlled inputs to IPAM400
	# and audio outputs to mute.
	[ ${ret} -eq 0 ] && gpioexp_init || ret=$?
	[ ${ret} -eq 0 ] && gpioexp_audio_in_ipam400 || ret=$?
	[ ${ret} -eq 0 ] && gpioexp_audio_out_mute || ret=$?

	if [ ${ret} -eq 0 ]; then
		echo  "L400 setup OK"
	else
		echo "Some features were not detected, or the whole L400 setup FAILED"
	fi
fi

