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-06-25"
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.splitlines()
292 if x.startswith('0x00000010:'):
294 if len(macline) < 10:
295 print 'mac dump read error'
297 mac = macline[5]+":"+macline[6]+":"+macline[7]+":"+macline[8]+":"+macline[9]+":"+macline[10]
298 self["mactext"].setText(("MAC : "+mac))
300 def getmacaddr(self):
302 cmd = "nanddump -b -o -l 64 -p /dev/mtd4"
303 self.macConsole = Console()
304 self.macConsole.ePopen(cmd, self.readmac)
308 def TestAction(self):
310 # tlist.append((" 0. Sata & extend hdd test",self.satetestIndex=0))
311 # tlist.append((" 1. USB test",self.usbtestIndex=1))
312 # tlist.append((" 2. Front test",self.fronttestIndex=2))
313 # tlist.append((" 3. Smartcard test",self.smarttestIndex=3))
314 # tlist.append((" 4. T1 H 22K x 4:3 CVBS",self.tuner1_1testIndex=4))
315 # tlist.append((" 5. T1 V 22k o 16:9 RGB",self.tuner1_2testIndex=5))
316 # tlist.append((" 6. T2 H 22k x 4:3 YC",self.tuner2_1testIndex=6))
317 # tlist.append((" 7. T2 V 22k o 16:9 CVBS CAM",self.tuner2_2testIndex=7))
318 # tlist.append((" 8. VCR Scart loop",self.scarttestIndex=8))
319 # tlist.append((" 9. RS232 test",self.rs232testIndex=9))
320 # tlist.append(("10. Ethernet & mac test",self.ethernettestIndex=10))
321 # tlist.append(("11. DRAM test",11))
322 # tlist.append(("12. Flash test",12))
323 # tlist.append(("13. DRAM+Flash test",13))
324 # tlist.append(("11. Factory default",self.fdefaultIndex=11))
325 # tlist.append(("12. Shutdown",self.shutdownIndex=12))
329 print "line - ",self["testlist"].getCurrent()[1]
330 index = self["testlist"].getCurrent()[1]
332 if index==self.satetestIndex:
334 elif index==self.fronttestIndex:
336 elif index>=self.tuner1_1testIndex and index<=self.tuner2_2testIndex:
338 elif index==self.scarttestIndex:
340 elif index==self.rs232testIndex:
342 elif index==self.usbtestIndex:
344 elif index==self.ethernettestIndex:
346 elif index == self.smarttestIndex:
354 elif index==self.fdefaultIndex:
356 # elif index==self.shutdownIndex:
359 def shutdownaction(self):
360 if self["testlist"].getCurrent()[1] == self.shutdownIndex:
366 self.satatimer.start(100,True)
369 # print "try", self.satatry
370 if self.satatry == 0:
373 self.rlist[self["testlist"].getCurrent()[1]]="try %d"%self.satatry
374 self["resultlist"].updateList(self.rlist)
380 mtab = open('/etc/mtab','r')
382 disk = mtab.readline().split(' ')
385 if disk[1].startswith('/media/hdd'):
387 elif disk[1].startswith('/media/sdb1'):
396 self.session.open( MessageBox, _("Sata & extend hdd test error"), MessageBox.TYPE_ERROR)
397 self.rlist[self["testlist"].getCurrent()[1]]="fail"
399 self.satatimer.start(1100,True)
403 self.session.open( MessageBox, _("one hdd test error"), MessageBox.TYPE_ERROR)
404 self.rlist[self["testlist"].getCurrent()[1]]="fail"
406 self.satatimer.start(1100,True)
410 if fileExists("/media/sdb1"):
411 if access("/media/sdb1",F_OK|R_OK|W_OK):
412 dummy=open("/media/sdb1/dummy03","w")
413 dummy.write("complete")
415 dummy=open("/media/sdb1/dummy03","r")
416 if dummy.readline()=="complete":
421 system("rm /media/sdb1/dummy03")
429 if fileExists("/media/hdd"):
430 if access("/media/hdd",F_OK|R_OK|W_OK):
431 dummy=open("/media/hdd/dummy03","w")
432 dummy.write("complete")
434 dummy=open("/media/hdd/dummy03","r")
435 if dummy.readline()=="complete":
440 system("rm /media/hdd/dummy03")
449 self.session.open( MessageBox, _("Sata & extend hdd test pass"), MessageBox.TYPE_INFO)
450 self.rlist[self["testlist"].getCurrent()[1]]="pass"
453 self.session.open( MessageBox, _("one hdd test error"), MessageBox.TYPE_ERROR)
454 self.rlist[self["testlist"].getCurrent()[1]]="fail"
456 self.satatimer.start(1100,True)
459 self.session.open( MessageBox, _("Sata & extend hdd test error"), MessageBox.TYPE_ERROR)
460 self.rlist[self["testlist"].getCurrent()[1]]="fail"
462 self.satatimer.start(1100,True)
466 self.session.openWithCallback(self.displayresult ,FrontTest)
467 elif self.model == 1:
468 self.session.openWithCallback(self.displayresult ,FrontTest_solo)
470 def displayresult(self):
473 self.rlist[self["testlist"].getCurrent()[1]]="pass"
475 self.rlist[self["testlist"].getCurrent()[1]]="fail"
477 INTERNAL_PID_STATUS_NOOP = 0
478 INTERNAL_PID_STATUS_WAITING = 1
479 INTERNAL_PID_STATUS_SUCCESSFUL = 2
480 INTERNAL_PID_STATUS_FAILED = 3
482 def TestTune(self,index):
483 if self.oldref is None:
484 eref = eServiceReference("1:0:19:1324:3EF:1:C00000:0:0:0")
485 serviceHandler = eServiceCenter.getInstance()
486 servicelist = serviceHandler.list(eref)
487 if not servicelist is None:
488 ref = servicelist.getNext()
490 ref = self.getCurrentSelection()
491 print "servicelist none"
494 self.session.nav.stopService() # try to disable foreground service
495 if index==self.tuner1_1testIndex:
500 ref.setData(4,0xA00000)
501 self.session.nav.playService(ref)
502 self.avswitch.setColorFormat(0)
503 self.avswitch.setAspectRatio(0)
504 elif index==self.tuner1_2testIndex:
507 self.camtimer.start(100,True)
509 ref.setData(1,0x1325)
512 ref.setData(4,0x64af79)
513 # ref.setData(0,0x19)
514 # ref.setData(1,0x83)
516 # ref.setData(3,0x85)
517 # ref.setData(4,0x640000)
518 self.session.nav.playService(ref)
519 self.avswitch.setColorFormat(1)
520 self.avswitch.setAspectRatio(6)
521 elif index==self.tuner2_1testIndex:
523 # self.camtimer.start(100,True)
528 ref.setData(4,0x820000)
529 self.session.nav.playService(ref)
530 self.avswitch.setColorFormat(2)
531 self.avswitch.setAspectRatio(0)
532 elif index==self.tuner2_2testIndex:
534 self.camtimer.start(100,True)
535 # ref.setData(0,0x19)
536 # ref.setData(1,0x83)
538 # ref.setData(3,0x85)
539 # ref.setData(4,0xC00000)
540 # ikseong - for 22000 tp ( /home/ikseong/share/lamedb_ORF)
542 ref.setData(1,0x1325)
545 ref.setData(4,0xC00000)
546 self.session.nav.playService(ref)
547 self.avswitch.setColorFormat(0)
548 self.avswitch.setAspectRatio(6)
549 self.tuningtimer.start(2000,True)
550 self.tunemsgtimer.start(3000, True)
553 if self.camstep == 1:
555 state = eDVBCI_UI.getInstance().getState(slot)
556 print '-1-stat',state
559 self.camtimer.start(100,True)
561 self.session.nav.stopService()
562 self.session.open( MessageBox, _("CAM1_NOT_INSERTED\nPress exit!"), MessageBox.TYPE_ERROR)
563 self.rlist[self["testlist"].getCurrent()[1]]="fail"
564 self.tunemsgtimer.stop()
565 # self.rlist[index]="fail"
566 # self["resultlist"].updateList(self.rlist)
567 elif self.camstep == 2:
569 appname = eDVBCI_UI.getInstance().getAppName(slot)
570 print 'appname',appname
572 self.session.nav.stopService()
573 self.session.open( MessageBox, _("NO_GET_APPNAME\nPress exit!"), MessageBox.TYPE_ERROR)
574 self.rlist[self["testlist"].getCurrent()[1]]="fail"
575 self.tunemsgtimer.stop()
578 self.camtimer.start(100,True)
579 elif self.camstep==3:
581 state = eDVBCI_UI.getInstance().getState(slot)
582 print '-2-stat',state
585 self.camtimer.start(100,True)
587 self.session.nav.stopService()
588 self.session.open( MessageBox, _("CAM2_NOT_INSERTED\nPress exit!"), MessageBox.TYPE_ERROR)
589 self.rlist[self["testlist"].getCurrent()[1]]="fail"
590 self.tunemsgtimer.stop()
591 # self.rlist[index]="fail"
592 # self["resultlist"].updateList(self.rlist)
593 elif self.camstep == 4:
595 appname = eDVBCI_UI.getInstance().getAppName(slot)
596 print 'appname',appname
598 self.session.nav.stopService()
599 self.session.open( MessageBox, _("NO_GET_APPNAME\nPress exit!"), MessageBox.TYPE_ERROR)
600 self.rlist[self["testlist"].getCurrent()[1]]="fail"
601 self.tunemsgtimer.stop()
605 # self.session.open( MessageBox, _("CAM OK!"), MessageBox.TYPE_INFO,2)
607 # ikseong - for 22000 tp
609 filename = ("/proc/stb/tsmux/ci0_input")
610 fd = open(filename,'w')
614 # filename = ("/proc/stb/tsmux/ci1_input")
615 # fd = open(filename,'w')
618 fd=open("/proc/stb/tsmux/input1","w")
619 # fd=open("/proc/stb/tsmux/input0","w")
622 print "CI loop test!!!!!!!!!!!!!!"
624 def resetSource(self):
625 fd=open("/proc/stb/tsmux/input1","w")
628 print "CI loop test end!!!!!!!!!!!!!!"
631 self.tuningtimer.stop()
632 self.session.openWithCallback(self.tuneback, MessageBox, _("%s ok?" %(self["testlist"].getCurrent()[0])), MessageBox.TYPE_YESNO)
634 def tuneback(self,yesno):
635 self.session.nav.stopService() # try to disable foreground service
637 self.rlist[self["testlist"].getCurrent()[1]]="pass"
638 if self.tunerlock == 0:
639 self.rlist[self["testlist"].getCurrent()[1]]="fail"
640 elif self["testlist"].getCurrent()[1] == 7 and self.camstep < 5:
641 self.rlist[self["testlist"].getCurrent()[1]]="fail"
643 self.rlist[self["testlist"].getCurrent()[1]]="fail"
644 if self["testlist"].getCurrent()[1] == 6:
645 self.avswitch.setColorFormat(0)
647 self["resultlist"].updateList(self.rlist)
650 self.avswitch.setInput("SCART")
652 self.session.openWithCallback(self.check6, MessageBox, _("Scart loop ok?"), MessageBox.TYPE_YESNO)
654 def check6(self,yesno):
656 self.rlist[self["testlist"].getCurrent()[1]]="pass"
658 self.rlist[self["testlist"].getCurrent()[1]]="fail"
659 self.avswitch.setInput("ENCODER")
664 self.rlist[self["testlist"].getCurrent()[1]]="pass"
666 self.rlist[self["testlist"].getCurrent()[1]]="fail"
669 self.session.openWithCallback(self.check7,RS232Test)
674 if self.oldref is None:
675 eref = eServiceReference("1:0:19:1324:3EF:1:C00000:0:0:0")
676 serviceHandler = eServiceCenter.getInstance()
677 servicelist = serviceHandler.list(eref)
678 if not servicelist is None:
679 ref = servicelist.getNext()
681 ref = self.getCurrentSelection()
682 print "servicelist none"
685 self.session.nav.stopService() # try to disable foreground service
687 ref.setData(1,0x1325)
690 ref.setData(4,0x64af79)
692 # ref.setData(1,0x6D3)
694 # ref.setData(3,0xA4)
695 # ref.setData(4,0xA00000)
696 self.session.nav.playService(ref)
697 self.avswitch.setColorFormat(0)
698 self.avswitch.setAspectRatio(0)
699 self.tuningtimer.start(2000,True)
702 def checkaging(self):
705 self["testlist"].moveToIndex(self.fdefaultIndex)
707 self["testlist"].moveToIndex(self.shutdownIndex)
709 # self["testlist"].instance.moveSelection(self["testlist"].instance.moveDown)
717 mtab = open('/etc/mtab','r')
719 disk = mtab.readline().split(' ')
722 if disk[1].startswith('/media/hdd'):
724 elif disk[1].startswith('/media/sdb1'):
726 elif disk[1].startswith('/media/sd'):
732 self.session.open( MessageBox, _("USB test pass %d devices\nPress OK!"%result), MessageBox.TYPE_INFO)
733 self.rlist[self["testlist"].getCurrent()[1]]="pass"
735 self.session.open( MessageBox, _("USB test error : Success-%d"%result+" Fail-%d\nPress EXIT!"%(3-result)), MessageBox.TYPE_ERROR)
736 self.rlist[self["testlist"].getCurrent()[1]]="fail"
741 self.session.open( MessageBox, _("USB test pass %d devices\nPress OK!"%result), MessageBox.TYPE_INFO)
742 self.rlist[self["testlist"].getCurrent()[1]]="pass"
744 self.session.open( MessageBox, _("USB test error : Success-%d"%result+" Fail-%d\nPress EXIT!"%(3-result)), MessageBox.TYPE_ERROR)
745 self.rlist[self["testlist"].getCurrent()[1]]="fail"
749 mtab = open('/etc/mtab','r')
751 disk = mtab.readline().split(' ')
754 if disk[1].startswith('/media/'):
760 self.session.open( MessageBox, _("USB test pass %d devices\nPress OK!"%result), MessageBox.TYPE_INFO)
761 self.rlist[self["testlist"].getCurrent()[1]]="pass"
763 self.session.open( MessageBox, _("USB test error : Success-%d"%result+" Fail-%d\nPress EXIT!"%(2-result)), MessageBox.TYPE_ERROR)
764 self.rlist[self["testlist"].getCurrent()[1]]="fail"
769 self.session.open( MessageBox, _("USB test pass %d devices\nPress OK!"%result), MessageBox.TYPE_INFO)
770 self.rlist[self["testlist"].getCurrent()[1]]="pass"
772 self.session.open( MessageBox, _("USB test error : Success-%d"%result+" Fail-%d\nPress EXIT!"%(2-result)), MessageBox.TYPE_ERROR)
773 self.rlist[self["testlist"].getCurrent()[1]]="fail"
778 # system("/etc/init.d/networking stop")
779 system("ifconfig eth0 192.168.0.10")
780 # system("/etc/init.d/networking start")
781 cmd1 = "ping -c 1 192.168.0.100"
782 self.PingConsole = Console()
783 self.PingConsole.ePopen(cmd1, self.checkNetworkStateFinished,self.NetworkStatedataAvail)
785 def checkNetworkStateFinished(self, result, retval,extra_args):
786 (statecallback) = extra_args
787 if self.PingConsole is not None:
789 self.PingConsole = None
790 content = result.splitlines()
791 # print 'content',content
792 x = content[4].split()
802 def NetworkStatedataAvail(self,data):
807 # self.session.open( MessageBox, _("Ping test pass"), MessageBox.TYPE_INFO,2)
808 self.session.openWithCallback(self.openMacConfig ,MessageBox, _("Ping test pass"), MessageBox.TYPE_INFO,2)
813 self.session.open( MessageBox, _("Ping test fail\nPress exit"), MessageBox.TYPE_ERROR)
819 def openMacConfig(self, ret=False):
820 self.session.openWithCallback(self.macresult ,MacConfig)
825 self.rlist[self.ethernettestIndex]="pass"
826 # self.rlist[self["testlist"].getCurrent()[1]]="pass"
828 self.rlist[self.ethernettestIndex]="fail"
829 # self.rlist[self["testlist"].getCurrent()[1]]="fail"
833 def MemTest(self, which):
837 result = eMemtest.getInstance().dramtest()
839 result = eMemtest.getInstance().flashtest()
842 result = eMemtest.getInstance().dramtest()
843 result = eMemtest.getInstance().flashtest()
849 print index,self.rlist[index]
850 self.rlist[index]="pass"
852 print index,self.rlist[index]
853 self.rlist[index]="fail"
854 self["resultlist"].updateList(self.rlist)
856 def scciresult(self):
858 if smartcardtest == 1:
859 self.rlist[self["testlist"].getCurrent()[1]]="pass"
861 self.rlist[self["testlist"].getCurrent()[1]]="fail"
864 self.session.openWithCallback(self.scciresult ,SmartCardTest)
878 system("rm -R /etc/enigma2")
879 system("cp -R /usr/share/enigma2/defaults /etc/enigma2")
880 self.rlist[self["testlist"].getCurrent()[1]]="pass"
881 self["resultlist"].updateList(self.rlist)
883 self.rlist[self["testlist"].getCurrent()[1]]="fail"
884 self["resultlist"].updateList(self.rlist)
885 self.session.open( MessageBox, _("Factory reset fail"), MessageBox.TYPE_ERROR)
888 self.session.openWithCallback(self.shutdown ,MessageBox, _("Do you want to shut down?"), MessageBox.TYPE_YESNO)
890 def shutdown(self, yesno):
893 system("/usr/bin/showiframe /boot/backdrop.mvi")
905 class MacConfig(Screen):
907 <screen position="100,250" size="520,100" title="Mac Config" >
908 <eLabel text="Mac Address " position="10,15" size="200,40" font="Regular;30" />
909 <widget name="text" position="230,15" size="230,40" font="Regular;30" />
910 <widget name="text1" position="470,15" size="40,40" font="Regular;30" />
911 <eLabel text=" " position="5,55" zPosition="-1" size="510,5" backgroundColor="#02e1e8e6" />
912 <widget name="stattext" position="30,75" size="400,25" font="Regular;20" />
915 def __init__(self, session):
916 self["actions"] = ActionMap(["DirectionActions","OkCancelActions"],
919 "left": self.keyleft,
920 "right": self.keyright,
921 "cancel": self.keyCancel,
924 Screen.__init__(self, session)
928 self.macaddr = "000000000000"
929 self.NetworkState = 0
930 self["text"]=Label((self.macaddr))
931 self["text1"]= Label(("< >"))
932 self["stattext"]= Label((""))
940 def loadmacaddr(self):
944 mtab = open('/etc/mtab','r')
946 disk = mtab.readline().split(' ')
949 if disk[1].startswith('/media/sd') or disk[1].startswith('/media/hdd'):
950 print 'try..',disk[1]
951 if fileExists(disk[1]+"/macinfo.txt"):
952 self.macfd = open(disk[1]+"/macinfo.txt","r+")
955 self["text"].setText(("cannot read usb!!"))
956 self["text1"].setText((" "))
957 self["stattext"].setText((" Press Exit Key."))
961 macaddr=self.macfd.readline().split(":")
962 self.macaddr=macaddr[1]+macaddr[2]+macaddr[3]+macaddr[4]+macaddr[5]+macaddr[6]
964 self.NetworkState = 1
966 self["text"].setText(("cannot read usb!!"))
967 self["text1"].setText((" "))
968 self["stattext"].setText((" Press Exit Key."))
970 # self.session.open( MessageBox, _("Mac address fail"), MessageBox.TYPE_ERROR)
972 def readmac(self, result, retval,extra_args=None):
973 (statecallback) = extra_args
974 if self.macConsole is not None:
976 self.macConsole = None
977 content =result.splitlines()
979 if x.startswith('0x00000010:'):
981 if len(macline) < 10:
982 print 'mac dump read error'
984 mac = macline[5]+":"+macline[6]+":"+macline[7]+":"+macline[8]+":"+macline[9]+":"+macline[10]
985 self["stattext"].setText(("now : "+mac))
987 def getmacaddr(self):
988 if self.NetworkState==0:
991 cmd = "nanddump -b -o -l 64 -p /dev/mtd4"
992 self.macConsole = Console()
993 self.macConsole.ePopen(cmd, self.readmac)
998 if self.NetworkState==0 or self.pingok<1:
1000 macaddress = long(self.macaddr,16)-1
1002 macaddress = 0xffffffffffff
1003 self.macaddr = "%012x"%macaddress
1007 if self.NetworkState==0 or self.pingok<1:
1009 macaddress = long(self.macaddr,16)+1
1010 if macaddress > 0xffffffffffff:
1012 self.macaddr = "%012x"%macaddress
1015 def displaymac(self):
1016 macaddr= self.macaddr
1017 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))))
1020 if self.NetworkState==0 or self.pingok<1:
1023 macaddr = self.macaddr
1024 #make_mac_sector 00-99-99-99-00-00 > /tmp/mac.sector
1025 #flash_eraseall /dev/mtd4
1026 #nandwrite /dev/mtd4 /tmp/mac.sector -p
1027 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))
1029 system("flash_eraseall /dev/mtd4")
1030 system("nandwrite /dev/mtd4 /tmp/mac.sector -p")
1031 macaddress = long(macaddr,16)+1
1032 if macaddress > 0xffffffffffff:
1034 macaddr = "%012x"%macaddress
1035 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))
1037 self.macfd.write(macwritetext)
1040 self.macaddr = macaddr
1043 self.session.open( MessageBox, _("Mac address fail"), MessageBox.TYPE_ERROR)
1048 def keyCancel(self):
1049 if self.pingok == -1:
1060 class ScCiTest(Screen):
1062 <screen position="120,225" size="440,200" title="CI Smartcard Test" >
1063 <widget name="testlist" position="10,0" size="340,120" />
1064 <widget name="resultlist" position="370,0" size="60,120" />
1065 <eLabel text=" " position="5,125" zPosition="-1" size="430,5" backgroundColor="#02e1e8e6" />
1066 <widget name="text" position="10,140" size="420,50" font="Regular;25" />
1069 def __init__(self, session):
1070 self["actions"] = ActionMap(["DirectionActions","OkCancelActions"],
1075 "cancel": self.keyCancel,
1078 Screen.__init__(self, session)
1080 tlist.append(("Smartcard 1 Test",0))
1081 tlist.append(("Smartcard 2 Test",1))
1082 tlist.append(("CI 1 Test",2))
1083 tlist.append(("CI 2 Test",3))
1084 self["testlist"] = MenuList(tlist)
1087 self.rlist.append((".."))
1088 self["resultlist"] = TestResultList(self.rlist)
1090 self.removecard = eTimer()
1091 self.removecard.callback.append(self.remove_card)
1092 self["text"]=Label(("Press OK Key"))
1093 self.camstate= eTimer()
1094 self.camstate.callback.append(self.cam_state)
1098 def keyCancel(self):
1100 print "result ", self.result
1107 self["text"].setText(_("Press OK Key"))
1108 self["testlist"].instance.moveSelection(self["testlist"].instance.moveUp)
1111 self["text"].setText(_("Press OK Key"))
1112 self["testlist"].instance.moveSelection(self["testlist"].instance.moveDown)
1115 print "line - ",self["testlist"].getCurrent()[1]
1116 index = self["testlist"].getCurrent()[1]
1118 if index==0 or index==1:
1119 self["text"].setText(_("Insert Card?"))
1121 elif index ==2 or index==3:
1122 self["text"].setText(_("Insert Cam"))
1128 self.camstate.start(1000,True)
1130 def setSource(self, cislot):
1131 filename = ("/proc/stb/tsmux/ci%d_input"%cislot)
1132 fd = open(filename,'w')
1136 def setInputSource(self, cislot):
1137 fd=open("/proc/stb/tsmux/input0","w")
1144 def resetSource(self):
1145 fd=open("/proc/stb/tsmux/input0","w")
1148 # fd = open("/proc/stb/tsmux/ci0_input","w")
1151 # fd = open("/proc/stb/tsmux/ci1_input","w")
1155 def channelstart(self):
1156 ref = eServiceReference("1:0:19:1324:3EF:1:C00000:0:0:0")
1161 ref.setData(4,0x640000)
1162 self.session.nav.playService(ref)
1164 def channelstop(self):
1165 self.session.nav.stopService() # try to disable foreground service
1167 def cam_state(self):
1168 index = self["testlist"].getCurrent()[1]
1173 print 'cam_state', self.camstep,self.camtry
1174 if self.camstep == 1:
1175 state = eDVBCI_UI.getInstance().getState(slot)
1180 self["text"].setText(_("Getting Cam name...."))
1181 self.camstate.start(5000,True)
1185 self.camstate.start(1000,True)
1187 self.session.open( MessageBox, _("NO_NOT_INSERTED"), MessageBox.TYPE_ERROR)
1188 self.rlist[index]="fail"
1189 self["resultlist"].updateList(self.rlist)
1191 elif self.camstep == 2:
1192 appname = eDVBCI_UI.getInstance().getAppName(slot)
1193 print 'appname',appname
1197 self.camstate.start(1000,True)
1199 self.session.open( MessageBox, _("NO_GET_APPNAME"), MessageBox.TYPE_ERROR)
1200 self.rlist[index]="fail"
1201 self["resultlist"].updateList(self.rlist)
1203 self["text"].setText(_("Get Cam name : %s"%appname+". \n Remove Cam!"))
1205 self.setInputSource(slot)
1206 self.setSource(slot)
1209 self.camstate.start(1000,True)
1210 elif self.camstep==3:
1211 state = eDVBCI_UI.getInstance().getState(slot)
1215 self.result += (1<<index)
1217 self.rlist[index]="pass"
1218 self["text"].setText(_("Press OK Key"))
1219 self["resultlist"].updateList(self.rlist)
1227 self.camstate.start(1000,True)
1230 self.session.open( MessageBox, _("NO_REMOVE_CAM"), MessageBox.TYPE_ERROR)
1231 self.rlist[index]="fail"
1232 self["resultlist"].updateList(self.rlist)
1234 def check_smart_card(self,which):
1238 result = eSctest.getInstance().check_smart_card("/dev/sci0")
1240 result = eSctest.getInstance().check_smart_card("/dev/sci1")
1250 self.session.open( MessageBox, _("1:NO_DEV_FOUND"), MessageBox.TYPE_ERROR)
1252 self.session.open( MessageBox, _("1:SC_NOT_INSERTED"), MessageBox.TYPE_ERROR)
1254 self.session.open( MessageBox, _("1:SC_NOT_VALID_ATR"), MessageBox.TYPE_ERROR)
1256 self.session.open( MessageBox, _("1:SC_READ_TIMEOUT"), MessageBox.TYPE_ERROR)
1257 self.rlist[which]="fail"
1258 self["resultlist"].updateList(self.rlist)
1261 def remove_card(self):
1262 index = self["testlist"].getCurrent()[1]
1264 result = eSctest.getInstance().eject_smart_card("/dev/sci0")
1266 result = eSctest.getInstance().eject_smart_card("/dev/sci1")
1267 print 'remove result' ,result
1269 self.rlist[index]="pass"
1270 self.result += (1<<index)
1273 self.session.open( MessageBox, _("2:NO_DEV_FOUND"), MessageBox.TYPE_ERROR)
1275 self.session.open( MessageBox, _("2:SC_NOT_INSERTED"), MessageBox.TYPE_ERROR)
1277 self.session.open( MessageBox, _("2:SC_NOT_VALID_ATR"), MessageBox.TYPE_ERROR)
1279 self.session.open( MessageBox, _("2:SC_NOT_REMOVED"), MessageBox.TYPE_ERROR)
1280 self.rlist[index]="fail"
1281 self["resultlist"].updateList(self.rlist)
1282 self["text"].setText(_("Press OK Key"))
1287 def ScTest(self, yesno):
1290 index = self["testlist"].getCurrent()[1]
1291 result = self.check_smart_card(index)
1293 self.removecard.start(100,True)
1294 self["text"].setText(_("Read Ok. Remove Card!"))
1300 class SmartCardTest(Screen):
1302 <screen position="300,240" size="160,120" title="SmartCard Test" >
1303 <widget name="text" position="10,10" size="140,100" font="Regular;22" />
1306 def __init__(self, session):
1307 self["actions"] = ActionMap(["DirectionActions", "OkCancelActions"],
1309 "cancel": self.keyCancel,
1310 "ok" : self.keyCancel
1313 Screen.__init__(self, session)
1314 # self["text"]=Label(("Press Key LEFT"))
1315 self["text"]=Label(("Testing Smartcard 1..."))
1317 self.smartcardtimer = eTimer()
1318 self.smartcardtimer.callback.append(self.check_smart_card)
1319 self.smartcardtimer.start(100,True)
1320 self.closetimer = eTimer()
1321 self.closetimer.callback.append(self.close)
1323 global smartcardtest
1329 def check_mode(self):
1331 fd = open("/proc/stb/info/version","r")
1333 if int(version,16) <= 0x1200A3:
1337 if int(version,16) < 0x130000:
1339 elif int(version,16) > 0x140000:
1344 def check_smart_card(self):
1345 global smartcardtest
1346 index = self.smartcard
1349 if self.Testmode==0:
1350 result = eSctest.getInstance().check_smart_card("/dev/sci0")
1352 result = eSctest.getInstance().n_check_smart_card("/dev/sci0")
1354 if self.Testmode==0:
1355 result = eSctest.getInstance().check_smart_card("/dev/sci1")
1357 result = eSctest.getInstance().n_check_smart_card("/dev/sci1")
1365 if(index== 0 and self.model== 0):
1367 self["text"].setText(_("Testing Smartcard 2..."))
1368 self.smartcardtimer.start(100,True)
1370 elif (index==1 or self.model==1):
1372 # self.session.open( MessageBox, _("Smart Card OK!!"), MessageBox.TYPE_INFO,2)
1374 self["text"].setText(_("Smart Card OK!!"))
1375 self.closetimer.start(2000,True)
1376 self.smartcardtimer.stop()
1377 # self.session.openWithCallback(self.check6, MessageBox, _("Scart loop ok?"), MessageBox.TYPE_INFO)
1380 # self.session.open( MessageBox, _("%d:NO_DEV_FOUND"%(index+1)), MessageBox.TYPE_ERROR)
1381 # elif result == -2:
1382 # self.session.open( MessageBox, _("%d:SC_NOT_INSERTED"%(index+1)), MessageBox.TYPE_ERROR)
1383 # elif result == -3:
1384 # self.session.open( MessageBox, _("%d:SC_NOT_VALID_ATR"%(index+1)), MessageBox.TYPE_ERROR)
1385 # elif result == -5:
1386 # self.session.open( MessageBox, _("%d:SC_READ_TIMEOUT"%(index+1)), MessageBox.TYPE_ERROR)
1388 self["text"].setText(_("Smart Card 1 Error!\nerrorcode=%d"%result))
1390 self["text"].setText(_("Smart Card 2 Error!\nerrorcode=%d"%result))
1391 self.closetimer.start(2000,True)
1392 self.smartcardtimer.stop()
1395 def keyCancel(self):
1402 class FrontTest(Screen):
1404 <screen position="260,240" size="200,180" title="Front Test" >
1405 <widget name="text" position="10,10" size="180,160" font="Regular;22" />
1408 def __init__(self, session):
1409 self["actions"] = ActionMap(["DirectionActions", "OkCancelActions"],
1413 "down":self.keyDown,
1414 "cancel": self.keyCancel,
1417 Screen.__init__(self, session)
1418 self["text"]=Label(("Wheel LEFT"))
1421 self.fronttimer= eTimer()
1422 self.fronttimer.callback.append(self.FrontAnimate)
1423 self.frontturnonoff = 0
1424 eSctest.getInstance().VFD_Open()
1425 self.keytimeout = eTimer()
1426 self.keytimeout.callback.append(self.KeyTimeOut)
1427 self.keytimeout.start(5000,True)
1429 def KeyTimeOut(self):
1431 self["text"].setText(("Wheel LEFT ERROR"))
1432 elif self.step ==2 :
1433 self["text"].setText(("Wheel RIGHT ERROR"))
1434 elif self.step == 3:
1435 self["text"].setText(("Wheel BUTTON ERROR"))
1439 def keyCancel(self):
1441 self.fronttimer.stop()
1442 eSctest.getInstance().VFD_Close()
1451 self.keytimeout.stop()
1452 self.keytimeout.start(5000,True)
1454 self["text"].setText(_("Press Front Wheel"))
1458 self.keytimeout.stop()
1459 self.keytimeout.start(5000,True)
1461 self["text"].setText(_("Wheel RIGHT"))
1467 self.keytimeout.stop()
1469 self.fronttimer.start(1000,True)
1470 self["text"].setText(("Front Test OK!\nPress Exit Key"))
1471 # elif self.step==4:
1473 # self.fronttimer.stop()
1474 # eSctest.getInstance().VFD_Close()
1478 def FrontAnimate(self):
1479 if (self.frontturnonoff==0):
1480 eSctest.getInstance().turnon_VFD()
1481 self.frontturnonoff = 1
1483 self.frontturnonoff = 0
1484 eSctest.getInstance().turnoff_VFD()
1485 self.fronttimer.start(1000,True)
1488 class FrontTest_solo(Screen):
1490 <screen position="260,240" size="200,180" title="Front Test" >
1491 <widget name="text" position="10,10" size="180,160" font="Regular;22" />
1494 def __init__(self, session):
1495 self["actions"] = ActionMap(["DirectionActions", "OkCancelActions","GlobalActions"],
1498 "cancel": self.keyCancel,
1499 "left": self.keyleft,
1500 "right": self.keyright,
1501 "power_down": self.keypower,
1502 "volumeUp": self.keyvolup,
1503 "volumeDown": self.keyvoldown,
1506 Screen.__init__(self, session)
1507 self["text"]=Label(("Press Front STANDBY"))
1510 self.fronttimer= eTimer()
1511 self.fronttimer.callback.append(self.FrontAnimate)
1512 self.frontturnonoff = 0
1513 eSctest.getInstance().VFD_Open()
1514 self.keytimeout = eTimer()
1515 self.keytimeout.callback.append(self.KeyTimeOut)
1516 self.keytimeout.start(5000,True)
1518 def KeyTimeOut(self):
1520 self["text"].setText(("Front STANDBY ERROR\nPress exit!"))
1521 elif self.step == 2 :
1522 self["text"].setText(("Front CH - ERROR\nPress exit!"))
1523 elif self.step == 3:
1524 self["text"].setText(("Front CH + ERROR\nPress exit!"))
1525 elif self.step == 4 :
1526 self["text"].setText(("Front VOL - ERROR\nPress exit!"))
1527 elif self.step == 5:
1528 self["text"].setText(("Front VOL + ERROR\nPress exit!"))
1535 self.keytimeout.stop()
1536 self.keytimeout.start(5000,True)
1538 self["text"].setText(_("Press Front CH -"))
1542 self.keytimeout.stop()
1543 self.keytimeout.start(5000,True)
1545 self["text"].setText(_("Press Front VOL -"))
1549 self.keytimeout.stop()
1550 self.keytimeout.start(5000,True)
1552 self["text"].setText(_("Press Front CH +"))
1556 self.keytimeout.stop()
1558 self.fronttimer.start(1000,True)
1559 self["text"].setText(_("Front LED OK?\n\nyes-ok\nno-exit"))
1560 # self["text"].setText(("Front Test OK!\nPress Exit Key"))
1562 def keyvoldown(self):
1564 self.keytimeout.stop()
1565 self.keytimeout.start(5000,True)
1567 self["text"].setText(_("Press Front VOL +"))
1569 def checkled(self, yesno):
1576 def keyCancel(self):
1578 self.fronttimer.stop()
1579 eSctest.getInstance().VFD_Close()
1585 self.fronttimer.stop()
1586 eSctest.getInstance().VFD_Close()
1591 def FrontAnimate(self):
1592 if (self.frontturnonoff==0):
1593 eSctest.getInstance().turnon_VFD()
1594 self.frontturnonoff = 1
1596 self.frontturnonoff = 0
1597 eSctest.getInstance().turnoff_VFD()
1598 self.fronttimer.start(1000,True)
1607 class RS232Test(Screen):
1609 <screen position="300,240" size="160,100" title="RS232 Test" >
1610 <widget name="text" position="10,10" size="140,80" font="Regular;22" />
1613 def __init__(self, session):
1614 self["actions"] = ActionMap(["DirectionActions", "OkCancelActions"],
1616 "cancel": self.keyCancel,
1619 Screen.__init__(self, session)
1620 self["text"]=Label(("Press \"Enter\" Key"))
1621 self.timer = eTimer()
1622 self.timer.callback.append(self.checkrs232)
1623 self.timer.start(100, True)
1625 def checkrs232(self):
1628 rs=open('/dev/ttyS0','r')
1630 r,w,e = select.select(rd, [], [], 10)
1645 def keyCancel(self):
1650 class AgingTest(Screen):
1652 <screen position="200,240" size="250,100" title="Aging Test" >
1653 <widget name="text1" position="10,10" size="230,40" font="Regular;22" />
1654 <widget name="text2" position="10,50" size="230,40" font="Regular;22" />
1657 def __init__(self, session):
1658 self["actions"] = ActionMap(["WizardActions","GlobalActions"],
1660 "agingend": self.keyEnd,
1661 "agingfinish": self.keyFinish,
1662 "volumeUp": self.nothing,
1663 "volumeDown": self.nothing,
1664 "volumeMute": self.nothing,
1667 Screen.__init__(self, session)
1668 self["text1"]=Label(("Exit - Press Pause Key"))
1669 self["text2"]=Label(("Reset - Press Stop Key"))
1670 # self.servicelist = ServiceList()
1671 # self.oldref = session.nav.getCurrentlyPlayingServiceReference()
1672 # print "oldref",self.oldref
1673 # session.nav.stopService() # try to disable foreground service
1676 self.tuningtimer = eTimer()
1677 self.tuningtimer.callback.append(self.updateStatus)
1678 # self.tuningtimer.start(2000,True)
1681 def updateStatus(self):
1682 result = eSctest.getInstance().getFrontendstatus(0)
1685 print "eSctest.getInstance().getFrontendstatus - %d"%result
1688 self.session.nav.stopService()
1689 self.session.open( MessageBox, _("Tune 1 Ver Locking Fail..."), MessageBox.TYPE_ERROR)
1694 self.session.nav.stopService()
1695 self.session.open( MessageBox, _("Tune 1 Ver Error %d..."%result), MessageBox.TYPE_ERROR)
1702 if self.oldref is None:
1703 eref = eServiceReference("1:0:19:1324:3EF:1:C00000:0:0:0")
1704 serviceHandler = eServiceCenter.getInstance()
1705 servicelist = serviceHandler.list(eref)
1706 if not servicelist is None:
1707 ref = servicelist.getNext()
1709 ref = self.getCurrentSelection()
1710 print "servicelist none"
1713 self.session.nav.stopService() # try to disable foreground service
1718 ref.setData(4,0x640000)
1719 self.session.nav.playService(ref)
1724 self.session.nav.stopService() # try to disable foreground service
1727 def keyFinish(self):
1730 self.session.nav.stopService() # try to disable foreground service
1742 def main(session, servicelist, **kwargs):
1746 Servicelist = servicelist
1747 bouquets = Servicelist.getBouquetList()
1749 bouquetSel = Session.openWithCallback(cleanup, FactoryTest)
1751 #def Plugins(**kwargs):
1752 # return PluginDescriptor(name=_("Factory Test"), description="Test App for Factory", where = PluginDescriptor.WHERE_EXTENSIONSMENU, fnc=main)