1 from Screen import Screen
2 from ServiceScan import *
3 from Components.config import *
4 from Components.ActionMap import NumberActionMap
5 from Components.ConfigList import ConfigList
6 from Components.config import config
7 from Components.config import getConfigListEntry
8 from Components.NimManager import nimmanager
9 from Components.Label import Label
10 from enigma import eDVBFrontendParametersSatellite, eComponentScan
12 def getInitialTransponderList(tlist, pos):
14 list = nimmanager.getTransponders(pos)
18 parm = eDVBFrontendParametersSatellite()
20 parm.symbol_rate = x[2]
21 parm.polarisation = x[3] # eDVBFrontendParametersSatellite.Polarisation.Vertical
22 #parm.fec = x[4] # eDVBFrontendParametersSatellite.FEC.f3_4;
24 #parm.inversion = 1 #eDVBFrontendParametersSatellite.Inversion.Off;
25 parm.inversion = 2 #AUTO
26 parm.orbital_position = pos
29 class ScanSetup(Screen):
30 def __init__(self, session):
31 Screen.__init__(self, session)
37 self["actions"] = NumberActionMap(["SetupActions"],
40 "cancel": self.keyCancel,
42 "right": self.keyRight,
43 "1": self.keyNumberGlobal,
44 "2": self.keyNumberGlobal,
45 "3": self.keyNumberGlobal,
46 "4": self.keyNumberGlobal,
47 "5": self.keyNumberGlobal,
48 "6": self.keyNumberGlobal,
49 "7": self.keyNumberGlobal,
50 "8": self.keyNumberGlobal,
51 "9": self.keyNumberGlobal,
52 "0": self.keyNumberGlobal
56 self["config"] = ConfigList(self.list)
59 self["introduction"] = Label("Press OK to start the scan")
61 def updateSatList(self):
63 for slot in nimmanager.nimslots:
64 if (nimmanager.getNimType(slot.slotid) == nimmanager.nimType["DVB-S"]):
65 self.satList.append(nimmanager.getSatListForNim(slot.slotid))
67 def createSetup(self):
70 self.list.append(getConfigListEntry(_("Tuner"), config.scan.nims))
72 if (nimmanager.getNimType(config.scan.nims.value) == nimmanager.nimType["DVB-S"]):
73 self.list.append(getConfigListEntry(_("Type of scan"), config.scan.type))
74 elif (nimmanager.getNimType(config.scan.nims.value) == nimmanager.nimType["DVB-C"]):
75 self.list.append(getConfigListEntry(_("Type of scan"), config.scan.typecable))
76 elif (nimmanager.getNimType(config.scan.nims.value) == nimmanager.nimType["DVB-T"]):
77 self.list.append(getConfigListEntry(_("Type of scan"), config.scan.typeterrestrial))
80 if (nimmanager.getNimType(config.scan.nims.value) == nimmanager.nimType["DVB-S"]):
81 if (config.scan.type.value == 0): # single transponder scan
82 self.list.append(getConfigListEntry(_('Satellite'), config.scan.satselection[config.scan.nims.value]))
83 self.list.append(getConfigListEntry(_('Frequency'), config.scan.sat.frequency))
84 self.list.append(getConfigListEntry(_('Inversion'), config.scan.sat.inversion))
85 self.list.append(getConfigListEntry(_('Symbolrate'), config.scan.sat.symbolrate))
86 self.list.append(getConfigListEntry("Polarity", config.scan.sat.polarization))
87 self.list.append(getConfigListEntry("FEC", config.scan.sat.fec))
88 if (config.scan.type.value == 1): # single satellite scan
90 print config.scan.satselection[config.scan.nims.value]
91 self.list.append(getConfigListEntry("Satellite", config.scan.satselection[config.scan.nims.value]))
92 if (config.scan.type.value == 2): # multi sat scan
95 SatList = nimmanager.getSatListForNim(config.scan.nims.value)
98 if self.Satexists(tlist, x[1]) == 0:
100 sat = configElement_nonSave(x[1], configSelection, 0, ("Enable", "Disable"))
101 self.list.append(getConfigListEntry(nimmanager.getSatDescription(x[1]), sat))
104 # for sat in nimmanager.satList:
105 # self.list.append(getConfigListEntry(sat[0], config.scan.scansat[sat[1]]))
108 if (nimmanager.getNimType(config.scan.nims.value) == nimmanager.nimType["DVB-C"]):
109 if (config.scan.typecable.value == 0): # single transponder
110 self.list.append(getConfigListEntry("Frequency", config.scan.cab.frequency))
111 self.list.append(getConfigListEntry("Inversion", config.scan.cab.inversion))
112 self.list.append(getConfigListEntry("Symbolrate", config.scan.cab.symbolrate))
113 self.list.append(getConfigListEntry("Modulation", config.scan.cab.modulation))
114 self.list.append(getConfigListEntry("FEC", config.scan.cab.fec))
115 if (config.scan.typecable.value == 1): # complete
119 if (nimmanager.getNimType(config.scan.nims.value) == nimmanager.nimType["DVB-T"]):
120 if (config.scan.typeterrestrial.value == 0): # single transponder
121 self.list.append(getConfigListEntry("Frequency", config.scan.ter.frequency))
122 self.list.append(getConfigListEntry("Inversion", config.scan.ter.inversion))
123 self.list.append(getConfigListEntry("Bandwidth", config.scan.ter.bandwidth))
124 self.list.append(getConfigListEntry("Code rate high", config.scan.ter.fechigh))
125 self.list.append(getConfigListEntry("Code rate low", config.scan.ter.feclow))
126 self.list.append(getConfigListEntry("Modulation", config.scan.ter.modulation))
127 self.list.append(getConfigListEntry("Transmission mode", config.scan.ter.transmission))
128 self.list.append(getConfigListEntry("Guard interval mode", config.scan.ter.guard))
129 self.list.append(getConfigListEntry("Hierarchy mode", config.scan.ter.hierarchy))
130 if (config.scan.typeterrestrial.value == 1): # complete
136 self["config"].list = self.list
137 self["config"].l.setList(self.list)
139 def Satexists(self, tlist, pos):
146 print self["config"].getCurrent()
147 if self["config"].getCurrent()[0] == _("Type of scan"):
149 if self["config"].getCurrent()[0] == _("Tuner"):
152 def createConfig(self):
153 config.scan = ConfigSubsection()
154 config.scan.sat = ConfigSubsection()
155 config.scan.cab = ConfigSubsection()
156 config.scan.ter = ConfigSubsection()
158 config.scan.type = configElement_nonSave("config.scan.type", configSelection, 0, ("Single transponder", "Single satellite", "Multisat"))
159 config.scan.typecable = configElement_nonSave("config.scan.typecable", configSelection, 0, ("Single transponder", "Complete"))
160 config.scan.typeterrestrial = configElement_nonSave("config.scan.typeterrestrial", configSelection, 0, ("Single transponder", "Complete"))
163 for nim in nimmanager.nimList():
164 nimList.append(nim[0])
165 nimList.append("all")
166 config.scan.nims = configElement_nonSave("config.scan.nims", configSelection, 0, nimList)
169 config.scan.sat.frequency = configElement_nonSave("config.scan.sat.frequency", configSequence, [11836], configsequencearg.get("INTEGER", (10000, 14000)))
170 config.scan.sat.inversion = configElement_nonSave("config.scan.sat.inversion", configSelection, 2, ("on", "off", "auto"))
171 config.scan.sat.symbolrate = configElement_nonSave("config.scan.sat.symbolrate", configSequence, [27500], configsequencearg.get("INTEGER", (1, 30000)))
172 config.scan.sat.polarization = configElement_nonSave("config.scan.sat.polarization", configSelection, 0, ("horizontal", "vertical", "circular left", "circular right"))
173 config.scan.sat.fec = configElement_nonSave("config.scan.sat.fec", configSelection, 7, ("None", "1/2", "2/3", "3/4", "5/6", "7/8", "auto"))
177 config.scan.cab.frequency = configElement_nonSave("config.scan.cab.frequency", configSequence, [466], configsequencearg.get("INTEGER", (10000, 14000)))
178 config.scan.cab.inversion = configElement_nonSave("config.scan.cab.inversion", configSelection, 0, ("off", "on", "Auto"))
179 config.scan.cab.modulation = configElement_nonSave("config.scan.cab.modulation", configSelection, 0, ("16-QAM", "32-QAM", "64-QAM", "128-QAM", "256-QAM", "Auto"))
180 config.scan.cab.fec = configElement_nonSave("config.scan.cab.fec", configSelection, 0, ("None", "1/2", "2/3", "3/4", "4/5", "5/6", "6/7", "7/8", "8/9", "Auto"))
181 config.scan.cab.symbolrate = configElement_nonSave("config.scan.cab.symbolrate", configSequence, [6900], configsequencearg.get("INTEGER", (1, 30000)))
184 config.scan.ter.frequency = configElement_nonSave("config.scan.ter.frequency", configSequence, [466], configsequencearg.get("INTEGER", (10000, 14000)))
185 config.scan.ter.inversion = configElement_nonSave("config.scan.ter.inversion", configSelection, 2, ("off", "on", "Auto"))
186 config.scan.ter.bandwidth = configElement_nonSave("config.scan.ter.bandwidth", configSelection, 3, ("8MHz", "7MHz", "6MHz", "Auto"))
187 config.scan.ter.fechigh = configElement_nonSave("config.scan.ter.fechigh", configSelection, 6, ("None", "1/2", "2/3", "3/4", "5/6", "7/8", "Auto"))
188 config.scan.ter.feclow = configElement_nonSave("config.scan.ter.feclow", configSelection, 6, ("None", "1/2", "2/3", "3/4", "5/6", "7/8", "Auto"))
189 config.scan.ter.modulation = configElement_nonSave("config.scan.ter.modulation", configSelection, 2, ("QPSK", "QAM16", "Auto"))
190 config.scan.ter.transmission = configElement_nonSave("config.scan.ter.transmission", configSelection, 2, ("2K", "8K", "Auto"))
191 config.scan.ter.guard = configElement_nonSave("config.scan.ter.guard", configSelection, 4, ("1/32", "1/16", "1/8", "1/4", "Auto"))
192 config.scan.ter.hierarchy = configElement_nonSave("config.scan.ter.hierarchy", configSelection, 4, ("None", "1", "2", "4", "Auto"))
194 config.scan.scansat = {}
195 for sat in nimmanager.satList:
197 config.scan.scansat[sat[1]] = configElement_nonSave("config.scan.scansat[" + str(sat[1]) + "]", configSelection, 0, ("yes", "no"))
199 config.scan.satselection = []
201 for slot in nimmanager.nimslots:
202 if (nimmanager.getNimType(slot.slotid) == nimmanager.nimType["DVB-S"]):
203 config.scan.satselection.append(configElement_nonSave("config.scan.satselection[" + str(slot.slotid) + "]", configSatlist, 0, self.satList[slot.slotid]))
206 self["config"].handleKey(config.key["prevElement"])
210 self["config"].handleKey(config.key["nextElement"])
213 def keyNumberGlobal(self, number):
214 print "You pressed number " + str(number)
215 if (self["config"].getCurrent()[1].parent.enabled == True):
216 self["config"].handleKey(config.key[str(number)])
218 def addSatTransponder(self, tlist, frequency, symbol_rate, polarisation, fec, inversion, orbital_position):
219 print "Add Sat: frequ: " + str(frequency) + " symbol: " + str(symbol_rate) + " pol: " + str(polarisation) + " fec: " + str(fec) + " inversion: " + str(inversion)
220 print "orbpos: " + str(orbital_position)
221 parm = eDVBFrontendParametersSatellite()
222 parm.frequency = frequency * 1000
223 parm.symbol_rate = symbol_rate * 1000
224 parm.polarisation = polarisation # eDVBFrontendParametersSatellite.Polarisation.Verti
225 parm.fec = fec # eDVBFrontendParametersSatellite.FEC.f3_4;
227 parm.inversion = inversion #eDVBFrontendParametersSatellite.Inversion.Off;
228 #parm.inversion = 2 #AUTO
229 parm.orbital_position = int(orbital_position)
232 # FIXME use correct parameters
233 def addCabTransponder(self, tlist, frequency, symbol_rate, modulation, fec, inversion):
234 print "Add Sat: frequ: " + str(frequency) + " symbol: " + str(symbol_rate) + " pol: " + str(modulation) + " fec: " + str(fec) + " inversion: " + str(inversion)
235 parm = eDVBFrontendParametersCable()
236 parm.frequency = frequency * 1000
237 parm.symbol_rate = symbol_rate * 1000
238 parm.modulation = modulation # eDVBFrontendParametersSatellite.Polarisation.Verti
239 parm.fec = fec # eDVBFrontendParametersSatellite.FEC.f3_4;
241 parm.inversion = inversion #eDVBFrontendParametersSatellite.Inversion.Off;
242 #parm.inversion = 2 #AUTO
245 # FIXME use correct parameters
246 def addTerTransponder(self, tlist, frequency, symbol_rate, polarisation, fec, inversion, orbital_position):
247 print "Add Sat: frequ: " + str(frequency) + " symbol: " + str(symbol_rate) + " pol: " + str(polarisation) + " fec: " + str(fec) + " inversion: " + str(inversion)
248 print "orbpos: " + str(orbital_position)
249 parm = eDVBFrontendParametersTerrestrial()
250 parm.frequency = frequency * 1000
251 parm.symbol_rate = symbol_rate * 1000
252 parm.polarisation = polarisation # eDVBFrontendParametersSatellite.Polarisation.Verti
253 parm.fec = fec # eDVBFrontendParametersSatellite.FEC.f3_4;
255 parm.inversion = inversion #eDVBFrontendParametersSatellite.Inversion.Off;
256 #parm.inversion = 2 #AUTO
257 parm.orbital_position = int(orbital_position)
263 if (config.scan.type.value == 0): # single transponder scan
264 if (nimmanager.getNimType(config.scan.nims.value) == nimmanager.nimType["DVB-S"]):
265 self.addSatTransponder(tlist, config.scan.sat.frequency.value[0],
266 config.scan.sat.symbolrate.value[0],
267 config.scan.sat.polarization.value,
268 config.scan.sat.fec.value,
269 config.scan.sat.inversion.value,
270 self.satList[config.scan.nims.value][config.scan.satselection[config.scan.nims.value].value][1])
271 if (nimmanager.getNimType(config.scan.nims.value) == nimmanager.nimType["DVB-C"]):
272 self.addCabTransponder(tlist, config.scan.cab.frequency.value[0],
273 config.scan.cab.symbolrate.value[0],
274 config.scan.cab.modulation.value,
275 config.scan.cab.fec.value,
276 config.scan.cab.inversion.value)
277 if (nimmanager.getNimType(config.scan.nims.value) == nimmanager.nimType["DVB-T"]):
278 self.addTerTransponder(tlist, config.scan.sat.frequency.value[0],
279 config.scan.sat.symbolrate.value[0],
280 config.scan.sat.polarization.value,
281 config.scan.sat.fec.value,
282 config.scan.sat.inversion.value,
283 self.satList[config.scan.nims.value][config.scan.satselection[config.scan.nims.value].value][1])
285 if (config.scan.type.value == 1): # single sat scan
286 getInitialTransponderList(tlist, int(self.satList[config.scan.nims.value][config.scan.satselection[config.scan.nims.value].value][1]))
287 flags |= eComponentScan.scanNetworkSearch
289 if (config.scan.type.value == 2): # multi sat scan
290 SatList = nimmanager.getSatListForNim(config.scan.nims.value)
293 if x[1].parent.value == 0:
294 print " " + str(x[1].parent.configPath)
295 getInitialTransponderList(tlist, x[1].parent.configPath)
296 flags |= eComponentScan.scanNetworkSearch
298 for x in self["config"].list:
301 feid = config.scan.nims.value
302 # flags |= eComponentScan.scanSearchBAT
303 self.session.openWithCallback(self.keyCancel, ServiceScan, tlist, feid, flags)
308 for x in self["config"].list:
312 class ScanSimple(Screen):
315 print "start scan for sats:"
318 if x[1].parent.value == 0:
319 print " " + str(x[1].parent.configPath)
320 getInitialTransponderList(tlist, x[1].parent.configPath)
323 self.session.openWithCallback(self.keyCancel, ServiceScan, tlist, feid, eComponentScan.scanNetworkSearch)
329 self["config"].handleKey(config.key["prevElement"])
332 self["config"].handleKey(config.key["nextElement"])
334 def Satexists(self, tlist, pos):
340 def __init__(self, session):
341 Screen.__init__(self, session)
343 self["actions"] = ActionMap(["SetupActions"],
346 "cancel": self.keyCancel,
347 "left": self.keyLeft,
348 "right": self.keyRight,
354 SatList = nimmanager.getConfiguredSats()
357 if self.Satexists(tlist, x) == 0:
359 sat = configElement_nonSave(x, configSelection, 0, ("Enable", "Disable"))
360 self.list.append(getConfigListEntry(nimmanager.getSatDescription(x), sat))
362 self["config"] = ConfigList(self.list)
363 self["header"] = Label("Automatic Scan")
364 self["footer"] = Label("Press OK to scan")