from Screen import Screen
-from ServiceScan import *
+from ServiceScan import ServiceScan
from Components.config import config, ConfigSubsection, ConfigSelection, \
- ConfigYesNo, ConfigInteger, getConfigListEntry, ConfigSlider, ConfigSatlist, ConfigEnableDisable
-from Components.ActionMap import NumberActionMap
-from Components.ConfigList import ConfigList, ConfigListScreen
+ ConfigYesNo, ConfigInteger, getConfigListEntry, ConfigSlider, ConfigEnableDisable
+from Components.ActionMap import NumberActionMap, ActionMap
+from Components.ConfigList import ConfigListScreen
from Components.NimManager import nimmanager, getConfigSatlist
from Components.Label import Label
from Screens.MessageBox import MessageBox
self.cable_search_container.appClosed.get().append(self.cableTransponderSearchClosed)
self.cable_search_container.dataAvail.get().append(self.getCableTransponderData)
cableConfig = config.Nims[nim_idx].cable
- cmd = "tda1002x --scan --verbose --wakeup --bus="
- cmd += str(nim_idx)
+ cmd = "tda1002x --init --scan --verbose --wakeup --inv 2 --bus "
+ #FIXMEEEEEE hardcoded i2c devices for dm7025 and dm8000
+ if nim_idx < 2:
+ cmd += str(nim_idx)
+ else:
+ if nim_idx == 2:
+ cmd += "2" # first nim socket on DM8000 use /dev/i2c/2
+ else:
+ cmd += "4" # second nim socket on DM8000 use /dev/i2c/4
if cableConfig.scan_type.value == "bands":
- cmd += " --scan-bands="
+ cmd += " --scan-bands "
bands = 0
if cableConfig.scan_band_EU_VHF_I.value:
bands |= cable_bands["DVBC_BAND_EU_VHF_I"]
bands |= cable_bands["DVBC_BAND_US_HYPER"]
cmd += str(bands)
else:
- cmd += " --scan-stepsize="
+ cmd += " --scan-stepsize "
cmd += str(cableConfig.scan_frequency_steps.value)
if cableConfig.scan_mod_qam16.value:
cmd += " --mod 16"
def __init__(self, session):
Screen.__init__(self, session)
+ self.finished_cb = None
self.updateSatList()
self.service = session.nav.getCurrentService()
self.feinfo = None
self["introduction"] = Label(_("Press OK to start the scan"))
- def run(self):
+ def runAsync(self, finished_cb):
+ self.finished_cb = finished_cb
self.keyGo()
def updateSatList(self):
elif nim.isCompatible("DVB-C"):
if self.scan_typecable.value == "single_transponder":
self.list.append(getConfigListEntry(_("Frequency"), self.scan_cab.frequency))
- self.list.append(getConfigListEntry(_("Inversions"), self.scan_cab.inversion))
+ self.list.append(getConfigListEntry(_("Inversion"), self.scan_cab.inversion))
self.list.append(getConfigListEntry(_("Symbol Rate"), self.scan_cab.symbolrate))
self.list.append(getConfigListEntry(_("Modulation"), self.scan_cab.modulation))
self.list.append(getConfigListEntry(_("FEC"), self.scan_cab.fec))
def startScan(self, tlist, flags, feid):
if len(tlist):
# flags |= eComponentScan.scanSearchBAT
- self.session.open(ServiceScan, [{"transponders": tlist, "feid": feid, "flags": flags}])
+ if self.finished_cb:
+ self.session.openWithCallback(self.finished_cb, ServiceScan, [{"transponders": tlist, "feid": feid, "flags": flags}])
+ else:
+ self.session.open(ServiceScan, [{"transponders": tlist, "feid": feid, "flags": flags}])
else:
- self.session.open(MessageBox, _("Nothing to scan!\nPlease setup your tuner settings before you start a service scan."), MessageBox.TYPE_ERROR)
+ if self.finished_cb:
+ self.session.openWithCallback(self.finished_cb, MessageBox, _("Nothing to scan!\nPlease setup your tuner settings before you start a service scan."), MessageBox.TYPE_ERROR)
+ else:
+ self.session.open(MessageBox, _("Nothing to scan!\nPlease setup your tuner settings before you start a service scan."), MessageBox.TYPE_ERROR)
def keyCancel(self):
for x in self["config"].list:
known_networks = [ ]
nims_to_scan = [ ]
+ self.finished_cb = None
for nim in nimmanager.nim_slots:
# collect networks provided by this tuner
self["header"] = Label(_("Automatic Scan"))
self["footer"] = Label(_("Press OK to scan"))
- def run(self):
+ def runAsync(self, finished_cb):
+ self.finished_cb = finished_cb
self.keyGo()
def keyGo(self):
APPEND_NOW = 0
SEARCH_CABLE_TRANSPONDERS = 1
action = APPEND_NOW
-
- skip = self.nim_iter
- self.nim_iter = 0
-
- for n in self.nim_enable:
- self.nim_iter += 1
- if skip > 0:
- skip -= 1
- elif n.value: # check if nim is enabled
+
+ n = self.nim_iter < len(self.nim_enable) and self.nim_enable[self.nim_iter] or None
+ self.nim_iter += 1
+ if n:
+ if n.value: # check if nim is enabled
flags = 0
nim = nimmanager.nim_slots[n.nim_index]
networks = set(self.getNetworksForNim(nim))
else:
assert False
- flags |= eComponentScan.scanNetworkSearch
+ flags |= eComponentScan.scanNetworkSearch #FIXMEEE.. use flags from cables / satellites / terrestrial.xml
tmp = self.scan_clearallservices.value
if tmp == "yes":
flags |= eComponentScan.scanRemoveServices
return
else:
assert False
+
+ self.buildTransponderList() # recursive call of this function !!!
+ return
+ # when we are here, then the recursion is finished and all enabled nims are checked
+ # so we now start the real transponder scan
self.startScan(self.scanList)
def startScan(self, scanList):
if len(scanList):
- self.session.openWithCallback(self.doNothing, ServiceScan, scanList = scanList)
+ if self.finished_cb:
+ self.session.openWithCallback(self.finished_cb, ServiceScan, scanList = scanList)
+ else:
+ self.session.open(ServiceScan, scanList = scanList)
else:
- self.session.open(MessageBox, _("Nothing to scan!\nPlease setup your tuner settings before you start a service scan."), MessageBox.TYPE_ERROR)
+ if self.finished_cb:
+ self.session.openWithCallback(self.finished_cb, MessageBox, _("Nothing to scan!\nPlease setup your tuner settings before you start a service scan."), MessageBox.TYPE_ERROR)
+ else:
+ self.session.open(MessageBox, _("Nothing to scan!\nPlease setup your tuner settings before you start a service scan."), MessageBox.TYPE_ERROR)
def setCableTransponderSearchResult(self, tlist):
self.scanList.append({"transponders": tlist, "feid": self.feid, "flags": self.flags})
def cableTransponderSearchFinished(self):
self.buildTransponderList()
- def doNothing(self):
- pass
-
def keyCancel(self):
self.close()