diff --git a/packages/addons/driver/sundtek-mediatv/changelog.txt b/packages/addons/driver/sundtek-mediatv/changelog.txt index 9dbd332241..2ad4f8071a 100644 --- a/packages/addons/driver/sundtek-mediatv/changelog.txt +++ b/packages/addons/driver/sundtek-mediatv/changelog.txt @@ -1,3 +1,5 @@ +3.1.2 + new addon settings option to enable suspend/resume driver actions 3.1.1 rebuild for OpenELEC-3.2 3.0.6 diff --git a/packages/addons/driver/sundtek-mediatv/meta b/packages/addons/driver/sundtek-mediatv/meta index 3775a7ded8..eae1b84de6 100644 --- a/packages/addons/driver/sundtek-mediatv/meta +++ b/packages/addons/driver/sundtek-mediatv/meta @@ -20,7 +20,7 @@ PKG_NAME="sundtek-mediatv" PKG_VERSION="3.1" -PKG_REV="1" +PKG_REV="2" PKG_ARCH="any" PKG_LICENSE="nonfree" PKG_SITE="http://support.sundtek.com/" diff --git a/packages/addons/driver/sundtek-mediatv/settings-default.xml b/packages/addons/driver/sundtek-mediatv/settings-default.xml index dff044590f..7a2ddc571a 100644 --- a/packages/addons/driver/sundtek-mediatv/settings-default.xml +++ b/packages/addons/driver/sundtek-mediatv/settings-default.xml @@ -6,6 +6,7 @@ + diff --git a/packages/addons/driver/sundtek-mediatv/source/bin/userspace-driver.sh b/packages/addons/driver/sundtek-mediatv/source/bin/userspace-driver.sh index 6f27a90709..0c82fef011 100644 --- a/packages/addons/driver/sundtek-mediatv/source/bin/userspace-driver.sh +++ b/packages/addons/driver/sundtek-mediatv/source/bin/userspace-driver.sh @@ -22,6 +22,18 @@ . /etc/profile +# start locking mechanism - allows only one instance to be run at a time +SUNDTEK_LOCKFILE="/var/lock/userspace-driver-sundtek.lck" +SUNDTEK_LOCKFD=99 +# obtain an exclusive lock +exlock() { eval "exec $SUNDTEK_LOCKFD>\"$SUNDTEK_LOCKFILE\""; flock -x $SUNDTEK_LOCKFD; } +# drop a lock +unlock() { flock -u $SUNDTEK_LOCKFD; flock -xn $SUNDTEK_LOCKFD && rm -f "$SUNDTEK_LOCKFILE"; } +# end locking mechanism + +# exclusive lock +exlock + net_tuner_num_fix() { local num=$1 @@ -337,3 +349,6 @@ if [ -z "$(pidof mediasrv)" ]; then fi logger -t Sundtek "### Sundtek ready ###" + +# unlock the lock +unlock diff --git a/packages/addons/driver/sundtek-mediatv/source/resources/language/English/strings.xml b/packages/addons/driver/sundtek-mediatv/source/resources/language/English/strings.xml index b39dad0c87..79530eae49 100644 --- a/packages/addons/driver/sundtek-mediatv/source/resources/language/English/strings.xml +++ b/packages/addons/driver/sundtek-mediatv/source/resources/language/English/strings.xml @@ -8,6 +8,7 @@ Enable hardware PID filter Enable IR receiver Lowest adapter number (/dev/dvb/adapterX/) + Enable suspend/resume the driver Networking Share local tuner over network diff --git a/packages/addons/driver/sundtek-mediatv/source/resources/settings.xml b/packages/addons/driver/sundtek-mediatv/source/resources/settings.xml index f69589c854..919b142f08 100644 --- a/packages/addons/driver/sundtek-mediatv/source/resources/settings.xml +++ b/packages/addons/driver/sundtek-mediatv/source/resources/settings.xml @@ -9,6 +9,7 @@ + diff --git a/packages/addons/driver/sundtek-mediatv/source/sleep.d/sundtek-mediatv.power b/packages/addons/driver/sundtek-mediatv/source/sleep.d/sundtek-mediatv.power index 0167050dd9..8850339ae4 100644 --- a/packages/addons/driver/sundtek-mediatv/source/sleep.d/sundtek-mediatv.power +++ b/packages/addons/driver/sundtek-mediatv/source/sleep.d/sundtek-mediatv.power @@ -22,26 +22,42 @@ . /etc/profile -LOCKDIR="/var/lock/" -LOCKFILE="$LOCKDIR/sundtek-mediatv" +SUNDTEK_ADDON_DIR="$HOME/.xbmc/addons/driver.dvb.sundtek-mediatv" +SUNDTEK_ADDON_HOME="$HOME/.xbmc/userdata/addon_data/driver.dvb.sundtek-mediatv" +SUNDTEK_ADDON_SETTINGS="$SUNDTEK_ADDON_HOME/settings.xml" -case "$1" in - hibernate|suspend) - if [ -n "$(pidof mediasrv)" ]; then - progress "Shutting down Sundtek DVB driver for suspending..." - mkdir -p "$LOCKDIR" - touch "$LOCKFILE" - killall -9 mediasrv - fi - ;; +if [ ! -f "$SUNDTEK_ADDON_SETTINGS" ]; then + cp $SUNDTEK_ADDON_DIR/settings-default.xml $SUNDTEK_ADDON_SETTINGS +fi - thaw|resume) - if [ -f "$LOCKFILE" ]; then - # driver started within Tvheadend/VDR - rm -f "$LOCKFILE" - fi - ;; +mkdir -p /var/config +cat "$SUNDTEK_ADDON_SETTINGS" | awk -F\" '{print $2"=\""$4"\""}' | sed '/^=/d' > /var/config/sundtek-addon.conf +. /var/config/sundtek-addon.conf - *) exit $NA - ;; -esac +if [ "$SUSPEND_DRIVER" = "true" ]; then + LOCKDIR="/var/lock/" + LOCKFILE="$LOCKDIR/sundtek-mediatv" + + case "$1" in + hibernate|suspend) + if [ -n "$(pidof mediasrv)" ]; then + progress "Shutting down Sundtek DVB driver for suspending..." + mkdir -p "$LOCKDIR" + touch "$LOCKFILE" + killall -9 mediasrv + fi + ;; + + thaw|resume) + if [ -f "$LOCKFILE" ]; then + # driver started within Tvheadend/VDR + rm -f "$LOCKFILE" + fi + ;; + + *) exit $NA + ;; + esac +else + progress "Suspend/resume of Sundtek driver not enabled..." +fi