Merge branch 'master' into tmbinc/FixTimingBugs
[vuplus_dvbapp] / lib / python / Screens / Satconfig.py
1 from enigma import eDVBDB
2 from Screen import Screen
3 from Components.SystemInfo import SystemInfo
4 from Components.ActionMap import ActionMap
5 from Components.ConfigList import ConfigListScreen
6 from Components.MenuList import MenuList
7 from Components.NimManager import nimmanager
8 from Components.config import getConfigListEntry, config, ConfigNothing, ConfigSelection, updateConfigElement
9 from Components.Sources.List import List
10 from Screens.MessageBox import MessageBox
11
12 from time import mktime, localtime
13 from datetime import datetime
14
15 class NimSetup(Screen, ConfigListScreen):
16         def createSimpleSetup(self, list, mode):
17                 nim = self.nimConfig
18                 if mode == "single":
19                         list.append(getConfigListEntry(_("Satellite"), nim.diseqcA))
20                         list.append(getConfigListEntry(_("Send DiSEqC"), nim.simpleSingleSendDiSEqC))
21                 else:
22                         list.append(getConfigListEntry(_("Port A"), nim.diseqcA))
23
24                 if mode in ["toneburst_a_b", "diseqc_a_b", "diseqc_a_b_c_d"]:
25                         list.append(getConfigListEntry(_("Port B"), nim.diseqcB))
26                         if mode == "diseqc_a_b_c_d":
27                                 list.append(getConfigListEntry(_("Port C"), nim.diseqcC))
28                                 list.append(getConfigListEntry(_("Port D"), nim.diseqcD))
29                         if mode != "toneburst_a_b":
30                                 list.append(getConfigListEntry(_("Set Voltage and 22KHz"), nim.simpleDiSEqCSetVoltageTone))
31                                 list.append(getConfigListEntry(_("Send DiSEqC only on satellite change"), nim.simpleDiSEqCOnlyOnSatChange))
32
33         def createPositionerSetup(self, list):
34                 nim = self.nimConfig
35                 list.append(getConfigListEntry(_("Longitude"), nim.longitude))
36                 list.append(getConfigListEntry(" ", nim.longitudeOrientation))
37                 list.append(getConfigListEntry(_("Latitude"), nim.latitude))
38                 list.append(getConfigListEntry(" ", nim.latitudeOrientation))
39                 if SystemInfo["CanMeasureFrontendInputPower"]:
40                         self.advancedPowerMeasurement = getConfigListEntry(_("Use Power Measurement"), nim.powerMeasurement)
41                         list.append(self.advancedPowerMeasurement)
42                         if nim.powerMeasurement.value:
43                                 list.append(getConfigListEntry(_("Power threshold in mA"), nim.powerThreshold))
44                                 self.turningSpeed = getConfigListEntry(_("Rotor turning speed"), nim.turningSpeed)
45                                 list.append(self.turningSpeed)
46                                 if nim.turningSpeed.value == "fast epoch":
47                                         self.turnFastEpochBegin = getConfigListEntry(_("Begin time"), nim.fastTurningBegin)
48                                         self.turnFastEpochEnd = getConfigListEntry(_("End time"), nim.fastTurningEnd)
49                                         list.append(self.turnFastEpochBegin)
50                                         list.append(self.turnFastEpochEnd)
51                 else:
52                         if nim.powerMeasurement.value:
53                                 nim.powerMeasurement.value = False
54                                 nim.powerMeasurement.save()
55                 
56         def createConfigMode(self):
57                 if self.nim.isCompatible("DVB-S"):
58                         choices = { "nothing": _("nothing connected"),
59                                                 "simple": _("simple"),
60                                                 "advanced": _("advanced")}
61                         #if len(nimmanager.getNimListOfType(nimmanager.getNimType(self.slotid), exception = x)) > 0:
62                         #       choices["equal"] = _("equal to")
63                         #       choices["satposdepends"] = _("second cable of motorized LNB")
64                         if len(nimmanager.canEqualTo(self.slotid)) > 0:
65                                 choices["equal"] = _("equal to")
66                         if len(nimmanager.canDependOn(self.slotid)) > 0:
67                                 choices["satposdepends"] = _("second cable of motorized LNB")
68                         if len(nimmanager.canConnectTo(self.slotid)) > 0:
69                                 choices["loopthrough"] = _("loopthrough to")
70                         self.nimConfig.configMode.setChoices(choices, default = "nothing")
71
72         def createSetup(self):
73                 print "Creating setup"
74                 self.list = [ ]
75
76                 self.configMode = None
77                 self.diseqcModeEntry = None
78                 self.advancedSatsEntry = None
79                 self.advancedLnbsEntry = None
80                 self.advancedDiseqcMode = None
81                 self.advancedUsalsEntry = None
82                 self.advancedLof = None
83                 self.advancedPowerMeasurement = None
84                 self.turningSpeed = None
85                 self.turnFastEpochBegin = None
86                 self.turnFastEpochEnd = None
87                 self.uncommittedDiseqcCommand = None
88                 self.cableScanType = None
89                 self.have_advanced = False
90
91                 if self.nim.isCompatible("DVB-S"):
92                         self.configMode = getConfigListEntry(_("Configuration Mode"), self.nimConfig.configMode)
93                         self.list.append(self.configMode)
94
95                         if self.nimConfig.configMode.value == "simple":                 #simple setup
96                                 self.diseqcModeEntry = getConfigListEntry(_("Mode"), self.nimConfig.diseqcMode)
97                                 self.list.append(self.diseqcModeEntry)
98                                 if self.nimConfig.diseqcMode.value in ["single", "toneburst_a_b", "diseqc_a_b", "diseqc_a_b_c_d"]:
99                                         self.createSimpleSetup(self.list, self.nimConfig.diseqcMode.value)
100                                 if self.nimConfig.diseqcMode.value == "positioner":
101                                         self.createPositionerSetup(self.list)
102                         elif self.nimConfig.configMode.value == "equal":
103                                 choices = []
104                                 nimlist = nimmanager.canEqualTo(self.nim.slot)
105                                 for id in nimlist:
106                                         #choices.append((str(id), str(chr(65 + id))))
107                                         choices.append((str(id), nimmanager.getNimDescription(id)))
108                                 self.nimConfig.connectedTo.setChoices(choices)
109                                 #self.nimConfig.connectedTo = updateConfigElement(self.nimConfig.connectedTo, ConfigSelection(choices = choices))
110                                 self.list.append(getConfigListEntry(_("Tuner"), self.nimConfig.connectedTo))
111                         elif self.nimConfig.configMode.value == "satposdepends":
112                                 choices = []
113                                 nimlist = nimmanager.canDependOn(self.nim.slot)
114                                 for id in nimlist:
115                                         #choices.append((str(id), str(chr(65 + id))))
116                                         choices.append((str(id), nimmanager.getNimDescription(id)))
117                                 self.nimConfig.connectedTo.setChoices(choices)
118                                 #self.nimConfig.connectedTo = updateConfigElement(self.nimConfig.connectedTo, ConfigSelection(choices = choices))
119                                 self.list.append(getConfigListEntry(_("Tuner"), self.nimConfig.connectedTo))
120                         elif self.nimConfig.configMode.value == "loopthrough":
121                                 choices = []
122                                 print "connectable to:", nimmanager.canConnectTo(self.slotid)
123                                 connectable = nimmanager.canConnectTo(self.slotid)
124                                 for id in connectable:
125                                         choices.append((str(id), nimmanager.getNimDescription(id)))
126                                 self.nimConfig.connectedTo.setChoices(choices)
127                                 #self.nimConfig.connectedTo = updateConfigElement(self.nimConfig.connectedTo, ConfigSelection(choices = choices))
128                                 self.list.append(getConfigListEntry(_("Connected to"), self.nimConfig.connectedTo))
129                         elif self.nimConfig.configMode.value == "nothing":
130                                 pass
131                         elif self.nimConfig.configMode.value == "advanced": # advanced
132                                 # SATs
133                                 self.advancedSatsEntry = getConfigListEntry(_("Satellite"), self.nimConfig.advanced.sats)
134                                 self.list.append(self.advancedSatsEntry)
135                                 cur_orb_pos = self.nimConfig.advanced.sats.orbital_position
136                                 satlist = self.nimConfig.advanced.sat.keys()
137                                 if cur_orb_pos is not None:
138                                         if cur_orb_pos not in satlist:
139                                                 cur_orb_pos = satlist[0]
140                                         currSat = self.nimConfig.advanced.sat[cur_orb_pos]
141                                         self.fillListWithAdvancedSatEntrys(currSat)
142                                 self.have_advanced = True
143                 elif self.nim.isCompatible("DVB-C"):
144                         self.configMode = getConfigListEntry(_("Configuration Mode"), self.nimConfig.configMode)
145                         self.list.append(self.configMode)
146                         if self.nimConfig.configMode.value == "enabled":
147                                 self.cableScanType=getConfigListEntry(_("Used service scan type"), self.nimConfig.cable.scan_type)
148                                 self.list.append(self.cableScanType)
149                                 if self.nimConfig.cable.scan_type.value == "provider":
150                                         self.list.append(getConfigListEntry(_("Provider to scan"), self.nimConfig.cable.scan_provider))
151                                 else:
152                                         if self.nimConfig.cable.scan_type.value == "bands":
153                                                 self.list.append(getConfigListEntry(_("Scan band EU VHF I"), self.nimConfig.cable.scan_band_EU_VHF_I))
154                                                 self.list.append(getConfigListEntry(_("Scan band EU MID"), self.nimConfig.cable.scan_band_EU_MID))
155                                                 self.list.append(getConfigListEntry(_("Scan band EU VHF III"), self.nimConfig.cable.scan_band_EU_VHF_III))
156                                                 self.list.append(getConfigListEntry(_("Scan band EU UHF IV"), self.nimConfig.cable.scan_band_EU_UHF_IV))
157                                                 self.list.append(getConfigListEntry(_("Scan band EU UHF V"), self.nimConfig.cable.scan_band_EU_UHF_V))
158                                                 self.list.append(getConfigListEntry(_("Scan band EU SUPER"), self.nimConfig.cable.scan_band_EU_SUPER))
159                                                 self.list.append(getConfigListEntry(_("Scan band EU HYPER"), self.nimConfig.cable.scan_band_EU_HYPER))
160                                                 self.list.append(getConfigListEntry(_("Scan band US LOW"), self.nimConfig.cable.scan_band_US_LOW))
161                                                 self.list.append(getConfigListEntry(_("Scan band US MID"), self.nimConfig.cable.scan_band_US_MID))
162                                                 self.list.append(getConfigListEntry(_("Scan band US HIGH"), self.nimConfig.cable.scan_band_US_HIGH))
163                                                 self.list.append(getConfigListEntry(_("Scan band US SUPER"), self.nimConfig.cable.scan_band_US_SUPER))
164                                                 self.list.append(getConfigListEntry(_("Scan band US HYPER"), self.nimConfig.cable.scan_band_US_HYPER))
165                                         elif self.nimConfig.cable.scan_type.value == "steps":
166                                                 self.list.append(getConfigListEntry(_("Frequency scan step size(khz)"), self.nimConfig.cable.scan_frequency_steps))
167                                         self.list.append(getConfigListEntry(_("Scan QAM16"), self.nimConfig.cable.scan_mod_qam16))
168                                         self.list.append(getConfigListEntry(_("Scan QAM32"), self.nimConfig.cable.scan_mod_qam32))
169                                         self.list.append(getConfigListEntry(_("Scan QAM64"), self.nimConfig.cable.scan_mod_qam64))
170                                         self.list.append(getConfigListEntry(_("Scan QAM128"), self.nimConfig.cable.scan_mod_qam128))
171                                         self.list.append(getConfigListEntry(_("Scan QAM256"), self.nimConfig.cable.scan_mod_qam256))
172                                         self.list.append(getConfigListEntry(_("Scan SR6900"), self.nimConfig.cable.scan_sr_6900))
173                                         self.list.append(getConfigListEntry(_("Scan SR6875"), self.nimConfig.cable.scan_sr_6875))
174                                         self.list.append(getConfigListEntry(_("Scan additional SR"), self.nimConfig.cable.scan_sr_ext1))
175                                         self.list.append(getConfigListEntry(_("Scan additional SR"), self.nimConfig.cable.scan_sr_ext2))
176                         self.have_advanced = False
177                 elif self.nim.isCompatible("DVB-T"):
178                         self.configMode = getConfigListEntry(_("Configuration Mode"), self.nimConfig.configMode)
179                         self.list.append(self.configMode)
180                         self.have_advanced = False
181                         if self.nimConfig.configMode.value == "enabled":
182                                 self.list.append(getConfigListEntry(_("Terrestrial provider"), self.nimConfig.terrestrial))
183                                 self.list.append(getConfigListEntry(_("Enable 5V for active antenna"), self.nimConfig.terrestrial_5V))
184                 else:
185                         self.have_advanced = False
186                 self["config"].list = self.list
187                 self["config"].l.setList(self.list)
188
189         def newConfig(self):
190                 checkList = (self.configMode, self.diseqcModeEntry, self.advancedSatsEntry, \
191                         self.advancedLnbsEntry, self.advancedDiseqcMode, self.advancedUsalsEntry, \
192                         self.advancedLof, self.advancedPowerMeasurement, self.turningSpeed, \
193                         self.uncommittedDiseqcCommand, self.cableScanType)
194                 for x in checkList:
195                         if self["config"].getCurrent() == x:
196                                 self.createSetup()
197
198         def run(self):
199                 if self.have_advanced and self.nim.config_mode == "advanced":
200                         self.fillAdvancedList()
201                 for x in self.list:
202                         if x in [self.turnFastEpochBegin, self.turnFastEpochEnd]:
203                                 # workaround for storing only hour*3600+min*60 value in configfile
204                                 # not really needed.. just for cosmetics..
205                                 tm = localtime(x[1].value)
206                                 dt = datetime(1970, 1, 1, tm.tm_hour, tm.tm_min)
207                                 x[1].value = int(mktime(dt.timetuple()))
208                         x[1].save()
209                 nimmanager.sec.update()
210                 self.saveAll()
211
212         def fillListWithAdvancedSatEntrys(self, Sat):
213                 lnbnum = int(Sat.lnb.value)
214                 currLnb = self.nimConfig.advanced.lnb[lnbnum]
215                 
216                 if isinstance(currLnb, ConfigNothing):
217                         currLnb = None
218
219                 self.list.append(getConfigListEntry(_("Voltage mode"), Sat.voltage))
220                 self.list.append(getConfigListEntry(_("Tone mode"), Sat.tonemode))
221                 if currLnb and currLnb.diseqcMode.value == "1_2":
222                         if lnbnum < 33:
223                                 self.advancedUsalsEntry = getConfigListEntry(_("Use usals for this sat"), Sat.usals)
224                                 self.list.append(self.advancedUsalsEntry)
225                                 if not Sat.usals.value:
226                                         self.list.append(getConfigListEntry(_("Stored position"), Sat.rotorposition))
227
228                 # LNBs
229                 self.advancedLnbsEntry = getConfigListEntry(_("LNB"), Sat.lnb)
230                 self.list.append(self.advancedLnbsEntry)
231                 if currLnb:
232                         if lnbnum < 33:
233                                 self.advancedDiseqcMode = getConfigListEntry(_("DiSEqC mode"), currLnb.diseqcMode)
234                                 self.list.append(self.advancedDiseqcMode)
235                         if currLnb.diseqcMode.value != "none":
236                                 self.list.append(getConfigListEntry(_("Toneburst"), currLnb.toneburst))
237                                 self.list.append(getConfigListEntry(_("Committed DiSEqC command"), currLnb.commitedDiseqcCommand))
238                                 self.list.append(getConfigListEntry(_("Fast DiSEqC"), currLnb.fastDiseqc))
239                                 self.list.append(getConfigListEntry(_("Sequence repeat"), currLnb.sequenceRepeat))
240                                 if currLnb.diseqcMode.value == "1_0":
241                                         self.list.append(getConfigListEntry(_("Command order"), currLnb.commandOrder1_0))
242                                 else:
243                                         if currLnb.uncommittedDiseqcCommand.index:
244                                                 if currLnb.commandOrder.value == "ct":
245                                                         currLnb.commandOrder.value = "cut"
246                                                 elif currLnb.commandOrder.value == "tc":
247                                                         currLnb.commandOrder.value = "tcu"
248                                         else:
249                                                 if currLnb.commandOrder.index & 1:
250                                                         currLnb.commandOrder.value = "tc"
251                                                 else:
252                                                         currLnb.commandOrder.value = "ct"
253                                         self.list.append(getConfigListEntry(_("Command order"), currLnb.commandOrder))
254                                         self.uncommittedDiseqcCommand = getConfigListEntry(_("Uncommitted DiSEqC command"), currLnb.uncommittedDiseqcCommand)
255                                         self.list.append(self.uncommittedDiseqcCommand)
256                                         self.list.append(getConfigListEntry(_("DiSEqC repeats"), currLnb.diseqcRepeats))
257                                 if currLnb.diseqcMode.value == "1_2":
258                                         self.list.append(getConfigListEntry(_("Longitude"), currLnb.longitude))
259                                         self.list.append(getConfigListEntry(" ", currLnb.longitudeOrientation))
260                                         self.list.append(getConfigListEntry(_("Latitude"), currLnb.latitude))
261                                         self.list.append(getConfigListEntry(" ", currLnb.latitudeOrientation))
262                                         if SystemInfo["CanMeasureFrontendInputPower"]:
263                                                 self.advancedPowerMeasurement = getConfigListEntry(_("Use Power Measurement"), currLnb.powerMeasurement)
264                                                 self.list.append(self.advancedPowerMeasurement)
265                                                 if currLnb.powerMeasurement.value:
266                                                         self.list.append(getConfigListEntry(_("Power threshold in mA"), currLnb.powerThreshold))
267                                                         self.turningSpeed = getConfigListEntry(_("Rotor turning speed"), currLnb.turningSpeed)
268                                                         self.list.append(self.turningSpeed)
269                                                         if currLnb.turningSpeed.value == "fast epoch":
270                                                                 self.turnFastEpochBegin = getConfigListEntry(_("Begin time"), currLnb.fastTurningBegin)
271                                                                 self.turnFastEpochEnd = getConfigListEntry(_("End time"), currLnb.fastTurningEnd)
272                                                                 self.list.append(self.turnFastEpochBegin)
273                                                                 self.list.append(self.turnFastEpochEnd)
274                                         else:
275                                                 if currLnb.powerMeasurement.value:
276                                                         currLnb.powerMeasurement.value = False
277                                                         currLnb.powerMeasurement.save()
278                         self.advancedLof = getConfigListEntry(_("LOF"), currLnb.lof)
279                         self.list.append(self.advancedLof)
280                         if currLnb.lof.value == "user_defined":
281                                 self.list.append(getConfigListEntry(_("LOF/L"), currLnb.lofl))
282                                 self.list.append(getConfigListEntry(_("LOF/H"), currLnb.lofh))
283                                 self.list.append(getConfigListEntry(_("Threshold"), currLnb.threshold))
284 #                       self.list.append(getConfigListEntry(_("12V Output"), currLnb.output_12v))
285                         self.list.append(getConfigListEntry(_("Increased voltage"), currLnb.increased_voltage))
286
287         def fillAdvancedList(self):
288                 self.list = [ ]
289                 self.configMode = getConfigListEntry(_("Configuration Mode"), self.nimConfig.configMode)
290                 self.list.append(self.configMode)
291                 self.advancedSatsEntry = getConfigListEntry(_("Satellite"), self.nimConfig.advanced.sats)
292                 self.list.append(self.advancedSatsEntry)
293                 for x in self.nimConfig.advanced.sat.keys():
294                         Sat = self.nimConfig.advanced.sat[x]
295                         self.fillListWithAdvancedSatEntrys(Sat)
296                 self["config"].list = self.list
297
298         def keySave(self):
299                 old_configured_sats = nimmanager.getConfiguredSats()
300                 self.run()
301                 new_configured_sats = nimmanager.getConfiguredSats()
302                 self.unconfed_sats = old_configured_sats - new_configured_sats
303                 self.satpos_to_remove = None
304                 self.deleteConfirmed(False)
305
306         def deleteConfirmed(self, confirmed):
307                 if confirmed:
308                         eDVBDB.getInstance().removeServices(-1, -1, -1, self.satpos_to_remove)
309
310                 if self.satpos_to_remove is not None:
311                         self.unconfed_sats.remove(self.satpos_to_remove)
312
313                 self.satpos_to_remove = None
314                 for orbpos in self.unconfed_sats:
315                         self.satpos_to_remove = orbpos
316                         orbpos = self.satpos_to_remove
317                         try:
318                                 # why we need this cast?
319                                 sat_name = str(nimmanager.getSatDescription(orbpos))
320                         except:
321                                 if orbpos > 1800: # west
322                                         orbpos = 3600 - orbpos
323                                         h = _("W")
324                                 else:
325                                         h = _("E")
326                                 sat_name = ("%d.%d" + h) % (orbpos / 10, orbpos % 10)
327                         self.session.openWithCallback(self.deleteConfirmed, MessageBox, _("Delete no more configured satellite\n%s?") %(sat_name))
328                         break
329                 if not self.satpos_to_remove:
330                         self.close()
331
332         def __init__(self, session, slotid):
333                 Screen.__init__(self, session)
334                 self.list = [ ]
335
336                 ConfigListScreen.__init__(self, self.list)
337
338                 self["actions"] = ActionMap(["SetupActions"],
339                 {
340                         "ok": self.keySave,
341                         "cancel": self.keyCancel,
342                 }, -2)
343
344                 self.slotid = slotid
345                 self.nim = nimmanager.nim_slots[slotid]
346                 self.nimConfig = self.nim.config
347                 self.createConfigMode()
348                 self.createSetup()
349
350         def keyLeft(self):
351                 ConfigListScreen.keyLeft(self)
352                 self.newConfig()
353
354         def keyRight(self):
355                 ConfigListScreen.keyRight(self)
356                 self.newConfig()
357                 
358         def saveAll(self):
359                 if self.nim.isCompatible("DVB-S"):
360                         # reset connectedTo to all choices to properly store the default value
361                         choices = []
362                         nimlist = nimmanager.getNimListOfType("DVB-S", self.slotid)
363                         for id in nimlist:
364                                 choices.append((str(id), nimmanager.getNimDescription(id)))
365                         self.nimConfig.connectedTo.setChoices(choices)
366                 for x in self["config"].list:
367                         x[1].save()
368                         
369         def cancelConfirm(self, result):
370                 if not result:
371                         return
372
373                 for x in self["config"].list:
374                         x[1].cancel()
375                 # we need to call saveAll to reset the connectedTo choices
376                 self.saveAll()
377                 self.close()
378                         
379 class NimSelection(Screen):
380         def __init__(self, session):
381                 Screen.__init__(self, session)
382                 
383                 self.list = [None] * nimmanager.getSlotCount()
384                 self["nimlist"] = List(self.list)
385                 self.updateList()
386
387                 self["actions"] = ActionMap(["OkCancelActions"],
388                 {
389                         "ok": self.okbuttonClick ,
390                         "cancel": self.close
391                 }, -2)
392
393         def okbuttonClick(self):
394                 nim = self["nimlist"].getCurrent()
395                 nim = nim and nim[3]
396                 if nim is not None and not nim.empty:
397                         self.session.openWithCallback(self.updateList, NimSetup, nim.slot)
398
399         def updateList(self):
400                 self.list = [ ]
401                 for x in nimmanager.nim_slots:
402                         slotid = x.slot
403                         nimConfig = nimmanager.getNimConfig(x.slot)
404                         text = nimConfig.configMode.value
405                         if x.isCompatible("DVB-S"):
406                                 if nimConfig.configMode.value in ["loopthrough", "equal", "satposdepends"]:
407                                         text = { "loopthrough": _("loopthrough to"),
408                                                          "equal": _("equal to"),
409                                                          "satposdepends": _("second cable of motorized LNB") } [nimConfig.configMode.value]
410                                         text += " " + _("Tuner") + " " + ["A", "B", "C", "D"][int(nimConfig.connectedTo.value)]
411                                 elif nimConfig.configMode.value == "nothing":
412                                         text = _("nothing connected")
413                                 elif nimConfig.configMode.value == "simple":
414                                         if nimConfig.diseqcMode.value in ["single", "toneburst_a_b", "diseqc_a_b", "diseqc_a_b_c_d"]:
415                                                 text = _("Sats") + ": " 
416                                                 if nimConfig.diseqcA.orbital_position != 3601:
417                                                         text += nimmanager.getSatName(int(nimConfig.diseqcA.value))
418                                                 if nimConfig.diseqcMode.value in ["toneburst_a_b", "diseqc_a_b", "diseqc_a_b_c_d"]:
419                                                         if nimConfig.diseqcB.orbital_position != 3601:
420                                                                 text += "," + nimmanager.getSatName(int(nimConfig.diseqcB.value))
421                                                 if nimConfig.diseqcMode.value == "diseqc_a_b_c_d":
422                                                         if nimConfig.diseqcC.orbital_position != 3601:
423                                                                 text += "," + nimmanager.getSatName(int(nimConfig.diseqcC.value))
424                                                         if nimConfig.diseqcD.orbital_position != 3601:
425                                                                 text += "," + nimmanager.getSatName(int(nimConfig.diseqcD.value))
426                                         elif nimConfig.diseqcMode.value == "positioner":
427                                                 text = _("Positioner") + ":"
428                                                 if nimConfig.positionerMode.value == "usals":
429                                                         text += _("USALS")
430                                                 elif nimConfig.positionerMode.value == "manual":
431                                                         text += _("manual")
432                                         else:   
433                                                 text = _("simple")
434                                 elif nimConfig.configMode.value == "advanced":
435                                         text = _("advanced")
436                         elif x.isCompatible("DVB-T") or x.isCompatible("DVB-C"):
437                                 if nimConfig.configMode.value == "nothing":
438                                         text = _("nothing connected")
439                                 elif nimConfig.configMode.value == "enabled":
440                                         text = _("enabled")
441                                 
442                         self.list.append((slotid, x.friendly_full_description, text, x))
443                 self["nimlist"].updateList(self.list)