from Screen import Screen from ServiceScan import * from Components.config import * from Components.ActionMap import NumberActionMap from Components.ConfigList import ConfigList from Components.config import config from Components.config import getConfigListEntry from Components.NimManager import nimmanager from Components.Label import Label from enigma import eDVBFrontendParametersSatellite, eComponentScan def getInitialTransponderList(tlist, pos): print "pos", pos list = nimmanager.getTransponders(pos) for x in list: if x[0] == 0: #SAT parm = eDVBFrontendParametersSatellite() parm.frequency = x[1] parm.symbol_rate = x[2] parm.polarisation = x[3] # eDVBFrontendParametersSatellite.Polarisation.Vertical parm.fec = x[4] # eDVBFrontendParametersSatellite.FEC.f3_4; #parm.fec = 6 # AUTO #parm.inversion = 1 #eDVBFrontendParametersSatellite.Inversion.Off; parm.inversion = 2 #AUTO parm.orbital_position = pos tlist.append(parm) def getInitialCableTransponderList(tlist, cable): print "cable", cable list = nimmanager.getTranspondersCable(cable) for x in list: if x[0] == 1: #CABLE print "[ScanSetup] cable-transponder to add:", x parm = eDVBFrontendParametersCable() parm.frequency = x[1] parm.symbol_rate = x[2] parm.modulation = 5 # AUTO parm.fec_inner = 6 # AUTO parm.inversion = 2 # AUTO tlist.append(parm) class ScanSetup(Screen): def __init__(self, session): Screen.__init__(self, session) self.updateSatList() self.createConfig() self["actions"] = NumberActionMap(["SetupActions"], { "ok": self.keyGo, "cancel": self.keyCancel, "left": self.keyLeft, "right": self.keyRight, "1": self.keyNumberGlobal, "2": self.keyNumberGlobal, "3": self.keyNumberGlobal, "4": self.keyNumberGlobal, "5": self.keyNumberGlobal, "6": self.keyNumberGlobal, "7": self.keyNumberGlobal, "8": self.keyNumberGlobal, "9": self.keyNumberGlobal, "0": self.keyNumberGlobal }, -1) self.list = [] self["config"] = ConfigList(self.list) self.createSetup() self["introduction"] = Label(_("Press OK to start the scan")) def updateSatList(self): self.satList = [] for slot in nimmanager.nimslots: if (nimmanager.getNimType(slot.slotid) == nimmanager.nimType["DVB-S"]): self.satList.append(nimmanager.getSatListForNim(slot.slotid)) else: self.satList.append(None) def createSetup(self): self.list = [] self.multiscanlist = [] print "ID: " + str(config.scan.nims.value) self.tunerEntry = getConfigListEntry(_("Tuner"), config.scan.nims) self.list.append(self.tunerEntry) self.typeOfScanEntry = None if (nimmanager.getNimType(config.scan.nims.value) == nimmanager.nimType["DVB-S"]): self.typeOfScanEntry = getConfigListEntry(_("Type of scan"), config.scan.type) self.list.append(self.typeOfScanEntry) elif (nimmanager.getNimType(config.scan.nims.value) == nimmanager.nimType["DVB-C"]): self.typeOfScanEntry = getConfigListEntry(_("Type of scan"), config.scan.typecable) self.list.append(self.typeOfScanEntry) elif (nimmanager.getNimType(config.scan.nims.value) == nimmanager.nimType["DVB-T"]): self.typeOfScanEntry = getConfigListEntry(_("Type of scan"), config.scan.typeterrestrial) self.list.append(self.typeOfScanEntry) if (nimmanager.getNimType(config.scan.nims.value) == nimmanager.nimType["DVB-S"]): if currentConfigSelectionElement(config.scan.type) == "single_transponder": self.list.append(getConfigListEntry(_('Satellite'), config.scan.satselection[config.scan.nims.value])) self.list.append(getConfigListEntry(_('Frequency'), config.scan.sat.frequency)) self.list.append(getConfigListEntry(_('Inversion'), config.scan.sat.inversion)) self.list.append(getConfigListEntry(_('Symbol Rate'), config.scan.sat.symbolrate)) self.list.append(getConfigListEntry(_("Polarity"), config.scan.sat.polarization)) self.list.append(getConfigListEntry(_("FEC"), config.scan.sat.fec)) elif currentConfigSelectionElement(config.scan.type) == "single_satellite": self.updateSatList() print config.scan.satselection[config.scan.nims.value] self.list.append(getConfigListEntry(_("Satellite"), config.scan.satselection[config.scan.nims.value])) elif currentConfigSelectionElement(config.scan.type) == "multisat": # if (norotor) tlist = [] SatList = nimmanager.getSatListForNim(config.scan.nims.value) for x in SatList: if self.Satexists(tlist, x[1]) == 0: tlist.append(x[1]) sat = configElement_nonSave(x[1], configSelection, 0, (("enable", _("Enable")), ("disable", _("Disable")))) configEntry = getConfigListEntry(nimmanager.getSatDescription(x[1]), sat) self.list.append(configEntry) self.multiscanlist.append(configEntry) # if (rotor): # for sat in nimmanager.satList: # self.list.append(getConfigListEntry(sat[0], config.scan.scansat[sat[1]])) if (nimmanager.getNimType(config.scan.nims.value) == nimmanager.nimType["DVB-C"]): if currentConfigSelectionElement(config.scan.typecable) == "single_transponder": self.list.append(getConfigListEntry(_("Frequency"), config.scan.cab.frequency)) self.list.append(getConfigListEntry(_("Inversion"), config.scan.cab.inversion)) self.list.append(getConfigListEntry(_("Symbol Rate"), config.scan.cab.symbolrate)) self.list.append(getConfigListEntry(_("Modulation"), config.scan.cab.modulation)) self.list.append(getConfigListEntry(_("FEC"), config.scan.cab.fec)) elif currentConfigSelectionElement(config.scan.typecable) == "complete": pass if (nimmanager.getNimType(config.scan.nims.value) == nimmanager.nimType["DVB-T"]): if currentConfigSelectionElement(config.scan.typeterrestrial) == "single_transponder": self.list.append(getConfigListEntry(_("Frequency"), config.scan.ter.frequency)) self.list.append(getConfigListEntry(_("Inversion"), config.scan.ter.inversion)) self.list.append(getConfigListEntry(_("Bandwidth"), config.scan.ter.bandwidth)) self.list.append(getConfigListEntry(_("Code rate high"), config.scan.ter.fechigh)) self.list.append(getConfigListEntry(_("Code rate low"), config.scan.ter.feclow)) self.list.append(getConfigListEntry(_("Modulation"), config.scan.ter.modulation)) self.list.append(getConfigListEntry(_("Transmission mode"), config.scan.ter.transmission)) self.list.append(getConfigListEntry(_("Guard interval mode"), config.scan.ter.guard)) self.list.append(getConfigListEntry(_("Hierarchy mode"), config.scan.ter.hierarchy)) elif currentConfigSelectionElement(config.scan.typeterrestrial) == "complete": pass self["config"].list = self.list self["config"].l.setList(self.list) def Satexists(self, tlist, pos): for x in tlist: if x == pos: return 1 return 0 def newConfig(self): print self["config"].getCurrent() if self["config"].getCurrent() == self.typeOfScanEntry: self.createSetup() if self["config"].getCurrent() == self.tunerEntry: self.createSetup() def createConfig(self): config.scan = ConfigSubsection() config.scan.sat = ConfigSubsection() config.scan.cab = ConfigSubsection() config.scan.ter = ConfigSubsection() config.scan.type = configElement_nonSave("config.scan.type", configSelection, 0, (("single_transponder", _("Single transponder")), ("single_satellite", _("Single satellite")), ("multisat", _("Multisat")))) config.scan.typecable = configElement_nonSave("config.scan.typecable", configSelection, 0, (("single_transponder", _("Single transponder")), ("complete", _("Complete")))) config.scan.typeterrestrial = configElement_nonSave("config.scan.typeterrestrial", configSelection, 0, (("single_transponder", _("Single transponder")), ("complete", _("Complete")))) nimList = [ ] for nim in nimmanager.nimList(): nimList.append(nim[0]) #nimList.append("all") config.scan.nims = configElement_nonSave("config.scan.nims", configSelection, 0, nimList) # sat config.scan.sat.frequency = configElement_nonSave("config.scan.sat.frequency", configSequence, [11836], configsequencearg.get("INTEGER", (1, 99999))) config.scan.sat.inversion = configElement_nonSave("config.scan.sat.inversion", configSelection, 2, (("off", _("off")), ("on", _("on")), _("Auto"))) config.scan.sat.symbolrate = configElement_nonSave("config.scan.sat.symbolrate", configSequence, [27500], configsequencearg.get("INTEGER", (1, 99999))) config.scan.sat.polarization = configElement_nonSave("config.scan.sat.polarization", configSelection, 0, (("horizontal", _("horizontal")), ("vertical", _("vertical")), ("circular_left", _("circular left")), ("circular_right", _("circular right")))) config.scan.sat.fec = configElement_nonSave("config.scan.sat.fec", configSelection, 7, (("auto", _("Auto")), ("1_2", "1/2"), ("2_3", "2/3"), ("3_4", "3/4"), ("5_6", "5/6"), ("7_8", "7/8"), ("none", _("None")))) # cable config.scan.cab.frequency = configElement_nonSave("config.scan.cab.frequency", configSequence, [466], configsequencearg.get("INTEGER", (50, 9999))) config.scan.cab.inversion = configElement_nonSave("config.scan.cab.inversion", configSelection, 2, (("off", _("off")), ("on", _("on")), ("auto", _("Auto")))) config.scan.cab.modulation = configElement_nonSave("config.scan.cab.modulation", configSelection, 2, (("16qam", "16-QAM"), ("32qam", "32-QAM"), ("64qam", "64-QAM"), ("128qam", "128-QAM"), ("256qam", "256-QAM"), ("auto", _("Auto")))) config.scan.cab.fec = configElement_nonSave("config.scan.cab.fec", configSelection, 9, (("none", _("None")), ("1_2", "1/2"), ("2_3", "2/3"), ("3_4", "3/4"), ("5_6", "5/6"), ("7_8", "7/8"), ("auto", _("Auto")))) config.scan.cab.symbolrate = configElement_nonSave("config.scan.cab.symbolrate", configSequence, [6900], configsequencearg.get("INTEGER", (1, 9999))) # terrestial config.scan.ter.frequency = configElement_nonSave("config.scan.ter.frequency", configSequence, [466], configsequencearg.get("INTEGER", (100, 900))) config.scan.ter.inversion = configElement_nonSave("config.scan.ter.inversion", configSelection, 2, (("off", _("off")), ("on", _("on")), ("auto", _("Auto")))) config.scan.ter.bandwidth = configElement_nonSave("config.scan.ter.bandwidth", configSelection, 3, (("8MHz", "8MHz"), ("7MHz", "7MHz"), ("6MHz", "6MHz"), ("auto", _("Auto")))) config.scan.ter.fechigh = configElement_nonSave("config.scan.ter.fechigh", configSelection, 6, (("none", _("None")), "1/2", "2/3", "3/4", "5/6", "7/8", _("Auto"))) config.scan.ter.feclow = configElement_nonSave("config.scan.ter.feclow", configSelection, 6, (_("None"), ("1_2", "1/2"), ("2_3", "2/3"), ("3_4", "3/4"), ("5_6", "5/6"), ("7_8", "7/8"), ("auto", _("Auto")))) config.scan.ter.modulation = configElement_nonSave("config.scan.ter.modulation", configSelection, 2, (("qpsk", "QPSK"), ("qam16", "QAM16"), ("auto", _("Auto")))) config.scan.ter.transmission = configElement_nonSave("config.scan.ter.transmission", configSelection, 2, (("2k", "2K"), ("8k", "8K"), ("auto", _("Auto")))) config.scan.ter.guard = configElement_nonSave("config.scan.ter.guard", configSelection, 4, (("1_32", "1/32"), ("1_16", "1/16"), ("1_8", "1/8"), ("1_4", "1/4"), ("auto", _("Auto")))) config.scan.ter.hierarchy = configElement_nonSave("config.scan.ter.hierarchy", configSelection, 4, (("none", _("None")), ("1", "1"), ("2", "2"), ("4", "4"), ("auto", _("Auto")))) config.scan.scansat = {} for sat in nimmanager.satList: #print sat[1] config.scan.scansat[sat[1]] = configElement_nonSave("config.scan.scansat[" + str(sat[1]) + "]", configSelection, 0, (("yes", _("yes")), ("no", _("no")))) config.scan.satselection = [] slotid = 0 for slot in nimmanager.nimslots: if (nimmanager.getNimType(slot.slotid) == nimmanager.nimType["DVB-S"]): print str(slot.slotid) + " : " + str(self.satList) config.scan.satselection.append(configElement_nonSave("config.scan.satselection[" + str(slot.slotid) + "]", configSatlist, 0, self.satList[slot.slotid])) else: config.scan.satselection.append(None) def keyLeft(self): self["config"].handleKey(config.key["prevElement"]) self.newConfig() def keyRight(self): self["config"].handleKey(config.key["nextElement"]) self.newConfig() def keyNumberGlobal(self, number): print "You pressed number " + str(number) if (self["config"].getCurrent()[1].parent.enabled == True): self["config"].handleKey(config.key[str(number)]) def addSatTransponder(self, tlist, frequency, symbol_rate, polarisation, fec, inversion, orbital_position): print "Add Sat: frequ: " + str(frequency) + " symbol: " + str(symbol_rate) + " pol: " + str(polarisation) + " fec: " + str(fec) + " inversion: " + str(inversion) print "orbpos: " + str(orbital_position) parm = eDVBFrontendParametersSatellite() parm.frequency = frequency * 1000 parm.symbol_rate = symbol_rate * 1000 parm.polarisation = polarisation # eDVBFrontendParametersSatellite.Polarisation.Verti parm.fec = fec # eDVBFrontendParametersSatellite.FEC.f3_4; #parm.fec = 6 # AUTO parm.inversion = inversion #eDVBFrontendParametersSatellite.Inversion.Off; #parm.inversion = 2 #AUTO parm.orbital_position = int(orbital_position) tlist.append(parm) # FIXME use correct parameters def addCabTransponder(self, tlist, frequency, symbol_rate, modulation, fec, inversion): print "Add Sat: frequ: " + str(frequency) + " symbol: " + str(symbol_rate) + " pol: " + str(modulation) + " fec: " + str(fec) + " inversion: " + str(inversion) parm = eDVBFrontendParametersCable() parm.frequency = frequency * 1000 parm.symbol_rate = symbol_rate * 1000 parm.modulation = modulation # eDVBFrontendParametersSatellite.Polarisation.Verti parm.fec = fec # eDVBFrontendParametersSatellite.FEC.f3_4; #parm.fec = 6 # AUTO parm.inversion = inversion #eDVBFrontendParametersSatellite.Inversion.Off; #parm.inversion = 2 #AUTO tlist.append(parm) # FIXME use correct parameters def addTerTransponder(self, tlist, frequency): parm = eDVBFrontendParametersTerrestrial() parm.frequency = frequency * 1000000 parm.inversion = 2 # eDVBFrontendParametersTerrestrial.Inversion.Unknown; parm.bandwidth = 0 #eDVBFrontendParametersTerrestrial.Bandwidth.Bw8MHz; parm.code_rate_HP = parm.code_rate_LP = 6 #eDVBFrontendParametersTerrestrial.FEC.fAuto; parm.modulation = 1 #eDVBFrontendParametersTerrestrial.Modulation.QAM16; parm.transmission_mode = 1 # eDVBFrontendParametersTerrestrial.TransmissionMode.TM8k; parm.guard_interval = 0 # eDVBFrontendParametersTerrestrial.GuardInterval.GI_1_32; parm.hierarchy = 0 #eDVBFrontendParametersTerrestrial.Hierarchy.HNone; tlist.append(parm) def keyGo(self): tlist = [] flags = 0 if (nimmanager.getNimType(config.scan.nims.value) == nimmanager.nimType["DVB-S"]): if currentConfigSelectionElement(config.scan.type) == "single_transponder": self.addSatTransponder(tlist, 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, self.satList[config.scan.nims.value][config.scan.satselection[config.scan.nims.value].value][1]) elif currentConfigSelectionElement(config.scan.type) == "single_satellite": getInitialTransponderList(tlist, int(self.satList[config.scan.nims.value][config.scan.satselection[config.scan.nims.value].value][1])) flags |= eComponentScan.scanNetworkSearch elif currentConfigSelectionElement(config.scan.type) == "multisat": SatList = nimmanager.getSatListForNim(config.scan.nims.value) for x in self.multiscanlist: if x[1].parent.value == 0: print " " + str(x[1].parent.configPath) getInitialTransponderList(tlist, x[1].parent.configPath) flags |= eComponentScan.scanNetworkSearch elif (nimmanager.getNimType(config.scan.nims.value) == nimmanager.nimType["DVB-C"]): if currentConfigSelectionElement(config.scan.typecable) == "single_transponder": self.addCabTransponder(tlist, config.scan.cab.frequency.value[0], config.scan.cab.symbolrate.value[0], config.scan.cab.modulation.value, config.scan.cab.fec.value, config.scan.cab.inversion.value) elif currentConfigSelectionElement(config.scan.typecable) == "complete": getInitialCableTransponderList(tlist, nimmanager.getCableDescription(config.scan.nims.value)) flags |= eComponentScan.scanNetworkSearch elif (nimmanager.getNimType(config.scan.nims.value) == nimmanager.nimType["DVB-T"]): if currentConfigSelectionElement(config.scan.typeterrestrial) == "single_transponder": self.addTerTransponder(tlist, config.scan.ter.frequency.value[0]) if currentConfigSelectionElement(config.scan.typeterrestrial) == "complete": pass for x in self["config"].list: x[1].save() feid = config.scan.nims.value # flags |= eComponentScan.scanSearchBAT self.session.openWithCallback(self.doNothing, ServiceScan, tlist, feid, flags) #self.close() def doNothing(self): pass def keyCancel(self): for x in self["config"].list: x[1].cancel() self.close() class ScanSimple(Screen): def run(self): print "start scan for sats:" tlist = [ ] for x in self.list: if x[1].parent.value == 0: print " " + str(x[1].parent.configPath) getInitialTransponderList(tlist, x[1].parent.configPath) feid = 0 # FIXME self.session.openWithCallback(self.doNothing, ServiceScan, tlist, feid, eComponentScan.scanNetworkSearch) def keyGo(self): print "start scan for sats:" tlist = [ ] for x in self.list: if x[1].parent.value == 0: print " " + str(x[1].parent.configPath) getInitialTransponderList(tlist, x[1].parent.configPath) feid = 0 # FIXME self.session.openWithCallback(self.doNothing, ServiceScan, tlist, feid, eComponentScan.scanNetworkSearch) def doNothing(self): pass def keyCancel(self): self.close() def keyLeft(self): self["config"].handleKey(config.key["prevElement"]) def keyRight(self): self["config"].handleKey(config.key["nextElement"]) def Satexists(self, tlist, pos): for x in tlist: if x == pos: return 1 return 0 def __init__(self, session): Screen.__init__(self, session) self["actions"] = ActionMap(["SetupActions"], { "ok": self.keyGo, "cancel": self.keyCancel, "left": self.keyLeft, "right": self.keyRight, }, -1) self.list = [] tlist = [] for slotid in nimmanager.getNimListOfType(nimmanager.nimType["DVB-S"]): SatList = nimmanager.getSatListForNim(slotid) for x in SatList: if self.Satexists(tlist, x[1]) == 0: tlist.append(x[1]) sat = configElement_nonSave(x[1], configSelection, 0, (("enable", _("Enable")), ("disable", _("Disable")))) self.list.append(getConfigListEntry(nimmanager.getSatDescription(x[1]), sat)) self["config"] = ConfigList(self.list) self["header"] = Label(_("Automatic Scan")) self["footer"] = Label(_("Press OK to scan"))