X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/ddca4f01fa219240987d2b2ba15d04863ada879e..a4cadca93a60d5a5019d2a063e39d66f50e576e2:/lib/python/Plugins/SystemPlugins/PositionerSetup/plugin.py diff --git a/lib/python/Plugins/SystemPlugins/PositionerSetup/plugin.py b/lib/python/Plugins/SystemPlugins/PositionerSetup/plugin.py index 73bf5bbf..76e4bee4 100644 --- a/lib/python/Plugins/SystemPlugins/PositionerSetup/plugin.py +++ b/lib/python/Plugins/SystemPlugins/PositionerSetup/plugin.py @@ -15,31 +15,31 @@ from Components.config import config, ConfigSubsection, configElement_nonSave, c class PositionerSetup(Screen): skin = """ - + - - - - + + + + - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + """ def __init__(self, session, feid): self.skin = PositionerSetup.skin @@ -51,7 +51,7 @@ class PositionerSetup(Screen): self.diseqc = Diseqc(self.feid) self.tuner = Tuner(self.diseqc.getFrontend()) - self.tuner.tune((0,0,0,0,0,0,0,0)) + self.tuner.tune((0,0,0,0,0,0,0,0,0)) #self.session.nav.stopService() @@ -119,8 +119,9 @@ class PositionerSetup(Screen): config.positioner.move = configElement_nonSave("move", configNothing, 0, None) config.positioner.finemove = configElement_nonSave("finemove", configNothing, 0, None) config.positioner.limits = configElement_nonSave("limits", configNothing, 0, None) + config.positioner.goto0 = configElement_nonSave("goto0", configNothing, 0, None) storepos = [] - for x in range(255): + for x in range(1,255): storepos.append(str(x)) config.positioner.storage = configElement_nonSave("storage", configSelection, 0, storepos) @@ -130,7 +131,7 @@ class PositionerSetup(Screen): self.list.append(getConfigListEntry(_("Positioner fine movement"), config.positioner.finemove)) self.list.append(getConfigListEntry(_("Set limits"), config.positioner.limits)) self.list.append(getConfigListEntry(_("Positioner storage"), config.positioner.storage)) - + self.list.append(getConfigListEntry(_("Goto 0"), config.positioner.goto0)) self["list"].l.setList(self.list) def go(self): @@ -157,7 +158,7 @@ class PositionerSetup(Screen): def updateColors(self, entry): if entry == "tune": - self.red.setText("tune") + self.red.setText(_("Tune")) self.green.setText("") self.yellow.setText("") self.blue.setText("") @@ -181,12 +182,17 @@ class PositionerSetup(Screen): self.red.setText(_("Limits off")) self.green.setText(_("Limit west")) self.yellow.setText(_("Limit east")) - self.blue.setText("") + self.blue.setText(_("Limits on")) elif entry == "storage": self.red.setText("") self.green.setText(_("Store position")) self.yellow.setText(_("Goto position")) self.blue.setText("") + elif entry == "goto0": + self.red.setText(_("Goto 0")) + self.green.setText("") + self.yellow.setText("") + self.blue.setText("") else: self.red.setText("") self.green.setText("") @@ -208,7 +214,10 @@ class PositionerSetup(Screen): self.diseqccommand("limitOff") elif entry == "tune": self.session.openWithCallback(self.tune, TunerScreen, self.feid) - + elif entry == "goto0": + print "move to position 0" + self.diseqccommand("moveTo", 0) + def greenKey(self): entry = self.getCurrentConfigPath() if entry == "move": @@ -223,7 +232,7 @@ class PositionerSetup(Screen): self.updateColors("move") elif entry == "finemove": print "stepping west" - self.diseqccommand("moveWest", 1) + self.diseqccommand("moveWest", 0xFF) # one step elif entry == "storage": print "store at position", (config.positioner.storage.value + 1) self.diseqccommand("store", config.positioner.storage.value + 1) @@ -244,7 +253,7 @@ class PositionerSetup(Screen): self.updateColors("move") elif entry == "finemove": print "stepping east" - self.diseqccommand("moveEast", 1) + self.diseqccommand("moveEast", 0xFF) # one step elif entry == "storage": print "move to position", (config.positioner.storage.value + 1) self.diseqccommand("moveTo", config.positioner.storage.value + 1) @@ -263,7 +272,9 @@ class PositionerSetup(Screen): self.isMoving = True self.updateColors("move") print "moving east" - + elif entry == "limits": + self.diseqccommand("limitOn") + def diseqccommand(self, cmd, param = 0): self.diseqc.command(cmd, param) self.tuner.retune() @@ -322,6 +333,8 @@ class Diseqc: string = 'e0316b' + ("%02x" % param) elif what == "store": string = 'e0316a' + ("%02x" % param) + elif what == "limitOn": + string = 'e0316a00' elif what == "limitOff": string = 'e03163' elif what == "limitEast": @@ -348,7 +361,9 @@ class Tuner: parm.polarisation = transponder[2] parm.fec = transponder[3] parm.inversion = transponder[4] - parm.orbital_position = 192 + 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, True) self.lastparm = feparm @@ -404,49 +419,53 @@ class TunerScreen(ScanSetup): config.tuning = ConfigSubsection() config.tuning.type = configElement_nonSave("config.tuning.type", configSelection, 0, (("manual_transponder", _("Manual transponder")), ("predefined_transponder", _("Predefined satellite")))) - - config.tuning.sat = configElement_nonSave("config.tuning.sat", configSatlist, 192, nimmanager.getSatListForNim(self.feid)) + + config.tuning.sat = configElement_nonSave("config.tuning.sat", configSatlist, 192, nimmanager.getRotorSatListForNim(self.feid)) ScanSetup.createConfig(self) self.updateSats() def updateSats(self): - transponderlist = nimmanager.getTransponders(config.tuning.sat.vals[config.tuning.sat.value][1]) - list = [] - for x in transponderlist: - if x[3] == 0: - pol = "H" - elif x[3] == 1: - pol = "V" - elif x[3] == 2: - pol = "CL" - elif x[3] == 3: - pol = "CR" - if x[4] == 0: - fec = "FEC_AUTO" - elif x[4] == 1: - fec = "FEC_1_2" - elif x[4] == 2: - fec = "FEC_2_3" - elif x[4] == 3: - fec = "FEC_3_4" - elif x[4] == 4: - 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_None" - list.append(str(x[1]) + "," + str(x[2]) + "," + pol + "," + fec) - config.tuning.transponder = configElement_nonSave("config.tuning.transponder", configSelection, 0, list) + satnum = config.tuning.sat.value + satlist = config.tuning.sat.vals + if len(satlist): + transponderlist = nimmanager.getTransponders(satlist[satnum][1]) + list = [] + for x in transponderlist: + if x[3] == 0: + pol = "H" + elif x[3] == 1: + pol = "V" + elif x[3] == 2: + pol = "CL" + elif x[3] == 3: + pol = "CR" + if x[4] == 0: + fec = "FEC_AUTO" + elif x[4] == 1: + fec = "FEC_1_2" + elif x[4] == 2: + fec = "FEC_2_3" + elif x[4] == 3: + fec = "FEC_3_4" + elif x[4] == 4: + 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_None" + list.append(str(x[1]) + "," + str(x[2]) + "," + pol + "," + fec) + config.tuning.transponder = configElement_nonSave("config.tuning.transponder", configSelection, 0, list) def keyGo(self): - returnvalue = (0, 0, 0, 0, 0, 0) + returnvalue = (0, 0, 0, 0, 0, 0, 0) + satpos = config.tuning.sat.vals[config.tuning.sat.value][1] if currentConfigSelectionElement(config.tuning.type) == "manual_transponder": - returnvalue = (config.scan.sat.frequency.value[0], config.scan.sat.symbolrate.value[0], config.scan.sat.polarization.value, config.scan.sat.fec.value, config.scan.sat.inversion.value) + returnvalue = (config.scan.sat.frequency.value[0], config.scan.sat.symbolrate.value[0], config.scan.sat.polarization.value, config.scan.sat.fec.value, config.scan.sat.inversion.value, satpos) elif currentConfigSelectionElement(config.tuning.type) == "predefined_transponder": transponder = nimmanager.getTransponders(config.tuning.sat.vals[config.tuning.sat.value][1])[config.tuning.transponder.value] - returnvalue = (int(transponder[1] / 100), int(transponder[2] / 1000), transponder[3], transponder[4], 2, config.tuning.sat.vals[config.tuning.sat.value][1]) + returnvalue = (int(transponder[1] / 1000), int(transponder[2] / 1000), transponder[3], transponder[4], 2, config.tuning.sat.vals[config.tuning.sat.value][1], satpos) self.close(returnvalue) def keyCancel(self): @@ -461,7 +480,12 @@ class NimSelection(Screen): def __init__(self, session): Screen.__init__(self, session) - self["nimlist"] = MenuList(nimmanager.getNimListOfType(nimmanager.nimType["DVB-S"])) + nimlist = nimmanager.getNimListOfType(nimmanager.nimType["DVB-S"]) + nimMenuList = [] + for x in nimlist: + nimMenuList.append((_("NIM ") + (["A", "B", "C", "D"][x]) + ": " + nimmanager.getNimName(x) + " (" + nimmanager.getNimTypeName(x) + ")", x)) + + self["nimlist"] = MenuList(nimMenuList) self["actions"] = ActionMap(["OkCancelActions"], { @@ -471,17 +495,27 @@ class NimSelection(Screen): def okbuttonClick(self): selection = self["nimlist"].getCurrent() - self.session.open(PositionerSetup, selection[1].slotid) + self.session.open(PositionerSetup, selection[1]) def PositionerMain(session, **kwargs): nimList = nimmanager.getNimListOfType(nimmanager.nimType["DVB-S"]) if len(nimList) == 0: session.open(MessageBox, _("No positioner capable frontend found."), MessageBox.TYPE_ERROR) - elif len(nimList) == 1: - session.open(PositionerSetup, nimList[0]) else: - session.open(NimSelection) - + if session.nav.RecordTimer.isRecording(): + session.open(MessageBox, _("A recording is currently running. Please stop the recording before trying to configure the positioner."), MessageBox.TYPE_ERROR) + else: + usableNims = [] + for x in nimList: + configured_rotor_sats = nimmanager.getRotorSatListForNim(x) + if len(configured_rotor_sats) != 0: + usableNims.append(x) + if len(usableNims) == 1: + session.open(PositionerSetup, usableNims[0]) + elif len(usableNims) > 1: + session.open(NimSelection) + else: + session.open(MessageBox, _("No tuner is configured for use with a diseqc positioner!"), MessageBox.TYPE_ERROR) def Plugins(**kwargs): return PluginDescriptor(name="Positioner setup", description="Setup your positioner", where = PluginDescriptor.WHERE_PLUGINMENU, fnc=PositionerMain)