X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=blobdiff_plain;f=lib%2Fpython%2FScreens%2FScanSetup.py;h=6fdeb534da524398fca58864aea04fda29eed12a;hp=41ac64b604fdacb7c061355341cc8ed0d2b602df;hb=5219d43296787b3592eedba7fd78b54e87638351;hpb=e7cebc68bef044b6ac699ac9b2dc93a65a5332a6 diff --git a/lib/python/Screens/ScanSetup.py b/lib/python/Screens/ScanSetup.py index 41ac64b..6fdeb53 100644 --- a/lib/python/Screens/ScanSetup.py +++ b/lib/python/Screens/ScanSetup.py @@ -67,7 +67,7 @@ def getInitialCableTransponderList(tlist, nim): #print "inversion:", 2 tlist.append(parm) -def getInitialTerrestrialTransponderList(tlist, region): +def getInitialTerrestrialTransponderList(tlist, region, skip_t2 = False): list = nimmanager.getTranspondersTerrestrial(region) #self.transponders[self.parsedTer].append((2,freq,bw,const,crh,crl,guard,transm,hierarchy,inv,system,plpid)) @@ -77,7 +77,7 @@ def getInitialTerrestrialTransponderList(tlist, region): for x in list: if x[0] == 2: #TERRESTRIAL - if x[10] == eDVBFrontendParametersTerrestrial.System_DVB_T2: + if skip_t2 and x[10] == eDVBFrontendParametersTerrestrial.System_DVB_T2: # Should be searching on TerrestrialTransponderSearchSupport. continue parm = buildTerTransponder(x[1], x[9], x[2], x[4], x[5], x[3], x[7], x[6], x[8], x[10], x[11]) @@ -98,69 +98,33 @@ cable_bands = { "DVBC_BAND_US_HYPER" : 1 << 11, } -class SimpleNimSockets: - def __init__(self): - self.nim_sockets = [] - - def Parse(self): - self.nim_sockets = [] - - nim_slot_idx = -1 - fp = file('/proc/bus/nim_sockets') - for line in fp: - line = line.strip() - if line == "": continue - - if line.startswith('NIM Socket '): - nim_slot_idx += 1 - self.nim_sockets.append({'slot_idx':str(nim_slot_idx)}) - elif line.startswith('Type:'): - line_token = line.split(":") - self.nim_sockets[nim_slot_idx]["type"] = line_token[1].strip() - elif line.startswith('Name:'): - line_token = line.split(":") - self.nim_sockets[nim_slot_idx]["name"] = line_token[1].strip() - elif line.startswith('Frontend_Device:'): - line_token = line.split(":") - self.nim_sockets[nim_slot_idx]["frontend_device"] = line_token[1].strip() - elif line.startswith('Mode '): - line_token = line.split(":") - mode=[] - try: mode=self.nim_sockets[nim_slot_idx]["mode"] - except: mode=[] - mode.append(line_token[1].strip()) - self.nim_sockets[nim_slot_idx]["mode"] = mode - elif line.startswith('I2C_Device:'): - line_token = line.split(":") - self.nim_sockets[nim_slot_idx]["i2c_device"] = line_token[1].strip() - fp.close() - - def GetTunerName(self, socket_id, type): - if len(self.nim_sockets) == 0: - return None - try: - nim_socket = self.nim_sockets[socket_id] - if nim_socket['type'] in type: - name_token = nim_socket['name'].split(' ') - return name_token[2][4:-1] - except Exception, err: - print "SimpleNimSockets ->", err - return "" - - def GetDeviceId(self, filter): - tuners={} - device_id = 0 - socket_id = 0 - for nim_socket in self.nim_sockets: - name_token = nim_socket['name'].split(' ') - name = name_token[2][4:-1] - if name == filter: - #print nim_socket['type'], name, device_id - tuners[str(socket_id)] = {'id' : device_id, 'type' : nim_socket['type']} - if device_id: device_id = 0 - else: device_id = 1 - socket_id += 1 - return tuners +cable_autoscan_nimtype = { +'SSH108' : 'ssh108', +'TT3L10' : 'tt3l10', +'TURBO' : 'vuplus_turbo_c' +} + +terrestrial_autoscan_nimtype = { +'SSH108' : 'ssh108_t2_scan', +'TT3L10' : 'tt3l10_t2_scan', +'TURBO' : 'vuplus_turbo_t' +} + +def GetDeviceId(filter, nim_idx): + tuners={} + device_id = 0 + socket_id = 0 + for nim in nimmanager.nim_slots: + name_token = nim.description.split(' ') + name = name_token[-1][4:-1] + if name == filter: + if socket_id == nim_idx: + break + + if device_id: device_id = 0 + else: device_id = 1 + socket_id += 1 + return device_id class CableTransponderSearchSupport: # def setCableTransponderSearchResult(self, tlist): @@ -237,29 +201,26 @@ class CableTransponderSearchSupport: self.cable_search_session["text"].setText(tmpstr) def startCableTransponderSearch(self, nim_idx): - def GetCommand(nimIdx): - _supportNimType = { 'SSH108':'ssh108', 'TT3L10':'tt3l10' } - - simple_ns = SimpleNimSockets() - try: - simple_ns.Parse() - nim_name = simple_ns.GetTunerName(nimIdx, ['DVB-C']) - if nim_name is not None and nim_name != "": - device_id = "" - if nim_name == 'TT3L10': - try: - device_id = simple_ns.GetDeviceId('TT3L10')[str(nimIdx)]['id'] - device_id = "--device=%s" % (device_id) - except: device_id = "" - if device_id == "": - return "tda1002x" - #print nimIdx, nim_name, _supportNimType[nim_name], device_id - try: - command = "%s %s" % (_supportNimType[nim_name], device_id) - return command - except: pass - except: pass - return "tda1002x" + def GetCommand(nim_idx): + global cable_autoscan_nimtype + try: + nim_name = nimmanager.getNimName(nim_idx) + if nim_name is not None and nim_name != "": + device_id = "" + nim_name = nim_name.split(' ')[-1][4:-1] + if nim_name == 'TT3L10': + try: + device_id = GetDeviceId('TT3L10', nim_idx) + device_id = "--device=%s" % (device_id) + except Exception, err: + print "GetCommand ->", err + device_id = "--device=0" +# print nim_idx, nim_name, cable_autoscan_nimtype[nim_name], device_id + command = "%s %s" % (cable_autoscan_nimtype[nim_name], device_id) + return command + except Exception, err: + print "GetCommand ->", err + return "tda1002x" if not self.tryGetRawFrontend(nim_idx): self.session.nav.stopService() @@ -386,6 +347,7 @@ class TerrestrialTransponderSearchSupport: print self.terrestrial_search_data data = self.terrestrial_search_data.split() if len(data): +# print "[setTerrestrialTransponderData] data : ", data if data[0] == 'OK': # DVB-T : OK frequency bandwidth delivery system -1 # DVB-T2 : OK frequency bandwidth delivery system number_of_plp plp_id0:plp_type0 @@ -405,7 +367,7 @@ class TerrestrialTransponderSearchSupport: self.__tlist.append(parm) else: plp_list = data[5:] - plp_num = data[4] + plp_num = int(data[4]) if len(plp_list) > plp_num: plp_list = plp_list[:plp_num] for plp in plp_list: @@ -470,31 +432,28 @@ class TerrestrialTransponderSearchSupport: else: return None - def startTerrestrialTransponderSearch(self, nim_idx, region): - def GetCommand(nimIdx): - _supportNimType = { 'SSH108':'ssh108_t2_scan', 'TT3L10':'tt3l10_t2_scan' } - - simple_ns = SimpleNimSockets() - try: - simple_ns.Parse() - nim_name = simple_ns.GetTunerName(nimIdx, ['DVB-T','DVB-T2']) - if nim_name is not None and nim_name != "": - device_id = "" - if nim_name == 'TT3L10': - try: - device_id = simple_ns.GetDeviceId('TT3L10')[str(nimIdx)]['id'] - device_id = "--device %s" % (device_id) - except: device_id = "" - if device_id == "": - return "ssh108_t2_scan" - #print nimIdx, nim_name, _supportNimType[nim_name], device_id - try: - command = "%s %s" % (_supportNimType[nim_name], device_id) - return command - except: pass - except: pass - return "ssh108_t2_scan" + def terrestrialTransponderGetCmd(self, nim_idx): + global terrestrial_autoscan_nimtype + try: + nim_name = nimmanager.getNimName(nim_idx) + if nim_name is not None and nim_name != "": + device_id = "" + nim_name = nim_name.split(' ')[-1][4:-1] + if nim_name == 'TT3L10': + try: + device_id = GetDeviceId('TT3L10', nim_idx) + device_id = "--device %s" % (device_id) + except Exception, err: + print "terrestrialTransponderGetCmd ->", err + device_id = "--device 0" +# print nim_idx, nim_name, terrestrial_autoscan_nimtype[nim_name], device_id + command = "%s %s" % (terrestrial_autoscan_nimtype[nim_name], device_id) + return command + except Exception, err: + print "terrestrialTransponderGetCmd ->", err + return "" + def startTerrestrialTransponderSearch(self, nim_idx, region): if not self.tryGetRawFrontend(nim_idx): self.session.nav.stopService() if not self.tryGetRawFrontend(nim_idx): @@ -509,11 +468,11 @@ class TerrestrialTransponderSearchSupport: self.terrestrial_search_container.appClosed.append(self.terrestrialTransponderSearchClosed) self.terrestrial_search_container.dataAvail.append(self.getTerrestrialTransponderData) - self.terrestrial_search_binName = GetCommand(nim_idx) + self.terrestrial_search_binName = self.terrestrialTransponderGetCmd(nim_idx) self.terrestrial_search_bus = nimmanager.getI2CDevice(nim_idx) if self.terrestrial_search_bus is None: - print "ERROR: could not get I2C device for nim", nim_idx, "for terrestrial transponder search" +# print "ERROR: could not get I2C device for nim", nim_idx, "for terrestrial transponder search" self.terrestrial_search_bus = 2 self.terrestrial_search_list = [] @@ -1174,9 +1133,15 @@ class ScanSetup(ConfigListScreen, Screen, CableTransponderSearchSupport, Terrest plpid = self.scan_ter.plp_id.value) removeAll = False elif self.scan_typeterrestrial.value == "complete": - getInitialTerrestrialTransponderList(tlist, nimmanager.getTerrestrialDescription(index_to_scan)) + skip_t2 = True if nim.isCompatible("DVB-T2"): - action = SEARCH_TERRESTRIAL2_TRANSPONDERS + scan_util = len(self.terrestrialTransponderGetCmd(nim.slot)) and True or False + if scan_util: + action = SEARCH_TERRESTRIAL2_TRANSPONDERS + else: + skip_t2 = False + + getInitialTerrestrialTransponderList(tlist, nimmanager.getTerrestrialDescription(index_to_scan), skip_t2) flags = self.scan_networkScan.value and eComponentScan.scanNetworkSearch or 0 @@ -1251,7 +1216,7 @@ class ScanSimple(ConfigListScreen, Screen, CableTransponderSearchSupport, Terres if nim.isCompatible("DVB-S"): networks = nimmanager.getSatListForNim(nim.slot) elif not nim.empty: - networks = [ nim.type ] # "DVB-C" or "DVB-T". TODO: seperate networks for different C/T tuners, if we want to support that. + networks = [ nim.getType() ] # "DVB-C" or "DVB-T". TODO: seperate networks for different C/T tuners, if we want to support that. else: # empty tuners provide no networks. networks = [ ] @@ -1301,7 +1266,7 @@ class ScanSimple(ConfigListScreen, Screen, CableTransponderSearchSupport, Terres if "DVB-T2" in known_networks: # we need to remove "DVB-T" when networks have "DVB-T2" nims_dvb_t = [] for nim in nims_to_scan: - if nim.type == "DVB-T": + if nim.getType() == "DVB-T": nims_dvb_t.append(nim) for nim in nims_dvb_t: @@ -1362,9 +1327,14 @@ class ScanSimple(ConfigListScreen, Screen, CableTransponderSearchSupport, Terres else: action = SEARCH_CABLE_TRANSPONDERS elif nim.isCompatible("DVB-T"): - getInitialTerrestrialTransponderList(tlist, nimmanager.getTerrestrialDescription(nim.slot)) + skip_t2 = True if nim.isCompatible("DVB-T2"): - action = SEARCH_TERRESTRIAL2_TRANSPONDERS + scan_util = len(self.terrestrialTransponderGetCmd(nim.slot)) and True or False + if scan_util: + action = SEARCH_TERRESTRIAL2_TRANSPONDERS + else: + skip_t2 = False + getInitialTerrestrialTransponderList(tlist, nimmanager.getTerrestrialDescription(nim.slot), skip_t2) else: assert False