summaryrefslogtreecommitdiff
path: root/vdr/scripts/vdrsetup
diff options
context:
space:
mode:
authorroot <root@elwms02.(none)>2010-04-06 16:13:08 +0200
committerroot <root@elwms02.(none)>2010-04-06 16:13:08 +0200
commit0e7005fcc7483c01aa102fbea358c5ac65a48d62 (patch)
tree11517ce0d3d2977c6732b3aa583b0008083e0bd3 /vdr/scripts/vdrsetup
downloadx-vdr-0e7005fcc7483c01aa102fbea358c5ac65a48d62.tar.gz
x-vdr-0e7005fcc7483c01aa102fbea358c5ac65a48d62.tar.bz2
hello world
Diffstat (limited to 'vdr/scripts/vdrsetup')
-rw-r--r--vdr/scripts/vdrsetup1896
1 files changed, 1896 insertions, 0 deletions
diff --git a/vdr/scripts/vdrsetup b/vdr/scripts/vdrsetup
new file mode 100644
index 0000000..e45e39f
--- /dev/null
+++ b/vdr/scripts/vdrsetup
@@ -0,0 +1,1896 @@
+#!/bin/bash
+#
+# (x-)vdrsetup 0.0.8 - script for OSDServer on localhost
+# by Marc Wernecke - www.zulu-entertainment.de
+# 12.02.2009
+
+script="$0"
+
+# convenient return values
+true=0
+false=1
+
+
+# Some generic stuff for handling a connection
+
+function error() {
+ # Fatal error. Send quit command, close FIFO and terminate netcat
+ DoLog "fatal error, disconnecting..."
+ [ "${reply2xx[0]}" != 202 ] && SendCmd Quit
+
+ exec 3>&-
+ exec 4>&-
+
+ kill $pid
+
+ exit 1
+}
+
+function ConnectServer() {
+ # Connect to the OSDServer
+ DoLog "connecting to the OSDServer..."
+ # Set up temporary fifo and open as file descriptor 3 and 4
+ mkfifo --mode=700 /tmp/pipe-in$$ /tmp/pipe-out$$
+ exec 3<> /tmp/pipe-in$$
+ exec 4<> /tmp/pipe-out$$
+ rm /tmp/pipe-in$$ /tmp/pipe-out$$
+
+ # Connect to server using the fifo
+ {
+ netcat $1 $2
+
+ # In case of connection loss:
+ echo 499 disconnected
+ echo 202 Good Bye.
+ } <&3 >&4 &
+ pid=$!
+
+ # Sending to the server: use >&3
+ # Receive from the server: use <&4
+}
+
+
+function ReadReply() {
+ # Read a complete server reply until 2xx return code,
+ # and store replies in each category by number
+ reply2xx=()
+ reply3xx=()
+ reply4xx=()
+ reply5xx=()
+ reply6xx=()
+
+ while read -r code line <&4 ; do
+ echo "< $code $line"
+ # screen echo
+
+ # vdrsetup debug
+ if [ "$vdrsetup_use_debug" = "on" ]; then
+ [ "$vdrsetup_use_log" = "on" ] && echo "< $code $line" >> "$vdrsetup_log"
+ [ "$vdrsetup_use_syslog" = "on" ] && $LOGGER "< $code $line"
+ fi
+
+ case $code in
+ 2*) IFS=$' \t\n\r' reply2xx=($code "$line")
+ ;;
+ 3*) IFS=$' \t\n\r' reply3xx=($code $line)
+ ;;
+ 4*) IFS=$' \t\n\r' reply4xx=($code "$line")
+ ;;
+ 5*) IFS=$' \t\n\r' reply5xx=($code "$line")
+ ;;
+ 6*) IFS=$' \t\n\r' reply6xx=($code "$line")
+ ;;
+ esac
+ [ -n "${reply2xx[0]}" ] && break
+ done
+
+ [ -n "${reply4xx[0]}" ] && return $false
+ return $true
+}
+
+function SendCmd() {
+ # Send a command and read the reply
+
+ echo "> $*"
+ # screen echo
+
+ echo "$*" >&3
+ # network send
+
+ # vdrsetup debug
+ if [ "$vdrsetup_use_debug" = "on" ]; then
+ [ "$vdrsetup_use_log" = "on" ] && echo "> $*" >> "$vdrsetup_log"
+ [ "$vdrsetup_use_syslog" = "on" ] && $LOGGER "> $*"
+ fi
+
+ ReadReply
+}
+
+function IsEvent() {
+ # Helper to check reply for a certain event
+
+ [ "${reply3xx[0]}" != 300 ] && return $false
+ [ "${reply3xx[1]}" != "$1" ] && return $false
+ [ "${reply3xx[2]}" != "$2" ] && return $false
+
+ return $true
+}
+
+
+function QuoteString() {
+ # Quote arbitrary string for use in '' and ""
+ local str="${!1}"
+
+ str="${str//'\'/\\\\}"
+ str="${str//'\\'/\\\\}"
+ # work around bash bug: double quoted '\'
+
+ str="${str//\'/$'\\\''}"
+ # This is bogus, anyone knows something better to replace ' by \' ?
+
+ str="${str//\"/\\\"}"
+ str="${str//$'\r'/\\r}"
+ str="${str//$'\n'/\\n}"
+ str="${str//$'\t'/\\t}"
+
+ eval "$1=\$str"
+}
+
+function UnquoteString() {
+ # Unquote string
+ local str="${!1}"
+
+ str="${str//\\r/$'\r'}"
+ str="${str//\\n/$'\n'}"
+ str="${str//\\t/$'\t'}"
+ str="${str//\\\"/\"}"
+ str="${str//\\\'/\'}"
+ str="${str//\\\\/\\}"
+
+ eval "$1=\$str"
+}
+
+
+##############
+# vdrsetup #
+##############
+vdrsetup_ok_ends="on"
+vdrsetup_key_timeout=1000
+# logging
+LOGGER="logger -- ${0##*/} - "
+vdrsetup_use_screen="on" # echo setup changings to the screen
+vdrsetup_use_log="off" # echo setup changings to $vdrsetup_log
+vdrsetup_log="/tmp/vdrsetup.log" # log file
+vdrsetup_use_syslog="on" # echo setup changings (with LOGGER) to syslog
+vdrsetup_use_debug="off" # enable comunications log
+
+# vdr configuration
+config=/etc/default/vdr # path to vdr configuration
+. $config # load vdr configuration
+[ -f "$VDRCONFDIR/plugins/vdrsetup.conf" ] && . "$VDRCONFDIR/plugins/vdrsetup.conf"
+
+# x-vdr
+have_xvdr="on"
+[ ! -f /usr/local/src/x-vdr/setup.conf ] && have_xvdr="off"
+
+# /tmp/vdr-help.tmp
+[ ! -f /tmp/vdr-help.tmp ] && $VDRPRG --help | sed -e '/^$/d' -e 's/^. //' > /tmp/vdr-help.tmp
+
+# vdr-desc.cache
+[ ! -f /tmp/vdr-desc.cache ] && $VDRPRG --version | sed -e 's/\(^[^ ]*\)\(.*$\)/\1_desc="\1\2"/' -e '/^streamdev/s/-/_/' -e 's/^\[.*//' | sort > /tmp/vdr-desc.cache
+. /tmp/vdr-desc.cache
+vdr_version=$(echo $vdr_desc | sed -e 's/[^)]*$//')
+plugin_api=$(echo $vdr_desc | sed -e 's/[^)]*$//' -e 's/^[^\/]*//g' -e 's/\///' -e 's/\/*)//')
+
+# reset logfile
+[ "$vdrsetup_use_log" = "on" ] && echo "$0" > "$vdrsetup_log"
+
+# helper functions =>
+function DoLog() {
+ [ "$vdrsetup_use_log" = "on" ] && echo "$*" >> "$vdrsetup_log"
+ [ "$vdrsetup_use_screen" = "on" ] && echo ">> $*"
+ [ "$vdrsetup_use_syslog" = "on" ] && $LOGGER "$*"
+}
+
+function CreateDir() {
+ directory="$*"
+ if [ ! -d "$directory" ]; then
+ SendCmd "Message -seconds 10 'Create $directory?'" || return $false
+ if IsEvent Message keyOk ; then
+ mkdir -p "$directory"
+ chown -R $VDRUSER:$VDRGROUP "$directory"
+ [ -d "$directory" ] && DoLog "creating \"$directory\""
+ fi
+ else
+ DoLog "directory \"$directory\" already exist"
+ fi
+}
+
+# Menu functions =>
+
+##### Script-Setup Menu #####
+function ScriptSetup() {
+ # Menu --------------------------------------------------------------------------------------------------------------------------------->
+ SendCmd "enterlocal" || return $false
+ SendCmd "menu=New Menu 'Skript Intern'" || return $false
+ SendCmd "menu.SetColorKeyText -blue 'Help'" || return $false
+ SendCmd "menu.SetColumns 24" || return $false
+ SendCmd "menu.EnableEvent keyOk keyBlue close" || return $false
+ # List --------------------------------------------------------------------------------------------------------------------------------->
+ SendCmd "menu.AddNew OsdItem -unselectable '--- Einstellungen ---'" || return $false
+ SendCmd "opt1=menu.AddNew EditListItem -selectname '$vdrsetup_ok_ends' 'Beim Speichern beenden' on off" || return $false
+ SendCmd "opt2=menu.AddNew EditIntItem 'Tasten Timeout (ms)' '$vdrsetup_key_timeout'" || return $false
+ SendCmd "menu.AddNew OsdItem -unselectable ''" || return $false
+ SendCmd "menu.AddNew OsdItem -unselectable '--- Logging ---'" || return $false
+ SendCmd "opt3=menu.AddNew EditListItem -selectname '$vdrsetup_use_log' 'Benutze Log Datei' on off" || return $false
+ SendCmd "opt4=menu.AddNew EditStrItem 'Log Datei' $vdrsetup_log'" || return $false
+ SendCmd "opt5=menu.AddNew EditListItem -selectname '$vdrsetup_use_syslog' 'Syslog benutzen' on off" || return $false
+ SendCmd "opt6=menu.AddNew EditListItem -selectname '$vdrsetup_use_debug' 'Debug Nachrichten' on off" || return $false
+ SendCmd "menu.AddNew OsdItem -unselectable ''" || return $false
+ SendCmd "menu.AddNew OsdItem -unselectable '--- Befehle ---'" || return $false
+ SendCmd "opt7=menu.AddNew OsdItem 'Cache neu erstellen'" || return $false
+ SendCmd "opt7.EnableEvent keyRed focus blur" || return $false
+ # <--------------------------------------------------------------------------------------------------------------------------------- List
+ SendCmd "_focus.addsubmenu menu" || return $false
+ SendCmd "opt1.SetCurrent" || return $false
+ SendCmd "menu.show" || return $false
+ # <--------------------------------------------------------------------------------------------------------------------------------- Menu
+
+ while true; do
+ SendCmd "menu.SleepEvent" || return $false
+ # keyOk
+ if IsEvent menu keyOk ; then
+ echo "# $script" > "$VDRCONFDIR/plugins/vdrsetup.conf"
+ # vdrsetup_ok_ends
+ SendCmd "opt1.GetValue -name" || return $false
+ [ "${reply6xx[0]}" != 600 ] && return $false
+ vdrsetup_ok_ends="${reply6xx[1]}"
+ echo "vdrsetup_ok_ends=\"$vdrsetup_ok_ends\"" >> "$VDRCONFDIR/plugins/vdrsetup.conf"
+ # key_timeout
+ SendCmd "opt2.GetValue" || return $false
+ [ "${reply6xx[0]}" != 600 ] && return $false
+ vdrsetup_key_timeout="${reply6xx[1]}"
+ echo "vdrsetup_key_timeout=\"$vdrsetup_key_timeout\"" >> "$VDRCONFDIR/plugins/vdrsetup.conf"
+ # vdrsetup_use_log
+ SendCmd "opt3.GetValue -name" || return $false
+ [ "${reply6xx[0]}" != 600 ] && return $false
+ vdrsetup_use_log="${reply6xx[1]}"
+ echo "vdrsetup_use_log=\"$vdrsetup_use_log\"" >> "$VDRCONFDIR/plugins/vdrsetup.conf"
+ # vdrsetup_log
+ SendCmd "opt4.GetValue -quoted" || return $false
+ if [ "${reply5xx[0]}" = 500 ]; then
+ value=$(echo " ${reply5xx[1]}" | sed -e 's/^ //g' -e 's/\\r//g')
+ [ -d "$(dirname "$value")" ] && vdrsetup_log="$value"
+ fi
+ echo "vdrsetup_log=\"$vdrsetup_log\"" >> "$VDRCONFDIR/plugins/vdrsetup.conf"
+ # vdrsetup_use_syslog
+ SendCmd "opt5.GetValue -name" || return $false
+ [ "${reply6xx[0]}" != 600 ] && return $false
+ vdrsetup_use_syslog="${reply6xx[1]}"
+ echo "vdrsetup_use_syslog=\"$vdrsetup_use_syslog\"" >> "$VDRCONFDIR/plugins/vdrsetup.conf"
+ # vdrsetup_use_debug
+ SendCmd "opt6.GetValue -name" || return $false
+ [ "${reply6xx[0]}" != 600 ] && return $false
+ vdrsetup_use_debug="${reply6xx[1]}"
+ echo "vdrsetup_use_debug=\"$vdrsetup_use_debug\"" >> "$VDRCONFDIR/plugins/vdrsetup.conf"
+ # close the submenu
+ if [ "$vdrsetup_ok_ends" = "on" ]; then
+ SendCmd "menu.SendState osBack" || return $false
+# SendCmd "delete menu" || return $false
+# SendCmd "leavelocal" || return $false
+# return $true
+ fi
+ fi
+ if IsEvent opt7 focus ; then
+ SendCmd "menu.SetColorKeyText -red Create" || return $false
+ SendCmd "menu.Show" || return $false
+ fi
+ if IsEvent opt7 blur ; then
+ SendCmd "menu.SetColorKeyText -red ''" || return $false
+ SendCmd "menu.Show" || return $false
+ fi
+ if IsEvent opt7 keyRed ; then
+ SendCmd "Message -seconds 10 '/tmp/vdr-desc.cache erstellen?'" || return $false
+ if IsEvent Message keyOk ; then
+ $VDRPRG --version | sed -e 's/\(^[^ ]*\)\(.*$\)/\1_desc="\1\2"/' -e '/^streamdev/s/-/_/' -e 's/^\[.*//' | sort > /tmp/vdr-desc.cache
+ . /tmp/vdr-desc.cache
+ fi
+ fi
+ # keyBlue (Help)
+ if IsEvent menu keyBlue ; then
+ SendCmd "Message -seconds 5 'Auswahl mit Links und Rechts, speichern mit Ok'" || return $false
+ fi
+ # close the submenu
+ if IsEvent menu close ; then
+ SendCmd "delete menu" || return $false
+ SendCmd "leavelocal" || return $false
+ return $true
+ fi
+ done
+}
+
+##### System-Start Menu #####
+function SystemStart() {
+ Gdm="$(find /etc/rc*d/S*gdm)"
+ if [ -n "$Gdm" ]; then
+ DESKTOP_MANGER="gdm"
+ [ -f /etc/rc2.d/S30gdm ] && echo warning
+ [ -f /etc/rc3.d/S30gdm ] && DESKTOP="on"
+ fi
+
+ RUNLEVEL_STR="$(cat /etc/inittab | grep -m1 ^id:)"
+ RUNLEVEL=$(echo $RUNLEVEL_STR | cut -f2 -d":")
+ if [ $RUNLEVEL -eq 5 ] || [ "$DESKTOP_MANGER" ="gdm" -a $RUNLEVEL -gt 2 ]; then
+ DESKTOP="on"
+ else
+ DESKTOP="off"
+ fi
+
+ # Menu ------------------------------------------------------------------------------------------------------------->
+ SendCmd "enterlocal" || return $false
+ SendCmd "menu=New Menu 'Systemstart'" || return $false
+ SendCmd "menu.SetColorKeyText -blue 'Help'" || return $false
+ SendCmd "menu.SetColumns 24" || return $false
+ SendCmd "menu.EnableEvent keyOk close" || return $false
+ # List ------------------------------------------------------------------------------------------------------------->
+ SendCmd "menu.AddNew OsdItem -unselectable '--- Programme ---'" || return $false
+ SendCmd "opt1=menu.AddNew EditListItem -selectname '$AUTOSTART' 'VDR' on off" || return $false
+ SendCmd "opt1.EnableEvent keyBlue" || return $false
+ SendCmd "opt2=menu.AddNew EditListItem -selectname '$XPLAYER' 'Xserver und Player' on off" || return $false
+ SendCmd "opt2.EnableEvent keyBlue" || return $false
+ SendCmd "opt3=menu.AddNew EditListItem -selectname '$DESKTOP' 'Desktop-Manager' on off" || return $false
+ SendCmd "opt3.EnableEvent keyBlue" || return $false
+ SendCmd "opt4=menu.AddNew EditListItem -selectname '$vdradmin' 'VDR-Admin' on off" || return $false
+ SendCmd "opt4.EnableEvent keyBlue" || return $false
+ SendCmd "menu.AddNew OsdItem -unselectable ''" || return $false
+ SendCmd "menu.AddNew OsdItem -unselectable '--- Module ---'" || return $false
+ SendCmd "optA=menu.AddNew EditListItem -selectname '$em8300' 'DXR3' on off" || return $false
+ SendCmd "optA.EnableEvent keyBlue" || return $false
+ SendCmd "optB=menu.AddNew EditListItem -selectname '$graphlcd_base' 'GraphLCD' on off" || return $false
+ SendCmd "optB.EnableEvent keyBlue" || return $false
+ SendCmd "optC=menu.AddNew EditListItem -selectname '$LCDproc' 'LCDproc' on off" || return $false
+ SendCmd "optC.EnableEvent keyBlue" || return $false
+ SendCmd "optD=menu.AddNew EditListItem -selectname '$lirc' 'Lirc' on off" || return $false
+ SendCmd "optD.EnableEvent keyBlue" || return $false
+ SendCmd "optE=menu.AddNew EditIntItem -min 1 -max 2 'Lirc Port' '$lirc_port'" || return $false
+ SendCmd "optE.EnableEvent keyBlue" || return $false
+ # <------------------------------------------------------------------------------------------------------------- List
+ SendCmd "_focus.addsubmenu menu" || return $false
+ SendCmd "opt1.SetCurrent" || return $false
+ SendCmd "menu.show" || return $false
+ # <------------------------------------------------------------------------------------------------------------- Menu
+
+ while true; do
+ SendCmd "menu.SleepEvent" || return $false
+ # keyOk
+ if IsEvent menu keyOk ; then
+ # AUTOSTART
+ SendCmd "opt1.GetValue -name" || return $false
+ [ "${reply6xx[0]}" != 600 ] && return $false
+ if [ "$AUTOSTART" != "${reply6xx[1]}" ]; then
+ DoLog "changing AUTOSTART to ${reply6xx[1]}"
+ sed -i $config -e "/^AUTOSTART=/s/$AUTOSTART/${reply6xx[1]}/"
+ AUTOSTART=${reply6xx[1]}
+ fi
+ # Xserver and Player
+ SendCmd "opt2.GetValue -name" || return $false
+ [ "${reply6xx[0]}" != 600 ] && return $false
+ if [ "$XPLAYER" != "${reply6xx[1]}" ]; then
+ DoLog "changing XPLAYER to ${reply6xx[1]}"
+ sed -i $config -e "/^XPLAYER=/s/$XPLAYER/${reply6xx[1]}/"
+ XPLAYER=${reply6xx[1]}
+ fi
+ # Desktop-Manager
+ SendCmd "opt3.GetValue -name" || return $false
+ [ "${reply6xx[0]}" != 600 ] && return $false
+ if [ "$DESKTOP" != "${reply6xx[1]}" ] || [ "$DESKTOP" = "$XPLAYER" ]; then
+ DESKTOP=${reply6xx[1]}
+ [ "$XPLAYER" = "on" ] && DESKTOP="off"
+ DoLog "changing Desktop-Manager to $DESKTOP"
+ # runlevel
+ if [ $RUNLEVEL -eq 5 -a "$DESKTOP" = "off" ]; then
+ sed -i /etc/inittab -e "s/$RUNLEVEL_STR/id:3:initdefault:/"
+ elif [ $RUNLEVEL -ne 5 -a "$DESKTOP" = "on" ]; then
+ sed -i /etc/inittab -e "s/$RUNLEVEL_STR/id:5:initdefault:/"
+ fi
+ XWRAPPER_STR="$(cat /etc/X11/Xwrapper.config | grep -m1 ^allowed_users)"
+ XWRAPPER=$(echo $XWRAPPER_STR | cut -f2 -d"=")
+ if [ "$DESKTOP" != "on" -a "$XWRAPPER" != "anybody" ]; then
+ log "Setting 'allowed_users' to 'anybody' in /etc/X11/Xwrapper.config"
+ sed -i /etc/X11/Xwrapper.config -e "s/$XWRAPPER_STR/allowed_users=anybody/g"
+ fi
+ fi
+ # vdradmin
+ SendCmd "opt4.GetValue -name" || return $false
+ [ "${reply6xx[0]}" != 600 ] && return $false
+ if [ "$vdradmin" != "${reply6xx[1]}" ]; then
+ DoLog "changing vdradmin to ${reply6xx[1]}"
+ sed -i $config -e "/^vdradmin=/s/$vdradmin/${reply6xx[1]}/"
+ vdradmin=${reply6xx[1]}
+ fi
+ # dxr3
+ SendCmd "optA.GetValue -name" || return $false
+ [ "${reply6xx[0]}" != 600 ] && return $false
+ if [ "$em8300" != "${reply6xx[1]}" ]; then
+ DoLog "changing em8300 to ${reply6xx[1]}"
+ sed -i $config -e "/^em8300=/s/$em8300/${reply6xx[1]}/"
+ em8300=${reply6xx[1]}
+ fi
+ # graphlcd_base
+ SendCmd "optB.GetValue -name" || return $false
+ [ "${reply6xx[0]}" != 600 ] && return $false
+ if [ "$graphlcd_base" != "${reply6xx[1]}" ]; then
+ DoLog "changing graphlcd_base to ${reply6xx[1]}"
+ sed -i $config -e "/^graphlcd_base=/s/$graphlcd_base/${reply6xx[1]}/"
+ graphlcd_base=${reply6xx[1]}
+ fi
+ # LCDproc
+ SendCmd "optC.GetValue -name" || return $false
+ [ "${reply6xx[0]}" != 600 ] && return $false
+ if [ "$LCDproc" != "${reply6xx[1]}" ]; then
+ DoLog "changing LCDproc to ${reply6xx[1]}"
+ sed -i $config -e "/^LCDproc=/s/$LCDproc/${reply6xx[1]}/"
+ LCDproc=${reply6xx[1]}
+ fi
+ # lirc
+ SendCmd "optD.GetValue -name" || return $false
+ [ "${reply6xx[0]}" != 600 ] && return $false
+ if [ "$lirc" != "${reply6xx[1]}" ]; then
+ DoLog "changing lirc to ${reply6xx[1]}"
+ sed -i $config -e "/^lirc=/s/$lirc/${reply6xx[1]}/"
+ lirc=${reply6xx[1]}
+ fi
+ # lirc_port
+ SendCmd "optE.GetValue" || return $false
+ [ "${reply6xx[0]}" != 600 ] && return $false
+ if [ "$lirc_port" != "${reply6xx[1]}" ]; then
+ DoLog "changing lirc_port to ${reply6xx[1]}"
+ sed -i $config -e "/^lirc_port=/s/$lirc_port/${reply6xx[1]}/"
+ lirc_port=${reply6xx[1]}
+ fi
+ # close the submenu
+ if [ "$vdrsetup_ok_ends" = "on" ]; then
+ SendCmd "menu.SendState osBack" || return $false
+# SendCmd "delete menu" || return $false
+# SendCmd "leavelocal" || return $false
+# return $true
+ fi
+ fi
+
+ # keyBlue (Help)
+ if IsEvent opt1 keyBlue ; then
+ SendCmd "Message -seconds 5 'VDR automatisch starten on/off'" || return $false
+ fi
+ if IsEvent opt2 keyBlue ; then
+ SendCmd "Message -seconds 5 'Xserver und Player automatisch starten on/off'" || return $false
+ fi
+ if IsEvent opt3 keyBlue ; then
+ SendCmd "Message -seconds 5 'Desktop-Manager automatisch starten on/off'" || return $false
+ fi
+ if IsEvent opt4 keyBlue ; then
+ SendCmd "Message -seconds 5 'VDRAdmin automatisch starten on/off'" || return $false
+ fi
+
+ if IsEvent optA keyBlue ; then
+ SendCmd "Message -seconds 5 'Modul automatisch laden on/off'" || return $false
+ fi
+ if IsEvent optB keyBlue ; then
+ SendCmd "Message -seconds 5 'Modul automatisch laden on/off'" || return $false
+ fi
+ if IsEvent optC keyBlue ; then
+ SendCmd "Message -seconds 5 'Modul automatisch laden on/off'" || return $false
+ fi
+ if IsEvent optD keyBlue ; then
+ SendCmd "Message -seconds 5 'Modul automatisch laden on/off'" || return $false
+ fi
+ if IsEvent optE keyBlue ; then
+ SendCmd "Message -seconds 5 'Lirc-Port 1/2'" || return $false
+ fi
+ # close the submenu
+ if IsEvent menu close ; then
+ SendCmd "delete menu" || return $false
+ SendCmd "leavelocal" || return $false
+ return $true
+ fi
+ done
+}
+
+##### VDR-Setup Menu #####
+function VdrSetup() {
+ # directorys
+ videodir=$( grep "^VIDEODIR=" $config | tail -n1 | sed -e "s/^VIDEODIR=//" -e 's/"//g' -e 's/#.*//')
+ musicdir=$( grep "^MUSICDIR=" $config | tail -n1 | sed -e "s/^MUSICDIR=//" -e 's/"//g' -e 's/#.*//')
+ dvdisodir=$( grep "^DVDISODIR=" $config | tail -n1 | sed -e "s/^DVDISODIR=//" -e 's/"//g' -e 's/#.*//')
+ picturedir=$(grep "^PICTUREDIR=" $config | tail -n1 | sed -e "s/^PICTUREDIR=//" -e 's/"//g' -e 's/#.*//')
+ divxdir=$( grep "^DIVXDIR=" $config | tail -n1 | sed -e "s/^DIVXDIR=//" -e 's/"//g' -e 's/#.*//')
+ vdrvardir=$( grep "^VDRVARDIR=" $config | tail -n1 | sed -e "s/^VDRVARDIR=//" -e 's/"//g' -e 's/#.*//')
+ dvdburner=$( grep "^DVDBURNER=" $config | tail -n1 | sed -e "s/^DVDBURNER=//" -e 's/"//g' -e 's/#.*//')
+
+ ls_dev=$(ls -r /dev/*)
+
+ # cd / dvd
+ all_dvd=$(echo "$ls_dev" | grep "^/dev/[c,d][d,v][r,d]" | sort -r)
+ if [ -n "$all_dvd" ] && [ $(echo $all_dvd | grep -cw "$dvdburner") -eq 0 ]; then
+ dvdburner_old="$dvdburner"
+ dvdburner=$(echo $all_dvd | cut -f 1 -d " ")
+ sed -i $config -e "/^DVDBURNER=/s?$dvdburner_old?$dvdburner?"
+ SendCmd "Message -seconds 5 \"Resetting DVDBURNER to $dvdburner\"" || return $false
+ fi
+
+ # vdr keyb tty
+ all_tty=$(echo "$ls_dev" | grep "^/dev/tty[0-9]$")
+ if [ $(echo $all_tty | grep -cw "$KEYB_TTY") -eq 0 ]; then
+ KEYB_TTY_OLD="$KEYB_TTY"
+ KEYB_TTY=""
+ sed -i $config -e "/^KEYB_TTY=/s/$KEYB_TTY_OLD/$KEYB_TTY/"
+ SendCmd "Message -seconds 5 \"Resetting KEYB_TTY to $KEYB_TTY\"" || return $false
+ fi
+
+ # vdr language
+ all_lang=$(locale -a | grep "_")
+ if [ $(echo $all_lang | grep -cw "$VDRLANG") -eq 0 ]; then
+ VDRLANG_OLD="$VDRLANG"
+ VDRLANG=$(echo $VDRLANG | cut -f 1 -d ".")
+ [ $(echo $all_lang | grep -cw "$VDRLANG") -eq 0 ] && VDRLANG=$(echo $all_lang | cut -f 1 -d " ")
+ sed -i $config -e "/^VDRLANG=/s/$VDRLANG_OLD/$VDRLANG/"
+ SendCmd "Message -seconds 5 \"Resetting VDRLANG to $VDRLANG\"" || return $false
+ fi
+
+ # Menu -------------------------------------------------------------------------------------------------------------->
+ SendCmd "enterlocal" || return $false
+ SendCmd "menu=New Menu '$vdr_version'" || return $false
+ SendCmd "menu.SetColorKeyText -blue 'Help'" || return $false
+ SendCmd "menu.SetColumns 24" || return $false
+ SendCmd "menu.EnableEvent keyOk keyBlue close" || return $false
+ # List -------------------------------------------------------------------------------------------------------------->
+ SendCmd "menu.AddNew OsdItem -unselectable '--- Einstellungen ---'" || return $false
+ SendCmd "opt1=menu.AddNew EditListItem -selectname '$noad' 'Schnittmarken erkennen' on off" || return $false
+ SendCmd "opt2=menu.AddNew EditListItem -selectname '$KEYB_TTY' 'KEYB TTY' \"\" $(echo $all_tty)" || return $false
+ SendCmd "opt3=menu.AddNew EditListItem -selectname '$VDRLANG' 'Sprache (LANG)' $(echo $all_lang)" || return $false
+ SendCmd "opt4=menu.AddNew EditIntItem 'Watchdog Timeout (sec)' '$WATCHDOG'" || return $false
+ SendCmd "opt5=menu.AddNew EditIntItem 'XV Display' '$XV_DISPLAY'" || return $false
+ SendCmd "menu.AddNew OsdItem -unselectable '--- Laufwerke & Verzeichnisse ---'" || return $false
+ SendCmd "optA=menu.AddNew EditStrItem 'Video' '$videodir'" || return $false
+ SendCmd "optB=menu.AddNew EditStrItem 'Musik' '$musicdir'" || return $false
+ SendCmd "optC=menu.AddNew EditStrItem 'DVD-Isos' '$dvdisodir'" || return $false
+ SendCmd "optD=menu.AddNew EditStrItem 'Bilder und Fotos' '$picturedir'" || return $false
+ SendCmd "optE=menu.AddNew EditStrItem 'DivX und Co' '$divxdir'" || return $false
+ SendCmd "optF=menu.AddNew EditStrItem 'EPG Daten' '$vdrvardir'" || return $false
+ SendCmd "optG=menu.AddNew EditListItem -selectname '$dvdburner' 'DVD Brenner' \"\" $(echo $all_dvd)" || return $false
+ # <-------------------------------------------------------------------------------------------------------------- List
+ SendCmd "_focus.addsubmenu menu" || return $false
+ SendCmd "opt1.SetCurrent" || return $false
+ SendCmd "menu.show" || return $false
+ # <-------------------------------------------------------------------------------------------------------------- Menu
+
+ while true; do
+ SendCmd "menu.SleepEvent" || return $false
+ # keyOk
+ if IsEvent menu keyOk ; then
+ # noad
+ SendCmd "opt1.GetValue -name" || return $false
+ [ "${reply6xx[0]}" != 600 ] && return $false
+ value="${reply6xx[1]}"
+ if [ "$noad" != "$value" ]; then
+ DoLog "changing noad to $value"
+ sed -i $config -e "/^noad=/s/$noad/$value/"
+ noad="$value"
+ fi
+ # KEYB_TTY
+ SendCmd "opt2.GetValue -name" || return $false
+ if [ "${reply6xx[0]}" = 600 ]; then
+ value="${reply6xx[1]}"
+ elif [ "${reply2xx[0]}" = 200 ]; then
+ value=""
+ else
+ return $false
+ fi
+ if [ "$KEYB_TTY" != "$value" ]; then
+ DoLog "changing KEYB_TTY to \"$value\""
+ sed -i $config -e "/^KEYB_TTY=/s/\"//g" -e "s?^KEYB_TTY=$KEYB_TTY?KEYB_TTY=\"$value\"?"
+ KEYB_TTY="$value"
+ fi
+
+ # VDRLANG
+ SendCmd "opt3.GetValue -name" || return $false
+ [ "${reply6xx[0]}" != 600 ] && return $false
+ value="${reply6xx[1]}"
+ if [ "$VDRLANG" != "$value" ]; then
+ DoLog "changing VDRLANG to $value"
+ sed -i $config -e "/^VDRLANG=/s/$VDRLANG/$value/"
+ VDRLANG="$value"
+ fi
+
+ # WATCHDOG
+ SendCmd "opt4.GetValue" || return $false
+ [ "${reply6xx[0]}" != 600 ] && return $false
+ value="${reply6xx[1]}"
+ if [ "$WATCHDOG" != "$value" ]; then
+ DoLog "changing WATCHDOG to $value"
+ sed -i $config -e "/^WATCHDOG=/s/$WATCHDOG/$value/"
+ WATCHDOG="$value"
+ fi
+ # XV_DISPLAY
+ SendCmd "opt5.GetValue" || return $false
+ [ "${reply6xx[0]}" != 600 ] && return $false
+ value="${reply6xx[1]}"
+ if [ "$XV_DISPLAY" != "$value" ]; then
+ DoLog "changing XV_DISPLAY to $value"
+ sed -i $config -e "/^XV_DISPLAY=/s/$XV_DISPLAY/$value/"
+ XV_DISPLAY="$value"
+ fi
+ # VIDEODIR
+ SendCmd "optA.GetValue -quoted" || return $false
+ [ "${reply5xx[0]}" != 500 ] && return $false
+ value="${reply5xx[1]}"
+ if [ "$videodir" != "$value" ]; then
+ [ ! -d "$value" ] && CreateDir "$value"
+ if [ -d "$value" ]; then
+ DoLog "changing VIDEODIR to $value"
+ sed -i $config -e "/^VIDEODIR=/s?$videodir?$value?"
+ else
+ DoLog "error: directory \"$value\" does not exists"
+ fi
+ fi
+ # MUSICDIR
+ SendCmd "optB.GetValue -quoted" || return $false
+ [ "${reply5xx[0]}" != 500 ] && return $false
+ value="${reply5xx[1]}"
+ if [ "$musicdir" != "$value" ]; then
+ [ ! -d "$value" ] && CreateDir "$value"
+ if [ -d "$value" ]; then
+ DoLog "changing MUSICDIR to $value"
+ sed -i $config -e "/^MUSICDIR=/s?$musicdir?$value?"
+ else
+ DoLog "error: directory \"$value\" does not exists"
+ fi
+ fi
+ # DVDISODIR
+ SendCmd "optC.GetValue -quoted" || return $false
+ [ "${reply5xx[0]}" != 500 ] && return $false
+ value="${reply5xx[1]}"
+ if [ "$dvdisodir" != "$value" ]; then
+ [ ! -d "$value" ] && CreateDir "$value"
+ if [ -d "$value" ]; then
+ DoLog "changing DVDISODIR to $value"
+ sed -i $config -e "/^DVDISODIR=/s?$dvdisodir?$value?"
+ else
+ DoLog "error: directory \"$value\" does not exists"
+ fi
+ fi
+ # PICTUREDIR
+ SendCmd "optD.GetValue -quoted" || return $false
+ [ "${reply5xx[0]}" != 500 ] && return $false
+ value="${reply5xx[1]}"
+ if [ "$picturedir" != "$value" ]; then
+ [ ! -d "$value" ] && CreateDir "$value"
+ if [ -d "$value" ]; then
+ DoLog "changing PICTUREDIR to $value"
+ sed -i $config -e "/^PICTUREDIR=/s?$picturedir?$value?"
+ else
+ DoLog "error: directory \"$value\" does not exists"
+ fi
+ fi
+ # DIVXDIR
+ SendCmd "optE.GetValue -quoted" || return $false
+ [ "${reply5xx[0]}" != 500 ] && return $false
+ value="${reply5xx[1]}"
+ if [ "$divxdir" != "$value" ]; then
+ [ ! -d "$value" ] && CreateDir "$value"
+ if [ -d "$value" ]; then
+ DoLog "changing DIVXDIR to $value"
+ sed -i $config -e "/^DIVXDIR=/s?$divxdir?$value?"
+ else
+ DoLog "error: directory \"$value\" does not exists"
+ fi
+ fi
+ # VDRVARDIR
+ SendCmd "optF.GetValue -quoted" || return $false
+ [ "${reply5xx[0]}" != 500 ] && return $false
+ value="${reply5xx[1]}"
+ if [ "$vdrvardir" != "$value" ]; then
+ [ ! -d "$value" ] && CreateDir "$value"
+ if [ -d "$value" ]; then
+ DoLog "changing VDRVARDIR to $value"
+ sed -i $config -e "/^VDRVARDIR=/s?$vdrvardir?$value?"
+ else
+ DoLog "error: directory \"$value\" does not exists"
+ fi
+ fi
+ # DVDBURNER
+ SendCmd "optG.GetValue -name" || return $false
+ if [ "${reply6xx[0]}" = 600 ]; then
+ value="${reply6xx[1]}"
+ elif [ "${reply2xx[0]}" = 200 ]; then
+ value=""
+ else
+ return $false
+ fi
+ if [ "$dvdburner" != "$value" ]; then
+ DoLog "changing DVDBURNER to \"$value\""
+ [ ! -e "$value" ] && DoLog "warning: \"$value\" is no valid"
+# sed -i $config -e "/^DVDBURNER=/s?$dvdburner?$value?"
+ sed -i $config -e "/^DVDBURNER=/s/\"//g" -e "s?^DVDBURNER=$dvdburner?DVDBURNER=\"$value\"?"
+ fi
+ # close the submenu
+ if [ "$vdrsetup_ok_ends" = "on" ]; then
+ SendCmd "menu.SendState osBack" || return $false
+# SendCmd "delete menu" || return $false
+# SendCmd "leavelocal" || return $false
+# return $true
+ fi
+ fi
+ # keyBlue (Help)
+ if IsEvent menu keyBlue ; then
+ SendCmd "Message -seconds 5 'Speichern mit Ok oder Menue verlassen mit Exit'" || return $false
+ fi
+ # close the submenu
+ if IsEvent menu close ; then
+ SendCmd "delete menu" || return $false
+ SendCmd "leavelocal" || return $false
+ return $true
+ fi
+ done
+}
+
+##### Plugin Menus #####
+function PluginSetup() {
+ plugin=$1
+ plugin_have_args=$(grep "^${plugin}_args=" $config | tail -n1)
+ plugin_version=$(grep "^${plugin}_desc=" /tmp/vdr-desc.cache | tail -n1 | sed -e "s/^${plugin}_desc=//" -e 's/[^)]*$//' -e 's/"//g' -e 's/#.*//')
+ [ -n "$plugin_version" ] || plugin_version="$plugin"
+ # Menu -------------------------------------------------------------------------------------------------------------------->
+ SendCmd "enterlocal" || return $false
+ SendCmd "menu=New Menu '$plugin_version'" || return $false
+ SendCmd "menu.SetColorKeyText -green 'About' -blue 'Help'" || return $false
+ SendCmd "menu.SetColumns 14" || return $false
+ SendCmd "menu.EnableEvent keyOk keyGreen keyBlue close" || return $false
+ # List -------------------------------------------------------------------------------------------------------------------->
+ SendCmd "opt1=menu.AddNew EditListItem -selectname '${!plugin}' 'Status' on off" || return $false
+ if [ "$plugin" = "remote" ]; then
+ SendCmd "optA=menu.AddNew EditStrItem 'Remote Event' '$remote_event'" || return $false
+ fi
+ if [ -n "$plugin_have_args" ]; then
+ plugin_args=$(echo "$plugin_have_args" | sed -e "s/^${plugin}_args=//" -e 's/"//g' -e 's/#.*//')
+ SendCmd "opt2=menu.AddNew EditStrItem 'Argumente' '$plugin_args'" || return $false
+ else
+ SendCmd "menu.AddNew OsdItem -unselectable 'Argumente:\tPlugin kennt keine Argumente'" || return $false
+ fi
+ # <-------------------------------------------------------------------------------------------------------------------- List
+ SendCmd "_focus.addsubmenu menu" || return $false
+ SendCmd "opt1.SetCurrent" || return $false
+ SendCmd "menu.show" || return $false
+ # <-------------------------------------------------------------------------------------------------------------------- Menu
+
+ while true; do
+ SendCmd "menu.SleepEvent" || return $false
+ # keyOk
+ if IsEvent menu keyOk ; then
+ # plugin status
+ SendCmd "opt1.GetValue -name" || return $false
+ [ "${reply6xx[0]}" != 600 ] && return $false
+ value="${reply6xx[1]}"
+ if [ "${!plugin}" != "$value" ]; then
+ DoLog "changing $plugin to $value"
+ sed -i $config -e "/^$plugin=/s/${!plugin}/$value/"
+ eval $plugin="$value"
+ fi
+ # plugin arguments
+ if [ -n "$plugin_have_args" ]; then
+ SendCmd "opt2.GetValue -quoted" || return $false
+ if [ "${reply5xx[0]}" = 500 ] || [ "${reply2xx[0]}" = 200 ]; then
+ value=$(echo " ${reply5xx[1]}" | sed -e 's/^ //g' -e 's/\\r//g')
+ if [ "$plugin_args" != "$value" ]; then
+ DoLog "changing arguments for $plugin to $value"
+ sed -i $config -e "/^${plugin}_args=/s/\"//g" -e "s?^${plugin}_args=$plugin_args?${plugin}_args=\"$value\"?"
+ fi
+ fi
+ fi
+ # remote_event for remote plugin
+ if [ "$plugin" = "remote" ]; then
+ SendCmd "optA.GetValue -quoted" || return $false
+ [ "${reply5xx[0]}" = 500 ] || return $false
+ value=$(echo " ${reply5xx[1]}" | sed -e 's/^ //g' -e 's/\\r//g')
+ if [ "$remote_event" != "$value" ]; then
+ DoLog "changing arguments for remote_event to $value"
+ sed -i $config -e "/^remote_event=/s?$remote_event?$value?"
+ fi
+ fi
+ # close the submenu
+ if [ "$vdrsetup_ok_ends" = "on" ]; then
+ SendCmd "menu.SendState osBack" || return $false
+# SendCmd "delete menu" || return $false
+# SendCmd "leavelocal" || return $false
+# return $true
+ fi
+ fi
+ # keyGreen (About)
+ if IsEvent menu keyGreen ; then
+ desc=$(grep "^${plugin}_desc=" /tmp/vdr-desc.cache | tail -n1 | sed -e "s/^${plugin}_desc=\"${plugin} ([^)]*) - //" -e 's/"//g' -e 's/#.*//')
+ SendCmd "Message -seconds 5 \"$desc\"" || return $false
+ fi
+ # keyBlue (Help)
+ if IsEvent menu keyBlue ; then
+ SendCmd "Message -seconds 5 'Auswahl mit Links und Rechts, speichern mit Ok'" || return $false
+ fi
+ # close the submenu
+ if IsEvent menu close ; then
+ SendCmd "delete menu" || return $false
+ SendCmd "leavelocal" || return $false
+ return $true
+ fi
+ done
+}
+
+function PluginStatusList() {
+ # Menu ---------------------------------------------------------------------------------------------------->
+ SendCmd "enterlocal" || return $false
+ SendCmd "menu=New Menu 'Plugin Status Liste'" || return $false
+ SendCmd "menu.SetColorKeyText -green 'About' -blue 'Help'" || return $false # -red 'Edit'
+ SendCmd "menu.SetColumns 24" || return $false
+ SendCmd "menu.EnableEvent keyOk keyGreen keyBlue close" || return $false # keyRed
+ # List ---------------------------------------------------------------------------------------------------->
+ SendCmd "Message -status 'Menu wird aufgebaut ...'" || return $false
+ files=$(ls "$VDRLIBDIR" | grep "^libvdr-" | grep "${plugin_api}$" | sed -e "s/^libvdr-//g" -e "s/.so.${plugin_api}$//g")
+ if [ -n "$files" ]; then
+ for p in $files ; do
+ plugin=$(echo $p | sed -e "s/-/_/g") # this is for streamdev-server ...
+ if [ -z "${!plugin}" ]; then
+ DoLog "creating $plugin=\"off\""
+ echo "" >> $config
+ echo "# $plugin" >> $config
+ echo "${plugin}=\"off\"" >> $config
+ eval ${plugin}="off"
+ # plugin args
+ nl=0; (( nl=$(grep -n "^$p " /tmp/vdr-help.tmp | cut -f 1 -d ":") +1 ))
+ [ $nl -gt 1 ] && [ $(sed -n "${nl}p" /tmp/vdr-help.tmp | grep -c "^-") -gt 0 ] && echo "${plugin}_args=\"\"" >> $config
+ fi
+ SendCmd "$plugin=menu.AddNew EditListItem -selectname \"${!plugin}\" \"$p\" on off" || return $false
+ done
+ fi
+ SendCmd "Message -statusclear" || return $false
+ # <---------------------------------------------------------------------------------------------------- List
+ SendCmd "_focus.addsubmenu menu" || return $false
+ SendCmd "menu.Show" || return $false
+ # <---------------------------------------------------------------------------------------------------- Menu
+
+ while true ; do
+ SendCmd "menu.SleepEvent" || return $false
+ # keyOk (save settings and clsoe the submenu)
+ if IsEvent menu keyOk ; then
+ if [ -n "$files" ]; then
+ SendCmd "Message 'Einstellungen werden gespeichert'" || return $false
+ for p in $files ; do
+ plugin=$(echo $p | sed -e "s/-/_/g") # this is for streamdev-server ...
+ SendCmd "${plugin}.GetValue -name" || return $false
+ [ "${reply6xx[0]}" != 600 ] && return $false
+ if [ "${!plugin}" != "${reply6xx[1]}" ]; then
+ DoLog "changing $plugin to ${reply6xx[1]}"
+ sed -i $config -e "/^${plugin}=/s/${!plugin}/${reply6xx[1]}/"
+ eval ${plugin}="${reply6xx[1]}"
+ fi
+ done
+ fi
+ # close the submenu
+ if [ "$vdrsetup_ok_ends" = "on" ]; then
+ SendCmd "menu.SendState osBack" || return $false
+# SendCmd "delete menu" || return $false
+# SendCmd "leavelocal" || return $false
+# return $true
+ fi
+ fi
+ # keyRed (Edit) !!! Bug Inside !!!
+ if IsEvent menu keyRed ; then
+ SendCmd "menu.GetCurrent"
+ [ "${reply3xx[0]}" != 302 ] && return $false
+ PluginSetup "${reply3xx[2]}" || return $false
+ SendCmd "menu.Show" || return $false
+ fi
+ # keyGreen (About)
+ if IsEvent menu keyGreen ; then
+ SendCmd "menu.GetCurrent"
+ [ "${reply3xx[0]}" != 302 ] && return $false
+ desc=$(grep "^${reply3xx[2]}_desc=" /tmp/vdr-desc.cache | tail -n1 | sed -e "s/^${reply3xx[2]}_desc=\"${reply3xx[2]} ([^)]*) - //" -e 's/"//g' -e 's/#.*//')
+ SendCmd "Message -seconds 5 \"$desc\"" || return $false
+ fi
+ # keyBlue (Help)
+ if IsEvent menu keyBlue ; then
+ SendCmd "Message -seconds 5 'Auswahl mit Links und Rechts, speichern mit Ok'" || return $false
+ fi
+ # close the submenu
+ if IsEvent menu close ; then
+ SendCmd "delete menu" || return $false
+ SendCmd "leavelocal" || return $false
+ return $true
+ fi
+ done
+}
+
+function ListPlugins() {
+ # Menu ------------------------------------------------------------------------------------------>
+ SendCmd "enterlocal" || return $false
+ SendCmd "menu=New Menu 'Installierte Plugins'" || return $false
+ SendCmd "menu.SetColorKeyText -red 'Edit' -green 'Status' -blue 'Help'" || return $false
+ SendCmd "menu.SetColumns 4" || return $false
+ SendCmd "menu.EnableEvent keyOk keyRed keyGreen keyBlue close" || return $false
+ SendCmd "menu.EnableEvent key1 key2 key3 key4 key5 key6 key7 key8 key9 key0" || return $false
+ # List------------------------------------------------------------------------------------------->
+ SendCmd "Message -status 'Menu wird aufgebaut ...'" || return $false
+ files=$(ls "$VDRLIBDIR" | grep "^libvdr-" | grep "${plugin_api}$" | sed -e "s/^libvdr-//g" -e "s/.so.${plugin_api}$//g")
+ if [ -n "$files" ]; then
+ n=0
+ for p in $files ; do
+ ((n=n+1))
+ plugin=$(echo $p | sed -e "s/-/_/g") # this is for streamdev-server ...
+ if [ -z "${!plugin}" ]; then
+ DoLog "creating $plugin=\"off\""
+ echo "" >> $config
+ echo "# $plugin" >> $config
+ echo "${plugin}=\"off\"" >> $config
+ eval ${plugin}="off"
+ # plugin args
+ nl=0; (( nl=$(grep -n "^$p " /tmp/vdr-help.tmp | cut -f 1 -d ":") +1 ))
+ [ $nl -gt 1 ] && [ $(sed -n "${nl}p" /tmp/vdr-help.tmp | grep -c "^-") -gt 0 ] && echo "${plugin}_args=\"\"" >> $config
+ fi
+ plugin_desc="${plugin}_desc"
+ desc="${!plugin_desc}"
+ [ -n "$(echo $n | grep "^[0-9][0-9][0-9]$")" ] && N="$n"
+ [ -n "$(echo $n | grep "^[0-9][0-9]$")" ] && N=" $n"
+ [ -n "$(echo $n | grep "^[0-9]$")" ] && N=" $n"
+ SendCmd "$plugin=menu.AddNew OsdItem \"$N \t$desc\"" || return $false
+ done
+ fi
+ SendCmd "Message -statusclear" || return $false
+ # <------------------------------------------------------------------------------------------ List
+ SendCmd "_focus.addsubmenu menu" || return $false
+ SendCmd "menu.Show" || return $false
+ # <------------------------------------------------------------------------------------------ Menu
+
+ while true ; do
+ SendCmd "menu.SleepEvent" || return $false
+ # keyOk and keyRed
+ if IsEvent menu keyOk || IsEvent menu keyRed; then
+ SendCmd "menu.GetCurrent"
+ [ "${reply3xx[0]}" != 302 ] && return $false
+ PluginSetup "${reply3xx[2]}" || return $false
+ SendCmd "menu.Show" || return $false
+ fi
+ # keyGreen (Status)
+ if IsEvent menu keyGreen ; then
+ SendCmd "menu.GetCurrent"
+ [ "${reply3xx[0]}" != 302 ] && return $false
+ plugin="${reply3xx[2]}"
+ SendCmd "Message -seconds 5 'Status: ${!plugin}'" || return $false
+ fi
+ # keyBlue (Help)
+ if IsEvent menu keyBlue ; then
+ SendCmd "Message -seconds 5 'Auswahl mit OK oder Menue verlassen mit Exit'" || return $false
+ fi
+ # close the submenu
+ if IsEvent menu close ; then
+ SendCmd "delete menu" || return $false
+ SendCmd "leavelocal" || return $false
+ return $true
+ fi
+ # keyNr
+ if [ $n -gt 0 ]; then
+ mykey=;
+ k1=;
+ for k1 in 0 1 2 3 4 5 6 7 8 9 ; do
+ if IsEvent menu key$k1 ; then
+ mykey=$k1
+ [ $n -gt 9 ] || break
+ SendCmd "menu.SleepEvent -timeoutms $vdrsetup_key_timeout" || return $false
+ if IsEvent menu keyOk ; then break; fi
+ k2=;
+ for k2 in 0 1 2 3 4 5 6 7 8 9 ; do
+ if IsEvent menu key$k2 ; then
+ mykey=${k1}${k2}
+ [ $n -gt 99 ] || break
+ SendCmd "menu.SleepEvent -timeoutms $vdrsetup_key_timeout" || return $false
+ if IsEvent menu keyOk ; then break; fi
+ k3=;
+ for k3 in 0 1 2 3 4 5 6 7 8 9 ; do
+ if IsEvent menu key$k3 ; then
+ mykey=${k1}${k2}${k3}
+ break
+ fi
+ done
+ break
+ fi
+ done
+ break
+ fi
+ done
+
+ if [ -n "$mykey" ]; then
+ [ $mykey -gt $n ] && mykey=$n
+ ((mykey=mykey-1)) # we do this, because 0 is the first item
+ [ $mykey -lt 0 ] && mykey=0
+ SendCmd "menu.SetCurrent $mykey" || return $false
+# SendCmd "menu.GetCurrent"
+# [ "${reply3xx[0]}" != 302 ] && return $false
+# PluginSetup "${reply3xx[2]}" || return $false
+ SendCmd "menu.Show" || return $false
+ fi
+ fi
+ done
+}
+
+##### Wakeup Menu #####
+function Wakeup() {
+ shutdown="$VDRCONFDIR/shutdown.conf"
+ . $shutdown
+
+ # settings
+# WAKEUP_MODE=$(grep "^WAKEUP_MODE=" $shutdown | tail -n1 | sed -e "s/^WAKEUP_MODE=//" -e 's/"//g' -e 's/#.*//')
+ (( WAKEUP_MODE_T = $WAKEUP_MODE + 1 ))
+# NVRAM_CONFIG=$(grep "^NVRAM_CONFIG=" $shutdown | tail -n1 | sed -e "s/^NVRAM_CONFIG=//" -e 's/"//g' -e 's/#.*//')
+# NVRAM_IWNAME=$(grep "^NVRAM_IWNAME=" $shutdown | tail -n1 | sed -e "s/^NVRAM_IWNAME=//" -e 's/"//g' -e 's/#.*//')
+# NVRAM_OPT=$(grep "^NVRAM_OPT=" $shutdown | tail -n1 | sed -e "s/^NVRAM_OPT=//" -e 's/"//g' -e 's/#.*//')
+# NEED_REBOOT=$(grep "^NEED_REBOOT=" $shutdown | tail -n1 | sed -e "s/^NEED_REBOOT=//" -e 's/"//g' -e 's/#.*//')
+ (( NEED_REBOOT_T = $NEED_REBOOT + 1 ))
+# LILO=$(grep "^LILO=" $shutdown | tail -n1 | sed -e "s/^LILO=//" -e 's/"//g' -e 's/#.*//')
+ (( LILO_T = $LILO + 1 ))
+
+# WAKEUP_BEFORE=$(grep "^WAKEUP_BEFORE=" $shutdown | tail -n1 | sed -e "s/^WAKEUP_BEFORE=//" -e 's/"//g' -e 's/#.*//')
+# MAX_POWEROFF_TIME=$(grep "^MAX_POWEROFF_TIME=" $shutdown | tail -n1 | sed -e "s/^MAX_POWEROFF_TIME=//" -e 's/"//g' -e 's/#.*//')
+# INTERVAL=$(grep "^INTERVAL=" $shutdown | tail -n1 | sed -e "s/^INTERVAL=//" -e 's/"//g' -e 's/#.*//')
+# DREAMTIME=$(grep "^DREAMTIME=" $shutdown | tail -n1 | sed -e "s/^DREAMTIME=//" -e 's/"//g' -e 's/#.*//')
+# MIN_WAKEUP_VAR=$(grep "^MIN_WAKEUP_VAR=" $shutdown | tail -n1 | sed -e "s/^MIN_WAKEUP_VAR=//" -e 's/"//g' -e 's/#.*//')
+# WAITING_PERIOD=$(grep "^WAITING_PERIOD=" $shutdown | tail -n1 | sed -e "s/^WAITING_PERIOD=//" -e 's/"//g' -e 's/#.*//')
+
+ # Menu --------------------------------------------------------------------------------------------------------------------------->
+ SendCmd "enterlocal" || return $false
+ SendCmd "menu=New Menu 'Wakeup'" || return $false
+ SendCmd "menu.SetColorKeyText -blue Help" || return $false
+ SendCmd "menu.SetColumns 24" || return $false
+ SendCmd "menu.EnableEvent keyOk close" || return $false
+ # List --------------------------------------------------------------------------------------------------------------------------->
+ SendCmd "menu.AddNew OsdItem -unselectable '--- System ---'" || return $false
+ SendCmd "opt1=menu.AddNew EditListItem -select '$WAKEUP_MODE_T' 'Aufwach Methode' keine acpi nvram extension-board" || return $false
+ SendCmd "opt1.EnableEvent keyBlue" || return $false
+ SendCmd "opt2=menu.AddNew EditListItem -select '$NEED_REBOOT_T' 'Neustart erforderlich' nein ja immer" || return $false
+ SendCmd "opt2.EnableEvent keyBlue" || return $false
+ SendCmd "opt3=menu.AddNew EditListItem -select '$LILO_T' 'Bootmanger' grub lilo" || return $false
+ SendCmd "opt3.EnableEvent keyBlue" || return $false
+ SendCmd "menu.AddNew OsdItem -unselectable '--- Nvram ---'" || return $false
+ SendCmd "opt4=menu.AddNew EditStrItem 'Konfiguration' '$NVRAM_CONFIG'" || return $false
+ SendCmd "opt4.EnableEvent keyBlue" || return $false
+ SendCmd "opt5=menu.AddNew EditStrItem 'IW Name' '$NVRAM_IWNAME'" || return $false
+ SendCmd "opt5.EnableEvent keyBlue" || return $false
+ SendCmd "opt6=menu.AddNew EditStrItem 'Optionen' '$NVRAM_OPT'" || return $false
+ SendCmd "opt6.EnableEvent keyBlue" || return $false
+ SendCmd "menu.AddNew OsdItem -unselectable '--- Nur fuer Experten ---'" || return $false
+ SendCmd "optA=menu.AddNew EditIntItem 'Vorlauf in Minuten' '$WAKEUP_BEFORE'" || return $false
+ SendCmd "optA.EnableEvent keyBlue" || return $false
+ SendCmd "optB=menu.AddNew EditStrItem 'Maximale Auszeit' '$MAX_POWEROFF_TIME'" || return $false
+ SendCmd "optB.EnableEvent keyBlue" || return $false
+ SendCmd "optC=menu.AddNew EditIntItem -max 31 'Interval in Tagen' '$INTERVAL'" || return $false
+ SendCmd "optC.EnableEvent keyBlue" || return $false
+ SendCmd "optD=menu.AddNew EditStrItem 'Wunsch Aufwachzeit' '$DREAMTIME'" || return $false
+ SendCmd "optD.EnableEvent keyBlue" || return $false
+ SendCmd "optE=menu.AddNew EditIntItem -max 3 'Aktion' '$MIN_WAKEUP_VAR'" || return $false
+ SendCmd "optE.EnableEvent keyBlue" || return $false
+ SendCmd "optF=menu.AddNew EditIntItem 'Warte Zeit' '$WAITING_PERIOD'" || return $false
+ SendCmd "optF.EnableEvent keyBlue" || return $false
+ # <---------------------------------------------------------------------------------------------------------------------------- List
+ SendCmd "_focus.addsubmenu menu" || return $false
+ SendCmd "opt1.SetCurrent" || return $false
+ SendCmd "menu.show" || return $false
+ # <---------------------------------------------------------------------------------------------------------------------------- Menu
+
+ while true; do
+ SendCmd "menu.SleepEvent" || return $false
+ # keyOk
+ if IsEvent menu keyOk ; then
+ # WAKEUP_MODE
+ SendCmd "opt1.GetValue" || return $false
+ [ "${reply6xx[0]}" != 600 ] && return $false
+ if [ "$WAKEUP_MODE_T" != "${reply6xx[1]}" ]; then
+ (( WAKEUP_MODE_N = ${reply6xx[1]} - 1 ))
+ (( WAKEUP_MODE = $WAKEUP_MODE_T - 1 ))
+ DoLog "changing WAKEUP_MODE to $WAKEUP_MODE_N"
+ sed -i $shutdown -e "/^WAKEUP_MODE=/s/$WAKEUP_MODE/$WAKEUP_MODE_N/"
+ fi
+ # NEED_REBOOT
+ SendCmd "opt2.GetValue" || return $false
+ [ "${reply6xx[0]}" != 600 ] && return $false
+ if [ "$NEED_REBOOT_T" != "${reply6xx[1]}" ]; then
+ (( NEED_REBOOT_N = ${reply6xx[1]} - 1 ))
+ (( NEED_REBOOT = $NEED_REBOOT_T - 1 ))
+ DoLog "changing NEED_REBOOT to $NEED_REBOOT_N"
+ sed -i $shutdown -e "/^NEED_REBOOT=/s/$NEED_REBOOT/$NEED_REBOOT_N/"
+ fi
+ # LILO
+ SendCmd "opt3.GetValue" || return $false
+ [ "${reply6xx[0]}" != 600 ] && return $false
+ if [ "$LILO_T" != "${reply6xx[1]}" ]; then
+ (( LILO_N = ${reply6xx[1]} - 1 ))
+ (( LILO = $LILO_T - 1 ))
+ DoLog "changing LILO to $LILO_N"
+ sed -i $shutdown -e "/^LILO=/s/$LILO/$LILO_N/"
+ fi
+ # NVRAM_CONFIG
+ SendCmd "opt4.GetValue -quoted" || return $false
+ if [ "${reply5xx[0]}" = 500 ] || [ "${reply2xx[0]}" = 200 ]; then
+ value=$(echo " ${reply5xx[1]}" | sed -e 's/^ //g' -e 's/\\r//g')
+ if [ "$NVRAM_CONFIG" != "$value" ]; then
+ if [ -f "$value" ]; then
+ DoLog "changing NVRAM_CONFIG to $value"
+ sed -i $shutdown -e "/^NVRAM_CONFIG=/s/\"//g" -e "s?^NVRAM_CONFIG=$NVRAM_CONFIG?NVRAM_CONFIG=\"$value\"?"
+ else
+ DoLog "error: file \"$value\" for NVRAM_CONFIG does not exist"
+ fi
+ fi
+ fi
+ # NVRAM_IWNAME
+ SendCmd "opt5.GetValue -quoted" || return $false
+ if [ "${reply5xx[0]}" = 500 ] || [ "${reply2xx[0]}" = 200 ]; then
+ value=$(echo " ${reply5xx[1]}" | sed -e 's/^ //g' -e 's/\\r//g')
+ if [ "$NVRAM_IWNAME" != "$value" ]; then
+ DoLog "changing NVRAM_IWNAME to $value"
+ sed -i $shutdown -e "/^NVRAM_IWNAME=/s/\"//g" -e "s?^NVRAM_IWNAME=$NVRAM_IWNAME?NVRAM_IWNAME=\"$value\"?"
+ fi
+ fi
+ # NVRAM_OPT
+ SendCmd "opt6.GetValue -quoted" || return $false
+ if [ "${reply5xx[0]}" = 500 ] || [ "${reply2xx[0]}" = 200 ]; then
+ value=$(echo " ${reply5xx[1]}" | sed -e 's/^ //g' -e 's/\\r//g')
+ if [ "$NVRAM_OPT" != "$value" ]; then
+ DoLog "changing NVRAM_OPT to $value"
+ sed -i $shutdown -e "/^NVRAM_OPT=/s/\"//g" -e "s?^NVRAM_OPT=$NVRAM_OPT?NVRAM_OPT=\"$value\"?"
+ fi
+ fi
+ # WAKEUP_BEFORE
+ SendCmd "optA.GetValue" || return $false
+ [ "${reply6xx[0]}" != 600 ] && return $false
+ if [ "$WAKEUP_BEFORE" != "${reply6xx[1]}" ]; then
+ DoLog "changing WAKEUP_BEFORE to ${reply6xx[1]}"
+ sed -i $shutdown -e "/^WAKEUP_BEFORE=/s/$WAKEUP_BEFORE/${reply6xx[1]}/"
+ fi
+ # MAX_POWEROFF_TIME
+ SendCmd "optB.GetValue -quoted" || return $false
+ if [ "${reply5xx[0]}" = 500 ] || [ "${reply2xx[0]}" = 200 ]; then
+ value=$(echo " ${reply5xx[1]}" | sed -e 's/^ //g' -e 's/\\r//g')
+ if [ "$MAX_POWEROFF_TIME" != "$value" ]; then
+ DoLog "changing MAX_POWEROFF_TIME to $value"
+ sed -i $shutdown -e "/^MAX_POWEROFF_TIME=/s/\"//g" -e "s?^MAX_POWEROFF_TIME=$MAX_POWEROFF_TIME?MAX_POWEROFF_TIME=\"$value\"?"
+ fi
+ fi
+ # INTERVAL
+ SendCmd "optC.GetValue" || return $false
+ [ "${reply6xx[0]}" != 600 ] && return $false
+ if [ "$INTERVAL" != "${reply6xx[1]}" ]; then
+ DoLog "changing INTERVAL to ${reply6xx[1]}"
+ sed -i $shutdown -e "/^INTERVAL=/s/$INTERVAL/${reply6xx[1]}/"
+ fi
+ # DREAMTIME
+ SendCmd "optD.GetValue -quoted" || return $false
+ if [ "${reply5xx[0]}" = 500 ] || [ "${reply2xx[0]}" = 200 ]; then
+ value=$(echo " ${reply5xx[1]}" | sed -e 's/^ //g' -e 's/\\r//g')
+ if [ "$DREAMTIME" != "$value" ]; then
+ [ -n "$(echo $value | grep '^[0-9]:[0-9][0-9]$')" ] && value="0${value}"
+ if [ -n "$(echo $value | grep '^[0-9][0-9]:[0-9][0-9]$')" ]; then
+ DoLog "changing DREAMTIME to $value"
+ sed -i $shutdown -e "/^DREAMTIME=/s/\"//g" -e "s?^DREAMTIME=$DREAMTIME?DREAMTIME=\"$value\"?"
+ else
+ DoLog "error: value \"$value\" for DREAMTIME has bad format"
+ fi
+ fi
+ fi
+ # MIN_WAKEUP_VAR
+ SendCmd "optE.GetValue" || return $false
+ [ "${reply6xx[0]}" != 600 ] && return $false
+ if [ "$MIN_WAKEUP_VAR" != "${reply6xx[1]}" ]; then
+ DoLog "changing MIN_WAKEUP_VAR to ${reply6xx[1]}"
+ sed -i $shutdown -e "/^MIN_WAKEUP_VAR=/s/$MIN_WAKEUP_VAR/${reply6xx[1]}/"
+ fi
+ # WAITING_PERIOD
+ SendCmd "optF.GetValue" || return $false
+ [ "${reply6xx[0]}" != 600 ] && return $false
+ if [ "$WAITING_PERIOD" != "${reply6xx[1]}" ]; then
+ DoLog "changing WAITING_PERIOD to ${reply6xx[1]}"
+ sed -i $shutdown -e "/^WAITING_PERIOD=/s/$WAITING_PERIOD/${reply6xx[1]}/"
+ fi
+ # close the submenu
+ if [ "$vdrsetup_ok_ends" = "on" ]; then
+ SendCmd "menu.SendState osBack" || return $false
+# SendCmd "delete menu" || return $false
+# SendCmd "leavelocal" || return $false
+# return $true
+ fi
+ fi
+ # keyBlue (Help)
+ if IsEvent opt1 keyBlue ; then
+ SendCmd "Message -seconds 5 'Optionen: keine, acpi, nvram, extension-board'" || return $false
+ fi
+ if IsEvent opt2 keyBlue ; then
+ SendCmd "Message -seconds 5 'Optionen: nein, ja, immer'" || return $false
+ fi
+ if IsEvent opt3 keyBlue ; then
+ SendCmd "Message -seconds 5 'Optionen: grub, lilo'" || return $false
+ fi
+ if IsEvent opt4 keyBlue ; then
+ SendCmd "Message -seconds 5 'Pfad zur nvram-wakeup Konfiguration'" || return $false
+ fi
+ if IsEvent opt5 keyBlue ; then
+ SendCmd "Message -seconds 5 'Specify the iw (infowriter) name (e.g: gigabyte_5aa)'" || return $false
+ fi
+ if IsEvent opt6 keyBlue ; then
+ SendCmd "Message -seconds 5 'Versuche \"nvram-wakeup --help\" auf einem Terminal'" || return $false
+ fi
+ if IsEvent optA keyBlue ; then
+ SendCmd "Message -seconds 5 'Optionen: 0, MAXIMAL, INTERVAL oder Zeit in Minuten'" || return $false
+ fi
+ if IsEvent optB keyBlue ; then
+ SendCmd "Message -seconds 5 'Gebe den Interval in Tagen an'" || return $false
+ fi
+ if IsEvent optC keyBlue ; then
+ SendCmd "Message -seconds 5 'Aufwachzeit in Stunden:Minuten zB 03:00'" || return $false
+ fi
+ if IsEvent optD keyBlue ; then
+ SendCmd "Message -seconds 5 'Aktion wenn \$MIN_WAKEUPTIME -gt \$WAKEUPTIME'" || return $false
+ fi
+ if IsEvent optE keyBlue ; then
+ SendCmd "Message -seconds 5 'Wartezeit bis zum erneuten Shutdown in Minuten'" || return $false
+ fi
+ # close the submenu
+ if IsEvent menu close ; then
+ SendCmd "delete menu" || return $false
+ SendCmd "leavelocal" || return $false
+ return $true
+ fi
+ done
+}
+
+##### DVB-Modul Menu #####
+function DVBModul() {
+ # dvb_ttpci parameter description
+ debug_desc="debug level (bitmask, default 0)"
+ vidmode_desc="analog video out: 0 off, 1 CVBS+RGB (default), 2 CVBS+YC, 3 YC"
+ pids_off_desc="clear video/audio/PCR PID filters when demux is closed"
+ adac_desc="audio DAC type: 0 TI, 1 CRYSTAL, 2 MSP (use if autodetection fails)"
+ hw_sections_desc="0 use software section filter, 1 use hardware"
+ rgb_on_desc="For Siemens DVB-C cards only: Enable RGB control signal on SCART pin 16 to switch SCART video mode from CVBS to RGB"
+ volume_desc="initial volume: default 255 (range 0-255)"
+ budgetpatch_desc="use budget-patch hardware modification: default 0 (0 no, 1 autodetect, 2 always)"
+ wss_cfg_4_3_desc="WSS 4:3 - default 0x4008 - bit 15: disable, 14: burst mode, 13..0: wss data"
+ wss_cfg_16_9_desc="WSS 16:9 - default 0x0007 - bit 15: disable, 14: burst mode, 13..0: wss data"
+ tv_standard_desc="TV standard: 0 PAL (default), 1 NTSC"
+
+
+# { 0x7, "16:9" },
+# { 0x8, "4:3" },
+# { 0x1, "L14:9" },
+# { 0xb, "L16:9" },
+# { 0xd, "L>16:9" }
+
+
+ TT_PARAMETERS="options dvb_ttpci"
+ if [ -d /sys/module/dvb_ttpci/parameters ]; then
+ for p in $(ls /sys/module/dvb_ttpci/parameters); do
+ eval ${p}=`cat /sys/module/dvb_ttpci/parameters/${p}`
+ done
+ fi
+
+ # defaults and some tests
+ vidmode=$(echo $vidmode | grep '^[0,1,2,3]$')
+ [ -n "$vidmode" ] || vidmode=1
+ [ "$vidmode" = "0" ] && vidmode=4
+ tv_standard=$(echo $tv_standard | grep '^[0,1]$')
+ [ -n "$tv_standard" ] || tv_standard=0
+ (( tv_standard = $tv_standard + 1 ))
+ wss_cfg_16_9=$(echo $wss_cfg_16_9 | grep '^[[:digit:]]*$')
+ [ -n "$wss_cfg_16_9" ] || wss_cfg_16_9=7
+ wss_cfg_4_3=$(echo $wss_cfg_4_3 | grep '^[[:digit:]]*$')
+ [ -n "$wss_cfg_4_3" ] || wss_cfg_4_3=16392
+ debug=$(echo $debug | grep '^[[:digit:]]*$')
+ [ -n "$debug" ] || debug=0
+ ir_inversion=$(echo $ir_inversion | cut -f1 -d ',' | grep '^[0,1]$')
+ [ -n "$ir_inversion" ] || ir_inversion=0
+ (( ir_inversion = $ir_inversion + 1 ))
+ volume=$(echo $volume | grep '^[[:digit:]]*$')
+ [ -n "$volume" ] || volume=255
+
+
+ SendCmd "enterlocal" || return $false # Preserve global variable space, so we can re-use 'menu'
+ SendCmd "menu=New Menu 'DVB Module'" || return $false
+ SendCmd "menu.SetColorKeyText -blue Help" || return $false
+ SendCmd "menu.SetColumns 24" || return $false
+ SendCmd "menu.EnableEvent keyOk close" || return $false
+ # List ->
+ SendCmd "menu.AddNew OsdItem -unselectable '--- Video ---'" || return $false
+ SendCmd "opt1=menu.AddNew EditListItem -select '$vidmode' 'Video Ausgang' RGB/Composite S-Video/Composite S-Video off" || return $false
+ SendCmd "opt1.EnableEvent keyBlue" || return $false
+ SendCmd "opt2=menu.AddNew EditListItem -select '$tv_standard' 'TV Standard' PAL NTSC" || return $false
+ SendCmd "opt2.EnableEvent keyBlue" || return $false
+ SendCmd "opt3=menu.AddNew EditIntItem 'WSS 16:9' '$wss_cfg_16_9'" || return $false
+# SendCmd "opt3=menu.AddNew EditListItem -select '$wss_cfg_16_9' 'WSS 16:9' 16:9 1 2 " || return $false
+ SendCmd "opt3.EnableEvent keyBlue" || return $false
+ SendCmd "opt4=menu.AddNew EditIntItem 'WSS 4:3' '$wss_cfg_4_3'" || return $false
+ SendCmd "opt4.EnableEvent keyBlue" || return $false
+ SendCmd "menu.AddNew OsdItem -unselectable ''" || return $false
+ SendCmd "menu.AddNew OsdItem -unselectable '--- Sonstiges ---'" || return $false
+ SendCmd "opt5=menu.AddNew EditIntItem 'Debug Level' '$debug'" || return $false
+ SendCmd "opt5.EnableEvent keyBlue" || return $false
+ SendCmd "opt6=menu.AddNew EditListItem -select '$ir_inversion' 'IR invertieren' off on" || return $false
+ SendCmd "opt6.EnableEvent keyBlue" || return $false
+ SendCmd "opt7=menu.AddNew EditIntItem -max 255 'Lautstaerke' '$volume'" || return $false
+ SendCmd "opt7.EnableEvent keyBlue" || return $false
+ # <- List
+ SendCmd "_focus.addsubmenu menu" || return $false
+ SendCmd "opt1.SetCurrent" || return $false
+ SendCmd "menu.show" || return $false
+
+ while true; do
+ SendCmd "menu.SleepEvent" || return $false
+ # keyOk
+ if IsEvent menu keyOk ; then
+ # vidmode
+ SendCmd "opt1.GetValue" || return $false
+ [ "${reply6xx[0]}" != 600 ] && return $false
+ if [ "1" != "${reply6xx[1]}" ]; then
+ vidmode="${reply6xx[1]}"
+ [ "$vidmode" = "4" ] && vidmode=0
+ DoLog "adding vidmode=${reply6xx[1]} to TT_PARAMETERS"
+ TT_PARAMETERS="$TT_PARAMETERS vidmode=${reply6xx[1]}"
+ fi
+ # tv_standard
+ SendCmd "opt2.GetValue" || return $false
+ [ "${reply6xx[0]}" != 600 ] && return $false
+ if [ "1" != "${reply6xx[1]}" ]; then
+ (( tv_standard = ${reply6xx[1]} - 1 ))
+ DoLog "adding tv_standard=$tv_standard to TT_PARAMETERS"
+ TT_PARAMETERS="$TT_PARAMETERS tv_standard=$tv_standard"
+ fi
+ # wss_cfg_16_9
+ SendCmd "opt3.GetValue" || return $false
+ [ "${reply6xx[0]}" != 600 ] && return $false
+ if [ "7" != "${reply6xx[1]}" ]; then
+ DoLog "adding wss_cfg_16_9=${reply6xx[1]} to TT_PARAMETERS"
+ TT_PARAMETERS="$TT_PARAMETERS wss_cfg_16_9=${reply6xx[1]}"
+ fi
+ # wss_cfg_4_3
+ SendCmd "opt4.GetValue" || return $false
+ [ "${reply6xx[0]}" != 600 ] && return $false
+ if [ "16392" != "${reply6xx[1]}" ]; then
+ DoLog "adding wss_cfg_4_3=${reply6xx[1]} to TT_PARAMETERS"
+ TT_PARAMETERS="$TT_PARAMETERS wss_cfg_4_3=${reply6xx[1]}"
+ fi
+ # debug
+ SendCmd "opt5.GetValue" || return $false
+ [ "${reply6xx[0]}" != 600 ] && return $false
+ if [ "0" != "${reply6xx[1]}" ]; then
+ DoLog "adding debug=${reply6xx[1]} to TT_PARAMETERS"
+ TT_PARAMETERS="$TT_PARAMETERS debug=${reply6xx[1]}"
+ fi
+ # ir_inversion
+ SendCmd "opt6.GetValue" || return $false
+ [ "${reply6xx[0]}" != 600 ] && return $false
+ if [ "1" != "${reply6xx[1]}" ]; then
+ (( ir_inversion = ${reply6xx[1]} - 1 ))
+ DoLog "adding tv_standard=$ir_inversion to TT_PARAMETERS"
+ TT_PARAMETERS="$TT_PARAMETERS tv_standard=$ir_inversion"
+ fi
+ # volume
+ SendCmd "opt7.GetValue" || return $false
+ [ "${reply6xx[0]}" != 600 ] && return $false
+ if [ "255" != "${reply6xx[1]}" ]; then
+ DoLog "adding volume=${reply6xx[1]} to TT_PARAMETERS"
+ TT_PARAMETERS="$TT_PARAMETERS volume=${reply6xx[1]}"
+ fi
+
+ # write config to /etc/modprobe.d/dvb
+ echo $TT_PARAMETERS > /etc/modprobe.d/dvb
+
+ # close the submenu
+ if [ "$vdrsetup_ok_ends" = "on" ]; then
+ SendCmd "menu.SendState osBack" || return $false
+# SendCmd "delete menu" || return $false
+# SendCmd "leavelocal" || return $false
+# return $true
+ fi
+ fi
+ # keyBlue (Help)
+ if IsEvent opt1 keyBlue ; then
+ SendCmd "Message -seconds 5 'Video Modus des J2 - default RGB'" || return $false
+ fi
+ if IsEvent opt2 keyBlue ; then
+ SendCmd "Message -seconds 5 'TV Standard - default Pal'" || return $false
+ fi
+ if IsEvent opt3 keyBlue ; then
+ SendCmd "Message -seconds 5 'WSS 16/9 - default 7'" || return $false
+ fi
+ if IsEvent opt4 keyBlue ; then
+ SendCmd "Message -seconds 5 'WSS 4/3 - default 16392'" || return $false
+ fi
+ if IsEvent opt5 keyBlue ; then
+ SendCmd "Message -seconds 5 'Debug Level - default 0'" || return $false
+ fi
+ if IsEvent opt6 keyBlue ; then
+ SendCmd "Message -seconds 5 'IR-Signal invertieren - default off'" || return $false
+ fi
+ if IsEvent opt7 keyBlue ; then
+ SendCmd "Message -seconds 5 'Start Lautstaerke von 0-255 - default 255'" || return $false
+ fi
+ # close the submenu
+ if IsEvent menu close ; then
+ SendCmd "delete menu" || return $false
+ SendCmd "leavelocal" || return $false
+ return $true
+ fi
+ done
+}
+
+
+##### x-vdr #############
+function InstallPlugins {
+ [ "$have_xvdr" = "on" ] || return $false
+ xdir=/usr/local/src/x-vdr
+ cmd=$1
+ # Menu -------------------------------------------------------------------------------------------------------->
+ SendCmd "enterlocal" || return $false
+ if [ "$cmd" = "installed" ]; then
+ SendCmd "menu=New Menu 'Installierte Plugins'" || return $false
+ SendCmd "menu.SetColorKeyText -red 'Edit' -green 'Reinstall' -yellow 'Remove' -blue 'Help'" || return $false
+ SendCmd "menu.SetColumns 4" || return $false
+ elif [ "$cmd" = "standby" ]; then
+ SendCmd "menu=New Menu 'Installierbare Plugins'" || return $false
+ SendCmd "menu.SetColorKeyText -red 'Edit' -green 'Install' -blue 'Help'" || return $false
+ SendCmd "menu.SetColumns 4 16" || return $false
+ else
+ SendCmd "menu=New Menu 'Alle Plugins'" || return $false
+ SendCmd "menu.SetColorKeyText -red 'Edit' -green 'Install' -yellow 'Remove' -blue 'Help'" || return $false
+ SendCmd "menu.SetColumns 4 16" || return $false
+ fi
+
+ SendCmd "menu.EnableEvent keyOk keyRed keyGreen keyYellow keyBlue close" || return $false
+ SendCmd "menu.EnableEvent key1 key2 key3 key4 key5 key6 key7 key8 key9 key0" || return $false
+ # List--------------------------------------------------------------------------------------------------------->
+ SendCmd "Message -status 'Menu wird aufgebaut ...'" || return $false
+ plugs=$(ls -B "$xdir/plugins")
+ if [ -n "$plugs" ]; then
+ n=0
+ for plug in $plugs ; do
+# eval local $(grep -r -m1 "^${plug}=" $xdir/setup.conf) # status
+# if [ "x${!plug}" = "xon" ] || [ "x${!plug}" = "xoff" ]; then
+# fi
+ ins_status="nicht installiert"
+ if [ "$plug" = "streamdev" ]; then
+ [ -f "${VDRLIBDIR}/libvdr-streamdev-server.so.${plugin_api}" ] && ins_status="installiert"
+ [ -f "${VDRLIBDIR}/libvdr-streamdev-client.so.${plugin_api}" ] && ins_status="installiert"
+ plugin_desc="streamdev_server_desc"
+ desc="${!plugin_desc}"
+ [ -n "$desc" ] || {
+ plugin_desc="streamdev_client_desc"
+ desc="${!plugin_desc}"
+ }
+ [ -n "$desc" ] || desc="$plug"
+ else
+ [ -f "${VDRLIBDIR}/libvdr-${plug}.so.${plugin_api}" ] && ins_status="installiert"
+ plugin_desc="${plug}_desc"
+ desc="${!plugin_desc}"
+ [ -n "$desc" ] || desc="$plug"
+ fi
+ if [ "$cmd" = "installed" ]; then
+ if [ "$ins_status" = "installiert" ]; then
+ ((n=n+1))
+ [ -n "$(echo $n | grep "^[0-9][0-9][0-9]$")" ] && N="$n"
+ [ -n "$(echo $n | grep "^[0-9][0-9]$")" ] && N=" $n"
+ [ -n "$(echo $n | grep "^[0-9]$")" ] && N=" $n"
+ SendCmd "$plug=menu.AddNew OsdItem '$N \t$desc'" || return $false
+ fi
+ elif [ "$cmd" = "standby" ]; then
+ if [ "$ins_status" != "installiert" ]; then
+ ((n=n+1))
+ [ -n "$(echo $n | grep "^[0-9][0-9][0-9]$")" ] && N="$n"
+ [ -n "$(echo $n | grep "^[0-9][0-9]$")" ] && N=" $n"
+ [ -n "$(echo $n | grep "^[0-9]$")" ] && N=" $n"
+ SendCmd "$plug=menu.AddNew OsdItem '$N \t$plug \t$ins_status'" || return $false
+ fi
+ else # all
+ ((n=n+1))
+ [ -n "$(echo $n | grep "^[0-9][0-9][0-9]$")" ] && N="$n"
+ [ -n "$(echo $n | grep "^[0-9][0-9]$")" ] && N=" $n"
+ [ -n "$(echo $n | grep "^[0-9]$")" ] && N=" $n"
+ SendCmd "$plug=menu.AddNew OsdItem '$N \t$plug \t$ins_status'" || return $false
+ fi
+ done
+ fi
+ SendCmd "Message -statusclear" || return $false
+ # <-------------------------------------------------------------------------------------------------------- List
+ SendCmd "_focus.addsubmenu menu" || return $false
+ SendCmd "menu.Show" || return $false
+ # <-------------------------------------------------------------------------------------------------------- Menu
+
+ while true ; do
+ SendCmd "menu.SleepEvent" || return $false
+ # keyOk and keyRed
+ # if IsEvent menu keyOk || IsEvent menu keyRed; then
+ # keyRed (Edit)
+ if IsEvent menu keyRed; then
+ SendCmd "menu.GetCurrent"
+ [ "${reply3xx[0]}" != 302 ] && return $false
+ PluginSetup "${reply3xx[2]}" || return $false
+ SendCmd "menu.Show" || return $false
+ fi
+ # keyGreen (Install)
+ if IsEvent menu keyGreen ; then
+ SendCmd "menu.GetCurrent"
+ [ "${reply3xx[0]}" != 302 ] && return $false
+ n="${reply3xx[1]}"; N=;
+ [ -n "$(echo $n | grep "^[0-9][0-9][0-9]$")" ] && N="$n"
+ [ -n "$(echo $n | grep "^[0-9][0-9]$")" ] && N=" $n"
+ [ -n "$(echo $n | grep "^[0-9]$")" ] && N=" $n"
+ plugin="${reply3xx[2]}"
+ if [ "$cmd" = "installed" ]; then
+ SendCmd "Message -warn -seconds 10 '$plugin neu installieren?'" || return $false
+ else
+ SendCmd "Message -warn -seconds 10 '$plugin installieren?'" || return $false
+ fi
+ if IsEvent Message keyOk ; then
+ SendCmd "Message -status 'Installiere $plugin ...'" || return $false
+ cd $xdir/plugins/$plugin
+ plugin_status=$(./plugin.sh -s)
+ case $plugin_status in
+ 0 ) ./plugin.sh -m && {
+ $VDRPRG --version | sed -e 's/\(^[^ ]*\)\(.*$\)/\1_desc="\1\2"/' -e '/^streamdev/s/-/_/' -e 's/^\[.*//' | sort > /tmp/vdr-desc.cache
+ . /tmp/vdr-desc.cache
+ } ;;
+ * ) ./plugin.sh -r ;;
+ esac
+ SendCmd "Message -statusclear" || return $false
+ SendCmd "$plugin.SETTEXT '$N \t$plugin \tinstalliert'"
+ SendCmd "menu.Show" || return $false
+ fi
+ fi
+ # keyYellow (Remove)
+ if [ "$cmd" != "standby" ]; then
+ if IsEvent menu keyYellow ; then
+ SendCmd "menu.GetCurrent"
+ [ "${reply3xx[0]}" != 302 ] && return $false
+ n="${reply3xx[1]}"; N=;
+ [ -n "$(echo $n | grep "^[0-9][0-9][0-9]$")" ] && N="$n"
+ [ -n "$(echo $n | grep "^[0-9][0-9]$")" ] && N=" $n"
+ [ -n "$(echo $n | grep "^[0-9]$")" ] && N=" $n"
+ plugin="${reply3xx[2]}"
+ cd $xdir/plugins/$plugin
+ plugin_status=$(./plugin.sh -s)
+ case $plugin_status in
+ 0 ) SendCmd "Message -seconds 5 '$plugin ist nicht installiert'" || return $false ;;
+ * ) SendCmd "Message -warn -seconds 10 'Soll $plugin entfernt werden?'" || return $false
+ if IsEvent Message keyOk ; then
+ SendCmd "Message -status 'Entferne $plugin ...'" || return $false
+ ./plugin.sh -c
+ SendCmd "Message -statusclear" || return $false
+ SendCmd "$plugin.SETTEXT '$N \t$plugin'"
+ SendCmd "menu.Show" || return $false
+ fi ;;
+ esac
+ fi
+ fi
+ # keyBlue (Help)
+ if IsEvent menu keyBlue ; then
+ SendCmd "Message -seconds 5 'Auswahl mit Farbtasten oder Menue verlassen mit Exit'" || return $false
+ fi
+ # close the submenu
+ if IsEvent menu close ; then
+ SendCmd "delete menu" || return $false
+ SendCmd "leavelocal" || return $false
+ return $true
+ fi
+ # keyNr
+ if [ $n -gt 0 ]; then
+ mykey=;
+ k1=;
+ for k1 in 0 1 2 3 4 5 6 7 8 9 ; do
+ if IsEvent menu key$k1 ; then
+ mykey=$k1
+ [ $n -gt 9 ] || break
+ SendCmd "menu.SleepEvent -timeoutms $vdrsetup_key_timeout" || return $false
+ if IsEvent menu keyOk ; then break; fi
+ k2=;
+ for k2 in 0 1 2 3 4 5 6 7 8 9 ; do
+ if IsEvent menu key$k2 ; then
+ mykey=${k1}${k2}
+ [ $n -gt 99 ] || break
+ SendCmd "menu.SleepEvent -timeoutms $vdrsetup_key_timeout" || return $false
+ if IsEvent menu keyOk ; then break; fi
+ k3=;
+ for k3 in 0 1 2 3 4 5 6 7 8 9 ; do
+ if IsEvent menu key$k3 ; then
+ mykey=${k1}${k2}${k3}
+ break
+ fi
+ done
+ break
+ fi
+ done
+ break
+ fi
+ done
+
+ if [ -n "$mykey" ]; then
+ [ $mykey -gt $n ] && mykey=$n
+ ((mykey=mykey-1)) # we do this, because 0 is the first item
+ [ $mykey -lt 0 ] && mykey=0
+ SendCmd "menu.SetCurrent $mykey" || return $false
+# SendCmd "menu.GetCurrent"
+# [ "${reply3xx[0]}" != 302 ] && return $false
+# PluginSetup "${reply3xx[2]}" || return $false
+ SendCmd "menu.Show" || return $false
+ fi
+ fi
+ done
+}
+
+function BackupVdrConf() {
+ [ "$have_xvdr" = "on" ] || return $false
+ xdir=/usr/local/src/x-vdr
+ SendCmd "Message -status 'Backup wird erstellt ...'" || return $false
+ BACKUPDIR="/tmp/vdr-backup"
+ BACKUPPATH="$xdir/backup"
+ [ ! -d $BACKUPPATH ] && mkdir -p $BACKUPPATH
+ [ -d $BACKUPDIR ] && rm -rf $BACKUPDIR
+ mkdir -p $BACKUPDIR
+ cp -pfR --parents $VDRCONFDIR $BACKUPDIR
+ cp -pfR --parents $VDRSCRIPTDIR $BACKUPDIR
+ cp -pf --parents $VDRBINDIR/runvdr $BACKUPDIR
+ cp -pf --parents /etc/default/vdr $BACKUPDIR
+ cp -pf --parents /etc/init.d/vdr $BACKUPDIR
+ BACKUPFILE=$BACKUPPATH/`date +%y%m%d-%H%M`-vdr-conf.tar.gz
+ cd $BACKUPDIR
+ tar -zcf $BACKUPFILE * && SendCmd "Message -seconds 5 'Backup erstellt'" || return $false
+ cd ..
+ rm -rf $BACKUPDIR
+ SendCmd "Message -statusclear" || return $false
+}
+
+function Xvdr() {
+ [ "$have_xvdr" = "on" ] || return $false
+ xdir=/usr/local/src/x-vdr
+ # Menu --------------------------------------------------------------------------------------------------------------->
+ SendCmd "enterlocal" || return $false
+ SendCmd "menu=New Menu 'x-vdr'" || return $false
+ SendCmd "menu.SetColorKeyText -red 'Reboot' -green 'Shutdown' -yellow 'VDR Restart' -blue 'Help'" || return $false
+ SendCmd "menu.SetColumns 1 2" || return $false
+ SendCmd "menu.EnableEvent keyRed keyGreen keyYellow close" || return $false
+ SendCmd "menu.EnableEvent key1 key2 key3 key4 key5 key6 key7 key8 key9 key0" || return $false
+ # List --------------------------------------------------------------------------------------------------------------->
+ SendCmd "menu.AddNew OsdItem -unselectable '--- Plugins ---'" || return $false
+ SendCmd "optP1=menu.AddNew OsdItem '\t1\tAlle Plugins'" || return $false
+ SendCmd "optP1.EnableEvent keyOk keyBlue" || return $false
+ SendCmd "optP2=menu.AddNew OsdItem '\t2\tInstallierte Plugins'" || return $false
+ SendCmd "optP2.EnableEvent keyOk keyBlue" || return $false
+ SendCmd "optP3=menu.AddNew OsdItem '\t3\tInstallierbare Plugins'" || return $false
+ SendCmd "optP3.EnableEvent keyOk keyBlue"
+
+ SendCmd "menu.AddNew OsdItem -unselectable '--- Backup ---'" || return $false
+ SendCmd "optB1=menu.AddNew OsdItem '\t3\tKonfiguration und Skripte'" || return $false
+ SendCmd "optB1.EnableEvent keyOk keyBlue" || return $false
+ # <--------------------------------------------------------------------------------------------------------------- List
+ SendCmd "_focus.addsubmenu menu" || return $false
+ SendCmd "opt1.SetCurrent" || return $false
+ SendCmd "menu.show" || return $false
+ # <--------------------------------------------------------------------------------------------------------------- Menu
+
+ while true; do
+ SendCmd "menu.SleepEvent" || return $false
+ # keyOk (SubMenu InstallPlugins)
+ if IsEvent optP1 keyOk || IsEvent menu key1 ; then
+ InstallPlugins all || return $false
+ SendCmd "menu.Show" || return $false
+ fi
+ if IsEvent optP2 keyOk || IsEvent menu key2 ; then
+ InstallPlugins installed || return $false
+ SendCmd "menu.Show" || return $false
+ fi
+ if IsEvent optP3 keyOk || IsEvent menu key2 ; then
+ InstallPlugins standby || return $false
+ SendCmd "menu.Show" || return $false
+ fi
+ # keyOk (Backup)
+ if IsEvent optB1 keyOk || IsEvent menu key3 ; then
+ BackupVdrConf || return $false
+ SendCmd "menu.Show" || return $false
+ fi
+ # keyRed (Reboot)
+ if IsEvent menu keyRed ; then
+ SendCmd "Message -warn -seconds 10 'System jetzt neustarten?'" || return $false
+ if IsEvent Message keyOk ; then
+ SendCmd "Message 'System wird neugestartet...'" || return $false
+ SendCmd "menu.SendState osEnd" || return $false
+ shutdown -r now
+ fi
+ fi
+ # keyGreen (Shutdown)
+ if IsEvent menu keyGreen ; then
+ SendCmd "Message -warn -seconds 10 'System jetzt ausschalten?'" || return $false
+ if IsEvent Message keyOk ; then
+# SendCmd "Message 'System wird ausgeschaltet...'" || return $false
+ SendCmd "menu.SendState osEnd" || return $false
+# shutdown -h now
+ /usr/bin/svdrpsend.pl HITK Power
+ return $true
+ fi
+ fi
+ # keyYellow (Restart)
+ if IsEvent menu keyYellow ; then
+ SendCmd "Message -warn -seconds 10 'VDR jetzt neustarten?'" || return $false
+ if IsEvent Message keyOk ; then
+ SendCmd "Message 'VDR wird neugestartet...'" || return $false
+ SendCmd "menu.SendState osEnd" || return $false
+ sleep 1
+ killall -9 vdr
+ fi
+ fi
+ # keyBlue (Help)
+ if IsEvent optP1 keyBlue ; then
+ SendCmd "Message -seconds 5 'Zeigt alle verfuegbaren Plugins'" || return $false
+ fi
+ if IsEvent optP2 keyBlue ; then
+ SendCmd "Message -seconds 5 'Zeigt nur die installierten Plugins'" || return $false
+ fi
+ if IsEvent optP3 keyBlue ; then
+ SendCmd "Message -seconds 5 'Zeigt nur die nicht installierten Plugins'" || return $false
+ fi
+ if IsEvent optB1 keyBlue ; then
+ SendCmd "Message -seconds 5 'Erstellt ein Backup von Konfiguration und Skripten'" || return $false
+ fi
+
+ # close the submenu
+ if IsEvent menu close ; then
+ SendCmd "delete menu" || return $false
+ SendCmd "leavelocal" || return $false
+ return $true
+ fi
+ done
+}
+
+
+##### Main Menu #####
+function MainMenu() {
+ # Menu --------------------------------------------------------------------------------------------------------------->
+ SendCmd "menu=New Menu 'vdrsetup'" || return $false
+ SendCmd "menu.SetColorKeyText -red 'Reboot' -green 'Shutdown' -yellow 'VDR Restart' -blue 'Help'" || return $false
+ SendCmd "menu.SetColumns 1 2" || return $false
+ SendCmd "menu.EnableEvent keyRed keyGreen keyYellow keyBlue close" || return $false
+ SendCmd "menu.EnableEvent key1 key2 key3 key4 key5 key6 key7 key8 key9 key0" || return $false
+ # List --------------------------------------------------------------------------------------------------------------->
+ SendCmd "opt1=menu.AddNew OsdItem '\t1\tVDR Einstellungen'" || return $false
+ SendCmd "opt1.EnableEvent keyOk" || return $false
+ SendCmd "opt2=menu.AddNew OsdItem '\t2\tInstallierte Plugins'" || return $false
+ SendCmd "opt2.EnableEvent keyOk" || return $false
+ SendCmd "opt3=menu.AddNew OsdItem '\t3\tPlugin Status Liste'" || return $false
+ SendCmd "opt3.EnableEvent keyOk" || return $false
+ SendCmd "opt4=menu.AddNew OsdItem '\t4\tSystemstart'" || return $false
+ SendCmd "opt4.EnableEvent keyOk" || return $false
+ SendCmd "opt5=menu.AddNew OsdItem '\t5\tWakeup'" || return $false
+ SendCmd "opt5.EnableEvent keyOk" || return $false
+ SendCmd "opt6=menu.AddNew OsdItem '\t6\tSkript Intern'" || return $false
+ SendCmd "opt6.EnableEvent keyOk" || return $false
+ SendCmd "opt7=menu.AddNew OsdItem '\t7\tDVB Modul'" || return $false
+ SendCmd "opt7.EnableEvent keyOk" || return $false
+ if [ "$have_xvdr" = "on" ]; then
+ SendCmd "opt8=menu.AddNew OsdItem '\t8\tX-VDR'" || return $false
+ SendCmd "opt8.EnableEvent keyOk" || return $false
+ fi
+ # <--------------------------------------------------------------------------------------------------------------- List
+ SendCmd "opt1.SetCurrent" || return $false
+ SendCmd "menu.Show" || return $false
+ # <--------------------------------------------------------------------------------------------------------------- Menu
+
+ while true ; do
+ SendCmd "menu.SleepEvent" || return $false
+ # keyOk (SubMenu VdrSetup)
+ if IsEvent opt1 keyOk || IsEvent menu key1 ; then
+ VdrSetup || return $false
+ SendCmd "menu.Show" || return $false
+ fi
+ # keyOk (SubMenu ListPlugins)
+ if IsEvent opt2 keyOk || IsEvent menu key2 ; then
+ ListPlugins || return $false
+ SendCmd "menu.Show" || return $false
+ fi
+ # keyOk (SubMenu PluginStatusList)
+ if IsEvent opt3 keyOk || IsEvent menu key3 ; then
+ PluginStatusList || return $false
+ SendCmd "menu.Show" || return $false
+ fi
+ # keyOk (SubMenu SystemStart)
+ if IsEvent opt4 keyOk || IsEvent menu key4 ; then
+ SystemStart || return $false
+ SendCmd "menu.Show" || return $false
+ fi
+ # keyOk (SubMenu Wakeup)
+ if IsEvent opt5 keyOk || IsEvent menu key5 ; then
+ Wakeup || return $false
+ SendCmd "menu.Show" || return $false
+ fi
+ # keyOk (SubMenu ScriptSetup)
+ if IsEvent opt6 keyOk || IsEvent menu key6 ; then
+# SendCmd "Message -seconds 5 'Einstellungen gelten nur fuer diese Sitzung'" || return $false
+ ScriptSetup || return $false
+ SendCmd "menu.Show" || return $false
+ fi
+ # keyOk (SubMenu DVB)
+ if IsEvent opt7 keyOk || IsEvent menu key7 ; then
+ DVBModul || return $false
+ SendCmd "menu.Show" || return $false
+ fi
+ # keyOk (SubMenu Xvdr)
+ if [ "$have_xvdr" = "on" ]; then
+ if IsEvent opt8 keyOk || IsEvent menu key8 ; then
+ Xvdr || return $false
+ SendCmd "menu.Show" || return $false
+ fi
+ fi
+ # keyRed (Reboot)
+ if IsEvent menu keyRed ; then
+ SendCmd "Message -warn -seconds 10 'System jetzt neustarten?'" || return $false
+ if IsEvent Message keyOk ; then
+ SendCmd "Message 'System wird neugestartet...'" || return $false
+ SendCmd "menu.SendState osEnd" || return $false
+ shutdown -r now
+ fi
+ fi
+ # keyGreen (Shutdown)
+ if IsEvent menu keyGreen ; then
+ SendCmd "Message -warn -seconds 10 'System jetzt ausschalten?'" || return $false
+ if IsEvent Message keyOk ; then
+# SendCmd "Message 'System wird ausgeschaltet...'" || return $false
+ SendCmd "menu.SendState osEnd" || return $false
+# shutdown -h now
+ /usr/bin/svdrpsend.pl HITK Power
+ return $true
+ fi
+ fi
+ # keyYellow (Restart)
+ if IsEvent menu keyYellow ; then
+ SendCmd "Message -warn -seconds 10 'VDR jetzt neustarten?'" || return $false
+ if IsEvent Message keyOk ; then
+ SendCmd "Message 'VDR wird neugestartet...'" || return $false
+ SendCmd "menu.SendState osEnd" || return $false
+ sleep 1
+ killall -9 vdr
+ fi
+ fi
+ # keyBlue (Help)
+ if IsEvent menu keyBlue ; then
+ SendCmd "Message -seconds 5 'Auswahl mit OK oder Menue verlassen mit Exit'" || return $false
+ fi
+ # close the menu
+ if IsEvent menu close ; then
+ SendCmd "menu.SendState osEnd" || return $false
+ return $true
+ fi
+ done
+}
+
+
+###############
+# Main Code #
+###############
+
+
+ConnectServer localhost 2010
+# Connect to the server process
+
+ReadReply || error
+# Read server welcome
+
+SendCmd "Version 0.1" || error
+# Identify to server with protocol version
+
+MainMenu || error
+# Do vdrsetup
+
+SendCmd Quit
+DoLog "disconnecting from OSDServer"
+# ... and good bye
+
+exec 3>&-
+exec 4>&-
+# close FIFOs
+