+class TerrestrialTransponderSearchSupport:
+# def setTerrestrialTransponderSearchResult(self, tlist):
+# pass
+
+# def terrestrialTransponderSearchFinished(self):
+# pass
+
+ def terrestrialTransponderSearchSessionClosed(self, *val):
+ print "TerrestrialTransponderSearchSessionClosed, val", val
+ self.terrestrial_search_container.appClosed.remove(self.terrestrialTransponderSearchClosed)
+ self.terrestrial_search_container.dataAvail.remove(self.getTerrestrialTransponderData)
+ if val and len(val):
+ if val[0]:
+ self.setTerrestrialTransponderSearchResult(self.__tlist)
+ else:
+ self.terrestrial_search_container.sendCtrlC()
+ self.setTerrestrialTransponderSearchResult(None)
+ self.terrestrial_search_container = None
+ self.terrestrial_search_session = None
+ self.__tlist = None
+ self.terrestrialTransponderSearchFinished()
+
+ def terrestrialTransponderSearchClosed(self, retval):
+ self.setTerrestrialTransponderData()
+ opt = self.terrestrialTransponderGetOpt()
+ if opt is None:
+ print "terrestrialTransponderSearch finished", retval
+ self.terrestrial_search_session.close(True)
+ else:
+ (freq, bandWidth) = opt
+ self.terrestrialTransponderSearch(freq, bandWidth)
+
+ def getTerrestrialTransponderData(self, str):
+ self.terrestrial_search_data += str
+
+ def setTerrestrialTransponderData(self):
+ 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
+ if data[3] == 1: # DVB-T
+ parm = eDVBFrontendParametersTerrestrial()
+ parm.frequency = int(data[1])
+ parm.bandwidth = int(data[2])
+ parm.inversion = parm.Inversion_Unknown
+ parm.code_rate_HP = parm.FEC_Auto
+ parm.code_rate_LP = parm.FEC_Auto
+ parm.modulation = parm.Modulation_Auto
+ parm.transmission_mode = parm.TransmissionMode_Auto
+ parm.guard_interval = parm.GuardInterval_Auto
+ parm.hierarchy = parm.Hierarchy_Auto
+ parm.system = parm.System_DVB_T
+ parm.plpid = 0
+ self.__tlist.append(parm)
+ else:
+ plp_list = data[5:]
+ plp_num = int(data[4])
+ if len(plp_list) > plp_num:
+ plp_list = plp_list[:plp_num]
+ for plp in plp_list:
+ (plp_id, plp_type) = plp.split(':')
+ if plp_type == '0': # common PLP:
+ continue
+ parm = eDVBFrontendParametersTerrestrial()
+ parm.frequency = int(data[1])
+ parm.bandwidth = self.terrestrialTransponderconvBandwidth_P(int(data[2]))
+ parm.inversion = parm.Inversion_Unknown
+ parm.code_rate_HP = parm.FEC_Auto
+ parm.code_rate_LP = parm.FEC_Auto
+ parm.modulation = parm.Modulation_Auto
+ parm.transmission_mode = parm.TransmissionMode_Auto
+ parm.guard_interval = parm.GuardInterval_Auto
+ parm.hierarchy = parm.Hierarchy_Auto
+ parm.system = parm.System_DVB_T2
+ parm.plpid = int(plp_id)
+ self.__tlist.append(parm)
+
+ tmpstr = _("Try to find used Transponders in terrestrial network.. please wait...")
+ tmpstr += "\n\n"
+ tmpstr += data[1][:-3]
+ tmpstr += " kHz "
+ tmpstr += data[0]
+ self.terrestrial_search_session["text"].setText(tmpstr)
+
+ def terrestrialTransponderInitSearchList(self, searchList, region):
+ tpList = nimmanager.getTranspondersTerrestrial(region)
+ for x in tpList:
+ if x[0] == 2: #TERRESTRIAL
+ freq = x[1] # frequency
+ bandWidth = self.terrestrialTransponderConvBandwidth_I(x[2]) # bandWidth
+ parm = (freq, bandWidth)
+ searchList.append(parm)
+
+ def terrestrialTransponderConvBandwidth_I(self, _bandWidth):
+ bandWidth = {
+ eDVBFrontendParametersTerrestrial.Bandwidth_8MHz : 8000000,
+ eDVBFrontendParametersTerrestrial.Bandwidth_7MHz : 7000000,
+ eDVBFrontendParametersTerrestrial.Bandwidth_6MHz : 6000000,
+ eDVBFrontendParametersTerrestrial.Bandwidth_5MHz : 5000000,
+ eDVBFrontendParametersTerrestrial.Bandwidth_1_712MHz : 1712000,
+ eDVBFrontendParametersTerrestrial.Bandwidth_10MHz : 10000000,
+ }.get(_bandWidth, 8000000)
+ return bandWidth
+
+ def terrestrialTransponderconvBandwidth_P(self, _bandWidth):
+ bandWidth = {
+ 8000000 : eDVBFrontendParametersTerrestrial.Bandwidth_8MHz,
+ 7000000 : eDVBFrontendParametersTerrestrial.Bandwidth_7MHz,
+ 6000000 : eDVBFrontendParametersTerrestrial.Bandwidth_6MHz,
+ 5000000 : eDVBFrontendParametersTerrestrial.Bandwidth_5MHz,
+ 1712000 : eDVBFrontendParametersTerrestrial.Bandwidth_1_712MHz,
+ 10000000 : eDVBFrontendParametersTerrestrial.Bandwidth_10MHz,
+ }.get(_bandWidth, eDVBFrontendParametersTerrestrial.Bandwidth_8MHz)
+ return bandWidth
+
+ def terrestrialTransponderGetOpt(self):
+ if len(self.terrestrial_search_list) > 0:
+ return self.terrestrial_search_list.pop(0)
+ else:
+ return None
+
+ 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.strip(':VTUNER').split(' ')[-1][4:-1]
+ if nim_name in dual_tuner_list:
+ try:
+ device_id = GetDeviceId(nim_name, 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
+ elif nim_name in vtuner_need_idx_list:
+ device_id = getVtunerId(nim_name, nim_idx)
+ 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):
+ if self.session.pipshown: # try to disable pip
+ self.session.pipshown = False
+ del self.session.pip
+ if not self.tryGetRawFrontend(nim_idx):
+ self.terrestrialTransponderSearchFinished()
+ return
+ self.__tlist = [ ]
+ self.terrestrial_search_container = eConsoleAppContainer()
+ self.terrestrial_search_container.appClosed.append(self.terrestrialTransponderSearchClosed)
+ self.terrestrial_search_container.dataAvail.append(self.getTerrestrialTransponderData)
+
+ 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"
+ self.terrestrial_search_bus = 2
+
+ self.terrestrial_search_feid = nim_idx
+ self.terrestrial_search_enable_5v = GetTerrestrial5VEnable(nim_idx)
+
+ self.terrestrial_search_list = []
+ self.terrestrialTransponderInitSearchList(self.terrestrial_search_list ,region)
+ (freq, bandWidth) = self.terrestrialTransponderGetOpt()
+ self.terrestrialTransponderSearch(freq, bandWidth)
+
+ tmpstr = _("Try to find used transponders in terrestrial network.. please wait...")
+ tmpstr += "\n\n..."
+ self.terrestrial_search_session = self.session.openWithCallback(self.terrestrialTransponderSearchSessionClosed, MessageBox, tmpstr, MessageBox.TYPE_INFO)
+
+ def terrestrialTransponderSearch(self, freq, bandWidth):
+ self.terrestrial_search_data = ""
+ cmd = "%s --freq %d --bw %d --bus %d --ds 2" % (self.terrestrial_search_binName, freq, bandWidth, self.terrestrial_search_bus)
+ if self.terrestrial_search_enable_5v:
+ cmd += " --feid %d --5v %d" % (self.terrestrial_search_feid, self.terrestrial_search_enable_5v)
+ print "SCAN CMD : ",cmd
+ self.terrestrial_search_container.execute(cmd)
+