From b9392ffba2b85353e3b7e414883703968b39b4cd Mon Sep 17 00:00:00 2001 From: hschang Date: Mon, 9 Apr 2018 19:11:27 +0900 Subject: [PATCH] Remove miscControl and move Ci Delay option to CI Setting. --- configure.ac | 4 - lib/python/Components/SystemInfo.py | 10 +- lib/python/Plugins/SystemPlugins/Makefile.am | 2 +- .../SystemPlugins/Solo4kMiscControl/Makefile.am | 7 -- .../SystemPlugins/Solo4kMiscControl/__init__.py | 1 - .../Solo4kMiscControl/meta/Makefile.am | 3 - .../meta/plugin_solo4kmisccontrol.xml | 16 --- .../SystemPlugins/Solo4kMiscControl/plugin.py | 116 --------------------- .../SystemPlugins/Ultimo4kMiscControl/Makefile.am | 7 -- .../SystemPlugins/Ultimo4kMiscControl/__init__.py | 1 - .../Ultimo4kMiscControl/meta/Makefile.am | 3 - .../meta/plugin_ultimo4kmisccontrol.xml | 16 --- .../SystemPlugins/Ultimo4kMiscControl/plugin.py | 116 --------------------- lib/python/Screens/Ci.py | 108 ++++++++----------- lib/python/Tools/Directories.py | 3 + 15 files changed, 54 insertions(+), 359 deletions(-) mode change 100644 => 100755 lib/python/Components/SystemInfo.py delete mode 100644 lib/python/Plugins/SystemPlugins/Solo4kMiscControl/Makefile.am delete mode 100644 lib/python/Plugins/SystemPlugins/Solo4kMiscControl/__init__.py delete mode 100644 lib/python/Plugins/SystemPlugins/Solo4kMiscControl/meta/Makefile.am delete mode 100644 lib/python/Plugins/SystemPlugins/Solo4kMiscControl/meta/plugin_solo4kmisccontrol.xml delete mode 100644 lib/python/Plugins/SystemPlugins/Solo4kMiscControl/plugin.py delete mode 100644 lib/python/Plugins/SystemPlugins/Ultimo4kMiscControl/Makefile.am delete mode 100644 lib/python/Plugins/SystemPlugins/Ultimo4kMiscControl/__init__.py delete mode 100644 lib/python/Plugins/SystemPlugins/Ultimo4kMiscControl/meta/Makefile.am delete mode 100644 lib/python/Plugins/SystemPlugins/Ultimo4kMiscControl/meta/plugin_ultimo4kmisccontrol.xml delete mode 100644 lib/python/Plugins/SystemPlugins/Ultimo4kMiscControl/plugin.py diff --git a/configure.ac b/configure.ac index eba34a6..d6a1f6a 100644 --- a/configure.ac +++ b/configure.ac @@ -305,12 +305,8 @@ lib/python/Plugins/SystemPlugins/AnimationSetup/Makefile lib/python/Plugins/SystemPlugins/AnimationSetup/meta/Makefile lib/python/Plugins/SystemPlugins/BoxModeConfig/Makefile lib/python/Plugins/SystemPlugins/BoxModeConfig/meta/Makefile -lib/python/Plugins/SystemPlugins/Solo4kMiscControl/Makefile -lib/python/Plugins/SystemPlugins/Solo4kMiscControl/meta/Makefile lib/python/Plugins/SystemPlugins/FastChannelChange/Makefile lib/python/Plugins/SystemPlugins/FastChannelChange/meta/Makefile -lib/python/Plugins/SystemPlugins/Ultimo4kMiscControl/Makefile -lib/python/Plugins/SystemPlugins/Ultimo4kMiscControl/meta/Makefile lib/python/Plugins/SystemPlugins/PvrDescrambleConvert/Makefile lib/python/Plugins/SystemPlugins/PvrDescrambleConvert/meta/Makefile lib/python/Plugins/Extensions/QuadPiP/Makefile diff --git a/lib/python/Components/SystemInfo.py b/lib/python/Components/SystemInfo.py old mode 100644 new mode 100755 index 5ee9510..4023198 --- a/lib/python/Components/SystemInfo.py +++ b/lib/python/Components/SystemInfo.py @@ -1,5 +1,5 @@ -from enigma import eDVBResourceManager -from Tools.Directories import fileExists +from enigma import eDVBResourceManager, eDVBCIInterfaces +from Tools.Directories import fileExists, fileCheck from Tools.HardwareInfo import HardwareInfo SystemInfo = { } @@ -38,3 +38,9 @@ SystemInfo["DisableUsbRecord"] = HardwareInfo().get_vu_device_name() in ("solo4k SystemInfo["DefaultAniSpeed"] = HardwareInfo().get_vu_device_name() in ("uno4k", "uno4kse", "zero4k") and 25 or 20 SystemInfo["DefaultFullHDSkin"] = HardwareInfo().get_vu_device_name() in ("solo4k","ultimo4k","uno4k","uno4kse","zero4k") SystemInfo["PVRSupport"] = HardwareInfo().get_vu_device_name() not in ["solose", "zero", "uno4k"] + +SystemInfo["CommonInterface"] = eDVBCIInterfaces.getInstance().getNumOfSlots() +SystemInfo["CommonInterfaceCIDelay"] = fileCheck("/proc/stb/tsmux/rmx_delay") +for cislot in range (0, SystemInfo["CommonInterface"]): + SystemInfo["CI%dSupportsHighBitrates" % cislot] = fileCheck("/proc/stb/tsmux/ci%d_tsclk" % cislot) + SystemInfo["CI%dRelevantPidsRoutingSupport" % cislot] = fileCheck("/proc/stb/tsmux/ci%d_relevant_pids_routing" % cislot) diff --git a/lib/python/Plugins/SystemPlugins/Makefile.am b/lib/python/Plugins/SystemPlugins/Makefile.am index 4cf41a6..9fb15f3 100755 --- a/lib/python/Plugins/SystemPlugins/Makefile.am +++ b/lib/python/Plugins/SystemPlugins/Makefile.am @@ -8,7 +8,7 @@ SUBDIRS = SoftwareManager FrontprocessorUpgrade PositionerSetup Satfinder \ Blindscan RemoteControlCode UI3DSetup UIPositionSetup HDMICEC LEDBrightnessSetup \ FirmwareUpgrade CrashReport 3GModemManager WirelessAccessPoint ZappingModeSelection \ DeviceManager TransCodingSetup WOLSetup NetDrive AudioEffect AnimationSetup \ - BoxModeConfig Solo4kMiscControl FastChannelChange Ultimo4kMiscControl PvrDescrambleConvert + BoxModeConfig FastChannelChange PvrDescrambleConvert install_PYTHON = \ __init__.py diff --git a/lib/python/Plugins/SystemPlugins/Solo4kMiscControl/Makefile.am b/lib/python/Plugins/SystemPlugins/Solo4kMiscControl/Makefile.am deleted file mode 100644 index 1d7f276..0000000 --- a/lib/python/Plugins/SystemPlugins/Solo4kMiscControl/Makefile.am +++ /dev/null @@ -1,7 +0,0 @@ -installdir = $(pkglibdir)/python/Plugins/SystemPlugins/Solo4kMiscControl - -SUBDIRS = meta - -install_PYTHON = \ - __init__.py \ - plugin.py diff --git a/lib/python/Plugins/SystemPlugins/Solo4kMiscControl/__init__.py b/lib/python/Plugins/SystemPlugins/Solo4kMiscControl/__init__.py deleted file mode 100644 index 8d1c8b6..0000000 --- a/lib/python/Plugins/SystemPlugins/Solo4kMiscControl/__init__.py +++ /dev/null @@ -1 +0,0 @@ - diff --git a/lib/python/Plugins/SystemPlugins/Solo4kMiscControl/meta/Makefile.am b/lib/python/Plugins/SystemPlugins/Solo4kMiscControl/meta/Makefile.am deleted file mode 100644 index 990f998..0000000 --- a/lib/python/Plugins/SystemPlugins/Solo4kMiscControl/meta/Makefile.am +++ /dev/null @@ -1,3 +0,0 @@ -installdir = $(datadir)/meta - -dist_install_DATA = plugin_solo4kmisccontrol.xml diff --git a/lib/python/Plugins/SystemPlugins/Solo4kMiscControl/meta/plugin_solo4kmisccontrol.xml b/lib/python/Plugins/SystemPlugins/Solo4kMiscControl/meta/plugin_solo4kmisccontrol.xml deleted file mode 100644 index d4bd7e2..0000000 --- a/lib/python/Plugins/SystemPlugins/Solo4kMiscControl/meta/plugin_solo4kmisccontrol.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - hschang - Solo4kMiscControl - enigma2-plugin-systemplugins-solo4kmisccontrol - set Solo4K LNB Power and etc.. - Control LNB Power and ToneBurst,CI delay for Solo4K. - - - - - - diff --git a/lib/python/Plugins/SystemPlugins/Solo4kMiscControl/plugin.py b/lib/python/Plugins/SystemPlugins/Solo4kMiscControl/plugin.py deleted file mode 100644 index 26c3aa0..0000000 --- a/lib/python/Plugins/SystemPlugins/Solo4kMiscControl/plugin.py +++ /dev/null @@ -1,116 +0,0 @@ -from Screens.Screen import Screen -from Components.ConfigList import ConfigListScreen -from Components.config import config, getConfigListEntry, ConfigSubsection, ConfigSelection -from Components.ActionMap import ActionMap -from Screens.MessageBox import MessageBox -from Components.Sources.StaticText import StaticText -from Plugins.Plugin import PluginDescriptor -from Tools.Directories import fileExists - -config.plugins.solo4kMiscControl = ConfigSubsection() -config.plugins.solo4kMiscControl.forceLnbPower = ConfigSelection(default = "off", choices = [ ("on", _("Yes")), ("off", _("No"))] ) -config.plugins.solo4kMiscControl.forceToneBurst = ConfigSelection(default = "disable", choices = [ ("enable", _("Yes")), ("disable", _("No"))] ) -config.plugins.solo4kMiscControl.dvbCiDelay = ConfigSelection(default = "256", choices = [ ("16", _("16")), ("32", _("32")), ("64", _("64")), ("128", _("128")), ("256", _("256"))] ) - -PROC_FORCE_LNBPOWER = "/proc/stb/frontend/fbc/force_lnbon" -PROC_FORCE_TONEBURST = "/proc/stb/frontend/fbc/force_toneburst" -PROC_DVB_CI_DELAY = "/proc/stb/tsmux/rmx_delay" - -def setProcValueOnOff(value, procPath): - try: - print "[Solo4kMiscControl] set %s : %s" % (procPath, value) - fd = open(procPath,'w') - fd.write(value) - fd.close() - return 0 - except Exception, e: - print "[Solo4kMiscControl] proc write Error", e - return -1 - - -from enigma import eTimer -class checkDriverSupport: - def __init__(self): - self.onLayoutFinish.append(self.procCheck) - self.dispErrorTimer = eTimer() - self.dispErrorTimer.callback.append(self.dispErrorMsg) - - def procCheck(self): - if not (fileExists(PROC_FORCE_LNBPOWER) and fileExists(PROC_FORCE_TONEBURST) and fileExists(PROC_DVB_CI_DELAY)): - self.dispErrorTimer.start(0, True) - - def dispErrorMsg(self): - self.session.openWithCallback(self.close ,MessageBox, _("Driver is not supported."), MessageBox.TYPE_ERROR) - -class Solo4kMiscControl(Screen, ConfigListScreen, checkDriverSupport): - skin = """ - - - - - - - - """ - - def __init__(self,session): - Screen.__init__(self,session) - self.session = session - self["shortcuts"] = ActionMap(["ShortcutActions", "SetupActions" ], - { - "ok": self.keySave, - "cancel": self.keyCancel, - "red": self.keyCancel, - "green": self.keySave, - }, -2) - self.list = [] - ConfigListScreen.__init__(self, self.list,session = self.session) - self["key_red"] = StaticText(_("Cancel")) - self["key_green"] = StaticText(_("Ok")) - self.createSetup() - - checkDriverSupport.__init__(self) - - def createSetup(self): - self.list = [] - self.lnbPowerEntry = getConfigListEntry(_("Force LNB Power"), config.plugins.solo4kMiscControl.forceLnbPower) - self.toneBurstEntry = getConfigListEntry(_("Force ToneBurst"), config.plugins.solo4kMiscControl.forceToneBurst) - self.ciDelayEntry = getConfigListEntry(_("DVB CI Delay"), config.plugins.solo4kMiscControl.dvbCiDelay) - self.list.append( self.lnbPowerEntry ) - self.list.append( self.toneBurstEntry ) - self.list.append( self.ciDelayEntry ) - self["config"].list = self.list - self["config"].l.setList(self.list) - - def keySave(self): - res = setProcValueOnOff(config.plugins.solo4kMiscControl.forceLnbPower.value, PROC_FORCE_LNBPOWER) - if res == 0: - res = setProcValueOnOff(config.plugins.solo4kMiscControl.forceToneBurst.value, PROC_FORCE_TONEBURST) - if res == 0: - res = setProcValueOnOff(config.plugins.solo4kMiscControl.dvbCiDelay.value, PROC_DVB_CI_DELAY) - - if res == -1: - self.resetConfig() - self.session.openWithCallback(self.close, MessageBox, _("SET FAILED!\n"), MessageBox.TYPE_ERROR) - else: - self.saveAll() - self.close() - - def resetConfig(self): - for x in self["config"].list: - x[1].cancel() - -def main(session, **kwargs): - session.open(Solo4kMiscControl) - -def OnSessionStart(session, **kwargs): - setProcValueOnOff(config.plugins.solo4kMiscControl.forceLnbPower.value, PROC_FORCE_LNBPOWER) - setProcValueOnOff(config.plugins.solo4kMiscControl.forceToneBurst.value, PROC_FORCE_TONEBURST) - setProcValueOnOff(config.plugins.solo4kMiscControl.dvbCiDelay.value, PROC_DVB_CI_DELAY) - -def Plugins(**kwargs): - pList = [] - pList.append( PluginDescriptor(where=PluginDescriptor.WHERE_SESSIONSTART, fnc=OnSessionStart) ) - pList.append( PluginDescriptor(name=_("Solo4K Misc. Control"), description="set Solo4K LNB Power and etc..", where = PluginDescriptor.WHERE_PLUGINMENU, needsRestart = False, fnc=main) ) - return pList - diff --git a/lib/python/Plugins/SystemPlugins/Ultimo4kMiscControl/Makefile.am b/lib/python/Plugins/SystemPlugins/Ultimo4kMiscControl/Makefile.am deleted file mode 100644 index c7cc202..0000000 --- a/lib/python/Plugins/SystemPlugins/Ultimo4kMiscControl/Makefile.am +++ /dev/null @@ -1,7 +0,0 @@ -installdir = $(pkglibdir)/python/Plugins/SystemPlugins/Ultimo4kMiscControl - -SUBDIRS = meta - -install_PYTHON = \ - __init__.py \ - plugin.py diff --git a/lib/python/Plugins/SystemPlugins/Ultimo4kMiscControl/__init__.py b/lib/python/Plugins/SystemPlugins/Ultimo4kMiscControl/__init__.py deleted file mode 100644 index 8d1c8b6..0000000 --- a/lib/python/Plugins/SystemPlugins/Ultimo4kMiscControl/__init__.py +++ /dev/null @@ -1 +0,0 @@ - diff --git a/lib/python/Plugins/SystemPlugins/Ultimo4kMiscControl/meta/Makefile.am b/lib/python/Plugins/SystemPlugins/Ultimo4kMiscControl/meta/Makefile.am deleted file mode 100644 index e23527e..0000000 --- a/lib/python/Plugins/SystemPlugins/Ultimo4kMiscControl/meta/Makefile.am +++ /dev/null @@ -1,3 +0,0 @@ -installdir = $(datadir)/meta - -dist_install_DATA = plugin_ultimo4kmisccontrol.xml diff --git a/lib/python/Plugins/SystemPlugins/Ultimo4kMiscControl/meta/plugin_ultimo4kmisccontrol.xml b/lib/python/Plugins/SystemPlugins/Ultimo4kMiscControl/meta/plugin_ultimo4kmisccontrol.xml deleted file mode 100644 index 7440ede..0000000 --- a/lib/python/Plugins/SystemPlugins/Ultimo4kMiscControl/meta/plugin_ultimo4kmisccontrol.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - hschang - Ultimo4kMiscControl - enigma2-plugin-systemplugins-ultimo4kmisccontrol - set Ultimo4K LNB Power and etc.. - Control LNB Power and ToneBurst,CI delay for Ultimo4K. - - - - - - diff --git a/lib/python/Plugins/SystemPlugins/Ultimo4kMiscControl/plugin.py b/lib/python/Plugins/SystemPlugins/Ultimo4kMiscControl/plugin.py deleted file mode 100644 index d9cd261..0000000 --- a/lib/python/Plugins/SystemPlugins/Ultimo4kMiscControl/plugin.py +++ /dev/null @@ -1,116 +0,0 @@ -from Screens.Screen import Screen -from Components.ConfigList import ConfigListScreen -from Components.config import config, getConfigListEntry, ConfigSubsection, ConfigSelection -from Components.ActionMap import ActionMap -from Screens.MessageBox import MessageBox -from Components.Sources.StaticText import StaticText -from Plugins.Plugin import PluginDescriptor -from Tools.Directories import fileExists - -config.plugins.ultimo4kMiscControl = ConfigSubsection() -config.plugins.ultimo4kMiscControl.forceLnbPower = ConfigSelection(default = "off", choices = [ ("on", _("Yes")), ("off", _("No"))] ) -config.plugins.ultimo4kMiscControl.forceToneBurst = ConfigSelection(default = "disable", choices = [ ("enable", _("Yes")), ("disable", _("No"))] ) -config.plugins.ultimo4kMiscControl.dvbCiDelay = ConfigSelection(default = "256", choices = [ ("16", _("16")), ("32", _("32")), ("64", _("64")), ("128", _("128")), ("256", _("256"))] ) - -PROC_FORCE_LNBPOWER = "/proc/stb/frontend/fbc/force_lnbon" -PROC_FORCE_TONEBURST = "/proc/stb/frontend/fbc/force_toneburst" -PROC_DVB_CI_DELAY = "/proc/stb/tsmux/rmx_delay" - -def setProcValueOnOff(value, procPath): - try: - print "[ultimo4kMiscControl] set %s : %s" % (procPath, value) - fd = open(procPath,'w') - fd.write(value) - fd.close() - return 0 - except Exception, e: - print "[ultimo4kMiscControl] proc write Error", e - return -1 - - -from enigma import eTimer -class checkDriverSupport: - def __init__(self): - self.onLayoutFinish.append(self.procCheck) - self.dispErrorTimer = eTimer() - self.dispErrorTimer.callback.append(self.dispErrorMsg) - - def procCheck(self): - if not (fileExists(PROC_FORCE_LNBPOWER) and fileExists(PROC_FORCE_TONEBURST) and fileExists(PROC_DVB_CI_DELAY)): - self.dispErrorTimer.start(0, True) - - def dispErrorMsg(self): - self.session.openWithCallback(self.close ,MessageBox, _("Driver is not supported."), MessageBox.TYPE_ERROR) - -class ultimo4kMiscControl(Screen, ConfigListScreen, checkDriverSupport): - skin = """ - - - - - - - - """ - - def __init__(self,session): - Screen.__init__(self,session) - self.session = session - self["shortcuts"] = ActionMap(["ShortcutActions", "SetupActions" ], - { - "ok": self.keySave, - "cancel": self.keyCancel, - "red": self.keyCancel, - "green": self.keySave, - }, -2) - self.list = [] - ConfigListScreen.__init__(self, self.list,session = self.session) - self["key_red"] = StaticText(_("Cancel")) - self["key_green"] = StaticText(_("Ok")) - self.createSetup() - - checkDriverSupport.__init__(self) - - def createSetup(self): - self.list = [] - self.lnbPowerEntry = getConfigListEntry(_("Force LNB Power"), config.plugins.ultimo4kMiscControl.forceLnbPower) - self.toneBurstEntry = getConfigListEntry(_("Force ToneBurst"), config.plugins.ultimo4kMiscControl.forceToneBurst) - self.ciDelayEntry = getConfigListEntry(_("DVB CI Delay"), config.plugins.ultimo4kMiscControl.dvbCiDelay) - self.list.append( self.lnbPowerEntry ) - self.list.append( self.toneBurstEntry ) - self.list.append( self.ciDelayEntry ) - self["config"].list = self.list - self["config"].l.setList(self.list) - - def keySave(self): - res = setProcValueOnOff(config.plugins.ultimo4kMiscControl.forceLnbPower.value, PROC_FORCE_LNBPOWER) - if res == 0: - res = setProcValueOnOff(config.plugins.ultimo4kMiscControl.forceToneBurst.value, PROC_FORCE_TONEBURST) - if res == 0: - res = setProcValueOnOff(config.plugins.ultimo4kMiscControl.dvbCiDelay.value, PROC_DVB_CI_DELAY) - - if res == -1: - self.resetConfig() - self.session.openWithCallback(self.close, MessageBox, _("SET FAILED!\n"), MessageBox.TYPE_ERROR) - else: - self.saveAll() - self.close() - - def resetConfig(self): - for x in self["config"].list: - x[1].cancel() - -def main(session, **kwargs): - session.open(ultimo4kMiscControl) - -def OnSessionStart(session, **kwargs): - setProcValueOnOff(config.plugins.ultimo4kMiscControl.forceLnbPower.value, PROC_FORCE_LNBPOWER) - setProcValueOnOff(config.plugins.ultimo4kMiscControl.forceToneBurst.value, PROC_FORCE_TONEBURST) - setProcValueOnOff(config.plugins.ultimo4kMiscControl.dvbCiDelay.value, PROC_DVB_CI_DELAY) - -def Plugins(**kwargs): - pList = [] - pList.append( PluginDescriptor(where=PluginDescriptor.WHERE_SESSIONSTART, fnc=OnSessionStart) ) - pList.append( PluginDescriptor(name=_("Ultimo4K Misc. Control"), description="set Ultimo4K LNB Power and etc..", where = PluginDescriptor.WHERE_PLUGINMENU, needsRestart = False, fnc=main) ) - return pList - diff --git a/lib/python/Screens/Ci.py b/lib/python/Screens/Ci.py index 666033b..f671dde 100644 --- a/lib/python/Screens/Ci.py +++ b/lib/python/Screens/Ci.py @@ -3,7 +3,7 @@ from Components.ActionMap import ActionMap from Components.ActionMap import NumberActionMap from Components.Label import Label -from Components.config import config, ConfigSubsection, ConfigSelection, ConfigSubList, getConfigListEntry, KEY_LEFT, KEY_RIGHT, KEY_0, ConfigNothing, ConfigPIN +from Components.config import config, ConfigSubsection, ConfigSelection, ConfigSubList, getConfigListEntry, KEY_LEFT, KEY_RIGHT, KEY_0, ConfigNothing, ConfigPIN, ConfigYesNo from Components.ConfigList import ConfigList from Components.SystemInfo import SystemInfo @@ -11,56 +11,37 @@ from Tools.Directories import fileExists from enigma import eTimer, eDVBCI_UI, eDVBCIInterfaces -MAX_NUM_CI = 4 - def setCIBitrate(configElement): - if configElement.value == "no": - eDVBCI_UI.getInstance().setClockRate(configElement.slotid, eDVBCI_UI.rateNormal) - else: - eDVBCI_UI.getInstance().setClockRate(configElement.slotid, eDVBCI_UI.rateHigh) + eDVBCI_UI.getInstance().setClockRate(configElement.slotid, eDVBCI_UI.rateHigh if configElement.value else eDVBCI_UI.rateNormal) def setRelevantPidsRouting(configElement): - fileName = "/proc/stb/tsmux/ci%d_relevant_pids_routing" % (configElement.slotid) - if not fileExists(fileName, 'r'): - print "[CI] file not found : ", fileName - else: - data = configElement.value - if data in ("yes", "no"): - fd = open(fileName, 'w') - fd.write("%s" % data) - fd.close() - -relevantPidsRoutingChoices = None + open(SystemInfo["CI%dRelevantPidsRoutingSupport" % configElement.slotid], "w").write("yes" if configElement.value else "no") + +def setdvbCiDelay(configElement): + open(SystemInfo["CommonInterfaceCIDelay"], "w").write(configElement.value) + configElement.save() + def InitCiConfig(): config.ci = ConfigSubList() - for slot in range(MAX_NUM_CI): - config.ci.append(ConfigSubsection()) - config.ci[slot].canDescrambleMultipleServices = ConfigSelection(choices = [("auto", _("Auto")), ("no", _("No")), ("yes", _("Yes"))], default = "auto") - if SystemInfo["CommonInterfaceSupportsHighBitrates"]: - config.ci[slot].canHandleHighBitrates = ConfigSelection(choices = [("no", _("No")), ("yes", _("Yes"))], default = "no") - config.ci[slot].canHandleHighBitrates.slotid = slot - config.ci[slot].canHandleHighBitrates.addNotifier(setCIBitrate) - - if SystemInfo["RelevantPidsRoutingSupport"]: - global relevantPidsRoutingChoices - if not relevantPidsRoutingChoices: - relevantPidsRoutingChoices = [("no", _("No")), ("yes", _("Yes"))] - default = "no" - fileName = "/proc/stb/tsmux/ci%d_relevant_pids_routing_choices" - if fileExists(fileName, 'r'): - relevantPidsRoutingChoices = [] - fd = open(fileName, 'r') - data = fd.read() - data = data.split() - for x in data: - relevantPidsRoutingChoices.append((x, _(x))) - if default not in data: - default = data[0] - - config.ci[slot].relevantPidsRouting = ConfigSelection(choices = relevantPidsRoutingChoices, default = default) - config.ci[slot].relevantPidsRouting.slotid = slot - config.ci[slot].relevantPidsRouting.addNotifier(setRelevantPidsRouting) - + config.cimisc = ConfigSubsection() + if SystemInfo["CommonInterface"]: + for slot in range(SystemInfo["CommonInterface"]): + config.ci.append(ConfigSubsection()) + config.ci[slot].canDescrambleMultipleServices = ConfigSelection(choices = [("auto", _("Auto")), ("no", _("No")), ("yes", _("Yes"))], default = "auto") + if SystemInfo["CI%dSupportsHighBitrates" % slot]: + config.ci[slot].canHandleHighBitrates = ConfigYesNo(default = False) + config.ci[slot].canHandleHighBitrates.slotid = slot + config.ci[slot].canHandleHighBitrates.addNotifier(setCIBitrate) + + if SystemInfo["CI%dRelevantPidsRoutingSupport" % slot]: + config.ci[slot].relevantPidsRouting = ConfigYesNo(default = False) + config.ci[slot].relevantPidsRouting.slotid = slot + config.ci[slot].relevantPidsRouting.addNotifier(setRelevantPidsRouting) + + if SystemInfo["CommonInterfaceCIDelay"]: + config.cimisc.dvbCiDelay = ConfigSelection(default = "256", choices = [("16"), ("32"), ("64"), ("128"), ("256")]) + config.cimisc.dvbCiDelay.addNotifier(setdvbCiDelay) + class MMIDialog(Screen): def __init__(self, session, slotid, action, handler = eDVBCI_UI.getInstance(), wait_text = _("wait for ci...") ): Screen.__init__(self, session) @@ -269,20 +250,6 @@ class CiMessageHandler: self.ci = { } self.dlgs = { } eDVBCI_UI.getInstance().ciStateChanged.get().append(self.ciStateChanged) - SystemInfo["CommonInterface"] = eDVBCIInterfaces.getInstance().getNumOfSlots() > 0 - try: - file = open("/proc/stb/tsmux/ci0_tsclk", "r") - file.close() - SystemInfo["CommonInterfaceSupportsHighBitrates"] = True - except: - SystemInfo["CommonInterfaceSupportsHighBitrates"] = False - - try: - file = open("/proc/stb/tsmux/ci0_relevant_pids_routing", "r") - file.close() - SystemInfo["RelevantPidsRoutingSupport"] = True - except: - SystemInfo["RelevantPidsRoutingSupport"] = False def setSession(self, session): self.session = session @@ -329,6 +296,7 @@ class CiSelection(Screen): self.RelevantPidsRoutingEntry = {} self.entryData = [] + self.DVBCiDelayEntry = None self.list = [ ] self["entries"] = ConfigList(self.list) @@ -338,7 +306,7 @@ class CiSelection(Screen): self.onLayoutFinish.append(self.initialUpdate) def initialUpdate(self): - for slot in range(MAX_NUM_CI): + for slot in range(SystemInfo["CommonInterface"]): state = eDVBCI_UI.getInstance().getState(slot) if state != -1: self.slots.append(slot) @@ -346,7 +314,10 @@ class CiSelection(Screen): self.createEntries(slot) CiHandler.registerCIMessageHandler(slot, self.ciStateChanged) + self.slots.sort() self.updateEntries() + if self.slots: + self["text"].setText(_("Slot %d")% (int(self.slots[0])+1)) def selectionChanged(self): entryData = self.entryData[self["entries"].getCurrentIndex()] @@ -367,10 +338,12 @@ class CiSelection(Screen): self.keyConfigEntry(KEY_RIGHT) def createEntries(self, slot): - if SystemInfo["CommonInterfaceSupportsHighBitrates"]: + if SystemInfo["CI%dSupportsHighBitrates" % slot]: self.HighBitrateEntry[slot] = getConfigListEntry(_("High bitrate support"), config.ci[slot].canHandleHighBitrates) - if SystemInfo["RelevantPidsRoutingSupport"]: + if SystemInfo["CI%dRelevantPidsRoutingSupport" % slot]: self.RelevantPidsRoutingEntry[slot] = getConfigListEntry(_("Relevant PIDs Routing"), config.ci[slot].relevantPidsRouting) + if SystemInfo["CommonInterfaceCIDelay"] and self.DVBCiDelayEntry is None: + self.DVBCiDelayEntry = getConfigListEntry(_("DVB CI Delay"), config.cimisc.dvbCiDelay) def addToList(self, data, action, slotid): self.list.append(data) @@ -379,6 +352,7 @@ class CiSelection(Screen): def updateEntries(self): self.list = [] self.entryData = [] + for slot in self.slots: self.addToList((_("Reset"), ConfigNothing()), 0, slot) self.addToList((_("Init"), ConfigNothing()), 1, slot) @@ -394,10 +368,12 @@ class CiSelection(Screen): self.addToList(getConfigListEntry(_("Multiple service support"), config.ci[slot].canDescrambleMultipleServices), -1, slot) - if SystemInfo["CommonInterfaceSupportsHighBitrates"]: + if SystemInfo["CI%dSupportsHighBitrates" % slot]: self.addToList(self.HighBitrateEntry[slot], -1, slot) - if SystemInfo["RelevantPidsRoutingSupport"]: + if SystemInfo["CI%dRelevantPidsRoutingSupport" % slot]: self.addToList(self.RelevantPidsRoutingEntry[slot], -1, slot) + if SystemInfo["CommonInterfaceCIDelay"]: + self.addToList(self.DVBCiDelayEntry, -1, slot) self["entries"].list = self.list self["entries"].l.setList(self.list) @@ -432,7 +408,7 @@ class CiSelection(Screen): self.dlg = self.session.openWithCallback(self.dlgClosed, MMIDialog, slot, action) def cancel(self): - for slot in range(MAX_NUM_CI): + for slot in range(SystemInfo["CommonInterface"]): state = eDVBCI_UI.getInstance().getState(slot) if state != -1: CiHandler.unregisterCIMessageHandler(slot) diff --git a/lib/python/Tools/Directories.py b/lib/python/Tools/Directories.py index b886459..6aa5271 100755 --- a/lib/python/Tools/Directories.py +++ b/lib/python/Tools/Directories.py @@ -242,6 +242,9 @@ def fileExists(f, mode='r'): acc_mode = F_OK return access(f, acc_mode) +def fileCheck(f, mode='r'): + return fileExists(f, mode) and f + def getRecordingFilename(basename, dirname = None): if not dirname.endswith('/'): dirname += '/' -- 2.7.4