#!/bin/bash

# WildlifeSystems
#
# This script is part of the WildlifeSystems project. For further information
# please refer to https://docs.wildlife.systems, or for more information on
# the project itself, please refer to https://wildlife.systems.

# Return codes
#
# Further information on WildlifeSystems standard reurn codes can be found
# at https://docs.wildlife.systems/return-codes.html
# 0 - Success
# 30 - Unsupported device

# Function to get location of config.txt
function get_config_txt {
        if [ -f /boot/firmware/config.txt ]; then
                echo "/boot/firmware/config.txt"
        else
                echo "/boot/config.txt"
        fi
}

case "$1" in
        list)
                echo "none           None"
                echo "rpi-core-audio Raspberry Pi Onboard Audio"
                echo "ai-zero        audioInjector Zero"
                echo "ai-ocoto       audioInjector Octo"
                echo "ai-ultra       audioInjector Ultra"
                echo "i2s            i2s microphone (e.g.Google Voice Hat)"
                echo "respeaker-6    Respeaker 6 mic array"
                echo "rpa-dac        Audio+ DAC"
                echo "wolfson        Wolfson Audio Card"
                ;;
        i2s)
                config_txt=$(get_config_txt)
                cnt=$(grep -c googlevoicehat-soundcard "$config_txt")
                if [ "$cnt" -eq "0" ]; then
                                sudo sh -c "echo '# enable i2s sound card
                                dtoverlay=googlevoicehat-soundcard' >> $config_txt"
                fi

                # Backup /etc/asound.conf if it exists
                if [ -f /etc/asound.conf ]; then
                        echo "Backing up /etc/asound.conf to /etc/asound.conf.bak"
                        sudo mv /etc/asound.conf /etc/asound.conf.bak
                fi

                sudo cp /usr/share/sdc/i2s-default /etc/asound.conf
                ;;
        wolfson)
                config_txt=$(get_config_txt)
                # firstly disable PWM audio
                sudo sed -i 's/^\s*dtparam=audio/#dtparam=audio/' "$config_txt"
                
                # now check to see the correct device tree overlay is loaded ...
                cnt=`grep -c rpi-cirrus-wm5102 $config_txt`
                if [ "$cnt" -eq "0" ]; then
                        sudo sh -c "echo '# enable the Wolfson sound card
                        dtoverlay=rpi-cirrus-wm5102' >> $config_txt"
                fi
                
                #Install helper script
                sudo cp /usr/share/sdc/rpi-cirrus-functions.sh /usr/bin
                sudo chmod +x /usr/bin/rpi-cirrus-functions.sh
                sudo chown root:root /usr/bin/rpi-cirrus-functions.sh
                ;;
        ai-ultra)
                config_txt=$(get_config_txt)
                #sudo rpi-update

                # firstly disable PWM audio
                sudo sed -i 's/^\s*dtparam=audio/#dtparam=audio/' $config_txt

                # now check to see the correct device tree overlay is loaded ...
                cnt=`grep -c audioinjector-ultra $config_txt`
                if [ "$cnt" -eq "0" ]; then
                        sudo sh -c "echo '# enable the AudioInjector.net sound card
                        dtoverlay=audioinjector-ultra' >> $config_txt"
                fi

                ;;
        ai-octo)
                echo "Adding script to /etc/profile.d to ensure kernel modules are loaded."
                echo "See: https://github.com/Audio-Injector/Octo/issues/14"
                sudo cp /usr/share/sdc/ai-octo-profile.d.sh /etc/profile.d/
                sudo chmod +x /etc/profile.d/ai-octo-profile.d.sh
                sudo chown root:root /etc/profile.d/ai-octo-profile.d.sh
                
                yes | sudo dpkg -i /usr/share/sdc/audioinjector.octo.setup_0.4_all.deb
                ;;
        ai-zero)
                yes | sudo dpkg -i /usr/share/sdc/audio.injector.scripts_0.1-1_all.deb
                yes | audioInjector-setup.sh
                ;;
        rpa-dac)
                sudo sh -c "echo 'defaults.pcm.card 0
                           defaults.ctl.card 0' >>  /etc/asound.conf"
                echo /usr/share/rpa-dac | bash
                ;;
        respeaker-6)
                sudo apt-get update
                sudo apt-get install git -y
                sudo raspi-config nonint do_onewire 1
                cd /tmp
                git clone https://github.com/Wildlife-Systems/sound-device-seeed-voicecard
                cd sound-device-seeed-voicecard
                sudo ./install.sh
                sudo rm -r ../sound-device-seeed-voicecard
                ;;
        respeaker-6_oldkernel)
                sudo apt-get update
                sudo apt-get install git -y
                sudo raspi-config nonint do_onewire 1
                cd /tmp
                git clone https://github.com/Wildlife-Systems/sound-device-seeed-voicecard
                cd sound-device-seeed-voicecard
                sudo ./install.sh
                sudo rm -r ../sound-device-seeed-voicecard
                cd /tmp
                wget -O kernel-headers_armhf.deb http://archive.raspberrypi.org/debian/pool/main/r/raspberrypi-firmware/raspberrypi-kernel-headers_1.20200819-1_armhf.deb
                wget -O kernel_armhf.deb http://archive.raspberrypi.org/debian/pool/main/r/raspberrypi-firmware/raspberrypi-kernel_1.20200819-1_armhf.deb
                sudo dpkg -i kernel-headers_armhf.deb kernel_armhf.deb
                sudo apt-mark hold raspberrypi-kernel-headers raspberrypi-kernel
                ;;
        none)
                exit 0
                ;;
        *)
                echo "$1 is not supported."
                exit 30

                ;;
esac
