X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/70f8d30f912fa0c9f2defdf3a40b59fa5e21c656..391ca6cf8a60f58aa666f5ab5b92286370ef8afc:/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 064ac673..e611ca53 100644 --- a/lib/python/Plugins/SystemPlugins/Satfinder/plugin.py +++ b/lib/python/Plugins/SystemPlugins/Satfinder/plugin.py @@ -12,31 +12,7 @@ from Components.ActionMap import ActionMap from Components.NimManager import nimmanager, getConfigSatlist from Components.MenuList import MenuList from Components.config import ConfigSelection, getConfigListEntry - -class Tuner: - def __init__(self, frontend): - self.frontend = frontend - - def tune(self, transponder): - if self.frontend: - print "tuning to transponder with data", transponder - parm = eDVBFrontendParametersSatellite() - parm.frequency = transponder[0] * 1000 - parm.symbol_rate = transponder[1] * 1000 - parm.polarisation = transponder[2] - parm.fec = transponder[3] - parm.inversion = transponder[4] - parm.orbital_position = transponder[5] - parm.system = 0 # FIXMEE !! HARDCODED DVB-S (add support for DVB-S2) - parm.modulation = 1 # FIXMEE !! HARDCODED QPSK - feparm = eDVBFrontendParameters() - feparm.setDVBS(parm) - self.lastparm = feparm - self.frontend.tune(feparm) - - def retune(self): - if self.frontend: - self.frontend.tune(self.lastparm) +from Components.TuneTest import Tuner class Satfinder(ScanSetup): def openFrontend(self): @@ -85,25 +61,44 @@ class Satfinder(ScanSetup): self.satEntry = None self.list = [] + self.typeOfTuningEntry = getConfigListEntry(_('Tune'), self.tuning_type) self.list.append(self.typeOfTuningEntry) self.satEntry = getConfigListEntry(_('Satellite'), self.tuning_sat) self.list.append(self.satEntry) + + nim = nimmanager.nim_slots[self.feid] + + self.systemEntry = None if self.tuning_type.value == "manual_transponder": + if nim.isCompatible("DVB-S2"): + self.systemEntry = getConfigListEntry(_('System'), self.scan_sat.system) + self.list.append(self.systemEntry) + else: + # downgrade to dvb-s, in case a -s2 config was active + self.scan_sat.system.value = eDVBFrontendParametersSatellite.System_DVB_S self.list.append(getConfigListEntry(_('Frequency'), self.scan_sat.frequency)) self.list.append(getConfigListEntry(_('Inversion'), self.scan_sat.inversion)) - self.list.append(getConfigListEntry(_('Symbol Rate'), self.scan_sat.symbolrate)) - self.list.append(getConfigListEntry(_("Polarity"), self.scan_sat.polarization)) - self.list.append(getConfigListEntry(_("FEC"), self.scan_sat.fec)) + self.list.append(getConfigListEntry(_('Symbol rate'), self.scan_sat.symbolrate)) + self.list.append(getConfigListEntry(_('Polarization'), self.scan_sat.polarization)) + if self.scan_sat.system.value == eDVBFrontendParametersSatellite.System_DVB_S: + self.list.append(getConfigListEntry(_("FEC"), self.scan_sat.fec)) + elif self.scan_sat.system.value == eDVBFrontendParametersSatellite.System_DVB_S2: + self.list.append(getConfigListEntry(_("FEC"), self.scan_sat.fec_s2)) + self.modulationEntry = getConfigListEntry(_('Modulation'), self.scan_sat.modulation) + self.list.append(self.modulationEntry) + self.list.append(getConfigListEntry(_('Roll-off'), self.scan_sat.rolloff)) + self.list.append(getConfigListEntry(_('Pilot'), self.scan_sat.pilot)) elif self.tuning_transponder and self.tuning_type.value == "predefined_transponder": self.list.append(getConfigListEntry(_("Transponder"), self.tuning_transponder)) self["config"].list = self.list self["config"].l.setList(self.list) def newConfig(self): - if self["config"].getCurrent() == self.typeOfTuningEntry: + cur = self["config"].getCurrent() + if cur in (self.typeOfTuningEntry, self.systemEntry): self.createSetup() - elif self["config"].getCurrent() == self.satEntry: + elif cur == self.satEntry: self.updateSats() self.createSetup() @@ -112,20 +107,33 @@ class Satfinder(ScanSetup): self.retune(config_element) def retune(self, configElement): - returnvalue = (0, 0, 0, 0, 0, 0, 0) - satpos = self.tuning_sat.orbital_position - - 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) + returnvalue = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0) + satpos = int(self.tuning_sat.value) + if self.tuning_type.value == "manual_transponder": + if self.scan_sat.system.value == eDVBFrontendParametersSatellite.System_DVB_S2: + fec = self.scan_sat.fec_s2.value + else: + fec = self.scan_sat.fec.value + returnvalue = ( + self.scan_sat.frequency.value, + self.scan_sat.symbolrate.value, + self.scan_sat.polarization.value, + fec, + self.scan_sat.inversion.value, + satpos, + self.scan_sat.system.value, + self.scan_sat.modulation.value, + self.scan_sat.rolloff.value, + self.scan_sat.pilot.value) + self.tune(returnvalue) + elif self.tuning_type.value == "predefined_transponder": + tps = nimmanager.getTransponders(satpos) + l = len(tps) + if l > self.tuning_transponder.index: + transponder = tps[self.tuning_transponder.index] + returnvalue = (transponder[1] / 1000, transponder[2] / 1000, + transponder[3], transponder[4], 2, satpos, transponder[5], transponder[6], transponder[8], transponder[9]) self.tune(returnvalue) - elif self.tuning_type.value == "predefined_transponder": - 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 @@ -134,14 +142,13 @@ class Satfinder(ScanSetup): ScanSetup.createConfig(self, None) self.updateSats() - - self.tuning_type.addNotifier(self.retune, initial_call = False) - self.tuning_sat.addNotifier(self.sat_changed, initial_call = False) - self.scan_sat.frequency.addNotifier(self.retune, initial_call = False) - self.scan_sat.inversion.addNotifier(self.retune, initial_call = False) - self.scan_sat.symbolrate.addNotifier(self.retune, initial_call = False) - self.scan_sat.polarization.addNotifier(self.retune, initial_call = False) - self.scan_sat.fec.addNotifier(self.retune, initial_call = False) + + for x in (self.tuning_type, self.tuning_sat, self.scan_sat.frequency, + self.scan_sat.inversion, self.scan_sat.symbolrate, + self.scan_sat.polarization, self.scan_sat.fec, self.scan_sat.pilot, + self.scan_sat.fec_s2, self.scan_sat.fec, self.scan_sat.modulation, + self.scan_sat.rolloff, self.scan_sat.system): + x.addNotifier(self.retune, initial_call = False) def updateSats(self): orb_pos = self.tuning_sat.orbital_position @@ -149,6 +156,7 @@ class Satfinder(ScanSetup): transponderlist = nimmanager.getTransponders(orb_pos) list = [] default = None + index = 0 for x in transponderlist: if x[3] == 0: pol = "H" @@ -161,33 +169,34 @@ class Satfinder(ScanSetup): else: pol = "??" if x[4] == 0: - fec = "FEC_AUTO" + fec = "FEC Auto" elif x[4] == 1: - fec = "FEC_1_2" + fec = "FEC 1/2" elif x[4] == 2: - fec = "FEC_2_3" + fec = "FEC 2/3" elif x[4] == 3: - fec = "FEC_3_4" + fec = "FEC 3/4" elif x[4] == 4: - fec = "FEC_5_6" + fec = "FEC 5/6" elif x[4] == 5: - fec = "FEC_7_8" + fec = "FEC 7/8" elif x[4] == 6: - fec = "FEC_8_9" + fec = "FEC 8/9" elif x[4] == 7: - fec = "FEC_3_5" + fec = "FEC 3/5" elif x[4] == 8: - fec = "FEC_4_5" + fec = "FEC 4/5" elif x[4] == 9: - fec = "FEC_9_10" + fec = "FEC 9/10" elif x[4] == 15: - fec = "FEC_None" + fec = "FEC None" else: - fec = "FEC_Unknown" + fec = "FEC Unknown" e = str(x[1]) + "," + str(x[2]) + "," + pol + "," + fec if default is None: - default = e - list.append(e) + default = str(index) + list.append((str(index), e)) + index += 1 self.tuning_transponder = ConfigSelection(choices = list, default = default) self.tuning_transponder.addNotifier(self.retune, initial_call = False) @@ -216,8 +225,8 @@ class Satfinder(ScanSetup): class SatNimSelection(Screen): skin = """ - - + + """ def __init__(self, session): @@ -241,7 +250,13 @@ class SatNimSelection(Screen): self.session.open(Satfinder, selection) def SatfinderMain(session, **kwargs): - nimList = nimmanager.getNimListOfType("DVB-S") + nims = nimmanager.getNimListOfType("DVB-S") + + nimList = [] + for x in nims: + if not nimmanager.getNimConfig(x).configMode.value in ("loopthrough", "satposdepends", "nothing"): + nimList.append(x) + if len(nimList) == 0: session.open(MessageBox, _("No satellite frontend found!!"), MessageBox.TYPE_ERROR) else: @@ -261,6 +276,6 @@ def SatfinderStart(menuid, **kwargs): def Plugins(**kwargs): if (nimmanager.hasNimType("DVB-S")): - return PluginDescriptor(name=_("Satfinder"), description="Helps setting up your dish", where = PluginDescriptor.WHERE_MENU, fnc=SatfinderStart) + return PluginDescriptor(name=_("Satfinder"), description="Helps setting up your dish", where = PluginDescriptor.WHERE_MENU, needsRestart = False, fnc=SatfinderStart) else: return []