X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=blobdiff_plain;f=lib%2Fpython%2FPlugins%2FSystemPlugins%2FFactoryTest%2Fplugin.py;h=38ac2f5ecb63c31d7bce1012babbef1e4bf3f305;hp=fbc61b18216cea86cec8a407424a0a51771d2249;hb=3bf8b7f18df965ddec6c5376a419536142153e35;hpb=8afa7e85987d47999fed964a09c371808296cc13 diff --git a/lib/python/Plugins/SystemPlugins/FactoryTest/plugin.py b/lib/python/Plugins/SystemPlugins/FactoryTest/plugin.py index fbc61b1..38ac2f5 100755 --- a/lib/python/Plugins/SystemPlugins/FactoryTest/plugin.py +++ b/lib/python/Plugins/SystemPlugins/FactoryTest/plugin.py @@ -16,26 +16,14 @@ from Components.HTMLComponent import HTMLComponent from Components.GUIComponent import GUIComponent from enigma import eListboxPythonStringContent, eListbox, gFont, eServiceCenter, eDVBResourceManager from enigma import eServiceReference -from enigma import eMemtest -from enigma import eSctest +from sctest import eSctest from enigma import eDVBDB from Components.NimManager import nimmanager from enigma import eDVBCI_UI,eDVBCIInterfaces +from Tools.Directories import resolveFilename, SCOPE_SYSETC +from Components.Sources.StaticText import StaticText -class TestResultList(HTMLComponent, GUIComponent): - def __init__(self, list, enableWrapAround=False, content=eListboxPythonStringContent): - GUIComponent.__init__(self) - self.list = list - self.l = content() - self.l.setList(self.list) - self.onSelectionChanged = [ ] - self.enableWrapAround = enableWrapAround - - def getCurrent(self): - return self.l.getCurrentSelection() - - GUI_WIDGET = eListbox - +class TestResultList(MenuList): def postWidgetCreate(self, instance): self.instance.setSelectionEnable(0) instance.setContent(self.l) @@ -43,61 +31,96 @@ class TestResultList(HTMLComponent, GUIComponent): if self.enableWrapAround: self.instance.setWrapAround(True) - def preWidgetRemove(self, instance): - instance.setContent(None) - instance.selectionChanged.get().remove(self.selectionChanged) - - def selectionChanged(self): - for f in self.onSelectionChanged: - f() - - def getSelectionIndex(self): - return self.l.getCurrentSelectionIndex() - - def getSelectedIndex(self): - return self.l.getCurrentSelectionIndex() - - def setList(self, list): - self.list = list - self.l.setList(self.list) - def updateList(self, list): self.list = list self.l.setList(self.list) - def moveToIndex(self, idx): - if self.instance is not None: - self.instance.moveSelectionTo(idx) - - def pageUp(self): - if self.instance is not None: - self.instance.moveSelection(self.instance.pageUp) - - def pageDown(self): - if self.instance is not None: - self.instance.moveSelection(self.instance.pageDown) - - def up(self): - if self.instance is not None: - self.instance.moveSelection(self.instance.moveUp) +class TuneMessageBox(MessageBox): + skin = """ + + + + + + + + + + SNRdB + + + + + AGC + + +# this should be factored out into some helper code, but currently demonstrates applets. +from enigma import eSize, ePoint + +orgwidth = self.instance.size().width() +orgpos = self.instance.position() +textsize = self["text"].getSize() + +# y size still must be fixed in font stuff... +textsize = (textsize[0] + 50, textsize[1] + 50) +offset = 0 +if self.type == self.TYPE_YESNO: + offset = 60 +wsizex = textsize[0] + 60 +wsizey = textsize[1] + offset +if (280 > wsizex): + wsizex = 280 +wsizex = wsizex + 30 +wsizey = wsizey + 30 +wsize = (wsizex, wsizey) + +# resize +self.instance.resize(eSize(*wsize)) + +# resize label +self["text"].instance.resize(eSize(*textsize)) + +# move list +listsize = (wsizex, 50) +self["list"].instance.move(ePoint(0, textsize[1])) +self["list"].instance.resize(eSize(*listsize)) + +# center window +newwidth = wsize[0] +self.instance.move(ePoint(orgpos.x() + (orgwidth - newwidth)/2, orgpos.y())) + + """ + def __init__(self, session, text, type = MessageBox.TYPE_YESNO): + MessageBox.__init__(self, session, text, type) - def down(self): - if self.instance is not None: - self.instance.moveSelection(self.instance.moveDown) +class FactoryTestSummary(Screen): + skin = """ + + + """ - def selectionEnabled(self, enabled): - if self.instance is not None: - self.instance.setSelectionEnable(enabled) +class FactoryTestSummary_VFD(Screen): + skin = """ + + + """ class FactoryTest(Screen): skin = """ - - - - - - + + + + + + """ + + def createSummary(self): + if self.model == 4: + return FactoryTestSummary_VFD + else: + return FactoryTestSummary + def __init__(self, session): self["actions"] = NumberActionMap(["OkCancelActions","WizardActions","NumberActions","ColorActions",], @@ -120,11 +143,12 @@ class FactoryTest(Screen): "8": self.numberaction, "9": self.numberaction, "red": self.shutdownaction, + "blue": self.Agingmode2, }, -2) Screen.__init__(self, session) - TESTPROGRAM_DATE = "2011-06-09" - TESTPROGRAM_VERSION = "Version 01.10" + TESTPROGRAM_DATE = self.getImageVersion() +" (v1.20)" + TESTPROGRAM_VERSION = "Version 01.20" self.model = 0 self.getModelInfo() @@ -150,7 +174,16 @@ class FactoryTest(Screen): pass if self.model == 3 or self.model == 4: self.NimType = {} - sat_list = ["160","100","130","192","620","642"] + sat_list = ["160","100","130","192","620","642","685","720"] +# ' sat ' : namespace , # satname +# '160' : '0xA00000', # Eutelsat W2 +# '100' : '0x64af79', # Eutelsat +# '130' : '0x820000', # Hotbird +# '192' : '0xC00000', # Astra +# '620' : '0x26c0000', # Intelsat 902 +# '642' : '0x282AF79' # Intelsat 906 +# '685' : '02ad0000' # Panamsat 7,10 (68.5E) +# '720' : '02d0af79' # Panamsat 4 (72.0E) try: nimfile = open("/proc/bus/nim_sockets") except IOError: @@ -202,8 +235,9 @@ class FactoryTest(Screen): self.createConfig() self.rlist = [] - for x in range(self.menulength): + for x in range(self.menulength-1): self.rlist.append(("..")) + self.rlist.append((" ")) self["resultlist"] = TestResultList(self.rlist) self.avswitch = AVSwitch() @@ -237,9 +271,19 @@ class FactoryTest(Screen): self.usbtimer = eTimer() self.usbtimer.callback.append(self.usbCheck) - self.agingtimer = eTimer() - self.agingtimer.callback.append(self.agingCheck) self.setSourceVar() + self.FanSpeedUp(255) + + def FanSpeedUp(self,value): + if self.model in (3,4): # uno or ultimo + if value <0: + value = 0 + elif value >255: + value = 255 + print "[FactoryTest, FanSpeedUp] setPWM to : %d"%value + f = open("/proc/stb/fp/fan_pwm", "w") + f.write("%x" % value) + f.close() def createConfig(self): tlist = [] @@ -333,10 +377,15 @@ class FactoryTest(Screen): tlist.append((" 2. Front test",self.fronttestIndex)) self.smarttestIndex=3 tlist.append((" 3. Smartcard test",self.smarttestIndex)) - self.tuner_test_first_index = current_index = 4 + if self.model == 3: + self.tuner_test_first_index = current_index = 4 + elif self.model == 4: + self.tuner_test_first_index = 4 + current_index = 0 AspectRatio=["4:3", "16:9"] ColorFormat=["CVBS","RGB","YC","CVBS","CVBS","CVBS","CVBS","CVBS"] self.tuneInfo={} + tunelist = [] for (key, val) in self.NimType.items(): if val["type"].startswith("DVB-S"): # Chang : DVB -S setting diseqc A @@ -348,7 +397,7 @@ class FactoryTest(Screen): # current_index=4 self.setTuneInfo(index=current_index, slot=key, type=val["type"], sat=val["sat1"], pol="H", tone=False, ratio=getRatio, color=getColorFormat, cam=False) # setTuneInfo # self.setTuneInfo(current_index, key, val["type"], val["sat1"], "H", True, getRatio, getColorFormat, False) # setTuneInfo - tlist.append((menuname,current_index)) + tunelist.append((menuname,current_index)) current_index+=1 # Chang : DVB -S setting diseqc B getRatio = AspectRatio.pop(0) @@ -361,7 +410,7 @@ class FactoryTest(Screen): else: camtest = False self.setTuneInfo( index=current_index, slot=key, type=val["type"], sat=val["sat2"], pol="V", tone=True, ratio=getRatio, color=getColorFormat, cam=camtest) - tlist.append((menuname,current_index)) + tunelist.append((menuname,current_index)) current_index+=1 # Chang : DVB -T or DVB-C elif val["type"].startswith("DVB-T") or val["type"].startswith("DVB-C"): @@ -381,9 +430,17 @@ class FactoryTest(Screen): else: camtest = False self.setTuneInfo( index=current_index, slot=key, type=val["type"], sat=None, pol=None, tone=None, ratio=getRatio, color=getColorFormat, cam=camtest) - tlist.append((menuname,current_index)) + tunelist.append((menuname,current_index)) current_index+=1 - self.tuner_test_last_index = current_index-1 + if self.model == 3: + tlist.extend(tunelist) + self.tuner_test_last_index = current_index-1 + elif self.model == 4: + self.tunelist = tunelist + self.tuner_test_last_index = 4 + current_index = self.tuner_test_last_index + tlist.append((" %d. Tuning test" % current_index,self.tuner_test_last_index)) + current_index+=1 self.rs232testIndex=current_index tlist.append((" %d. RS232 test" % current_index,self.rs232testIndex)) current_index+=1 @@ -413,7 +470,9 @@ class FactoryTest(Screen): def getModelInfo(self): getmodel = 0 if fileExists("/proc/stb/info/vumodel"): - info = open("/proc/stb/info/vumodel").read().strip() + vumodel = open("/proc/stb/info/vumodel") + info=vumodel.read().strip() + vumodel.close() if info == "duo": self.model = 0 getmodel = 1 @@ -434,8 +493,11 @@ class FactoryTest(Screen): self.model = 4 getmodel = 1 print "getModelInfo : ultimo" + if getmodel == 0 and fileExists("/proc/stb/info/version"): - info = open("/proc/stb/info/version").read() + vesion = open("/proc/stb/info/version") + info=version.read() + version.close() if info[:2] == "14": self.model = 1 print "getModelInfo : solo_" @@ -480,10 +542,30 @@ class FactoryTest(Screen): self["testlist"].moveToIndex(index) self["resultlist"].moveToIndex(index) + def getImageVersion(self): + date = 'xxxx-xx-xx' + file = open(resolveFilename(SCOPE_SYSETC, 'image-version'), 'r') + lines = file.readlines() + for x in lines: + splitted = x.split('=') + if splitted[0] == "version": + # YYYY MM DD hh mm + #0120 2005 11 29 01 16 + #0123 4567 89 01 23 45 + version = splitted[1] + year = version[4:8] + month = version[8:10] + day = version[10:12] + date = '-'.join((year, month, day)) + break; + file.close() + return date + def getversion(self): try: fd = open("/proc/stb/info/version","r") version = fd.read() + fd.close() self["testversion"].setText(("Version %s"%version)) except: self["testversion"].setText(("Version no load")) @@ -546,7 +628,10 @@ class FactoryTest(Screen): elif index==self.fronttestIndex: self.Test1() elif index>=self.tuner_test_first_index and index<=self.tuner_test_last_index: - self.TestTune(index) + if self.model == 0 or self.model == 1 or self.model == 2 or self.model == 3: + self.TestTune(index) + elif self.model == 4: + self.openTestTuneMenu() elif index==self.scarttestIndex: self.Test6() elif index==self.rs232testIndex: @@ -616,29 +701,29 @@ class FactoryTest(Screen): result = 1 displayerror = 1 try: - if fileExists("/media/hdd"): - if access("/media/hdd",F_OK|R_OK|W_OK): - dummy=open("/media/hdd/dummy03","w") + if fileExists("/autofs/sda1"): + if access("/autofs/sda1",F_OK|R_OK|W_OK): + dummy=open("/autofs/sda1/dummy03","w") dummy.write("complete") dummy.close() - dummy=open("/media/hdd/dummy03","r") + dummy=open("/autofs/sda1/dummy03","r") if dummy.readline()=="complete": - print "/media/hdd - complete" + print "/autofs/sda1 - complete" else: - print "/media/hdd - readline error" + print "/autofs/sda1 - readline error" result += 1 displayerror = 1 dummy.close() - system("rm /media/hdd/dummy03") + system("rm /autofs/sda1/dummy03") else: - print "/media/hdd - rw access error" + print "/autofs/sda1 - rw access error" result += 1 displayerror = 1 else: - print "/media/hdd - file not exist" + print "/autofs/sda1 - file not exist" result += 1 except: - print "/media/hdd - exceptional error" + print "/autofs/sda1 - exceptional error" result += 1 displayerror = 1 @@ -663,8 +748,10 @@ class FactoryTest(Screen): self.session.openWithCallback(self.displayresult ,FrontTest) elif self.model == 1: self.session.openWithCallback(self.displayresult ,FrontTest_solo) - elif self.model == 2 or self.model == 3 or self.model == 4: + elif self.model == 2 or self.model == 3: self.session.openWithCallback(self.displayresult ,FrontTest_uno) + elif self.model == 4: + self.session.openWithCallback(self.displayresult ,FrontTest_ultimo) def displayresult(self): global fronttest @@ -673,6 +760,16 @@ class FactoryTest(Screen): else: self.rlist[self["testlist"].getCurrent()[1]]="fail" + def openTestTuneMenu(self): + self.session.openWithCallback(self.TestTuneMenuResult ,TestTuneMenu, self.tuneInfo, self.tunelist, self.NimType) + + def TestTuneMenuResult(self,result): + if result : + self.rlist[self["testlist"].getCurrent()[1]]="pass" + else: + self.rlist[self["testlist"].getCurrent()[1]]="fail" + self["resultlist"].updateList(self.rlist) + def TestTune(self,index): if self.oldref is None: eref = eServiceReference("1:0:19:1324:3EF:1:C00000:0:0:0") @@ -755,9 +852,13 @@ class FactoryTest(Screen): elif getTuneInfo["sat"] == "192": # Astra ref.setData(4,0xC00000) elif getTuneInfo["sat"] == "620": # Intelsat 902 - ref.setData(4,0x26c0000) # need to fix later + ref.setData(4,0x26c0000) elif getTuneInfo["sat"] == "642": # Intelsat 906 - ref.setData(4,0x282AF79) # need to fix later + ref.setData(4,0x282AF79) + elif getTuneInfo["sat"] == "685": # Panamsat 7,10 (68.5E) + ref.setData(4,0x02ad0000) + elif getTuneInfo["sat"] == "720": # Panamsat 4 (72.0E) + ref.setData(4,0x02d0af79) elif getTuneInfo["type"].startswith("DVB-C"): ref.setData(0,0x19) ref.setData(1,0x1325) @@ -862,7 +963,7 @@ class FactoryTest(Screen): hv == "" print "eSctest.getInstance().getFrontendstatus - %d"%result - if result == 0: + if result == 0 or result == -1: self.tunerlock = 0 self.tunemsgtimer.stop() self.session.nav.stopService() @@ -891,7 +992,7 @@ class FactoryTest(Screen): def tunemsg(self): self.tuningtimer.stop() - self.session.openWithCallback(self.tuneback, MessageBox, _("%s ok?" %(self["testlist"].getCurrent()[0])), MessageBox.TYPE_YESNO) + self.session.openWithCallback(self.tuneback, TuneMessageBox, _("%s ok?" %(self["testlist"].getCurrent()[0])), MessageBox.TYPE_YESNO) def setSourceVar(self): if self.model == 0: @@ -956,62 +1057,21 @@ class FactoryTest(Screen): self.session.openWithCallback(self.check7,RS232Test) def Agingmode(self): - if self.testing==1: - return - if self.oldref is None: - eref = eServiceReference("1:0:19:1324:3EF:1:C00000:0:0:0") - serviceHandler = eServiceCenter.getInstance() - servicelist = serviceHandler.list(eref) - if not servicelist is None: - ref = servicelist.getNext() - else: - ref = self.getCurrentSelection() - print "servicelist none" - else: - ref = self.oldref - self.session.nav.stopService() # try to disable foreground service - if self.model == 0 or self.model == 1 or self.NimType[0]["type"].startswith("DVB-S"): - ref.setData(0,0x19) - ref.setData(1,0x1325) - ref.setData(2,0x3ef) - ref.setData(3,0x1) - ref.setData(4,0x64af79) - elif self.NimType[0]["type"].startswith("DVB-C"): - ref.setData(0,0x19) - ref.setData(1,0x1325) - ref.setData(2,0x3ef) - ref.setData(3,0x1) - ref.setData(4,-64870) # ffff029a - elif self.NimType[0]["type"].startswith("DVB-T"): - ref.setData(0,0x19) - ref.setData(1,0x1325) - ref.setData(2,0x3ef) - ref.setData(3,0x1) - ref.setData(4,-286391716) # eeee025c - self.session.nav.playService(ref) - self.avswitch.setColorFormat(0) - self.avswitch.setAspectRatio(0) - self.agingtimer.start(2000,True) - - def agingCheck(self): - result = eSctest.getInstance().getFrontendstatus(0) - hv = "Ver" - print "eSctest.getInstance().getFrontendstatus - %d"%result - if result == 0: - self.session.nav.stopService() - self.session.open( MessageBox, _("Tune 1 Ver Locking Fail..."), MessageBox.TYPE_ERROR) - elif result == 1 : - self.session.openWithCallback(self.agingResult,AgingTest) - else: - self.session.nav.stopService() - self.session.open( MessageBox, _("Tune 1 Ver Error %d..."%result), MessageBox.TYPE_ERROR) + self.session.openWithCallback(self.AgingmodeCallback,AgingTest, self.model) - def agingResult(self): - global Agingresult - if(Agingresult ==1): + def AgingmodeCallback(self,ret): + if ret == 1: self["testlist"].moveToIndex(self.fdefaultIndex) self.Test14() self["testlist"].moveToIndex(self.shutdownIndex) + + def Agingmode2(self): + self.session.openWithCallback(self.Agingmode2Callback,AgingTest_mode2, self.model) + + def Agingmode2Callback(self): + self["testlist"].moveToIndex(self.fdefaultIndex) + self.Test14() + self["testlist"].moveToIndex(self.shutdownIndex) def Test8(self): self.usbtry = 9 @@ -1133,28 +1193,28 @@ class FactoryTest(Screen): self.getmacaddr() self.testing = 0 - def MemTest(self, which): - index = which - result = 0 - if index==0: - result = eMemtest.getInstance().dramtest() - elif index==1: - result = eMemtest.getInstance().flashtest() - result = 0 # temp - else: - result = eMemtest.getInstance().dramtest() - result = eMemtest.getInstance().flashtest() - result = 0 # temp +# def MemTest(self, which): +# index = which +# result = 0 +# if index==0: +# result = eMemtest.getInstance().dramtest() +# elif index==1: +# result = eMemtest.getInstance().flashtest() +# result = 0 # temp +# else: +# result = eMemtest.getInstance().dramtest() +# result = eMemtest.getInstance().flashtest() +# result = 0 # temp - index = index+10 +# index = index+10 - if result == 0: - print index,self.rlist[index] - self.rlist[index]="pass" - else: - print index,self.rlist[index] - self.rlist[index]="fail" - self["resultlist"].updateList(self.rlist) +# if result == 0: +# print index,self.rlist[index] +# self.rlist[index]="pass" +# else: +# print index,self.rlist[index] +# self.rlist[index]="fail" +# self["resultlist"].updateList(self.rlist) def scciresult(self): global smartcardtest @@ -1166,15 +1226,14 @@ class FactoryTest(Screen): def Test10(self): self.session.openWithCallback(self.scciresult ,SmartCardTest,stbmodel=self.model) - def Test11(self): - self.MemTest(1) +# def Test11(self): +# self.MemTest(1) - def Test12(self): - self.MemTest(2) - - def Test13(self): - self.MemTest(3) +# def Test12(self): +# self.MemTest(2) +# def Test13(self): +# self.MemTest(3) def Test14(self): try: @@ -1212,12 +1271,12 @@ class FactoryTest(Screen): ethtest = 0 class MacConfig(Screen): skin = """ - + - + - + """ def __init__(self, session, mactry = 1): @@ -1249,7 +1308,9 @@ class MacConfig(Screen): def getModelInfo(self): getmodel = 0 if fileExists("/proc/stb/info/vumodel"): - info = open("/proc/stb/info/vumodel").read().strip() + vumodel = open("/proc/stb/info/vumodel") + info=vumodel.read().strip() + vumodel.close() if info == "combo": self.model = 2 getmodel = 1 @@ -1271,9 +1332,10 @@ class MacConfig(Screen): getmodel = 1 print "getModelInfo : ultimo" - if getmodel == 0 and fileExists("/proc/stb/info/version"): - info = open("/proc/stb/info/version").read() + version = open("/proc/stb/info/version") + info=version.read() + version.close() # print info,info[:2] if info[:2] == "14": self.model = 1 @@ -1431,20 +1493,20 @@ class MacConfig(Screen): smartcardtest = 0 class SmartCardTest(Screen): skin = """ - - + + """ def __init__(self, session, stbmodel = 0): self["actions"] = ActionMap(["DirectionActions", "OkCancelActions"], { "cancel": self.keyCancel, - "ok" : self.keyCancel + "ok" : self.keyOk }, -2) Screen.__init__(self, session) self["text"]=Label(("Testing Smartcard 1...")) - self.step = 0 + self.testok = 0 self.smartcardtimer = eTimer() self.smartcardtimer.callback.append(self.check_smart_card) self.closetimer = eTimer() @@ -1453,7 +1515,6 @@ class SmartCardTest(Screen): global smartcardtest smartcardtest = 0 self.model = stbmodel - self.Testmode = 1 self.smartcardtimer.start(100,True) def check_smart_card(self): @@ -1461,19 +1522,13 @@ class SmartCardTest(Screen): index = self.smartcard result = 0 if index==0: - if self.Testmode==0: - result = eSctest.getInstance().check_smart_card("/dev/sci0") - else: - result = eSctest.getInstance().n_check_smart_card("/dev/sci0") + result = eSctest.getInstance().check_smart_card("/dev/sci0") elif index ==1: - if self.Testmode==0: - result = eSctest.getInstance().check_smart_card("/dev/sci1") - else: - result = eSctest.getInstance().n_check_smart_card("/dev/sci1") + result = eSctest.getInstance().check_smart_card("/dev/sci1") else: result = -1 - print result + print "check smartcard : ", result if result == 0: print 'pass' @@ -1484,7 +1539,7 @@ class SmartCardTest(Screen): return elif (index==1 or self.model==1): smartcardtest = 1 - self.step = 1 + self.testok = 1 self["text"].setText(_("Smart Card OK!!")) self.closetimer.start(2000,True) self.smartcardtimer.stop() @@ -1513,14 +1568,18 @@ class SmartCardTest(Screen): def keyCancel(self): self.close() + def keyOk(self): + if self.testok == 1: + self.close() + fronttest = 0 class FrontTest(Screen): skin = """ - - + + """ def __init__(self, session): @@ -1603,8 +1662,8 @@ class FrontTest(Screen): class FrontTest_solo(Screen): skin = """ - - + + """ def __init__(self, session): @@ -1698,11 +1757,11 @@ class FrontTest_solo(Screen): def keyOk(self): global fronttest - self.fronttimer.stop() - eSctest.getInstance().VFD_Close() if self.step == 6: fronttest = 1 - self.close() + self.fronttimer.stop() + eSctest.getInstance().VFD_Close() + self.close() def FrontAnimate(self): if (self.frontturnonoff==0): @@ -1798,11 +1857,11 @@ class FrontTest_uno(Screen): def keyOk(self): global fronttest - self.fronttimer.stop() - eSctest.getInstance().VFD_Close() if self.step == 6: fronttest = 1 - self.close() + self.fronttimer.stop() + eSctest.getInstance().VFD_Close() + self.close() def FrontAnimate(self): if (self.frontturnonoff==0): @@ -1812,7 +1871,99 @@ class FrontTest_uno(Screen): self.frontturnonoff = 0 eSctest.getInstance().turnoff_VFD() self.fronttimer.start(1000,True) - + +class FrontTest_ultimo_Summary(Screen): + skin = """ + + + + """ + + def __init__(self, session, parent): + Screen.__init__(self, session, parent = parent) + self["text"] = Label("Press Front STANDBY") + + def setText(self, text = ""): + if not isinstance(text, str): + text = str(text) + self["text"].setText(text) + +class FrontTest_ultimo(FrontTest_solo): + skin = """ + + + """ + + def createSummary(self): + return FrontTest_ultimo_Summary + + def KeyTimeOut(self): + if self.step == 1: + self["text"].setText(("Front STANDBY ERROR\nPress exit!")) + self.summaries.setText("Front STANDBY ERROR\nPress exit!") + elif self.step == 2 : + self["text"].setText(("Front CH - ERROR\nPress exit!")) + self.summaries.setText("Front CH - ERROR\nPress exit!") + elif self.step == 3: + self["text"].setText(("Front CH + ERROR\nPress exit!")) + self.summaries.setText("Front CH + ERROR\nPress exit!") + elif self.step == 4 : + self["text"].setText(("Front VOL - ERROR\nPress exit!")) + self.summaries.setText("Front VOL - ERROR\nPress exit!") + elif self.step == 5: + self["text"].setText(("Front VOL + ERROR\nPress exit!")) + self.summaries.setText("Front VOL + ERROR\nPress exit!") + self.step = 0 + + def keypower(self): + if self.step== 1: + self.keytimeout.stop() + self.keytimeout.start(5000,True) + self.step = 2 + self["text"].setText(_("Press Front CH -")) + self.summaries.setText(_("Press Front CH -")) + + def keyright(self): + if self.step== 3: + self.keytimeout.stop() + self.keytimeout.start(5000,True) + self.step = 4 + self["text"].setText(_("Press Front VOL -")) + self.summaries.setText(_("Press Front VOL -")) + + def keyleft(self): + if self.step== 2: + self.keytimeout.stop() + self.keytimeout.start(5000,True) + self.step = 3 + self["text"].setText(_("Press Front CH +")) + self.summaries.setText(_("Press Front CH +")) + + def keyvolup(self): + if self.step== 5: + self.keytimeout.stop() + self.step = 6 + self.fronttimer.start(1000,True) + self["text"].setText(_("Front LED OK?\n\nyes-ok\nno-exit")) + self.summaries.setText(_("Front LED OK?")) + + def keyvoldown(self): + if self.step== 4: + self.keytimeout.stop() + self.keytimeout.start(5000,True) + self.step = 5 + self["text"].setText(_("Press Front VOL +")) + self.summaries.setText(_("Press Front VOL +")) + + def FrontAnimate(self): + if (self.frontturnonoff==0): + eSctest.getInstance().turnon_VFD() + self.frontturnonoff = 1 + self.fronttimer.start(1500,True) + else: + self.frontturnonoff = 0 + eSctest.getInstance().turnoff_VFD() + self.fronttimer.start(500,True) rstest = 0 @@ -1820,8 +1971,8 @@ import select class RS232Test(Screen): skin = """ - - + + """ step=1 def __init__(self, session): @@ -1850,98 +2001,915 @@ class RS232Test(Screen): rstest = 0 else: rstest = 0 + rs.close() except: - print 'error' + try: + if rs: + rs.close() + except: + pass + print 'except error' rstest = 0 + if rstest == 0: + self.session.open( MessageBox, _("RS232 Test Failed!\nPress 'EXIT' button!"), MessageBox.TYPE_ERROR) self.close() def keyCancel(self): self.close() -Agingresult = 0 +class AgingTestSummary(Screen): + skin = """ + + + """ + +class AgingTestSummaryVFD(Screen): + skin = """ + + + + + + + + + + SNRdB + + + + + AGC + + + """ + + def __init__(self, session, parent): + Screen.__init__(self, session) + self["zapmode"] = Label("") + self["timer"] = Label("") + self["curtuner"] = Label("") + self["error"] = Label("") + + def setText(self, label = "zapmode",text = ""): + if not isinstance(text,str): + text = str(text) + self[label].setText(text) class AgingTest(Screen): skin = """ - - - + + + + + + + SNRdB + + + + + AGC + + + """ step=1 - def __init__(self, session): - self["actions"] = ActionMap(["MediaPlayerActions","GlobalActions"], + def __init__(self, session, model): + Screen.__init__(self, session) + self["actions"] = ActionMap(["MediaPlayerActions","GlobalActions", "MediaPlayerSeekActions", "ChannelSelectBaseActions"], { "pause": self.keyEnd, "stop": self.keyFinish, - "volumeUp": self.nothing, - "volumeDown": self.nothing, - "volumeMute": self.nothing, + "volumeUp": self.keyVolumeup, + "volumeDown": self.keyVolumedown, + "volumeMute": self.nothing, + "seekFwd" : self.keyFFW, }, -2) - - Screen.__init__(self, session) + self.model = model self["text1"]=Label(("Exit - Press Pause Key")) self["text2"]=Label(("Reset - Press Stop Key")) -# self.servicelist = ServiceList() -# self.oldref = session.nav.getCurrentlyPlayingServiceReference() -# print "oldref",self.oldref -# session.nav.stopService() # try to disable foreground service -# self.chstart() - self.tunerlock = 0 - self.tuningtimer = eTimer() - self.tuningtimer.callback.append(self.updateStatus) -# self.tuningtimer.start(200,True) + self["text3"]=Label(("Manual zapping")) + self["text4"]=Label((" ")) + self.avswitch = AVSwitch() + self.curzappingmode = 'manual' + self.zapping_interval = 300 + self.error = 0 + self.timeout = self.zapping_interval + self.tunelist = [] + self.zappinglist = { + 'DVB-S2' : [ + ('S-1','1:0:19:1325:3EF:1:0x64af79:0:0:0:'), # astra hd + ('S-2','1:0:19:1324:3EF:1:0x64af79:0:0:0:'), # anixe hd + ('S-3','1:0:19:1331:3EF:1:0x64af79:0:0:0:') # servus hd + ], + 'DVB-C': [ + ('C-1','1:0:19:1325:3EF:1:FFFF029A:0:0:0:'), # astra hd (DVB-C) + ('C-2','1:0:19:1324:3EF:1:FFFF029A:0:0:0:') # anixe hd (DVB-C) + ] + } + self.LockCheckTimer = eTimer() + self.LockCheckTimer.callback.append(self.LockCheck) + self.nextzappingtimer = eTimer() + self.nextzappingtimer.callback.append(self.checktimeout) + self.checkTunerType() + self.makeTunelList() + self.playservice(service = self.tunelist[0][1]) +# self.logmessage("AGING TEST START") + + def createSummary(self): + if self.model == 4: + self.onShown.append(self.VFDinit) + return AgingTestSummaryVFD + else: + return AgingTestSummary + def setTextVFD(self, name ,text): + if self.model == 4: + self.summaries.setText(name ,text) - def updateStatus(self): - result = eSctest.getInstance().getFrontendstatus(0) - hv = "Ver" - - print "eSctest.getInstance().getFrontendstatus - %d"%result - if result == 0: - self.tunerlock = 0 - self.session.nav.stopService() - self.session.open( MessageBox, _("Tune 1 Ver Locking Fail..."), MessageBox.TYPE_ERROR) - elif result==1 : - self.tunerlock = 1 + def VFDinit(self): + if self.curzappingmode == 'manual' : + self.summaries.setText("zapmode", 'MANUAL') else: - self.tunerlock = 0 - self.session.nav.stopService() - self.session.open( MessageBox, _("Tune 1 Ver Error %d..."%result), MessageBox.TYPE_ERROR) + self.summaries.setText("zapmode", 'AUTO') + self.summaries.setText("timer", "Timer %d sec"%self.timeout) + self.summaries.setText("curtuner", "%s, CHANNEL - %s)"%(self.NimType[0], self.tunelist[0][0])) + + def checkTunerType(self): + self.NimType={} + nimfile = open("/proc/bus/nim_sockets") + for line in nimfile.readlines(): + print line + if line == "": + break + if line.strip().startswith("NIM Socket"): + parts = line.strip().split(" ") + current_slot = int(parts[2][:-1]) + elif line.strip().startswith("Type:"): + self.NimType[current_slot]= str(line.strip()[6:]) + elif line.strip().startswith("empty"): + self.NimType.pop(current_slot) + nimfile.close() + + def makeTunelList(self): + if self.NimType[0].startswith("DVB-S"): + tunetype = "DVB-S2" + elif self.NimType[0].startswith("DVB-C"): + tunetype = "DVB-C" + elif self.NimType[0].startswith("DVB-T"): +# tunetype = "DVB-T" + pass # fix later.. + try : + self.tunelist = self.zappinglist[tunetype] + except: + print "[FactoryTest] ERROR, index error (%s)"%tunetype + def nextZapping(self, zap_rev = False): + if zap_rev: + tunelistlen = len(self.tunelist) + nextservice = self.tunelist.pop(tunelistlen-1) + self.tunelist.insert(0,nextservice) + else: + currentservice = self.tunelist.pop(0) + self.tunelist.append(currentservice) + self.playservice(service=self.tunelist[0][1]) + if self.curzappingmode == 'auto': + self.timeout = self.zapping_interval + self.setTextVFD("curtuner", "%s, CHANNEL - %s)"%(self.NimType[0], self.tunelist[0][0])) + + def checktimeout(self): + if self.timeout == 0: + self.nextZapping() + else: + self.timeout -=1 + self["text4"].setText("remain %d sec for next tuning" %self.timeout) + self.setTextVFD("timer", "Timer %d sec"%self.timeout) + + def playservice(self,service = '1:0:19:1325:3EF:1:0x64af79:0:0:0:'): + ref = eServiceReference(service) + self.session.nav.playService(ref) + self.avswitch.setAspectRatio(6) + self.avswitch.setColorFormat(0) + self.LockCheckTimer.start(2000,True) + + def LockCheck(self): + result = eSctest.getInstance().getFrontendstatus(0) + if result == 0 or result == -1: + if self.model == 4: + self.error +=1 + print "AGINGTEST - LOCK FAIL(%d)"%self.error + self.setTextVFD("error", "LOCK FAIL(%d)"%self.error) + # logmsg = "[LOCKFAIL][%d] TYPE : %s, CH : %s, ZAPMODE: %s"%(self.error,self.NimType[0],self.tunelist[0][0],self.curzappingmode) + # self.logmessage(logmsg) + else: + self.session.open( MessageBox, _("Locking Fail Error"), MessageBox.TYPE_ERROR) + + def logmessage(self,msg): + pass def nothing(self): print "nothing" - def chstart(self): - if self.oldref is None: - eref = eServiceReference("1:0:19:1324:3EF:1:C00000:0:0:0") - serviceHandler = eServiceCenter.getInstance() - servicelist = serviceHandler.list(eref) - if not servicelist is None: - ref = servicelist.getNext() + def keyFFW(self): + if self.curzappingmode == 'auto': + self.curzappingmode = 'manual' + self.nextzappingtimer.stop() + self.timeout = self.zapping_interval + self["text3"].setText("Manual zapping") + self["text4"].setText("") + self.setTextVFD("zapmode", 'MANUAL') + self.setTextVFD("timer", "") + + elif self.curzappingmode == 'manual': + self.curzappingmode = 'auto' + self["text3"].setText("Auto zapping") + self["text4"].setText("remain %d sec for next tuning" %self.timeout) + self.setTextVFD("zapmode", 'AUTO') + self.setTextVFD("timer", "Timer %d sec"%self.timeout) +# self.timeout = self.zapping_interval + self.nextzappingtimer.start(1000) + + def keyVolumeup(self): + self.nextZapping(zap_rev = False) + + def keyVolumedown(self): + self.nextZapping(zap_rev = True) + + def nothing(self): + print "nothing" + + def keyEnd(self): + self.session.nav.stopService() + self.close(0) # exit + + def keyFinish(self): + self.session.nav.stopService() + self.close(1) # exit and reset + +class AgingTest_mode2_Summary(Screen): + skin = """ + + + """ + +class AgingTest_mode2_Summary_VFD(Screen): + skin = """ + + + + + + + + + + SNRdB + + + + + AGC + + + """ + + def __init__(self, session, parent): + Screen.__init__(self, session) + self["zapmode"] = Label("") + self["timer"] = Label("") + self["curtuner"] = Label("") + self["error"] = Label("") + + def setText(self, label = "zapmode",text = ""): + if not isinstance(text,str): + text = str(text) + self[label].setText(text) + +from Components.Input import Input +from Screens.InputBox import InputBox +class AgingTest_mode2(Screen): + skin = """ + + + + + + + SNRdB + + + + + AGC + + + + """ + step=1 + def __init__(self, session,model = 4): + self["actions"] = ActionMap(["MediaPlayerActions","GlobalActions","InfobarMenuActions","ChannelSelectBaseActions"], + { + "pause": self.keyEnd, + "stop": self.keyFinish, + "volumeUp": self.keyVolumeup, + "volumeDown": self.keyVolumedown, + "volumeMute": self.nothing, + "mainMenu" : self.keyMenu, + "nextBouquet" : self.keyChannelup, + "prevBouquet" : self.keyChannelDown, + "showFavourites" : self.keyBlue, + }, -2) + + Screen.__init__(self, session) + self.model = model + self.slotindex = { 0 : 'A', 1 : 'B', 2 : 'C', 3: 'D'} + self.curtuner = 0 + self.isChangeTuner = True + self.isChangeChannel = False + self.zapping_interval = 300 + self.timeout = self.zapping_interval + self.avswitch = AVSwitch() + self.error = 0 + self.LockCheckTimer = eTimer() + self.LockCheckTimer.callback.append(self.LockCheck) + self.nextzappingtimer = eTimer() + self.nextzappingtimer.callback.append(self.checktimeout) + self.tunelist_db = { + 'DVB-S2' : [ + [ + ('1-1','1:0:19:1325:3EF:1:0x64af79:0:0:0:'), # astra hd + ('1-2','1:0:19:1324:3EF:1:0x64af79:0:0:0:'), # anixe hd + ('1-3','1:0:19:1331:3EF:1:0x64af79:0:0:0:') # servus hd + ], + [ + ('2-1','1:0:19:1325:3EF:1:0xC00000:0:0:0:'), # astra hd + ('2-2','1:0:19:1324:3EF:1:0xC00000:0:0:0:'), # anixe hd + ('2-3','1:0:19:1331:3EF:1:0xC00000:0:0:0:') # servus hd + ], + [ + ('3-1','1:0:19:1325:3EF:1:0x282AF79:0:0:0:'), # astra hd + ('3-2','1:0:19:1324:3EF:1:0x282AF79:0:0:0:'), # anixe hd + ('3-3','1:0:19:1331:3EF:1:0x282AF79:0:0:0:') # servus hd + ], + [ + ('4-1','1:0:19:1325:3EF:1:0x02d0af79:0:0:0:'), # astra hd, Panamsat 4 (72.0E) + ('4-2','1:0:19:1324:3EF:1:0x02d0af79:0:0:0:'), # anixe hd + ('4-3','1:0:19:1331:3EF:1:0x02d0af79:0:0:0:') # servus hd + ] +# namespace : 0x02d0af79, 720 # Panamsat 7,10 (68.5E) + ], + 'DVB-C': [ + [ + ('C-1','1:0:19:1325:3EF:1:FFFF029A:0:0:0:'), # astra hd (DVB-C) + ('C-2','1:0:19:1324:3EF:1:FFFF029A:0:0:0:') # anixe hd (DVB-C) + ] + ] + } + self.tunelist = {} + self.NimType={} + self.checkTunerType() + self.makeTunelList() + self.playservice(service = self.tunelist[self.curtuner][0][1]) + self.curzappingmode = 'auto' + self["text1"]=Label("ZAPPING MODE : AUTO") + self["text2"]=Label("CURRENT TUNER : %s (%s)"%(self.slotindex[self.curtuner], self.NimType[self.curtuner])) + self["text3"]=Label("remain %d sec for next tuning" %self.timeout) + self["text4"]=Label("Press 'stop' key for exit") + self.nextzappingtimer.start(1000) + self.logmessage("AGING TEST START") + + def createSummary(self): + if self.model == 4: + self.onShown.append(self.VFDinit) + return AgingTest_mode2_Summary_VFD + else: + return AgingTest_mode2_Summary + + def VFDinit(self): + if self.curzappingmode == 'manual' : + self.summaries.setText("zapmode", 'MANUAL') + else: + self.summaries.setText("zapmode", 'AUTO') + self.summaries.setText("timer", "Timer %d sec"%self.timeout) + self.summaries.setText("curtuner", "%s (%s, CHANNEL - %s)"%(self.slotindex[self.curtuner], self.NimType[self.curtuner], self.tunelist[self.curtuner][0][0])) + + def setTextVFD(self,name ,text): + if self.model == 4: + self.summaries.setText(name, text) + + def checkTunerType(self): + nimfile = open("/proc/bus/nim_sockets") + for line in nimfile.readlines(): + print line + if line == "": + break + if line.strip().startswith("NIM Socket"): + parts = line.strip().split(" ") + current_slot = int(parts[2][:-1]) + elif line.strip().startswith("Type:"): + self.NimType[current_slot]= str(line.strip()[6:]) + elif line.strip().startswith("empty"): + self.NimType.pop(current_slot) + nimfile.close() + + def makeTunelList(self): + for slot, type in self.NimType.items(): + if type.startswith('DVB-S'): + tunelist_type = 'DVB-S2' + elif type.startswith('DVB-C'): + tunelist_type = 'DVB-C' + elif type.startswith('DVB-T'): + tunelist_type = 'DVB-T' + try : + self.tunelist[slot] = self.tunelist_db[tunelist_type].pop(0) + except: + print "[FactoryTest] ERROR, pop from empty list (%s)"%tunelist_type + print "tunelist : " + print self.tunelist + + def nextZapping(self, mode = 'auto', changeTuner = True, changeService = False, reverse_tuner = False, reverse_service = False): + if mode == 'manual' and changeTuner or mode == 'auto' and self.isChangeTuner: + if reverse_tuner: + self.curtuner -=1 else: - ref = self.getCurrentSelection() - print "servicelist none" + self.curtuner +=1 + if self.curtuner >= len(self.tunelist): + self.curtuner = 0 + if self.curtuner < 0: + self.curtuner = len(self.tunelist)-1 + if mode == 'manual' and changeService or mode == 'auto' and self.isChangeChannel: + if reverse_service: + tunelistlen = len(self.tunelist[self.curtuner]) + nextservice = self.tunelist[self.curtuner].pop(tunelistlen-1) + self.tunelist[self.curtuner].insert(0,nextservice) + else: + currentservice = self.tunelist[self.curtuner].pop(0) + self.tunelist[self.curtuner].append(currentservice) + self.playservice(service=self.tunelist[self.curtuner][0][1]) + if self.curzappingmode == 'auto': + self.timeout = self.zapping_interval + self["text2"].setText("CURRENT TUNER : %s (%s)"%(self.slotindex[self.curtuner], self.NimType[self.curtuner])) + self.setTextVFD("curtuner", "%s (%s, CHANNEL - %s)"%(self.slotindex[self.curtuner], self.NimType[self.curtuner], self.tunelist[self.curtuner][0][0])) + + + def checktimeout(self): + if self.timeout == 0: + self.nextZapping(mode = 'auto') else: - ref = self.oldref - self.session.nav.stopService() # try to disable foreground service - ref.setData(0,0x19) - ref.setData(1,0x83) - ref.setData(2,0x6) - ref.setData(3,0x85) - ref.setData(4,0x640000) + self.timeout -=1 + self["text3"].setText("remain %d sec for next tuning" %self.timeout) + self.setTextVFD("timer", "Timer %d sec"%self.timeout) + + def playservice(self,service = '1:0:19:1325:3EF:1:0x64af79:0:0:0:'): + ref = eServiceReference(service) self.session.nav.playService(ref) + self.avswitch.setAspectRatio(6) + self.avswitch.setColorFormat(0) + self.LockCheckTimer.start(2000,True) + + def LockCheck(self): + result = eSctest.getInstance().getFrontendstatus(self.curtuner) + if result == 0 or result == -1: + if self.model == 4: + self.error +=1 + print "AGINGTEST - LOCK FAIL(%d)"%self.error + self.summaries.setText("error", "LOCK FAIL(%d)"%self.error) + logmsg = "[LOCKFAIL][%d] SLOT : %d, TYPE : %s, CH : %s, ZAPMODE: %s"%(self.error,self.curtuner,self.NimType[self.curtuner],self.tunelist[self.curtuner][0][0],self.curzappingmode) + self.logmessage(logmsg) + else: + self.error +=1 + print "AGINGTEST - LOCK FAIL(%d)"%self.error + logmsg = "[LOCKFAIL][%d] SLOT : %d, TYPE : %s, CH : %s, ZAPMODE: %s"%(self.error,self.curtuner,self.NimType[self.curtuner],self.tunelist[self.curtuner][0][0],self.curzappingmode) + self.logmessage(logmsg) + self.session.open( MessageBox, _("Locking Fail Error"), MessageBox.TYPE_ERROR) + + def logmessage(self,msg): + print "[logmessage]",msg + devpath = None + checklist = ["/autofs/sda1", "/autofs/sdb1", "/autofs/sdc1", "/autofs/sdd1", "/autofs/sde1"] + for dev in checklist: + try: + if fileExists(dev): + if access(dev,F_OK|R_OK|W_OK): + dummy=open(dev+"/dummy03","w") + dummy.write("check") + dummy.close() + dummy=open(dev+"/dummy03","r") + if dummy.readline()=="check": + print dev," - rw check ok" + devpath = dev + break + else: + print dev," - read check error" + dummy.close() + system("rm "+dev+"/dummy03") + else: + print dev," - rw access error" + else: + pass + except: + print dev," - exceptional error" + if devpath: + cmd = "echo %s >> %s/agingTest.log" % (msg,devpath) + print "[logmessage] %s(%s)"%(cmd,devpath) + system(cmd) + + def nothing(self): + print "nothing" + + def keyBlue(self): + if self.curzappingmode == 'auto': + self.curzappingmode = 'manual' + self["text1"].setText("ZAPPING MODE : MANUAL") + self["text3"].setText("Press 'stop' key for exit") + self["text4"].setText("") + self.setTextVFD("zapmode", 'MANUAL') + self.setTextVFD("timer", "") + self.nextzappingtimer.stop() + self.timeout = self.zapping_interval + elif self.curzappingmode == 'manual': + self.curzappingmode = 'auto' + self["text1"].setText("ZAPPING MODE : AUTO") + self["text3"].setText("remain %d sec for next tuning" %self.timeout) + self["text4"].setText("Press 'stop' key for exit") + self.setTextVFD("zapmode", 'AUTO') + self.setTextVFD("timer", "Timer %d sec"%self.timeout) + self.timeout = self.zapping_interval + self.nextzappingtimer.start(1000) + + def keyVolumeup(self): + self.nextZapping(mode = 'manual', changeTuner = False, changeService = True) + + def keyVolumedown(self): + self.nextZapping(mode = 'manual', changeTuner = False, changeService = True, reverse_service = True) + + def keyChannelup(self): + self.nextZapping(mode = 'manual', changeTuner = True, changeService = False) + + def keyChannelDown(self): + self.nextZapping(mode = 'manual', changeTuner = True, changeService = False, reverse_tuner = True) + + def keyMenu(self): + self.session.openWithCallback(self.menuCallback, AgingTest_mode2_setmenu, tuner = self.isChangeTuner, channel = self.isChangeChannel, interval = self.zapping_interval) + + def menuCallback(self, tuner, channel, interval): + if tuner is not None: + self.isChangeTuner = tuner + if channel is not None: + self.isChangeChannel = channel + if interval is not None: + self.zapping_interval = interval + self.timeout = self.zapping_interval def keyEnd(self): - global Agingresult - Agingresult = 0 - self.session.nav.stopService() # try to disable foreground service + self.session.nav.stopService() self.close() def keyFinish(self): - global Agingresult - Agingresult = 1 - self.session.nav.stopService() # try to disable foreground service + self.session.nav.stopService() self.close() + +from Components.ConfigList import ConfigListScreen +from Components.config import ConfigInteger, ConfigYesNo, getConfigListEntry, NoSave +class AgingTest_mode2_setmenu(Screen,ConfigListScreen): + skin = """ + + + + + + + """ + def __init__(self,session, tuner = True, channel = False, interval = 300): + Screen.__init__(self,session) + self.session = session + self.tuner = tuner + self.channel = channel + self.zap_interval = interval + self["key_red"] = StaticText(_("Save")) + self["key_green"] = StaticText(_("Cancel")) + self["shortcuts"] = ActionMap(["ShortcutActions", "SetupActions" ], + { + "ok": self.keySave, + "cancel": self.keyCancel, + "red": self.keyCancel, + "green": self.keySave, + }, -2) + self.list = [] + ConfigListScreen.__init__(self, self.list,session = self.session) + self.config_tuner = NoSave(ConfigYesNo(default = self.tuner)) + self.config_channel = NoSave(ConfigYesNo(default = self.channel)) + self.config_zap_interval = NoSave(ConfigInteger(default = self.zap_interval, limits=(5, 9999) ) ) + self.configSetup() + + def configSetup(self): + self.list = [] + self.setupEntryTuner = getConfigListEntry(_("change tuner on timeout"), self.config_tuner ) + self.setupEntryChannel = getConfigListEntry(_("change channel on timeout"), self.config_channel ) + self.setupEntryZapInterval = getConfigListEntry(_("zapping interval (sec) "), self.config_zap_interval ) + self.list.append( self.setupEntryTuner ) + self.list.append( self.setupEntryChannel ) + self.list.append( self.setupEntryZapInterval ) + self["config"].list = self.list + self["config"].l.setList(self.list) + + def keySave(self): + self.close(self.config_tuner.value, self.config_channel.value, self.config_zap_interval.value) + + def keyCancel(self): + self.close(None, None, None) + +class TestTuneMenu(Screen): + skin = """ + + + + + """ + + def __init__(self ,session ,tuneInfo, tunelist,NimType): + self.session = session + self.NimType = NimType + self.tuneInfo = tuneInfo + self.tunelist = tunelist + self.model = 4 + self["actions"] = NumberActionMap(["OkCancelActions","WizardActions","NumberActions"], + { + "left": self.nothing, + "right":self.nothing, + "ok": self.TestAction, + "cancel": self.keyCancel, + "up": self.keyup, + "down": self.keydown, + "0": self.numberaction, + "1": self.numberaction, + "2": self.numberaction, + "3": self.numberaction, + "4": self.numberaction, + "5": self.numberaction, + "6": self.numberaction, + "7": self.numberaction, + "8": self.numberaction, + "9": self.numberaction, + + }, -2) + Screen.__init__(self, session) + self.text = _("Press 'EXIT' key to finish tune test.") + self["text"] = StaticText(self.text) + self.createConfig() + session.nav.stopService() # try to disable foreground service + + self.tunemsgtimer = eTimer() + self.tunemsgtimer.callback.append(self.tunemsg) + + self.camstep = 1 + self.camtimer = eTimer() + self.camtimer.callback.append(self.cam_state) + + self.tunerlock = 0 + self.tuningtimer = eTimer() + self.tuningtimer.callback.append(self.updateStatus) + self.setSourceVar() + self.avswitch = AVSwitch() + + def createConfig(self): + self.menulength= len(self.tunelist) + self["testlist"] = MenuList(self.tunelist) + self.rlist = [] + for x in range(self.menulength): + self.rlist.append(("..")) + self["resultlist"] = TestResultList(self.rlist) + + def TestAction(self): + print "line - ",self["testlist"].getCurrent()[1] + self.currentindex = index = self["testlist"].getCurrent()[1] + result = 0 + self.TestTune(index) + + def nothing(self): + print "nothing" + + def keyup(self): + print "self.menulength = ",self.menulength + print "self[\"testlist\"].getCurrent()[1] = ",self["testlist"].getCurrent()[1] + if self["testlist"].getCurrent()[1]==0: + self["testlist"].moveToIndex(self.menulength-1) + self["resultlist"].moveToIndex(self.menulength-1) + else: + self["testlist"].up() + self["resultlist"].up() + + + def keydown(self): + print "self.menulength = ",self.menulength + print "self[\"testlist\"].getCurrent()[1] = ",self["testlist"].getCurrent()[1] + if self["testlist"].getCurrent()[1]==(self.menulength-1): + self["testlist"].moveToIndex(0) + self["resultlist"].moveToIndex(0) + else: + self["testlist"].down() + self["resultlist"].down() + + def numberaction(self, number): + if number >= self.menulength: + return + index = int(number) + self["testlist"].moveToIndex(index) + self["resultlist"].moveToIndex(index) + + def keyCancel(self): + print "testtunemenu exit" + if not '..' in self.rlist and not 'fail' in self.rlist: + self.close(True) + else: + self.close(False) +# if self.oldref is not None: +# self.session.nav.playService(self.oldref) + + def TestTune(self,index): + ref = eServiceReference("1:0:19:1324:3EF:1:C00000:0:0:0") + self.session.nav.stopService() # try to disable foreground service + getTuneInfo=self.tuneInfo[index] + if getTuneInfo["cam"] is True: + self.camstep = 1 + self.camtimer.start(100,True) + if getTuneInfo["type"].startswith("DVB-S"): + if getTuneInfo["pol"] == "H": + ref.setData(0,1) + ref.setData(1,0x6D3) + ref.setData(2,0x3) + ref.setData(3,0xA4) + else: + ref.setData(0,0x19) + ref.setData(1,0x1325) + ref.setData(2,0x3ef) + ref.setData(3,0x1) + if getTuneInfo["sat"] == "160": # Eutelsat W2 + ref.setData(4,0xA00000) + elif getTuneInfo["sat"] == "100": # Eutelsat + ref.setData(4,0x64af79) + elif getTuneInfo["sat"] == "130": # Hotbird + ref.setData(4,0x820000) + elif getTuneInfo["sat"] == "192": # Astra + ref.setData(4,0xC00000) + elif getTuneInfo["sat"] == "620": # Intelsat 902 + ref.setData(4,0x26c0000) # need to fix later + elif getTuneInfo["sat"] == "642": # Intelsat 906 + ref.setData(4,0x282AF79) # need to fix later + elif getTuneInfo["type"].startswith("DVB-C"): + ref.setData(0,0x19) + ref.setData(1,0x1325) + ref.setData(2,0x3ef) + ref.setData(3,0x1) + ref.setData(4,-64870) # ffff029a + elif getTuneInfo["type"].startswith("DVB-T"): + ref.setData(0,0x19) + ref.setData(1,0x1325) + ref.setData(2,0x3ef) + ref.setData(3,0x1) + ref.setData(4,-286391716) # eeee025c + self.session.nav.playService(ref) + if getTuneInfo["color"]=="CVBS": + self.avswitch.setColorFormat(0) + elif getTuneInfo["color"]=="RGB": + self.avswitch.setColorFormat(1) + elif getTuneInfo["color"]=="YC": + self.avswitch.setColorFormat(2) + if getTuneInfo["ratio"] == "4:3": + self.avswitch.setAspectRatio(0) + elif getTuneInfo["ratio"] == "16:9": + self.avswitch.setAspectRatio(6) + self.tuningtimer.start(2000,True) + self.tunemsgtimer.start(3000, True) + + def cam_state(self): + current_index = self.currentindex + if self.camstep == 1: + slot = 0 + state = eDVBCI_UI.getInstance().getState(slot) + print '-1-stat',state + if state > 0: + self.camstep=2 + self.camtimer.start(100,True) + else: + self.session.nav.stopService() + self.session.open( MessageBox, _("CAM1_NOT_INSERTED\nPress exit!"), MessageBox.TYPE_ERROR) + self.rlist[current_index]="fail" + self.tunemsgtimer.stop() + elif self.camstep == 2: + slot = 0 + appname = eDVBCI_UI.getInstance().getAppName(slot) + print 'appname',appname + if appname is None: + self.session.nav.stopService() + self.session.open( MessageBox, _("NO_GET_APPNAME\nPress exit!"), MessageBox.TYPE_ERROR) + self.rlist[current_index]="fail" + self.tunemsgtimer.stop() + else: + self.camstep=3 + self.camtimer.start(100,True) + elif self.camstep==3: + slot = 1 + state = eDVBCI_UI.getInstance().getState(slot) + print '-2-stat',state + if state > 0: + self.camstep=4 + self.camtimer.start(100,True) + else: + self.session.nav.stopService() + self.session.open( MessageBox, _("CAM2_NOT_INSERTED\nPress exit!"), MessageBox.TYPE_ERROR) + self.rlist[current_index]="fail" + self.tunemsgtimer.stop() + elif self.camstep == 4: + slot = 1 + appname = eDVBCI_UI.getInstance().getAppName(slot) + print 'appname',appname + if appname is None: + self.session.nav.stopService() + self.session.open( MessageBox, _("NO_GET_APPNAME\nPress exit!"), MessageBox.TYPE_ERROR) + self.rlist[current_index]="fail" + self.tunemsgtimer.stop() + else: + self.setSource() + self.camstep = 5 + + def updateStatus(self): + current_index = self.currentindex + getTuneInfo=self.tuneInfo[current_index] + result = eSctest.getInstance().getFrontendstatus(getTuneInfo["slot"]) + tunno = getTuneInfo["slot"]+1 + hv = getTuneInfo["pol"] + if hv == "H": + hv = "Hor" + elif hv == "V": + hv = "Ver" + else : + hv == "" + + print "eSctest.getInstance().getFrontendstatus - %d"%result + if result == 0 or result == -1: + self.tunerlock = 0 + self.tunemsgtimer.stop() + self.session.nav.stopService() + self.avswitch.setColorFormat(0) + self.session.open( MessageBox, _("Tune%d %s Locking Fail..."%(tunno,hv)), MessageBox.TYPE_ERROR) + self.rlist[current_index]="fail" + else : + self.tunerlock = 1 + + def tuneback(self,yesno): + current_index=self.currentindex + self.session.nav.stopService() # try to disable foreground service + if yesno and self.tunerlock == 1: + getTuneInfo=self.tuneInfo[current_index] + if getTuneInfo["cam"] and self.camstep < 5: # need fix to depending about CAM exist + self.rlist[current_index]="fail" + else : + self.rlist[current_index]="pass" + else: + self.rlist[current_index]="fail" + if self.tuneInfo[current_index]["color"] == "YC": + self.avswitch.setColorFormat(0) + self.resetSource() + self["resultlist"].updateList(self.rlist) + + def tunemsg(self): + self.tuningtimer.stop() + self.session.openWithCallback(self.tuneback, TuneMessageBox, _("%s ok?" %(self["testlist"].getCurrent()[0])), MessageBox.TYPE_YESNO) + + def setSourceVar(self): + self.input_pad_num=len(self.NimType)-1 + if self.input_pad_num == 0: + self.setTuner = 'A' + elif self.input_pad_num == 1: + self.setTuner = 'B' + elif self.input_pad_num == 2: + self.setTuner = 'C' + +# ikseong - for 22000 tp + def setSource(self): +# fix input source + inputname = ("/proc/stb/tsmux/input%d" % self.input_pad_num) + print " inputname : ",inputname + fd=open(inputname,"w") + fd.write("CI0") + fd.close() +# fix ci_input Tuner + filename = ("/proc/stb/tsmux/ci0_input") + fd = open(filename,'w') + fd.write(self.setTuner) + print "setTuner(CI0) : ",self.setTuner + fd.close() + print "CI loop test!!!!!!!!!!!!!!" + + def resetSource(self): + inputname = ("/proc/stb/tsmux/input%d" % self.input_pad_num) + print " inputname : ",inputname + fd=open(inputname,"w") + fd.write(self.setTuner) + fd.close() + print "CI loop test end!!!!!!!!!!!!!!" session = None