diff --git a/packages/addons/driver/sundtek-mediatv/changelog.txt b/packages/addons/driver/sundtek-mediatv/changelog.txt
index 0a1fe7a966..c69054dc1b 100644
--- a/packages/addons/driver/sundtek-mediatv/changelog.txt
+++ b/packages/addons/driver/sundtek-mediatv/changelog.txt
@@ -1,6 +1,6 @@
4.3.4
fixed xbmc/kodi rebranding error
- removed driver update option (can't run script from addon settings anymore)
+ some fixes
4.3.3
addon transformed to service addon
new addon settings option to enable to check for new driver at boot
diff --git a/packages/addons/driver/sundtek-mediatv/package.mk b/packages/addons/driver/sundtek-mediatv/package.mk
index 9430e7d024..69345f19bf 100644
--- a/packages/addons/driver/sundtek-mediatv/package.mk
+++ b/packages/addons/driver/sundtek-mediatv/package.mk
@@ -47,10 +47,17 @@ make_target() {
INSTALLER_URL="http://sundtek.de/media/netinst/armsysvhf/installer.tar.gz"
;;
esac
+
wget -O installer.tar.gz $INSTALLER_URL
+
tar -xzf installer.tar.gz
+
chmod -R 755 opt/ etc/
+ rm -f opt/bin/getinput.sh
+ rm -f opt/bin/lirc.sh
+ rm -fr opt/lib/pm/
+
wget -O version.used http://sundtek.de/media/latest.phtml
}
diff --git a/packages/addons/driver/sundtek-mediatv/source/bin/sundtek-mediatv.start b/packages/addons/driver/sundtek-mediatv/source/bin/sundtek-mediatv.start
index 457c43c3cc..3e343ef6d9 100644
--- a/packages/addons/driver/sundtek-mediatv/source/bin/sundtek-mediatv.start
+++ b/packages/addons/driver/sundtek-mediatv/source/bin/sundtek-mediatv.start
@@ -2,7 +2,7 @@
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
-# Copyright (C) 2009-2013 Stephan Raue (stephan@openelec.tv)
+# Copyright (C) 2009-2014 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
@@ -78,7 +78,7 @@ if [ "$CHECK_BOOT" = "true" ]; then
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)"
+ kodi-send -a "Notification(Sundtek, \"New driver version exist, update manually\", 4000, $SUNDTEK_ADDON_DIR/icon.png)"
fi
)&
fi
diff --git a/packages/addons/driver/sundtek-mediatv/source/bin/sundtek-mediatv.stop b/packages/addons/driver/sundtek-mediatv/source/bin/sundtek-mediatv.stop
index 7c88bbf23e..02aeedebde 100644
--- a/packages/addons/driver/sundtek-mediatv/source/bin/sundtek-mediatv.stop
+++ b/packages/addons/driver/sundtek-mediatv/source/bin/sundtek-mediatv.stop
@@ -2,7 +2,7 @@
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
-# Copyright (C) 2009-2013 Stephan Raue (stephan@openelec.tv)
+# Copyright (C) 2009-2014 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
diff --git a/packages/addons/driver/sundtek-mediatv/source/bin/sundtek-update-driver.sh b/packages/addons/driver/sundtek-mediatv/source/bin/sundtek-update-driver.sh
index 5a7c87c9b9..bc4807e300 100644
--- a/packages/addons/driver/sundtek-mediatv/source/bin/sundtek-update-driver.sh
+++ b/packages/addons/driver/sundtek-mediatv/source/bin/sundtek-update-driver.sh
@@ -24,18 +24,35 @@ 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 ###"
-kodi-send -a "Notification(Sundtek, Starting updating driver, 2000, $SUNDTEK_ADDON_DIR/icon.png)"
+trap_exit_install() {
+ kodi-send -a "Notification(Sundtek, Something went wrong. Cleaning..., 8000, $SUNDTEK_ADDON_DIR/icon.png)"
+ cd "$SUNDTEK_ADDON_DIR"
+ rm -fr tmp
+ exit 5
+}
+
+# kill process
+systemctl stop driver.dvb.sundtek-mediatv
+killall -9 mediaclient &>/dev/null
+killall -9 mediasrv &>/dev/null
+
+# exit on errors
+set -e
+
+trap trap_exit_install EXIT
cd "$SUNDTEK_ADDON_DIR"
rm -fr tmp
mkdir tmp
cd tmp
+logger -t Sundtek "### Starting updating driver ###"
+kodi-send -a "Notification(Sundtek, Starting updating driver, 2000, $SUNDTEK_ADDON_DIR/icon.png)"
+
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)"
+ kodi-send -a "Notification(Sundtek, Cant get latest version, 8000, $SUNDTEK_ADDON_DIR/icon.png)"
cd ..
rm -fr tmp/
exit 1
@@ -66,6 +83,7 @@ if [ $? -ne 0 ]; then
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
@@ -77,12 +95,12 @@ if [ $? -ne 0 ]; then
exit 4
fi
+# fix permissions
chmod -R 755 opt/ etc/
-killall -9 mediaclient &>/dev/null
-killall -9 mediasrv &>/dev/null
-
-chmod 755 opt/bin/*
+rm -f opt/bin/getinput.sh
+rm -f opt/bin/lirc.sh
+rm -fr opt/lib/pm/
cp -Pa opt/bin/* ../bin/
cp -Pa opt/lib/* ../lib/
@@ -93,4 +111,9 @@ rm -fr tmp
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)"
+
+trap - EXIT
+
+systemctl start driver.dvb.sundtek-mediatv
+
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 23334ea890..92d194ce23 100644
--- a/packages/addons/driver/sundtek-mediatv/source/bin/userspace-driver.sh
+++ b/packages/addons/driver/sundtek-mediatv/source/bin/userspace-driver.sh
@@ -2,7 +2,7 @@
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
-# Copyright (C) 2009-2013 Stephan Raue (stephan@openelec.tv)
+# Copyright (C) 2009-2014 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
diff --git a/packages/addons/driver/sundtek-mediatv/source/default.py b/packages/addons/driver/sundtek-mediatv/source/default.py
index c466f0415a..3740e2fb95 100644
--- a/packages/addons/driver/sundtek-mediatv/source/default.py
+++ b/packages/addons/driver/sundtek-mediatv/source/default.py
@@ -14,30 +14,4 @@
#
# You should have received a copy of the GNU General Public License
# along with OpenELEC. If not, see .
-################################################################################
-
-import os
-import sys
-import subprocess
-import xbmcaddon
-
-__settings__ = xbmcaddon.Addon(id = 'driver.dvb.sundtek-mediatv')
-__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'))
-__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:
- 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/actions.py b/packages/addons/driver/sundtek-mediatv/source/resources/actions.py
new file mode 100644
index 0000000000..6e32393e0b
--- /dev/null
+++ b/packages/addons/driver/sundtek-mediatv/source/resources/actions.py
@@ -0,0 +1,45 @@
+################################################################################
+# This file is part of OpenELEC - http://www.openelec.tv
+# Copyright (C) 2009-2014 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 .
+################################################################################
+
+import os
+import sys
+import subprocess
+import xbmcaddon
+
+__settings__ = xbmcaddon.Addon(id = 'driver.dvb.sundtek-mediatv')
+__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'))
+__mediaclient_e__ = __mediaclient__ + ' -e'
+__update_sh__ = xbmc.translatePath(os.path.join(__cwd__, 'bin', 'sundtek-update-driver.sh'))
+
+if len(sys.argv) == 2:
+ if sys.argv[1] == 'refresh_tuners':
+ print "sundtek 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':
+ print "sundtek 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/lib/functions.py b/packages/addons/driver/sundtek-mediatv/source/resources/lib/functions.py
index bc34bf8e3b..04d8f73789 100644
--- a/packages/addons/driver/sundtek-mediatv/source/resources/lib/functions.py
+++ b/packages/addons/driver/sundtek-mediatv/source/resources/lib/functions.py
@@ -1,6 +1,6 @@
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
-# Copyright (C) 2009-2013 Stephan Raue (stephan@openelec.tv)
+# Copyright (C) 2009-2014 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
diff --git a/packages/addons/driver/sundtek-mediatv/source/resources/lib/xmlpp.py b/packages/addons/driver/sundtek-mediatv/source/resources/lib/xmlpp.py
index 342dcc01d7..5898b40b11 100644
--- a/packages/addons/driver/sundtek-mediatv/source/resources/lib/xmlpp.py
+++ b/packages/addons/driver/sundtek-mediatv/source/resources/lib/xmlpp.py
@@ -37,36 +37,39 @@ def _usage(this_file):
return """SYNOPSIS: pretty print an XML document
USAGE: python %s \n""" % this_file
-def _pprint_line(indent_level, line, width=100, output=_sys.stdout):
+def _pprint_line(indent_level, line, width=100, output=_sys.stdout, ignore_contents = False):
if line.strip():
start = ""
number_chars = 0
for l in range(indent_level):
start = start + " "
number_chars = number_chars + 1
- try:
- elem_start = _re.findall("(\<\W{0,1}\w+:\w+) ?", line)[0]
- elem_finished = _re.findall("([?|\]\]/]*\>)", line)[0]
- #should not have *
- attrs = _re.findall("(\S*?\=\".*?\")", line)
- output.write(start + elem_start)
- number_chars = len(start + elem_start)
- for attr in attrs:
- if (attrs.index(attr) + 1) == len(attrs):
- number_chars = number_chars + len(elem_finished)
- if (number_chars + len(attr) + 1) > width:
- output.write("\n")
- for i in range(len(start + elem_start) + 1):
+ if not ignore_contents:
+ try:
+ elem_start = _re.findall("(\<\W{0,1}\w+:\w+) ?", line)[0]
+ elem_finished = _re.findall("([?|\]\]/|\-\-]*\>)", line)[0]
+ #should not have *
+ attrs = _re.findall("(\S*?\=\".*?\")", line)
+ output.write(start + elem_start)
+ number_chars = len(start + elem_start)
+ for attr in attrs:
+ if (attrs.index(attr) + 1) == len(attrs):
+ number_chars = number_chars + len(elem_finished)
+ if (number_chars + len(attr) + 1) > width:
+ output.write("\n")
+ for i in range(len(start + elem_start) + 1):
+ output.write(" ")
+ number_chars = len(start + elem_start) + 1
+ else:
output.write(" ")
- number_chars = len(start + elem_start) + 1
- else:
- output.write(" ")
- number_chars = number_chars + 1
- output.write(attr)
- number_chars = number_chars + len(attr)
- output.write(elem_finished + "\n")
- except IndexError:
- #give up pretty print this line
+ number_chars = number_chars + 1
+ output.write(attr)
+ number_chars = number_chars + len(attr)
+ output.write(elem_finished + "\n")
+ except IndexError:
+ #give up pretty print this line
+ output.write(start + line + "\n")
+ else:
output.write(start + line + "\n")
@@ -80,7 +83,8 @@ def _get_next_elem(data):
start_pos = data.find("<")
end_pos = data.find(">") + 1
retval = data[start_pos:end_pos]
- stopper = retval.rfind("/")
+ stopper = retval.rfind("/")
+ ignore_contents = False
if stopper < retval.rfind("\""):
stopper = -1
single = (stopper > -1 and ((retval.find(">") - stopper) < (stopper - retval.find("<"))))
@@ -89,11 +93,19 @@ def _get_next_elem(data):
ignore_question = retval.find("") > -1
if ignore_excl:
+ ignore_contents = True
cdata = retval.find(" -1
if cdata:
end_pos = data.find("]]>")
if end_pos > -1:
end_pos = end_pos + len("]]>")
+ stopper = end_pos
+ else:
+ end_pos = data.find("-->")
+ if end_pos > -1:
+ end_pos = end_pos + len("-->")
+ stopper = end_pos
+ retval = data[start_pos:end_pos]
elif ignore_question:
end_pos = data.find("?>") + len("?>")
@@ -101,11 +113,12 @@ def _get_next_elem(data):
no_indent = ignore or single
- #print retval, end_pos, start_pos, stopper > -1, no_indent
+
return start_pos, \
end_pos, \
stopper > -1, \
- no_indent
+ no_indent, \
+ ignore_contents
def get_pprint(xml, indent=4, width=80):
"""Returns the pretty printed xml """
@@ -116,6 +129,8 @@ def get_pprint(xml, indent=4, width=80):
self.output += string
out = out()
pprint(xml, output=out, indent=indent, width=width)
+
+
return out.output
@@ -126,7 +141,7 @@ def pprint(xml, output=_sys.stdout, indent=4, width=80):
Use indent to select indentation level. Default is 4 """
data = xml
indent_level = 0
- start_pos, end_pos, is_stop, no_indent = _get_next_elem(data)
+ start_pos, end_pos, is_stop, no_indent, ignore_contents = _get_next_elem(data)
while ((start_pos > -1 and end_pos > -1)):
_pprint_elem_content(indent_level, data[:start_pos].strip(),
output=output)
@@ -136,7 +151,8 @@ def pprint(xml, output=_sys.stdout, indent=4, width=80):
_pprint_line(indent_level,
data[:end_pos - start_pos],
width=width,
- output=output)
+ output=output,
+ ignore_contents=ignore_contents)
data = data[end_pos - start_pos:]
if not is_stop and not no_indent :
indent_level = indent_level + indent
@@ -144,7 +160,7 @@ def pprint(xml, output=_sys.stdout, indent=4, width=80):
if not data:
break
else:
- start_pos, end_pos, is_stop, no_indent = _get_next_elem(data)
+ start_pos, end_pos, is_stop, no_indent, ignore_contents = _get_next_elem(data)
if __name__ == "__main__":
diff --git a/packages/addons/driver/sundtek-mediatv/source/resources/settings.xml b/packages/addons/driver/sundtek-mediatv/source/resources/settings.xml
index ed726ace1e..31535caf84 100644
--- a/packages/addons/driver/sundtek-mediatv/source/resources/settings.xml
+++ b/packages/addons/driver/sundtek-mediatv/source/resources/settings.xml
@@ -27,13 +27,11 @@
-
+
-