from Components.GUIComponent import GUIComponent
from enigma import eListboxPythonStringContent, eListbox, gFont, eServiceCenter, eDVBResourceManager
from enigma import eServiceReference
-from enigma import eMemtest
-from enigma import eSctest
+from sctest import eSctest
from enigma import eDVBDB
from Components.NimManager import nimmanager
from enigma import eDVBCI_UI,eDVBCIInterfaces
from Tools.Directories import resolveFilename, SCOPE_SYSETC
+from Components.Sources.StaticText import StaticText
-class TestResultList(HTMLComponent, GUIComponent):
- def __init__(self, list, enableWrapAround=False, content=eListboxPythonStringContent):
- GUIComponent.__init__(self)
- self.list = list
- self.l = content()
- self.l.setList(self.list)
- self.onSelectionChanged = [ ]
- self.enableWrapAround = enableWrapAround
-
- def getCurrent(self):
- return self.l.getCurrentSelection()
-
- GUI_WIDGET = eListbox
-
+class TestResultList(MenuList):
def postWidgetCreate(self, instance):
self.instance.setSelectionEnable(0)
instance.setContent(self.l)
if self.enableWrapAround:
self.instance.setWrapAround(True)
- def preWidgetRemove(self, instance):
- instance.setContent(None)
- instance.selectionChanged.get().remove(self.selectionChanged)
-
- def selectionChanged(self):
- for f in self.onSelectionChanged:
- f()
-
- def getSelectionIndex(self):
- return self.l.getCurrentSelectionIndex()
-
- def getSelectedIndex(self):
- return self.l.getCurrentSelectionIndex()
-
- def setList(self, list):
- self.list = list
- self.l.setList(self.list)
-
def updateList(self, list):
self.list = list
self.l.setList(self.list)
- def moveToIndex(self, idx):
- if self.instance is not None:
- self.instance.moveSelectionTo(idx)
-
- def pageUp(self):
- if self.instance is not None:
- self.instance.moveSelection(self.instance.pageUp)
-
- def pageDown(self):
- if self.instance is not None:
- self.instance.moveSelection(self.instance.pageDown)
-
- def up(self):
- if self.instance is not None:
- self.instance.moveSelection(self.instance.moveUp)
+class TuneMessageBox(MessageBox):
+ skin = """
+ <screen position="center,center" size="600,10" title="Message">
+ <widget name="text" position="65,8" size="420,0" font="Regular;22" />
+ <widget name="ErrorPixmap" pixmap="Vu_HD/icons/input_error.png" position="5,5" size="53,53" alphatest="blend" />
+ <widget name="QuestionPixmap" pixmap="Vu_HD/icons/input_question.png" position="5,5" size="53,53" alphatest="blend" />
+ <widget name="InfoPixmap" pixmap="Vu_HD/icons/input_info.png" position="5,5" size="53,53" alphatest="blend" />
+ <widget name="list" position="100,100" size="380,375" transparent="1" backgroundColor="darkgrey" />
+ <!-- Signal Quality -->
+ <eLabel text="SNR : " position="60,130" size="60,25" font="Regular;25" transparent="1" />
+ <widget source="session.FrontendStatus" render="Label" position="120,130" size="60,25" font="Regular;25" transparent="1">
+ <convert type="FrontendInfo">SNRdB</convert>
+ </widget>
+ <!-- AGC -->
+ <eLabel text="AGC : " position="200,130" size="60,25" font="Regular;25" transparent="1" noWrap="1" />
+ <widget source="session.FrontendStatus" render="Label" position="260,130" size="60,25" font="Regular;25" transparent="1" noWrap="1">
+ <convert type="FrontendInfo">AGC</convert>
+ </widget>
+ <applet type="onLayoutFinish">
+# 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()))
+ </applet>
+ </screen>"""
+ def __init__(self, session, text, type = MessageBox.TYPE_YESNO):
+ MessageBox.__init__(self, session, text, type)
- def down(self):
- if self.instance is not None:
- self.instance.moveSelection(self.instance.moveDown)
+class FactoryTestSummary(Screen):
+ skin = """
+ <screen name="FactoryTestSummary" position="0,0" size="132,64" id="1">
+ <widget source="parent.Title" render="Label" position="6,0" size="132,64" font="Regular;18" halign="center" valign="center"/>
+ </screen>"""
- def selectionEnabled(self, enabled):
- if self.instance is not None:
- self.instance.setSelectionEnable(enabled)
+class FactoryTestSummary_VFD(Screen):
+ skin = """
+ <screen name="FactoryTestSummary" position="0,0" size="256,64" id="1">
+ <widget source="parent.Title" render="Label" position="0,0" size="256,64" font="VFD;24" halign="center" valign="center"/>
+ </screen>"""
class FactoryTest(Screen):
skin = """
- <screen position="120,125" size="440,400" title="Test Menu" >
- <widget name="testlist" position="10,0" size="340,350" />
- <widget name="resultlist" position="370,0" size="60,350" />
- <widget name="testdate" position="20,350" size="150,25" font="Regular;22" />
- <widget name="testversion" position="20,375" size="150,25" font="Regular;22" />
- <widget name="mactext" position="180,350" size="230,25" font="Regular;22" />
+ <screen name="FactoryTest" position="300,100" size="660,550" title="Test Menu" >
+ <widget name="testlist" position="10,0" size="440,455" itemHeight="35" />
+ <widget name="resultlist" position="470,0" size="60,455" itemHeight="35" />
+ <widget name="testdate" position="20,470" size="250,35" font="Regular;30" />
+ <widget name="testversion" position="20,505" size="250,35" font="Regular;30" />
+ <widget name="mactext" position="320,470" size="340,35" font="Regular;30" />
</screen>"""
+
+ def createSummary(self):
+ if self.model == 4:
+ return FactoryTestSummary_VFD
+ else:
+ return FactoryTestSummary
+
def __init__(self, session):
self["actions"] = NumberActionMap(["OkCancelActions","WizardActions","NumberActions","ColorActions",],
"8": self.numberaction,
"9": self.numberaction,
"red": self.shutdownaction,
+ "blue": self.Agingmode2,
}, -2)
Screen.__init__(self, session)
- TESTPROGRAM_DATE = self.getImageVersion() +" (v1.00)"
- TESTPROGRAM_VERSION = "Version 01.10"
+ TESTPROGRAM_DATE = self.getImageVersion() +" (v1.20)"
+ TESTPROGRAM_VERSION = "Version 01.20"
self.model = 0
self.getModelInfo()
pass
if self.model == 3 or self.model == 4:
self.NimType = {}
- sat_list = ["160","100","130","192","620","642"]
+ sat_list = ["160","100","130","192","620","642","685","720"]
+# ' sat ' : namespace , # satname
+# '160' : '0xA00000', # Eutelsat W2
+# '100' : '0x64af79', # Eutelsat
+# '130' : '0x820000', # Hotbird
+# '192' : '0xC00000', # Astra
+# '620' : '0x26c0000', # Intelsat 902
+# '642' : '0x282AF79' # Intelsat 906
+# '685' : '02ad0000' # Panamsat 7,10 (68.5E)
+# '720' : '02d0af79' # Panamsat 4 (72.0E)
try:
nimfile = open("/proc/bus/nim_sockets")
except IOError:
self.createConfig()
self.rlist = []
- for x in range(self.menulength):
+ for x in range(self.menulength-1):
self.rlist.append((".."))
+ self.rlist.append((" "))
self["resultlist"] = TestResultList(self.rlist)
self.avswitch = AVSwitch()
self.usbtimer = eTimer()
self.usbtimer.callback.append(self.usbCheck)
- self.agingtimer = eTimer()
- self.agingtimer.callback.append(self.agingCheck)
self.setSourceVar()
+ self.FanSpeedUp(255)
+
+ def FanSpeedUp(self,value):
+ if self.model in (3,4): # uno or ultimo
+ if value <0:
+ value = 0
+ elif value >255:
+ value = 255
+ print "[FactoryTest, FanSpeedUp] setPWM to : %d"%value
+ f = open("/proc/stb/fp/fan_pwm", "w")
+ f.write("%x" % value)
+ f.close()
def createConfig(self):
tlist = []
tlist.append((" 2. Front test",self.fronttestIndex))
self.smarttestIndex=3
tlist.append((" 3. Smartcard test",self.smarttestIndex))
- self.tuner_test_first_index = current_index = 4
+ if self.model == 3:
+ self.tuner_test_first_index = current_index = 4
+ elif self.model == 4:
+ self.tuner_test_first_index = 4
+ current_index = 0
AspectRatio=["4:3", "16:9"]
ColorFormat=["CVBS","RGB","YC","CVBS","CVBS","CVBS","CVBS","CVBS"]
self.tuneInfo={}
+ tunelist = []
for (key, val) in self.NimType.items():
if val["type"].startswith("DVB-S"):
# Chang : DVB -S setting diseqc A
# current_index=4
self.setTuneInfo(index=current_index, slot=key, type=val["type"], sat=val["sat1"], pol="H", tone=False, ratio=getRatio, color=getColorFormat, cam=False) # setTuneInfo
# self.setTuneInfo(current_index, key, val["type"], val["sat1"], "H", True, getRatio, getColorFormat, False) # setTuneInfo
- tlist.append((menuname,current_index))
+ tunelist.append((menuname,current_index))
current_index+=1
# Chang : DVB -S setting diseqc B
getRatio = AspectRatio.pop(0)
else:
camtest = False
self.setTuneInfo( index=current_index, slot=key, type=val["type"], sat=val["sat2"], pol="V", tone=True, ratio=getRatio, color=getColorFormat, cam=camtest)
- tlist.append((menuname,current_index))
+ tunelist.append((menuname,current_index))
current_index+=1
# Chang : DVB -T or DVB-C
elif val["type"].startswith("DVB-T") or val["type"].startswith("DVB-C"):
else:
camtest = False
self.setTuneInfo( index=current_index, slot=key, type=val["type"], sat=None, pol=None, tone=None, ratio=getRatio, color=getColorFormat, cam=camtest)
- tlist.append((menuname,current_index))
+ tunelist.append((menuname,current_index))
current_index+=1
- self.tuner_test_last_index = current_index-1
+ if self.model == 3:
+ tlist.extend(tunelist)
+ self.tuner_test_last_index = current_index-1
+ elif self.model == 4:
+ self.tunelist = tunelist
+ self.tuner_test_last_index = 4
+ current_index = self.tuner_test_last_index
+ tlist.append((" %d. Tuning test" % current_index,self.tuner_test_last_index))
+ current_index+=1
self.rs232testIndex=current_index
tlist.append((" %d. RS232 test" % current_index,self.rs232testIndex))
current_index+=1
def getModelInfo(self):
getmodel = 0
if fileExists("/proc/stb/info/vumodel"):
- info = open("/proc/stb/info/vumodel").read().strip()
+ vumodel = open("/proc/stb/info/vumodel")
+ info=vumodel.read().strip()
+ vumodel.close()
if info == "duo":
self.model = 0
getmodel = 1
self.model = 4
getmodel = 1
print "getModelInfo : ultimo"
+
if getmodel == 0 and fileExists("/proc/stb/info/version"):
- info = open("/proc/stb/info/version").read()
+ vesion = open("/proc/stb/info/version")
+ info=version.read()
+ version.close()
if info[:2] == "14":
self.model = 1
print "getModelInfo : solo_"
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"))
elif index==self.fronttestIndex:
self.Test1()
elif index>=self.tuner_test_first_index and index<=self.tuner_test_last_index:
- self.TestTune(index)
+ if self.model == 0 or self.model == 1 or self.model == 2 or self.model == 3:
+ self.TestTune(index)
+ elif self.model == 4:
+ self.openTestTuneMenu()
elif index==self.scarttestIndex:
self.Test6()
elif index==self.rs232testIndex:
self.session.openWithCallback(self.displayresult ,FrontTest)
elif self.model == 1:
self.session.openWithCallback(self.displayresult ,FrontTest_solo)
- elif self.model == 2 or self.model == 3 or self.model == 4:
+ elif self.model == 2 or self.model == 3:
self.session.openWithCallback(self.displayresult ,FrontTest_uno)
+ elif self.model == 4:
+ self.session.openWithCallback(self.displayresult ,FrontTest_ultimo)
def displayresult(self):
global fronttest
else:
self.rlist[self["testlist"].getCurrent()[1]]="fail"
+ def openTestTuneMenu(self):
+ self.session.openWithCallback(self.TestTuneMenuResult ,TestTuneMenu, self.tuneInfo, self.tunelist, self.NimType)
+
+ def TestTuneMenuResult(self,result):
+ if result :
+ self.rlist[self["testlist"].getCurrent()[1]]="pass"
+ else:
+ self.rlist[self["testlist"].getCurrent()[1]]="fail"
+ self["resultlist"].updateList(self.rlist)
+
def TestTune(self,index):
if self.oldref is None:
eref = eServiceReference("1:0:19:1324:3EF:1:C00000:0:0:0")
elif getTuneInfo["sat"] == "192": # Astra
ref.setData(4,0xC00000)
elif getTuneInfo["sat"] == "620": # Intelsat 902
- ref.setData(4,0x26c0000) # need to fix later
+ ref.setData(4,0x26c0000)
elif getTuneInfo["sat"] == "642": # Intelsat 906
- ref.setData(4,0x282AF79) # need to fix later
+ ref.setData(4,0x282AF79)
+ elif getTuneInfo["sat"] == "685": # Panamsat 7,10 (68.5E)
+ ref.setData(4,0x02ad0000)
+ elif getTuneInfo["sat"] == "720": # Panamsat 4 (72.0E)
+ ref.setData(4,0x02d0af79)
elif getTuneInfo["type"].startswith("DVB-C"):
ref.setData(0,0x19)
ref.setData(1,0x1325)
hv == ""
print "eSctest.getInstance().getFrontendstatus - %d"%result
- if result == 0:
+ if result == 0 or result == -1:
self.tunerlock = 0
self.tunemsgtimer.stop()
self.session.nav.stopService()
def tunemsg(self):
self.tuningtimer.stop()
- self.session.openWithCallback(self.tuneback, MessageBox, _("%s ok?" %(self["testlist"].getCurrent()[0])), MessageBox.TYPE_YESNO)
+ self.session.openWithCallback(self.tuneback, TuneMessageBox, _("%s ok?" %(self["testlist"].getCurrent()[0])), MessageBox.TYPE_YESNO)
def setSourceVar(self):
if self.model == 0:
self.session.openWithCallback(self.check7,RS232Test)
def Agingmode(self):
- if self.testing==1:
- return
- if self.oldref is None:
- eref = eServiceReference("1:0:19:1324:3EF:1:C00000:0:0:0")
- serviceHandler = eServiceCenter.getInstance()
- servicelist = serviceHandler.list(eref)
- if not servicelist is None:
- ref = servicelist.getNext()
- else:
- ref = self.getCurrentSelection()
- print "servicelist none"
- else:
- ref = self.oldref
- self.session.nav.stopService() # try to disable foreground service
- if self.model == 0 or self.model == 1 or self.NimType[0]["type"].startswith("DVB-S"):
- ref.setData(0,0x19)
- ref.setData(1,0x1325)
- ref.setData(2,0x3ef)
- ref.setData(3,0x1)
- ref.setData(4,0x64af79)
- elif self.NimType[0]["type"].startswith("DVB-C"):
- ref.setData(0,0x19)
- ref.setData(1,0x1325)
- ref.setData(2,0x3ef)
- ref.setData(3,0x1)
- ref.setData(4,-64870) # ffff029a
- elif self.NimType[0]["type"].startswith("DVB-T"):
- ref.setData(0,0x19)
- ref.setData(1,0x1325)
- ref.setData(2,0x3ef)
- ref.setData(3,0x1)
- ref.setData(4,-286391716) # eeee025c
- self.session.nav.playService(ref)
- self.avswitch.setColorFormat(0)
- self.avswitch.setAspectRatio(0)
- self.agingtimer.start(2000,True)
-
- def agingCheck(self):
- result = eSctest.getInstance().getFrontendstatus(0)
- hv = "Ver"
- print "eSctest.getInstance().getFrontendstatus - %d"%result
- if result == 0:
- self.session.nav.stopService()
- self.session.open( MessageBox, _("Tune 1 Ver Locking Fail..."), MessageBox.TYPE_ERROR)
- elif result == 1 :
- self.session.openWithCallback(self.agingResult,AgingTest)
- else:
- self.session.nav.stopService()
- self.session.open( MessageBox, _("Tune 1 Ver Error %d..."%result), MessageBox.TYPE_ERROR)
+ self.session.openWithCallback(self.AgingmodeCallback,AgingTest, self.model)
- def agingResult(self):
- global Agingresult
- if(Agingresult ==1):
+ def AgingmodeCallback(self,ret):
+ if ret == 1:
self["testlist"].moveToIndex(self.fdefaultIndex)
self.Test14()
self["testlist"].moveToIndex(self.shutdownIndex)
+
+ def Agingmode2(self):
+ self.session.openWithCallback(self.Agingmode2Callback,AgingTest_mode2, self.model)
+
+ def Agingmode2Callback(self):
+ self["testlist"].moveToIndex(self.fdefaultIndex)
+ self.Test14()
+ self["testlist"].moveToIndex(self.shutdownIndex)
def Test8(self):
self.usbtry = 9
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
def Test10(self):
self.session.openWithCallback(self.scciresult ,SmartCardTest,stbmodel=self.model)
- def Test11(self):
- self.MemTest(1)
+# def Test11(self):
+# self.MemTest(1)
- def Test12(self):
- self.MemTest(2)
-
- def Test13(self):
- self.MemTest(3)
+# def Test12(self):
+# self.MemTest(2)
+# def Test13(self):
+# self.MemTest(3)
def Test14(self):
try:
ethtest = 0
class MacConfig(Screen):
skin = """
- <screen position="100,250" size="520,100" title="Mac Config" >
+ <screen name="MacConfig" position="center,center" size="520,100" title="Mac Config" >
<eLabel text="Mac Address " position="10,15" size="200,40" font="Regular;30" />
- <widget name="text" position="230,15" size="230,40" font="Regular;30" />
+ <widget name="text" position="230,15" size="230,40" font="Regular;30" halign="right"/>
<widget name="text1" position="470,15" size="40,40" font="Regular;30" />
<eLabel text=" " position="5,55" zPosition="-1" size="510,5" backgroundColor="#02e1e8e6" />
- <widget name="stattext" position="30,75" size="400,25" font="Regular;20" />
+ <widget name="stattext" position="30,75" size="450,35" font="Regular;30" />
</screen>"""
def __init__(self, session, mactry = 1):
def getModelInfo(self):
getmodel = 0
if fileExists("/proc/stb/info/vumodel"):
- info = open("/proc/stb/info/vumodel").read().strip()
+ vumodel = open("/proc/stb/info/vumodel")
+ info=vumodel.read().strip()
+ vumodel.close()
if info == "combo":
self.model = 2
getmodel = 1
getmodel = 1
print "getModelInfo : ultimo"
-
if getmodel == 0 and fileExists("/proc/stb/info/version"):
- info = open("/proc/stb/info/version").read()
+ version = open("/proc/stb/info/version")
+ info=version.read()
+ version.close()
# print info,info[:2]
if info[:2] == "14":
self.model = 1
smartcardtest = 0
class SmartCardTest(Screen):
skin = """
- <screen position="300,240" size="160,120" title="SmartCard Test" >
- <widget name="text" position="10,10" size="140,100" font="Regular;22" />
+ <screen name="SmartCardTest" position="center,center" size="300,120" title="SmartCard Test" >
+ <widget name="text" position="10,10" size="280,100" font="Regular;30" />
</screen>"""
def __init__(self, session, stbmodel = 0):
global smartcardtest
smartcardtest = 0
self.model = stbmodel
- self.Testmode = 1
self.smartcardtimer.start(100,True)
def check_smart_card(self):
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'
class FrontTest(Screen):
skin = """
- <screen position="260,240" size="200,180" title="Front Test" >
- <widget name="text" position="10,10" size="180,160" font="Regular;22" />
+ <screen name="FrontTest" position="center,center" size="300,180" title="Front Test" >
+ <widget name="text" position="10,10" size="280,160" font="Regular;30" />
</screen>"""
def __init__(self, session):
class FrontTest_solo(Screen):
skin = """
- <screen position="260,240" size="200,180" title="Front Test" >
- <widget name="text" position="10,10" size="180,160" font="Regular;22" />
+ <screen name="FrontTest_solo" position="center,center" size="300,180" title="Front Test" >
+ <widget name="text" position="10,10" size="280,160" font="Regular;30" />
</screen>"""
def __init__(self, session):
self.frontturnonoff = 0
eSctest.getInstance().turnoff_VFD()
self.fronttimer.start(1000,True)
-
+
+class FrontTest_ultimo_Summary(Screen):
+ skin = """
+ <screen name="FactoryTestSummary" position="0,0" size="256,64" id="1">
+ <widget source="parent.Title" render="Label" position="0,0" size="256,24" font="Regular;18" halign="center" valign="center"/>
+ <widget name="text" position="0,24" size="256,40" font="VFD;20" halign="center" valign="center"/>
+ </screen>"""
+
+ 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 = """
+ <screen position="center,center" size="300,180" title="Front Test" >
+ <widget name="text" position="10,10" size="280,160" font="Regular;30" />
+ </screen>"""
+
+ 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
class RS232Test(Screen):
skin = """
- <screen position="300,240" size="160,100" title="RS232 Test" >
- <widget name="text" position="10,10" size="140,80" font="Regular;22" />
+ <screen name="RS232Test" position="center,center" size="260,100" title="RS232 Test" >
+ <widget name="text" position="10,10" size="240,80" font="Regular;30" />
</screen>"""
step=1
def __init__(self, session):
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)
def keyCancel(self):
self.close()
-Agingresult = 0
+class AgingTestSummary(Screen):
+ skin = """
+ <screen name="AgingTestSummary" position="0,0" size="132,64" id="1">
+ <widget source="parent.Title" render="Label" position="6,0" size="132,64" font="Regular;18" halign="center" valign="center"/>
+ </screen>"""
+
+class AgingTestSummaryVFD(Screen):
+ skin = """
+ <screen name="AgingTestSummaryVFD" position="0,0" size="256,64" id="1">
+ <eLabel text="MODE: " position="0,0" size="50,16" font="VFD;14" />
+ <widget name="zapmode" position="51,0" size="70,16" font="VFD;14" halign="left" valign="center"/>
+ <widget name="timer" position="152,0" size="124,16" font="VFD;14" halign="left" valign="center"/>
+ <eLabel text="TUNER: " position="0,16" size="50,16" font="VFD;14" />
+ <widget name="curtuner" position="51,16" size="200,16" font="VFD;14" halign="left" valign="center"/>
+ <!-- Signal Quality -->
+ <eLabel text="SNR: " position="0,32" size="45,16" font="VFD;14" transparent="1" halign="left" valign="center"/>
+ <widget source="session.FrontendStatus" render="Label" position="46,32" size="40,16" font="VFD;14" transparent="1">
+ <convert type="FrontendInfo">SNRdB</convert>
+ </widget>
+ <!-- AGC -->
+ <eLabel text="AGC: " position="0,48" size="45,16" font="VFD;14" transparent="1" noWrap="1" />
+ <widget source="session.FrontendStatus" render="Label" position="46,48" size="40,16" font="VFD;14" transparent="1" noWrap="1">
+ <convert type="FrontendInfo">AGC</convert>
+ </widget>
+ <widget name="error" position="90,32" size="166,32" font="VFD;18" halign="center" valign="center"/>
+ </screen>"""
+
+ 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 = """
- <screen position="200,240" size="250,100" title="Aging Test" >
- <widget name="text1" position="10,10" size="230,40" font="Regular;22" />
- <widget name="text2" position="10,50" size="230,40" font="Regular;22" />
+ <screen position="center,center" size="350,220" title="Aging Test" >
+ <widget name="text1" position="10,10" size="340,40" font="Regular;30" halign = "center" valign = "center"/>
+ <widget name="text2" position="10,60" size="340,40" font="Regular;30" halign = "center" valign = "center"/>
+ <!-- Signal Quality -->
+ <eLabel text="SNR : " position="40,120" size="60,25" font="Regular;25" transparent="1" />
+ <widget source="session.FrontendStatus" render="Label" position="100,120" size="60,25" font="Regular;25" transparent="1">
+ <convert type="FrontendInfo">SNRdB</convert>
+ </widget>
+ <!-- AGC -->
+ <eLabel text="AGC : " position="180,120" size="60,25" font="Regular;25" transparent="1" noWrap="1" />
+ <widget source="session.FrontendStatus" render="Label" position="240,120" size="60,25" font="Regular;25" transparent="1" noWrap="1">
+ <convert type="FrontendInfo">AGC</convert>
+ </widget>
+ <widget name="text3" position="10,150" size="330,35" font="Regular;28" halign = "center" valign = "center"/>
+ <widget name="text4" position="10,185" size="330,35" font="Regular;20" halign = "center" valign = "center"/>
</screen>"""
step=1
- def __init__(self, session):
- self["actions"] = ActionMap(["MediaPlayerActions","GlobalActions"],
+ def __init__(self, session, model):
+ Screen.__init__(self, session)
+ self["actions"] = ActionMap(["MediaPlayerActions","GlobalActions", "MediaPlayerSeekActions", "ChannelSelectBaseActions"],
{
"pause": self.keyEnd,
"stop": self.keyFinish,
- "volumeUp": self.nothing,
- "volumeDown": self.nothing,
- "volumeMute": self.nothing,
+ "volumeUp": self.keyVolumeup,
+ "volumeDown": self.keyVolumedown,
+ "volumeMute": self.nothing,
+ "seekFwd" : self.keyFFW,
}, -2)
-
- Screen.__init__(self, session)
+ self.model = model
self["text1"]=Label(("Exit - Press Pause Key"))
self["text2"]=Label(("Reset - Press Stop Key"))
-# self.servicelist = ServiceList()
-# self.oldref = session.nav.getCurrentlyPlayingServiceReference()
-# print "oldref",self.oldref
-# session.nav.stopService() # try to disable foreground service
-# self.chstart()
- self.tunerlock = 0
- self.tuningtimer = eTimer()
- self.tuningtimer.callback.append(self.updateStatus)
-# self.tuningtimer.start(200,True)
+ self["text3"]=Label(("Manual zapping"))
+ self["text4"]=Label((" "))
+ self.avswitch = AVSwitch()
+ self.curzappingmode = 'manual'
+ self.zapping_interval = 300
+ self.error = 0
+ self.timeout = self.zapping_interval
+ self.tunelist = []
+ self.zappinglist = {
+ 'DVB-S2' : [
+ ('S-1','1:0:19:1325:3EF:1:0x64af79:0:0:0:'), # astra hd
+ ('S-2','1:0:19:1324:3EF:1:0x64af79:0:0:0:'), # anixe hd
+ ('S-3','1:0:19:1331:3EF:1:0x64af79:0:0:0:') # servus hd
+ ],
+ 'DVB-C': [
+ ('C-1','1:0:19:1325:3EF:1:FFFF029A:0:0:0:'), # astra hd (DVB-C)
+ ('C-2','1:0:19:1324:3EF:1:FFFF029A:0:0:0:') # anixe hd (DVB-C)
+ ]
+ }
+ self.LockCheckTimer = eTimer()
+ self.LockCheckTimer.callback.append(self.LockCheck)
+ self.nextzappingtimer = eTimer()
+ self.nextzappingtimer.callback.append(self.checktimeout)
+ self.checkTunerType()
+ self.makeTunelList()
+ self.playservice(service = self.tunelist[0][1])
+# self.logmessage("AGING TEST START")
+
+ def createSummary(self):
+ if self.model == 4:
+ self.onShown.append(self.VFDinit)
+ return AgingTestSummaryVFD
+ else:
+ return AgingTestSummary
+ def setTextVFD(self, name ,text):
+ if self.model == 4:
+ self.summaries.setText(name ,text)
- def updateStatus(self):
- result = eSctest.getInstance().getFrontendstatus(0)
- hv = "Ver"
-
- print "eSctest.getInstance().getFrontendstatus - %d"%result
- if result == 0:
- self.tunerlock = 0
- self.session.nav.stopService()
- self.session.open( MessageBox, _("Tune 1 Ver Locking Fail..."), MessageBox.TYPE_ERROR)
- elif result==1 :
- self.tunerlock = 1
+ def VFDinit(self):
+ if self.curzappingmode == 'manual' :
+ self.summaries.setText("zapmode", 'MANUAL')
else:
- self.tunerlock = 0
- self.session.nav.stopService()
- self.session.open( MessageBox, _("Tune 1 Ver Error %d..."%result), MessageBox.TYPE_ERROR)
+ self.summaries.setText("zapmode", 'AUTO')
+ self.summaries.setText("timer", "Timer %d sec"%self.timeout)
+ self.summaries.setText("curtuner", "%s, CHANNEL - %s)"%(self.NimType[0], self.tunelist[0][0]))
+
+ def checkTunerType(self):
+ self.NimType={}
+ nimfile = open("/proc/bus/nim_sockets")
+ for line in nimfile.readlines():
+ print line
+ if line == "":
+ break
+ if line.strip().startswith("NIM Socket"):
+ parts = line.strip().split(" ")
+ current_slot = int(parts[2][:-1])
+ elif line.strip().startswith("Type:"):
+ self.NimType[current_slot]= str(line.strip()[6:])
+ elif line.strip().startswith("empty"):
+ self.NimType.pop(current_slot)
+ nimfile.close()
+
+ def makeTunelList(self):
+ if self.NimType[0].startswith("DVB-S"):
+ tunetype = "DVB-S2"
+ elif self.NimType[0].startswith("DVB-C"):
+ tunetype = "DVB-C"
+ elif self.NimType[0].startswith("DVB-T"):
+# tunetype = "DVB-T"
+ pass # fix later..
+ try :
+ self.tunelist = self.zappinglist[tunetype]
+ except:
+ print "[FactoryTest] ERROR, index error (%s)"%tunetype
+ def nextZapping(self, zap_rev = False):
+ if zap_rev:
+ tunelistlen = len(self.tunelist)
+ nextservice = self.tunelist.pop(tunelistlen-1)
+ self.tunelist.insert(0,nextservice)
+ else:
+ currentservice = self.tunelist.pop(0)
+ self.tunelist.append(currentservice)
+ self.playservice(service=self.tunelist[0][1])
+ if self.curzappingmode == 'auto':
+ self.timeout = self.zapping_interval
+ self.setTextVFD("curtuner", "%s, CHANNEL - %s)"%(self.NimType[0], self.tunelist[0][0]))
+
+ def checktimeout(self):
+ if self.timeout == 0:
+ self.nextZapping()
+ else:
+ self.timeout -=1
+ self["text4"].setText("remain %d sec for next tuning" %self.timeout)
+ self.setTextVFD("timer", "Timer %d sec"%self.timeout)
+
+ def playservice(self,service = '1:0:19:1325:3EF:1:0x64af79:0:0:0:'):
+ ref = eServiceReference(service)
+ self.session.nav.playService(ref)
+ self.avswitch.setAspectRatio(6)
+ self.avswitch.setColorFormat(0)
+ self.LockCheckTimer.start(2000,True)
+
+ def LockCheck(self):
+ result = eSctest.getInstance().getFrontendstatus(0)
+ if result == 0 or result == -1:
+ if self.model == 4:
+ self.error +=1
+ print "AGINGTEST - LOCK FAIL(%d)"%self.error
+ self.setTextVFD("error", "LOCK FAIL(%d)"%self.error)
+ # logmsg = "[LOCKFAIL][%d] TYPE : %s, CH : %s, ZAPMODE: %s"%(self.error,self.NimType[0],self.tunelist[0][0],self.curzappingmode)
+ # self.logmessage(logmsg)
+ else:
+ self.session.open( MessageBox, _("Locking Fail Error"), MessageBox.TYPE_ERROR)
+
+ def logmessage(self,msg):
+ pass
def nothing(self):
print "nothing"
- def chstart(self):
- if self.oldref is None:
- eref = eServiceReference("1:0:19:1324:3EF:1:C00000:0:0:0")
- serviceHandler = eServiceCenter.getInstance()
- servicelist = serviceHandler.list(eref)
- if not servicelist is None:
- ref = servicelist.getNext()
+ def keyFFW(self):
+ if self.curzappingmode == 'auto':
+ self.curzappingmode = 'manual'
+ self.nextzappingtimer.stop()
+ self.timeout = self.zapping_interval
+ self["text3"].setText("Manual zapping")
+ self["text4"].setText("")
+ self.setTextVFD("zapmode", 'MANUAL')
+ self.setTextVFD("timer", "")
+
+ elif self.curzappingmode == 'manual':
+ self.curzappingmode = 'auto'
+ self["text3"].setText("Auto zapping")
+ self["text4"].setText("remain %d sec for next tuning" %self.timeout)
+ self.setTextVFD("zapmode", 'AUTO')
+ self.setTextVFD("timer", "Timer %d sec"%self.timeout)
+# self.timeout = self.zapping_interval
+ self.nextzappingtimer.start(1000)
+
+ def keyVolumeup(self):
+ self.nextZapping(zap_rev = False)
+
+ def keyVolumedown(self):
+ self.nextZapping(zap_rev = True)
+
+ def nothing(self):
+ print "nothing"
+
+ def keyEnd(self):
+ self.session.nav.stopService()
+ self.close(0) # exit
+
+ def keyFinish(self):
+ self.session.nav.stopService()
+ self.close(1) # exit and reset
+
+class AgingTest_mode2_Summary(Screen):
+ skin = """
+ <screen name="AgingTest_mode2_Summary" position="0,0" size="132,64" id="1">
+ <widget source="parent.Title" render="Label" position="6,0" size="132,64" font="Regular;18" halign="center" valign="center"/>
+ </screen>"""
+
+class AgingTest_mode2_Summary_VFD(Screen):
+ skin = """
+ <screen name="AgingTest_mode2_Summary_VFD" position="0,0" size="256,64" id="1">
+ <eLabel text="MODE: " position="0,0" size="50,16" font="VFD;14" />
+ <widget name="zapmode" position="51,0" size="70,16" font="VFD;14" halign="left" valign="center"/>
+ <widget name="timer" position="152,0" size="124,16" font="VFD;14" halign="left" valign="center"/>
+ <eLabel text="TUNER: " position="0,16" size="50,16" font="VFD;14" />
+ <widget name="curtuner" position="51,16" size="200,16" font="VFD;14" halign="left" valign="center"/>
+ <!-- Signal Quality -->
+ <eLabel text="SNR: " position="0,32" size="45,16" font="VFD;14" transparent="1" halign="left" valign="center"/>
+ <widget source="session.FrontendStatus" render="Label" position="46,32" size="40,16" font="VFD;14" transparent="1">
+ <convert type="FrontendInfo">SNRdB</convert>
+ </widget>
+ <!-- AGC -->
+ <eLabel text="AGC: " position="0,48" size="45,16" font="VFD;14" transparent="1" noWrap="1" />
+ <widget source="session.FrontendStatus" render="Label" position="46,48" size="40,16" font="VFD;14" transparent="1" noWrap="1">
+ <convert type="FrontendInfo">AGC</convert>
+ </widget>
+ <widget name="error" position="90,32" size="166,32" font="VFD;18" halign="center" valign="center"/>
+ </screen>"""
+
+ 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 = """
+ <screen position="center,center" size="370,190" title="Aging Test 2" >
+ <widget name="text1" position="10,10" size="350,40" font="Regular;30" halign="center" valign="center"/>
+ <widget name="text2" position="10,60" size="350,30" font="Regular;25" halign="center" valign="center"/>
+ <!-- Signal Quality -->
+ <eLabel text="SNR : " position="50,100" size="60,25" font="Regular;25" transparent="1" />
+ <widget source="session.FrontendStatus" render="Label" position="110,100" size="60,25" font="Regular;25" transparent="1">
+ <convert type="FrontendInfo">SNRdB</convert>
+ </widget>
+ <!-- AGC -->
+ <eLabel text="AGC : " position="190,100" size="60,25" font="Regular;25" transparent="1" noWrap="1" />
+ <widget source="session.FrontendStatus" render="Label" position="250,100" size="60,25" font="Regular;25" transparent="1" noWrap="1">
+ <convert type="FrontendInfo">AGC</convert>
+ </widget>
+ <widget name="text3" position="10,130" size="350,25" font="Regular;18" halign="center" valign="center"/>
+ <widget name="text4" position="10,155" size="350,25" font="Regular;18" halign="center" valign="center"/>
+ </screen>"""
+ 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 = """
+ <screen position="center,center" size="370,190" title="Aging Test - settings" >
+ <widget name="config" zPosition="2" position="10,10" size="360,180" scrollbarMode="showOnDemand" transparent="1" />
+ <ePixmap pixmap="Vu_HD/buttons/green.png" position="50,135" size="25,25" alphatest="on" />
+ <ePixmap pixmap="Vu_HD/buttons/red.png" position="215,135" size="25,25" alphatest="on" />
+ <widget source="key_red" render="Label" position="75,135" zPosition="1" size="90,25" font="Regular;20" halign="center" valign="center" transparent="1" />
+ <widget source="key_green" render="Label" position="240,135" zPosition="1" size="90,25" font="Regular;20" halign="center" valign="center" transparent="1" />
+ </screen>"""
+ 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 = """
+ <screen position="350,230" size="550,300" title="Tuning Test" >
+ <widget name="testlist" position="10,0" size="440,250" itemHeight="35"/>
+ <widget name="resultlist" position="470,0" size="60,250" itemHeight="35"/>
+ <widget source="text" render="Label" position="100,270" size="450,30" font="Regular;22" />
+ </screen>"""
+
+ 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 "<setsource> 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 "<resetsource> inputname : ",inputname
+ fd=open(inputname,"w")
+ fd.write(self.setTuner)
+ fd.close()
+ print "CI loop test end!!!!!!!!!!!!!!"
session = None