hdhomerun: improved start, suspend and resume

This commit is contained in:
vpeter4 2013-06-21 12:26:11 +02:00 committed by Stephan Raue
parent 86e25c471d
commit c12144afea
14 changed files with 70 additions and 25 deletions

3
packages/addons/driver/hdhomerun/changelog.txt Normal file → Executable file
View File

@ -1,3 +1,6 @@
3.1.2
new addon settings option to enable suspend/resume driver actions
new addon settings option to enable logging
3.1.1
rebuild for OpenELEC-3.2
3.0.5

View File

0
packages/addons/driver/hdhomerun/icon/icon.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 35 KiB

2
packages/addons/driver/hdhomerun/meta Normal file → Executable file
View File

@ -20,7 +20,7 @@
PKG_NAME="hdhomerun"
PKG_VERSION="3.2"
PKG_REV="1"
PKG_REV="2"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="http://www.silicondust.com/products/hdhomerun/dvbt/"

3
packages/addons/driver/hdhomerun/settings-default.xml Normal file → Executable file
View File

@ -1,4 +1,7 @@
<settings>
<setting id="PRE_WAIT" value="2" />
<setting id="POST_WAIT" value="1" />
<setting id="USERHDHOMERUN_LOG" value="false" />
<setting id="LIBHDHOMERUN_LOG" value="false" />
<setting id="SUSPEND_DRIVER" value="false" />
</settings>

View File

View File

View File

@ -22,6 +22,18 @@
. /etc/profile
# start locking mechanism - allows only one instance to be run at a time
HDHR_LOCKFILE="/var/lock/userspace-driver-hdhomerun.lck"
HDHR_LOCKFD=99
# obtain an exclusive lock
exlock() { eval "exec $HDHR_LOCKFD>\"$HDHR_LOCKFILE\""; flock -x $HDHR_LOCKFD; }
# drop a lock
unlock() { flock -u $HDHR_LOCKFD; flock -xn $HDHR_LOCKFD && rm -f "$HDHR_LOCKFILE"; }
# end locking mechanism
# exclusive lock
exlock
HDHR_ADDON_DIR="$HOME/.xbmc/addons/driver.dvb.hdhomerun"
HDHR_ADDON_HOME="$HOME/.xbmc/userdata/addon_data/driver.dvb.hdhomerun"
HDHR_ADDON_SETTINGS="$HDHR_ADDON_HOME/settings.xml"
@ -92,7 +104,7 @@ if [ -z "$(pidof userhdhomerun)" ]; then
echo "" >>$DVBHDHOMERUN_CONF_TMP
# remove empty lines at the end of file
sed -i -e ':a' -e '/^\n*$/{$d;N;};/\n$/ba' $DVBHDHOMERUN_CONF_TMP
if [ "$LIBHDHOMERUN_LOG" = "true" ]; then
cat >>$DVBHDHOMERUN_CONF_TMP << EOF
@ -127,7 +139,11 @@ EOF
mkdir -p /var/log/
rm -f /var/log/dvbhdhomerun.log
userhdhomerun -f
if [ "$USERHDHOMERUN_LOG" = "true" ]; then
userhdhomerun -f
else
userhdhomerun -f -d
fi
logger -t HDHomeRun "### Post wait for $POST_WAIT sec ###"
sleep $POST_WAIT
@ -144,3 +160,6 @@ EOF
fi
logger -t HDHomeRun "### HDHomeRun ready ###"
# unlock the lock
unlock

0
packages/addons/driver/hdhomerun/source/default.py Normal file → Executable file
View File

View File

@ -3,7 +3,9 @@
<string id="1000">General</string>
<string id="1020">Pre wait time [sec]</string>
<string id="1030">Post wait time [sec]</string>
<string id="1040">Enable libhdhomerun logging</string>
<string id="1040">Enable userhdhomerun logging</string>
<string id="1050">Enable libhdhomerun logging</string>
<string id="1060">Enable suspend/resume the driver</string>
<string id="9000">Tuner settings</string>
<string id="9005">Enable modifying settings</string>

View File

View File

View File

@ -4,7 +4,9 @@
<setting type="sep" />
<setting id="PRE_WAIT" type="number" label="1020" default="2" />
<setting id="POST_WAIT" type="number" label="1030" default="1" />
<setting id="LIBHDHOMERUN_LOG" type="bool" label="1040" default="false" />
<setting id="USERHDHOMERUN_LOG" type="bool" label="1040" default="false" />
<setting id="LIBHDHOMERUN_LOG" type="bool" label="1050" default="false" />
<setting id="SUSPEND_DRIVER" type="bool" label="1060" default="false" />
</category>
<category label="9000">
<setting type="sep" />

View File

@ -22,26 +22,42 @@
. /etc/profile
LOCKDIR="/var/lock/"
LOCKFILE="$LOCKDIR/hdhomerun"
HDHR_ADDON_DIR="$HOME/.xbmc/addons/driver.dvb.hdhomerun"
HDHR_ADDON_HOME="$HOME/.xbmc/userdata/addon_data/driver.dvb.hdhomerun"
HDHR_ADDON_SETTINGS="$HDHR_ADDON_HOME/settings.xml"
case "$1" in
hibernate|suspend)
if [ -n "$(pidof userhdhomerun)" ]; then
progress "Shutting down HDHomeRun driver for suspending..."
mkdir -p "$LOCKDIR"
touch "$LOCKFILE"
killall -9 userhdhomerun
fi
;;
if [ ! -f "$HDHR_ADDON_SETTINGS" ]; then
cp $HDHR_ADDON_DIR/settings-default.xml $HDHR_ADDON_SETTINGS
fi
thaw|resume)
if [ -f "$LOCKFILE" ]; then
# driver started within Tvheadend/VDR
rm -f "$LOCKFILE"
fi
;;
mkdir -p /var/config
cat "$HDHR_ADDON_SETTINGS" | awk -F\" '{print $2"=\""$4"\""}' | sed '/^=/d' > /var/config/hdhomerun-addon.conf
. /var/config/hdhomerun-addon.conf
*) exit $NA
;;
esac
if [ "$SUSPEND_DRIVER" = "true" ]; then
LOCKDIR="/var/lock"
LOCKFILE="$LOCKDIR/hdhomerun"
case "$1" in
hibernate|suspend)
if [ -n "$(pidof userhdhomerun)" ]; then
progress "Shutting down HDHomeRun driver for suspending..."
mkdir -p "$LOCKDIR"
touch "$LOCKFILE"
killall -9 userhdhomerun
fi
;;
thaw|resume)
if [ -f "$LOCKFILE" ]; then
# driver started within Tvheadend/VDR
rm -f "$LOCKFILE"
fi
;;
*) exit $NA
;;
esac
else
progress "Suspend/resume of HDHomeRun driver not enabled..."
fi