#!/bin/bash

# /usr/bin/easyvdr-config-em84xx.sh
# Version 0.0.1
# Dieses Skript konfiguriert easyVDR 0.4.x für den em84xx Betrieb.
# Autor: Wicky

# Anmerkungen:
#
# - Das Skript kann vom Installer, User und Update-Mechanismus verwendet werden.

# Todo:
# - Die functions activate_Plugin und change_Skin sollten so bald wie mÃ¶glich durch "Kris-Tool" functions ersetzt werden
# - Logging, Userinfo variabler gestalten ( -> function msg einführen). 
# Sprich je nachdem, wer das Skript aufruft, (Installer, User, Update-Mechanismus)
# unterschiedliche Infos ausgeben, bzw. loggen


VDRSETUPXML="/etc/vdr/plugins/setup/vdr-setup.xml"
SYSCONFIG="/etc/vdr/sysconfig"
DRIVERCONFIG="/etc/vdr/driverconfig"
vdr_running="false"
COMMANDSCONF="/etc/vdr/commands.conf"
SETUPCONF="/etc/vdr/setup.conf"

function stop_vdr() {
# Ggf. VDR beenden	
	if [ -e /var/run/vdr.pid ]; then
		vdr_running="true"
    	PID=`cat /var/run/vdr.pid` 
      	if [ x"$PID" != "x" ]; then
        	stopvdr >/dev/null 2>/dev/null
      	fi
	fi
}


function config_Mplayer() {
# Mplayer Konfiguration für die dxr3 über das OSD ermöglichen
# Diese Funktion ist noch nicht an em84xx angepasst.
	if [ -f $COMMANDSCONF ]; then		
		if [ $(grep -c 'dxr3' /etc/vdr/commands.conf) -lt 1 ]; then
			sed -i '/mp_spur3/ a\-dxr3 normal					: cp /usr/bin/mp_dxr3 /usr/bin/mplayer.sh.conf ' $COMMANDSCONF
		fi
	else
		echo "Error: Die Datei $COMMANDSCONF exisitiert nicht...."
	fi
}

function fix_ModprobeD() {
# Nur falls notwendig, die Dateien im Verzeichnis /etc/modprobe.d in den update-modules Mechanismus der modutils 
# integrieren. Benötigt für dxr3config mit dem Parameter -gm. Siehe auch www.vdr-wiki.de -> dxr3config
# Auch für em84xx sinnvoll
	if [ -f /etc/modprobe.conf ] && [ $(grep -c '^include /etc/modprobe.d' < /etc/modprobe.conf) -lt 1 ]; then
		sed -i '1 i\#' /etc/modprobe.conf
		sed -i '2 i\# /etc/modprobe.conf: modprobe(8) configuration' /etc/modprobe.conf
		sed -i '3 i\#' /etc/modprobe.conf
		sed -i '4 i\ ' /etc/modprobe.conf
		sed -i '5 i\include /etc/modprobe.d' /etc/modprobe.conf
	fi
}


function activate_plugin() {
	# Ausgabe Plugin aktivieren. Die Zeile sollte durch eien Kris Mechanismus ersetzt werden:
	# Überprüfen, ob das plugin schon aktiv ist:
	if [ $(grep -c '^PLUGINLIST.*P'$1'' < $SYSCONFIG) -lt 1 ]; then
		sed -i 's/^PLUGINLIST="/& \\"-P'$1' \\"/g' $SYSCONFIG
	fi
	sed -i '/plugin name=\"'$1'\"/s/active=\"no\"/active=\"yes\"/' $VDRSETUPXML
}

function deactivate_plugin() {
	# Andere Ausgabe Plugins deaktivieren
	# Beim Aufruf dieser Funktion wird das zu deaktivierende Plugin übergeben !!
	sed -i '/PLUGINLIST=/s/\\"-P'$1' \\"//' $SYSCONFIG
	sed -i '/plugin name=\"'$1'\"/s/active=\"yes\"/active=\"no\"/' $VDRSETUPXML
}
	

function change_Skin() {
	# Für em84xx nicht notwendig
	sed -i '/^OSDSkin.*/ c\OSDSkin = enElchi' $SETUPCONF
}

function activate_Module() {
	# Diese Funktion macht nur Sinn, wenn das Modul em8300/realmagic84xx wie ein DVB-Modul geladen wird.
	# Z.z ist das nicht der Fall, aber es wird eventuell noch kommen...
	. $DRIVERCONFIG
	if ! echo $MODULES | grep $1 >/dev/null 2>/dev/null; then
		sed -i '/^MODULES=/ a\'$1'' $DRIVERCONFIG
	fi
}

function main() {
	# Alles folgende wird nur ausgeführt, wenn eine em84xx im System steckt !!
	if [ -n "$(lspci -n | grep -w 1105:8400)" ]; then
		fix_ModprobeD
		echo ""
		echo "***** easyVDR wird nun für den em84xx-Betrieb konfiguriert. *****"
		echo ""
		echo "---> Der VDR-Prozess wird falls notwendig beendet..."	
		stop_vdr
		sleep 3		
		echo "---> Die em84xx-plugins werden aktiviert ..."
		activate_plugin em84xx
		activate_plugin em84xx-eject
		echo "---> Andere Ausgabe-Plugins werden deaktiviert..."
		deactivate_plugin dxr3
		deactivate_plugin softdevice		
		deactivate_plugin pvr350				
		echo ""
		echo "***** Die Einrichtung von easyVDR für den em84xx-Betrieb ist abgeschlossen *****"
		echo ""
		#Den VDR wieder starten, falls er gestartet war...
		if [ "x$vdr_running" = "xtrue" ]; then
			echo "Der VDR-Prozess wird gleich wieder gestartet ..."
			startvdr >/dev/null 2>/dev/null
		fi
	else
		echo "" 
		echo "Sorry: Es wurde keine Netstream2000, Activy oder X-Card gefunden..."
		echo "Das System wurde daher nicht für den em84xx Betrieb konfiguriert."
		echo ""
	fi
}

main