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