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 enigma import eMemtest
20 from enigma import eSctest
21 from enigma import eDVBDB
22 from Components.NimManager import nimmanager
23 from enigma import eDVBCI_UI,eDVBCIInterfaces
25 class TestResultList(HTMLComponent, GUIComponent):
26 def __init__(self, source):
27 GUIComponent.__init__(self)
28 self.l = eListboxPythonStringContent()
30 self.l.setList(self.list)
34 def postWidgetCreate(self, instance):
35 self.instance.setSelectionEnable(0)
36 self.instance.setContent(self.l)
38 def updateList(self,list):
41 class FactoryTest(Screen):
43 <screen position="120,125" size="440,400" title="Test Menu" >
44 <widget name="testlist" position="10,0" size="340,350" />
45 <widget name="resultlist" position="370,0" size="60,350" />
46 <widget name="testdate" position="20,350" size="150,25" font="Regular;22" />
47 <widget name="testversion" position="20,375" size="150,25" font="Regular;22" />
48 <widget name="mactext" position="180,350" size="230,25" font="Regular;22" />
50 def __init__(self, session):
52 self["actions"] = NumberActionMap(["OkCancelActions","WizardActions","NumberActions","ColorActions"],
56 "ok": self.TestAction,
57 "testexit": self.keyCancel,
58 "agingstart": self.Agingmode,
61 "0": self.numberaction,
62 "1": self.numberaction,
63 "2": self.numberaction,
64 "3": self.numberaction,
65 "4": self.numberaction,
66 "5": self.numberaction,
67 "6": self.numberaction,
68 "7": self.numberaction,
69 "8": self.numberaction,
70 "9": self.numberaction,
71 "red": self.shutdownaction,
74 Screen.__init__(self, session)
75 TESTPROGRAM_DATE = "2010-03-22"
76 TESTPROGRAM_VERSION = "Version 00.01"
81 self["testdate"]=Label((TESTPROGRAM_DATE))
82 self["testversion"]=Label(("Loading version..."))
83 self["mactext"]=Label(("Loading mac address..."))
84 nimConfig = nimmanager.getNimConfig(0)
85 nimConfig.configMode.slot_id=0
86 nimConfig.configMode.value= "simple"
87 nimConfig.diseqcMode.value="diseqc_a_b"
88 nimConfig.diseqcA.value="160"
89 nimConfig.diseqcB.value="100"
91 nimConfig = nimmanager.getNimConfig(1)
92 nimConfig.configMode.slot_id=1
93 nimConfig.configMode.value= "simple"
94 nimConfig.diseqcMode.value="diseqc_a_b"
95 nimConfig.diseqcA.value="130"
96 nimConfig.diseqcB.value="192"
97 nimmanager.sec.update()
99 system("cp /usr/lib/enigma2/python/Plugins/SystemPlugins/FactoryTest/testdb /etc/enigma2/lamedb")
100 db = eDVBDB.getInstance()
101 db.reloadServicelist()
106 tlist.append((" 0. Sata & extend hdd test",self.satetestIndex))
108 tlist.append((" 1. USB test",self.usbtestIndex))
109 self.fronttestIndex=2
110 tlist.append((" 2. Front test",self.fronttestIndex))
111 self.smarttestIndex=3
112 tlist.append((" 3. Smartcard test",self.smarttestIndex))
113 self.tuner1_1testIndex=4
114 tlist.append((" 4. T1 H 22K x 4:3 CVBS",self.tuner1_1testIndex))
115 self.tuner1_2testIndex=5
116 tlist.append((" 5. T1 V 22k o 16:9 RGB",self.tuner1_2testIndex))
117 self.tuner2_1testIndex=6
118 tlist.append((" 6. T2 H 22k x 4:3 YC",self.tuner2_1testIndex))
119 self.tuner2_2testIndex=7
120 tlist.append((" 7. T2 V 22k o 16:9 CVBS CAM",self.tuner2_2testIndex))
121 self.scarttestIndex=8
122 tlist.append((" 8. VCR Scart loop",self.scarttestIndex))
123 self.rs232testIndex=9
124 tlist.append((" 9. RS232 test",self.rs232testIndex))
125 self.ethernettestIndex=10
126 tlist.append(("10. Ethernet & mac test",self.ethernettestIndex))
127 # tlist.append(("11. DRAM test",11))
128 # tlist.append(("12. Flash test",12))
129 # tlist.append(("13. DRAM+Flash test",13))
130 self.fdefaultIndex=11
131 tlist.append(("11. Factory default",self.fdefaultIndex))
132 self.shutdownIndex=12
133 tlist.append(("12. Shutdown",self.shutdownIndex))
134 elif self.model == 1:
135 # tlist.append((" 0. Sata & extend hdd test",self.satetestIndex=0))
136 self.satetestIndex = -1
137 self.scarttestIndex = -1
142 tlist.append((" 0. USB test",self.usbtestIndex))
143 self.fronttestIndex=1
144 tlist.append((" 1. Front test",self.fronttestIndex))
145 self.smarttestIndex=2
146 tlist.append((" 2. Smartcard test",self.smarttestIndex))
147 self.tuner1_1testIndex=3
148 tlist.append((" 3. T1 H 22K x 4:3 CVBS",self.tuner1_1testIndex))
149 self.tuner1_2testIndex=4
150 tlist.append((" 4. T1 V 22k o 16:9 RGB CAM",self.tuner1_2testIndex))
151 self.tuner2_2testIndex=4
152 # tlist.append((" 6. T2 H 22k x 4:3 YC",self.tuner2_1testIndex=6))
153 # tlist.append((" 7. T2 V 22k o 16:9 CVBS CAM",self.tuner2_2testIndex=7))
154 # tlist.append((" 8. VCR Scart loop",self.scarttestIndex=8))
155 self.rs232testIndex=5
156 tlist.append((" 5. RS232 test",self.rs232testIndex))
157 self.ethernettestIndex=6
158 tlist.append((" 6. Ethernet & mac test",self.ethernettestIndex))
159 # tlist.append(("11. DRAM test",11))
160 # tlist.append(("12. Flash test",12))
161 # tlist.append(("13. DRAM+Flash test",13))
163 tlist.append((" 7. Factory default",self.fdefaultIndex))
165 tlist.append((" 8. Shutdown",self.shutdownIndex))
166 self.menulength= len(tlist)-1
167 self["testlist"] = MenuList(tlist)
169 # for x in range(15):
170 # for x in range(12):
171 for x in range(self.menulength):
172 self.rlist.append((".."))
173 self["resultlist"] = TestResultList(self.rlist)
174 self.NetworkState = 0
177 self.avswitch = AVSwitch()
178 self.memTest = eMemtest()
179 self.scTest= eSctest()
185 self.servicelist = ServiceList()
186 self.oldref = session.nav.getCurrentlyPlayingServiceReference()
187 print "oldref",self.oldref
188 session.nav.stopService() # try to disable foreground service
190 self.tunemsgtimer = eTimer()
191 self.tunemsgtimer.callback.append(self.tunemsg)
194 self.camtimer = eTimer()
195 self.camtimer.callback.append(self.cam_state)
200 self.tuningtimer = eTimer()
201 self.tuningtimer.callback.append(self.updateStatus)
204 self.satatimer = eTimer()
205 self.satatimer.callback.append(self.sataCheck)
207 def getModelInfo(self):
208 info = open("/proc/stb/info/version").read()
212 elif info[:2] == "12":
222 if self["testlist"].getCurrent()[1]==0:
223 self["testlist"].moveToIndex(self.menulength)
225 self["testlist"].up()
231 if self["testlist"].getCurrent()[1]==(self.menulength):
232 self["testlist"].moveToIndex(0)
234 self["testlist"].down()
236 def numberaction(self, number):
240 self["testlist"].moveToIndex(index)
243 def updateStatus(self):
244 index = self["testlist"].getCurrent()[1]
245 if index ==self.tuner1_1testIndex or index==self.tuner1_2testIndex:
247 result = eSctest.getInstance().getFrontendstatus(0)
250 result = eSctest.getInstance().getFrontendstatus(1)
252 if self.agingmode == 1:
254 result = eSctest.getInstance().getFrontendstatus(0)
257 if index == self.tuner1_2testIndex or index==self.tuner2_2testIndex:
262 print "eSctest.getInstance().getFrontendstatus - %d"%result
265 self.tunemsgtimer.stop()
266 self.session.nav.stopService()
267 self.session.open( MessageBox, _("Tune%d %s Locking Fail..."%(tunno,hv)), MessageBox.TYPE_ERROR)
268 if self.agingmode==0:
269 self.rlist[self["testlist"].getCurrent()[1]]="fail"
273 if self.agingmode==1:
274 self.session.openWithCallback(self.checkaging,AgingTest)
276 def getversion(self):
278 fd = open("/proc/stb/info/version","r")
280 self["testversion"].setText(("Version %s"%version))
282 self["testversion"].setText(("Version no load"))
285 def readmac(self, result, retval,extra_args=None):
286 (statecallback) = extra_args
287 if self.macConsole is not None:
289 self.macConsole = None
290 content =result.split()
291 self["mactext"].setText(("MAC : "+content[10]))
293 def getmacaddr(self):
296 self.macConsole = Console()
297 self.macConsole.ePopen(cmd, self.readmac)
298 # self["stattext"].setText((macaddr))
302 def TestAction(self):
304 # tlist.append((" 0. Sata & extend hdd test",self.satetestIndex=0))
305 # tlist.append((" 1. USB test",self.usbtestIndex=1))
306 # tlist.append((" 2. Front test",self.fronttestIndex=2))
307 # tlist.append((" 3. Smartcard test",self.smarttestIndex=3))
308 # tlist.append((" 4. T1 H 22K x 4:3 CVBS",self.tuner1_1testIndex=4))
309 # tlist.append((" 5. T1 V 22k o 16:9 RGB",self.tuner1_2testIndex=5))
310 # tlist.append((" 6. T2 H 22k x 4:3 YC",self.tuner2_1testIndex=6))
311 # tlist.append((" 7. T2 V 22k o 16:9 CVBS CAM",self.tuner2_2testIndex=7))
312 # tlist.append((" 8. VCR Scart loop",self.scarttestIndex=8))
313 # tlist.append((" 9. RS232 test",self.rs232testIndex=9))
314 # tlist.append(("10. Ethernet & mac test",self.ethernettestIndex=10))
315 # tlist.append(("11. DRAM test",11))
316 # tlist.append(("12. Flash test",12))
317 # tlist.append(("13. DRAM+Flash test",13))
318 # tlist.append(("11. Factory default",self.fdefaultIndex=11))
319 # tlist.append(("12. Shutdown",self.shutdownIndex=12))
323 print "line - ",self["testlist"].getCurrent()[1]
324 index = self["testlist"].getCurrent()[1]
326 if index==self.satetestIndex:
328 elif index==self.fronttestIndex:
330 elif index>=self.tuner1_1testIndex and index<=self.tuner2_2testIndex:
332 elif index==self.scarttestIndex:
334 elif index==self.rs232testIndex:
336 elif index==self.usbtestIndex:
338 elif index==self.ethernettestIndex:
340 elif index == self.smarttestIndex:
348 elif index==self.fdefaultIndex:
350 # elif index==self.shutdownIndex:
353 def shutdownaction(self):
354 if self["testlist"].getCurrent()[1] == self.shutdownIndex:
360 self.satatimer.start(100,True)
363 # print "try", self.satatry
364 if self.satatry == 0:
367 self.rlist[self["testlist"].getCurrent()[1]]="try %d"%self.satatry
368 self["resultlist"].updateList(self.rlist)
374 mtab = open('/etc/mtab','r')
376 disk = mtab.readline().split(' ')
379 if disk[1].startswith('/media/hdd'):
381 elif disk[1].startswith('/media/sdb1'):
390 self.session.open( MessageBox, _("Sata & extend hdd test error"), MessageBox.TYPE_ERROR)
391 self.rlist[self["testlist"].getCurrent()[1]]="fail"
393 self.satatimer.start(1100,True)
397 self.session.open( MessageBox, _("one hdd test error"), MessageBox.TYPE_ERROR)
398 self.rlist[self["testlist"].getCurrent()[1]]="fail"
400 self.satatimer.start(1100,True)
404 if fileExists("/media/sdb1"):
405 if access("/media/sdb1",F_OK|R_OK|W_OK):
406 dummy=open("/media/sdb1/dummy03","w")
407 dummy.write("complete")
409 dummy=open("/media/sdb1/dummy03","r")
410 if dummy.readline()=="complete":
415 system("rm /media/sdb1/dummy03")
423 if fileExists("/media/hdd"):
424 if access("/media/hdd",F_OK|R_OK|W_OK):
425 dummy=open("/media/hdd/dummy03","w")
426 dummy.write("complete")
428 dummy=open("/media/hdd/dummy03","r")
429 if dummy.readline()=="complete":
434 system("rm /media/hdd/dummy03")
443 self.session.open( MessageBox, _("Sata & extend hdd test pass"), MessageBox.TYPE_INFO)
444 self.rlist[self["testlist"].getCurrent()[1]]="pass"
447 self.session.open( MessageBox, _("one hdd test error"), MessageBox.TYPE_ERROR)
448 self.rlist[self["testlist"].getCurrent()[1]]="fail"
449 self.satatimer.start(1100,True)
452 self.session.open( MessageBox, _("Sata & extend hdd test error"), MessageBox.TYPE_ERROR)
453 self.rlist[self["testlist"].getCurrent()[1]]="fail"
454 self.satatimer.start(1100,True)
458 self.session.openWithCallback(self.displayresult ,FrontTest)
459 elif self.model == 1:
460 self.session.openWithCallback(self.displayresult ,FrontTest_solo)
462 def displayresult(self):
465 self.rlist[self["testlist"].getCurrent()[1]]="pass"
467 self.rlist[self["testlist"].getCurrent()[1]]="fail"
469 INTERNAL_PID_STATUS_NOOP = 0
470 INTERNAL_PID_STATUS_WAITING = 1
471 INTERNAL_PID_STATUS_SUCCESSFUL = 2
472 INTERNAL_PID_STATUS_FAILED = 3
474 def TestTune(self,index):
475 if self.oldref is None:
476 eref = eServiceReference("1:0:19:1324:3EF:1:C00000:0:0:0")
477 serviceHandler = eServiceCenter.getInstance()
478 servicelist = serviceHandler.list(eref)
479 if not servicelist is None:
480 ref = servicelist.getNext()
482 ref = self.getCurrentSelection()
483 print "servicelist none"
486 self.session.nav.stopService() # try to disable foreground service
487 if index==self.tuner1_1testIndex:
492 ref.setData(4,0xA00000)
493 self.session.nav.playService(ref)
494 self.avswitch.setColorFormat(0)
495 self.avswitch.setAspectRatio(0)
496 elif index==self.tuner1_2testIndex:
499 self.camtimer.start(100,True)
501 ref.setData(1,0x1325)
504 ref.setData(4,0x64af79)
505 # ref.setData(0,0x19)
506 # ref.setData(1,0x83)
508 # ref.setData(3,0x85)
509 # ref.setData(4,0x640000)
510 self.session.nav.playService(ref)
511 self.avswitch.setColorFormat(1)
512 self.avswitch.setAspectRatio(6)
513 elif index==self.tuner2_1testIndex:
515 # self.camtimer.start(100,True)
520 ref.setData(4,0x820000)
521 self.session.nav.playService(ref)
522 self.avswitch.setColorFormat(2)
523 self.avswitch.setAspectRatio(0)
524 elif index==self.tuner2_2testIndex:
526 self.camtimer.start(100,True)
527 # ref.setData(0,0x19)
528 # ref.setData(1,0x83)
530 # ref.setData(3,0x85)
531 # ref.setData(4,0xC00000)
532 # ikseong - for 22000 tp ( /home/ikseong/share/lamedb_ORF)
534 ref.setData(1,0x1325)
537 ref.setData(4,0xC00000)
538 self.session.nav.playService(ref)
539 self.avswitch.setColorFormat(0)
540 self.avswitch.setAspectRatio(6)
541 self.tuningtimer.start(2000,True)
542 self.tunemsgtimer.start(3000, True)
545 if self.camstep == 1:
547 state = eDVBCI_UI.getInstance().getState(slot)
548 print '-1-stat',state
551 self.camtimer.start(100,True)
553 self.session.nav.stopService()
554 self.session.open( MessageBox, _("NO_CAM1_NOT_INSERTED"), MessageBox.TYPE_ERROR)
555 self.rlist[self["testlist"].getCurrent()[1]]="fail"
556 self.tunemsgtimer.stop()
557 # self.rlist[index]="fail"
558 # self["resultlist"].updateList(self.rlist)
559 elif self.camstep == 2:
561 appname = eDVBCI_UI.getInstance().getAppName(slot)
562 print 'appname',appname
564 self.session.nav.stopService()
565 self.session.open( MessageBox, _("NO_GET_APPNAME"), MessageBox.TYPE_ERROR)
566 self.rlist[self["testlist"].getCurrent()[1]]="fail"
567 self.tunemsgtimer.stop()
570 self.camtimer.start(100,True)
571 elif self.camstep==3:
573 state = eDVBCI_UI.getInstance().getState(slot)
574 print '-2-stat',state
577 self.camtimer.start(100,True)
579 self.session.nav.stopService()
580 self.session.open( MessageBox, _("NO_CAM2_NOT_INSERTED"), MessageBox.TYPE_ERROR)
581 self.rlist[self["testlist"].getCurrent()[1]]="fail"
582 self.tunemsgtimer.stop()
583 # self.rlist[index]="fail"
584 # self["resultlist"].updateList(self.rlist)
585 elif self.camstep == 4:
587 appname = eDVBCI_UI.getInstance().getAppName(slot)
588 print 'appname',appname
590 self.session.nav.stopService()
591 self.session.open( MessageBox, _("NO_GET_APPNAME"), MessageBox.TYPE_ERROR)
592 self.rlist[self["testlist"].getCurrent()[1]]="fail"
593 self.tunemsgtimer.stop()
597 # self.session.open( MessageBox, _("CAM OK!"), MessageBox.TYPE_INFO,2)
599 # ikseong - for 22000 tp
601 filename = ("/proc/stb/tsmux/ci0_input")
602 fd = open(filename,'w')
606 # filename = ("/proc/stb/tsmux/ci1_input")
607 # fd = open(filename,'w')
610 fd=open("/proc/stb/tsmux/input1","w")
611 # fd=open("/proc/stb/tsmux/input0","w")
614 print "CI loop test!!!!!!!!!!!!!!"
616 def resetSource(self):
617 fd=open("/proc/stb/tsmux/input1","w")
620 print "CI loop test end!!!!!!!!!!!!!!"
623 self.tuningtimer.stop()
624 self.session.openWithCallback(self.tuneback, MessageBox, _("%s ok?" %(self["testlist"].getCurrent()[0])), MessageBox.TYPE_YESNO)
626 def tuneback(self,yesno):
627 self.session.nav.stopService() # try to disable foreground service
629 self.rlist[self["testlist"].getCurrent()[1]]="pass"
630 if self.tunerlock == 0:
631 self.rlist[self["testlist"].getCurrent()[1]]="fail"
632 elif self["testlist"].getCurrent()[1] == 7 and self.camstep < 5:
633 self.rlist[self["testlist"].getCurrent()[1]]="fail"
635 self.rlist[self["testlist"].getCurrent()[1]]="fail"
636 if self["testlist"].getCurrent()[1] == 6:
637 self.avswitch.setColorFormat(0)
639 self["resultlist"].updateList(self.rlist)
642 self.avswitch.setInput("SCART")
644 self.session.openWithCallback(self.check6, MessageBox, _("Scart loop ok?"), MessageBox.TYPE_YESNO)
646 def check6(self,yesno):
648 self.rlist[self["testlist"].getCurrent()[1]]="pass"
650 self.rlist[self["testlist"].getCurrent()[1]]="fail"
651 self.avswitch.setInput("ENCODER")
656 self.rlist[self["testlist"].getCurrent()[1]]="pass"
658 self.rlist[self["testlist"].getCurrent()[1]]="fail"
661 self.session.openWithCallback(self.check7,RS232Test)
666 if self.oldref is None:
667 eref = eServiceReference("1:0:19:1324:3EF:1:C00000:0:0:0")
668 serviceHandler = eServiceCenter.getInstance()
669 servicelist = serviceHandler.list(eref)
670 if not servicelist is None:
671 ref = servicelist.getNext()
673 ref = self.getCurrentSelection()
674 print "servicelist none"
677 self.session.nav.stopService() # try to disable foreground service
679 ref.setData(1,0x1325)
682 ref.setData(4,0x64af79)
684 # ref.setData(1,0x6D3)
686 # ref.setData(3,0xA4)
687 # ref.setData(4,0xA00000)
688 self.session.nav.playService(ref)
689 self.avswitch.setColorFormat(0)
690 self.avswitch.setAspectRatio(0)
691 self.tuningtimer.start(2000,True)
694 def checkaging(self):
697 self["testlist"].moveToIndex(11)
699 self["testlist"].moveToIndex(12)
701 # self["testlist"].instance.moveSelection(self["testlist"].instance.moveDown)
709 mtab = open('/etc/mtab','r')
711 disk = mtab.readline().split(' ')
714 if disk[1].startswith('/media/hdd'):
716 elif disk[1].startswith('/media/sdb1'):
718 elif disk[1].startswith('/media/sd'):
724 self.session.open( MessageBox, _("USB test pass %d devices"%result), MessageBox.TYPE_INFO)
725 self.rlist[self["testlist"].getCurrent()[1]]="pass"
727 self.session.open( MessageBox, _("USB test error : Success-%d"%result+" Fail-%d"%(3-result)), MessageBox.TYPE_ERROR)
728 self.rlist[self["testlist"].getCurrent()[1]]="fail"
733 self.session.open( MessageBox, _("USB test pass %d devices"%result), MessageBox.TYPE_INFO)
734 self.rlist[self["testlist"].getCurrent()[1]]="pass"
736 self.session.open( MessageBox, _("USB test error : Success-%d"%result+" Fail-%d"%(3-result)), MessageBox.TYPE_ERROR)
737 self.rlist[self["testlist"].getCurrent()[1]]="fail"
741 mtab = open('/etc/mtab','r')
743 disk = mtab.readline().split(' ')
746 if disk[1].startswith('/media/'):
752 self.session.open( MessageBox, _("USB test pass %d devices"%result), MessageBox.TYPE_INFO)
753 self.rlist[self["testlist"].getCurrent()[1]]="pass"
755 self.session.open( MessageBox, _("USB test error : Success-%d"%result+" Fail-%d"%(2-result)), MessageBox.TYPE_ERROR)
756 self.rlist[self["testlist"].getCurrent()[1]]="fail"
761 self.session.open( MessageBox, _("USB test pass %d devices"%result), MessageBox.TYPE_INFO)
762 self.rlist[self["testlist"].getCurrent()[1]]="pass"
764 self.session.open( MessageBox, _("USB test error : Success-%d"%result+" Fail-%d"%(2-result)), MessageBox.TYPE_ERROR)
765 self.rlist[self["testlist"].getCurrent()[1]]="fail"
770 # system("/etc/init.d/networking stop")
771 system("ifconfig eth0 192.168.0.10")
772 # system("/etc/init.d/networking start")
773 cmd1 = "ping -c 1 192.168.0.100"
774 self.PingConsole = Console()
775 self.PingConsole.ePopen(cmd1, self.checkNetworkStateFinished,self.NetworkStatedataAvail)
777 def checkNetworkStateFinished(self, result, retval,extra_args):
778 (statecallback) = extra_args
779 if self.PingConsole is not None:
781 self.PingConsole = None
782 content = result.splitlines()
783 # print 'content',content
784 x = content[4].split()
794 def NetworkStatedataAvail(self,data):
799 # self.session.open( MessageBox, _("Ping test pass"), MessageBox.TYPE_INFO,2)
800 self.session.openWithCallback(self.openMacConfig ,MessageBox, _("Ping test pass"), MessageBox.TYPE_INFO,2)
805 self.session.open( MessageBox, _("Ping test fail"), MessageBox.TYPE_ERROR)
811 def openMacConfig(self, ret=False):
812 self.session.openWithCallback(self.macresult ,MacConfig)
817 self.rlist[self.ethernettestIndex]="pass"
818 # self.rlist[self["testlist"].getCurrent()[1]]="pass"
820 self.rlist[self.ethernettestIndex]="fail"
821 # self.rlist[self["testlist"].getCurrent()[1]]="fail"
825 def MemTest(self, which):
829 result = eMemtest.getInstance().dramtest()
831 result = eMemtest.getInstance().flashtest()
834 result = eMemtest.getInstance().dramtest()
835 result = eMemtest.getInstance().flashtest()
841 print index,self.rlist[index]
842 self.rlist[index]="pass"
844 print index,self.rlist[index]
845 self.rlist[index]="fail"
846 self["resultlist"].updateList(self.rlist)
848 def scciresult(self):
850 if smartcardtest == 1:
851 self.rlist[self["testlist"].getCurrent()[1]]="pass"
853 self.rlist[self["testlist"].getCurrent()[1]]="fail"
856 self.session.openWithCallback(self.scciresult ,SmartCardTest)
870 system("rm -R /etc/enigma2")
871 system("cp -R /usr/share/enigma2/defaults /etc/enigma2")
872 self.rlist[self["testlist"].getCurrent()[1]]="pass"
873 self["resultlist"].updateList(self.rlist)
875 self.rlist[self["testlist"].getCurrent()[1]]="fail"
876 self["resultlist"].updateList(self.rlist)
877 self.session.open( MessageBox, _("Factory reset fail"), MessageBox.TYPE_ERROR)
880 self.session.openWithCallback(self.shutdown ,MessageBox, _("Do you want to shut down?"), MessageBox.TYPE_YESNO)
882 def shutdown(self, yesno):
885 system("/usr/bin/showiframe /boot/backdrop.mvi")
897 class MacConfig(Screen):
899 <screen position="100,250" size="520,100" title="Mac Config" >
900 <eLabel text="Mac Address " position="10,15" size="200,40" font="Regular;30" />
901 <widget name="text" position="230,15" size="230,40" font="Regular;30" />
902 <widget name="text1" position="470,15" size="40,40" font="Regular;30" />
903 <eLabel text=" " position="5,55" zPosition="-1" size="510,5" backgroundColor="#02e1e8e6" />
904 <widget name="stattext" position="30,75" size="400,25" font="Regular;20" />
907 def __init__(self, session):
908 self["actions"] = ActionMap(["DirectionActions","OkCancelActions"],
911 "left": self.keyleft,
912 "right": self.keyright,
913 "cancel": self.keyCancel,
916 Screen.__init__(self, session)
920 self.macaddr = "000000000000"
921 self.NetworkState = 0
922 self["text"]=Label((self.macaddr))
923 self["text1"]= Label(("< >"))
924 self["stattext"]= Label((""))
933 def loadmacaddr(self):
937 mtab = open('/etc/mtab','r')
939 disk = mtab.readline().split(' ')
942 if disk[1].startswith('/media/sd') or disk[1].startswith('/media/hdd'):
943 print 'try..',disk[1]
944 if fileExists(disk[1]+"/Vuplus_mac.txt"):
945 self.macfd = open(disk[1]+"/Vuplus_mac.txt","r+")
948 self["text"].setText(("cannot read usb!!"))
949 self["text1"].setText((" "))
950 self["stattext"].setText((" Press Exit Key."))
954 macaddr=self.macfd.readline().split(":")
955 self.macaddr=macaddr[1]+macaddr[2]+macaddr[3]+macaddr[4]+macaddr[5]+macaddr[6]
957 self.NetworkState = 1
959 self["text"].setText(("cannot read usb!!"))
960 self["text1"].setText((" "))
961 self["stattext"].setText((" Press Exit Key."))
963 # self.session.open( MessageBox, _("Mac address fail"), MessageBox.TYPE_ERROR)
965 def readmac(self, result, retval,extra_args=None):
966 (statecallback) = extra_args
967 if self.macConsole is not None:
969 self.macConsole = None
970 content =result.split()
971 self["stattext"].setText(("now : "+content[10]))
973 def getmacaddr(self):
974 if self.NetworkState==0:
978 self.macConsole = Console()
979 self.macConsole.ePopen(cmd, self.readmac)
980 # self["stattext"].setText((macaddr))
985 if self.NetworkState==0 or self.pingok<1:
987 macaddress = long(self.macaddr,16)-1
989 macaddress = 0xffffffffffff
990 self.macaddr = "%012x"%macaddress
994 if self.NetworkState==0 or self.pingok<1:
996 macaddress = long(self.macaddr,16)+1
997 if macaddress > 0xffffffffffff:
999 self.macaddr = "%012x"%macaddress
1002 def displaymac(self):
1003 macaddr= self.macaddr
1004 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))))
1007 if self.NetworkState==0 or self.pingok<1:
1010 system("/etc/init.d/networking stop")
1011 system("ifconfig eth0 down")
1012 macaddr = self.macaddr
1013 macaddrcmd="ifconfig eth0 hw ether %02x:%02x:%02x:%02x:%02x:%02x"%(int(macaddr[0:2],16),int(macaddr[2:4],16),int(macaddr[4:6],16),int(macaddr[6:8],16),int(macaddr[8:10],16),int(macaddr[10:12],16))
1015 #make_mac_sector 00-99-99-99-00-00 > /tmp/mac.sector
1016 #flash_eraseall /dev/mtd4
1017 #nandwrite /dev/mtd4 /tmp/mac.sector -p
1018 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))
1020 system("flash_eraseall /dev/mtd4")
1021 system("nandwrite /dev/mtd4 /tmp/mac.sector -p")
1022 macaddress = long(macaddr,16)+1
1023 if macaddress > 0xffffffffffff:
1025 macaddr = "%012x"%macaddress
1026 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))
1028 self.macfd.write(macwritetext)
1029 self.macaddr = macaddr
1030 system("ifconfig eth0 up")
1032 system("ifconfig eth0 192.168.0.10")
1033 system("/etc/init.d/networking start")
1036 self.session.open( MessageBox, _("Mac address fail"), MessageBox.TYPE_ERROR)
1042 self["stattext"].setText(("now : wait to finish ping test..."))
1043 # system("/etc/init.d/networking stop")
1044 system("ifconfig eth0 192.168.0.10")
1045 # system("/etc/init.d/networking start")
1046 cmd1 = "ping -c 1 192.168.0.100"
1047 self.PingConsole = Console()
1048 self.PingConsole.ePopen(cmd1, self.checkNetworkStateFinished,self.NetworkStatedataAvail)
1050 def checkNetworkStateFinished(self, result, retval,extra_args):
1051 (statecallback) = extra_args
1052 if self.PingConsole is not None:
1054 self.PingConsole = None
1055 content = result.splitlines()
1056 # print 'content',content
1057 x = content[4].split()
1067 def NetworkStatedataAvail(self,data):
1075 self.session.open( MessageBox, _("Ping test pass"), MessageBox.TYPE_INFO,2)
1080 self["stattext"].setText(("ping test fail.. press Exit Key"))
1081 self.session.open( MessageBox, _("Ping test fail"), MessageBox.TYPE_ERROR,2)
1085 def keyCancel(self):
1086 if self.pingok == -1:
1098 class ScCiTest(Screen):
1100 <screen position="120,225" size="440,200" title="CI Smartcard Test" >
1101 <widget name="testlist" position="10,0" size="340,120" />
1102 <widget name="resultlist" position="370,0" size="60,120" />
1103 <eLabel text=" " position="5,125" zPosition="-1" size="430,5" backgroundColor="#02e1e8e6" />
1104 <widget name="text" position="10,140" size="420,50" font="Regular;25" />
1107 def __init__(self, session):
1108 self["actions"] = ActionMap(["DirectionActions","OkCancelActions"],
1113 "cancel": self.keyCancel,
1116 Screen.__init__(self, session)
1118 tlist.append(("Smartcard 1 Test",0))
1119 tlist.append(("Smartcard 2 Test",1))
1120 tlist.append(("CI 1 Test",2))
1121 tlist.append(("CI 2 Test",3))
1122 self["testlist"] = MenuList(tlist)
1125 self.rlist.append((".."))
1126 self["resultlist"] = TestResultList(self.rlist)
1128 self.removecard = eTimer()
1129 self.removecard.callback.append(self.remove_card)
1130 self["text"]=Label(("Press OK Key"))
1131 self.camstate= eTimer()
1132 self.camstate.callback.append(self.cam_state)
1136 def keyCancel(self):
1138 print "result ", self.result
1145 self["text"].setText(_("Press OK Key"))
1146 self["testlist"].instance.moveSelection(self["testlist"].instance.moveUp)
1149 self["text"].setText(_("Press OK Key"))
1150 self["testlist"].instance.moveSelection(self["testlist"].instance.moveDown)
1153 print "line - ",self["testlist"].getCurrent()[1]
1154 index = self["testlist"].getCurrent()[1]
1156 if index==0 or index==1:
1157 self["text"].setText(_("Insert Card?"))
1159 elif index ==2 or index==3:
1160 self["text"].setText(_("Insert Cam"))
1166 self.camstate.start(1000,True)
1168 def setSource(self, cislot):
1169 filename = ("/proc/stb/tsmux/ci%d_input"%cislot)
1170 fd = open(filename,'w')
1174 def setInputSource(self, cislot):
1175 fd=open("/proc/stb/tsmux/input0","w")
1182 def resetSource(self):
1183 fd=open("/proc/stb/tsmux/input0","w")
1186 # fd = open("/proc/stb/tsmux/ci0_input","w")
1189 # fd = open("/proc/stb/tsmux/ci1_input","w")
1193 def channelstart(self):
1194 ref = eServiceReference("1:0:19:1324:3EF:1:C00000:0:0:0")
1199 ref.setData(4,0x640000)
1200 self.session.nav.playService(ref)
1202 def channelstop(self):
1203 self.session.nav.stopService() # try to disable foreground service
1205 def cam_state(self):
1206 index = self["testlist"].getCurrent()[1]
1211 print 'cam_state', self.camstep,self.camtry
1212 if self.camstep == 1:
1213 state = eDVBCI_UI.getInstance().getState(slot)
1218 self["text"].setText(_("Getting Cam name...."))
1219 self.camstate.start(5000,True)
1223 self.camstate.start(1000,True)
1225 self.session.open( MessageBox, _("NO_NOT_INSERTED"), MessageBox.TYPE_ERROR)
1226 self.rlist[index]="fail"
1227 self["resultlist"].updateList(self.rlist)
1229 elif self.camstep == 2:
1230 appname = eDVBCI_UI.getInstance().getAppName(slot)
1231 print 'appname',appname
1235 self.camstate.start(1000,True)
1237 self.session.open( MessageBox, _("NO_GET_APPNAME"), MessageBox.TYPE_ERROR)
1238 self.rlist[index]="fail"
1239 self["resultlist"].updateList(self.rlist)
1241 self["text"].setText(_("Get Cam name : %s"%appname+". \n Remove Cam!"))
1243 self.setInputSource(slot)
1244 self.setSource(slot)
1247 self.camstate.start(1000,True)
1248 elif self.camstep==3:
1249 state = eDVBCI_UI.getInstance().getState(slot)
1253 self.result += (1<<index)
1255 self.rlist[index]="pass"
1256 self["text"].setText(_("Press OK Key"))
1257 self["resultlist"].updateList(self.rlist)
1265 self.camstate.start(1000,True)
1268 self.session.open( MessageBox, _("NO_REMOVE_CAM"), MessageBox.TYPE_ERROR)
1269 self.rlist[index]="fail"
1270 self["resultlist"].updateList(self.rlist)
1272 def check_smart_card(self,which):
1276 result = eSctest.getInstance().check_smart_card("/dev/sci0")
1278 result = eSctest.getInstance().check_smart_card("/dev/sci1")
1288 self.session.open( MessageBox, _("1:NO_DEV_FOUND"), MessageBox.TYPE_ERROR)
1290 self.session.open( MessageBox, _("1:SC_NOT_INSERTED"), MessageBox.TYPE_ERROR)
1292 self.session.open( MessageBox, _("1:SC_NOT_VALID_ATR"), MessageBox.TYPE_ERROR)
1294 self.session.open( MessageBox, _("1:SC_READ_TIMEOUT"), MessageBox.TYPE_ERROR)
1295 self.rlist[which]="fail"
1296 self["resultlist"].updateList(self.rlist)
1299 def remove_card(self):
1300 index = self["testlist"].getCurrent()[1]
1302 result = eSctest.getInstance().eject_smart_card("/dev/sci0")
1304 result = eSctest.getInstance().eject_smart_card("/dev/sci1")
1305 print 'remove result' ,result
1307 self.rlist[index]="pass"
1308 self.result += (1<<index)
1311 self.session.open( MessageBox, _("2:NO_DEV_FOUND"), MessageBox.TYPE_ERROR)
1313 self.session.open( MessageBox, _("2:SC_NOT_INSERTED"), MessageBox.TYPE_ERROR)
1315 self.session.open( MessageBox, _("2:SC_NOT_VALID_ATR"), MessageBox.TYPE_ERROR)
1317 self.session.open( MessageBox, _("2:SC_NOT_REMOVED"), MessageBox.TYPE_ERROR)
1318 self.rlist[index]="fail"
1319 self["resultlist"].updateList(self.rlist)
1320 self["text"].setText(_("Press OK Key"))
1325 def ScTest(self, yesno):
1328 index = self["testlist"].getCurrent()[1]
1329 result = self.check_smart_card(index)
1331 self.removecard.start(100,True)
1332 self["text"].setText(_("Read Ok. Remove Card!"))
1338 class SmartCardTest(Screen):
1340 <screen position="300,240" size="160,120" title="SmartCard Test" >
1341 <widget name="text" position="10,10" size="140,100" font="Regular;22" />
1344 def __init__(self, session):
1345 self["actions"] = ActionMap(["DirectionActions", "OkCancelActions"],
1347 "cancel": self.keyCancel,
1348 "ok" : self.keyCancel
1351 Screen.__init__(self, session)
1352 # self["text"]=Label(("Press Key LEFT"))
1353 self["text"]=Label(("Testing Smartcard 1..."))
1355 self.smartcardtimer = eTimer()
1356 self.smartcardtimer.callback.append(self.check_smart_card)
1357 self.smartcardtimer.start(100,True)
1359 global smartcardtest
1365 def check_mode(self):
1367 fd = open("/proc/stb/info/version","r")
1369 if int(version,16) <= 0x1200A3:
1373 if int(version,16) < 0x130000:
1375 elif int(version,16) > 0x140000:
1380 def check_smart_card(self):
1381 global smartcardtest
1382 index = self.smartcard
1385 if self.Testmode==0:
1386 result = eSctest.getInstance().check_smart_card("/dev/sci0")
1388 result = eSctest.getInstance().n_check_smart_card("/dev/sci0")
1390 if self.Testmode==0:
1391 result = eSctest.getInstance().check_smart_card("/dev/sci1")
1393 result = eSctest.getInstance().n_check_smart_card("/dev/sci1")
1401 if(index== 0 and self.model== 0):
1403 self["text"].setText(_("Testing Smartcard 2..."))
1404 self.smartcardtimer.start(100,True)
1406 elif (index==1 or self.model==1):
1408 # self.session.open( MessageBox, _("Smart Card OK!!"), MessageBox.TYPE_INFO,2)
1410 self["text"].setText(_("Smart Card OK!!"))
1411 self.smartcardtimer.stop()
1412 # self.session.openWithCallback(self.check6, MessageBox, _("Scart loop ok?"), MessageBox.TYPE_INFO)
1415 self.session.open( MessageBox, _("%d:NO_DEV_FOUND"%(index+1)), MessageBox.TYPE_ERROR)
1417 self.session.open( MessageBox, _("%d:SC_NOT_INSERTED"%(index+1)), MessageBox.TYPE_ERROR)
1419 self.session.open( MessageBox, _("%d:SC_NOT_VALID_ATR"%(index+1)), MessageBox.TYPE_ERROR)
1421 self.session.open( MessageBox, _("%d:SC_READ_TIMEOUT"%(index+1)), MessageBox.TYPE_ERROR)
1423 self["text"].setText(_("Smart Card 1 Error!"))
1425 self["text"].setText(_("Smart Card 2 Error!"))
1426 self.smartcardtimer.stop()
1429 def keyCancel(self):
1436 class FrontTest(Screen):
1438 <screen position="260,240" size="200,180" title="Front Test" >
1439 <widget name="text" position="10,10" size="180,160" font="Regular;22" />
1442 def __init__(self, session):
1443 self["actions"] = ActionMap(["DirectionActions", "OkCancelActions"],
1447 "down":self.keyDown,
1448 "cancel": self.keyCancel,
1451 Screen.__init__(self, session)
1452 self["text"]=Label(("Wheel LEFT"))
1455 self.fronttimer= eTimer()
1456 self.fronttimer.callback.append(self.FrontAnimate)
1457 self.frontturnonoff = 0
1458 eSctest.getInstance().VFD_Open()
1459 self.keytimeout = eTimer()
1460 self.keytimeout.callback.append(self.KeyTimeOut)
1461 self.keytimeout.start(5000,True)
1463 def KeyTimeOut(self):
1465 self["text"].setText(("Wheel LEFT ERROR"))
1466 elif self.step ==2 :
1467 self["text"].setText(("Wheel RIGHT ERROR"))
1468 elif self.step == 3:
1469 self["text"].setText(("Wheel BUTTON ERROR"))
1473 def keyCancel(self):
1475 self.fronttimer.stop()
1476 eSctest.getInstance().VFD_Close()
1485 self.keytimeout.stop()
1486 self.keytimeout.start(5000,True)
1488 self["text"].setText(_("Press Front Wheel"))
1492 self.keytimeout.stop()
1493 self.keytimeout.start(5000,True)
1495 self["text"].setText(_("Wheel RIGHT"))
1501 self.keytimeout.stop()
1503 self.fronttimer.start(1000,True)
1504 self["text"].setText(("Front Test OK! Press Exit Key"))
1505 # elif self.step==4:
1507 # self.fronttimer.stop()
1508 # eSctest.getInstance().VFD_Close()
1512 def FrontAnimate(self):
1513 if (self.frontturnonoff==0):
1514 eSctest.getInstance().turnon_VFD()
1515 self.frontturnonoff = 1
1517 self.frontturnonoff = 0
1518 eSctest.getInstance().turnoff_VFD()
1519 self.fronttimer.start(1000,True)
1522 class FrontTest_solo(Screen):
1524 <screen position="260,240" size="200,180" title="Front Test" >
1525 <widget name="text" position="10,10" size="180,160" font="Regular;22" />
1528 def __init__(self, session):
1529 self["actions"] = ActionMap(["DirectionActions", "OkCancelActions","GlobalActions"],
1532 "cancel": self.keyCancel,
1533 "left": self.keyleft,
1534 "right": self.keyright,
1535 "power_down": self.keypower,
1536 "volumeUp": self.keyvolup,
1537 "volumeDown": self.keyvoldown,
1540 Screen.__init__(self, session)
1541 self["text"]=Label(("Press Front STANDBY"))
1544 self.fronttimer= eTimer()
1545 self.fronttimer.callback.append(self.FrontAnimate)
1546 self.frontturnonoff = 0
1547 eSctest.getInstance().VFD_Open()
1548 self.keytimeout = eTimer()
1549 self.keytimeout.callback.append(self.KeyTimeOut)
1550 self.keytimeout.start(5000,True)
1552 def KeyTimeOut(self):
1554 self["text"].setText(("Front STANDBY ERROR"))
1555 elif self.step == 2 :
1556 self["text"].setText(("Front CH+ ERROR"))
1557 elif self.step == 3:
1558 self["text"].setText(("Front CH- ERROR"))
1559 elif self.step == 4 :
1560 self["text"].setText(("Front VOL + ERROR"))
1561 elif self.step == 5:
1562 self["text"].setText(("Front VOL - ERROR"))
1569 self.keytimeout.stop()
1570 self.keytimeout.start(5000,True)
1572 self["text"].setText(_("Press Front CH+"))
1576 self.keytimeout.stop()
1577 self.keytimeout.start(5000,True)
1579 self["text"].setText(_("Press Front VOL +"))
1583 self.keytimeout.stop()
1584 self.keytimeout.start(5000,True)
1586 self["text"].setText(_("Press Front CH -"))
1590 self.keytimeout.stop()
1591 self.keytimeout.start(5000,True)
1593 self["text"].setText(_("Press Front VOL -"))
1595 def keyvoldown(self):
1597 self.keytimeout.stop()
1599 self["text"].setText(("Front Test OK! Press Exit Key"))
1601 def keyCancel(self):
1603 self.fronttimer.stop()
1604 eSctest.getInstance().VFD_Close()
1613 self.keytimeout.stop()
1615 self.fronttimer.start(1000,True)
1616 self["text"].setText(("Front Test OK! Press Exit Key"))
1618 def FrontAnimate(self):
1619 if (self.frontturnonoff==0):
1620 eSctest.getInstance().turnon_VFD()
1621 self.frontturnonoff = 1
1623 self.frontturnonoff = 0
1624 eSctest.getInstance().turnoff_VFD()
1625 self.fronttimer.start(1000,True)
1634 class RS232Test(Screen):
1636 <screen position="300,240" size="160,100" title="RS232 Test" >
1637 <widget name="text" position="10,10" size="140,80" font="Regular;22" />
1640 def __init__(self, session):
1641 self["actions"] = ActionMap(["DirectionActions", "OkCancelActions"],
1643 "cancel": self.keyCancel,
1646 Screen.__init__(self, session)
1647 self["text"]=Label(("Press \"Enter\" Key"))
1648 self.timer = eTimer()
1649 self.timer.callback.append(self.checkrs232)
1650 self.timer.start(100, True)
1652 def checkrs232(self):
1655 rs=open('/dev/ttyS0','r')
1657 r,w,e = select.select(rd, [], [], 10)
1672 def keyCancel(self):
1677 class AgingTest(Screen):
1679 <screen position="200,240" size="250,100" title="Aging Test" >
1680 <widget name="text1" position="10,10" size="230,40" font="Regular;22" />
1681 <widget name="text2" position="10,50" size="230,40" font="Regular;22" />
1684 def __init__(self, session):
1685 self["actions"] = ActionMap(["WizardActions","GlobalActions"],
1687 "agingend": self.keyEnd,
1688 "agingfinish": self.keyFinish,
1689 "volumeUp": self.nothing,
1690 "volumeDown": self.nothing,
1691 "volumeMute": self.nothing,
1694 Screen.__init__(self, session)
1695 self["text1"]=Label(("Exit - Press Pause Key"))
1696 self["text2"]=Label(("Reset - Press Stop Key"))
1697 # self.servicelist = ServiceList()
1698 # self.oldref = session.nav.getCurrentlyPlayingServiceReference()
1699 # print "oldref",self.oldref
1700 # session.nav.stopService() # try to disable foreground service
1703 self.tuningtimer = eTimer()
1704 self.tuningtimer.callback.append(self.updateStatus)
1705 # self.tuningtimer.start(2000,True)
1708 def updateStatus(self):
1709 result = eSctest.getInstance().getFrontendstatus(0)
1712 print "eSctest.getInstance().getFrontendstatus - %d"%result
1715 self.session.nav.stopService()
1716 self.session.open( MessageBox, _("Tune 1 Ver Locking Fail..."), MessageBox.TYPE_ERROR)
1721 self.session.nav.stopService()
1722 self.session.open( MessageBox, _("Tune 1 Ver Error %d..."%result), MessageBox.TYPE_ERROR)
1729 if self.oldref is None:
1730 eref = eServiceReference("1:0:19:1324:3EF:1:C00000:0:0:0")
1731 serviceHandler = eServiceCenter.getInstance()
1732 servicelist = serviceHandler.list(eref)
1733 if not servicelist is None:
1734 ref = servicelist.getNext()
1736 ref = self.getCurrentSelection()
1737 print "servicelist none"
1740 self.session.nav.stopService() # try to disable foreground service
1745 ref.setData(4,0x640000)
1746 self.session.nav.playService(ref)
1751 self.session.nav.stopService() # try to disable foreground service
1754 def keyFinish(self):
1757 self.session.nav.stopService() # try to disable foreground service
1769 def main(session, servicelist, **kwargs):
1773 Servicelist = servicelist
1774 bouquets = Servicelist.getBouquetList()
1776 bouquetSel = Session.openWithCallback(cleanup, FactoryTest)
1778 #def Plugins(**kwargs):
1779 # return PluginDescriptor(name=_("Factory Test"), description="Test App for Factory", where = PluginDescriptor.WHERE_EXTENSIONSMENU, fnc=main)