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)
31 self.l.setFont( gFont("Regular", 23))
32 self.l.setItemHeight(25)
36 def postWidgetCreate(self, instance):
37 self.instance.setSelectionEnable(0)
38 self.instance.setContent(self.l)
40 def updateList(self,list):
43 class FactoryTest(Screen):
45 <screen position="120,125" size="440,400" title="Test Menu" >
46 <widget name="testlist" position="10,0" size="340,350" />
47 <widget name="resultlist" position="370,0" size="60,350" />
48 <widget name="testdate" position="20,350" size="150,25" font="Regular;22" />
49 <widget name="testversion" position="20,375" size="150,25" font="Regular;22" />
50 <widget name="mactext" position="180,350" size="230,25" font="Regular;22" />
52 def __init__(self, session):
54 self["actions"] = NumberActionMap(["OkCancelActions","WizardActions","NumberActions",],
58 "ok": self.TestAction,
59 "testexit": self.keyCancel,
60 "agingstart": self.Agingmode,
63 "0": self.numberaction,
64 "1": self.numberaction,
65 "2": self.numberaction,
66 "3": self.numberaction,
67 "4": self.numberaction,
68 "5": self.numberaction,
69 "6": self.numberaction,
70 "7": self.numberaction,
71 "8": self.numberaction,
72 "9": self.numberaction,
75 Screen.__init__(self, session)
76 TESTPROGRAM_DATE = "2010-03-22"
77 TESTPROGRAM_VERSION = "Version 00.01"
82 self["testdate"]=Label((TESTPROGRAM_DATE))
83 self["testversion"]=Label(("Loading version..."))
84 self["mactext"]=Label(("Loading mac address..."))
85 nimConfig = nimmanager.getNimConfig(0)
86 nimConfig.configMode.slot_id=0
87 nimConfig.configMode.value= "simple"
88 nimConfig.diseqcMode.value="diseqc_a_b"
89 nimConfig.diseqcA.value="160"
90 nimConfig.diseqcB.value="100"
92 nimConfig = nimmanager.getNimConfig(1)
93 nimConfig.configMode.slot_id=1
94 nimConfig.configMode.value= "simple"
95 nimConfig.diseqcMode.value="diseqc_a_b"
96 nimConfig.diseqcA.value="130"
97 nimConfig.diseqcB.value="192"
98 nimmanager.sec.update()
100 system("cp /usr/lib/enigma2/python/Plugins/SystemPlugins/FactoryTest/testdb /etc/enigma2/lamedb")
101 db = eDVBDB.getInstance()
102 db.reloadServicelist()
107 tlist.append((" 0. Sata & extend hdd test",self.satetestIndex))
109 tlist.append((" 1. USB test",self.usbtestIndex))
110 self.fronttestIndex=2
111 tlist.append((" 2. Front test",self.fronttestIndex))
112 self.smarttestIndex=3
113 tlist.append((" 3. Smartcard test",self.smarttestIndex))
114 self.tuner1_1testIndex=4
115 tlist.append((" 4. T1 H 22K x 4:3 CVBS",self.tuner1_1testIndex))
116 self.tuner1_2testIndex=5
117 tlist.append((" 5. T1 V 22k o 16:9 RGB",self.tuner1_2testIndex))
118 self.tuner2_1testIndex=6
119 tlist.append((" 6. T2 H 22k x 4:3 YC",self.tuner2_1testIndex))
120 self.tuner2_2testIndex=7
121 tlist.append((" 7. T2 V 22k o 16:9 CVBS CAM",self.tuner2_2testIndex))
122 self.scarttestIndex=8
123 tlist.append((" 8. VCR Scart loop",self.scarttestIndex))
124 self.rs232testIndex=9
125 tlist.append((" 9. RS232 test",self.rs232testIndex))
126 self.ethernettestIndex=10
127 tlist.append(("10. Ethernet & mac test",self.ethernettestIndex))
128 # tlist.append(("11. DRAM test",11))
129 # tlist.append(("12. Flash test",12))
130 # tlist.append(("13. DRAM+Flash test",13))
131 self.fdefaultIndex=11
132 tlist.append(("11. Factory default",self.fdefaultIndex))
133 self.shotdownIndex=12
134 tlist.append(("12. Shutdown",self.shotdownIndex))
135 elif self.model == 1:
136 # tlist.append((" 0. Sata & extend hdd test",self.satetestIndex=0))
137 self.satetestIndex = -1
138 self.scarttestIndex = -1
143 tlist.append((" 0. USB test",self.usbtestIndex))
144 self.fronttestIndex=1
145 tlist.append((" 1. Front test",self.fronttestIndex))
146 self.smarttestIndex=2
147 tlist.append((" 2. Smartcard test",self.smarttestIndex))
148 self.tuner1_1testIndex=3
149 tlist.append((" 3. T1 H 22K x 4:3 CVBS",self.tuner1_1testIndex))
150 self.tuner1_2testIndex=4
151 tlist.append((" 4. T1 V 22k o 16:9 RGB CAM",self.tuner1_2testIndex))
152 self.tuner2_2testIndex=4
153 # tlist.append((" 6. T2 H 22k x 4:3 YC",self.tuner2_1testIndex=6))
154 # tlist.append((" 7. T2 V 22k o 16:9 CVBS CAM",self.tuner2_2testIndex=7))
155 # tlist.append((" 8. VCR Scart loop",self.scarttestIndex=8))
156 self.rs232testIndex=5
157 tlist.append((" 5. RS232 test",self.rs232testIndex))
158 self.ethernettestIndex=6
159 tlist.append((" 6. Ethernet & mac test",self.ethernettestIndex))
160 # tlist.append(("11. DRAM test",11))
161 # tlist.append(("12. Flash test",12))
162 # tlist.append(("13. DRAM+Flash test",13))
164 tlist.append((" 7. Factory default",self.fdefaultIndex))
166 tlist.append((" 8. Shutdown",self.shotdownIndex))
167 self.menulength= len(tlist)-1
168 self["testlist"] = MenuList(tlist)
170 # for x in range(15):
171 # for x in range(12):
172 for x in range(self.menulength):
173 self.rlist.append((".."))
174 self["resultlist"] = TestResultList(self.rlist)
175 self.NetworkState = 0
178 self.avswitch = AVSwitch()
179 self.memTest = eMemtest()
180 self.scTest= eSctest()
186 self.servicelist = ServiceList()
187 self.oldref = session.nav.getCurrentlyPlayingServiceReference()
188 print "oldref",self.oldref
189 session.nav.stopService() # try to disable foreground service
191 self.tunemsgtimer = eTimer()
192 self.tunemsgtimer.callback.append(self.tunemsg)
195 self.camtimer = eTimer()
196 self.camtimer.callback.append(self.cam_state)
201 self.tuningtimer = eTimer()
202 self.tuningtimer.callback.append(self.updateStatus)
205 self.satatimer = eTimer()
206 self.satatimer.callback.append(self.sataCheck)
208 def getModelInfo(self):
209 info = open("/proc/stb/info/version").read()
213 elif info[:2] == "12":
223 if self["testlist"].getCurrent()[1]==0:
224 self["testlist"].moveToIndex(self.menulength)
226 self["testlist"].up()
232 if self["testlist"].getCurrent()[1]==(self.menulength):
233 self["testlist"].moveToIndex(0)
235 self["testlist"].down()
237 def numberaction(self, number):
241 self["testlist"].moveToIndex(index)
244 def updateStatus(self):
245 index = self["testlist"].getCurrent()[1]
246 if index ==self.tuner1_1testIndex or index==self.tuner1_2testIndex:
248 result = eSctest.getInstance().getFrontendstatus(0)
251 result = eSctest.getInstance().getFrontendstatus(1)
253 if self.agingmode == 1:
255 result = eSctest.getInstance().getFrontendstatus(0)
258 if index == self.tuner1_2testIndex or index==self.tuner2_2testIndex:
263 print "eSctest.getInstance().getFrontendstatus - %d"%result
266 self.tunemsgtimer.stop()
267 self.session.nav.stopService()
268 self.session.open( MessageBox, _("Tune%d %s Locking Fail..."%(tunno,hv)), MessageBox.TYPE_ERROR)
269 if self.agingmode==0:
270 self.rlist[self["testlist"].getCurrent()[1]]="fail"
274 if self.agingmode==1:
275 self.session.openWithCallback(self.checkaging,AgingTest)
277 def getversion(self):
279 fd = open("/proc/stb/info/version","r")
281 self["testversion"].setText(("Version %s"%version))
283 self["testversion"].setText(("Version no load"))
286 def readmac(self, result, retval,extra_args=None):
287 (statecallback) = extra_args
288 if self.macConsole is not None:
290 self.macConsole = None
291 content =result.split()
292 self["mactext"].setText(("MAC : "+content[10]))
294 def getmacaddr(self):
297 self.macConsole = Console()
298 self.macConsole.ePopen(cmd, self.readmac)
299 # self["stattext"].setText((macaddr))
303 def TestAction(self):
305 # tlist.append((" 0. Sata & extend hdd test",self.satetestIndex=0))
306 # tlist.append((" 1. USB test",self.usbtestIndex=1))
307 # tlist.append((" 2. Front test",self.fronttestIndex=2))
308 # tlist.append((" 3. Smartcard test",self.smarttestIndex=3))
309 # tlist.append((" 4. T1 H 22K x 4:3 CVBS",self.tuner1_1testIndex=4))
310 # tlist.append((" 5. T1 V 22k o 16:9 RGB",self.tuner1_2testIndex=5))
311 # tlist.append((" 6. T2 H 22k x 4:3 YC",self.tuner2_1testIndex=6))
312 # tlist.append((" 7. T2 V 22k o 16:9 CVBS CAM",self.tuner2_2testIndex=7))
313 # tlist.append((" 8. VCR Scart loop",self.scarttestIndex=8))
314 # tlist.append((" 9. RS232 test",self.rs232testIndex=9))
315 # tlist.append(("10. Ethernet & mac test",self.ethernettestIndex=10))
316 # tlist.append(("11. DRAM test",11))
317 # tlist.append(("12. Flash test",12))
318 # tlist.append(("13. DRAM+Flash test",13))
319 # tlist.append(("11. Factory default",self.fdefaultIndex=11))
320 # tlist.append(("12. Shutdown",self.shotdownIndex=12))
324 print "line - ",self["testlist"].getCurrent()[1]
325 index = self["testlist"].getCurrent()[1]
327 if index==self.satetestIndex:
329 elif index==self.fronttestIndex:
331 elif index>=self.tuner1_1testIndex and index<=self.tuner2_2testIndex:
333 elif index==self.scarttestIndex:
335 elif index==self.rs232testIndex:
337 elif index==self.usbtestIndex:
339 elif index==self.ethernettestIndex:
341 elif index == self.smarttestIndex:
349 elif index==self.fdefaultIndex:
351 elif index==self.shotdownIndex:
357 self.satatimer.start(100,True)
360 # print "try", self.satatry
361 if self.satatry == 0:
364 self.rlist[self["testlist"].getCurrent()[1]]="try %d"%self.satatry
365 self["resultlist"].updateList(self.rlist)
371 mtab = open('/etc/mtab','r')
373 disk = mtab.readline().split(' ')
376 if disk[1].startswith('/media/hdd'):
378 elif disk[1].startswith('/media/sdb1'):
387 self.session.open( MessageBox, _("Sata & extend hdd test error"), MessageBox.TYPE_ERROR)
388 self.rlist[self["testlist"].getCurrent()[1]]="fail"
390 self.satatimer.start(1100,True)
394 self.session.open( MessageBox, _("one hdd test error"), MessageBox.TYPE_ERROR)
395 self.rlist[self["testlist"].getCurrent()[1]]="fail"
397 self.satatimer.start(1100,True)
401 if fileExists("/media/sdb1"):
402 if access("/media/sdb1",F_OK|R_OK|W_OK):
403 dummy=open("/media/sdb1/dummy03","w")
404 dummy.write("complete")
406 dummy=open("/media/sdb1/dummy03","r")
407 if dummy.readline()=="complete":
412 system("rm /media/sdb1/dummy03")
420 if fileExists("/media/hdd"):
421 if access("/media/hdd",F_OK|R_OK|W_OK):
422 dummy=open("/media/hdd/dummy03","w")
423 dummy.write("complete")
425 dummy=open("/media/hdd/dummy03","r")
426 if dummy.readline()=="complete":
431 system("rm /media/hdd/dummy03")
440 self.session.open( MessageBox, _("Sata & extend hdd test pass"), MessageBox.TYPE_INFO)
441 self.rlist[self["testlist"].getCurrent()[1]]="pass"
444 self.session.open( MessageBox, _("one hdd test error"), MessageBox.TYPE_ERROR)
445 self.rlist[self["testlist"].getCurrent()[1]]="fail"
446 self.satatimer.start(1100,True)
449 self.session.open( MessageBox, _("Sata & extend hdd test error"), MessageBox.TYPE_ERROR)
450 self.rlist[self["testlist"].getCurrent()[1]]="fail"
451 self.satatimer.start(1100,True)
455 self.session.openWithCallback(self.displayresult ,FrontTest)
456 elif self.model == 1:
457 self.session.openWithCallback(self.displayresult ,FrontTest_solo)
459 def displayresult(self):
462 self.rlist[self["testlist"].getCurrent()[1]]="pass"
464 self.rlist[self["testlist"].getCurrent()[1]]="fail"
466 INTERNAL_PID_STATUS_NOOP = 0
467 INTERNAL_PID_STATUS_WAITING = 1
468 INTERNAL_PID_STATUS_SUCCESSFUL = 2
469 INTERNAL_PID_STATUS_FAILED = 3
471 def TestTune(self,index):
472 if self.oldref is None:
473 eref = eServiceReference("1:0:19:1324:3EF:1:C00000:0:0:0")
474 serviceHandler = eServiceCenter.getInstance()
475 servicelist = serviceHandler.list(eref)
476 if not servicelist is None:
477 ref = servicelist.getNext()
479 ref = self.getCurrentSelection()
480 print "servicelist none"
483 self.session.nav.stopService() # try to disable foreground service
484 if index==self.tuner1_1testIndex:
489 ref.setData(4,0xA00000)
490 self.session.nav.playService(ref)
491 self.avswitch.setColorFormat(0)
492 self.avswitch.setAspectRatio(0)
493 elif index==self.tuner1_2testIndex:
496 self.camtimer.start(100,True)
498 ref.setData(1,0x1325)
501 ref.setData(4,0x64af79)
502 # ref.setData(0,0x19)
503 # ref.setData(1,0x83)
505 # ref.setData(3,0x85)
506 # ref.setData(4,0x640000)
507 self.session.nav.playService(ref)
508 self.avswitch.setColorFormat(1)
509 self.avswitch.setAspectRatio(6)
510 elif index==self.tuner2_1testIndex:
512 # self.camtimer.start(100,True)
517 ref.setData(4,0x820000)
518 self.session.nav.playService(ref)
519 self.avswitch.setColorFormat(2)
520 self.avswitch.setAspectRatio(0)
521 elif index==self.tuner2_2testIndex:
523 self.camtimer.start(100,True)
524 # ref.setData(0,0x19)
525 # ref.setData(1,0x83)
527 # ref.setData(3,0x85)
528 # ref.setData(4,0xC00000)
529 # ikseong - for 22000 tp ( /home/ikseong/share/lamedb_ORF)
531 ref.setData(1,0x1325)
534 ref.setData(4,0xC00000)
535 self.session.nav.playService(ref)
536 self.avswitch.setColorFormat(0)
537 self.avswitch.setAspectRatio(6)
538 self.tuningtimer.start(2000,True)
539 self.tunemsgtimer.start(3000, True)
542 if self.camstep == 1:
544 state = eDVBCI_UI.getInstance().getState(slot)
545 print '-1-stat',state
548 self.camtimer.start(100,True)
550 self.session.nav.stopService()
551 self.session.open( MessageBox, _("NO_CAM1_NOT_INSERTED"), MessageBox.TYPE_ERROR)
552 self.rlist[self["testlist"].getCurrent()[1]]="fail"
553 self.tunemsgtimer.stop()
554 # self.rlist[index]="fail"
555 # self["resultlist"].updateList(self.rlist)
556 elif self.camstep == 2:
558 appname = eDVBCI_UI.getInstance().getAppName(slot)
559 print 'appname',appname
561 self.session.nav.stopService()
562 self.session.open( MessageBox, _("NO_GET_APPNAME"), MessageBox.TYPE_ERROR)
563 self.rlist[self["testlist"].getCurrent()[1]]="fail"
564 self.tunemsgtimer.stop()
567 self.camtimer.start(100,True)
568 elif self.camstep==3:
570 state = eDVBCI_UI.getInstance().getState(slot)
571 print '-2-stat',state
574 self.camtimer.start(100,True)
576 self.session.nav.stopService()
577 self.session.open( MessageBox, _("NO_CAM2_NOT_INSERTED"), MessageBox.TYPE_ERROR)
578 self.rlist[self["testlist"].getCurrent()[1]]="fail"
579 self.tunemsgtimer.stop()
580 # self.rlist[index]="fail"
581 # self["resultlist"].updateList(self.rlist)
582 elif self.camstep == 4:
584 appname = eDVBCI_UI.getInstance().getAppName(slot)
585 print 'appname',appname
587 self.session.nav.stopService()
588 self.session.open( MessageBox, _("NO_GET_APPNAME"), MessageBox.TYPE_ERROR)
589 self.rlist[self["testlist"].getCurrent()[1]]="fail"
590 self.tunemsgtimer.stop()
594 # self.session.open( MessageBox, _("CAM OK!"), MessageBox.TYPE_INFO,2)
596 # ikseong - for 22000 tp
598 filename = ("/proc/stb/tsmux/ci0_input")
599 fd = open(filename,'w')
603 # filename = ("/proc/stb/tsmux/ci1_input")
604 # fd = open(filename,'w')
607 fd=open("/proc/stb/tsmux/input1","w")
608 # fd=open("/proc/stb/tsmux/input0","w")
611 print "CI loop test!!!!!!!!!!!!!!"
613 def resetSource(self):
614 fd=open("/proc/stb/tsmux/input1","w")
617 print "CI loop test end!!!!!!!!!!!!!!"
620 self.tuningtimer.stop()
621 self.session.openWithCallback(self.tuneback, MessageBox, _("%s ok?" %(self["testlist"].getCurrent()[0])), MessageBox.TYPE_YESNO)
623 def tuneback(self,yesno):
624 self.session.nav.stopService() # try to disable foreground service
626 self.rlist[self["testlist"].getCurrent()[1]]="pass"
627 if self.tunerlock == 0:
628 self.rlist[self["testlist"].getCurrent()[1]]="fail"
629 elif self["testlist"].getCurrent()[1] == 7 and self.camstep < 5:
630 self.rlist[self["testlist"].getCurrent()[1]]="fail"
632 self.rlist[self["testlist"].getCurrent()[1]]="fail"
633 if self["testlist"].getCurrent()[1] == 6:
634 self.avswitch.setColorFormat(0)
636 self["resultlist"].updateList(self.rlist)
639 self.avswitch.setInput("SCART")
641 self.session.openWithCallback(self.check6, MessageBox, _("Scart loop ok?"), MessageBox.TYPE_YESNO)
643 def check6(self,yesno):
645 self.rlist[self["testlist"].getCurrent()[1]]="pass"
647 self.rlist[self["testlist"].getCurrent()[1]]="fail"
648 self.avswitch.setInput("ENCODER")
653 self.rlist[self["testlist"].getCurrent()[1]]="pass"
655 self.rlist[self["testlist"].getCurrent()[1]]="fail"
658 self.session.openWithCallback(self.check7,RS232Test)
663 if self.oldref is None:
664 eref = eServiceReference("1:0:19:1324:3EF:1:C00000:0:0:0")
665 serviceHandler = eServiceCenter.getInstance()
666 servicelist = serviceHandler.list(eref)
667 if not servicelist is None:
668 ref = servicelist.getNext()
670 ref = self.getCurrentSelection()
671 print "servicelist none"
674 self.session.nav.stopService() # try to disable foreground service
676 ref.setData(1,0x1325)
679 ref.setData(4,0x64af79)
681 # ref.setData(1,0x6D3)
683 # ref.setData(3,0xA4)
684 # ref.setData(4,0xA00000)
685 self.session.nav.playService(ref)
686 self.avswitch.setColorFormat(0)
687 self.avswitch.setAspectRatio(0)
688 self.tuningtimer.start(2000,True)
691 def checkaging(self):
694 self["testlist"].moveToIndex(11)
696 self["testlist"].moveToIndex(12)
698 # self["testlist"].instance.moveSelection(self["testlist"].instance.moveDown)
706 mtab = open('/etc/mtab','r')
708 disk = mtab.readline().split(' ')
711 if disk[1].startswith('/media/hdd'):
713 elif disk[1].startswith('/media/sdb1'):
715 elif disk[1].startswith('/media/sd'):
721 self.session.open( MessageBox, _("USB test pass %d devices"%result), MessageBox.TYPE_INFO)
722 self.rlist[self["testlist"].getCurrent()[1]]="pass"
724 self.session.open( MessageBox, _("USB test error : Success-%d"%result+" Fail-%d"%(3-result)), MessageBox.TYPE_ERROR)
725 self.rlist[self["testlist"].getCurrent()[1]]="fail"
730 self.session.open( MessageBox, _("USB test pass %d devices"%result), MessageBox.TYPE_INFO)
731 self.rlist[self["testlist"].getCurrent()[1]]="pass"
733 self.session.open( MessageBox, _("USB test error : Success-%d"%result+" Fail-%d"%(3-result)), MessageBox.TYPE_ERROR)
734 self.rlist[self["testlist"].getCurrent()[1]]="fail"
738 mtab = open('/etc/mtab','r')
740 disk = mtab.readline().split(' ')
743 if disk[1].startswith('/media/'):
749 self.session.open( MessageBox, _("USB test pass %d devices"%result), MessageBox.TYPE_INFO)
750 self.rlist[self["testlist"].getCurrent()[1]]="pass"
752 self.session.open( MessageBox, _("USB test error : Success-%d"%result+" Fail-%d"%(2-result)), MessageBox.TYPE_ERROR)
753 self.rlist[self["testlist"].getCurrent()[1]]="fail"
758 self.session.open( MessageBox, _("USB test pass %d devices"%result), MessageBox.TYPE_INFO)
759 self.rlist[self["testlist"].getCurrent()[1]]="pass"
761 self.session.open( MessageBox, _("USB test error : Success-%d"%result+" Fail-%d"%(2-result)), MessageBox.TYPE_ERROR)
762 self.rlist[self["testlist"].getCurrent()[1]]="fail"
767 # system("/etc/init.d/networking stop")
768 system("ifconfig eth0 192.168.0.10")
769 # system("/etc/init.d/networking start")
770 cmd1 = "ping -c 1 192.168.0.100"
771 self.PingConsole = Console()
772 self.PingConsole.ePopen(cmd1, self.checkNetworkStateFinished,self.NetworkStatedataAvail)
774 def checkNetworkStateFinished(self, result, retval,extra_args):
775 (statecallback) = extra_args
776 if self.PingConsole is not None:
778 self.PingConsole = None
779 content = result.splitlines()
780 # print 'content',content
781 x = content[4].split()
791 def NetworkStatedataAvail(self,data):
796 # self.session.open( MessageBox, _("Ping test pass"), MessageBox.TYPE_INFO,2)
797 self.session.openWithCallback(self.openMacConfig ,MessageBox, _("Ping test pass"), MessageBox.TYPE_INFO,2)
802 self.session.open( MessageBox, _("Ping test fail"), MessageBox.TYPE_ERROR)
808 def openMacConfig(self, ret=False):
809 self.session.openWithCallback(self.macresult ,MacConfig)
814 self.rlist[self.ethernettestIndex]="pass"
815 # self.rlist[self["testlist"].getCurrent()[1]]="pass"
817 self.rlist[self.ethernettestIndex]="fail"
818 # self.rlist[self["testlist"].getCurrent()[1]]="fail"
822 def MemTest(self, which):
826 result = eMemtest.getInstance().dramtest()
828 result = eMemtest.getInstance().flashtest()
831 result = eMemtest.getInstance().dramtest()
832 result = eMemtest.getInstance().flashtest()
838 print index,self.rlist[index]
839 self.rlist[index]="pass"
841 print index,self.rlist[index]
842 self.rlist[index]="fail"
843 self["resultlist"].updateList(self.rlist)
845 def scciresult(self):
847 if smartcardtest == 1:
848 self.rlist[self["testlist"].getCurrent()[1]]="pass"
850 self.rlist[self["testlist"].getCurrent()[1]]="fail"
853 self.session.openWithCallback(self.scciresult ,SmartCardTest)
867 system("rm -R /etc/enigma2")
868 system("cp -R /usr/share/enigma2/defaults /etc/enigma2")
869 self.rlist[self["testlist"].getCurrent()[1]]="pass"
870 self["resultlist"].updateList(self.rlist)
872 self.rlist[self["testlist"].getCurrent()[1]]="fail"
873 self["resultlist"].updateList(self.rlist)
874 self.session.open( MessageBox, _("Factory reset fail"), MessageBox.TYPE_ERROR)
877 self.session.openWithCallback(self.shutdown ,MessageBox, _("Do you want to shut down?"), MessageBox.TYPE_YESNO)
879 def shutdown(self, yesno):
882 system("/usr/bin/showiframe /boot/backdrop.mvi")
894 class MacConfig(Screen):
896 <screen position="100,250" size="520,100" title="Mac Config" >
897 <eLabel text="Mac Address " position="10,15" size="200,40" font="Regular;30" />
898 <widget name="text" position="230,15" size="230,40" font="Regular;30" />
899 <widget name="text1" position="470,15" size="40,40" font="Regular;30" />
900 <eLabel text=" " position="5,55" zPosition="-1" size="510,5" backgroundColor="#02e1e8e6" />
901 <widget name="stattext" position="30,75" size="400,25" font="Regular;20" />
904 def __init__(self, session):
905 self["actions"] = ActionMap(["DirectionActions","OkCancelActions"],
908 "left": self.keyleft,
909 "right": self.keyright,
910 "cancel": self.keyCancel,
913 Screen.__init__(self, session)
917 self.macaddr = "000000000000"
918 self.NetworkState = 0
919 self["text"]=Label((self.macaddr))
920 self["text1"]= Label(("< >"))
921 self["stattext"]= Label((""))
930 def loadmacaddr(self):
934 mtab = open('/etc/mtab','r')
936 disk = mtab.readline().split(' ')
939 if disk[1].startswith('/media/sd') or disk[1].startswith('/media/hdd'):
940 print 'try..',disk[1]
941 if fileExists(disk[1]+"/Vuplus_mac.txt"):
942 self.macfd = open(disk[1]+"/Vuplus_mac.txt","r+")
945 self["text"].setText(("cannot read usb!!"))
946 self["text1"].setText((" "))
947 self["stattext"].setText((" Press Exit Key."))
951 macaddr=self.macfd.readline().split(":")
952 self.macaddr=macaddr[1]+macaddr[2]+macaddr[3]+macaddr[4]+macaddr[5]+macaddr[6]
954 self.NetworkState = 1
956 self["text"].setText(("cannot read usb!!"))
957 self["text1"].setText((" "))
958 self["stattext"].setText((" Press Exit Key."))
960 # self.session.open( MessageBox, _("Mac address fail"), MessageBox.TYPE_ERROR)
962 def readmac(self, result, retval,extra_args=None):
963 (statecallback) = extra_args
964 if self.macConsole is not None:
966 self.macConsole = None
967 content =result.split()
968 self["stattext"].setText(("now : "+content[10]))
970 def getmacaddr(self):
971 if self.NetworkState==0:
975 self.macConsole = Console()
976 self.macConsole.ePopen(cmd, self.readmac)
977 # self["stattext"].setText((macaddr))
982 if self.NetworkState==0 or self.pingok<1:
984 macaddress = long(self.macaddr,16)-1
986 macaddress = 0xffffffffffff
987 self.macaddr = "%012x"%macaddress
991 if self.NetworkState==0 or self.pingok<1:
993 macaddress = long(self.macaddr,16)+1
994 if macaddress > 0xffffffffffff:
996 self.macaddr = "%012x"%macaddress
999 def displaymac(self):
1000 macaddr= self.macaddr
1001 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))))
1004 if self.NetworkState==0 or self.pingok<1:
1007 system("/etc/init.d/networking stop")
1008 system("ifconfig eth0 down")
1009 macaddr = self.macaddr
1010 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))
1012 #make_mac_sector 00-99-99-99-00-00 > /tmp/mac.sector
1013 #flash_eraseall /dev/mtd4
1014 #nandwrite /dev/mtd4 /tmp/mac.sector -p
1015 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))
1017 system("flash_eraseall /dev/mtd4")
1018 system("nandwrite /dev/mtd4 /tmp/mac.sector -p")
1019 macaddress = long(macaddr,16)+1
1020 if macaddress > 0xffffffffffff:
1022 macaddr = "%012x"%macaddress
1023 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))
1025 self.macfd.write(macwritetext)
1026 self.macaddr = macaddr
1027 system("ifconfig eth0 up")
1029 system("ifconfig eth0 192.168.0.10")
1030 system("/etc/init.d/networking start")
1033 self.session.open( MessageBox, _("Mac address fail"), MessageBox.TYPE_ERROR)
1039 self["stattext"].setText(("now : wait to finish ping test..."))
1040 # system("/etc/init.d/networking stop")
1041 system("ifconfig eth0 192.168.0.10")
1042 # system("/etc/init.d/networking start")
1043 cmd1 = "ping -c 1 192.168.0.100"
1044 self.PingConsole = Console()
1045 self.PingConsole.ePopen(cmd1, self.checkNetworkStateFinished,self.NetworkStatedataAvail)
1047 def checkNetworkStateFinished(self, result, retval,extra_args):
1048 (statecallback) = extra_args
1049 if self.PingConsole is not None:
1051 self.PingConsole = None
1052 content = result.splitlines()
1053 # print 'content',content
1054 x = content[4].split()
1064 def NetworkStatedataAvail(self,data):
1072 self.session.open( MessageBox, _("Ping test pass"), MessageBox.TYPE_INFO,2)
1077 self["stattext"].setText(("ping test fail.. press Exit Key"))
1078 self.session.open( MessageBox, _("Ping test fail"), MessageBox.TYPE_ERROR,2)
1082 def keyCancel(self):
1083 if self.pingok == -1:
1095 class ScCiTest(Screen):
1097 <screen position="120,225" size="440,200" title="CI Smartcard Test" >
1098 <widget name="testlist" position="10,0" size="340,120" />
1099 <widget name="resultlist" position="370,0" size="60,120" />
1100 <eLabel text=" " position="5,125" zPosition="-1" size="430,5" backgroundColor="#02e1e8e6" />
1101 <widget name="text" position="10,140" size="420,50" font="Regular;25" />
1104 def __init__(self, session):
1105 self["actions"] = ActionMap(["DirectionActions","OkCancelActions"],
1110 "cancel": self.keyCancel,
1113 Screen.__init__(self, session)
1115 tlist.append(("Smartcard 1 Test",0))
1116 tlist.append(("Smartcard 2 Test",1))
1117 tlist.append(("CI 1 Test",2))
1118 tlist.append(("CI 2 Test",3))
1119 self["testlist"] = MenuList(tlist)
1122 self.rlist.append((".."))
1123 self["resultlist"] = TestResultList(self.rlist)
1125 self.removecard = eTimer()
1126 self.removecard.callback.append(self.remove_card)
1127 self["text"]=Label(("Press OK Key"))
1128 self.camstate= eTimer()
1129 self.camstate.callback.append(self.cam_state)
1133 def keyCancel(self):
1135 print "result ", self.result
1142 self["text"].setText(_("Press OK Key"))
1143 self["testlist"].instance.moveSelection(self["testlist"].instance.moveUp)
1146 self["text"].setText(_("Press OK Key"))
1147 self["testlist"].instance.moveSelection(self["testlist"].instance.moveDown)
1150 print "line - ",self["testlist"].getCurrent()[1]
1151 index = self["testlist"].getCurrent()[1]
1153 if index==0 or index==1:
1154 self["text"].setText(_("Insert Card?"))
1156 elif index ==2 or index==3:
1157 self["text"].setText(_("Insert Cam"))
1163 self.camstate.start(1000,True)
1165 def setSource(self, cislot):
1166 filename = ("/proc/stb/tsmux/ci%d_input"%cislot)
1167 fd = open(filename,'w')
1171 def setInputSource(self, cislot):
1172 fd=open("/proc/stb/tsmux/input0","w")
1179 def resetSource(self):
1180 fd=open("/proc/stb/tsmux/input0","w")
1183 # fd = open("/proc/stb/tsmux/ci0_input","w")
1186 # fd = open("/proc/stb/tsmux/ci1_input","w")
1190 def channelstart(self):
1191 ref = eServiceReference("1:0:19:1324:3EF:1:C00000:0:0:0")
1196 ref.setData(4,0x640000)
1197 self.session.nav.playService(ref)
1199 def channelstop(self):
1200 self.session.nav.stopService() # try to disable foreground service
1202 def cam_state(self):
1203 index = self["testlist"].getCurrent()[1]
1208 print 'cam_state', self.camstep,self.camtry
1209 if self.camstep == 1:
1210 state = eDVBCI_UI.getInstance().getState(slot)
1215 self["text"].setText(_("Getting Cam name...."))
1216 self.camstate.start(5000,True)
1220 self.camstate.start(1000,True)
1222 self.session.open( MessageBox, _("NO_NOT_INSERTED"), MessageBox.TYPE_ERROR)
1223 self.rlist[index]="fail"
1224 self["resultlist"].updateList(self.rlist)
1226 elif self.camstep == 2:
1227 appname = eDVBCI_UI.getInstance().getAppName(slot)
1228 print 'appname',appname
1232 self.camstate.start(1000,True)
1234 self.session.open( MessageBox, _("NO_GET_APPNAME"), MessageBox.TYPE_ERROR)
1235 self.rlist[index]="fail"
1236 self["resultlist"].updateList(self.rlist)
1238 self["text"].setText(_("Get Cam name : %s"%appname+". \n Remove Cam!"))
1240 self.setInputSource(slot)
1241 self.setSource(slot)
1244 self.camstate.start(1000,True)
1245 elif self.camstep==3:
1246 state = eDVBCI_UI.getInstance().getState(slot)
1250 self.result += (1<<index)
1252 self.rlist[index]="pass"
1253 self["text"].setText(_("Press OK Key"))
1254 self["resultlist"].updateList(self.rlist)
1262 self.camstate.start(1000,True)
1265 self.session.open( MessageBox, _("NO_REMOVE_CAM"), MessageBox.TYPE_ERROR)
1266 self.rlist[index]="fail"
1267 self["resultlist"].updateList(self.rlist)
1269 def check_smart_card(self,which):
1273 result = eSctest.getInstance().check_smart_card("/dev/sci0")
1275 result = eSctest.getInstance().check_smart_card("/dev/sci1")
1285 self.session.open( MessageBox, _("1:NO_DEV_FOUND"), MessageBox.TYPE_ERROR)
1287 self.session.open( MessageBox, _("1:SC_NOT_INSERTED"), MessageBox.TYPE_ERROR)
1289 self.session.open( MessageBox, _("1:SC_NOT_VALID_ATR"), MessageBox.TYPE_ERROR)
1291 self.session.open( MessageBox, _("1:SC_READ_TIMEOUT"), MessageBox.TYPE_ERROR)
1292 self.rlist[which]="fail"
1293 self["resultlist"].updateList(self.rlist)
1296 def remove_card(self):
1297 index = self["testlist"].getCurrent()[1]
1299 result = eSctest.getInstance().eject_smart_card("/dev/sci0")
1301 result = eSctest.getInstance().eject_smart_card("/dev/sci1")
1302 print 'remove result' ,result
1304 self.rlist[index]="pass"
1305 self.result += (1<<index)
1308 self.session.open( MessageBox, _("2:NO_DEV_FOUND"), MessageBox.TYPE_ERROR)
1310 self.session.open( MessageBox, _("2:SC_NOT_INSERTED"), MessageBox.TYPE_ERROR)
1312 self.session.open( MessageBox, _("2:SC_NOT_VALID_ATR"), MessageBox.TYPE_ERROR)
1314 self.session.open( MessageBox, _("2:SC_NOT_REMOVED"), MessageBox.TYPE_ERROR)
1315 self.rlist[index]="fail"
1316 self["resultlist"].updateList(self.rlist)
1317 self["text"].setText(_("Press OK Key"))
1322 def ScTest(self, yesno):
1325 index = self["testlist"].getCurrent()[1]
1326 result = self.check_smart_card(index)
1328 self.removecard.start(100,True)
1329 self["text"].setText(_("Read Ok. Remove Card!"))
1335 class SmartCardTest(Screen):
1337 <screen position="300,240" size="160,120" title="SmartCard Test" >
1338 <widget name="text" position="10,10" size="140,100" font="Regular;22" />
1341 def __init__(self, session):
1342 self["actions"] = ActionMap(["DirectionActions", "OkCancelActions"],
1344 "cancel": self.keyCancel,
1345 "ok" : self.keyCancel
1348 Screen.__init__(self, session)
1349 # self["text"]=Label(("Press Key LEFT"))
1350 self["text"]=Label(("Testing Smartcard 1..."))
1352 self.smartcardtimer = eTimer()
1353 self.smartcardtimer.callback.append(self.check_smart_card)
1354 self.smartcardtimer.start(100,True)
1356 global smartcardtest
1362 def check_mode(self):
1364 fd = open("/proc/stb/info/version","r")
1366 if int(version,16) <= 0x1200A3:
1370 if int(version,16) < 0x130000:
1372 elif int(version,16) > 0x140000:
1377 def check_smart_card(self):
1378 global smartcardtest
1379 index = self.smartcard
1382 if self.Testmode==0:
1383 result = eSctest.getInstance().check_smart_card("/dev/sci0")
1385 result = eSctest.getInstance().n_check_smart_card("/dev/sci0")
1387 if self.Testmode==0:
1388 result = eSctest.getInstance().check_smart_card("/dev/sci1")
1390 result = eSctest.getInstance().n_check_smart_card("/dev/sci1")
1398 if(index== 0 and self.model== 0):
1400 self["text"].setText(_("Testing Smartcard 2..."))
1401 self.smartcardtimer.start(100,True)
1403 elif (index==1 or self.model==1):
1405 # self.session.open( MessageBox, _("Smart Card OK!!"), MessageBox.TYPE_INFO,2)
1407 self["text"].setText(_("Smart Card OK!!"))
1408 self.smartcardtimer.stop()
1409 # self.session.openWithCallback(self.check6, MessageBox, _("Scart loop ok?"), MessageBox.TYPE_INFO)
1412 self.session.open( MessageBox, _("%d:NO_DEV_FOUND"%(index+1)), MessageBox.TYPE_ERROR)
1414 self.session.open( MessageBox, _("%d:SC_NOT_INSERTED"%(index+1)), MessageBox.TYPE_ERROR)
1416 self.session.open( MessageBox, _("%d:SC_NOT_VALID_ATR"%(index+1)), MessageBox.TYPE_ERROR)
1418 self.session.open( MessageBox, _("%d:SC_READ_TIMEOUT"%(index+1)), MessageBox.TYPE_ERROR)
1420 self["text"].setText(_("Smart Card 1 Error!"))
1422 self["text"].setText(_("Smart Card 2 Error!"))
1423 self.smartcardtimer.stop()
1426 def keyCancel(self):
1433 class FrontTest(Screen):
1435 <screen position="260,240" size="200,180" title="Front Test" >
1436 <widget name="text" position="10,10" size="180,160" font="Regular;22" />
1439 def __init__(self, session):
1440 self["actions"] = ActionMap(["DirectionActions", "OkCancelActions"],
1444 "down":self.keyDown,
1445 "cancel": self.keyCancel,
1448 Screen.__init__(self, session)
1449 self["text"]=Label(("Wheel LEFT"))
1452 self.fronttimer= eTimer()
1453 self.fronttimer.callback.append(self.FrontAnimate)
1454 self.frontturnonoff = 0
1455 eSctest.getInstance().VFD_Open()
1456 self.keytimeout = eTimer()
1457 self.keytimeout.callback.append(self.KeyTimeOut)
1458 self.keytimeout.start(5000,True)
1460 def KeyTimeOut(self):
1462 self["text"].setText(("Wheel LEFT ERROR"))
1463 elif self.step ==2 :
1464 self["text"].setText(("Wheel RIGHT ERROR"))
1465 elif self.step == 3:
1466 self["text"].setText(("Wheel BUTTON ERROR"))
1470 def keyCancel(self):
1472 self.fronttimer.stop()
1473 eSctest.getInstance().VFD_Close()
1482 self.keytimeout.stop()
1483 self.keytimeout.start(5000,True)
1485 self["text"].setText(_("Press Front Wheel"))
1489 self.keytimeout.stop()
1490 self.keytimeout.start(5000,True)
1492 self["text"].setText(_("Wheel RIGHT"))
1498 self.keytimeout.stop()
1500 self.fronttimer.start(1000,True)
1501 self["text"].setText(("Front Test OK! Press Exit Key"))
1502 # elif self.step==4:
1504 # self.fronttimer.stop()
1505 # eSctest.getInstance().VFD_Close()
1509 def FrontAnimate(self):
1510 if (self.frontturnonoff==0):
1511 eSctest.getInstance().turnon_VFD()
1512 self.frontturnonoff = 1
1514 self.frontturnonoff = 0
1515 eSctest.getInstance().turnoff_VFD()
1516 self.fronttimer.start(1000,True)
1519 class FrontTest_solo(Screen):
1521 <screen position="260,240" size="200,180" title="Front Test" >
1522 <widget name="text" position="10,10" size="180,160" font="Regular;22" />
1525 def __init__(self, session):
1526 self["actions"] = ActionMap(["DirectionActions", "OkCancelActions","GlobalActions"],
1529 "cancel": self.keyCancel,
1530 "left": self.keyleft,
1531 "right": self.keyright,
1532 "power_down": self.keypower,
1533 "volumeUp": self.keyvolup,
1534 "volumeDown": self.keyvoldown,
1537 Screen.__init__(self, session)
1538 self["text"]=Label(("Press Front STANDBY"))
1541 self.fronttimer= eTimer()
1542 self.fronttimer.callback.append(self.FrontAnimate)
1543 self.frontturnonoff = 0
1544 eSctest.getInstance().VFD_Open()
1545 self.keytimeout = eTimer()
1546 self.keytimeout.callback.append(self.KeyTimeOut)
1547 self.keytimeout.start(5000,True)
1549 def KeyTimeOut(self):
1551 self["text"].setText(("Front STANDBY ERROR"))
1552 elif self.step == 2 :
1553 self["text"].setText(("Front CH+ ERROR"))
1554 elif self.step == 3:
1555 self["text"].setText(("Front CH- ERROR"))
1556 elif self.step == 4 :
1557 self["text"].setText(("Front VOL + ERROR"))
1558 elif self.step == 5:
1559 self["text"].setText(("Front VOL - ERROR"))
1566 self.keytimeout.stop()
1567 self.keytimeout.start(5000,True)
1569 self["text"].setText(_("Press Front CH+"))
1573 self.keytimeout.stop()
1574 self.keytimeout.start(5000,True)
1576 self["text"].setText(_("Press Front VOL +"))
1580 self.keytimeout.stop()
1581 self.keytimeout.start(5000,True)
1583 self["text"].setText(_("Press Front CH -"))
1587 self.keytimeout.stop()
1588 self.keytimeout.start(5000,True)
1590 self["text"].setText(_("Press Front VOL -"))
1592 def keyvoldown(self):
1594 self.keytimeout.stop()
1596 self["text"].setText(("Front Test OK! Press Exit Key"))
1598 def keyCancel(self):
1600 self.fronttimer.stop()
1601 eSctest.getInstance().VFD_Close()
1610 self.keytimeout.stop()
1612 self.fronttimer.start(1000,True)
1613 self["text"].setText(("Front Test OK! Press Exit Key"))
1615 def FrontAnimate(self):
1616 if (self.frontturnonoff==0):
1617 eSctest.getInstance().turnon_VFD()
1618 self.frontturnonoff = 1
1620 self.frontturnonoff = 0
1621 eSctest.getInstance().turnoff_VFD()
1622 self.fronttimer.start(1000,True)
1631 class RS232Test(Screen):
1633 <screen position="300,240" size="160,100" title="RS232 Test" >
1634 <widget name="text" position="10,10" size="140,80" font="Regular;22" />
1637 def __init__(self, session):
1638 self["actions"] = ActionMap(["DirectionActions", "OkCancelActions"],
1640 "cancel": self.keyCancel,
1643 Screen.__init__(self, session)
1644 self["text"]=Label(("Press \"Enter\" Key"))
1645 self.timer = eTimer()
1646 self.timer.callback.append(self.checkrs232)
1647 self.timer.start(100, True)
1649 def checkrs232(self):
1652 rs=open('/dev/ttyS0','r')
1654 r,w,e = select.select(rd, [], [], 10)
1669 def keyCancel(self):
1674 class AgingTest(Screen):
1676 <screen position="200,240" size="250,100" title="Aging Test" >
1677 <widget name="text1" position="10,10" size="230,40" font="Regular;22" />
1678 <widget name="text2" position="10,50" size="230,40" font="Regular;22" />
1681 def __init__(self, session):
1682 self["actions"] = ActionMap(["WizardActions","GlobalActions"],
1684 "agingend": self.keyEnd,
1685 "agingfinish": self.keyFinish,
1686 "volumeUp": self.nothing,
1687 "volumeDown": self.nothing,
1688 "volumeMute": self.nothing,
1691 Screen.__init__(self, session)
1692 self["text1"]=Label(("Exit - Press Pause Key"))
1693 self["text2"]=Label(("Reset - Press Stop Key"))
1694 # self.servicelist = ServiceList()
1695 # self.oldref = session.nav.getCurrentlyPlayingServiceReference()
1696 # print "oldref",self.oldref
1697 # session.nav.stopService() # try to disable foreground service
1700 self.tuningtimer = eTimer()
1701 self.tuningtimer.callback.append(self.updateStatus)
1702 # self.tuningtimer.start(2000,True)
1705 def updateStatus(self):
1706 result = eSctest.getInstance().getFrontendstatus(0)
1709 print "eSctest.getInstance().getFrontendstatus - %d"%result
1712 self.session.nav.stopService()
1713 self.session.open( MessageBox, _("Tune 1 Ver Locking Fail..."), MessageBox.TYPE_ERROR)
1718 self.session.nav.stopService()
1719 self.session.open( MessageBox, _("Tune 1 Ver Error %d..."%result), MessageBox.TYPE_ERROR)
1726 if self.oldref is None:
1727 eref = eServiceReference("1:0:19:1324:3EF:1:C00000:0:0:0")
1728 serviceHandler = eServiceCenter.getInstance()
1729 servicelist = serviceHandler.list(eref)
1730 if not servicelist is None:
1731 ref = servicelist.getNext()
1733 ref = self.getCurrentSelection()
1734 print "servicelist none"
1737 self.session.nav.stopService() # try to disable foreground service
1742 ref.setData(4,0x640000)
1743 self.session.nav.playService(ref)
1748 self.session.nav.stopService() # try to disable foreground service
1751 def keyFinish(self):
1754 self.session.nav.stopService() # try to disable foreground service
1766 def main(session, servicelist, **kwargs):
1770 Servicelist = servicelist
1771 bouquets = Servicelist.getBouquetList()
1773 bouquetSel = Session.openWithCallback(cleanup, FactoryTest)
1775 #def Plugins(**kwargs):
1776 # return PluginDescriptor(name=_("Factory Test"), description="Test App for Factory", where = PluginDescriptor.WHERE_EXTENSIONSMENU, fnc=main)