X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/c4a518176bb44cdf589e9abd0cfb1b9fb1f84f86..baa6968ed152a4e78ba27e3e48364a6b62680db2:/lib/python/Screens/ScanSetup.py diff --git a/lib/python/Screens/ScanSetup.py b/lib/python/Screens/ScanSetup.py index 9845be95..351b421b 100644 --- a/lib/python/Screens/ScanSetup.py +++ b/lib/python/Screens/ScanSetup.py @@ -204,10 +204,17 @@ class CableTransponderSearchSupport: 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"] @@ -235,7 +242,7 @@ class CableTransponderSearchSupport: 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" @@ -270,6 +277,7 @@ class ScanSetup(ConfigListScreen, Screen, CableTransponderSearchSupport): def __init__(self, session): Screen.__init__(self, session) + self.finished_cb = None self.updateSatList() self.service = session.nav.getCurrentService() self.feinfo = None @@ -299,7 +307,8 @@ class ScanSetup(ConfigListScreen, Screen, CableTransponderSearchSupport): 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): @@ -378,7 +387,7 @@ class ScanSetup(ConfigListScreen, Screen, CableTransponderSearchSupport): 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)) @@ -728,9 +737,15 @@ class ScanSetup(ConfigListScreen, Screen, CableTransponderSearchSupport): 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: @@ -774,6 +789,7 @@ class ScanSimple(ConfigListScreen, Screen, CableTransponderSearchSupport): known_networks = [ ] nims_to_scan = [ ] + self.finished_cb = None for nim in nimmanager.nim_slots: # collect networks provided by this tuner @@ -812,7 +828,8 @@ class ScanSimple(ConfigListScreen, Screen, CableTransponderSearchSupport): 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): @@ -828,46 +845,48 @@ class ScanSimple(ConfigListScreen, Screen, CableTransponderSearchSupport): 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 @@ -876,9 +895,15 @@ class ScanSimple(ConfigListScreen, Screen, CableTransponderSearchSupport): 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})