-class SatBlindscanSearchSupport:
- def blindTransponderSearchSessionClosed(self, *val):
- self.blind_search_container.appClosed.remove(self.blindScanSearchClosed)
- self.blind_search_container.dataAvail.remove(self.getBlindTransponderData)
- if val and len(val):
- if val[0]:
- self.tlist = self.__tlist
- print self.__tlist
- if self.frontend:
- self.frontend = None
- del self.raw_channel
-
- self.blind_search_container.sendCtrlC()
- import time
- time.sleep(2)
-
- self.blind_search_container = None
- self.blind_search_container = None
- self.__tlist = None
-
- if self.tlist is None:
- self.tlist = []
- else:
- self.startScan(self.tlist, self.flags, self.feid)
-
- def blindScanSearchClosed(self, retval):
- self.blind_search_session.close(True)
-
- def getBlindTransponderData(self, str):
- str = self.remainingdata + str
- #split in lines
- lines = str.split('\n')
- #'str' should end with '\n', so when splitting, the last line should be empty. If this is not the case, we received an incomplete line
- if len(lines[-1]):
- #remember this data for next time
- self.remainingdata = lines[-1]
- lines = lines[0:-1]
- else:
- self.remainingdata = ""
-
- for line in lines:
- data = line.split()
- if len(data):
- print data
- if data[0] == 'OK':
- parm = eDVBFrontendParametersSatellite()
- sys = { "DVB-S" : eDVBFrontendParametersSatellite.System_DVB_S,
- "DVB-S2" : eDVBFrontendParametersSatellite.System_DVB_S2 }
- qam = { "QPSK" : parm.Modulation_QPSK,
- "8PSK" : parm.Modulation_8PSK }
- inv = { "INVERSION_OFF" : parm.Inversion_Off,
- "INVERSION_ON" : parm.Inversion_On,
- "INVERSION_AUTO" : parm.Inversion_Unknown }
- fec = { "FEC_AUTO" : parm.FEC_Auto,
- "FEC_1_2" : parm.FEC_1_2,
- "FEC_2_3" : parm.FEC_2_3,
- "FEC_3_4" : parm.FEC_3_4,
- "FEC_5_6": parm.FEC_5_6,
- "FEC_7_8" : parm.FEC_7_8,
- "FEC_8_9" : parm.FEC_8_9,
- "FEC_3_5" : parm.FEC_3_5,
- "FEC_9_10" : parm.FEC_9_10,
- "FEC_NONE" : parm.FEC_None }
- roll = { "ROLLOFF_20" : parm.RollOff_alpha_0_20,
- "ROLLOFF_25" : parm.RollOff_alpha_0_25,
- "ROLLOFF_35" : parm.RollOff_alpha_0_35 }
- pilot = { "PILOT_ON" : parm.Pilot_On,
- "PILOT_OFF" : parm.Pilot_Off }
- pol = { "HORIZONTAL" : parm.Polarisation_Horizontal,
- "VERTICAL" : parm.Polarisation_Vertical }
-
- sat = self.satList[0][self.scan_satselection[0].index]
- parm.orbital_position = sat[0]
-
- parm.polarisation = pol[data[1]]
- parm.frequency = int(data[2])
- parm.symbol_rate = int(data[3])
- parm.system = sys[data[4]]
- parm.inversion = inv[data[5]]
- parm.pilot = pilot[data[6]]
- parm.fec = fec[data[7]]
- parm.modulation = qam[data[8]]
- parm.rolloff = roll[data[9]]
- self.__tlist.append(parm)
- flags = None
-
- def openFrontend(self):
- res_mgr = eDVBResourceManager.getInstance()
- if res_mgr:
- self.raw_channel = res_mgr.allocateRawChannel(self.feid)
- if self.raw_channel:
- self.frontend = self.raw_channel.getFrontend()
- if self.frontend:
- return True
- else:
- print "getFrontend failed"
- else:
- print "getRawChannel failed"
- else:
- print "getResourceManager instance failed"
- return False
-
- def startSatBlindscanSearch(self, nim_idx, orbpos, session):
- if self.blindscan_start_frequency.value < 950*1000000 or self.blindscan_start_frequency.value > 2150*1000000 :
- self.session.open(MessageBox, _("Please check again.\nStart frequency must be between 950 and 2150."), MessageBox.TYPE_ERROR)
- return
- if self.blindscan_stop_frequency.value < 950*1000000 or self.blindscan_stop_frequency.value > 2150*1000000 :
- self.session.open(MessageBox, _("Please check again.\nStop frequency must be between 950 and 2150."), MessageBox.TYPE_ERROR)
- return
- if self.blindscan_start_frequency.value > self.blindscan_stop_frequency.value :
- self.session.open(MessageBox, _("Please check again.\nFrequency : start value is larger than stop value."), MessageBox.TYPE_ERROR)
- return
- if self.blindscan_start_symbol.value < 2*1000000 or self.blindscan_start_symbol.value > 45*1000000 :
- self.session.open(MessageBox, _("Please check again.\nStart symbolrate must be between 2MHz and 45MHz."), MessageBox.TYPE_ERROR)
- return
- if self.blindscan_stop_symbol.value < 2*1000000 or self.blindscan_stop_symbol.value > 45*1000000 :
- self.session.open(MessageBox, _("Please check again.\nStop symbolrate must be between 2MHz and 45MHz."), MessageBox.TYPE_ERROR)
- return
- if self.blindscan_start_symbol.value > self.blindscan_stop_symbol.value :
- self.session.open(MessageBox, _("Please check again.\nSymbolrate : start value is larger than stop value."), MessageBox.TYPE_ERROR)
- return
-
- self.__tlist = [ ]
- self.remainingdata = ""
- self.feid = nim_idx
- if not self.openFrontend():
- self.oldref = session.nav.getCurrentlyPlayingServiceReference()
- session.nav.stopService() # try to disable foreground service
- if not self.openFrontend():
- if session.pipshown: # try to disable pip
- session.pipshown = False
- del session.pip
- if not self.openFrontend():
- self.frontend = None # in normal case this should not happen
-
- self.tuner = Tuner(self.frontend)
- sat = self.satList[0][self.scan_satselection[0].index]
-
- tab_hilow = {"high" : 1, "low" : 0}
- returnvalue = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
- if tab_hilow[self.blindscan_hi.value]:
- self.scan_sat.frequency.value = 12515
- else:
- self.scan_sat.frequency.value = 11015
- returnvalue = (self.scan_sat.frequency.value,
- 0,
- self.scan_sat.polarization.value,
- 0,
- 0,
- int(orbpos[0]),
- eDVBFrontendParametersSatellite.System_DVB_S,
- 0,
- 0,
- 0)
- self.tuner.tune(returnvalue)
-
- self.blind_search_container = eConsoleAppContainer()
- self.blind_search_container.appClosed.append(self.blindScanSearchClosed)
- self.blind_search_container.dataAvail.append(self.getBlindTransponderData)
- cmd = "/usr/lib/enigma2/python/Plugins/SystemPlugins/Blindscan/vuplus_blindscan %d %d %d %d %d %d %d" % (self.blindscan_start_frequency.value/1000000, self.blindscan_stop_frequency.value/1000000, self.blindscan_start_symbol.value/1000000, self.blindscan_stop_symbol.value/1000000, self.scan_sat.polarization.value, tab_hilow[self.blindscan_hi.value], self.feid)
- print "prepared command : ", cmd
- self.blind_search_container.execute(cmd)
-
- tmpstr = _("Blindscan takes some minute.")
- self.blind_search_session = self.session.openWithCallback(self.blindTransponderSearchSessionClosed, MessageBox, tmpstr, MessageBox.TYPE_INFO)
-
-class Blindscan(ConfigListScreen, Screen, SatBlindscanSearchSupport):