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, ("auto", "off", "on"))
179 config.scan.cab.modulation = configElement_nonSave("config.scan.cab.modulation", configSelection, 0, ("Auto", "16-QAM", "32-QAM", "64-QAM", "128-QAM", "256-QAM"))
180 config.scan.cab.fec = configElement_nonSave("config.scan.cab.fec", configSelection, 0, ("Auto", "1/2", "2/3", "3/4", "4/5", "5/6", "7/8", "8/9"))
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, 0, ("auto", "off", "on"))
186 config.scan.ter.bandwidth = configElement_nonSave("config.scan.ter.bandwidth", configSelection, 0, ("Auto", "6 MHz", "7MHz", "8MHz"))
187 config.scan.ter.fechigh = configElement_nonSave("config.scan.ter.fechigh", configSelection, 0, ("Auto", "1/2", "2/3", "3/4", "4/5", "5/6", "7/8", "8/9"))
188 config.scan.ter.feclow = configElement_nonSave("config.scan.ter.feclow", configSelection, 0, ("Auto", "1/2", "2/3", "3/4", "4/5", "5/6", "7/8", "8/9"))
189 config.scan.ter.modulation = configElement_nonSave("config.scan.ter.modulation", configSelection, 0, ("Auto", "16-QAM", "32-QAM", "64-QAM", "128-QAM", "256-QAM"))
190 config.scan.ter.transmission = configElement_nonSave("config.scan.ter.transmission", configSelection, 0, ("Auto", "2K", "8K"))
191 config.scan.ter.guard = configElement_nonSave("config.scan.ter.guard", configSelection, 0, ("Auto", "1/4", "1/8", "1/16", "1/32"))
192 config.scan.ter.hierarchy = configElement_nonSave("config.scan.ter.hierarchy", configSelection, 0, ("Auto", "1", "2", "4"))
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, polarisation, fec, inversion, orbital_position):
234 print "Add Sat: frequ: " + str(frequency) + " symbol: " + str(symbol_rate) + " pol: " + str(polarisation) + " fec: " + str(fec) + " inversion: " + str(inversion)
235 print "orbpos: " + str(orbital_position)
236 parm = eDVBFrontendParametersCable()
237 parm.frequency = frequency * 1000
238 parm.symbol_rate = symbol_rate * 1000
239 parm.polarisation = polarisation # eDVBFrontendParametersSatellite.Polarisation.Verti
240 parm.fec = fec # eDVBFrontendParametersSatellite.FEC.f3_4;
242 parm.inversion = inversion #eDVBFrontendParametersSatellite.Inversion.Off;
243 #parm.inversion = 2 #AUTO
244 parm.orbital_position = int(orbital_position)
247 # FIXME use correct parameters
248 def addTerTransponder(self, tlist, frequency, symbol_rate, polarisation, fec, inversion, orbital_position):
249 print "Add Sat: frequ: " + str(frequency) + " symbol: " + str(symbol_rate) + " pol: " + str(polarisation) + " fec: " + str(fec) + " inversion: " + str(inversion)
250 print "orbpos: " + str(orbital_position)
251 parm = eDVBFrontendParametersTerrestrial()
252 parm.frequency = frequency * 1000
253 parm.symbol_rate = symbol_rate * 1000
254 parm.polarisation = polarisation # eDVBFrontendParametersSatellite.Polarisation.Verti
255 parm.fec = fec # eDVBFrontendParametersSatellite.FEC.f3_4;
257 parm.inversion = inversion #eDVBFrontendParametersSatellite.Inversion.Off;
258 #parm.inversion = 2 #AUTO
259 parm.orbital_position = int(orbital_position)
265 if (config.scan.type.value == 0): # single transponder scan
266 if (nimmanager.getNimType(config.scan.nims.value) == nimmanager.nimType["DVB-S"]):
267 self.addSatTransponder(tlist, config.scan.sat.frequency.value[0],
268 config.scan.sat.symbolrate.value[0],
269 config.scan.sat.polarization.value,
270 config.scan.sat.fec.value,
271 config.scan.sat.inversion.value,
272 self.satList[config.scan.nims.value][config.scan.satselection[config.scan.nims.value].value][1])
273 if (nimmanager.getNimType(config.scan.nims.value) == nimmanager.nimType["DVB-C"]):
274 self.addCabTransponder(tlist, config.scan.cab.frequency.value[0],
275 config.scan.cab.symbolrate.value[0],
276 config.scan.cab.polarization.value,
277 config.scan.cab.fec.value,
278 config.scan.cab.inversion.value,
279 self.satList[config.scan.nims.value][config.scan.satselection[config.scan.nims.value].value][1])
280 if (nimmanager.getNimType(config.scan.nims.value) == nimmanager.nimType["DVB-T"]):
281 self.addTerTransponder(tlist, config.scan.sat.frequency.value[0],
282 config.scan.sat.symbolrate.value[0],
283 config.scan.sat.polarization.value,
284 config.scan.sat.fec.value,
285 config.scan.sat.inversion.value,
286 self.satList[config.scan.nims.value][config.scan.satselection[config.scan.nims.value].value][1])
288 if (config.scan.type.value == 1): # single sat scan
289 getInitialTransponderList(tlist, int(self.satList[config.scan.nims.value][config.scan.satselection[config.scan.nims.value].value][1]))
290 flags |= eComponentScan.scanNetworkSearch
292 if (config.scan.type.value == 2): # multi sat scan
293 SatList = nimmanager.getSatListForNim(config.scan.nims.value)
296 if x[1].parent.value == 0:
297 print " " + str(x[1].parent.configPath)
298 getInitialTransponderList(tlist, x[1].parent.configPath)
299 flags |= eComponentScan.scanNetworkSearch
301 for x in self["config"].list:
304 feid = config.scan.nims.value
305 # flags |= eComponentScan.scanSearchBAT
306 self.session.openWithCallback(self.keyCancel, ServiceScan, tlist, feid, flags)
311 for x in self["config"].list:
315 class ScanSimple(Screen):
318 print "start scan for sats:"
321 if x[1].parent.value == 0:
322 print " " + str(x[1].parent.configPath)
323 getInitialTransponderList(tlist, x[1].parent.configPath)
326 self.session.openWithCallback(self.keyCancel, ServiceScan, tlist, feid, eComponentScan.scanNetworkSearch)
332 self["config"].handleKey(config.key["prevElement"])
335 self["config"].handleKey(config.key["nextElement"])
337 def Satexists(self, tlist, pos):
343 def __init__(self, session):
344 Screen.__init__(self, session)
346 self["actions"] = ActionMap(["SetupActions"],
349 "cancel": self.keyCancel,
350 "left": self.keyLeft,
351 "right": self.keyRight,
357 SatList = nimmanager.getConfiguredSats()
360 if self.Satexists(tlist, x) == 0:
362 sat = configElement_nonSave(x, configSelection, 0, ("Enable", "Disable"))
363 self.list.append(getConfigListEntry(nimmanager.getSatDescription(x), sat))
365 self["config"] = ConfigList(self.list)
366 self["header"] = Label("Automatic Scan")
367 self["footer"] = Label("Press OK to scan")