X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/ed40f6f85c9c07c3c1224ae20601082c0309a631..cab018779de4f2f01e0fe651e71112754ebd0ef8:/lib/python/Plugins/SystemPlugins/Satfinder/plugin.py diff --git a/lib/python/Plugins/SystemPlugins/Satfinder/plugin.py b/lib/python/Plugins/SystemPlugins/Satfinder/plugin.py index 89fbc4bb..74568855 100644 --- a/lib/python/Plugins/SystemPlugins/Satfinder/plugin.py +++ b/lib/python/Plugins/SystemPlugins/Satfinder/plugin.py @@ -1,16 +1,17 @@ -from enigma import eTimer, eDVBSatelliteEquipmentControl, eDVBResourceManager, eDVBDiseqcCommand, eDVBFrontendParametersSatellite, eDVBFrontendParameters +from enigma import eDVBResourceManager,\ + eDVBFrontendParametersSatellite, eDVBFrontendParameters + from Screens.Screen import Screen from Screens.ScanSetup import ScanSetup from Screens.MessageBox import MessageBox from Plugins.Plugin import PluginDescriptor from Components.Label import Label -from Components.ConfigList import ConfigList -from Components.TunerInfo import TunerInfo +from Components.Sources.FrontendStatus import FrontendStatus from Components.ActionMap import ActionMap from Components.NimManager import nimmanager, getConfigSatlist from Components.MenuList import MenuList -from Components.config import ConfigSelection, ConfigSatlist, getConfigListEntry +from Components.config import ConfigSelection, getConfigListEntry class Tuner: def __init__(self, frontend): @@ -40,19 +41,42 @@ class Tuner: class Satfinder(ScanSetup): skin = """ - + - - - - - - - - - - - + + + + + + + SNRdB + + + SNR + + + AGC + + + BER + + + SNR + + + AGC + + + BER + + + LOCK + + + + LOCK + Invert + """ def openFrontend(self): @@ -71,14 +95,11 @@ class Satfinder(ScanSetup): print "getResourceManager instance failed" return False - def getFrontend(self): - return self.frontend - def __init__(self, session, feid): self.initcomplete = False self.feid = feid self.oldref = None - + if not self.openFrontend(): self.oldref = session.nav.getCurrentlyPlayingServiceReference() session.nav.stopService() # try to disable foreground service @@ -88,40 +109,16 @@ class Satfinder(ScanSetup): del session.pip if not self.openFrontend(): self.frontend = None # in normal case this should not happen - self.getFrontend = None - + ScanSetup.__init__(self, session) self.tuner = Tuner(self.frontend) - - self["snr"] = Label() - self["agc"] = Label() - self["ber"] = Label() - self["lock"] = Label() - self["snr_percentage"] = TunerInfo(TunerInfo.SNR_PERCENTAGE, frontendfkt = self.getFrontend) - self["agc_percentage"] = TunerInfo(TunerInfo.AGC_PERCENTAGE, frontendfkt = self.getFrontend) - self["ber_value"] = TunerInfo(TunerInfo.BER_VALUE, frontendfkt = self.getFrontend) - self["snr_bar"] = TunerInfo(TunerInfo.SNR_BAR, frontendfkt = self.getFrontend) - self["agc_bar"] = TunerInfo(TunerInfo.AGC_BAR, frontendfkt = self.getFrontend) - self["ber_bar"] = TunerInfo(TunerInfo.BER_BAR, frontendfkt = self.getFrontend) - self["lock_state"] = TunerInfo(TunerInfo.LOCK_STATE, frontendfkt = self.getFrontend) - self["introduction"].setText("") - - self.statusTimer = eTimer() - self.statusTimer.timeout.get().append(self.updateStatus) - self.statusTimer.start(50, False) - + self["Frontend"] = FrontendStatus(frontend_source = lambda : self.frontend, update_interval = 100) self.initcomplete = True - self.session = session + self.onClose.append(self.__onClose) - def updateStatus(self): - self["snr_percentage"].update() - self["agc_percentage"].update() - self["ber_value"].update() - self["snr_bar"].update() - self["agc_bar"].update() - self["ber_bar"].update() - self["lock_state"].update() + def __onClose(self): + self.session.nav.playService(self.oldref) def createSetup(self): self.typeOfTuningEntry = None @@ -161,10 +158,14 @@ class Satfinder(ScanSetup): if satpos is not None: if self.tuning_type.value == "manual_transponder": returnvalue = (self.scan_sat.frequency.value, self.scan_sat.symbolrate.value, self.scan_sat.polarization.index, self.scan_sat.fec.index, self.scan_sat.inversion.index, satpos) + self.tune(returnvalue) elif self.tuning_type.value == "predefined_transponder": - transponder = nimmanager.getTransponders(satpos)[self.tuning_transponder.index] - returnvalue = (int(transponder[1] / 1000), int(transponder[2] / 1000), transponder[3], transponder[4], 2, satpos) - self.tune(returnvalue) + tps = nimmanager.getTransponders(satpos) + l = len(tps) + if l > self.tuning_transponder.index: + transponder = nimmanager.getTransponders(satpos)[self.tuning_transponder.index] + returnvalue = (int(transponder[1] / 1000), int(transponder[2] / 1000), transponder[3], transponder[4], 2, satpos) + self.tune(returnvalue) def createConfig(self, foo): self.tuning_transponder = None @@ -187,6 +188,7 @@ class Satfinder(ScanSetup): if orb_pos is not None: transponderlist = nimmanager.getTransponders(orb_pos) list = [] + default = None for x in transponderlist: if x[3] == 0: pol = "H" @@ -196,6 +198,8 @@ class Satfinder(ScanSetup): pol = "CL" elif x[3] == 3: pol = "CR" + else: + pol = "??" if x[4] == 0: fec = "FEC_AUTO" elif x[4] == 1: @@ -208,12 +212,23 @@ class Satfinder(ScanSetup): fec = "FEC_5_6" elif x[4] == 5: fec = "FEC_7_8" - elif x[4] == 5: - fec = "FEC_8_9" elif x[4] == 6: + fec = "FEC_8_9" + elif x[4] == 7: + fec = "FEC_3_5" + elif x[4] == 8: + fec = "FEC_4_5" + elif x[4] == 9: + fec = "FEC_9_10" + elif x[4] == 15: fec = "FEC_None" - list.append(str(x[1]) + "," + str(x[2]) + "," + pol + "," + fec) - self.tuning_transponder = ConfigSelection(choices = list) + else: + fec = "FEC_Unknown" + e = str(x[1]) + "," + str(x[2]) + "," + pol + "," + fec + if default is None: + default = e + list.append(e) + self.tuning_transponder = ConfigSelection(choices = list, default = default) self.tuning_transponder.addNotifier(self.retune, initial_call = False) def keyGo(self): @@ -224,7 +239,8 @@ class Satfinder(ScanSetup): if self.frontend: self.frontend = None del self.raw_channel - self.session.nav.playService(self.oldref) + else: + self.oldref = None self.close(None) def keyCancel(self): @@ -238,7 +254,7 @@ class Satfinder(ScanSetup): if transponder is not None: self.tuner.tune(transponder) -class NimSelection(Screen): +class SatNimSelection(Screen): skin = """ @@ -247,11 +263,11 @@ class NimSelection(Screen): def __init__(self, session): Screen.__init__(self, session) - nimlist = nimmanager.getNimListOfType(nimmanager.nimType["DVB-S"]) + nimlist = nimmanager.getNimListOfType("DVB-S") nimMenuList = [] for x in nimlist: - nimMenuList.append((_("NIM ") + (["A", "B", "C", "D"][x]) + ": " + nimmanager.getNimName(x) + " (" + nimmanager.getNimTypeName(x) + ")", x)) - + nimMenuList.append((nimmanager.nim_slots[x].friendly_full_description, x)) + self["nimlist"] = MenuList(nimMenuList) self["actions"] = ActionMap(["OkCancelActions"], @@ -261,11 +277,11 @@ class NimSelection(Screen): }, -1) def okbuttonClick(self): - selection = self["nimlist"].getCurrent() - self.session.open(Satfinder, selection[1]) + selection = self["nimlist"].getCurrent()[1] + self.session.open(Satfinder, selection) def SatfinderMain(session, **kwargs): - nimList = nimmanager.getNimListOfType(nimmanager.nimType["DVB-S"]) + nimList = nimmanager.getNimListOfType("DVB-S") if len(nimList) == 0: session.open(MessageBox, _("No satellite frontend found!!"), MessageBox.TYPE_ERROR) else: @@ -275,13 +291,16 @@ def SatfinderMain(session, **kwargs): if len(nimList) == 1: session.open(Satfinder, nimList[0]) else: - session.open(NimSelection) + session.open(SatNimSelection) -def SatfinderStart(menuid): +def SatfinderStart(menuid, **kwargs): if menuid == "scan": - return [(_("Satfinder"), SatfinderMain)] + return [(_("Satfinder"), SatfinderMain, "satfinder", None)] else: return [] def Plugins(**kwargs): - return PluginDescriptor(name=_("Satfinder"), description="Helps setting up your dish", where = PluginDescriptor.WHERE_SETUP, fnc=SatfinderStart) + if (nimmanager.hasNimType("DVB-S")): + return PluginDescriptor(name=_("Satfinder"), description="Helps setting up your dish", where = PluginDescriptor.WHERE_MENU, fnc=SatfinderStart) + else: + return []