From c12144afeaaf6a72715bf150a8a1e262c67bf665 Mon Sep 17 00:00:00 2001 From: vpeter4 Date: Fri, 21 Jun 2013 12:26:11 +0200 Subject: [PATCH] hdhomerun: improved start, suspend and resume --- .../addons/driver/hdhomerun/changelog.txt | 3 + .../hdhomerun/config/dvbhdhomerun.sample | 0 .../addons/driver/hdhomerun/icon/icon.png | Bin packages/addons/driver/hdhomerun/meta | 2 +- .../driver/hdhomerun/settings-default.xml | 3 + .../hdhomerun/source/bin/hdhomerun.start | 0 .../hdhomerun/source/bin/hdhomerun.stop | 0 .../hdhomerun/source/bin/userspace-driver.sh | 23 ++++++- .../addons/driver/hdhomerun/source/default.py | 0 .../resources/language/English/strings.xml | 4 +- .../source/resources/lib/functions.py | 0 .../hdhomerun/source/resources/lib/xmlpp.py | 0 .../hdhomerun/source/resources/settings.xml | 4 +- .../hdhomerun/source/sleep.d/hdhomerun.power | 56 +++++++++++------- 14 files changed, 70 insertions(+), 25 deletions(-) mode change 100644 => 100755 packages/addons/driver/hdhomerun/changelog.txt mode change 100644 => 100755 packages/addons/driver/hdhomerun/config/dvbhdhomerun.sample mode change 100644 => 100755 packages/addons/driver/hdhomerun/icon/icon.png mode change 100644 => 100755 packages/addons/driver/hdhomerun/meta mode change 100644 => 100755 packages/addons/driver/hdhomerun/settings-default.xml mode change 100644 => 100755 packages/addons/driver/hdhomerun/source/bin/hdhomerun.start mode change 100644 => 100755 packages/addons/driver/hdhomerun/source/bin/hdhomerun.stop mode change 100644 => 100755 packages/addons/driver/hdhomerun/source/bin/userspace-driver.sh mode change 100644 => 100755 packages/addons/driver/hdhomerun/source/default.py mode change 100644 => 100755 packages/addons/driver/hdhomerun/source/resources/language/English/strings.xml mode change 100644 => 100755 packages/addons/driver/hdhomerun/source/resources/lib/functions.py mode change 100644 => 100755 packages/addons/driver/hdhomerun/source/resources/lib/xmlpp.py mode change 100644 => 100755 packages/addons/driver/hdhomerun/source/resources/settings.xml mode change 100644 => 100755 packages/addons/driver/hdhomerun/source/sleep.d/hdhomerun.power diff --git a/packages/addons/driver/hdhomerun/changelog.txt b/packages/addons/driver/hdhomerun/changelog.txt old mode 100644 new mode 100755 index 89c36a01e1..c943d655a5 --- a/packages/addons/driver/hdhomerun/changelog.txt +++ b/packages/addons/driver/hdhomerun/changelog.txt @@ -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 diff --git a/packages/addons/driver/hdhomerun/config/dvbhdhomerun.sample b/packages/addons/driver/hdhomerun/config/dvbhdhomerun.sample old mode 100644 new mode 100755 diff --git a/packages/addons/driver/hdhomerun/icon/icon.png b/packages/addons/driver/hdhomerun/icon/icon.png old mode 100644 new mode 100755 diff --git a/packages/addons/driver/hdhomerun/meta b/packages/addons/driver/hdhomerun/meta old mode 100644 new mode 100755 index 7d47b8165b..a88e62bd81 --- a/packages/addons/driver/hdhomerun/meta +++ b/packages/addons/driver/hdhomerun/meta @@ -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/" diff --git a/packages/addons/driver/hdhomerun/settings-default.xml b/packages/addons/driver/hdhomerun/settings-default.xml old mode 100644 new mode 100755 index 240d6ac22e..3f9180a9fe --- a/packages/addons/driver/hdhomerun/settings-default.xml +++ b/packages/addons/driver/hdhomerun/settings-default.xml @@ -1,4 +1,7 @@ + + + diff --git a/packages/addons/driver/hdhomerun/source/bin/hdhomerun.start b/packages/addons/driver/hdhomerun/source/bin/hdhomerun.start old mode 100644 new mode 100755 diff --git a/packages/addons/driver/hdhomerun/source/bin/hdhomerun.stop b/packages/addons/driver/hdhomerun/source/bin/hdhomerun.stop old mode 100644 new mode 100755 diff --git a/packages/addons/driver/hdhomerun/source/bin/userspace-driver.sh b/packages/addons/driver/hdhomerun/source/bin/userspace-driver.sh old mode 100644 new mode 100755 index d929d5ebc4..3ecb021239 --- a/packages/addons/driver/hdhomerun/source/bin/userspace-driver.sh +++ b/packages/addons/driver/hdhomerun/source/bin/userspace-driver.sh @@ -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 diff --git a/packages/addons/driver/hdhomerun/source/default.py b/packages/addons/driver/hdhomerun/source/default.py old mode 100644 new mode 100755 diff --git a/packages/addons/driver/hdhomerun/source/resources/language/English/strings.xml b/packages/addons/driver/hdhomerun/source/resources/language/English/strings.xml old mode 100644 new mode 100755 index 9e9886759e..ab8488639d --- a/packages/addons/driver/hdhomerun/source/resources/language/English/strings.xml +++ b/packages/addons/driver/hdhomerun/source/resources/language/English/strings.xml @@ -3,7 +3,9 @@ General Pre wait time [sec] Post wait time [sec] - Enable libhdhomerun logging + Enable userhdhomerun logging + Enable libhdhomerun logging + Enable suspend/resume the driver Tuner settings Enable modifying settings diff --git a/packages/addons/driver/hdhomerun/source/resources/lib/functions.py b/packages/addons/driver/hdhomerun/source/resources/lib/functions.py old mode 100644 new mode 100755 diff --git a/packages/addons/driver/hdhomerun/source/resources/lib/xmlpp.py b/packages/addons/driver/hdhomerun/source/resources/lib/xmlpp.py old mode 100644 new mode 100755 diff --git a/packages/addons/driver/hdhomerun/source/resources/settings.xml b/packages/addons/driver/hdhomerun/source/resources/settings.xml old mode 100644 new mode 100755 index 873b1ef411..9312f7ea17 --- a/packages/addons/driver/hdhomerun/source/resources/settings.xml +++ b/packages/addons/driver/hdhomerun/source/resources/settings.xml @@ -4,7 +4,9 @@ - + + + diff --git a/packages/addons/driver/hdhomerun/source/sleep.d/hdhomerun.power b/packages/addons/driver/hdhomerun/source/sleep.d/hdhomerun.power old mode 100644 new mode 100755 index f3b08e6284..3d5fd278ba --- a/packages/addons/driver/hdhomerun/source/sleep.d/hdhomerun.power +++ b/packages/addons/driver/hdhomerun/source/sleep.d/hdhomerun.power @@ -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