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):
n = self.nim_iter < len(self.nim_enable) and self.nim_enable[self.nim_iter] or None
self.nim_iter += 1
- if n and n.value: # check if nim is enabled
- flags = 0
- nim = nimmanager.nim_slots[n.nim_index]
- networks = set(self.getNetworksForNim(nim))
-
- # don't scan anything twice
- networks.discard(self.known_networks)
-
- tlist = [ ]
- if nim.isCompatible("DVB-S"):
- # get initial transponders for each satellite to be scanned
- for sat in networks:
- getInitialTransponderList(tlist, sat[0])
- elif nim.isCompatible("DVB-C"):
- if config.Nims[nim.slot].cable.scan_type.value == "provider":
- getInitialCableTransponderList(tlist, nim.slot)
+ if n:
+ if n.value: # check if nim is enabled
+ flags = 0
+ nim = nimmanager.nim_slots[n.nim_index]
+ networks = set(self.getNetworksForNim(nim))
+
+ # don't scan anything twice
+ networks.discard(self.known_networks)
+
+ tlist = [ ]
+ if nim.isCompatible("DVB-S"):
+ # get initial transponders for each satellite to be scanned
+ for sat in networks:
+ getInitialTransponderList(tlist, sat[0])
+ elif nim.isCompatible("DVB-C"):
+ if config.Nims[nim.slot].cable.scan_type.value == "provider":
+ getInitialCableTransponderList(tlist, nim.slot)
+ else:
+ action = SEARCH_CABLE_TRANSPONDERS
+ elif nim.isCompatible("DVB-T"):
+ getInitialTerrestrialTransponderList(tlist, nimmanager.getTerrestrialDescription(nim.slot))
else:
- action = SEARCH_CABLE_TRANSPONDERS
- elif nim.isCompatible("DVB-T"):
- getInitialTerrestrialTransponderList(tlist, nimmanager.getTerrestrialDescription(nim.slot))
- else:
- assert False
-
- flags |= eComponentScan.scanNetworkSearch #FIXMEEE.. use flags from cables / satellites / terrestrial.xml
- tmp = self.scan_clearallservices.value
- if tmp == "yes":
- flags |= eComponentScan.scanRemoveServices
- elif tmp == "yes_hold_feeds":
- flags |= eComponentScan.scanRemoveServices
- flags |= eComponentScan.scanDontRemoveFeeds
+ assert False
+
+ flags |= eComponentScan.scanNetworkSearch #FIXMEEE.. use flags from cables / satellites / terrestrial.xml
+ tmp = self.scan_clearallservices.value
+ if tmp == "yes":
+ flags |= eComponentScan.scanRemoveServices
+ elif tmp == "yes_hold_feeds":
+ flags |= eComponentScan.scanRemoveServices
+ flags |= eComponentScan.scanDontRemoveFeeds
+
+ if action == APPEND_NOW:
+ self.scanList.append({"transponders": tlist, "feid": nim.slot, "flags": flags})
+ elif action == SEARCH_CABLE_TRANSPONDERS:
+ self.flags = flags
+ self.feid = nim.slot
+ self.startCableTransponderSearch(nim.slot)
+ return
+ else:
+ assert False
- if action == APPEND_NOW:
- self.scanList.append({"transponders": tlist, "feid": nim.slot, "flags": flags})
- elif action == SEARCH_CABLE_TRANSPONDERS:
- self.flags = flags
- self.feid = nim.slot
- self.startCableTransponderSearch(nim.slot)
- 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
def startScan(self, scanList):
if len(scanList):
- self.session.open(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})