diff --git a/packages/addons/driver/sundtek-mediatv/changelog.txt b/packages/addons/driver/sundtek-mediatv/changelog.txt
index 4ddd18aa24..0f51099e6b 100644
--- a/packages/addons/driver/sundtek-mediatv/changelog.txt
+++ b/packages/addons/driver/sundtek-mediatv/changelog.txt
@@ -1,3 +1,6 @@
+4.3.3
+ addon transformed to service addon
+ new addon settings option to enable to check for new driver at boot
4.3.2
new addon settings option to enable to update driver from web with latest version
4.3.1
diff --git a/packages/addons/driver/sundtek-mediatv/package.mk b/packages/addons/driver/sundtek-mediatv/package.mk
index 51c1e7cd33..7f9bbe9d7f 100644
--- a/packages/addons/driver/sundtek-mediatv/package.mk
+++ b/packages/addons/driver/sundtek-mediatv/package.mk
@@ -18,7 +18,7 @@
PKG_NAME="sundtek-mediatv"
PKG_VERSION="4.3"
-PKG_REV="2"
+PKG_REV="3"
PKG_ARCH="any"
PKG_LICENSE="nonfree"
PKG_SITE="http://support.sundtek.com/"
@@ -29,7 +29,7 @@ PKG_SECTION="driver/dvb"
PKG_SHORTDESC="Sundtek USB Stick DVB userspace driver"
PKG_LONGDESC="Driver for Sundtek MediaTV Pro (DVB-C, DVB-T, AnalogTV, Composite, S-Video, FM-Radio USB Stick) and Sundtek SkyTV Ultimate (DVB-S/S2 USB)."
PKG_IS_ADDON="yes"
-PKG_ADDON_TYPE="xbmc.python.script"
+PKG_ADDON_TYPE="kodi.service"
PKG_AUTORECONF="no"
make_target() {
@@ -49,9 +49,8 @@ make_target() {
esac
wget -O installer.tar.gz $INSTALLER_URL
tar -xzf installer.tar.gz
- # we run this via wrapper
- mv opt/bin/mediaclient opt/bin/mediaclient.bin
- chmod 755 opt/bin/*
+
+ wget -O version.used http://sundtek.de/media/latest.phtml
}
makeinstall_target() {
@@ -64,4 +63,5 @@ addon() {
cp -P $PKG_DIR/settings-default.xml $ADDON_BUILD/$PKG_ADDON_ID/
cp -Pa $PKG_BUILD/opt/bin $ADDON_BUILD/$PKG_ADDON_ID/
cp -Pa $PKG_BUILD/opt/lib $ADDON_BUILD/$PKG_ADDON_ID/
+ cp $PKG_BUILD/version.used $ADDON_BUILD/$PKG_ADDON_ID/
}
diff --git a/packages/addons/driver/sundtek-mediatv/settings-default.xml b/packages/addons/driver/sundtek-mediatv/settings-default.xml
index e182036226..493cc87581 100644
--- a/packages/addons/driver/sundtek-mediatv/settings-default.xml
+++ b/packages/addons/driver/sundtek-mediatv/settings-default.xml
@@ -17,4 +17,5 @@
+
diff --git a/packages/addons/driver/sundtek-mediatv/source/bin/mediaclient b/packages/addons/driver/sundtek-mediatv/source/bin/mediaclient
deleted file mode 100755
index b0909a88e5..0000000000
--- a/packages/addons/driver/sundtek-mediatv/source/bin/mediaclient
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/bin/sh
-LD_PRELOAD=/storage/.xbmc/addons/driver.dvb.sundtek-mediatv/lib/libmediaclient.so exec mediaclient.bin "$@"
diff --git a/packages/addons/driver/sundtek-mediatv/source/bin/sundtek-mediatv.start b/packages/addons/driver/sundtek-mediatv/source/bin/sundtek-mediatv.start
new file mode 100644
index 0000000000..457c43c3cc
--- /dev/null
+++ b/packages/addons/driver/sundtek-mediatv/source/bin/sundtek-mediatv.start
@@ -0,0 +1,247 @@
+#!/bin/sh
+
+################################################################################
+# This file is part of OpenELEC - http://www.openelec.tv
+# Copyright (C) 2009-2013 Stephan Raue (stephan@openelec.tv)
+#
+# OpenELEC is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# OpenELEC is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with OpenELEC. If not, see .
+################################################################################
+
+. /etc/profile
+
+net_tuner_num_fix() {
+ local num=$1
+
+ [ -z "$num" ] && num=1
+ num=$(( $num *1 ))
+ [ $num -lt 1 ] && num=1
+ num=$(( $num -1 ))
+ echo $num
+}
+
+SUNDTEK_ADDON_DIR="$HOME/.kodi/addons/driver.dvb.sundtek-mediatv"
+SUNDTEK_ADDON_HOME="$HOME/.kodi/userdata/addon_data/driver.dvb.sundtek-mediatv"
+SUNDTEK_ADDON_SETTINGS="$SUNDTEK_ADDON_HOME/settings.xml"
+
+mkdir -p $SUNDTEK_ADDON_HOME
+
+if [ ! -f "$SUNDTEK_ADDON_HOME/sundtek.conf" ]; then
+ cp $SUNDTEK_ADDON_DIR/config/* $SUNDTEK_ADDON_HOME/
+else
+ # in case of missing entries in addon home's sundtek.conf
+ entry_set="$(grep use_hwpidfilter $SUNDTEK_ADDON_HOME/sundtek.conf 2>/dev/null)"
+ if [ -z "$entry_set" ]; then
+ sed -i 's|^device_attach=.*|# device_attach not used anymore\n\n# enable HW PID filter\nuse_hwpidfilter=off\n\n# enable listening on network\nenablenetwork=off|g' $SUNDTEK_ADDON_HOME/sundtek.conf
+ sed -i 's|^#first_adapter=.*|first_adapter=0|g' $SUNDTEK_ADDON_HOME/sundtek.conf
+
+ sed -i 's|.*network tuner IP address (OpenELEC specific).*||g' $SUNDTEK_ADDON_HOME/sundtek.conf
+ sed -i 's|.*network_tuner_ip=.*||g' $SUNDTEK_ADDON_HOME/sundtek.conf
+ fi
+fi
+
+if [ ! -f "$SUNDTEK_ADDON_SETTINGS" ]; then
+ cp $SUNDTEK_ADDON_DIR/settings-default.xml $SUNDTEK_ADDON_SETTINGS
+fi
+
+[ ! -f $SUNDTEK_ADDON_HOME/rc_key_enter.map ] && mv $SUNDTEK_ADDON_HOME/rc_key_enter $SUNDTEK_ADDON_HOME/rc_key_enter.map
+[ ! -f $SUNDTEK_ADDON_HOME/rc_key_ok.map ] && mv $SUNDTEK_ADDON_HOME/rc_key_ok $SUNDTEK_ADDON_HOME/rc_key_ok.map
+
+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
+
+# check if there is new driver on web
+if [ "$CHECK_BOOT" = "true" ]; then
+ if [ ! -f /var/run/sundtek.checked ]; then
+ # only once after boot
+ touch /var/run/sundtek.checked
+
+(
+ # wait some time before checking
+ sleep 20
+ cd $SUNDTEK_ADDON_DIR
+
+ wget -O version.latest http://sundtek.de/media/latest.phtml
+
+ version_used=$(cat version.used)
+ version_latest=$(cat version.latest)
+ if [ "$version_used" != "$version_latest" ]; then
+ # new version exist
+ kodi-send -a "Notification(Sundtek, \"New driver version exist, update manually\", 7000, $SUNDTEK_ADDON_DIR/icon.png)"
+ fi
+)&
+ fi
+fi
+
+if [ -z "$(pidof mediasrv)" ]; then
+ rm -f /var/log/mediasrv.log
+ rm -f /var/log/mediaclient.log
+
+ SUNDTEK_CONF_TMP=/tmp/sundtek.conf
+ cp $SUNDTEK_ADDON_HOME/sundtek.conf $SUNDTEK_CONF_TMP
+
+ [ -z "$LOWEST_ADAPTER_NUM" ] && LOWEST_ADAPTER_NUM=0
+ sed -i "s|^first_adapter=.*|first_adapter=$LOWEST_ADAPTER_NUM|g" $SUNDTEK_CONF_TMP
+
+ # enable HW PID filter
+ if [ "$ENABLE_HW_PID_FILTER" = "true" ]; then
+ sed -i 's|^use_hwpidfilter=.*|use_hwpidfilter=on|g' $SUNDTEK_CONF_TMP
+ else
+ sed -i 's|^use_hwpidfilter=.*|use_hwpidfilter=off|g' $SUNDTEK_CONF_TMP
+ fi
+
+ # enable IR receiver
+ if [ "$ENABLE_IR_RECEIVER" = "true" ]; then
+ sed -i 's|^ir_disabled=.*|ir_disabled=0|g' $SUNDTEK_CONF_TMP
+ else
+ sed -i 's|^ir_disabled=.*|ir_disabled=1|g' $SUNDTEK_CONF_TMP
+ fi
+
+ if [ "$ALLOW_NET_USE" = "true" ]; then
+ sed -i 's|^enablenetwork=.*|enablenetwork=on|g' $SUNDTEK_CONF_TMP
+ else
+ sed -i 's|^enablenetwork=.*|enablenetwork=off|g' $SUNDTEK_CONF_TMP
+ fi
+
+ [ "$DEVICE1_IP" = "0.0.0.0" ] && DEVICE1_IP=""
+ [ "$DEVICE2_IP" = "0.0.0.0" ] && DEVICE2_IP=""
+ [ "$DEVICE3_IP" = "0.0.0.0" ] && DEVICE3_IP=""
+ [ "$DEVICE4_IP" = "0.0.0.0" ] && DEVICE4_IP=""
+ [ "$DEVICE5_IP" = "0.0.0.0" ] && DEVICE5_IP=""
+ DEVICE1_NUM=$(net_tuner_num_fix $DEVICE1_NUM)
+ DEVICE2_NUM=$(net_tuner_num_fix $DEVICE2_NUM)
+ DEVICE3_NUM=$(net_tuner_num_fix $DEVICE3_NUM)
+ DEVICE4_NUM=$(net_tuner_num_fix $DEVICE4_NUM)
+ DEVICE5_NUM=$(net_tuner_num_fix $DEVICE5_NUM)
+
+ if [ "$USE_NET_TUNERS" = "true" -a -n "$DEVICE1_IP" ]; then
+ # delete all network tuner entries
+ awk '/^\[NETWORK\]/{flag=1; next} /^device=|^#|^$/{if (flag==1) next} /.*/{flag=0; print}' $SUNDTEK_CONF_TMP >${SUNDTEK_CONF_TMP}-net
+ mv ${SUNDTEK_CONF_TMP}-net $SUNDTEK_CONF_TMP
+ echo "" >>$SUNDTEK_CONF_TMP
+ # remove empty lines at the end of file
+ sed -i -e ':a' -e '/^\n*$/{$d;N;};/\n$/ba' $SUNDTEK_CONF_TMP
+ # add entries
+ echo -e "\n[NETWORK]" >>$SUNDTEK_CONF_TMP
+ for dev in $(seq 0 $DEVICE1_NUM); do
+ echo "device=$DEVICE1_IP:$dev" >>$SUNDTEK_CONF_TMP
+ done
+ if [ -n "$DEVICE2_IP" ]; then
+ for dev in $(seq 0 $DEVICE2_NUM); do
+ echo "device=$DEVICE2_IP:$dev" >>$SUNDTEK_CONF_TMP
+ done
+ if [ -n "$DEVICE3_IP" ]; then
+ for dev in $(seq 0 $DEVICE3_NUM); do
+ echo "device=$DEVICE3_IP:$dev" >>$SUNDTEK_CONF_TMP
+ done
+ if [ -n "$DEVICE4_IP" ]; then
+ for dev in $(seq 0 $DEVICE4_NUM); do
+ echo "device=$DEVICE4_IP:$dev" >>$SUNDTEK_CONF_TMP
+ done
+ if [ -n "$DEVICE5_IP" ]; then
+ for dev in $(seq 0 $DEVICE5_NUM); do
+ echo "device=$DEVICE5_IP:$dev" >>$SUNDTEK_CONF_TMP
+ done
+ fi
+ fi
+ fi
+ fi
+ else
+ # delete all network tuner entries
+ awk '/^\[NETWORK\]/{flag=1; next} /^device=|^#|^$/{if (flag==1) next} /.*/{flag=0; print}' $SUNDTEK_CONF_TMP >${SUNDTEK_CONF_TMP}-net
+ mv ${SUNDTEK_CONF_TMP}-net $SUNDTEK_CONF_TMP
+ echo "" >>$SUNDTEK_CONF_TMP
+ # remove empty lines at the end of file
+ sed -i -e ':a' -e '/^\n*$/{$d;N;};/\n$/ba' $SUNDTEK_CONF_TMP
+ fi
+
+ if [ "$ENABLE_TUNER_TYPES" = "true" ]; then
+ # get tuner serial numbers
+ SERIALS=$(cat /var/config/sundtek-addon.conf | sed -n 's|^ATTACHED_TUNER_\(.*\)_DVBMODE=.*|\1|gp' | sort | uniq)
+ . /var/config/sundtek-addon.conf
+
+ for SERIAL in $SERIALS; do
+ DVBMODE=$(eval echo \$ATTACHED_TUNER_${SERIAL}_DVBMODE)
+ IRPROT=$(eval echo \$ATTACHED_TUNER_${SERIAL}_IRPROT)
+ KEYMAP=$(eval echo \$ATTACHED_TUNER_${SERIAL}_KEYMAP)
+
+ if [ "$DVBMODE" = "DVB-T" ]; then
+ # only set DVB-T because default is DVB-C (and DVB-S is not set either)
+ DVBMODE="DVBT"
+ else
+ DVBMODE=""
+ fi
+
+ [ "$IRPROT" = "NEC" -o "$IRPROT" = "auto" ] && IRPROT=""
+
+ [ ! -f $KEYMAP ] && KEYMAP=""
+
+ # remove setttings for this tuner
+ awk -v val="[$SERIAL]" '$0 == val {flag=1; next} /^ir_protocol=|^rcmap=|^initial_dvb_mode=|^#|^$/{if (flag==1) next} /.*/{flag=0; print}' $SUNDTEK_CONF_TMP >${SUNDTEK_CONF_TMP}-types
+ mv ${SUNDTEK_CONF_TMP}-types $SUNDTEK_CONF_TMP
+ echo "" >>$SUNDTEK_CONF_TMP
+ # remove empty lines at the end of file
+ sed -i -e ':a' -e '/^\n*$/{$d;N;};/\n$/ba' $SUNDTEK_CONF_TMP
+
+ ADDNEW=true
+ if [ -n "$DVBMODE" ]; then
+ [ $ADDNEW = true ] && ADDNEW=false && echo -e "\n[$SERIAL]" >>$SUNDTEK_CONF_TMP
+ echo "initial_dvb_mode=$DVBMODE" >>$SUNDTEK_CONF_TMP
+ fi
+ if [ -n "$IRPROT" ]; then
+ [ $ADDNEW = true ] && ADDNEW=false && echo -e "\n[$SERIAL]" >>$SUNDTEK_CONF_TMP
+ echo "ir_protocol=$IRPROT" >>$SUNDTEK_CONF_TMP
+ fi
+ if [ -n "$KEYMAP" ]; then
+ [ $ADDNEW = true ] && ADDNEW=false && echo -e "\n[$SERIAL]" >>$SUNDTEK_CONF_TMP
+ echo "rcmap=$KEYMAP" >>$SUNDTEK_CONF_TMP
+ fi
+
+ echo "" >>$SUNDTEK_CONF_TMP
+ done
+ fi
+
+ md5_1=$(md5sum -b $SUNDTEK_CONF_TMP | awk '{print $1}')
+ md5_2=$(md5sum -b $SUNDTEK_ADDON_HOME/sundtek.conf | awk '{print $1}')
+ if [ "$md5_1" != "$md5_2" ]; then
+ # file changed - copy to addon home
+ cp $SUNDTEK_CONF_TMP $SUNDTEK_ADDON_HOME/sundtek.conf
+ fi
+
+ chmod +x $SUNDTEK_ADDON_DIR/bin/*
+ mediasrv --wait-for-devices -p $SUNDTEK_ADDON_DIR/bin -c $SUNDTEK_ADDON_HOME/sundtek.conf -d
+
+ # wait few seconds
+ [ -z "$SETTLE_TIME" ] && SETTLE_TIME=0
+ SETTLE_TIME=$(( $SETTLE_TIME *1 ))
+ if [ $SETTLE_TIME -gt 0 ]; then
+ logger -t Sundtek "### Settle for $SETTLE_TIME sec ###"
+ sleep $SETTLE_TIME
+ fi
+
+ if [ "$RUN_USER_SCRIPT" = "true" -a -f "$SUNDTEK_ADDON_HOME/userscript.sh" ]; then
+ logger -t Sundtek "### Running user script $SUNDTEK_ADDON_HOME/userscript.sh ###"
+ cat $SUNDTEK_ADDON_HOME/userscript.sh | dos2unix >/var/run/sundtek-userscript.sh
+ sh /var/run/sundtek-userscript.sh
+ fi
+
+ # save adapter serial number
+ serial_number_old=$(cat $SUNDTEK_ADDON_HOME/adapters.txt 2>/dev/null)
+ serial_number_new=$(mediaclient -e | awk '/device / {print $0} /SERIAL/ {id=1} /ID:/ {if (id==1) print $2}')
+ if [ "$serial_number_old" != "$serial_number_new" ]; then
+ echo "$serial_number_new" >$SUNDTEK_ADDON_HOME/adapters.txt
+ fi
+fi
+
+logger -t Sundtek "### Sundtek ready ###"
diff --git a/packages/addons/driver/sundtek-mediatv/source/bin/sundtek-mediatv.stop b/packages/addons/driver/sundtek-mediatv/source/bin/sundtek-mediatv.stop
new file mode 100644
index 0000000000..7c88bbf23e
--- /dev/null
+++ b/packages/addons/driver/sundtek-mediatv/source/bin/sundtek-mediatv.stop
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+################################################################################
+# This file is part of OpenELEC - http://www.openelec.tv
+# Copyright (C) 2009-2013 Stephan Raue (stephan@openelec.tv)
+#
+# OpenELEC is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# OpenELEC is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with OpenELEC. If not, see .
+################################################################################
+
+. /etc/profile
+
+ADDON_DIR="$HOME/.kodi/addons/driver.dvb.sundtek-mediatv"
+
+logger -t Sundtek "### Sundtek driver stop ###"
+mediaclient --shutdown
diff --git a/packages/addons/driver/sundtek-mediatv/source/bin/update-driver.sh b/packages/addons/driver/sundtek-mediatv/source/bin/sundtek-update-driver.sh
similarity index 58%
rename from packages/addons/driver/sundtek-mediatv/source/bin/update-driver.sh
rename to packages/addons/driver/sundtek-mediatv/source/bin/sundtek-update-driver.sh
index 0e41b9917a..c500f89b1a 100644
--- a/packages/addons/driver/sundtek-mediatv/source/bin/update-driver.sh
+++ b/packages/addons/driver/sundtek-mediatv/source/bin/sundtek-update-driver.sh
@@ -20,18 +20,27 @@
. /etc/profile
-SUNDTEK_ADDON_DIR="$HOME/.xbmc/addons/driver.dvb.sundtek-mediatv"
-SUNDTEK_ADDON_HOME="$HOME/.xbmc/userdata/addon_data/driver.dvb.sundtek-mediatv"
+SUNDTEK_ADDON_DIR="$HOME/.kodi/addons/driver.dvb.sundtek-mediatv"
+SUNDTEK_ADDON_HOME="$HOME/.kodi/userdata/addon_data/driver.dvb.sundtek-mediatv"
SUNDTEK_ADDON_SETTINGS="$SUNDTEK_ADDON_HOME/settings.xml"
logger -t Sundtek "### Starting updating driver ###"
-xbmc-send -a "Notification(Sundtek, Starting updating driver, 2000)"
+kodi-send -a "Notification(Sundtek, Starting updating driver, 2000, $SUNDTEK_ADDON_DIR/icon.png)"
cd "$SUNDTEK_ADDON_DIR"
rm -fr tmp
mkdir tmp
cd tmp
+wget -O ../version.used http://sundtek.de/media/latest.phtml
+if [ $? -ne 0 ]; then
+ logger -t Sundtek "### Can't get latest version ###"
+ kodi-send -a "Notification(Sundtek, Can't get latest version, 8000, $SUNDTEK_ADDON_DIR/icon.png)"
+ cd ..
+ rm -fr tmp/
+ exit 1
+fi
+
ARCH=$(sed -n 's|.*\.\([^-]*\)-.*|\1|p' /etc/release | tr -d '\n')
if [ "$ARCH" = "x86_64" ]; then
INSTALLER_URL="http://sundtek.de/media/netinst/64bit/installer.tar.gz"
@@ -41,32 +50,36 @@ elif [ "$ARCH" = "arm" ]; then
INSTALLER_URL="http://sundtek.de/media/netinst/armsysvhf/installer.tar.gz"
else
logger -t Sundtek "### Unsupported architecture ###"
- xbmc-send -a "Notification(Sundtek, Unsupported architecture, 5000)"
+ kodi-send -a "Notification(Sundtek, Unsupported architecture, 8000, $SUNDTEK_ADDON_DIR/icon.png)"
cd ..
rm -fr tmp
- exit 1
-fi
-
-logger -t Sundtek "### Downloading driver archive for $ARCH ###"
-xbmc-send -a "Notification(Sundtek, Downloading driver archive for $ARCH, 2000)"
-wget -O installer.tar.gz $INSTALLER_URL
-logger -t Sundtek "### Extracting archive ###"
-xbmc-send -a "Notification(Sundtek, Extracting archive, 2000)"
-tar -xzf installer.tar.gz
-if [ $? -ne 0 ]; then
- logger -t Sundtek "### Archive damaged ###"
- xbmc-send -a "Notification(Sundtek, Archive damaged, 5000)"
- cd ..
- rm -fr tmp/
exit 2
fi
-killall -9 mediaclient.bin &>/dev/null
-killall -9 mediaclient &>/dev/null
-killall -9 mediasrv &>/dev/null
+logger -t Sundtek "### Downloading driver archive for $ARCH ###"
+kodi-send -a "Notification(Sundtek, Downloading driver archive for $ARCH, 2000, $SUNDTEK_ADDON_DIR/icon.png)"
+wget -O installer.tar.gz $INSTALLER_URL
+if [ $? -ne 0 ]; then
+ logger -t Sundtek "### Archive damaged ###"
+ kodi-send -a "Notification(Sundtek, Download failed, 8000, $SUNDTEK_ADDON_DIR/icon.png)"
+ cd ..
+ rm -fr tmp/
+ exit 3
+fi
+logger -t Sundtek "### Extracting archive ###"
+kodi-send -a "Notification(Sundtek, Extracting archive, 2000, $SUNDTEK_ADDON_DIR/icon.png)"
+tar -xzf installer.tar.gz
+if [ $? -ne 0 ]; then
+ logger -t Sundtek "### Archive damaged ###"
+ kodi-send -a "Notification(Sundtek, Archive damaged, 8000, $SUNDTEK_ADDON_DIR/icon.png)"
+ cd ..
+ rm -fr tmp/
+ exit 4
+fi
+
+killall -9 mediaclient &>/dev/null
+killall -9 mediasrv &>/dev/null
-# we run this via wrapper
-mv opt/bin/mediaclient opt/bin/mediaclient.bin
chmod 755 opt/bin/*
cp -Pa opt/bin/* ../bin/
@@ -75,7 +88,7 @@ cp -Pa opt/lib/* ../lib/
cd ..
rm -fr tmp
-logger -t Sundtek "### Driver update finished, please reboot ###"
-xbmc-send -a "Notification(Sundtek, Driver update finished, 2000)"
-xbmc-send -a "Notification(Sundtek, Please reboot, 5000)"
+logger -t Sundtek "### Driver update finished ###"
+kodi-send -a "Notification(Sundtek, Driver update finished, 5000, $SUNDTEK_ADDON_DIR/icon.png)"
+kodi-send -a "Notification(Sundtek, Please reboot, 5000, $SUNDTEK_ADDON_DIR/icon.png)"
exit 0
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 87155c51eb..23334ea890 100644
--- a/packages/addons/driver/sundtek-mediatv/source/bin/userspace-driver.sh
+++ b/packages/addons/driver/sundtek-mediatv/source/bin/userspace-driver.sh
@@ -20,223 +20,11 @@
. /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
+SUNDTEK_ADDON_DIR="$HOME/.kodi/addons/driver.dvb.sundtek-mediatv"
-# exclusive lock
-exlock
-
-net_tuner_num_fix() {
- local num=$1
-
- [ -z "$num" ] && num=1
- num=$(( $num *1 ))
- [ $num -lt 1 ] && num=1
- num=$(( $num -1 ))
- echo $num
-}
-
-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"
-
-mkdir -p $SUNDTEK_ADDON_HOME
-
-if [ ! -f "$SUNDTEK_ADDON_HOME/sundtek.conf" ]; then
- cp $SUNDTEK_ADDON_DIR/config/* $SUNDTEK_ADDON_HOME/
+if [ -f $SUNDTEK_ADDON_DIR/lib/libmediaclient.so ]; then
+ logger -t Sundtek "### Preloading library ###"
+ export LD_PRELOAD=$SUNDTEK_ADDON_DIR/lib/libmediaclient.so
else
- # in case of missing entries in addon home's sundtek.conf
- entry_set="$(grep use_hwpidfilter $SUNDTEK_ADDON_HOME/sundtek.conf 2>/dev/null)"
- if [ -z "$entry_set" ]; then
- sed -i 's|^device_attach=.*|# device_attach not used anymore\n\n# enable HW PID filter\nuse_hwpidfilter=off\n\n# enable listening on network\nenablenetwork=off|g' $SUNDTEK_ADDON_HOME/sundtek.conf
- sed -i 's|^#first_adapter=.*|first_adapter=0|g' $SUNDTEK_ADDON_HOME/sundtek.conf
-
- sed -i 's|.*network tuner IP address (OpenELEC specific).*||g' $SUNDTEK_ADDON_HOME/sundtek.conf
- sed -i 's|.*network_tuner_ip=.*||g' $SUNDTEK_ADDON_HOME/sundtek.conf
- fi
+ logger -t Sundtek "### Preloading library doesn't exist ###"
fi
-
-if [ ! -f "$SUNDTEK_ADDON_SETTINGS" ]; then
- cp $SUNDTEK_ADDON_DIR/settings-default.xml $SUNDTEK_ADDON_SETTINGS
-fi
-
-[ ! -f $SUNDTEK_ADDON_HOME/rc_key_enter.map ] && mv $SUNDTEK_ADDON_HOME/rc_key_enter $SUNDTEK_ADDON_HOME/rc_key_enter.map
-[ ! -f $SUNDTEK_ADDON_HOME/rc_key_ok.map ] && mv $SUNDTEK_ADDON_HOME/rc_key_ok $SUNDTEK_ADDON_HOME/rc_key_ok.map
-
-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
-
-export LD_PRELOAD=$SUNDTEK_ADDON_DIR/lib/libmediaclient.so
-
-if [ -z "$(pidof mediasrv)" ]; then
- rm -f /var/log/mediasrv.log
- rm -f /var/log/mediaclient.log
-
- SUNDTEK_CONF_TMP=/tmp/sundtek.conf
- cp $SUNDTEK_ADDON_HOME/sundtek.conf $SUNDTEK_CONF_TMP
-
- [ -z "$LOWEST_ADAPTER_NUM" ] && LOWEST_ADAPTER_NUM=0
- sed -i "s|^first_adapter=.*|first_adapter=$LOWEST_ADAPTER_NUM|g" $SUNDTEK_CONF_TMP
-
- # enable HW PID filter
- if [ "$ENABLE_HW_PID_FILTER" = "true" ]; then
- sed -i 's|^use_hwpidfilter=.*|use_hwpidfilter=on|g' $SUNDTEK_CONF_TMP
- else
- sed -i 's|^use_hwpidfilter=.*|use_hwpidfilter=off|g' $SUNDTEK_CONF_TMP
- fi
-
- # enable IR receiver
- if [ "$ENABLE_IR_RECEIVER" = "true" ]; then
- sed -i 's|^ir_disabled=.*|ir_disabled=0|g' $SUNDTEK_CONF_TMP
- else
- sed -i 's|^ir_disabled=.*|ir_disabled=1|g' $SUNDTEK_CONF_TMP
- fi
-
- if [ "$ALLOW_NET_USE" = "true" ]; then
- sed -i 's|^enablenetwork=.*|enablenetwork=on|g' $SUNDTEK_CONF_TMP
- else
- sed -i 's|^enablenetwork=.*|enablenetwork=off|g' $SUNDTEK_CONF_TMP
- fi
-
- [ "$DEVICE1_IP" = "0.0.0.0" ] && DEVICE1_IP=""
- [ "$DEVICE2_IP" = "0.0.0.0" ] && DEVICE2_IP=""
- [ "$DEVICE3_IP" = "0.0.0.0" ] && DEVICE3_IP=""
- [ "$DEVICE4_IP" = "0.0.0.0" ] && DEVICE4_IP=""
- [ "$DEVICE5_IP" = "0.0.0.0" ] && DEVICE5_IP=""
- DEVICE1_NUM=$(net_tuner_num_fix $DEVICE1_NUM)
- DEVICE2_NUM=$(net_tuner_num_fix $DEVICE2_NUM)
- DEVICE3_NUM=$(net_tuner_num_fix $DEVICE3_NUM)
- DEVICE4_NUM=$(net_tuner_num_fix $DEVICE4_NUM)
- DEVICE5_NUM=$(net_tuner_num_fix $DEVICE5_NUM)
-
- if [ "$USE_NET_TUNERS" = "true" -a -n "$DEVICE1_IP" ]; then
- # delete all network tuner entries
- awk '/^\[NETWORK\]/{flag=1; next} /^device=|^#|^$/{if (flag==1) next} /.*/{flag=0; print}' $SUNDTEK_CONF_TMP >${SUNDTEK_CONF_TMP}-net
- mv ${SUNDTEK_CONF_TMP}-net $SUNDTEK_CONF_TMP
- echo "" >>$SUNDTEK_CONF_TMP
- # remove empty lines at the end of file
- sed -i -e ':a' -e '/^\n*$/{$d;N;};/\n$/ba' $SUNDTEK_CONF_TMP
- # add entries
- echo -e "\n[NETWORK]" >>$SUNDTEK_CONF_TMP
- for dev in $(seq 0 $DEVICE1_NUM); do
- echo "device=$DEVICE1_IP:$dev" >>$SUNDTEK_CONF_TMP
- done
- if [ -n "$DEVICE2_IP" ]; then
- for dev in $(seq 0 $DEVICE2_NUM); do
- echo "device=$DEVICE2_IP:$dev" >>$SUNDTEK_CONF_TMP
- done
- if [ -n "$DEVICE3_IP" ]; then
- for dev in $(seq 0 $DEVICE3_NUM); do
- echo "device=$DEVICE3_IP:$dev" >>$SUNDTEK_CONF_TMP
- done
- if [ -n "$DEVICE4_IP" ]; then
- for dev in $(seq 0 $DEVICE4_NUM); do
- echo "device=$DEVICE4_IP:$dev" >>$SUNDTEK_CONF_TMP
- done
- if [ -n "$DEVICE5_IP" ]; then
- for dev in $(seq 0 $DEVICE5_NUM); do
- echo "device=$DEVICE5_IP:$dev" >>$SUNDTEK_CONF_TMP
- done
- fi
- fi
- fi
- fi
- else
- # delete all network tuner entries
- awk '/^\[NETWORK\]/{flag=1; next} /^device=|^#|^$/{if (flag==1) next} /.*/{flag=0; print}' $SUNDTEK_CONF_TMP >${SUNDTEK_CONF_TMP}-net
- mv ${SUNDTEK_CONF_TMP}-net $SUNDTEK_CONF_TMP
- echo "" >>$SUNDTEK_CONF_TMP
- # remove empty lines at the end of file
- sed -i -e ':a' -e '/^\n*$/{$d;N;};/\n$/ba' $SUNDTEK_CONF_TMP
- fi
-
- if [ "$ENABLE_TUNER_TYPES" = "true" ]; then
- # get tuner serial numbers
- SERIALS=$(cat /var/config/sundtek-addon.conf | sed -n 's|^ATTACHED_TUNER_\(.*\)_DVBMODE=.*|\1|gp' | sort | uniq)
- . /var/config/sundtek-addon.conf
-
- for SERIAL in $SERIALS; do
- DVBMODE=$(eval echo \$ATTACHED_TUNER_${SERIAL}_DVBMODE)
- IRPROT=$(eval echo \$ATTACHED_TUNER_${SERIAL}_IRPROT)
- KEYMAP=$(eval echo \$ATTACHED_TUNER_${SERIAL}_KEYMAP)
-
- if [ "$DVBMODE" = "DVB-T" ]; then
- # only set DVB-T because default is DVB-C (and DVB-S is not set either)
- DVBMODE="DVBT"
- else
- DVBMODE=""
- fi
-
- [ "$IRPROT" = "NEC" -o "$IRPROT" = "auto" ] && IRPROT=""
-
- [ ! -f $KEYMAP ] && KEYMAP=""
-
- # remove setttings for this tuner
- awk -v val="[$SERIAL]" '$0 == val {flag=1; next} /^ir_protocol=|^rcmap=|^initial_dvb_mode=|^#|^$/{if (flag==1) next} /.*/{flag=0; print}' $SUNDTEK_CONF_TMP >${SUNDTEK_CONF_TMP}-types
- mv ${SUNDTEK_CONF_TMP}-types $SUNDTEK_CONF_TMP
- echo "" >>$SUNDTEK_CONF_TMP
- # remove empty lines at the end of file
- sed -i -e ':a' -e '/^\n*$/{$d;N;};/\n$/ba' $SUNDTEK_CONF_TMP
-
- ADDNEW=true
- if [ -n "$DVBMODE" ]; then
- [ $ADDNEW = true ] && ADDNEW=false && echo -e "\n[$SERIAL]" >>$SUNDTEK_CONF_TMP
- echo "initial_dvb_mode=$DVBMODE" >>$SUNDTEK_CONF_TMP
- fi
- if [ -n "$IRPROT" ]; then
- [ $ADDNEW = true ] && ADDNEW=false && echo -e "\n[$SERIAL]" >>$SUNDTEK_CONF_TMP
- echo "ir_protocol=$IRPROT" >>$SUNDTEK_CONF_TMP
- fi
- if [ -n "$KEYMAP" ]; then
- [ $ADDNEW = true ] && ADDNEW=false && echo -e "\n[$SERIAL]" >>$SUNDTEK_CONF_TMP
- echo "rcmap=$KEYMAP" >>$SUNDTEK_CONF_TMP
- fi
-
- echo "" >>$SUNDTEK_CONF_TMP
- done
- fi
-
- md5_1=$(md5sum -b $SUNDTEK_CONF_TMP | awk '{print $1}')
- md5_2=$(md5sum -b $SUNDTEK_ADDON_HOME/sundtek.conf | awk '{print $1}')
- if [ "$md5_1" != "$md5_2" ]; then
- # file changed - copy to addon home
- cp $SUNDTEK_CONF_TMP $SUNDTEK_ADDON_HOME/sundtek.conf
- fi
-
- mediasrv --wait-for-devices -p $SUNDTEK_ADDON_DIR/bin -c $SUNDTEK_ADDON_HOME/sundtek.conf -d
-
- # wait few seconds
- [ -z "$SETTLE_TIME" ] && SETTLE_TIME=0
- SETTLE_TIME=$(( $SETTLE_TIME *1 ))
- if [ $SETTLE_TIME -gt 0 ]; then
- logger -t Sundtek "### Settle for $SETTLE_TIME sec ###"
- sleep $SETTLE_TIME
- fi
-
- if [ "$RUN_USER_SCRIPT" = "true" -a -f "$SUNDTEK_ADDON_HOME/userscript.sh" ]; then
- logger -t Sundtek "### Running user script $SUNDTEK_ADDON_HOME/userscript.sh ###"
- cat $SUNDTEK_ADDON_HOME/userscript.sh | dos2unix >/var/run/sundtek-userscript.sh
- sh /var/run/sundtek-userscript.sh
- fi
-(
- # save adapter serial number in background
- sleep 5
- serial_number_old=$(cat $SUNDTEK_ADDON_HOME/adapters.txt 2>/dev/null)
- serial_number_new=$(mediaclient.bin -e | awk '/device / {print $0} /ID:/ {print $2}')
- if [ "$serial_number_old" != "$serial_number_new" ]; then
- echo "$serial_number_new" >$SUNDTEK_ADDON_HOME/adapters.txt
- fi
-)&
-fi
-
-logger -t Sundtek "### Sundtek ready ###"
-
-# unlock the lock
-unlock
diff --git a/packages/addons/driver/sundtek-mediatv/source/default.py b/packages/addons/driver/sundtek-mediatv/source/default.py
index 672afd3bad..c466f0415a 100644
--- a/packages/addons/driver/sundtek-mediatv/source/default.py
+++ b/packages/addons/driver/sundtek-mediatv/source/default.py
@@ -26,18 +26,18 @@ __cwd__ = __settings__.getAddonInfo('path')
__resources_lib__ = xbmc.translatePath(os.path.join(__cwd__, 'resources', 'lib'))
__settings_xml__ = xbmc.translatePath(os.path.join(__cwd__, 'resources', 'settings.xml'))
-__mediaclient__ = xbmc.translatePath(os.path.join(__cwd__, 'bin', 'mediaclient.bin'))
-__ld_preload__ = xbmc.translatePath(os.path.join(__cwd__, 'lib', 'libmediaclient.so'))
-__mediaclient_e__ = 'LD_PRELOAD=' + __ld_preload__ + ' ' + __mediaclient__ + ' -e'
-__update_sh__ = xbmc.translatePath(os.path.join(__cwd__, 'bin', 'update-driver.sh'))
+__mediaclient__ = xbmc.translatePath(os.path.join(__cwd__, 'bin', 'mediaclient'))
+__mediaclient_e__ = __mediaclient__ + ' -e'
+__update_sh__ = xbmc.translatePath(os.path.join(__cwd__, 'bin', 'sundtek-update-driver.sh'))
-if __name__ == "__main__" and len(sys.argv) == 2 and sys.argv[1] == 'refresh_tuners':
- sys.path.append(__resources_lib__)
- from functions import refresh_sundtek_tuners
- refresh_sundtek_tuners(__settings_xml__, __mediaclient_e__)
- __settings__.openSettings()
-elif __name__ == "__main__" and len(sys.argv) == 2 and sys.argv[1] == 'update_driver':
- proc = subprocess.Popen([__update_sh__], shell = True)
- return_code = proc.wait()
- print "sundtek update driver rv", return_code
- __settings__.openSettings()
+if __name__ == "__main__" and len(sys.argv) == 2:
+ if sys.argv[1] == 'refresh_tuners':
+ sys.path.append(__resources_lib__)
+ from functions import refresh_sundtek_tuners
+ refresh_sundtek_tuners(__settings_xml__, __mediaclient_e__)
+ __settings__.openSettings()
+ elif sys.argv[1] == 'update_driver':
+ proc = subprocess.Popen([__update_sh__], shell = True)
+ return_code = proc.wait()
+ print "sundtek update driver return value" + str(return_code)
+ __settings__.openSettings()
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 88a52b6ca2..a00afae1ea 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
@@ -29,5 +29,6 @@
keymap filename
Driver
+ Check for new driver version at boot
Update from web... (press me)
diff --git a/packages/addons/driver/sundtek-mediatv/source/resources/lib/functions.py b/packages/addons/driver/sundtek-mediatv/source/resources/lib/functions.py
index 344f007337..bc34bf8e3b 100644
--- a/packages/addons/driver/sundtek-mediatv/source/resources/lib/functions.py
+++ b/packages/addons/driver/sundtek-mediatv/source/resources/lib/functions.py
@@ -22,7 +22,7 @@ import shutil
import xmlpp
from xml.dom import minidom
-__sundtek_userspace__ = '/storage/.xbmc/userdata/addon_data/driver.dvb.sundtek-mediatv/'
+__sundtek_userspace__ = '/storage/.kodi/userdata/addon_data/driver.dvb.sundtek-mediatv/'
######################################################################################################
# backup setting.xml file only if backup doesn't exist
diff --git a/packages/addons/driver/sundtek-mediatv/source/resources/settings.xml b/packages/addons/driver/sundtek-mediatv/source/resources/settings.xml
index 1d7e9ff6e2..5c6f651113 100644
--- a/packages/addons/driver/sundtek-mediatv/source/resources/settings.xml
+++ b/packages/addons/driver/sundtek-mediatv/source/resources/settings.xml
@@ -31,6 +31,7 @@
+
diff --git a/packages/addons/driver/sundtek-mediatv/source/sleep.d/99-sundtek-mediatv.power b/packages/addons/driver/sundtek-mediatv/source/sleep.d/99-sundtek-mediatv.power
index 7a2e93324f..1f91cc9065 100644
--- a/packages/addons/driver/sundtek-mediatv/source/sleep.d/99-sundtek-mediatv.power
+++ b/packages/addons/driver/sundtek-mediatv/source/sleep.d/99-sundtek-mediatv.power
@@ -25,9 +25,10 @@ oe_setup_addon driver.dvb.sundtek-mediatv
if [ "$SUSPEND_DRIVER" = "true" ]; then
case "$1" in
pre)
- killall -9 mediasrv &>/dev/null
+ systemctl stop driver.dvb.sundtek-mediatv.service
;;
post)
+ systemctl start driver.dvb.sundtek-mediatv.service
;;
esac
fi
diff --git a/packages/addons/driver/sundtek-mediatv/source/system.d/driver.dvb.sundtek-mediatv.service b/packages/addons/driver/sundtek-mediatv/source/system.d/driver.dvb.sundtek-mediatv.service
new file mode 100644
index 0000000000..4f6c142d1a
--- /dev/null
+++ b/packages/addons/driver/sundtek-mediatv/source/system.d/driver.dvb.sundtek-mediatv.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=Sundtek driver service
+After=network.target
+
+[Service]
+Type=oneshot
+ExecStart=-/bin/sh -c "exec sh /storage/.kodi/addons/driver.dvb.sundtek-mediatv/bin/sundtek-mediatv.start"
+ExecStop=-/bin/sh -c "exec sh /storage/.kodi/addons/driver.dvb.sundtek-mediatv/bin/sundtek-mediatv.stop"
+RemainAfterExit=yes
+
+[Install]
+WantedBy=kodi.target