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=9ae55c76055f9a71fdfe5a77bf7cd1400935835f;hb=3bf8b7f18df965ddec6c5376a419536142153e35;hpb=e350855ed4228e2893e4b5f99e61d4091bdc9cdd diff --git a/lib/python/Plugins/SystemPlugins/FactoryTest/plugin.py b/lib/python/Plugins/SystemPlugins/FactoryTest/plugin.py index 9ae55c7..38ac2f5 100755 --- a/lib/python/Plugins/SystemPlugins/FactoryTest/plugin.py +++ b/lib/python/Plugins/SystemPlugins/FactoryTest/plugin.py @@ -16,40 +16,114 @@ 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, source): - GUIComponent.__init__(self) - self.l = eListboxPythonStringContent() - self.list = source +class TestResultList(MenuList): + def postWidgetCreate(self, instance): + self.instance.setSelectionEnable(0) + instance.setContent(self.l) + instance.selectionChanged.get().append(self.selectionChanged) + if self.enableWrapAround: + self.instance.setWrapAround(True) + + def updateList(self, list): + self.list = list self.l.setList(self.list) - GUI_WIDGET = eListbox +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 postWidgetCreate(self, instance): - self.instance.setSelectionEnable(0) - self.instance.setContent(self.l) +class FactoryTestSummary(Screen): + skin = """ + + + """ - def updateList(self,list): - self.l.setList(list) +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"], + self["actions"] = NumberActionMap(["OkCancelActions","WizardActions","NumberActions","ColorActions",], { "left": self.nothing, "right":self.nothing, @@ -67,13 +141,14 @@ class FactoryTest(Screen): "6": self.numberaction, "7": self.numberaction, "8": self.numberaction, - "9": self.numberaction, - "red": self.shutdownaction, + "9": self.numberaction, + "red": self.shutdownaction, + "blue": self.Agingmode2, }, -2) Screen.__init__(self, session) - TESTPROGRAM_DATE = "2010-06-09" - TESTPROGRAM_VERSION = "Version 00.01" + TESTPROGRAM_DATE = self.getImageVersion() +" (v1.20)" + TESTPROGRAM_VERSION = "Version 01.20" self.model = 0 self.getModelInfo() @@ -81,12 +156,13 @@ class FactoryTest(Screen): self["testdate"]=Label((TESTPROGRAM_DATE)) self["testversion"]=Label(("Loading version...")) self["mactext"]=Label(("Loading mac address...")) - nimConfig = nimmanager.getNimConfig(0) - nimConfig.configMode.slot_id=0 - nimConfig.configMode.value= "simple" - nimConfig.diseqcMode.value="diseqc_a_b" - nimConfig.diseqcA.value="160" - nimConfig.diseqcB.value="100" + if self.model == 0 or self.model == 1: + nimConfig = nimmanager.getNimConfig(0) + nimConfig.configMode.slot_id=0 + nimConfig.configMode.value= "simple" + nimConfig.diseqcMode.value="diseqc_a_b" + nimConfig.diseqcA.value="160" + nimConfig.diseqcB.value="100" if self.model == 0: nimConfig = nimmanager.getNimConfig(1) nimConfig.configMode.slot_id=1 @@ -94,13 +170,125 @@ class FactoryTest(Screen): nimConfig.diseqcMode.value="diseqc_a_b" nimConfig.diseqcA.value="130" nimConfig.diseqcB.value="192" - nimmanager.sec.update() + if self.model == 2: + pass + if self.model == 3 or self.model == 4: + self.NimType = {} + 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: + nimfile = None + if nimfile is None: + self.session.openWithCallback(self.close, MessageBox, _("File not Found!\n/proc/bus/nim_sockets"), MessageBox.TYPE_ERROR) + 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]) + self.NimType[current_slot]={} + self.NimType[current_slot]["slot"] = current_slot + elif line.strip().startswith("Type:"): + print str(line.strip()) + self.NimType[current_slot]["type"] = str(line.strip()[6:]) + if self.NimType[current_slot]["type"].startswith("DVB-S"): + self.NimType[current_slot]["sat1"] = sat_list.pop(0) + self.NimType[current_slot]["sat2"] = sat_list.pop(0) + else: + self.NimType[current_slot]["sat1"] = None + self.NimType[current_slot]["sat2"] = None + elif line.strip().startswith("empty"): + self.NimType.pop(current_slot) + nimfile.close() + if True: + for (key, val) in self.NimType.items(): + print key + print val + if val["type"].startswith("DVB-S"): + print "nimConfig (dvb-s): ",key + nimConfig = nimmanager.getNimConfig(key) + nimConfig.configMode.slot_id=key + nimConfig.configMode.value= "simple" + nimConfig.diseqcMode.value="diseqc_a_b" + nimConfig.diseqcA.value = val["sat1"] + nimConfig.diseqcB.value = val["sat2"] + else : + nimConfig = nimmanager.getNimConfig(key) + print "configMode check : ",nimConfig.configMode.value + + nimmanager.sec.update() system("cp /usr/lib/enigma2/python/Plugins/SystemPlugins/FactoryTest/testdb /etc/enigma2/lamedb") db = eDVBDB.getInstance() db.reloadServicelist() + self.createConfig() + + self.rlist = [] + for x in range(self.menulength-1): + self.rlist.append(("..")) + self.rlist.append((" ")) + self["resultlist"] = TestResultList(self.rlist) + + self.avswitch = AVSwitch() + self.scTest= eSctest() + + self.testing = 0 + + self.servicelist = ServiceList() + self.oldref = session.nav.getCurrentlyPlayingServiceReference() + print "oldref",self.oldref + 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.mactry = 1 + self.getmacaddr() + self.getversion() + + self.tunerlock = 0 + self.tuningtimer = eTimer() + self.tuningtimer.callback.append(self.updateStatus) + + self.satatry = 8 + self.satatimer = eTimer() + self.satatimer.callback.append(self.sataCheck) + + self.usbtimer = eTimer() + self.usbtimer.callback.append(self.usbCheck) + + 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 = [] + self.satetestIndex = -1 + self.scarttestIndex = -1 if self.model == 0: self.satetestIndex=0 tlist.append((" 0. Sata & extend hdd test",self.satetestIndex)) @@ -111,33 +299,27 @@ class FactoryTest(Screen): self.smarttestIndex=3 tlist.append((" 3. Smartcard test",self.smarttestIndex)) self.tuner1_1testIndex=4 - tlist.append((" 4. T1 H 22K x 4:3 CVBS",self.tuner1_1testIndex)) + tlist.append((" 4. T1/H/22K x /4:3/CVBS",self.tuner1_1testIndex)) self.tuner1_2testIndex=5 - tlist.append((" 5. T1 V 22k o 16:9 RGB",self.tuner1_2testIndex)) + tlist.append((" 5. T1/V/22k o/16:9/RGB",self.tuner1_2testIndex)) self.tuner2_1testIndex=6 - tlist.append((" 6. T2 H 22k x 4:3 YC",self.tuner2_1testIndex)) + tlist.append((" 6. T2/H/22k x/4:3/YC",self.tuner2_1testIndex)) self.tuner2_2testIndex=7 - tlist.append((" 7. T2 V 22k o 16:9 CVBS CAM",self.tuner2_2testIndex)) + tlist.append((" 7. T2/V/22k o/16:9/CVBS/CAM",self.tuner2_2testIndex)) self.scarttestIndex=8 tlist.append((" 8. VCR Scart loop",self.scarttestIndex)) self.rs232testIndex=9 tlist.append((" 9. RS232 test",self.rs232testIndex)) self.ethernettestIndex=10 tlist.append(("10. Ethernet & mac test",self.ethernettestIndex)) -# tlist.append(("11. DRAM test",11)) -# tlist.append(("12. Flash test",12)) -# tlist.append(("13. DRAM+Flash test",13)) self.fdefaultIndex=11 tlist.append(("11. Factory default",self.fdefaultIndex)) self.shutdownIndex=12 - tlist.append(("12. Shutdown",self.shutdownIndex)) + tlist.append(("12. Shutdown(Deep Standby)",self.shutdownIndex)) + self.tuner_test_first_index = 4 + self.tuner_test_last_index = 7 + elif self.model == 1: -# tlist.append((" 0. Sata & extend hdd test",self.satetestIndex=0)) - self.satetestIndex = -1 - self.scarttestIndex = -1 - - - self.usbtestIndex=0 tlist.append((" 0. USB test",self.usbtestIndex)) self.fronttestIndex=1 @@ -145,190 +327,311 @@ class FactoryTest(Screen): self.smarttestIndex=2 tlist.append((" 2. Smartcard test",self.smarttestIndex)) self.tuner1_1testIndex=3 - tlist.append((" 3. T1 H 22K x 4:3 CVBS",self.tuner1_1testIndex)) - self.tuner1_2testIndex=4 - tlist.append((" 4. T1 V 22k o 16:9 RGB CAM",self.tuner1_2testIndex)) - self.tuner2_2testIndex=4 -# tlist.append((" 6. T2 H 22k x 4:3 YC",self.tuner2_1testIndex=6)) -# tlist.append((" 7. T2 V 22k o 16:9 CVBS CAM",self.tuner2_2testIndex=7)) -# tlist.append((" 8. VCR Scart loop",self.scarttestIndex=8)) + tlist.append((" 3. T1/H/22K x/4:3/CVBS",self.tuner1_1testIndex)) + self.tuner2_2testIndex = self.tuner1_2testIndex=4 + tlist.append((" 4. T1/V/22k o/16:9/RGB/CAM",self.tuner1_2testIndex)) self.rs232testIndex=5 tlist.append((" 5. RS232 test",self.rs232testIndex)) self.ethernettestIndex=6 tlist.append((" 6. Ethernet & mac test",self.ethernettestIndex)) -# tlist.append(("11. DRAM test",11)) -# tlist.append(("12. Flash test",12)) -# tlist.append(("13. DRAM+Flash test",13)) self.fdefaultIndex=7 tlist.append((" 7. Factory default",self.fdefaultIndex)) self.shutdownIndex=8 - tlist.append((" 8. Shutdown",self.shutdownIndex)) - self.menulength= len(tlist)-1 - self["testlist"] = MenuList(tlist) - self.rlist = [] -# for x in range(15): -# for x in range(12): - for x in range(self.menulength): - self.rlist.append(("..")) - self["resultlist"] = TestResultList(self.rlist) - self.NetworkState = 0 - self.first = 0 + tlist.append((" 8. Shutdown(Deep Standby)",self.shutdownIndex)) + self.tuner_test_first_index = 3 + self.tuner_test_last_index = 4 - self.avswitch = AVSwitch() - self.memTest = eMemtest() - self.scTest= eSctest() - - self.feid=0 - self.agingmode=0 - self.testing = 0 - - self.servicelist = ServiceList() - self.oldref = session.nav.getCurrentlyPlayingServiceReference() - print "oldref",self.oldref - 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.getmacaddr() - self.getversion() - - self.tunerlock = 0 - self.tuningtimer = eTimer() - self.tuningtimer.callback.append(self.updateStatus) - - self.satatry = 8 - self.satatimer = eTimer() - self.satatimer.callback.append(self.sataCheck) + elif self.model == 2: + self.satetestIndex=0 + tlist.append((" 0. Sata & extend hdd test",self.satetestIndex)) + self.usbtestIndex=1 + tlist.append((" 1. USB test",self.usbtestIndex)) + self.fronttestIndex=2 + tlist.append((" 2. Front test",self.fronttestIndex)) + self.smarttestIndex=3 + tlist.append((" 3. Smartcard test",self.smarttestIndex)) + self.tuner1_1testIndex=4 + tlist.append((" 4. T1 H 22K x 4:3 CVBS",self.tuner1_1testIndex)) + self.tuner1_2testIndex=5 + tlist.append((" 5. T1 V 22k o 16:9 RGB",self.tuner1_2testIndex)) + self.tuner2_1testIndex = -1 + self.tuner2_2testIndex=6 + tlist.append((" 6. T2 DVB-C 4:3 YC CAM",self.tuner2_2testIndex)) + self.rs232testIndex=7 + tlist.append((" 7. RS232 test",self.rs232testIndex)) + self.ethernettestIndex=8 + tlist.append(("8. Ethernet & mac test",self.ethernettestIndex)) + self.fdefaultIndex=9 + tlist.append(("9. Factory default",self.fdefaultIndex)) + self.shutdownIndex=10 + tlist.append(("10. Shutdown",self.shutdownIndex)) + self.tuner_test_first_index = 4 + self.tuner_test_last_index = 6 + + elif self.model == 3 or self.model == 4: + self.satetestIndex=0 + tlist.append((" 0. Sata & extend hdd test",self.satetestIndex)) + self.usbtestIndex=1 + tlist.append((" 1. USB test",self.usbtestIndex)) + self.fronttestIndex=2 + tlist.append((" 2. Front test",self.fronttestIndex)) + self.smarttestIndex=3 + tlist.append((" 3. Smartcard test",self.smarttestIndex)) + 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 + getRatio = AspectRatio.pop(0) # ratio + AspectRatio.append(getRatio) + getColorFormat=ColorFormat.pop(0) # colorFormat + menuname=" %d. T%d/%s/H/22k x/%s/%s" % (current_index, key+1, val["type"], getRatio, getColorFormat) #menuname + print current_index +# 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 + tunelist.append((menuname,current_index)) + current_index+=1 +# Chang : DVB -S setting diseqc B + getRatio = AspectRatio.pop(0) + AspectRatio.append(getRatio) + getColorFormat=ColorFormat.pop(0) + menuname=" %d. T%d/%s/V/22k o/%s/%s" % (current_index, key+1, val["type"], getRatio, getColorFormat) + if len(self.NimType) == key+1: # CAM test on/off + menuname+="/CAM" + camtest = True + 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) + 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"): + additionalMenu = None + menulen = 1 + if len(self.NimType) == 1: + additionalMenu = True + menulen +=1 + for x in range(menulen): + getRatio = AspectRatio.pop(0) + AspectRatio.append(getRatio) + getColorFormat=ColorFormat.pop(0) + menuname=" %d. T%d/%s/%s/%s" % (current_index, key+1, val["type"], getRatio, getColorFormat) + if len(self.NimType) == key+1 and (additionalMenu is None or x != 0): # CAM test on/off + menuname+=" CAM" + camtest = True + 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) + tunelist.append((menuname,current_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 + self.ethernettestIndex=current_index + tlist.append((" %d. Ethernet & mac test" % current_index,self.ethernettestIndex)) + current_index+=1 + self.fdefaultIndex=current_index + tlist.append((" %d. Factory default" % current_index,self.fdefaultIndex)) + current_index+=1 + self.shutdownIndex=current_index + tlist.append((" %d. Shutdown(Deep Standby)" % current_index,self.shutdownIndex)) + + self.menulength= len(tlist) + self["testlist"] = MenuList(tlist) + + def setTuneInfo(self,index=0,slot=0,type="DVB-S2",sat="160",pol="H",tone=True,ratio="4:3",color="CVBS",cam=False): + self.tuneInfo[index]={} + self.tuneInfo[index]["slot"]=slot + self.tuneInfo[index]["type"]=type + self.tuneInfo[index]["sat"]=sat + self.tuneInfo[index]["pol"]=pol + self.tuneInfo[index]["22k"]=tone + self.tuneInfo[index]["ratio"]=ratio + self.tuneInfo[index]["color"]=color + self.tuneInfo[index]["cam"]=cam def getModelInfo(self): - info = open("/proc/stb/info/version").read() - print info,info[:2] - if info[:2] == "14": - self.model = 1 - elif info[:2] == "12": - self.model= 0 - + getmodel = 0 + if fileExists("/proc/stb/info/vumodel"): + vumodel = open("/proc/stb/info/vumodel") + info=vumodel.read().strip() + vumodel.close() + if info == "duo": + self.model = 0 + getmodel = 1 + print "getModelInfo : duo" + if info == "solo": + self.model = 1 + getmodel = 1 + print "getModelInfo : solo" + if info == "combo": + self.model = 2 + getmodel = 1 + print "getModelInfo : combo" + if info == "uno": + self.model = 3 + getmodel = 1 + print "getModelInfo : uno" + if info == "ultimo": + self.model = 4 + getmodel = 1 + print "getModelInfo : ultimo" + + if getmodel == 0 and fileExists("/proc/stb/info/version"): + vesion = open("/proc/stb/info/version") + info=version.read() + version.close() + if info[:2] == "14": + self.model = 1 + print "getModelInfo : solo_" + elif info[:2] == "12": + self.model = 0 + print "getModelInfo : duo_" def nothing(self): print "nothing" def keyup(self): + print "self.menulength = ",self.menulength + print "self[\"testlist\"].getCurrent()[1] = ",self["testlist"].getCurrent()[1] if self.testing==1: return if self["testlist"].getCurrent()[1]==0: - self["testlist"].moveToIndex(self.menulength) + 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.testing==1: return - if self["testlist"].getCurrent()[1]==(self.menulength): + 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 self.testing==1: return + if number >= self.menulength: + return index = int(number) self["testlist"].moveToIndex(index) - - - def updateStatus(self): - index = self["testlist"].getCurrent()[1] - if index ==self.tuner1_1testIndex or index==self.tuner1_2testIndex: - tunno = 1 - result = eSctest.getInstance().getFrontendstatus(0) - else: - tunno = 2 - result = eSctest.getInstance().getFrontendstatus(1) - - if self.agingmode == 1: - tunno = 1 - result = eSctest.getInstance().getFrontendstatus(0) - hv = "Ver" - - if index == self.tuner1_2testIndex or index==self.tuner2_2testIndex: - hv = "Ver" - else: - hv = "Hor" - - print "eSctest.getInstance().getFrontendstatus - %d"%result - if result == 0: - self.tunerlock = 0 - self.tunemsgtimer.stop() - self.session.nav.stopService() - self.session.open( MessageBox, _("Tune%d %s Locking Fail..."%(tunno,hv)), MessageBox.TYPE_ERROR) - if self.agingmode==0: - self.rlist[self["testlist"].getCurrent()[1]]="fail" - self.agingmode = 0 - else : - self.tunerlock = 1 - if self.agingmode==1: - self.session.openWithCallback(self.checkaging,AgingTest) + 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")) - def readmac(self, result, retval,extra_args=None): - (statecallback) = extra_args - if self.macConsole is not None: - if retval == 0: - self.macConsole = None - content =result.split() - self["mactext"].setText(("MAC : "+content[10])) - def getmacaddr(self): try: - cmd = "ip -o addr" + if self.model == 2 or self.model == 3 or self.model == 4: + cmd = "nanddump -s 0x" + str((self.mactry-1)*2) + "0000 -b -o -l 64 -p /dev/mtd5" + elif self.model == 0 or self.model == 1: + cmd = "nanddump -s 0x" + str((self.mactry-1)*2) + "0000 -b -o -l 64 -p /dev/mtd4" self.macConsole = Console() - self.macConsole.ePopen(cmd, self.readmac) -# self["stattext"].setText((macaddr)) + self.macConsole.ePopen(cmd, self.readmac,self.checkReadmac) except: return + + def readmac(self, result, retval,extra_args=None): + (callback) = extra_args + if self.macConsole is not None: + if retval == 0: + self.macConsole = None + macline = None + content =result.splitlines() + for x in content: + if x.startswith('0x000'+str((self.mactry-1)*2)+'0010:'): + macline = x.split() + if macline == None: + callback(0) + elif len(macline) < 10: + callback(1) + else: + mac = macline[5]+":"+macline[6]+":"+macline[7]+":"+macline[8]+":"+macline[9]+":"+macline[10] + self["mactext"].setText(("MAC : "+mac)) + callback(2) + + def checkReadmac(self,data): + if data == 0: + print "block %d is bad block" % self.mactry + self.mactry = self.mactry + 1 + if self.mactry > 4: + self.session.open(MessageBox, _("FLASH IS BROKEN"), type = MessageBox.TYPE_INFO, enable_input = False) + return + else: + self.getmacaddr() + elif data == 1: + print 'mac dump read error' + return + elif data == 2: + print 'mac address read ok' + return def TestAction(self): -# -# tlist.append((" 0. Sata & extend hdd test",self.satetestIndex=0)) -# tlist.append((" 1. USB test",self.usbtestIndex=1)) -# tlist.append((" 2. Front test",self.fronttestIndex=2)) -# tlist.append((" 3. Smartcard test",self.smarttestIndex=3)) -# tlist.append((" 4. T1 H 22K x 4:3 CVBS",self.tuner1_1testIndex=4)) -# tlist.append((" 5. T1 V 22k o 16:9 RGB",self.tuner1_2testIndex=5)) -# tlist.append((" 6. T2 H 22k x 4:3 YC",self.tuner2_1testIndex=6)) -# tlist.append((" 7. T2 V 22k o 16:9 CVBS CAM",self.tuner2_2testIndex=7)) -# tlist.append((" 8. VCR Scart loop",self.scarttestIndex=8)) -# tlist.append((" 9. RS232 test",self.rs232testIndex=9)) -# tlist.append(("10. Ethernet & mac test",self.ethernettestIndex=10)) -# tlist.append(("11. DRAM test",11)) -# tlist.append(("12. Flash test",12)) -# tlist.append(("13. DRAM+Flash test",13)) -# tlist.append(("11. Factory default",self.fdefaultIndex=11)) -# tlist.append(("12. Shutdown",self.shutdownIndex=12)) -# if self.testing==1: return print "line - ",self["testlist"].getCurrent()[1] - index = self["testlist"].getCurrent()[1] + self.currentindex = index = self["testlist"].getCurrent()[1] result = 0 if index==self.satetestIndex: self.Test0() elif index==self.fronttestIndex: self.Test1() - elif index>=self.tuner1_1testIndex and index<=self.tuner2_2testIndex: - self.TestTune(index) + elif index>=self.tuner_test_first_index and index<=self.tuner_test_last_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: @@ -349,6 +652,8 @@ class FactoryTest(Screen): self.Test14() # elif index==self.shutdownIndex: # self.Test15() + else: + pass def shutdownaction(self): if self["testlist"].getCurrent()[1] == self.shutdownIndex: @@ -368,89 +673,72 @@ class FactoryTest(Screen): self["resultlist"].updateList(self.rlist) self.satatry -= 1 displayerror = 0 - result = 0 - checktab=0 - try: - mtab = open('/etc/mtab','r') - while(1): - disk = mtab.readline().split(' ') - if len(disk) < 2: - break - if disk[1].startswith('/media/hdd'): - checktab+=1 - elif disk[1].startswith('/media/sdb1'): - checktab+=10 - if checktab==11: - break - except: - checktab = 0 - - if checktab==0: - if displayerror==1: - self.session.open( MessageBox, _("Sata & extend hdd test error"), MessageBox.TYPE_ERROR) - self.rlist[self["testlist"].getCurrent()[1]]="fail" - else: - self.satatimer.start(1100,True) - return - elif checktab < 11: - if displayerror==1: - self.session.open( MessageBox, _("one hdd test error"), MessageBox.TYPE_ERROR) - self.rlist[self["testlist"].getCurrent()[1]]="fail" - else: - self.satatimer.start(1100,True) - return - + result =0 try: - if fileExists("/media/sdb1"): - if access("/media/sdb1",F_OK|R_OK|W_OK): - dummy=open("/media/sdb1/dummy03","w") + if fileExists("/autofs/sdb1"): + if access("/autofs/sdb1",F_OK|R_OK|W_OK): + dummy=open("/autofs/sdb1/dummy03","w") dummy.write("complete") dummy.close() - dummy=open("/media/sdb1/dummy03","r") + dummy=open("/autofs/sdb1/dummy03","r") if dummy.readline()=="complete": - print "complete" + print "/autofs/sdb1 - complete" else: + print "/autofs/sdb1 - readline error" result = 1 + displayerror = 1 dummy.close() - system("rm /media/sdb1/dummy03") + system("rm /autofs/sdb1/dummy03") else: + print "/autofs/sdb1 - rw access error" result = 1 + displayerror = 1 else: + print "/autofs/sdb1 - file not exist" result = 1 except: + print "/autofs/sdb1 - exceptional error" 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 "complete" + print "/autofs/sda1 - complete" else: + print "/autofs/sda1 - readline error" result += 1 + displayerror = 1 dummy.close() - system("rm /media/hdd/dummy03") + system("rm /autofs/sda1/dummy03") else: - result = 1 + print "/autofs/sda1 - rw access error" + result += 1 + displayerror = 1 else: + print "/autofs/sda1 - file not exist" result += 1 except: + print "/autofs/sda1 - exceptional error" result += 1 - - if result ==0: - self.session.open( MessageBox, _("Sata & extend hdd test pass"), MessageBox.TYPE_INFO) + displayerror = 1 + + if result == 0: + self.session.open( MessageBox, _("Sata & extend hdd test pass\nPress 'OK' button!"), MessageBox.TYPE_INFO) self.rlist[self["testlist"].getCurrent()[1]]="pass" elif result == 1: if displayerror==1: - self.session.open( MessageBox, _("one hdd test error"), MessageBox.TYPE_ERROR) + self.session.open( MessageBox, _("One hdd test error\nPress 'EXIT' button!"), MessageBox.TYPE_ERROR) self.rlist[self["testlist"].getCurrent()[1]]="fail" else: self.satatimer.start(1100,True) else: if displayerror==1: - self.session.open( MessageBox, _("Sata & extend hdd test error"), MessageBox.TYPE_ERROR) + self.session.open( MessageBox, _("Sata & extend hdd test error\nPress 'EXIT' button!"), MessageBox.TYPE_ERROR) self.rlist[self["testlist"].getCurrent()[1]]="fail" else: self.satatimer.start(1100,True) @@ -459,7 +747,11 @@ class FactoryTest(Screen): if self.model== 0: self.session.openWithCallback(self.displayresult ,FrontTest) elif self.model == 1: - self.session.openWithCallback(self.displayresult ,FrontTest_solo) + self.session.openWithCallback(self.displayresult ,FrontTest_solo) + 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 @@ -468,10 +760,15 @@ class FactoryTest(Screen): else: self.rlist[self["testlist"].getCurrent()[1]]="fail" - INTERNAL_PID_STATUS_NOOP = 0 - INTERNAL_PID_STATUS_WAITING = 1 - INTERNAL_PID_STATUS_SUCCESSFUL = 2 - INTERNAL_PID_STATUS_FAILED = 3 + 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: @@ -481,69 +778,115 @@ class FactoryTest(Screen): if not servicelist is None: ref = servicelist.getNext() else: - ref = self.getCurrentSelection() + ref = self.getCurrentSelection() # raise error print "servicelist none" else: ref = self.oldref self.session.nav.stopService() # try to disable foreground service - if index==self.tuner1_1testIndex: - ref.setData(0,1) - ref.setData(1,0x6D3) - ref.setData(2,0x3) - ref.setData(3,0xA4) - ref.setData(4,0xA00000) - self.session.nav.playService(ref) - self.avswitch.setColorFormat(0) - self.avswitch.setAspectRatio(0) - elif index==self.tuner1_2testIndex: - if self.model == 1: + if self.model == 0 or self.model == 1: + if index==self.tuner1_1testIndex: + ref.setData(0,1) + ref.setData(1,0x6D3) + ref.setData(2,0x3) + ref.setData(3,0xA4) + ref.setData(4,0xA00000) + self.session.nav.playService(ref) + self.avswitch.setColorFormat(0) + self.avswitch.setAspectRatio(0) + elif index==self.tuner1_2testIndex: + if self.model == 1: + self.camstep = 1 + self.camtimer.start(100,True) + ref.setData(0,0x19) + ref.setData(1,0x1325) + ref.setData(2,0x3ef) + ref.setData(3,0x1) + ref.setData(4,0x64af79) + self.session.nav.playService(ref) + self.avswitch.setColorFormat(1) + self.avswitch.setAspectRatio(6) + elif index==self.tuner2_1testIndex: + ref.setData(0,1) + ref.setData(1,0x6D3) + ref.setData(2,0x3) + ref.setData(3,0xA4) + ref.setData(4,0x820000) + self.session.nav.playService(ref) + self.avswitch.setColorFormat(2) + self.avswitch.setAspectRatio(0) + elif index==self.tuner2_2testIndex: self.camstep = 1 self.camtimer.start(100,True) - ref.setData(0,0x19) - ref.setData(1,0x1325) - ref.setData(2,0x3ef) - ref.setData(3,0x1) - ref.setData(4,0x64af79) -# ref.setData(0,0x19) -# ref.setData(1,0x83) -# ref.setData(2,0x6) -# ref.setData(3,0x85) -# ref.setData(4,0x640000) - self.session.nav.playService(ref) - self.avswitch.setColorFormat(1) - self.avswitch.setAspectRatio(6) - elif index==self.tuner2_1testIndex: -# self.camstep = 1 -# self.camtimer.start(100,True) - ref.setData(0,1) - ref.setData(1,0x6D3) - ref.setData(2,0x3) - ref.setData(3,0xA4) - ref.setData(4,0x820000) - self.session.nav.playService(ref) - self.avswitch.setColorFormat(2) - self.avswitch.setAspectRatio(0) - elif index==self.tuner2_2testIndex: - self.camstep = 1 - self.camtimer.start(100,True) -# ref.setData(0,0x19) -# ref.setData(1,0x83) -# ref.setData(2,0x6) -# ref.setData(3,0x85) -# ref.setData(4,0xC00000) -# ikseong - for 22000 tp ( /home/ikseong/share/lamedb_ORF) - ref.setData(0,0x19) - ref.setData(1,0x1325) - ref.setData(2,0x3ef) - ref.setData(3,0x1) - ref.setData(4,0xC00000) + ref.setData(0,0x19) + ref.setData(1,0x1325) + ref.setData(2,0x3ef) + ref.setData(3,0x1) + ref.setData(4,0xC00000) + self.session.nav.playService(ref) + self.avswitch.setColorFormat(0) + self.avswitch.setAspectRatio(6) + self.tuningtimer.start(2000,True) + self.tunemsgtimer.start(3000, True) + elif self.model == 3 or self.model == 4: + 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) + elif getTuneInfo["sat"] == "642": # Intelsat 906 + 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) + 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) - self.avswitch.setColorFormat(0) - self.avswitch.setAspectRatio(6) - self.tuningtimer.start(2000,True) - self.tunemsgtimer.start(3000, True) - + 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) @@ -554,10 +897,8 @@ class FactoryTest(Screen): else: self.session.nav.stopService() self.session.open( MessageBox, _("CAM1_NOT_INSERTED\nPress exit!"), MessageBox.TYPE_ERROR) - self.rlist[self["testlist"].getCurrent()[1]]="fail" + self.rlist[current_index]="fail" self.tunemsgtimer.stop() -# self.rlist[index]="fail" -# self["resultlist"].updateList(self.rlist) elif self.camstep == 2: slot = 0 appname = eDVBCI_UI.getInstance().getAppName(slot) @@ -565,7 +906,7 @@ class FactoryTest(Screen): if appname is None: self.session.nav.stopService() self.session.open( MessageBox, _("NO_GET_APPNAME\nPress exit!"), MessageBox.TYPE_ERROR) - self.rlist[self["testlist"].getCurrent()[1]]="fail" + self.rlist[current_index]="fail" self.tunemsgtimer.stop() else: self.camstep=3 @@ -580,10 +921,8 @@ class FactoryTest(Screen): else: self.session.nav.stopService() self.session.open( MessageBox, _("CAM2_NOT_INSERTED\nPress exit!"), MessageBox.TYPE_ERROR) - self.rlist[self["testlist"].getCurrent()[1]]="fail" + self.rlist[current_index]="fail" self.tunemsgtimer.stop() -# self.rlist[index]="fail" -# self["resultlist"].updateList(self.rlist) elif self.camstep == 4: slot = 1 appname = eDVBCI_UI.getInstance().getAppName(slot) @@ -591,54 +930,109 @@ class FactoryTest(Screen): if appname is None: self.session.nav.stopService() self.session.open( MessageBox, _("NO_GET_APPNAME\nPress exit!"), MessageBox.TYPE_ERROR) - self.rlist[self["testlist"].getCurrent()[1]]="fail" + self.rlist[current_index]="fail" self.tunemsgtimer.stop() else: self.setSource() self.camstep = 5 -# self.session.open( MessageBox, _("CAM OK!"), MessageBox.TYPE_INFO,2) + + def updateStatus(self): + current_index = self.currentindex + if self.model == 0 or self.model == 1: + if current_index ==self.tuner1_1testIndex or current_index==self.tuner1_2testIndex: + tunno = 1 + result = eSctest.getInstance().getFrontendstatus(0) + else: + tunno = 2 + result = eSctest.getInstance().getFrontendstatus(1) + if current_index == self.tuner1_2testIndex or current_index==self.tuner2_2testIndex: + hv = "Ver" + else: + hv = "Hor" + + elif self.model == 3 or self.model == 4: + 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: + if current_index == self.tuner_test_last_index 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.model == 0 and current_index == 6: # YC + self.avswitch.setColorFormat(0) + elif ( self.model == 3 or self.model == 4 ) and 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): + if self.model == 0: + self.input_pad_num=1 + self.setTuner = 'B' + elif self.model == 1: + self.input_pad_num=0 + self.setTuner = 'A' + else: + 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('B') -# fd.write('A') - fd.close() -# filename = ("/proc/stb/tsmux/ci1_input") -# fd = open(filename,'w') -# fd.write('CI0') -# fd.close() - fd=open("/proc/stb/tsmux/input1","w") -# fd=open("/proc/stb/tsmux/input0","w") - fd.write("CI0") + fd.write(self.setTuner) + print "setTuner(CI0) : ",self.setTuner fd.close() print "CI loop test!!!!!!!!!!!!!!" def resetSource(self): - fd=open("/proc/stb/tsmux/input1","w") - fd.write("B") + 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!!!!!!!!!!!!!!" - - def tunemsg(self): - self.tuningtimer.stop() - self.session.openWithCallback(self.tuneback, MessageBox, _("%s ok?" %(self["testlist"].getCurrent()[0])), MessageBox.TYPE_YESNO) - - def tuneback(self,yesno): - self.session.nav.stopService() # try to disable foreground service - if yesno: - self.rlist[self["testlist"].getCurrent()[1]]="pass" - if self.tunerlock == 0: - self.rlist[self["testlist"].getCurrent()[1]]="fail" - elif self["testlist"].getCurrent()[1] == 7 and self.camstep < 5: - self.rlist[self["testlist"].getCurrent()[1]]="fail" - else: - self.rlist[self["testlist"].getCurrent()[1]]="fail" - if self["testlist"].getCurrent()[1] == 6: - self.avswitch.setColorFormat(0) - self.resetSource() - self["resultlist"].updateList(self.rlist) def Test6(self): self.avswitch.setInput("SCART") @@ -663,109 +1057,87 @@ 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 - ref.setData(0,0x19) - ref.setData(1,0x1325) - ref.setData(2,0x3ef) - ref.setData(3,0x1) - ref.setData(4,0x64af79) -# ref.setData(0,1) -# ref.setData(1,0x6D3) -# ref.setData(2,0x3) -# ref.setData(3,0xA4) -# ref.setData(4,0xA00000) - self.session.nav.playService(ref) - self.avswitch.setColorFormat(0) - self.avswitch.setAspectRatio(0) - self.tuningtimer.start(2000,True) - self.agingmode = 1 + self.session.openWithCallback(self.AgingmodeCallback,AgingTest, self.model) - def checkaging(self): - global Agingresult - if(Agingresult ==1): + def AgingmodeCallback(self,ret): + if ret == 1: self["testlist"].moveToIndex(self.fdefaultIndex) self.Test14() - self["testlist"].moveToIndex(self.shotdownIndex) - self.agingmode = 0 -# self["testlist"].instance.moveSelection(self["testlist"].instance.moveDown) - - + 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): - if self.model==0: - try: - result = 0 - mtab = open('/etc/mtab','r') - while(1): - disk = mtab.readline().split(' ') - if len(disk) < 2: - break - if disk[1].startswith('/media/hdd'): - continue - elif disk[1].startswith('/media/sdb1'): - continue - elif disk[1].startswith('/media/sd'): - result=result +1 - - if result < 0 : - result = 0 - if result == 3: - self.session.open( MessageBox, _("USB test pass %d devices\nPress OK!"%result), MessageBox.TYPE_INFO) - self.rlist[self["testlist"].getCurrent()[1]]="pass" - else: - self.session.open( MessageBox, _("USB test error : Success-%d"%result+" Fail-%d\nPress EXIT!"%(3-result)), MessageBox.TYPE_ERROR) - self.rlist[self["testlist"].getCurrent()[1]]="fail" - except: - if result < 0 : - result = 0 - if result == 3: - self.session.open( MessageBox, _("USB test pass %d devices\nPress OK!"%result), MessageBox.TYPE_INFO) - self.rlist[self["testlist"].getCurrent()[1]]="pass" - else: - self.session.open( MessageBox, _("USB test error : Success-%d"%result+" Fail-%d\nPress EXIT!"%(3-result)), MessageBox.TYPE_ERROR) - self.rlist[self["testlist"].getCurrent()[1]]="fail" + self.usbtry = 9 + self.usbtimer.start(100,True) + + def usbCheck(self): + if self.usbtry == 0: + displayerror = 1 + else: + self.rlist[self["testlist"].getCurrent()[1]]="try %d"%self.usbtry + self["resultlist"].updateList(self.rlist) + self.usbtry -= 1 + displayerror = 0 + + if self.model==0 or self.model==3 or self.model==4: + devices = [ "/autofs/sdc1", "/autofs/sdd1", "/autofs/sde1" ] elif self.model==1: + devices = [ "/autofs/sda1", "/autofs/sdb1" ] + elif self.model==2: + devices = [ "/autofs/sdc1", "/autofs/sdd1" ] + else : + self.session.open( MessageBox, _("invalid model"), MessageBox.TYPE_ERROR) + self.rlist[self["testlist"].getCurrent()[1]]="fail" + return + + result=len(devices) + + for dev in devices: try: - result = 0 - mtab = open('/etc/mtab','r') - while(1): - disk = mtab.readline().split(' ') - if len(disk) < 2: - break - if disk[1].startswith('/media/'): - result=result +1 - - if result < 0 : - result = 0 - if result == 2: - self.session.open( MessageBox, _("USB test pass %d devices\nPress OK!"%result), MessageBox.TYPE_INFO) - self.rlist[self["testlist"].getCurrent()[1]]="pass" + if fileExists(dev): + if access(dev,F_OK|R_OK|W_OK): + dummy=open(dev+"/dummy03","w") + dummy.write("complete") + dummy.close() + dummy=open(dev+"/dummy03","r") + if dummy.readline()=="complete": + print dev," - complete" + else: + print dev," - readline error" + result=result -1 + displayerror = 1 + dummy.close() + system("rm "+dev+"/dummy03") + else: + print dev," - rw access error" + result=result -1 + displayerror = 1 else: - self.session.open( MessageBox, _("USB test error : Success-%d"%result+" Fail-%d\nPress EXIT!"%(2-result)), MessageBox.TYPE_ERROR) - self.rlist[self["testlist"].getCurrent()[1]]="fail" + print dev," - file not exist" + result=result-1 except: - if result < 0 : - result = 0 - if result == 2: - self.session.open( MessageBox, _("USB test pass %d devices\nPress OK!"%result), MessageBox.TYPE_INFO) - self.rlist[self["testlist"].getCurrent()[1]]="pass" - else: - self.session.open( MessageBox, _("USB test error : Success-%d"%result+" Fail-%d\nPress EXIT!"%(2-result)), MessageBox.TYPE_ERROR) - self.rlist[self["testlist"].getCurrent()[1]]="fail" - + print dev," - exceptional error" + result=result -1 + displayerror = 1 + + if result < 0 : + result = 0 + elif result == len(devices): + self.session.open( MessageBox, _("USB test pass %d devices\nPress 'OK' button!"%result), MessageBox.TYPE_INFO) + self.rlist[self["testlist"].getCurrent()[1]]="pass" + else: + if displayerror == 1: + self.session.open( MessageBox, _("USB test error : Success-%d"%result+" Fail-%d\nPress 'EXIT' button!"%(len(devices)-result)), MessageBox.TYPE_ERROR) + self.rlist[self["testlist"].getCurrent()[1]]="fail" + else: + self.usbtimer.start(1100,True) def pingtest(self): self.testing = 1 @@ -798,7 +1170,6 @@ class FactoryTest(Screen): if data == 1: ethtest = 1 print "success" -# self.session.open( MessageBox, _("Ping test pass"), MessageBox.TYPE_INFO,2) self.session.openWithCallback(self.openMacConfig ,MessageBox, _("Ping test pass"), MessageBox.TYPE_INFO,2) else: @@ -811,41 +1182,39 @@ class FactoryTest(Screen): self.pingtest() def openMacConfig(self, ret=False): - self.session.openWithCallback(self.macresult ,MacConfig) + self.session.openWithCallback(self.macresult ,MacConfig,mactry=self.mactry) def macresult(self): global ethtest if ethtest == 1: self.rlist[self.ethernettestIndex]="pass" -# self.rlist[self["testlist"].getCurrent()[1]]="pass" else: self.rlist[self.ethernettestIndex]="fail" -# self.rlist[self["testlist"].getCurrent()[1]]="fail" 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 @@ -855,25 +1224,27 @@ class FactoryTest(Screen): self.rlist[self["testlist"].getCurrent()[1]]="fail" def Test10(self): - self.session.openWithCallback(self.scciresult ,SmartCardTest) + 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: + print "test14" system("rm -R /etc/enigma2") + system("ls /") system("cp -R /usr/share/enigma2/defaults /etc/enigma2") self.rlist[self["testlist"].getCurrent()[1]]="pass" self["resultlist"].updateList(self.rlist) except: + print "test14 except" self.rlist[self["testlist"].getCurrent()[1]]="fail" self["resultlist"].updateList(self.rlist) self.session.open( MessageBox, _("Factory reset fail"), MessageBox.TYPE_ERROR) @@ -894,19 +1265,21 @@ class FactoryTest(Screen): return print "exit" self.close() +# if self.oldref is not None: +# self.session.nav.playService(self.oldref) ethtest = 0 class MacConfig(Screen): skin = """ - + - + - + """ - def __init__(self, session): + def __init__(self, session, mactry = 1): self["actions"] = ActionMap(["DirectionActions","OkCancelActions"], { "ok": self.keyOk, @@ -916,75 +1289,147 @@ class MacConfig(Screen): }, -2) Screen.__init__(self, session) - - self.result = 0 + + self.mactry = mactry + self.model = 0 + self.getModelInfo() self.macfd = 0 self.macaddr = "000000000000" - self.NetworkState = 0 + self.ReadMacinfo = 0 self["text"]=Label((self.macaddr)) self["text1"]= Label(("< >")) self["stattext"]= Label(("")) self.displaymac() self.loadmacaddr() self.getmacaddr() - self.pingok=1 -# self.pingtest() global ethtest ethtest = 1 + def getModelInfo(self): + getmodel = 0 + if fileExists("/proc/stb/info/vumodel"): + vumodel = open("/proc/stb/info/vumodel") + info=vumodel.read().strip() + vumodel.close() + if info == "combo": + self.model = 2 + getmodel = 1 + print "MacConfig, model : combo" + elif info == "solo": + self.model = 1 + getmodel = 1 + print "MacConfig, model : solo" + elif info == "duo": + self.model = 0 + getmodel = 1 + print "MacConfig, model : duo" + elif info == "uno": + self.model = 3 + getmodel = 1 + print "getModelInfo : uno" + elif info == "ultimo": + self.model = 4 + getmodel = 1 + print "getModelInfo : ultimo" + + if getmodel == 0 and fileExists("/proc/stb/info/version"): + version = open("/proc/stb/info/version") + info=version.read() + version.close() +# print info,info[:2] + if info[:2] == "14": + self.model = 1 + print "MacConfig, model : solo_" + elif info[:2] == "12": + self.model = 0 + print "MacConfig, model: duo_" + def loadmacaddr(self): try: - result = 0 self.macfd = 0 - mtab = open('/etc/mtab','r') - while(1): - disk = mtab.readline().split(' ') - if len(disk) < 2: + + if self.model==0 or self.model==3 or self.model==4 : + devices = ["/autofs/sdb1", "/autofs/sdc1", "/autofs/sdd1", "/autofs/sde1" ] + elif self.model==1: + devices = [ "/autofs/sda1", "/autofs/sdb1" ] + elif self.model==2: + devices = [ "/autofs/sdb1", "/autofs/sdc1", "/autofs/sdd1" ] + + for dev in devices: + print 'try..',dev + if fileExists(dev+"/macinfo.txt"): + print ""+dev+"/macinfo.txt" + self.macfd = open(dev+"/macinfo.txt","r+") break - if disk[1].startswith('/media/sd') or disk[1].startswith('/media/hdd'): - print 'try..',disk[1] - if fileExists(disk[1]+"/macinfo.txt"): - self.macfd = open(disk[1]+"/macinfo.txt","r+") - break + if self.macfd == 0: self["text"].setText(("cannot read usb!!")) self["text1"].setText((" ")) self["stattext"].setText((" Press Exit Key.")) - self.NetworkState=0 + self.ReadMacinfo=0 return macaddr=self.macfd.readline().split(":") self.macaddr=macaddr[1]+macaddr[2]+macaddr[3]+macaddr[4]+macaddr[5]+macaddr[6] self.displaymac() - self.NetworkState = 1 + self.ReadMacinfo = 1 except: self["text"].setText(("cannot read usb!!")) self["text1"].setText((" ")) self["stattext"].setText((" Press Exit Key.")) - self.NetworkState=0 -# self.session.open( MessageBox, _("Mac address fail"), MessageBox.TYPE_ERROR) - - def readmac(self, result, retval,extra_args=None): - (statecallback) = extra_args - if self.macConsole is not None: - if retval == 0: - self.macConsole = None - content =result.split() - self["stattext"].setText(("now : "+content[10])) + self.ReadMacinfo=0 def getmacaddr(self): - if self.NetworkState==0: + if self.ReadMacinfo==0: return try: - cmd = "ip -o addr" + if self.model == 2 or self.model == 3 or self.model == 4: + cmd = "nanddump -s 0x" + str((self.mactry-1)*2) + "0000 -b -o -l 64 -p /dev/mtd5" + elif self.model == 0 or self.model == 1: + cmd = "nanddump -s 0x" + str((self.mactry-1)*2) + "0000 -b -o -l 64 -p /dev/mtd4" self.macConsole = Console() - self.macConsole.ePopen(cmd, self.readmac) -# self["stattext"].setText((macaddr)) + self.macConsole.ePopen(cmd, self.readmac,self.checkReadmac) except: return + + def readmac(self, result, retval,extra_args=None): + (callback) = extra_args + if self.macConsole is not None: + if retval == 0: + self.macConsole = None + macline = None + content =result.splitlines() + for x in content: + if x.startswith('0x000'+str((self.mactry-1)*2)+'0010:'): + macline = x.split() + if macline == None: + callback(0) + elif len(macline) < 10: + callback(1) + else: + mac = macline[5]+":"+macline[6]+":"+macline[7]+":"+macline[8]+":"+macline[9]+":"+macline[10] + self["stattext"].setText(("now : "+mac)) + callback(2) + + def checkReadmac(self,data): + if data == 0: + print "block %d is bad block" % self.mactry + self.mactry = self.mactry + 1 + if self.mactry > 4: + self.session.open(MessageBox, _("FLASH IS BROKEN"), type = MessageBox.TYPE_INFO, enable_input = False) + return + else: + self.getmacaddr() + elif data == 1: + print 'mac dump read error' + return + elif data == 2: + print 'mac address read ok' + return + def keyleft(self): - if self.NetworkState==0 or self.pingok<1: + if self.ReadMacinfo==0 : return macaddress = long(self.macaddr,16)-1 if macaddress < 0 : @@ -993,7 +1438,7 @@ class MacConfig(Screen): self.displaymac() def keyright(self): - if self.NetworkState==0 or self.pingok<1: + if self.ReadMacinfo==0 : return macaddress = long(self.macaddr,16)+1 if macaddress > 0xffffffffffff: @@ -1006,21 +1451,21 @@ class MacConfig(Screen): self["text"].setText(("%02x:%02x:%02x:%02x:%02x:%02x"%(int(macaddr[0:2],16),int(macaddr[2:4],16),int(macaddr[4:6],16),int(macaddr[6:8],16),int(macaddr[8:10],16),int(macaddr[10:12],16)))) def keyOk(self): - if self.NetworkState==0 or self.pingok<1: + if self.ReadMacinfo==0 : return try: - system("/etc/init.d/networking stop") - system("ifconfig eth0 down") macaddr = self.macaddr #make_mac_sector 00-99-99-99-00-00 > /tmp/mac.sector #flash_eraseall /dev/mtd4 #nandwrite /dev/mtd4 /tmp/mac.sector -p cmd = "make_mac_sector %02x-%02x-%02x-%02x-%02x-%02x > /tmp/mac.sector"%(int(macaddr[0:2],16),int(macaddr[2:4],16),int(macaddr[4:6],16),int(macaddr[6:8],16),int(macaddr[8:10],16),int(macaddr[10:12],16)) system(cmd) - system("flash_eraseall /dev/mtd4") - system("nandwrite /dev/mtd4 /tmp/mac.sector -p") - macaddrcmd="ifconfig eth0 hw ether %02x:%02x:%02x:%02x:%02x:%02x"%(int(macaddr[0:2],16),int(macaddr[2:4],16),int(macaddr[4:6],16),int(macaddr[6:8],16),int(macaddr[8:10],16),int(macaddr[10:12],16)) - system(macaddrcmd) + if self.model == 2 or self.model == 3 or self.model == 4: + system("flash_eraseall /dev/mtd5") + system("nandwrite /dev/mtd5 /tmp/mac.sector -p") + elif self.model == 0 or self.model ==1 : + system("flash_eraseall /dev/mtd4") + system("nandwrite /dev/mtd4 /tmp/mac.sector -p") macaddress = long(macaddr,16)+1 if macaddress > 0xffffffffffff: macaddress = 0 @@ -1028,393 +1473,81 @@ class MacConfig(Screen): macwritetext = "MAC:%02x:%02x:%02x:%02x:%02x:%02x"%(int(macaddr[0:2],16),int(macaddr[2:4],16),int(macaddr[4:6],16),int(macaddr[6:8],16),int(macaddr[8:10],16),int(macaddr[10:12],16)) self.macfd.seek(0) self.macfd.write(macwritetext) + self.macfd.close() + system("sync") self.macaddr = macaddr - system("ifconfig eth0 up") - self.loadmacaddr() - system("ifconfig eth0 192.168.0.10") - system("/etc/init.d/networking start") self.close() except: self.session.open( MessageBox, _("Mac address fail"), MessageBox.TYPE_ERROR) global ethtest ethtest = 0 - self.close() - - def pingtest(self): - self["stattext"].setText(("now : wait to finish ping test...")) -# system("/etc/init.d/networking stop") - system("ifconfig eth0 192.168.0.10") -# system("/etc/init.d/networking start") - cmd1 = "ping -c 1 192.168.0.100" - self.PingConsole = Console() - self.PingConsole.ePopen(cmd1, self.checkNetworkStateFinished,self.NetworkStatedataAvail) - - def checkNetworkStateFinished(self, result, retval,extra_args): - (statecallback) = extra_args - if self.PingConsole is not None: - if retval == 0: - self.PingConsole = None - content = result.splitlines() -# print 'content',content - x = content[4].split() -# print 'x',x - if x[0]==x[3]: - statecallback(1) - else: - statecallback(0) - else: - statecallback(0) - - - def NetworkStatedataAvail(self,data): - global ethtest - if data == 1: - ethtest = 1 - print "success" - self.pingok=1 - self.loadmacaddr() - self.getmacaddr() - self.session.open( MessageBox, _("Ping test pass"), MessageBox.TYPE_INFO,2) - else: - ethtest = 0 - print "fail" - self.pingok=0 - self["stattext"].setText(("ping test fail.. press Exit Key")) - self.session.open( MessageBox, _("Ping test fail"), MessageBox.TYPE_ERROR,2) - self.getmacaddr() - + self.close() def keyCancel(self): - if self.pingok == -1: - return if self.macfd != 0: self.macfd.close() global ethtest ethtest = 0 self.close() - - -sccitest = 0 - -class ScCiTest(Screen): - skin = """ - - - - - - """ - step=1 - def __init__(self, session): - self["actions"] = ActionMap(["DirectionActions","OkCancelActions"], - { - "ok": self.keyOk, - "up": self.up, - "down":self.down, - "cancel": self.keyCancel, - }, -2) - - Screen.__init__(self, session) - tlist = [] - tlist.append(("Smartcard 1 Test",0)) - tlist.append(("Smartcard 2 Test",1)) - tlist.append(("CI 1 Test",2)) - tlist.append(("CI 2 Test",3)) - self["testlist"] = MenuList(tlist) - self.rlist = [] - for x in range(4): - self.rlist.append(("..")) - self["resultlist"] = TestResultList(self.rlist) - self.result = 0 - self.removecard = eTimer() - self.removecard.callback.append(self.remove_card) - self["text"]=Label(("Press OK Key")) - self.camstate= eTimer() - self.camstate.callback.append(self.cam_state) - self.camtry = 5 - self.camstep = 0 - - def keyCancel(self): - global sccitest - print "result ", self.result - if self.result==15: - sccitest=1 - self.resetSource() - self.close() - - def up(self): - self["text"].setText(_("Press OK Key")) - self["testlist"].instance.moveSelection(self["testlist"].instance.moveUp) - - def down(self): - self["text"].setText(_("Press OK Key")) - self["testlist"].instance.moveSelection(self["testlist"].instance.moveDown) - - def keyOk(self): - print "line - ",self["testlist"].getCurrent()[1] - index = self["testlist"].getCurrent()[1] - result = 0 - if index==0 or index==1: - self["text"].setText(_("Insert Card?")) - self.ScTest(True) - elif index ==2 or index==3: - self["text"].setText(_("Insert Cam")) - self.CamTest() - - def CamTest(self): - self.camtry = 10 - self.camstep = 1 - self.camstate.start(1000,True) - - def setSource(self, cislot): - filename = ("/proc/stb/tsmux/ci%d_input"%cislot) - fd = open(filename,'w') - fd.write('A') - fd.close() - - def setInputSource(self, cislot): - fd=open("/proc/stb/tsmux/input0","w") - if cislot==0: - fd.write("CI0") - else: - fd.write("CI1") - fd.close() - - def resetSource(self): - fd=open("/proc/stb/tsmux/input0","w") - fd.write("A") - fd.close() -# fd = open("/proc/stb/tsmux/ci0_input","w") -# fd.write("CI0") -# fd.close() -# fd = open("/proc/stb/tsmux/ci1_input","w") -# fd.write("CI1") -# fd.close() - - def channelstart(self): - ref = eServiceReference("1:0:19:1324:3EF:1:C00000:0:0:0") - ref.setData(0,0x19) - ref.setData(1,0x83) - ref.setData(2,0x6) - ref.setData(3,0x85) - ref.setData(4,0x640000) - self.session.nav.playService(ref) - - def channelstop(self): - self.session.nav.stopService() # try to disable foreground service - - def cam_state(self): - index = self["testlist"].getCurrent()[1] - if (index-2)==0: - slot = 1 - else: - slot = 0 - print 'cam_state', self.camstep,self.camtry - if self.camstep == 1: - state = eDVBCI_UI.getInstance().getState(slot) - print 'stat',state - if state == 1: - self.camstep=2 - self.camtry=10 - self["text"].setText(_("Getting Cam name....")) - self.camstate.start(5000,True) - else: - self.camtry-=1 - if self.camtry>0: - self.camstate.start(1000,True) - else: - self.session.open( MessageBox, _("NO_NOT_INSERTED"), MessageBox.TYPE_ERROR) - self.rlist[index]="fail" - self["resultlist"].updateList(self.rlist) - - elif self.camstep == 2: - appname = eDVBCI_UI.getInstance().getAppName(slot) - print 'appname',appname - if appname is None: - self.camtry-=1 - if self.camtry>0: - self.camstate.start(1000,True) - else: - self.session.open( MessageBox, _("NO_GET_APPNAME"), MessageBox.TYPE_ERROR) - self.rlist[index]="fail" - self["resultlist"].updateList(self.rlist) - else: - self["text"].setText(_("Get Cam name : %s"%appname+". \n Remove Cam!")) - self.channelstart() - self.setInputSource(slot) - self.setSource(slot) - self.camstep=3 - self.camtry=30 - self.camstate.start(1000,True) - elif self.camstep==3: - state = eDVBCI_UI.getInstance().getState(slot) - print 'stat', state - if state == 0: - self.channelstop() - self.result += (1<0: - self.camstate.start(1000,True) - else: - self.channelstop() - self.session.open( MessageBox, _("NO_REMOVE_CAM"), MessageBox.TYPE_ERROR) - self.rlist[index]="fail" - self["resultlist"].updateList(self.rlist) - - def check_smart_card(self,which): - index = which - result = 0 - if which==0: - result = eSctest.getInstance().check_smart_card("/dev/sci0") - elif which ==1: - result = eSctest.getInstance().check_smart_card("/dev/sci1") - else: - result = -1 - - print result - - if result == 0: - print 'pass' - else: - if result ==-1: - self.session.open( MessageBox, _("1:NO_DEV_FOUND"), MessageBox.TYPE_ERROR) - elif result == -2: - self.session.open( MessageBox, _("1:SC_NOT_INSERTED"), MessageBox.TYPE_ERROR) - elif result == -3: - self.session.open( MessageBox, _("1:SC_NOT_VALID_ATR"), MessageBox.TYPE_ERROR) - elif result == -5: - self.session.open( MessageBox, _("1:SC_READ_TIMEOUT"), MessageBox.TYPE_ERROR) - self.rlist[which]="fail" - self["resultlist"].updateList(self.rlist) - return result - - def remove_card(self): - index = self["testlist"].getCurrent()[1] - if index==0: - result = eSctest.getInstance().eject_smart_card("/dev/sci0") - elif index==1: - result = eSctest.getInstance().eject_smart_card("/dev/sci1") - print 'remove result' ,result - if result == 0: - self.rlist[index]="pass" - self.result += (1< - + + """ - def __init__(self, session): + 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(("Press Key LEFT")) self["text"]=Label(("Testing Smartcard 1...")) - self.step = 0 + self.testok = 0 self.smartcardtimer = eTimer() self.smartcardtimer.callback.append(self.check_smart_card) - self.smartcardtimer.start(100,True) self.closetimer = eTimer() self.closetimer.callback.append(self.close) self.smartcard=0 global smartcardtest smartcardtest = 0 - self.Testmode = 0 - self.model = 0 - self.check_mode() - - def check_mode(self): - try: - fd = open("/proc/stb/info/version","r") - version = fd.read() - if int(version,16) <= 0x1200A3: - self.Testmode = 0 - else: - self.Testmode = 1 - if int(version,16) < 0x130000: - self.model = 0 - elif int(version,16) > 0x140000: - self.model = 1 - except: - self.Testmode = 0 + self.model = stbmodel + self.smartcardtimer.start(100,True) def check_smart_card(self): global smartcardtest 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' - if(index== 0 and self.model== 0): + if(index== 0 and ( self.model== 0 or self.model==2 or self.model == 3 or self.model == 4) ): self.smartcard = 1 self["text"].setText(_("Testing Smartcard 2...")) self.smartcardtimer.start(100,True) return elif (index==1 or self.model==1): smartcardtest = 1 -# self.session.open( MessageBox, _("Smart Card OK!!"), MessageBox.TYPE_INFO,2) - self.step = 1 + self.testok = 1 self["text"].setText(_("Smart Card OK!!")) self.closetimer.start(2000,True) self.smartcardtimer.stop() -# self.session.openWithCallback(self.check6, MessageBox, _("Scart loop ok?"), MessageBox.TYPE_INFO) + else : + + self["text"].setText(_("Smart Card model type error")) + self.closetimer.start(2000,True) + self.smartcardtimer.stop() else: # if result ==-1: # self.session.open( MessageBox, _("%d:NO_DEV_FOUND"%(index+1)), MessageBox.TYPE_ERROR) @@ -1435,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): @@ -1499,8 +1636,6 @@ class FrontTest(Screen): self.keytimeout.start(5000,True) self.step=2 self["text"].setText(_("Wheel RIGHT")) -# else: -# print "" def keyOk(self): if self.step == 3: @@ -1527,8 +1662,8 @@ class FrontTest(Screen): class FrontTest_solo(Screen): skin = """ - - + + """ def __init__(self, session): @@ -1622,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): @@ -1637,27 +1772,217 @@ class FrontTest_solo(Screen): eSctest.getInstance().turnoff_VFD() self.fronttimer.start(1000,True) - - - -rstest = 0 - -import select - -class RS232Test(Screen): +class FrontTest_uno(Screen): skin = """ - - + + """ - step=1 + def __init__(self, session): - self["actions"] = ActionMap(["DirectionActions", "OkCancelActions"], + self["actions"] = ActionMap(["DirectionActions", "OkCancelActions","GlobalActions"], { + "ok": self.keyOk, "cancel": self.keyCancel, + "left": self.keyleft, + "right": self.keyright, + "volumeUp": self.keyvolup, + "volumeDown": self.keyvoldown, + "power_down": self.keypower, }, -2) Screen.__init__(self, session) - self["text"]=Label(("Press \"Enter\" Key")) + self["text"]=Label(("Press Front CH -")) + self.step = 1 + self.fronttimer= eTimer() + self.fronttimer.callback.append(self.FrontAnimate) + self.frontturnonoff = 0 + eSctest.getInstance().VFD_Open() + self.keytimeout = eTimer() + self.keytimeout.callback.append(self.KeyTimeOut) + self.keytimeout.start(5000,True) + + def KeyTimeOut(self): + if self.step == 1: + self["text"].setText(("Front CH - ERROR\nPress exit!")) + elif self.step == 2: + self["text"].setText(("Front CH + ERROR\nPress exit!")) + elif self.step == 3 : + self["text"].setText(("Front VOL - ERROR\nPress exit!")) + elif self.step == 4: + self["text"].setText(("Front VOL + ERROR\nPress exit!")) + elif self.step == 5: + self["text"].setText(("Front STANDBY ERROR\nPress exit!")) + self.step = 0 + + def keyleft(self): + if self.step== 1: + self.keytimeout.stop() + self.keytimeout.start(5000,True) + self.step = 2 + self["text"].setText(_("Press Front CH +")) + def keyright(self): + if self.step== 2: + self.keytimeout.stop() + self.keytimeout.start(5000,True) + self.step = 3 + self["text"].setText(_("Press Front VOL -")) + + def keyvoldown(self): + if self.step== 3: + self.keytimeout.stop() + self.keytimeout.start(5000,True) + self.step = 4 + self["text"].setText(_("Press Front VOL +")) + + def keyvolup(self): + if self.step== 4: + self.keytimeout.stop() + self.keytimeout.start(5000,True) + self.step = 5 + self["text"].setText(_("Press Front STANDBY")) + + def keypower(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")) + + def keyCancel(self): + global fronttest + self.fronttimer.stop() + eSctest.getInstance().VFD_Close() + fronttest = 0 + self.close() + + def keyOk(self): + global fronttest + if self.step == 6: + fronttest = 1 + self.fronttimer.stop() + eSctest.getInstance().VFD_Close() + self.close() + + def FrontAnimate(self): + if (self.frontturnonoff==0): + eSctest.getInstance().turnon_VFD() + self.frontturnonoff = 1 + else: + 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 + +import select + +class RS232Test(Screen): + skin = """ + + + """ + step=1 + def __init__(self, session): + self["actions"] = ActionMap(["DirectionActions", "OkCancelActions"], + { + "cancel": self.keyCancel, + }, -2) + + Screen.__init__(self, session) + self["text"]=Label(("Press \"Enter\" Key")) self.timer = eTimer() self.timer.callback.append(self.checkrs232) self.timer.start(100, True) @@ -1671,104 +1996,920 @@ class RS232Test(Screen): if r: input = rs.read(1) if input == "\n": -# if input == "m": rstest = 1 else: 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(["WizardActions","GlobalActions"], + def __init__(self, session, model): + Screen.__init__(self, session) + self["actions"] = ActionMap(["MediaPlayerActions","GlobalActions", "MediaPlayerSeekActions", "ChannelSelectBaseActions"], { - "agingend": self.keyEnd, - "agingfinish": self.keyFinish, - "volumeUp": self.nothing, - "volumeDown": self.nothing, - "volumeMute": self.nothing, + "pause": self.keyEnd, + "stop": self.keyFinish, + "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(2000,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 @@ -1790,3 +2931,6 @@ def main(session, servicelist, **kwargs): #def Plugins(**kwargs): # return PluginDescriptor(name=_("Factory Test"), description="Test App for Factory", where = PluginDescriptor.WHERE_EXTENSIONSMENU, fnc=main) + +def Plugins(**kwargs): + return []