1 from Screens.Screen import Screen
2 from Screens.MessageBox import MessageBox
3 from Plugins.Plugin import PluginDescriptor
4 from Components.MenuList import MenuList
5 from Tools.Directories import fileExists
6 from Components.ServiceList import ServiceList
7 from Components.ActionMap import ActionMap,NumberActionMap
8 from Components.config import config
9 from os import system,access,F_OK,R_OK,W_OK
10 from Components.Label import Label
11 from Components.AVSwitch import AVSwitch
12 from time import sleep
13 from Components.Console import Console
14 from enigma import eTimer
15 from Components.HTMLComponent import HTMLComponent
16 from Components.GUIComponent import GUIComponent
17 from enigma import eListboxPythonStringContent, eListbox, gFont, eServiceCenter, eDVBResourceManager
18 from enigma import eServiceReference
19 from sctest import eSctest
20 from enigma import eDVBDB
21 from Components.NimManager import nimmanager
22 from enigma import eDVBCI_UI,eDVBCIInterfaces
23 from Tools.Directories import resolveFilename, SCOPE_SYSETC
24 from Components.Sources.StaticText import StaticText
26 class TestResultList(MenuList):
27 def postWidgetCreate(self, instance):
28 self.instance.setSelectionEnable(0)
29 instance.setContent(self.l)
30 instance.selectionChanged.get().append(self.selectionChanged)
31 if self.enableWrapAround:
32 self.instance.setWrapAround(True)
34 def updateList(self, list):
36 self.l.setList(self.list)
38 class TuneMessageBox(MessageBox):
40 <screen position="center,center" size="600,10" title="Message">
41 <widget name="text" position="65,8" size="420,0" font="Regular;22" />
42 <widget name="ErrorPixmap" pixmap="Vu_HD/icons/input_error.png" position="5,5" size="53,53" alphatest="blend" />
43 <widget name="QuestionPixmap" pixmap="Vu_HD/icons/input_question.png" position="5,5" size="53,53" alphatest="blend" />
44 <widget name="InfoPixmap" pixmap="Vu_HD/icons/input_info.png" position="5,5" size="53,53" alphatest="blend" />
45 <widget name="list" position="100,100" size="380,375" transparent="1" backgroundColor="darkgrey" />
46 <!-- Signal Quality -->
47 <eLabel text="SNR : " position="60,130" size="60,25" font="Regular;25" transparent="1" />
48 <widget source="session.FrontendStatus" render="Label" position="120,130" size="60,25" font="Regular;25" transparent="1">
49 <convert type="FrontendInfo">SNRdB</convert>
52 <eLabel text="AGC : " position="200,130" size="60,25" font="Regular;25" transparent="1" noWrap="1" />
53 <widget source="session.FrontendStatus" render="Label" position="260,130" size="60,25" font="Regular;25" transparent="1" noWrap="1">
54 <convert type="FrontendInfo">AGC</convert>
56 <applet type="onLayoutFinish">
57 # this should be factored out into some helper code, but currently demonstrates applets.
58 from enigma import eSize, ePoint
60 orgwidth = self.instance.size().width()
61 orgpos = self.instance.position()
62 textsize = self["text"].getSize()
64 # y size still must be fixed in font stuff...
65 textsize = (textsize[0] + 50, textsize[1] + 50)
67 if self.type == self.TYPE_YESNO:
69 wsizex = textsize[0] + 60
70 wsizey = textsize[1] + offset
75 wsize = (wsizex, wsizey)
78 self.instance.resize(eSize(*wsize))
81 self["text"].instance.resize(eSize(*textsize))
84 listsize = (wsizex, 50)
85 self["list"].instance.move(ePoint(0, textsize[1]))
86 self["list"].instance.resize(eSize(*listsize))
90 self.instance.move(ePoint(orgpos.x() + (orgwidth - newwidth)/2, orgpos.y()))
93 def __init__(self, session, text, type = MessageBox.TYPE_YESNO):
94 MessageBox.__init__(self, session, text, type)
96 class FactoryTest(Screen):
98 <screen name="FactoryTest" position="300,100" size="660,550" title="Test Menu" >
99 <widget name="testlist" position="10,0" size="440,455" itemHeight="35" />
100 <widget name="resultlist" position="470,0" size="60,455" itemHeight="35" />
101 <widget name="testdate" position="20,470" size="250,35" font="Regular;30" />
102 <widget name="testversion" position="20,505" size="250,35" font="Regular;30" />
103 <widget name="mactext" position="320,470" size="340,35" font="Regular;30" />
106 def __init__(self, session):
108 self["actions"] = NumberActionMap(["OkCancelActions","WizardActions","NumberActions","ColorActions",],
110 "left": self.nothing,
111 "right":self.nothing,
112 "ok": self.TestAction,
113 "testexit": self.keyCancel,
114 "agingstart": self.Agingmode,
116 "down": self.keydown,
117 "0": self.numberaction,
118 "1": self.numberaction,
119 "2": self.numberaction,
120 "3": self.numberaction,
121 "4": self.numberaction,
122 "5": self.numberaction,
123 "6": self.numberaction,
124 "7": self.numberaction,
125 "8": self.numberaction,
126 "9": self.numberaction,
127 "red": self.shutdownaction,
130 Screen.__init__(self, session)
131 TESTPROGRAM_DATE = self.getImageVersion() +" (v1.10)"
132 TESTPROGRAM_VERSION = "Version 01.10"
137 self["testdate"]=Label((TESTPROGRAM_DATE))
138 self["testversion"]=Label(("Loading version..."))
139 self["mactext"]=Label(("Loading mac address..."))
140 if self.model == 0 or self.model == 1:
141 nimConfig = nimmanager.getNimConfig(0)
142 nimConfig.configMode.slot_id=0
143 nimConfig.configMode.value= "simple"
144 nimConfig.diseqcMode.value="diseqc_a_b"
145 nimConfig.diseqcA.value="160"
146 nimConfig.diseqcB.value="100"
148 nimConfig = nimmanager.getNimConfig(1)
149 nimConfig.configMode.slot_id=1
150 nimConfig.configMode.value= "simple"
151 nimConfig.diseqcMode.value="diseqc_a_b"
152 nimConfig.diseqcA.value="130"
153 nimConfig.diseqcB.value="192"
156 if self.model == 3 or self.model == 4:
158 sat_list = ["160","100","130","192","620","642"]
160 nimfile = open("/proc/bus/nim_sockets")
164 self.session.openWithCallback(self.close, MessageBox, _("File not Found!\n/proc/bus/nim_sockets"), MessageBox.TYPE_ERROR)
165 for line in nimfile.readlines():
169 if line.strip().startswith("NIM Socket"):
170 parts = line.strip().split(" ")
171 current_slot = int(parts[2][:-1])
172 self.NimType[current_slot]={}
173 self.NimType[current_slot]["slot"] = current_slot
174 elif line.strip().startswith("Type:"):
175 print str(line.strip())
176 self.NimType[current_slot]["type"] = str(line.strip()[6:])
177 if self.NimType[current_slot]["type"].startswith("DVB-S"):
178 self.NimType[current_slot]["sat1"] = sat_list.pop(0)
179 self.NimType[current_slot]["sat2"] = sat_list.pop(0)
181 self.NimType[current_slot]["sat1"] = None
182 self.NimType[current_slot]["sat2"] = None
183 elif line.strip().startswith("empty"):
184 self.NimType.pop(current_slot)
187 for (key, val) in self.NimType.items():
190 if val["type"].startswith("DVB-S"):
191 print "nimConfig (dvb-s): ",key
192 nimConfig = nimmanager.getNimConfig(key)
193 nimConfig.configMode.slot_id=key
194 nimConfig.configMode.value= "simple"
195 nimConfig.diseqcMode.value="diseqc_a_b"
196 nimConfig.diseqcA.value = val["sat1"]
197 nimConfig.diseqcB.value = val["sat2"]
199 nimConfig = nimmanager.getNimConfig(key)
200 print "configMode check : ",nimConfig.configMode.value
202 nimmanager.sec.update()
204 system("cp /usr/lib/enigma2/python/Plugins/SystemPlugins/FactoryTest/testdb /etc/enigma2/lamedb")
205 db = eDVBDB.getInstance()
206 db.reloadServicelist()
210 for x in range(self.menulength-1):
211 self.rlist.append((".."))
212 self.rlist.append((" "))
213 self["resultlist"] = TestResultList(self.rlist)
215 self.avswitch = AVSwitch()
216 self.scTest= eSctest()
220 self.servicelist = ServiceList()
221 self.oldref = session.nav.getCurrentlyPlayingServiceReference()
222 print "oldref",self.oldref
223 session.nav.stopService() # try to disable foreground service
225 self.tunemsgtimer = eTimer()
226 self.tunemsgtimer.callback.append(self.tunemsg)
229 self.camtimer = eTimer()
230 self.camtimer.callback.append(self.cam_state)
236 self.tuningtimer = eTimer()
237 self.tuningtimer.callback.append(self.updateStatus)
240 self.satatimer = eTimer()
241 self.satatimer.callback.append(self.sataCheck)
243 self.usbtimer = eTimer()
244 self.usbtimer.callback.append(self.usbCheck)
246 self.agingtimer = eTimer()
247 self.agingtimer.callback.append(self.agingCheck)
250 def createConfig(self):
252 self.satetestIndex = -1
253 self.scarttestIndex = -1
256 tlist.append((" 0. Sata & extend hdd test",self.satetestIndex))
258 tlist.append((" 1. USB test",self.usbtestIndex))
259 self.fronttestIndex=2
260 tlist.append((" 2. Front test",self.fronttestIndex))
261 self.smarttestIndex=3
262 tlist.append((" 3. Smartcard test",self.smarttestIndex))
263 self.tuner1_1testIndex=4
264 tlist.append((" 4. T1/H/22K x /4:3/CVBS",self.tuner1_1testIndex))
265 self.tuner1_2testIndex=5
266 tlist.append((" 5. T1/V/22k o/16:9/RGB",self.tuner1_2testIndex))
267 self.tuner2_1testIndex=6
268 tlist.append((" 6. T2/H/22k x/4:3/YC",self.tuner2_1testIndex))
269 self.tuner2_2testIndex=7
270 tlist.append((" 7. T2/V/22k o/16:9/CVBS/CAM",self.tuner2_2testIndex))
271 self.scarttestIndex=8
272 tlist.append((" 8. VCR Scart loop",self.scarttestIndex))
273 self.rs232testIndex=9
274 tlist.append((" 9. RS232 test",self.rs232testIndex))
275 self.ethernettestIndex=10
276 tlist.append(("10. Ethernet & mac test",self.ethernettestIndex))
277 self.fdefaultIndex=11
278 tlist.append(("11. Factory default",self.fdefaultIndex))
279 self.shutdownIndex=12
280 tlist.append(("12. Shutdown(Deep Standby)",self.shutdownIndex))
281 self.tuner_test_first_index = 4
282 self.tuner_test_last_index = 7
284 elif self.model == 1:
286 tlist.append((" 0. USB test",self.usbtestIndex))
287 self.fronttestIndex=1
288 tlist.append((" 1. Front test",self.fronttestIndex))
289 self.smarttestIndex=2
290 tlist.append((" 2. Smartcard test",self.smarttestIndex))
291 self.tuner1_1testIndex=3
292 tlist.append((" 3. T1/H/22K x/4:3/CVBS",self.tuner1_1testIndex))
293 self.tuner2_2testIndex = self.tuner1_2testIndex=4
294 tlist.append((" 4. T1/V/22k o/16:9/RGB/CAM",self.tuner1_2testIndex))
295 self.rs232testIndex=5
296 tlist.append((" 5. RS232 test",self.rs232testIndex))
297 self.ethernettestIndex=6
298 tlist.append((" 6. Ethernet & mac test",self.ethernettestIndex))
300 tlist.append((" 7. Factory default",self.fdefaultIndex))
302 tlist.append((" 8. Shutdown(Deep Standby)",self.shutdownIndex))
303 self.tuner_test_first_index = 3
304 self.tuner_test_last_index = 4
306 elif self.model == 2:
308 tlist.append((" 0. Sata & extend hdd test",self.satetestIndex))
310 tlist.append((" 1. USB test",self.usbtestIndex))
311 self.fronttestIndex=2
312 tlist.append((" 2. Front test",self.fronttestIndex))
313 self.smarttestIndex=3
314 tlist.append((" 3. Smartcard test",self.smarttestIndex))
315 self.tuner1_1testIndex=4
316 tlist.append((" 4. T1 H 22K x 4:3 CVBS",self.tuner1_1testIndex))
317 self.tuner1_2testIndex=5
318 tlist.append((" 5. T1 V 22k o 16:9 RGB",self.tuner1_2testIndex))
319 self.tuner2_1testIndex = -1
320 self.tuner2_2testIndex=6
321 tlist.append((" 6. T2 DVB-C 4:3 YC CAM",self.tuner2_2testIndex))
322 self.rs232testIndex=7
323 tlist.append((" 7. RS232 test",self.rs232testIndex))
324 self.ethernettestIndex=8
325 tlist.append(("8. Ethernet & mac test",self.ethernettestIndex))
327 tlist.append(("9. Factory default",self.fdefaultIndex))
328 self.shutdownIndex=10
329 tlist.append(("10. Shutdown",self.shutdownIndex))
330 self.tuner_test_first_index = 4
331 self.tuner_test_last_index = 6
333 elif self.model == 3 or self.model == 4:
335 tlist.append((" 0. Sata & extend hdd test",self.satetestIndex))
337 tlist.append((" 1. USB test",self.usbtestIndex))
338 self.fronttestIndex=2
339 tlist.append((" 2. Front test",self.fronttestIndex))
340 self.smarttestIndex=3
341 tlist.append((" 3. Smartcard test",self.smarttestIndex))
343 self.tuner_test_first_index = current_index = 4
344 elif self.model == 4:
345 self.tuner_test_first_index = 4
347 AspectRatio=["4:3", "16:9"]
348 ColorFormat=["CVBS","RGB","YC","CVBS","CVBS","CVBS","CVBS","CVBS"]
351 for (key, val) in self.NimType.items():
352 if val["type"].startswith("DVB-S"):
353 # Chang : DVB -S setting diseqc A
354 getRatio = AspectRatio.pop(0) # ratio
355 AspectRatio.append(getRatio)
356 getColorFormat=ColorFormat.pop(0) # colorFormat
357 menuname=" %d. T%d/%s/H/22k x/%s/%s" % (current_index, key+1, val["type"], getRatio, getColorFormat) #menuname
360 self.setTuneInfo(index=current_index, slot=key, type=val["type"], sat=val["sat1"], pol="H", tone=False, ratio=getRatio, color=getColorFormat, cam=False) # setTuneInfo
361 # self.setTuneInfo(current_index, key, val["type"], val["sat1"], "H", True, getRatio, getColorFormat, False) # setTuneInfo
362 tunelist.append((menuname,current_index))
364 # Chang : DVB -S setting diseqc B
365 getRatio = AspectRatio.pop(0)
366 AspectRatio.append(getRatio)
367 getColorFormat=ColorFormat.pop(0)
368 menuname=" %d. T%d/%s/V/22k o/%s/%s" % (current_index, key+1, val["type"], getRatio, getColorFormat)
369 if len(self.NimType) == key+1: # CAM test on/off
374 self.setTuneInfo( index=current_index, slot=key, type=val["type"], sat=val["sat2"], pol="V", tone=True, ratio=getRatio, color=getColorFormat, cam=camtest)
375 tunelist.append((menuname,current_index))
377 # Chang : DVB -T or DVB-C
378 elif val["type"].startswith("DVB-T") or val["type"].startswith("DVB-C"):
379 additionalMenu = None
381 if len(self.NimType) == 1:
382 additionalMenu = True
384 for x in range(menulen):
385 getRatio = AspectRatio.pop(0)
386 AspectRatio.append(getRatio)
387 getColorFormat=ColorFormat.pop(0)
388 menuname=" %d. T%d/%s/%s/%s" % (current_index, key+1, val["type"], getRatio, getColorFormat)
389 if len(self.NimType) == key+1 and (additionalMenu is None or x != 0): # CAM test on/off
394 self.setTuneInfo( index=current_index, slot=key, type=val["type"], sat=None, pol=None, tone=None, ratio=getRatio, color=getColorFormat, cam=camtest)
395 tunelist.append((menuname,current_index))
398 tlist.extend(tunelist)
399 self.tuner_test_last_index = current_index-1
400 elif self.model == 4:
401 self.tunelist = tunelist
402 self.tuner_test_last_index = 4
403 current_index = self.tuner_test_last_index
404 tlist.append((" %d. Tuning test" % current_index,self.tuner_test_last_index))
406 self.rs232testIndex=current_index
407 tlist.append((" %d. RS232 test" % current_index,self.rs232testIndex))
409 self.ethernettestIndex=current_index
410 tlist.append((" %d. Ethernet & mac test" % current_index,self.ethernettestIndex))
412 self.fdefaultIndex=current_index
413 tlist.append((" %d. Factory default" % current_index,self.fdefaultIndex))
415 self.shutdownIndex=current_index
416 tlist.append((" %d. Shutdown(Deep Standby)" % current_index,self.shutdownIndex))
418 self.menulength= len(tlist)
419 self["testlist"] = MenuList(tlist)
421 def setTuneInfo(self,index=0,slot=0,type="DVB-S2",sat="160",pol="H",tone=True,ratio="4:3",color="CVBS",cam=False):
422 self.tuneInfo[index]={}
423 self.tuneInfo[index]["slot"]=slot
424 self.tuneInfo[index]["type"]=type
425 self.tuneInfo[index]["sat"]=sat
426 self.tuneInfo[index]["pol"]=pol
427 self.tuneInfo[index]["22k"]=tone
428 self.tuneInfo[index]["ratio"]=ratio
429 self.tuneInfo[index]["color"]=color
430 self.tuneInfo[index]["cam"]=cam
432 def getModelInfo(self):
434 if fileExists("/proc/stb/info/vumodel"):
435 vumodel = open("/proc/stb/info/vumodel")
436 info=vumodel.read().strip()
441 print "getModelInfo : duo"
445 print "getModelInfo : solo"
449 print "getModelInfo : combo"
453 print "getModelInfo : uno"
457 print "getModelInfo : ultimo"
459 if getmodel == 0 and fileExists("/proc/stb/info/version"):
460 vesion = open("/proc/stb/info/version")
465 print "getModelInfo : solo_"
466 elif info[:2] == "12":
468 print "getModelInfo : duo_"
474 print "self.menulength = ",self.menulength
475 print "self[\"testlist\"].getCurrent()[1] = ",self["testlist"].getCurrent()[1]
478 if self["testlist"].getCurrent()[1]==0:
479 self["testlist"].moveToIndex(self.menulength-1)
480 self["resultlist"].moveToIndex(self.menulength-1)
482 self["testlist"].up()
483 self["resultlist"].up()
487 print "self.menulength = ",self.menulength
488 print "self[\"testlist\"].getCurrent()[1] = ",self["testlist"].getCurrent()[1]
491 if self["testlist"].getCurrent()[1]==(self.menulength-1):
492 self["testlist"].moveToIndex(0)
493 self["resultlist"].moveToIndex(0)
495 self["testlist"].down()
496 self["resultlist"].down()
498 def numberaction(self, number):
501 if number >= self.menulength:
504 self["testlist"].moveToIndex(index)
505 self["resultlist"].moveToIndex(index)
507 def getImageVersion(self):
509 file = open(resolveFilename(SCOPE_SYSETC, 'image-version'), 'r')
510 lines = file.readlines()
512 splitted = x.split('=')
513 if splitted[0] == "version":
515 #0120 2005 11 29 01 16
516 #0123 4567 89 01 23 45
517 version = splitted[1]
519 month = version[8:10]
521 date = '-'.join((year, month, day))
526 def getversion(self):
528 fd = open("/proc/stb/info/version","r")
531 self["testversion"].setText(("Version %s"%version))
533 self["testversion"].setText(("Version no load"))
536 def getmacaddr(self):
538 if self.model == 2 or self.model == 3 or self.model == 4:
539 cmd = "nanddump -s 0x" + str((self.mactry-1)*2) + "0000 -b -o -l 64 -p /dev/mtd5"
540 elif self.model == 0 or self.model == 1:
541 cmd = "nanddump -s 0x" + str((self.mactry-1)*2) + "0000 -b -o -l 64 -p /dev/mtd4"
542 self.macConsole = Console()
543 self.macConsole.ePopen(cmd, self.readmac,self.checkReadmac)
547 def readmac(self, result, retval,extra_args=None):
548 (callback) = extra_args
549 if self.macConsole is not None:
551 self.macConsole = None
553 content =result.splitlines()
555 if x.startswith('0x000'+str((self.mactry-1)*2)+'0010:'):
559 elif len(macline) < 10:
562 mac = macline[5]+":"+macline[6]+":"+macline[7]+":"+macline[8]+":"+macline[9]+":"+macline[10]
563 self["mactext"].setText(("MAC : "+mac))
566 def checkReadmac(self,data):
568 print "block %d is bad block" % self.mactry
569 self.mactry = self.mactry + 1
571 self.session.open(MessageBox, _("FLASH IS BROKEN"), type = MessageBox.TYPE_INFO, enable_input = False)
576 print 'mac dump read error'
579 print 'mac address read ok'
582 def TestAction(self):
585 print "line - ",self["testlist"].getCurrent()[1]
586 self.currentindex = index = self["testlist"].getCurrent()[1]
588 if index==self.satetestIndex:
590 elif index==self.fronttestIndex:
592 elif index>=self.tuner_test_first_index and index<=self.tuner_test_last_index:
593 if self.model == 0 or self.model == 1 or self.model == 2 or self.model == 3:
595 elif self.model == 4:
596 self.openTestTuneMenu()
597 elif index==self.scarttestIndex:
599 elif index==self.rs232testIndex:
601 elif index==self.usbtestIndex:
603 elif index==self.ethernettestIndex:
605 elif index == self.smarttestIndex:
613 elif index==self.fdefaultIndex:
615 # elif index==self.shutdownIndex:
620 def shutdownaction(self):
621 if self["testlist"].getCurrent()[1] == self.shutdownIndex:
627 self.satatimer.start(100,True)
630 # print "try", self.satatry
631 if self.satatry == 0:
634 self.rlist[self["testlist"].getCurrent()[1]]="try %d"%self.satatry
635 self["resultlist"].updateList(self.rlist)
640 if fileExists("/autofs/sdb1"):
641 if access("/autofs/sdb1",F_OK|R_OK|W_OK):
642 dummy=open("/autofs/sdb1/dummy03","w")
643 dummy.write("complete")
645 dummy=open("/autofs/sdb1/dummy03","r")
646 if dummy.readline()=="complete":
647 print "/autofs/sdb1 - complete"
649 print "/autofs/sdb1 - readline error"
653 system("rm /autofs/sdb1/dummy03")
655 print "/autofs/sdb1 - rw access error"
659 print "/autofs/sdb1 - file not exist"
662 print "/autofs/sdb1 - exceptional error"
666 if fileExists("/autofs/sda1"):
667 if access("/autofs/sda1",F_OK|R_OK|W_OK):
668 dummy=open("/autofs/sda1/dummy03","w")
669 dummy.write("complete")
671 dummy=open("/autofs/sda1/dummy03","r")
672 if dummy.readline()=="complete":
673 print "/autofs/sda1 - complete"
675 print "/autofs/sda1 - readline error"
679 system("rm /autofs/sda1/dummy03")
681 print "/autofs/sda1 - rw access error"
685 print "/autofs/sda1 - file not exist"
688 print "/autofs/sda1 - exceptional error"
693 self.session.open( MessageBox, _("Sata & extend hdd test pass\nPress 'OK' button!"), MessageBox.TYPE_INFO)
694 self.rlist[self["testlist"].getCurrent()[1]]="pass"
697 self.session.open( MessageBox, _("One hdd test error\nPress 'EXIT' button!"), MessageBox.TYPE_ERROR)
698 self.rlist[self["testlist"].getCurrent()[1]]="fail"
700 self.satatimer.start(1100,True)
703 self.session.open( MessageBox, _("Sata & extend hdd test error\nPress 'EXIT' button!"), MessageBox.TYPE_ERROR)
704 self.rlist[self["testlist"].getCurrent()[1]]="fail"
706 self.satatimer.start(1100,True)
710 self.session.openWithCallback(self.displayresult ,FrontTest)
711 elif self.model == 1:
712 self.session.openWithCallback(self.displayresult ,FrontTest_solo)
713 elif self.model == 2 or self.model == 3:
714 self.session.openWithCallback(self.displayresult ,FrontTest_uno)
715 elif self.model == 4:
716 self.session.openWithCallback(self.displayresult ,FrontTest_ultimo)
718 def displayresult(self):
721 self.rlist[self["testlist"].getCurrent()[1]]="pass"
723 self.rlist[self["testlist"].getCurrent()[1]]="fail"
725 def openTestTuneMenu(self):
726 self.session.openWithCallback(self.TestTuneMenuResult ,TestTuneMenu, self.tuneInfo, self.tunelist, self.NimType)
728 def TestTuneMenuResult(self,result):
730 self.rlist[self["testlist"].getCurrent()[1]]="pass"
732 self.rlist[self["testlist"].getCurrent()[1]]="fail"
733 self["resultlist"].updateList(self.rlist)
735 def TestTune(self,index):
736 if self.oldref is None:
737 eref = eServiceReference("1:0:19:1324:3EF:1:C00000:0:0:0")
738 serviceHandler = eServiceCenter.getInstance()
739 servicelist = serviceHandler.list(eref)
740 if not servicelist is None:
741 ref = servicelist.getNext()
743 ref = self.getCurrentSelection() # raise error
744 print "servicelist none"
747 self.session.nav.stopService() # try to disable foreground service
748 if self.model == 0 or self.model == 1:
749 if index==self.tuner1_1testIndex:
754 ref.setData(4,0xA00000)
755 self.session.nav.playService(ref)
756 self.avswitch.setColorFormat(0)
757 self.avswitch.setAspectRatio(0)
758 elif index==self.tuner1_2testIndex:
761 self.camtimer.start(100,True)
763 ref.setData(1,0x1325)
766 ref.setData(4,0x64af79)
767 self.session.nav.playService(ref)
768 self.avswitch.setColorFormat(1)
769 self.avswitch.setAspectRatio(6)
770 elif index==self.tuner2_1testIndex:
775 ref.setData(4,0x820000)
776 self.session.nav.playService(ref)
777 self.avswitch.setColorFormat(2)
778 self.avswitch.setAspectRatio(0)
779 elif index==self.tuner2_2testIndex:
781 self.camtimer.start(100,True)
783 ref.setData(1,0x1325)
786 ref.setData(4,0xC00000)
787 self.session.nav.playService(ref)
788 self.avswitch.setColorFormat(0)
789 self.avswitch.setAspectRatio(6)
790 self.tuningtimer.start(2000,True)
791 self.tunemsgtimer.start(3000, True)
792 elif self.model == 3 or self.model == 4:
793 getTuneInfo=self.tuneInfo[index]
794 if getTuneInfo["cam"] is True:
796 self.camtimer.start(100,True)
797 if getTuneInfo["type"].startswith("DVB-S"):
798 if getTuneInfo["pol"] == "H":
805 ref.setData(1,0x1325)
808 if getTuneInfo["sat"] == "160": # Eutelsat W2
809 ref.setData(4,0xA00000)
810 elif getTuneInfo["sat"] == "100": # Eutelsat
811 ref.setData(4,0x64af79)
812 elif getTuneInfo["sat"] == "130": # Hotbird
813 ref.setData(4,0x820000)
814 elif getTuneInfo["sat"] == "192": # Astra
815 ref.setData(4,0xC00000)
816 elif getTuneInfo["sat"] == "620": # Intelsat 902
817 ref.setData(4,0x26c0000) # need to fix later
818 elif getTuneInfo["sat"] == "642": # Intelsat 906
819 ref.setData(4,0x282AF79) # need to fix later
820 elif getTuneInfo["type"].startswith("DVB-C"):
822 ref.setData(1,0x1325)
825 ref.setData(4,-64870) # ffff029a
826 elif getTuneInfo["type"].startswith("DVB-T"):
828 ref.setData(1,0x1325)
831 ref.setData(4,-286391716) # eeee025c
832 self.session.nav.playService(ref)
833 if getTuneInfo["color"]=="CVBS":
834 self.avswitch.setColorFormat(0)
835 elif getTuneInfo["color"]=="RGB":
836 self.avswitch.setColorFormat(1)
837 elif getTuneInfo["color"]=="YC":
838 self.avswitch.setColorFormat(2)
839 if getTuneInfo["ratio"] == "4:3":
840 self.avswitch.setAspectRatio(0)
841 elif getTuneInfo["ratio"] == "16:9":
842 self.avswitch.setAspectRatio(6)
843 self.tuningtimer.start(2000,True)
844 self.tunemsgtimer.start(3000, True)
847 current_index = self.currentindex
848 if self.camstep == 1:
850 state = eDVBCI_UI.getInstance().getState(slot)
851 print '-1-stat',state
854 self.camtimer.start(100,True)
856 self.session.nav.stopService()
857 self.session.open( MessageBox, _("CAM1_NOT_INSERTED\nPress exit!"), MessageBox.TYPE_ERROR)
858 self.rlist[current_index]="fail"
859 self.tunemsgtimer.stop()
860 elif self.camstep == 2:
862 appname = eDVBCI_UI.getInstance().getAppName(slot)
863 print 'appname',appname
865 self.session.nav.stopService()
866 self.session.open( MessageBox, _("NO_GET_APPNAME\nPress exit!"), MessageBox.TYPE_ERROR)
867 self.rlist[current_index]="fail"
868 self.tunemsgtimer.stop()
871 self.camtimer.start(100,True)
872 elif self.camstep==3:
874 state = eDVBCI_UI.getInstance().getState(slot)
875 print '-2-stat',state
878 self.camtimer.start(100,True)
880 self.session.nav.stopService()
881 self.session.open( MessageBox, _("CAM2_NOT_INSERTED\nPress exit!"), MessageBox.TYPE_ERROR)
882 self.rlist[current_index]="fail"
883 self.tunemsgtimer.stop()
884 elif self.camstep == 4:
886 appname = eDVBCI_UI.getInstance().getAppName(slot)
887 print 'appname',appname
889 self.session.nav.stopService()
890 self.session.open( MessageBox, _("NO_GET_APPNAME\nPress exit!"), MessageBox.TYPE_ERROR)
891 self.rlist[current_index]="fail"
892 self.tunemsgtimer.stop()
897 def updateStatus(self):
898 current_index = self.currentindex
899 if self.model == 0 or self.model == 1:
900 if current_index ==self.tuner1_1testIndex or current_index==self.tuner1_2testIndex:
902 result = eSctest.getInstance().getFrontendstatus(0)
905 result = eSctest.getInstance().getFrontendstatus(1)
906 if current_index == self.tuner1_2testIndex or current_index==self.tuner2_2testIndex:
911 elif self.model == 3 or self.model == 4:
912 getTuneInfo=self.tuneInfo[current_index]
913 result = eSctest.getInstance().getFrontendstatus(getTuneInfo["slot"])
914 tunno = getTuneInfo["slot"]+1
915 hv = getTuneInfo["pol"]
923 print "eSctest.getInstance().getFrontendstatus - %d"%result
924 if result == 0 or result == -1:
926 self.tunemsgtimer.stop()
927 self.session.nav.stopService()
928 self.avswitch.setColorFormat(0)
929 self.session.open( MessageBox, _("Tune%d %s Locking Fail..."%(tunno,hv)), MessageBox.TYPE_ERROR)
930 self.rlist[current_index]="fail"
934 def tuneback(self,yesno):
935 current_index=self.currentindex
936 self.session.nav.stopService() # try to disable foreground service
937 if yesno and self.tunerlock == 1:
938 if current_index == self.tuner_test_last_index and self.camstep < 5: # need fix to depending about CAM exist
939 self.rlist[current_index]="fail"
941 self.rlist[current_index]="pass"
943 self.rlist[current_index]="fail"
944 if self.model == 0 and current_index == 6: # YC
945 self.avswitch.setColorFormat(0)
946 elif ( self.model == 3 or self.model == 4 ) and self.tuneInfo[current_index]["color"] == "YC":
947 self.avswitch.setColorFormat(0)
949 self["resultlist"].updateList(self.rlist)
952 self.tuningtimer.stop()
953 self.session.openWithCallback(self.tuneback, TuneMessageBox, _("%s ok?" %(self["testlist"].getCurrent()[0])), MessageBox.TYPE_YESNO)
955 def setSourceVar(self):
959 elif self.model == 1:
963 self.input_pad_num=len(self.NimType)-1
964 if self.input_pad_num == 0:
966 elif self.input_pad_num == 1:
968 elif self.input_pad_num == 2:
971 # ikseong - for 22000 tp
974 inputname = ("/proc/stb/tsmux/input%d" % self.input_pad_num)
975 print "<setsource> inputname : ",inputname
976 fd=open(inputname,"w")
980 filename = ("/proc/stb/tsmux/ci0_input")
981 fd = open(filename,'w')
982 fd.write(self.setTuner)
983 print "setTuner(CI0) : ",self.setTuner
985 print "CI loop test!!!!!!!!!!!!!!"
987 def resetSource(self):
988 inputname = ("/proc/stb/tsmux/input%d" % self.input_pad_num)
989 print "<resetsource> inputname : ",inputname
990 fd=open(inputname,"w")
991 fd.write(self.setTuner)
993 print "CI loop test end!!!!!!!!!!!!!!"
996 self.avswitch.setInput("SCART")
998 self.session.openWithCallback(self.check6, MessageBox, _("Scart loop ok?"), MessageBox.TYPE_YESNO)
1000 def check6(self,yesno):
1002 self.rlist[self["testlist"].getCurrent()[1]]="pass"
1004 self.rlist[self["testlist"].getCurrent()[1]]="fail"
1005 self.avswitch.setInput("ENCODER")
1010 self.rlist[self["testlist"].getCurrent()[1]]="pass"
1012 self.rlist[self["testlist"].getCurrent()[1]]="fail"
1015 self.session.openWithCallback(self.check7,RS232Test)
1017 def Agingmode(self):
1020 if self.oldref is None:
1021 eref = eServiceReference("1:0:19:1324:3EF:1:C00000:0:0:0")
1022 serviceHandler = eServiceCenter.getInstance()
1023 servicelist = serviceHandler.list(eref)
1024 if not servicelist is None:
1025 ref = servicelist.getNext()
1027 ref = self.getCurrentSelection()
1028 print "servicelist none"
1031 self.session.nav.stopService() # try to disable foreground service
1032 if self.model == 0 or self.model == 1 or self.NimType[0]["type"].startswith("DVB-S"):
1034 ref.setData(1,0x1325)
1035 ref.setData(2,0x3ef)
1037 ref.setData(4,0x64af79)
1038 elif self.NimType[0]["type"].startswith("DVB-C"):
1040 ref.setData(1,0x1325)
1041 ref.setData(2,0x3ef)
1043 ref.setData(4,-64870) # ffff029a
1044 elif self.NimType[0]["type"].startswith("DVB-T"):
1046 ref.setData(1,0x1325)
1047 ref.setData(2,0x3ef)
1049 ref.setData(4,-286391716) # eeee025c
1050 self.session.nav.playService(ref)
1051 self.avswitch.setColorFormat(0)
1052 self.avswitch.setAspectRatio(0)
1053 self.agingtimer.start(2000,True)
1055 def agingCheck(self):
1056 result = eSctest.getInstance().getFrontendstatus(0)
1058 print "eSctest.getInstance().getFrontendstatus - %d"%result
1060 self.session.nav.stopService()
1061 self.session.open( MessageBox, _("Tune 1 Ver Locking Fail..."), MessageBox.TYPE_ERROR)
1063 self.session.openWithCallback(self.agingResult,AgingTest)
1065 self.session.nav.stopService()
1066 self.session.open( MessageBox, _("Tune 1 Ver Error %d..."%result), MessageBox.TYPE_ERROR)
1068 def agingResult(self):
1070 if(Agingresult ==1):
1071 self["testlist"].moveToIndex(self.fdefaultIndex)
1073 self["testlist"].moveToIndex(self.shutdownIndex)
1077 self.usbtimer.start(100,True)
1080 if self.usbtry == 0:
1083 self.rlist[self["testlist"].getCurrent()[1]]="try %d"%self.usbtry
1084 self["resultlist"].updateList(self.rlist)
1088 if self.model==0 or self.model==3 or self.model==4:
1089 devices = [ "/autofs/sdc1", "/autofs/sdd1", "/autofs/sde1" ]
1091 devices = [ "/autofs/sda1", "/autofs/sdb1" ]
1093 devices = [ "/autofs/sdc1", "/autofs/sdd1" ]
1095 self.session.open( MessageBox, _("invalid model"), MessageBox.TYPE_ERROR)
1096 self.rlist[self["testlist"].getCurrent()[1]]="fail"
1104 if access(dev,F_OK|R_OK|W_OK):
1105 dummy=open(dev+"/dummy03","w")
1106 dummy.write("complete")
1108 dummy=open(dev+"/dummy03","r")
1109 if dummy.readline()=="complete":
1110 print dev," - complete"
1112 print dev," - readline error"
1116 system("rm "+dev+"/dummy03")
1118 print dev," - rw access error"
1122 print dev," - file not exist"
1125 print dev," - exceptional error"
1131 elif result == len(devices):
1132 self.session.open( MessageBox, _("USB test pass %d devices\nPress 'OK' button!"%result), MessageBox.TYPE_INFO)
1133 self.rlist[self["testlist"].getCurrent()[1]]="pass"
1135 if displayerror == 1:
1136 self.session.open( MessageBox, _("USB test error : Success-%d"%result+" Fail-%d\nPress 'EXIT' button!"%(len(devices)-result)), MessageBox.TYPE_ERROR)
1137 self.rlist[self["testlist"].getCurrent()[1]]="fail"
1139 self.usbtimer.start(1100,True)
1143 # system("/etc/init.d/networking stop")
1144 system("ifconfig eth0 192.168.0.10")
1145 # system("/etc/init.d/networking start")
1146 cmd1 = "ping -c 1 192.168.0.100"
1147 self.PingConsole = Console()
1148 self.PingConsole.ePopen(cmd1, self.checkNetworkStateFinished,self.NetworkStatedataAvail)
1150 def checkNetworkStateFinished(self, result, retval,extra_args):
1151 (statecallback) = extra_args
1152 if self.PingConsole is not None:
1154 self.PingConsole = None
1155 content = result.splitlines()
1156 # print 'content',content
1157 x = content[4].split()
1167 def NetworkStatedataAvail(self,data):
1172 self.session.openWithCallback(self.openMacConfig ,MessageBox, _("Ping test pass"), MessageBox.TYPE_INFO,2)
1177 self.session.open( MessageBox, _("Ping test fail\nPress exit"), MessageBox.TYPE_ERROR)
1183 def openMacConfig(self, ret=False):
1184 self.session.openWithCallback(self.macresult ,MacConfig,mactry=self.mactry)
1186 def macresult(self):
1189 self.rlist[self.ethernettestIndex]="pass"
1191 self.rlist[self.ethernettestIndex]="fail"
1195 # def MemTest(self, which):
1199 # result = eMemtest.getInstance().dramtest()
1201 # result = eMemtest.getInstance().flashtest()
1204 # result = eMemtest.getInstance().dramtest()
1205 # result = eMemtest.getInstance().flashtest()
1211 # print index,self.rlist[index]
1212 # self.rlist[index]="pass"
1214 # print index,self.rlist[index]
1215 # self.rlist[index]="fail"
1216 # self["resultlist"].updateList(self.rlist)
1218 def scciresult(self):
1219 global smartcardtest
1220 if smartcardtest == 1:
1221 self.rlist[self["testlist"].getCurrent()[1]]="pass"
1223 self.rlist[self["testlist"].getCurrent()[1]]="fail"
1226 self.session.openWithCallback(self.scciresult ,SmartCardTest,stbmodel=self.model)
1240 system("rm -R /etc/enigma2")
1242 system("cp -R /usr/share/enigma2/defaults /etc/enigma2")
1243 self.rlist[self["testlist"].getCurrent()[1]]="pass"
1244 self["resultlist"].updateList(self.rlist)
1246 print "test14 except"
1247 self.rlist[self["testlist"].getCurrent()[1]]="fail"
1248 self["resultlist"].updateList(self.rlist)
1249 self.session.open( MessageBox, _("Factory reset fail"), MessageBox.TYPE_ERROR)
1252 self.session.openWithCallback(self.shutdown ,MessageBox, _("Do you want to shut down?"), MessageBox.TYPE_YESNO)
1254 def shutdown(self, yesno):
1256 from os import _exit
1257 system("/usr/bin/showiframe /boot/backdrop.mvi")
1262 def keyCancel(self):
1267 # if self.oldref is not None:
1268 # self.session.nav.playService(self.oldref)
1271 class MacConfig(Screen):
1273 <screen name="MacConfig" position="center,center" size="520,100" title="Mac Config" >
1274 <eLabel text="Mac Address " position="10,15" size="200,40" font="Regular;30" />
1275 <widget name="text" position="230,15" size="230,40" font="Regular;30" halign="right"/>
1276 <widget name="text1" position="470,15" size="40,40" font="Regular;30" />
1277 <eLabel text=" " position="5,55" zPosition="-1" size="510,5" backgroundColor="#02e1e8e6" />
1278 <widget name="stattext" position="30,75" size="450,35" font="Regular;30" />
1281 def __init__(self, session, mactry = 1):
1282 self["actions"] = ActionMap(["DirectionActions","OkCancelActions"],
1285 "left": self.keyleft,
1286 "right": self.keyright,
1287 "cancel": self.keyCancel,
1290 Screen.__init__(self, session)
1292 self.mactry = mactry
1296 self.macaddr = "000000000000"
1297 self.ReadMacinfo = 0
1298 self["text"]=Label((self.macaddr))
1299 self["text1"]= Label(("< >"))
1300 self["stattext"]= Label((""))
1307 def getModelInfo(self):
1309 if fileExists("/proc/stb/info/vumodel"):
1310 vumodel = open("/proc/stb/info/vumodel")
1311 info=vumodel.read().strip()
1316 print "MacConfig, model : combo"
1317 elif info == "solo":
1320 print "MacConfig, model : solo"
1324 print "MacConfig, model : duo"
1328 print "getModelInfo : uno"
1329 elif info == "ultimo":
1332 print "getModelInfo : ultimo"
1334 if getmodel == 0 and fileExists("/proc/stb/info/version"):
1335 version = open("/proc/stb/info/version")
1338 # print info,info[:2]
1339 if info[:2] == "14":
1341 print "MacConfig, model : solo_"
1342 elif info[:2] == "12":
1344 print "MacConfig, model: duo_"
1346 def loadmacaddr(self):
1350 if self.model==0 or self.model==3 or self.model==4 :
1351 devices = ["/autofs/sdb1", "/autofs/sdc1", "/autofs/sdd1", "/autofs/sde1" ]
1353 devices = [ "/autofs/sda1", "/autofs/sdb1" ]
1355 devices = [ "/autofs/sdb1", "/autofs/sdc1", "/autofs/sdd1" ]
1359 if fileExists(dev+"/macinfo.txt"):
1360 print "<open>"+dev+"/macinfo.txt"
1361 self.macfd = open(dev+"/macinfo.txt","r+")
1365 self["text"].setText(("cannot read usb!!"))
1366 self["text1"].setText((" "))
1367 self["stattext"].setText((" Press Exit Key."))
1371 macaddr=self.macfd.readline().split(":")
1372 self.macaddr=macaddr[1]+macaddr[2]+macaddr[3]+macaddr[4]+macaddr[5]+macaddr[6]
1374 self.ReadMacinfo = 1
1376 self["text"].setText(("cannot read usb!!"))
1377 self["text1"].setText((" "))
1378 self["stattext"].setText((" Press Exit Key."))
1381 def getmacaddr(self):
1382 if self.ReadMacinfo==0:
1385 if self.model == 2 or self.model == 3 or self.model == 4:
1386 cmd = "nanddump -s 0x" + str((self.mactry-1)*2) + "0000 -b -o -l 64 -p /dev/mtd5"
1387 elif self.model == 0 or self.model == 1:
1388 cmd = "nanddump -s 0x" + str((self.mactry-1)*2) + "0000 -b -o -l 64 -p /dev/mtd4"
1389 self.macConsole = Console()
1390 self.macConsole.ePopen(cmd, self.readmac,self.checkReadmac)
1394 def readmac(self, result, retval,extra_args=None):
1395 (callback) = extra_args
1396 if self.macConsole is not None:
1398 self.macConsole = None
1400 content =result.splitlines()
1402 if x.startswith('0x000'+str((self.mactry-1)*2)+'0010:'):
1406 elif len(macline) < 10:
1409 mac = macline[5]+":"+macline[6]+":"+macline[7]+":"+macline[8]+":"+macline[9]+":"+macline[10]
1410 self["stattext"].setText(("now : "+mac))
1413 def checkReadmac(self,data):
1415 print "block %d is bad block" % self.mactry
1416 self.mactry = self.mactry + 1
1418 self.session.open(MessageBox, _("FLASH IS BROKEN"), type = MessageBox.TYPE_INFO, enable_input = False)
1423 print 'mac dump read error'
1426 print 'mac address read ok'
1431 if self.ReadMacinfo==0 :
1433 macaddress = long(self.macaddr,16)-1
1435 macaddress = 0xffffffffffff
1436 self.macaddr = "%012x"%macaddress
1440 if self.ReadMacinfo==0 :
1442 macaddress = long(self.macaddr,16)+1
1443 if macaddress > 0xffffffffffff:
1445 self.macaddr = "%012x"%macaddress
1448 def displaymac(self):
1449 macaddr= self.macaddr
1450 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))))
1453 if self.ReadMacinfo==0 :
1456 macaddr = self.macaddr
1457 #make_mac_sector 00-99-99-99-00-00 > /tmp/mac.sector
1458 #flash_eraseall /dev/mtd4
1459 #nandwrite /dev/mtd4 /tmp/mac.sector -p
1460 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))
1462 if self.model == 2 or self.model == 3 or self.model == 4:
1463 system("flash_eraseall /dev/mtd5")
1464 system("nandwrite /dev/mtd5 /tmp/mac.sector -p")
1465 elif self.model == 0 or self.model ==1 :
1466 system("flash_eraseall /dev/mtd4")
1467 system("nandwrite /dev/mtd4 /tmp/mac.sector -p")
1468 macaddress = long(macaddr,16)+1
1469 if macaddress > 0xffffffffffff:
1471 macaddr = "%012x"%macaddress
1472 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))
1474 self.macfd.write(macwritetext)
1477 self.macaddr = macaddr
1480 self.session.open( MessageBox, _("Mac address fail"), MessageBox.TYPE_ERROR)
1485 def keyCancel(self):
1493 class SmartCardTest(Screen):
1495 <screen name="SmartCardTest" position="center,center" size="300,120" title="SmartCard Test" >
1496 <widget name="text" position="10,10" size="280,100" font="Regular;30" />
1499 def __init__(self, session, stbmodel = 0):
1500 self["actions"] = ActionMap(["DirectionActions", "OkCancelActions"],
1502 "cancel": self.keyCancel,
1506 Screen.__init__(self, session)
1507 self["text"]=Label(("Testing Smartcard 1..."))
1509 self.smartcardtimer = eTimer()
1510 self.smartcardtimer.callback.append(self.check_smart_card)
1511 self.closetimer = eTimer()
1512 self.closetimer.callback.append(self.close)
1514 global smartcardtest
1516 self.model = stbmodel
1517 self.smartcardtimer.start(100,True)
1519 def check_smart_card(self):
1520 global smartcardtest
1521 index = self.smartcard
1524 result = eSctest.getInstance().check_smart_card("/dev/sci0")
1526 result = eSctest.getInstance().check_smart_card("/dev/sci1")
1530 print "check smartcard : ", result
1534 if(index== 0 and ( self.model== 0 or self.model==2 or self.model == 3 or self.model == 4) ):
1536 self["text"].setText(_("Testing Smartcard 2..."))
1537 self.smartcardtimer.start(100,True)
1539 elif (index==1 or self.model==1):
1542 self["text"].setText(_("Smart Card OK!!"))
1543 self.closetimer.start(2000,True)
1544 self.smartcardtimer.stop()
1547 self["text"].setText(_("Smart Card model type error"))
1548 self.closetimer.start(2000,True)
1549 self.smartcardtimer.stop()
1552 # self.session.open( MessageBox, _("%d:NO_DEV_FOUND"%(index+1)), MessageBox.TYPE_ERROR)
1553 # elif result == -2:
1554 # self.session.open( MessageBox, _("%d:SC_NOT_INSERTED"%(index+1)), MessageBox.TYPE_ERROR)
1555 # elif result == -3:
1556 # self.session.open( MessageBox, _("%d:SC_NOT_VALID_ATR"%(index+1)), MessageBox.TYPE_ERROR)
1557 # elif result == -5:
1558 # self.session.open( MessageBox, _("%d:SC_READ_TIMEOUT"%(index+1)), MessageBox.TYPE_ERROR)
1560 self["text"].setText(_("Smart Card 1 Error!\nerrorcode=%d"%result))
1562 self["text"].setText(_("Smart Card 2 Error!\nerrorcode=%d"%result))
1563 self.closetimer.start(2000,True)
1564 self.smartcardtimer.stop()
1567 def keyCancel(self):
1571 if self.testok == 1:
1578 class FrontTest(Screen):
1580 <screen name="FrontTest" position="center,center" size="300,180" title="Front Test" >
1581 <widget name="text" position="10,10" size="280,160" font="Regular;30" />
1584 def __init__(self, session):
1585 self["actions"] = ActionMap(["DirectionActions", "OkCancelActions"],
1589 "down":self.keyDown,
1590 "cancel": self.keyCancel,
1593 Screen.__init__(self, session)
1594 self["text"]=Label(("Wheel LEFT"))
1597 self.fronttimer= eTimer()
1598 self.fronttimer.callback.append(self.FrontAnimate)
1599 self.frontturnonoff = 0
1600 eSctest.getInstance().VFD_Open()
1601 self.keytimeout = eTimer()
1602 self.keytimeout.callback.append(self.KeyTimeOut)
1603 self.keytimeout.start(5000,True)
1605 def KeyTimeOut(self):
1607 self["text"].setText(("Wheel LEFT ERROR"))
1608 elif self.step ==2 :
1609 self["text"].setText(("Wheel RIGHT ERROR"))
1610 elif self.step == 3:
1611 self["text"].setText(("Wheel BUTTON ERROR"))
1615 def keyCancel(self):
1617 self.fronttimer.stop()
1618 eSctest.getInstance().VFD_Close()
1627 self.keytimeout.stop()
1628 self.keytimeout.start(5000,True)
1630 self["text"].setText(_("Press Front Wheel"))
1634 self.keytimeout.stop()
1635 self.keytimeout.start(5000,True)
1637 self["text"].setText(_("Wheel RIGHT"))
1641 self.keytimeout.stop()
1643 self.fronttimer.start(1000,True)
1644 self["text"].setText(("Front Test OK!\nPress Exit Key"))
1645 # elif self.step==4:
1647 # self.fronttimer.stop()
1648 # eSctest.getInstance().VFD_Close()
1652 def FrontAnimate(self):
1653 if (self.frontturnonoff==0):
1654 eSctest.getInstance().turnon_VFD()
1655 self.frontturnonoff = 1
1657 self.frontturnonoff = 0
1658 eSctest.getInstance().turnoff_VFD()
1659 self.fronttimer.start(1000,True)
1662 class FrontTest_solo(Screen):
1664 <screen name="FrontTest_solo" position="center,center" size="300,180" title="Front Test" >
1665 <widget name="text" position="10,10" size="280,160" font="Regular;30" />
1668 def __init__(self, session):
1669 self["actions"] = ActionMap(["DirectionActions", "OkCancelActions","GlobalActions"],
1672 "cancel": self.keyCancel,
1673 "left": self.keyleft,
1674 "right": self.keyright,
1675 "power_down": self.keypower,
1676 "volumeUp": self.keyvolup,
1677 "volumeDown": self.keyvoldown,
1680 Screen.__init__(self, session)
1681 self["text"]=Label(("Press Front STANDBY"))
1684 self.fronttimer= eTimer()
1685 self.fronttimer.callback.append(self.FrontAnimate)
1686 self.frontturnonoff = 0
1687 eSctest.getInstance().VFD_Open()
1688 self.keytimeout = eTimer()
1689 self.keytimeout.callback.append(self.KeyTimeOut)
1690 self.keytimeout.start(5000,True)
1692 def KeyTimeOut(self):
1694 self["text"].setText(("Front STANDBY ERROR\nPress exit!"))
1695 elif self.step == 2 :
1696 self["text"].setText(("Front CH - ERROR\nPress exit!"))
1697 elif self.step == 3:
1698 self["text"].setText(("Front CH + ERROR\nPress exit!"))
1699 elif self.step == 4 :
1700 self["text"].setText(("Front VOL - ERROR\nPress exit!"))
1701 elif self.step == 5:
1702 self["text"].setText(("Front VOL + ERROR\nPress exit!"))
1709 self.keytimeout.stop()
1710 self.keytimeout.start(5000,True)
1712 self["text"].setText(_("Press Front CH -"))
1716 self.keytimeout.stop()
1717 self.keytimeout.start(5000,True)
1719 self["text"].setText(_("Press Front VOL -"))
1723 self.keytimeout.stop()
1724 self.keytimeout.start(5000,True)
1726 self["text"].setText(_("Press Front CH +"))
1730 self.keytimeout.stop()
1732 self.fronttimer.start(1000,True)
1733 self["text"].setText(_("Front LED OK?\n\nyes-ok\nno-exit"))
1734 # self["text"].setText(("Front Test OK!\nPress Exit Key"))
1736 def keyvoldown(self):
1738 self.keytimeout.stop()
1739 self.keytimeout.start(5000,True)
1741 self["text"].setText(_("Press Front VOL +"))
1743 def checkled(self, yesno):
1750 def keyCancel(self):
1752 self.fronttimer.stop()
1753 eSctest.getInstance().VFD_Close()
1761 self.fronttimer.stop()
1762 eSctest.getInstance().VFD_Close()
1765 def FrontAnimate(self):
1766 if (self.frontturnonoff==0):
1767 eSctest.getInstance().turnon_VFD()
1768 self.frontturnonoff = 1
1770 self.frontturnonoff = 0
1771 eSctest.getInstance().turnoff_VFD()
1772 self.fronttimer.start(1000,True)
1774 class FrontTest_uno(Screen):
1776 <screen name="FrontTest_uno" position="center,center" size="300,180" title="Front Test" >
1777 <widget name="text" position="10,10" size="280,160" font="Regular;30" />
1780 def __init__(self, session):
1781 self["actions"] = ActionMap(["DirectionActions", "OkCancelActions","GlobalActions"],
1784 "cancel": self.keyCancel,
1785 "left": self.keyleft,
1786 "right": self.keyright,
1787 "volumeUp": self.keyvolup,
1788 "volumeDown": self.keyvoldown,
1789 "power_down": self.keypower,
1792 Screen.__init__(self, session)
1793 self["text"]=Label(("Press Front CH -"))
1795 self.fronttimer= eTimer()
1796 self.fronttimer.callback.append(self.FrontAnimate)
1797 self.frontturnonoff = 0
1798 eSctest.getInstance().VFD_Open()
1799 self.keytimeout = eTimer()
1800 self.keytimeout.callback.append(self.KeyTimeOut)
1801 self.keytimeout.start(5000,True)
1803 def KeyTimeOut(self):
1805 self["text"].setText(("Front CH - ERROR\nPress exit!"))
1806 elif self.step == 2:
1807 self["text"].setText(("Front CH + ERROR\nPress exit!"))
1808 elif self.step == 3 :
1809 self["text"].setText(("Front VOL - ERROR\nPress exit!"))
1810 elif self.step == 4:
1811 self["text"].setText(("Front VOL + ERROR\nPress exit!"))
1812 elif self.step == 5:
1813 self["text"].setText(("Front STANDBY ERROR\nPress exit!"))
1818 self.keytimeout.stop()
1819 self.keytimeout.start(5000,True)
1821 self["text"].setText(_("Press Front CH +"))
1824 self.keytimeout.stop()
1825 self.keytimeout.start(5000,True)
1827 self["text"].setText(_("Press Front VOL -"))
1829 def keyvoldown(self):
1831 self.keytimeout.stop()
1832 self.keytimeout.start(5000,True)
1834 self["text"].setText(_("Press Front VOL +"))
1838 self.keytimeout.stop()
1839 self.keytimeout.start(5000,True)
1841 self["text"].setText(_("Press Front STANDBY"))
1845 self.keytimeout.stop()
1847 self.fronttimer.start(1000,True)
1848 self["text"].setText(_("Front LED OK?\n\nyes-ok\nno-exit"))
1850 def keyCancel(self):
1852 self.fronttimer.stop()
1853 eSctest.getInstance().VFD_Close()
1861 self.fronttimer.stop()
1862 eSctest.getInstance().VFD_Close()
1865 def FrontAnimate(self):
1866 if (self.frontturnonoff==0):
1867 eSctest.getInstance().turnon_VFD()
1868 self.frontturnonoff = 1
1870 self.frontturnonoff = 0
1871 eSctest.getInstance().turnoff_VFD()
1872 self.fronttimer.start(1000,True)
1874 class FrontTest_ultimo(FrontTest_solo):
1876 <screen position="center,center" size="300,180" title="Front Test" >
1877 <widget name="text" position="10,10" size="280,160" font="Regular;30" />
1884 class RS232Test(Screen):
1886 <screen name="RS232Test" position="center,center" size="260,100" title="RS232 Test" >
1887 <widget name="text" position="10,10" size="240,80" font="Regular;30" />
1890 def __init__(self, session):
1891 self["actions"] = ActionMap(["DirectionActions", "OkCancelActions"],
1893 "cancel": self.keyCancel,
1896 Screen.__init__(self, session)
1897 self["text"]=Label(("Press \"Enter\" Key"))
1898 self.timer = eTimer()
1899 self.timer.callback.append(self.checkrs232)
1900 self.timer.start(100, True)
1902 def checkrs232(self):
1905 rs=open('/dev/ttyS0','r')
1907 r,w,e = select.select(rd, [], [], 10)
1923 print 'except error'
1926 self.session.open( MessageBox, _("RS232 Test Failed!\nPress 'EXIT' button!"), MessageBox.TYPE_ERROR)
1929 def keyCancel(self):
1934 class AgingTest(Screen):
1936 <screen position="center,center" size="350,150" title="Aging Test" >
1937 <widget name="text1" position="10,10" size="330,40" font="Regular;30" />
1938 <widget name="text2" position="10,60" size="330,40" font="Regular;30" />
1939 <!-- Signal Quality -->
1940 <eLabel text="SNR : " position="40,120" size="60,25" font="Regular;25" transparent="1" />
1941 <widget source="session.FrontendStatus" render="Label" position="100,120" size="60,25" font="Regular;25" transparent="1">
1942 <convert type="FrontendInfo">SNRdB</convert>
1945 <eLabel text="AGC : " position="180,120" size="60,25" font="Regular;25" transparent="1" noWrap="1" />
1946 <widget source="session.FrontendStatus" render="Label" position="240,120" size="60,25" font="Regular;25" transparent="1" noWrap="1">
1947 <convert type="FrontendInfo">AGC</convert>
1951 def __init__(self, session):
1952 self["actions"] = ActionMap(["MediaPlayerActions","GlobalActions"],
1954 "pause": self.keyEnd,
1955 "stop": self.keyFinish,
1956 "volumeUp": self.nothing,
1957 "volumeDown": self.nothing,
1958 "volumeMute": self.nothing,
1961 Screen.__init__(self, session)
1962 self["text1"]=Label(("Exit - Press Pause Key"))
1963 self["text2"]=Label(("Reset - Press Stop Key"))
1964 # self.servicelist = ServiceList()
1965 # self.oldref = session.nav.getCurrentlyPlayingServiceReference()
1966 # print "oldref",self.oldref
1967 # session.nav.stopService() # try to disable foreground service
1970 self.tuningtimer = eTimer()
1971 self.tuningtimer.callback.append(self.updateStatus)
1972 # self.tuningtimer.start(200,True)
1975 def updateStatus(self):
1976 result = eSctest.getInstance().getFrontendstatus(0)
1979 print "eSctest.getInstance().getFrontendstatus - %d"%result
1982 self.session.nav.stopService()
1983 self.session.open( MessageBox, _("Tune 1 Ver Locking Fail..."), MessageBox.TYPE_ERROR)
1988 self.session.nav.stopService()
1989 self.session.open( MessageBox, _("Tune 1 Ver Error %d..."%result), MessageBox.TYPE_ERROR)
1996 if self.oldref is None:
1997 eref = eServiceReference("1:0:19:1324:3EF:1:C00000:0:0:0")
1998 serviceHandler = eServiceCenter.getInstance()
1999 servicelist = serviceHandler.list(eref)
2000 if not servicelist is None:
2001 ref = servicelist.getNext()
2003 ref = self.getCurrentSelection()
2004 print "servicelist none"
2007 self.session.nav.stopService() # try to disable foreground service
2012 ref.setData(4,0x640000)
2013 self.session.nav.playService(ref)
2018 self.session.nav.stopService() # try to disable foreground service
2021 def keyFinish(self):
2024 self.session.nav.stopService() # try to disable foreground service
2027 class TestTuneMenu(Screen):
2029 <screen position="350,230" size="550,300" title="Tuning Test" >
2030 <widget name="testlist" position="10,0" size="440,250" itemHeight="35"/>
2031 <widget name="resultlist" position="470,0" size="60,250" itemHeight="35"/>
2032 <widget source="text" render="Label" position="100,270" size="450,30" font="Regular;22" />
2035 def __init__(self ,session ,tuneInfo, tunelist,NimType):
2036 self.session = session
2037 self.NimType = NimType
2038 self.tuneInfo = tuneInfo
2039 self.tunelist = tunelist
2041 self["actions"] = NumberActionMap(["OkCancelActions","WizardActions","NumberActions"],
2043 "left": self.nothing,
2044 "right":self.nothing,
2045 "ok": self.TestAction,
2046 "cancel": self.keyCancel,
2048 "down": self.keydown,
2049 "0": self.numberaction,
2050 "1": self.numberaction,
2051 "2": self.numberaction,
2052 "3": self.numberaction,
2053 "4": self.numberaction,
2054 "5": self.numberaction,
2055 "6": self.numberaction,
2056 "7": self.numberaction,
2057 "8": self.numberaction,
2058 "9": self.numberaction,
2061 Screen.__init__(self, session)
2062 self.text = _("Press 'EXIT' key to finish tune test.")
2063 self["text"] = StaticText(self.text)
2065 session.nav.stopService() # try to disable foreground service
2067 self.tunemsgtimer = eTimer()
2068 self.tunemsgtimer.callback.append(self.tunemsg)
2071 self.camtimer = eTimer()
2072 self.camtimer.callback.append(self.cam_state)
2075 self.tuningtimer = eTimer()
2076 self.tuningtimer.callback.append(self.updateStatus)
2078 self.avswitch = AVSwitch()
2080 def createConfig(self):
2081 self.menulength= len(self.tunelist)
2082 self["testlist"] = MenuList(self.tunelist)
2084 for x in range(self.menulength):
2085 self.rlist.append((".."))
2086 self["resultlist"] = TestResultList(self.rlist)
2088 def TestAction(self):
2089 print "line - ",self["testlist"].getCurrent()[1]
2090 self.currentindex = index = self["testlist"].getCurrent()[1]
2092 self.TestTune(index)
2098 print "self.menulength = ",self.menulength
2099 print "self[\"testlist\"].getCurrent()[1] = ",self["testlist"].getCurrent()[1]
2100 if self["testlist"].getCurrent()[1]==0:
2101 self["testlist"].moveToIndex(self.menulength-1)
2102 self["resultlist"].moveToIndex(self.menulength-1)
2104 self["testlist"].up()
2105 self["resultlist"].up()
2109 print "self.menulength = ",self.menulength
2110 print "self[\"testlist\"].getCurrent()[1] = ",self["testlist"].getCurrent()[1]
2111 if self["testlist"].getCurrent()[1]==(self.menulength-1):
2112 self["testlist"].moveToIndex(0)
2113 self["resultlist"].moveToIndex(0)
2115 self["testlist"].down()
2116 self["resultlist"].down()
2118 def numberaction(self, number):
2119 if number >= self.menulength:
2122 self["testlist"].moveToIndex(index)
2123 self["resultlist"].moveToIndex(index)
2125 def keyCancel(self):
2126 print "testtunemenu exit"
2127 if not '..' in self.rlist and not 'fail' in self.rlist:
2131 # if self.oldref is not None:
2132 # self.session.nav.playService(self.oldref)
2134 def TestTune(self,index):
2135 ref = eServiceReference("1:0:19:1324:3EF:1:C00000:0:0:0")
2136 self.session.nav.stopService() # try to disable foreground service
2137 getTuneInfo=self.tuneInfo[index]
2138 if getTuneInfo["cam"] is True:
2140 self.camtimer.start(100,True)
2141 if getTuneInfo["type"].startswith("DVB-S"):
2142 if getTuneInfo["pol"] == "H":
2144 ref.setData(1,0x6D3)
2149 ref.setData(1,0x1325)
2150 ref.setData(2,0x3ef)
2152 if getTuneInfo["sat"] == "160": # Eutelsat W2
2153 ref.setData(4,0xA00000)
2154 elif getTuneInfo["sat"] == "100": # Eutelsat
2155 ref.setData(4,0x64af79)
2156 elif getTuneInfo["sat"] == "130": # Hotbird
2157 ref.setData(4,0x820000)
2158 elif getTuneInfo["sat"] == "192": # Astra
2159 ref.setData(4,0xC00000)
2160 elif getTuneInfo["sat"] == "620": # Intelsat 902
2161 ref.setData(4,0x26c0000) # need to fix later
2162 elif getTuneInfo["sat"] == "642": # Intelsat 906
2163 ref.setData(4,0x282AF79) # need to fix later
2164 elif getTuneInfo["type"].startswith("DVB-C"):
2166 ref.setData(1,0x1325)
2167 ref.setData(2,0x3ef)
2169 ref.setData(4,-64870) # ffff029a
2170 elif getTuneInfo["type"].startswith("DVB-T"):
2172 ref.setData(1,0x1325)
2173 ref.setData(2,0x3ef)
2175 ref.setData(4,-286391716) # eeee025c
2176 self.session.nav.playService(ref)
2177 if getTuneInfo["color"]=="CVBS":
2178 self.avswitch.setColorFormat(0)
2179 elif getTuneInfo["color"]=="RGB":
2180 self.avswitch.setColorFormat(1)
2181 elif getTuneInfo["color"]=="YC":
2182 self.avswitch.setColorFormat(2)
2183 if getTuneInfo["ratio"] == "4:3":
2184 self.avswitch.setAspectRatio(0)
2185 elif getTuneInfo["ratio"] == "16:9":
2186 self.avswitch.setAspectRatio(6)
2187 self.tuningtimer.start(2000,True)
2188 self.tunemsgtimer.start(3000, True)
2190 def cam_state(self):
2191 current_index = self.currentindex
2192 if self.camstep == 1:
2194 state = eDVBCI_UI.getInstance().getState(slot)
2195 print '-1-stat',state
2198 self.camtimer.start(100,True)
2200 self.session.nav.stopService()
2201 self.session.open( MessageBox, _("CAM1_NOT_INSERTED\nPress exit!"), MessageBox.TYPE_ERROR)
2202 self.rlist[current_index]="fail"
2203 self.tunemsgtimer.stop()
2204 elif self.camstep == 2:
2206 appname = eDVBCI_UI.getInstance().getAppName(slot)
2207 print 'appname',appname
2209 self.session.nav.stopService()
2210 self.session.open( MessageBox, _("NO_GET_APPNAME\nPress exit!"), MessageBox.TYPE_ERROR)
2211 self.rlist[current_index]="fail"
2212 self.tunemsgtimer.stop()
2215 self.camtimer.start(100,True)
2216 elif self.camstep==3:
2218 state = eDVBCI_UI.getInstance().getState(slot)
2219 print '-2-stat',state
2222 self.camtimer.start(100,True)
2224 self.session.nav.stopService()
2225 self.session.open( MessageBox, _("CAM2_NOT_INSERTED\nPress exit!"), MessageBox.TYPE_ERROR)
2226 self.rlist[current_index]="fail"
2227 self.tunemsgtimer.stop()
2228 elif self.camstep == 4:
2230 appname = eDVBCI_UI.getInstance().getAppName(slot)
2231 print 'appname',appname
2233 self.session.nav.stopService()
2234 self.session.open( MessageBox, _("NO_GET_APPNAME\nPress exit!"), MessageBox.TYPE_ERROR)
2235 self.rlist[current_index]="fail"
2236 self.tunemsgtimer.stop()
2241 def updateStatus(self):
2242 current_index = self.currentindex
2243 getTuneInfo=self.tuneInfo[current_index]
2244 result = eSctest.getInstance().getFrontendstatus(getTuneInfo["slot"])
2245 tunno = getTuneInfo["slot"]+1
2246 hv = getTuneInfo["pol"]
2254 print "eSctest.getInstance().getFrontendstatus - %d"%result
2255 if result == 0 or result == -1:
2257 self.tunemsgtimer.stop()
2258 self.session.nav.stopService()
2259 self.avswitch.setColorFormat(0)
2260 self.session.open( MessageBox, _("Tune%d %s Locking Fail..."%(tunno,hv)), MessageBox.TYPE_ERROR)
2261 self.rlist[current_index]="fail"
2265 def tuneback(self,yesno):
2266 current_index=self.currentindex
2267 self.session.nav.stopService() # try to disable foreground service
2268 if yesno and self.tunerlock == 1:
2269 getTuneInfo=self.tuneInfo[current_index]
2270 if getTuneInfo["cam"] and self.camstep < 5: # need fix to depending about CAM exist
2271 self.rlist[current_index]="fail"
2273 self.rlist[current_index]="pass"
2275 self.rlist[current_index]="fail"
2276 if self.tuneInfo[current_index]["color"] == "YC":
2277 self.avswitch.setColorFormat(0)
2279 self["resultlist"].updateList(self.rlist)
2282 self.tuningtimer.stop()
2283 self.session.openWithCallback(self.tuneback, TuneMessageBox, _("%s ok?" %(self["testlist"].getCurrent()[0])), MessageBox.TYPE_YESNO)
2285 def setSourceVar(self):
2286 self.input_pad_num=len(self.NimType)-1
2287 if self.input_pad_num == 0:
2289 elif self.input_pad_num == 1:
2291 elif self.input_pad_num == 2:
2294 # ikseong - for 22000 tp
2295 def setSource(self):
2297 inputname = ("/proc/stb/tsmux/input%d" % self.input_pad_num)
2298 print "<setsource> inputname : ",inputname
2299 fd=open(inputname,"w")
2302 # fix ci_input Tuner
2303 filename = ("/proc/stb/tsmux/ci0_input")
2304 fd = open(filename,'w')
2305 fd.write(self.setTuner)
2306 print "setTuner(CI0) : ",self.setTuner
2308 print "CI loop test!!!!!!!!!!!!!!"
2310 def resetSource(self):
2311 inputname = ("/proc/stb/tsmux/input%d" % self.input_pad_num)
2312 print "<resetsource> inputname : ",inputname
2313 fd=open(inputname,"w")
2314 fd.write(self.setTuner)
2316 print "CI loop test end!!!!!!!!!!!!!!"
2327 def main(session, servicelist, **kwargs):
2331 Servicelist = servicelist
2332 bouquets = Servicelist.getBouquetList()
2334 bouquetSel = Session.openWithCallback(cleanup, FactoryTest)
2336 #def Plugins(**kwargs):
2337 # return PluginDescriptor(name=_("Factory Test"), description="Test App for Factory", where = PluginDescriptor.WHERE_EXTENSIONSMENU, fnc=main)
2339 def Plugins(**kwargs):