2beba26869da45061f1880b32a434584cf7d2ac8
[vuplus_dvbapp] / lib / python / Plugins / SystemPlugins / FactoryTest / plugin.py
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
24
25 class TestResultList(HTMLComponent, GUIComponent):
26         def __init__(self, source):
27                 GUIComponent.__init__(self)
28                 self.l = eListboxPythonStringContent()
29                 self.list = source
30                 self.l.setList(self.list)
31
32         GUI_WIDGET = eListbox
33
34         def postWidgetCreate(self, instance):
35                 self.instance.setSelectionEnable(0)
36                 self.instance.setContent(self.l)
37
38         def updateList(self,list):
39                 self.l.setList(list)
40
41 class FactoryTest(Screen):
42         skin = """
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" />                    
49                 </screen>"""
50         def __init__(self, session):
51
52                 self["actions"] = NumberActionMap(["OkCancelActions","WizardActions","NumberActions","ColorActions",],
53                 {
54                         "left": self.nothing,
55                         "right":self.nothing,
56                         "ok": self.TestAction,
57                         "testexit": self.keyCancel,
58                         "agingstart": self.Agingmode,
59                         "up": self.keyup,
60                         "down": self.keydown,
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,
72                 }, -2)
73
74                 Screen.__init__(self, session)
75                 TESTPROGRAM_DATE = "2010-12-14"
76                 TESTPROGRAM_VERSION = "Version 00.01"
77
78                 self.model = 0
79                 self.getModelInfo()
80                 
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"
90                 if self.model == 0:
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                 if self.model == 2:
98                         pass
99                 nimmanager.sec.update()         
100                 
101                 system("cp /usr/lib/enigma2/python/Plugins/SystemPlugins/FactoryTest/testdb /etc/enigma2/lamedb")
102                 db = eDVBDB.getInstance()
103                 db.reloadServicelist()
104
105                 tlist = []
106                 if self.model == 0:
107                         self.satetestIndex=0
108                         tlist.append((" 0. Sata & extend hdd test",self.satetestIndex))
109                         self.usbtestIndex=1
110                         tlist.append((" 1. USB test",self.usbtestIndex))
111                         self.fronttestIndex=2
112                         tlist.append((" 2. Front test",self.fronttestIndex))
113                         self.smarttestIndex=3
114                         tlist.append((" 3. Smartcard test",self.smarttestIndex))
115                         self.tuner1_1testIndex=4
116                         tlist.append((" 4. T1 H 22K x 4:3 CVBS",self.tuner1_1testIndex))
117                         self.tuner1_2testIndex=5
118                         tlist.append((" 5. T1 V 22k o 16:9 RGB",self.tuner1_2testIndex))
119                         self.tuner2_1testIndex=6
120                         tlist.append((" 6. T2 H 22k x 4:3 YC",self.tuner2_1testIndex))
121                         self.tuner2_2testIndex=7
122                         tlist.append((" 7. T2 V 22k o 16:9 CVBS CAM",self.tuner2_2testIndex))
123                         self.scarttestIndex=8
124                         tlist.append((" 8. VCR Scart loop",self.scarttestIndex))
125                         self.rs232testIndex=9
126                         tlist.append((" 9. RS232 test",self.rs232testIndex))
127                         self.ethernettestIndex=10
128                         tlist.append(("10. Ethernet & mac test",self.ethernettestIndex))
129 #               tlist.append(("11. DRAM test",11))
130 #               tlist.append(("12. Flash test",12))
131 #               tlist.append(("13. DRAM+Flash test",13))
132                         self.fdefaultIndex=11
133                         tlist.append(("11. Factory default",self.fdefaultIndex))
134                         self.shutdownIndex=12
135                         tlist.append(("12. Shutdown",self.shutdownIndex))
136                 elif self.model == 1:
137 #                       tlist.append((" 0. Sata & extend hdd test",self.satetestIndex=0))
138                         self.satetestIndex = -1
139                         self.scarttestIndex = -1
140
141
142
143                         self.usbtestIndex=0
144                         tlist.append((" 0. USB test",self.usbtestIndex))
145                         self.fronttestIndex=1
146                         tlist.append((" 1. Front test",self.fronttestIndex))
147                         self.smarttestIndex=2
148                         tlist.append((" 2. Smartcard test",self.smarttestIndex))
149                         self.tuner1_1testIndex=3
150                         tlist.append((" 3. T1 H 22K x 4:3 CVBS",self.tuner1_1testIndex))
151                         self.tuner1_2testIndex=4
152                         tlist.append((" 4. T1 V 22k o 16:9 RGB CAM",self.tuner1_2testIndex))
153                         self.tuner2_2testIndex=4
154 #                       tlist.append((" 6. T2 H 22k x 4:3 YC",self.tuner2_1testIndex=6))
155 #                       tlist.append((" 7. T2 V 22k o 16:9 CVBS CAM",self.tuner2_2testIndex=7))
156 #                       tlist.append((" 8. VCR Scart loop",self.scarttestIndex=8))
157                         self.rs232testIndex=5
158                         tlist.append((" 5. RS232 test",self.rs232testIndex))
159                         self.ethernettestIndex=6
160                         tlist.append((" 6. Ethernet & mac test",self.ethernettestIndex))
161 #               tlist.append(("11. DRAM test",11))
162 #               tlist.append(("12. Flash test",12))
163 #               tlist.append(("13. DRAM+Flash test",13))
164                         self.fdefaultIndex=7
165                         tlist.append((" 7. Factory default",self.fdefaultIndex))
166                         self.shutdownIndex=8
167                         tlist.append((" 8. Shutdown",self.shutdownIndex))
168
169                 elif self.model == 2:
170                         self.scarttestIndex = -1
171                         self.satetestIndex=0
172                         tlist.append((" 0. Sata & extend hdd test",self.satetestIndex))
173                         self.usbtestIndex=1
174                         tlist.append((" 1. USB test",self.usbtestIndex))
175                         self.fronttestIndex=2
176                         tlist.append((" 2. Front test",self.fronttestIndex))
177                         self.smarttestIndex=3
178                         tlist.append((" 3. Smartcard test",self.smarttestIndex))
179                         self.tuner1_1testIndex=4
180                         tlist.append((" 4. T1 H 22K x 4:3 CVBS",self.tuner1_1testIndex))
181                         self.tuner1_2testIndex=5
182                         tlist.append((" 5. T1 V 22k o 16:9 RGB",self.tuner1_2testIndex))
183                         self.tuner2_1testIndex = -1
184                         self.tuner2_2testIndex=6
185                         tlist.append((" 6. T2 DVB-C 4:3 YC CAM",self.tuner2_2testIndex))
186                         self.rs232testIndex=7
187                         tlist.append((" 7. RS232 test",self.rs232testIndex))
188                         self.ethernettestIndex=8
189                         tlist.append(("8. Ethernet & mac test",self.ethernettestIndex))
190                         self.fdefaultIndex=9
191                         tlist.append(("9. Factory default",self.fdefaultIndex))
192                         self.shutdownIndex=10
193                         tlist.append(("10. Shutdown",self.shutdownIndex))
194                         
195                 self.menulength= len(tlist)-1
196                 self["testlist"] = MenuList(tlist)
197                 self.rlist = []
198                 for x in range(self.menulength):
199                         self.rlist.append((".."))
200                 self["resultlist"] = TestResultList(self.rlist)
201                 self.NetworkState = 0
202                 self.first = 0
203
204                 self.avswitch = AVSwitch()
205                 self.memTest = eMemtest()
206                 self.scTest= eSctest()
207                 
208                 self.feid=0
209                 self.agingmode=0
210                 self.testing = 0
211
212                 self.servicelist = ServiceList()
213                 self.oldref = session.nav.getCurrentlyPlayingServiceReference()
214                 print "oldref",self.oldref
215                 session.nav.stopService() # try to disable foreground service
216                 
217                 self.tunemsgtimer = eTimer()
218                 self.tunemsgtimer.callback.append(self.tunemsg)
219
220                 if self.model == 0:
221                         self.cam_index = 7
222                 elif self.model == 1:
223                         self.cam_index = 4
224                 elif self.model == 2:
225                         self.cam_index = 6      
226                 self.camstep = 1
227                 self.camtimer = eTimer()
228                 self.camtimer.callback.append(self.cam_state)
229                 self.mactry = 1
230                 self.getmacaddr()
231                 self.getversion()
232                 
233                 self.tunerlock = 0
234                 self.tuningtimer = eTimer()
235                 self.tuningtimer.callback.append(self.updateStatus)
236
237                 self.satatry = 8
238                 self.satatimer = eTimer()
239                 self.satatimer.callback.append(self.sataCheck)
240
241                 self.usbtimer = eTimer()
242                 self.usbtimer.callback.append(self.usbCheck)
243
244         def getModelInfo(self):
245                 getmodel = 0
246                 if fileExists("/proc/stb/info/vumodel"):
247                         info = open("/proc/stb/info/vumodel").read().strip()
248                         if info == "combo":
249                                 self.model = 2
250                                 getmodel = 1
251                                 print "getModelInfo : combo"
252                         if info == "solo":
253                                 self.model = 1
254                                 getmodel = 1
255                                 print "getModelInfo : solo"
256                         if info == "duo":
257                                 self.model = 0
258                                 getmodel = 1
259                                 print "getModelInfo : duo"
260                 if getmodel == 0 and fileExists("/proc/stb/info/version"):
261                         info = open("/proc/stb/info/version").read()
262 #                       print info,info[:2]
263                         if info[:2] == "14":
264                                 self.model = 1
265                                 print "getModelInfo : solo_"
266                         elif info[:2] == "12":
267                                 self.model = 0
268                                 print "getModelInfo : duo_"
269
270         def nothing(self):
271                 print "nothing"
272
273         def keyup(self):
274                 if self.testing==1:
275                         return
276                 if self["testlist"].getCurrent()[1]==0:
277                         self["testlist"].moveToIndex(self.menulength)
278                 else:
279                         self["testlist"].up()
280
281
282         def keydown(self):
283                 if self.testing==1:
284                         return
285                 if self["testlist"].getCurrent()[1]==(self.menulength):
286                         self["testlist"].moveToIndex(0)
287                 else:
288                         self["testlist"].down()
289
290         def numberaction(self, number):
291                 if self.testing==1:
292                         return
293                 index = int(number)
294                 self["testlist"].moveToIndex(index)
295
296
297         def updateStatus(self):
298                 index = self["testlist"].getCurrent()[1]
299                 if index ==self.tuner1_1testIndex or index==self.tuner1_2testIndex:
300                         tunno = 1
301                         result = eSctest.getInstance().getFrontendstatus(0)
302                 else:
303                         tunno = 2
304                         result = eSctest.getInstance().getFrontendstatus(1)
305
306                 if self.agingmode == 1:
307                         tunno = 1
308                         result = eSctest.getInstance().getFrontendstatus(0)
309                         hv = "Ver"
310                 if self.model == 2 and index==self.tuner2_2testIndex:
311                         hv = ""
312                 elif index == self.tuner1_2testIndex or index==self.tuner2_2testIndex:
313                         hv = "Ver"
314                 else:
315                         hv = "Hor"
316                         
317                 print "eSctest.getInstance().getFrontendstatus - %d"%result
318                 if result == 0:
319                         self.tunerlock = 0
320                         self.tunemsgtimer.stop()
321                         self.session.nav.stopService()
322                         self.avswitch.setColorFormat(0)
323                         self.session.open( MessageBox, _("Tune%d %s Locking Fail..."%(tunno,hv)), MessageBox.TYPE_ERROR)        
324                         if self.agingmode==0:
325                                 self.rlist[self["testlist"].getCurrent()[1]]="fail"
326                         self.agingmode = 0
327                 else :
328                         self.tunerlock = 1
329                         if self.agingmode==1:
330                                 self.session.openWithCallback(self.checkaging,AgingTest)                        
331
332         def getversion(self):
333                 try:
334                         fd = open("/proc/stb/info/version","r")
335                         version = fd.read()
336                         self["testversion"].setText(("Version %s"%version))
337                 except:
338                         self["testversion"].setText(("Version no load"))
339                         
340
341         def getmacaddr(self):
342                 try:
343                         if self.model == 2:
344                                 cmd = "nanddump -s 0x" + str((self.mactry-1)*2) + "0000 -b -o -l 64 -p /dev/mtd5"
345                         elif self.model == 0 or self.model == 1:
346                                 cmd = "nanddump -s 0x" + str((self.mactry-1)*2) + "0000 -b -o -l 64 -p /dev/mtd4"
347                         self.macConsole = Console()     
348                         self.macConsole.ePopen(cmd, self.readmac,self.checkReadmac)     
349                 except:
350                         return
351
352         def readmac(self, result, retval,extra_args=None):
353                 (callback) = extra_args
354                 if self.macConsole is not None:
355                         if retval == 0:
356                                 self.macConsole = None
357                                 macline = None
358                                 content =result.splitlines()
359                                 for x in content:
360                                         if x.startswith('0x000'+str((self.mactry-1)*2)+'0010:'):
361                                                 macline = x.split()
362                                 if macline == None:
363                                         callback(0)
364                                 elif len(macline) < 10: 
365                                         callback(1)
366                                 else:   
367                                         mac = macline[5]+":"+macline[6]+":"+macline[7]+":"+macline[8]+":"+macline[9]+":"+macline[10]
368                                         self["mactext"].setText(("MAC : "+mac))
369                                         callback(2)
370
371         def checkReadmac(self,data):
372                 if data == 0:
373                         print "block %d is bad block" % self.mactry
374                         self.mactry = self.mactry + 1
375                         if self.mactry > 4:
376                                 self.session.open(MessageBox, _("FLASH IS BROKEN"), type = MessageBox.TYPE_INFO, enable_input = False)
377                                 return
378                         else:
379                                 self.getmacaddr()
380                 elif data == 1:
381                         print 'mac dump read error'
382                         return
383                 elif data == 2:
384                         print 'mac address read ok'
385                         return
386                 
387         def TestAction(self):
388 #
389 #                       tlist.append((" 0. Sata & extend hdd test",self.satetestIndex=0))
390 #                       tlist.append((" 1. USB test",self.usbtestIndex=1))
391 #                       tlist.append((" 2. Front test",self.fronttestIndex=2))
392 #                       tlist.append((" 3. Smartcard test",self.smarttestIndex=3))
393 #                       tlist.append((" 4. T1 H 22K x 4:3 CVBS",self.tuner1_1testIndex=4))
394 #                       tlist.append((" 5. T1 V 22k o 16:9 RGB",self.tuner1_2testIndex=5))
395 #                       tlist.append((" 6. T2 H 22k x 4:3 YC",self.tuner2_1testIndex=6))
396 #                       tlist.append((" 7. T2 V 22k o 16:9 CVBS CAM",self.tuner2_2testIndex=7))
397 #                       tlist.append((" 8. VCR Scart loop",self.scarttestIndex=8))
398 #                       tlist.append((" 9. RS232 test",self.rs232testIndex=9))
399 #                       tlist.append(("10. Ethernet & mac test",self.ethernettestIndex=10))
400 #               tlist.append(("11. DRAM test",11))
401 #               tlist.append(("12. Flash test",12))
402 #               tlist.append(("13. DRAM+Flash test",13))
403 #                       tlist.append(("11. Factory default",self.fdefaultIndex=11))
404 #                       tlist.append(("12. Shutdown",self.shutdownIndex=12))
405 #
406                 if self.testing==1:
407                         return
408                 print "line - ",self["testlist"].getCurrent()[1]
409                 index = self["testlist"].getCurrent()[1]
410                 result = 0
411                 if index==self.satetestIndex:
412                         self.Test0()
413                 elif index==self.fronttestIndex:
414                         self.Test1()
415                 elif index>=self.tuner1_1testIndex and index<=self.tuner2_2testIndex:
416                         self.TestTune(index)
417                 elif index==self.scarttestIndex:
418                         self.Test6()
419                 elif index==self.rs232testIndex:
420                         self.Test7()
421                 elif index==self.usbtestIndex:
422                         self.Test8()
423                 elif index==self.ethernettestIndex:
424                         self.Test9()
425                 elif index == self.smarttestIndex:
426                         self.Test10()
427 #               elif index == 11:
428 #                       self.Test11()
429 #               elif index ==12:
430 #                       self.Test12()
431 #               elif index==13:
432 #                       self.Test13()
433                 elif index==self.fdefaultIndex:
434                         self.Test14()
435                 elif index==self.shutdownIndex:
436                         self.Test15()
437                 else:
438                         pass
439
440         def shutdownaction(self):
441                 if self["testlist"].getCurrent()[1] == self.shutdownIndex:
442                         self.Test15()
443
444
445         def Test0(self):
446                 self.satatry = 8
447                 self.satatimer.start(100,True)
448
449         def sataCheck(self):
450 #               print "try", self.satatry
451                 if self.satatry == 0:
452                         displayerror = 1
453                 else:
454                         self.rlist[self["testlist"].getCurrent()[1]]="try %d"%self.satatry
455                         self["resultlist"].updateList(self.rlist)
456                         self.satatry -= 1
457                         displayerror = 0
458                 result =0
459                 try:
460                         if fileExists("/autofs/sdb1"):
461                                 if access("/autofs/sdb1",F_OK|R_OK|W_OK):
462                                         dummy=open("/autofs/sdb1/dummy03","w")
463                                         dummy.write("complete")
464                                         dummy.close()
465                                         dummy=open("/autofs/sdb1/dummy03","r")
466                                         if dummy.readline()=="complete":
467                                                 print "/autofs/sdb1 - complete"
468                                         else:
469                                                 print "/autofs/sdb1 - readline error"
470                                                 result = 1
471                                                 displayerror = 1
472                                         dummy.close()
473                                         system("rm /autofs/sdb1/dummy03")
474                                 else:
475                                         print "/autofs/sdb1 - rw access error"
476                                         result = 1
477                                         displayerror = 1
478                         else:
479                                 print "/autofs/sdb1 - file not exist"
480                                 result = 1
481                 except:
482                         print "/autofs/sdb1 - exceptional error"
483                         result = 1
484                         displayerror = 1
485                 try:
486                         if fileExists("/media/hdd"):
487                                 if access("/media/hdd",F_OK|R_OK|W_OK):
488                                         dummy=open("/media/hdd/dummy03","w")
489                                         dummy.write("complete")
490                                         dummy.close()
491                                         dummy=open("/media/hdd/dummy03","r")
492                                         if dummy.readline()=="complete":
493                                                 print "/media/hdd - complete"
494                                         else:
495                                                 print "/autofs/sdb1 - readline error"
496                                                 result += 1
497                                                 displayerror = 1
498                                         dummy.close()
499                                         system("rm /media/hdd/dummy03")
500                                 else:
501                                         print "/autofs/sdb1 - rw access error"
502                                         result += 1
503                                         displayerror = 1
504                         else:
505                                 print "/autofs/sdb1 - file not exist"
506                                 result += 1
507                 except:
508                         print "/autofs/sdb1 - exceptional error"
509                         result += 1
510                         displayerror = 1
511                 
512                 if result == 0:
513                         self.session.open( MessageBox, _("Sata & extend hdd test pass"), MessageBox.TYPE_INFO)
514                         self.rlist[self["testlist"].getCurrent()[1]]="pass"
515                 elif result == 1:
516                         if displayerror==1:
517                                 self.session.open( MessageBox, _("One hdd test error"), MessageBox.TYPE_ERROR)
518                                 self.rlist[self["testlist"].getCurrent()[1]]="fail"
519                         else:
520                                 self.satatimer.start(1100,True)
521                 else:
522                         if displayerror==1:
523                                 self.session.open( MessageBox, _("Sata & extend hdd test error"), MessageBox.TYPE_ERROR)
524                                 self.rlist[self["testlist"].getCurrent()[1]]="fail"
525                         else:
526                                 self.satatimer.start(1100,True)
527
528         def Test1(self):
529                 if self.model== 0:
530                         self.session.openWithCallback(self.displayresult ,FrontTest)
531                 elif self.model == 1:
532                         self.session.openWithCallback(self.displayresult ,FrontTest_solo)
533                 elif self.model == 2:
534                         self.session.openWithCallback(self.displayresult ,FrontTest_solo)
535
536         def displayresult(self):
537                 global fronttest
538                 if fronttest == 1:
539                         self.rlist[self["testlist"].getCurrent()[1]]="pass"
540                 else:
541                         self.rlist[self["testlist"].getCurrent()[1]]="fail"
542
543         INTERNAL_PID_STATUS_NOOP = 0
544         INTERNAL_PID_STATUS_WAITING = 1
545         INTERNAL_PID_STATUS_SUCCESSFUL = 2
546         INTERNAL_PID_STATUS_FAILED = 3
547
548         def TestTune(self,index):       
549                 if self.oldref is None:
550                         eref = eServiceReference("1:0:19:1324:3EF:1:C00000:0:0:0")
551                         serviceHandler = eServiceCenter.getInstance()
552                         servicelist = serviceHandler.list(eref)
553                         if not servicelist is None:
554                                 ref = servicelist.getNext()
555                         else:
556                                 ref = self.getCurrentSelection()
557                                 print "servicelist none"
558                 else:
559                         ref = self.oldref
560                 self.session.nav.stopService() # try to disable foreground service
561                 if index==self.tuner1_1testIndex:
562                         ref.setData(0,1)
563                         ref.setData(1,0x6D3)
564                         ref.setData(2,0x3)
565                         ref.setData(3,0xA4)
566                         ref.setData(4,0xA00000)
567                         self.session.nav.playService(ref)
568                         self.avswitch.setColorFormat(0)
569                         self.avswitch.setAspectRatio(0)
570                 elif index==self.tuner1_2testIndex:
571                         if self.model == 1:
572                                 self.camstep = 1
573                                 self.camtimer.start(100,True)
574                         ref.setData(0,0x19)
575                         ref.setData(1,0x1325)
576                         ref.setData(2,0x3ef)
577                         ref.setData(3,0x1)
578                         ref.setData(4,0x64af79)
579 #               ref.setData(0,0x19)
580 #               ref.setData(1,0x83)
581 #               ref.setData(2,0x6)
582 #               ref.setData(3,0x85)
583 #               ref.setData(4,0x640000)
584                         self.session.nav.playService(ref)
585                         self.avswitch.setColorFormat(1)
586                         self.avswitch.setAspectRatio(6)                 
587                 elif index==self.tuner2_1testIndex:
588 #                       self.camstep = 1
589 #                       self.camtimer.start(100,True)
590                         ref.setData(0,1)
591                         ref.setData(1,0x6D3)
592                         ref.setData(2,0x3)
593                         ref.setData(3,0xA4)
594                         ref.setData(4,0x820000)
595                         self.session.nav.playService(ref)
596                         self.avswitch.setColorFormat(2)                 
597                         self.avswitch.setAspectRatio(0)                 
598                 elif index==self.tuner2_2testIndex:
599                         self.camstep = 1
600                         self.camtimer.start(100,True)
601 #                       ref.setData(0,0x19)
602 #                       ref.setData(1,0x83)
603 #                       ref.setData(2,0x6)
604 #                       ref.setData(3,0x85)
605 #               ref.setData(4,0xC00000)
606 #       ikseong - for 22000 tp ( /home/ikseong/share/lamedb_ORF)
607                         if self.model==0:
608                                 ref.setData(0,0x19)
609                                 ref.setData(1,0x1325)
610                                 ref.setData(2,0x3ef)
611                                 ref.setData(3,0x1)
612                                 ref.setData(4,0xC00000)
613                                 self.session.nav.playService(ref)
614                                 self.avswitch.setColorFormat(0)                 
615                                 self.avswitch.setAspectRatio(6)
616                         elif self.model==2:
617                                 ref.setData(0,0x19)
618                                 ref.setData(1,0x1325)
619                                 ref.setData(2,0x3ef)
620                                 ref.setData(3,0x1)
621                                 ref.setData(4,0xfff029a)
622                                 self.session.nav.playService(ref)
623                                 self.avswitch.setColorFormat(2)
624                                 self.avswitch.setAspectRatio(0)
625                 self.tuningtimer.start(4000,True)
626                 self.tunemsgtimer.start(5000, True)
627
628         def cam_state(self):
629                 if self.camstep == 1:
630                         slot = 0
631                         state = eDVBCI_UI.getInstance().getState(slot)
632                         print '-1-stat',state
633                         if state > 0:
634                                 self.camstep=2
635                                 self.camtimer.start(100,True)
636                         else:
637                                 self.session.nav.stopService()
638                                 self.session.open( MessageBox, _("CAM1_NOT_INSERTED\nPress exit!"), MessageBox.TYPE_ERROR)
639                                 self.rlist[self["testlist"].getCurrent()[1]]="fail"
640                                 self.tunemsgtimer.stop()
641 #                               self.rlist[index]="fail"
642 #                               self["resultlist"].updateList(self.rlist)
643                 elif self.camstep == 2:
644                         slot = 0
645                         appname = eDVBCI_UI.getInstance().getAppName(slot)
646                         print 'appname',appname
647                         if appname is None:
648                                 self.session.nav.stopService()
649                                 self.session.open( MessageBox, _("NO_GET_APPNAME\nPress exit!"), MessageBox.TYPE_ERROR)
650                                 self.rlist[self["testlist"].getCurrent()[1]]="fail"
651                                 self.tunemsgtimer.stop()                                
652                         else:
653                                 self.camstep=3
654                                 self.camtimer.start(100,True)           
655                 elif self.camstep==3:
656                         slot = 1
657                         state = eDVBCI_UI.getInstance().getState(slot)
658                         print '-2-stat',state
659                         if state > 0:
660                                 self.camstep=4
661                                 self.camtimer.start(100,True)
662                         else:
663                                 self.session.nav.stopService()
664                                 self.session.open( MessageBox, _("CAM2_NOT_INSERTED\nPress exit!"), MessageBox.TYPE_ERROR)
665                                 self.rlist[self["testlist"].getCurrent()[1]]="fail"
666                                 self.tunemsgtimer.stop()                                
667 #                               self.rlist[index]="fail"
668 #                               self["resultlist"].updateList(self.rlist)
669                 elif self.camstep == 4:
670                         slot = 1
671                         appname = eDVBCI_UI.getInstance().getAppName(slot)
672                         print 'appname',appname
673                         if appname is None:
674                                 self.session.nav.stopService()
675                                 self.session.open( MessageBox, _("NO_GET_APPNAME\nPress exit!"), MessageBox.TYPE_ERROR)
676                                 self.rlist[self["testlist"].getCurrent()[1]]="fail"
677                                 self.tunemsgtimer.stop()                                
678                         else:
679                                 self.setSource()
680                                 self.camstep = 5
681 #                               self.session.open( MessageBox, _("CAM OK!"), MessageBox.TYPE_INFO,2)
682
683 #       ikseong - for 22000 tp
684         def setSource(self):
685                 filename = ("/proc/stb/tsmux/ci0_input")
686                 fd = open(filename,'w')
687                 fd.write('B')
688 #               fd.write('A')
689                 fd.close()
690 #               filename = ("/proc/stb/tsmux/ci1_input")
691 #               fd = open(filename,'w')
692 #               fd.write('CI0')
693 #               fd.close()
694                 fd=open("/proc/stb/tsmux/input1","w")
695 #               fd=open("/proc/stb/tsmux/input0","w")
696                 fd.write("CI0")
697                 fd.close()
698                 print "CI loop test!!!!!!!!!!!!!!"
699                         
700         def resetSource(self):
701                 fd=open("/proc/stb/tsmux/input1","w")
702                 fd.write("B")
703                 fd.close()
704                 print "CI loop test end!!!!!!!!!!!!!!"
705                 
706         def tunemsg(self):
707                 self.tuningtimer.stop()
708                 self.session.openWithCallback(self.tuneback, MessageBox, _("%s ok?" %(self["testlist"].getCurrent()[0])), MessageBox.TYPE_YESNO)
709
710         def tuneback(self,yesno):
711                 self.session.nav.stopService() # try to disable foreground service
712                 if yesno:
713                         self.rlist[self["testlist"].getCurrent()[1]]="pass"
714                         if self.tunerlock == 0:
715                                 self.rlist[self["testlist"].getCurrent()[1]]="fail"
716                         elif self["testlist"].getCurrent()[1] == self.cam_index and self.camstep < 5:
717                                 self.rlist[self["testlist"].getCurrent()[1]]="fail"
718                 else:
719                         self.rlist[self["testlist"].getCurrent()[1]]="fail"
720                 if self["testlist"].getCurrent()[1] == 6: # YC
721                         self.avswitch.setColorFormat(0)                 
722                 self.resetSource()
723                 self["resultlist"].updateList(self.rlist)
724                                 
725         def Test6(self):
726                 self.avswitch.setInput("SCART")
727                 sleep(2)
728                 self.session.openWithCallback(self.check6, MessageBox, _("Scart loop ok?"), MessageBox.TYPE_YESNO)
729
730         def check6(self,yesno):
731                 if yesno:
732                         self.rlist[self["testlist"].getCurrent()[1]]="pass"
733                 else:
734                         self.rlist[self["testlist"].getCurrent()[1]]="fail"
735                 self.avswitch.setInput("ENCODER")
736
737         def check7(self):
738                 global rstest
739                 if rstest == 1:
740                         self.rlist[self["testlist"].getCurrent()[1]]="pass"
741                 else:
742                         self.rlist[self["testlist"].getCurrent()[1]]="fail"
743
744         def Test7(self):
745                 self.session.openWithCallback(self.check7,RS232Test)
746
747         def Agingmode(self):
748                 if self.testing==1:
749                         return
750                 if self.oldref is None:
751                         eref = eServiceReference("1:0:19:1324:3EF:1:C00000:0:0:0")
752                         serviceHandler = eServiceCenter.getInstance()
753                         servicelist = serviceHandler.list(eref)
754                         if not servicelist is None:
755                                 ref = servicelist.getNext()
756                         else:
757                                 ref = self.getCurrentSelection()
758                                 print "servicelist none"
759                 else:
760                         ref = self.oldref
761                 self.session.nav.stopService() # try to disable foreground service
762                 ref.setData(0,0x19)
763                 ref.setData(1,0x1325)
764                 ref.setData(2,0x3ef)
765                 ref.setData(3,0x1)
766                 ref.setData(4,0x64af79)
767 #               ref.setData(0,1)
768 #               ref.setData(1,0x6D3)
769 #               ref.setData(2,0x3)
770 #               ref.setData(3,0xA4)
771 #               ref.setData(4,0xA00000)
772                 self.session.nav.playService(ref)
773                 self.avswitch.setColorFormat(0)
774                 self.avswitch.setAspectRatio(0)
775                 self.tuningtimer.start(2000,True)
776                 self.agingmode = 1
777
778         def checkaging(self):
779                 global Agingresult
780                 if(Agingresult ==1):
781                         self["testlist"].moveToIndex(self.fdefaultIndex)
782                         self.Test14()
783                         self["testlist"].moveToIndex(self.shutdownIndex)
784                 self.agingmode = 0
785 #                       self["testlist"].instance.moveSelection(self["testlist"].instance.moveDown)             
786         
787         def Test8(self):
788                 self.usbtry = 9
789                 self.usbtimer.start(100,True)
790
791         def usbCheck(self):
792                 if self.usbtry == 0:
793                         displayerror = 1
794                 else:
795                         self.rlist[self["testlist"].getCurrent()[1]]="try %d"%self.usbtry
796                         self["resultlist"].updateList(self.rlist)
797                         self.usbtry -= 1
798                         displayerror = 0
799
800                 if self.model==0:
801                         devices = [ "/autofs/sdc1", "/autofs/sdd1", "/autofs/sde1" ]
802                 elif self.model==1:
803                         devices = [ "/autofs/sda1", "/autofs/sdb1" ]
804                 elif self.model==2:
805                         devices = [ "/autofs/sdc1", "/autofs/sdd1" ]
806
807                 result=len(devices)
808                 
809                 for dev in devices:
810                         try:
811                                 if fileExists(dev):
812                                         if access(dev,F_OK|R_OK|W_OK):
813                                                 dummy=open(dev+"/dummy03","w")
814                                                 dummy.write("complete")
815                                                 dummy.close()
816                                                 dummy=open(dev+"/dummy03","r")
817                                                 if dummy.readline()=="complete":
818                                                         print dev," - complete"
819                                                 else:
820                                                         print dev," - readline error"
821                                                         result=result -1
822                                                         displayerror = 1
823                                                 dummy.close()
824                                                 system("rm "+dev+"/dummy03")
825                                         else:
826                                                 print dev," - rw access error"
827                                                 result=result -1
828                                                 displayerror = 1
829                                 else:
830                                         print dev," - file not exist"
831                                         result=result-1
832                         except:
833                                 print dev," - exceptional error"
834                                 result=result -1
835                                 displayerror = 1
836         
837                 if result < 0 :
838                         result = 0
839                 elif result == len(devices):
840                         self.session.open( MessageBox, _("USB test pass %d devices\nPress OK!"%result), MessageBox.TYPE_INFO)                   
841                         self.rlist[self["testlist"].getCurrent()[1]]="pass"
842                 else:
843                         if displayerror == 1:
844                                 self.session.open( MessageBox, _("USB test error : Success-%d"%result+" Fail-%d\nPress EXIT!"%(len(devices)-result)), MessageBox.TYPE_ERROR)
845                                 self.rlist[self["testlist"].getCurrent()[1]]="fail"
846                         else:
847                                 self.usbtimer.start(1100,True)
848
849         def pingtest(self):
850                 self.testing = 1
851 #               system("/etc/init.d/networking stop")
852                 system("ifconfig eth0 192.168.0.10")
853 #               system("/etc/init.d/networking start")
854                 cmd1 = "ping -c 1 192.168.0.100"
855                 self.PingConsole = Console()
856                 self.PingConsole.ePopen(cmd1, self.checkNetworkStateFinished,self.NetworkStatedataAvail)
857                 
858         def checkNetworkStateFinished(self, result, retval,extra_args):
859                 (statecallback) = extra_args
860                 if self.PingConsole is not None:
861                         if retval == 0:
862                                 self.PingConsole = None
863                                 content = result.splitlines()
864 #                               print 'content',content
865                                 x = content[4].split()
866 #                               print 'x',x
867                                 if x[0]==x[3]:
868                                         statecallback(1)
869                                 else:
870                                         statecallback(0)                                        
871                         else:
872                                 statecallback(0)
873
874
875         def NetworkStatedataAvail(self,data):
876                 global ethtest
877                 if data == 1:
878                         ethtest = 1
879                         print "success"
880 #                       self.session.open( MessageBox, _("Ping test pass"), MessageBox.TYPE_INFO,2)
881                         self.session.openWithCallback(self.openMacConfig ,MessageBox, _("Ping test pass"), MessageBox.TYPE_INFO,2)
882                 
883                 else:
884                         ethtest = 0
885                         print "fail"
886                         self.session.open( MessageBox, _("Ping test fail\nPress exit"), MessageBox.TYPE_ERROR)
887                         self.macresult()
888
889         def Test9(self):
890                 self.pingtest()
891
892         def openMacConfig(self, ret=False):
893                 self.session.openWithCallback(self.macresult ,MacConfig,mactry=self.mactry)     
894                         
895         def macresult(self):
896                 global ethtest
897                 if ethtest == 1:
898                         self.rlist[self.ethernettestIndex]="pass"               
899 #                       self.rlist[self["testlist"].getCurrent()[1]]="pass"
900                 else:
901                         self.rlist[self.ethernettestIndex]="fail"               
902 #                       self.rlist[self["testlist"].getCurrent()[1]]="fail"
903                 self.getmacaddr()
904                 self.testing = 0                        
905         
906         def MemTest(self, which):
907                 index = which
908                 result = 0
909                 if index==0:
910                         result = eMemtest.getInstance().dramtest()
911                 elif index==1:
912                         result = eMemtest.getInstance().flashtest()
913                         result = 0      #       temp
914                 else:
915                         result = eMemtest.getInstance().dramtest()
916                         result = eMemtest.getInstance().flashtest()
917                         result = 0      #       temp
918                         
919                 index = index+10
920                 
921                 if result == 0:
922                         print index,self.rlist[index]
923                         self.rlist[index]="pass"
924                 else:
925                         print index,self.rlist[index]
926                         self.rlist[index]="fail"
927                 self["resultlist"].updateList(self.rlist)
928                         
929         def scciresult(self):
930                 global smartcardtest
931                 if smartcardtest == 1:
932                         self.rlist[self["testlist"].getCurrent()[1]]="pass"
933                 else:
934                         self.rlist[self["testlist"].getCurrent()[1]]="fail"
935
936         def Test10(self):
937                 self.session.openWithCallback(self.scciresult ,SmartCardTest,stbmodel=self.model)
938
939         def Test11(self):
940                 self.MemTest(1)
941                 
942         def Test12(self):
943                 self.MemTest(2)
944
945         def Test13(self):
946                 self.MemTest(3) 
947
948
949         def Test14(self):
950                 try:
951                         system("rm -R /etc/enigma2")
952                         system("cp -R /usr/share/enigma2/defaults /etc/enigma2")
953                         self.rlist[self["testlist"].getCurrent()[1]]="pass"
954                         self["resultlist"].updateList(self.rlist)
955                 except:
956                         self.rlist[self["testlist"].getCurrent()[1]]="fail"
957                         self["resultlist"].updateList(self.rlist)
958                         self.session.open( MessageBox, _("Factory reset fail"), MessageBox.TYPE_ERROR)
959
960         def Test15(self):
961                 self.session.openWithCallback(self.shutdown ,MessageBox, _("Do you want to shut down?"), MessageBox.TYPE_YESNO)
962
963         def shutdown(self, yesno):
964                 if yesno :
965                         from os import _exit
966                         system("/usr/bin/showiframe /boot/backdrop.mvi")
967                         _exit(1)
968                 else:
969                         return
970                 
971         def keyCancel(self):
972                 if self.testing==1:
973                         return
974                 print "exit"
975                 self.close()
976 #               if self.oldref is not None:
977 #                       self.session.nav.playService(self.oldref)
978
979 ethtest = 0
980 class MacConfig(Screen):
981         skin = """
982                 <screen position="100,250" size="520,100" title="Mac Config" >
983                         <eLabel text="Mac Address " position="10,15" size="200,40" font="Regular;30" />         
984                         <widget name="text" position="230,15" size="230,40" font="Regular;30" />
985                         <widget name="text1" position="470,15" size="40,40" font="Regular;30" />                
986                         <eLabel text=" " position="5,55" zPosition="-1" size="510,5" backgroundColor="#02e1e8e6" />             
987                         <widget name="stattext" position="30,75" size="400,25" font="Regular;20" />
988                 </screen>"""
989
990         def __init__(self, session, mactry = 1):
991                 self["actions"] = ActionMap(["DirectionActions","OkCancelActions"],
992                 {
993                         "ok": self.keyOk,
994                         "left": self.keyleft,
995                         "right": self.keyright,
996                         "cancel": self.keyCancel,
997                 }, -2)
998
999                 Screen.__init__(self, session)
1000
1001                 self.mactry = mactry
1002                 self.model = 0
1003                 self.getModelInfo()
1004 #               self.result = 0
1005                 self.macfd = 0
1006                 self.macaddr = "000000000000"
1007                 self.ReadMacinfo = 0
1008                 self["text"]=Label((self.macaddr))
1009                 self["text1"]= Label(("< >"))
1010                 self["stattext"]= Label((""))
1011                 self.displaymac()
1012                 self.loadmacaddr()
1013                 self.getmacaddr()
1014                 global ethtest
1015                 ethtest = 1
1016
1017         def getModelInfo(self):
1018                 getmodel = 0
1019                 if fileExists("/proc/stb/info/vumodel"):
1020                         info = open("/proc/stb/info/vumodel").read().strip()
1021                         if info == "combo":
1022                                 self.model = 2
1023                                 getmodel = 1
1024                                 print "MacConfig, model : combo"
1025                         if info == "solo":
1026                                 self.model = 1
1027                                 getmodel = 1
1028                                 print "MacConfig, model : solo"
1029                         if info == "duo":
1030                                 self.model = 0
1031                                 getmodel = 1
1032                                 print "MacConfig, model : duo"
1033                 if getmodel == 0 and fileExists("/proc/stb/info/version"):
1034                         info = open("/proc/stb/info/version").read()
1035 #                       print info,info[:2]
1036                         if info[:2] == "14":
1037                                 self.model = 1
1038                                 print "MacConfig, model : solo_"
1039                         elif info[:2] == "12":
1040                                 self.model = 0
1041                                 print "MacConfig, model: duo_"
1042
1043         def loadmacaddr(self):
1044                 try:
1045                         self.macfd = 0
1046
1047                         if self.model==0:
1048                                 devices = ["/autofs/sda1", "/autofs/sdb1", "/autofs/sdc1", "/autofs/sdd1", "/autofs/sde1" ]
1049                         elif self.model==1:
1050                                 devices = [ "/autofs/sda1", "/autofs/sdb1" ]
1051                         elif self.model==2:
1052                                 devices = [ "/autofs/sda1", "/autofs/sdb1", "/autofs/sdc1", "/autofs/sdd1" ]
1053
1054                         for dev in devices:
1055                                 print 'try..',dev
1056                                 if  fileExists(dev+"/macinfo.txt"):
1057                                         self.macfd = open(dev+"/macinfo.txt","r+")
1058                                         break
1059
1060                         if self.macfd == 0:
1061                                 self["text"].setText(("cannot read usb!!"))
1062                                 self["text1"].setText((" "))
1063                                 self["stattext"].setText((" Press Exit Key."))
1064                                 self.ReadMacinfo=0
1065                                 return
1066                         
1067                         macaddr=self.macfd.readline().split(":")
1068                         self.macaddr=macaddr[1]+macaddr[2]+macaddr[3]+macaddr[4]+macaddr[5]+macaddr[6]
1069                         self.displaymac()
1070                         self.ReadMacinfo = 1
1071                 except:
1072                         self["text"].setText(("cannot read usb!!"))
1073                         self["text1"].setText((" "))
1074                         self["stattext"].setText((" Press Exit Key."))
1075                         self.ReadMacinfo=0
1076         
1077         def getmacaddr(self):
1078                 if self.ReadMacinfo==0:
1079                         return
1080                 try:
1081                         if self.model == 2:
1082                                 cmd = "nanddump -s 0x" + str((self.mactry-1)*2) + "0000 -b -o -l 64 -p /dev/mtd5"
1083                         elif self.model == 0 or self.model == 1:
1084                                 cmd = "nanddump -s 0x" + str((self.mactry-1)*2) + "0000 -b -o -l 64 -p /dev/mtd4"
1085                         self.macConsole = Console()     
1086                         self.macConsole.ePopen(cmd, self.readmac,self.checkReadmac)
1087                 except:
1088                         return
1089
1090         def readmac(self, result, retval,extra_args=None):
1091                 (callback) = extra_args
1092                 if self.macConsole is not None:
1093                         if retval == 0:
1094                                 self.macConsole = None
1095                                 macline = None
1096                                 content =result.splitlines()
1097                                 for x in content:
1098                                         if x.startswith('0x000'+str((self.mactry-1)*2)+'0010:'):
1099                                                 macline = x.split()
1100                                 if macline == None:
1101                                         callback(0)
1102                                 elif len(macline) < 10: 
1103                                         callback(1)
1104                                 else:   
1105                                         mac = macline[5]+":"+macline[6]+":"+macline[7]+":"+macline[8]+":"+macline[9]+":"+macline[10]
1106                                         self["stattext"].setText(("now : "+mac))
1107                                         callback(2)
1108
1109         def checkReadmac(self,data):
1110                 if data == 0:
1111                         print "block %d is bad block" % self.mactry
1112                         self.mactry = self.mactry + 1
1113                         if self.mactry > 4:
1114                                 self.session.open(MessageBox, _("FLASH IS BROKEN"), type = MessageBox.TYPE_INFO, enable_input = False)
1115                                 return
1116                         else:
1117                                 self.getmacaddr()
1118                 elif data == 1:
1119                         print 'mac dump read error'
1120                         return
1121                 elif data == 2:
1122                         print 'mac address read ok'
1123                         return
1124
1125                         
1126         def keyleft(self):
1127                 if self.ReadMacinfo==0 :
1128                         return
1129                 macaddress = long(self.macaddr,16)-1
1130                 if macaddress < 0 :
1131                         macaddress = 0xffffffffffff
1132                 self.macaddr = "%012x"%macaddress
1133                 self.displaymac()
1134
1135         def keyright(self):
1136                 if self.ReadMacinfo==0 :
1137                         return
1138                 macaddress = long(self.macaddr,16)+1
1139                 if macaddress > 0xffffffffffff:
1140                         macaddress = 0
1141                 self.macaddr = "%012x"%macaddress
1142                 self.displaymac()
1143
1144         def displaymac(self):
1145                 macaddr= self.macaddr
1146                 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))))
1147
1148         def keyOk(self):
1149                 if self.ReadMacinfo==0 :
1150                         return
1151                 try:
1152                         macaddr = self.macaddr
1153 #make_mac_sector 00-99-99-99-00-00 > /tmp/mac.sector
1154 #flash_eraseall /dev/mtd4
1155 #nandwrite /dev/mtd4 /tmp/mac.sector -p                 
1156                         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))
1157                         system(cmd)
1158                         if self.model == 2:
1159                                 system("flash_eraseall /dev/mtd5")
1160                                 system("nandwrite /dev/mtd5 /tmp/mac.sector -p")
1161                         elif self.model == 0 or self.model ==1 :
1162                                 system("flash_eraseall /dev/mtd4")
1163                                 system("nandwrite /dev/mtd4 /tmp/mac.sector -p")
1164                         macaddress = long(macaddr,16)+1
1165                         if macaddress > 0xffffffffffff:
1166                                 macaddress = 0
1167                         macaddr = "%012x"%macaddress
1168                         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))
1169                         self.macfd.seek(0)
1170                         self.macfd.write(macwritetext)
1171                         self.macfd.close()
1172                         system("sync")
1173                         self.macaddr = macaddr
1174                         self.close()
1175                 except:
1176                         self.session.open( MessageBox, _("Mac address fail"), MessageBox.TYPE_ERROR)
1177                         global ethtest
1178                         ethtest = 0
1179                         self.close()            
1180
1181         def keyCancel(self):
1182                 if self.macfd != 0:
1183                         self.macfd.close()
1184                 global ethtest
1185                 ethtest = 0
1186                 self.close()
1187
1188
1189 sccitest = 0
1190
1191 class ScCiTest(Screen):
1192         skin = """
1193                 <screen position="120,225" size="440,200" title="CI Smartcard Test" >
1194                         <widget name="testlist" position="10,0" size="340,120" />
1195                         <widget name="resultlist" position="370,0" size="60,120" />
1196                         <eLabel text=" " position="5,125" zPosition="-1" size="430,5" backgroundColor="#02e1e8e6" />            
1197                         <widget name="text" position="10,140" size="420,50" font="Regular;25" />
1198                 </screen>"""
1199         step=1
1200         def __init__(self, session):
1201                 self["actions"] = ActionMap(["DirectionActions","OkCancelActions"],
1202                 {
1203                         "ok": self.keyOk,
1204                         "up": self.up,
1205                         "down":self.down,
1206                         "cancel": self.keyCancel,
1207                 }, -2)
1208
1209                 Screen.__init__(self, session)
1210                 tlist = []
1211                 tlist.append(("Smartcard 1 Test",0))
1212                 tlist.append(("Smartcard 2 Test",1))
1213                 tlist.append(("CI 1 Test",2))
1214                 tlist.append(("CI 2 Test",3))
1215                 self["testlist"] = MenuList(tlist)
1216                 self.rlist = []
1217                 for x in range(4):
1218                         self.rlist.append((".."))
1219                 self["resultlist"] = TestResultList(self.rlist)
1220                 self.result = 0
1221                 self.removecard = eTimer()
1222                 self.removecard.callback.append(self.remove_card)
1223                 self["text"]=Label(("Press OK Key"))
1224                 self.camstate= eTimer()
1225                 self.camstate.callback.append(self.cam_state)
1226                 self.camtry = 5
1227                 self.camstep = 0
1228
1229         def keyCancel(self):
1230                 global sccitest
1231                 print "result ", self.result
1232                 if self.result==15:
1233                         sccitest=1
1234                 self.resetSource()
1235                 self.close()
1236
1237         def up(self):
1238                 self["text"].setText(_("Press OK Key"))
1239                 self["testlist"].instance.moveSelection(self["testlist"].instance.moveUp)
1240                 
1241         def down(self):
1242                 self["text"].setText(_("Press OK Key"))
1243                 self["testlist"].instance.moveSelection(self["testlist"].instance.moveDown)
1244                 
1245         def keyOk(self):
1246                 print "line - ",self["testlist"].getCurrent()[1]
1247                 index = self["testlist"].getCurrent()[1]
1248                 result = 0
1249                 if index==0 or index==1:                
1250                         self["text"].setText(_("Insert Card?"))
1251                         self.ScTest(True)
1252                 elif index ==2 or index==3:
1253                         self["text"].setText(_("Insert Cam"))
1254                         self.CamTest()
1255
1256         def CamTest(self):
1257                 self.camtry = 10
1258                 self.camstep = 1
1259                 self.camstate.start(1000,True)          
1260
1261         def setSource(self, cislot):
1262                 filename = ("/proc/stb/tsmux/ci%d_input"%cislot)
1263                 fd = open(filename,'w')
1264                 fd.write('A')
1265                 fd.close()
1266
1267         def setInputSource(self, cislot):
1268                 fd=open("/proc/stb/tsmux/input0","w")
1269                 if cislot==0:
1270                         fd.write("CI0")
1271                 else:
1272                         fd.write("CI1")
1273                 fd.close()
1274                         
1275         def resetSource(self):
1276                 fd=open("/proc/stb/tsmux/input0","w")
1277                 fd.write("A")
1278                 fd.close()
1279 #               fd = open("/proc/stb/tsmux/ci0_input","w")
1280 #               fd.write("CI0")
1281 #               fd.close()
1282 #               fd = open("/proc/stb/tsmux/ci1_input","w")
1283 #               fd.write("CI1")
1284 #               fd.close()
1285
1286         def channelstart(self):
1287                 ref = eServiceReference("1:0:19:1324:3EF:1:C00000:0:0:0")
1288                 ref.setData(0,0x19)
1289                 ref.setData(1,0x83)
1290                 ref.setData(2,0x6)
1291                 ref.setData(3,0x85)
1292                 ref.setData(4,0x640000)
1293                 self.session.nav.playService(ref)
1294
1295         def channelstop(self):
1296                 self.session.nav.stopService() # try to disable foreground service              
1297         
1298         def cam_state(self):
1299                 index = self["testlist"].getCurrent()[1] 
1300                 if (index-2)==0:
1301                         slot = 1
1302                 else:
1303                         slot = 0
1304                 print 'cam_state', self.camstep,self.camtry
1305                 if self.camstep == 1:
1306                         state = eDVBCI_UI.getInstance().getState(slot)
1307                         print 'stat',state
1308                         if state == 1:
1309                                 self.camstep=2
1310                                 self.camtry=10
1311                                 self["text"].setText(_("Getting Cam name...."))
1312                                 self.camstate.start(5000,True)
1313                         else:
1314                                 self.camtry-=1
1315                                 if self.camtry>0:
1316                                         self.camstate.start(1000,True)
1317                                 else:
1318                                         self.session.open( MessageBox, _("NO_NOT_INSERTED"), MessageBox.TYPE_ERROR)
1319                                         self.rlist[index]="fail"
1320                                         self["resultlist"].updateList(self.rlist)
1321
1322                 elif self.camstep == 2:
1323                         appname = eDVBCI_UI.getInstance().getAppName(slot)
1324                         print 'appname',appname
1325                         if appname is None:
1326                                 self.camtry-=1
1327                                 if self.camtry>0:
1328                                         self.camstate.start(1000,True)
1329                                 else:
1330                                         self.session.open( MessageBox, _("NO_GET_APPNAME"), MessageBox.TYPE_ERROR)
1331                                         self.rlist[index]="fail"
1332                                         self["resultlist"].updateList(self.rlist)
1333                         else:
1334                                 self["text"].setText(_("Get Cam name : %s"%appname+". \n Remove Cam!"))
1335                                 self.channelstart()
1336                                 self.setInputSource(slot)
1337                                 self.setSource(slot)
1338                                 self.camstep=3
1339                                 self.camtry=30
1340                                 self.camstate.start(1000,True)          
1341                 elif self.camstep==3:
1342                         state = eDVBCI_UI.getInstance().getState(slot)
1343                         print 'stat', state
1344                         if state == 0:
1345                                 self.channelstop()
1346                                 self.result += (1<<index)
1347                                 print self.result
1348                                 self.rlist[index]="pass"
1349                                 self["text"].setText(_("Press OK Key"))
1350                                 self["resultlist"].updateList(self.rlist)                               
1351                                 if index==2:
1352                                         self.down()
1353                                 elif index == 3:
1354                                         self.keyCancel()
1355                         else:
1356                                 self.camtry-=1
1357                                 if self.camtry>0:
1358                                         self.camstate.start(1000,True)
1359                                 else:
1360                                         self.channelstop()
1361                                         self.session.open( MessageBox, _("NO_REMOVE_CAM"), MessageBox.TYPE_ERROR)
1362                                         self.rlist[index]="fail"
1363                                         self["resultlist"].updateList(self.rlist)
1364
1365         def check_smart_card(self,which):
1366                 index = which
1367                 result  = 0
1368                 if which==0:
1369                         result = eSctest.getInstance().check_smart_card("/dev/sci0")
1370                 elif which ==1:
1371                         result = eSctest.getInstance().check_smart_card("/dev/sci1")
1372                 else:
1373                         result = -1
1374
1375                 print result                    
1376                 
1377                 if result == 0:
1378                         print 'pass'
1379                 else:
1380                         if result ==-1:
1381                                 self.session.open( MessageBox, _("1:NO_DEV_FOUND"), MessageBox.TYPE_ERROR)
1382                         elif result == -2:
1383                                 self.session.open( MessageBox, _("1:SC_NOT_INSERTED"), MessageBox.TYPE_ERROR)
1384                         elif result == -3:
1385                                 self.session.open( MessageBox, _("1:SC_NOT_VALID_ATR"), MessageBox.TYPE_ERROR)
1386                         elif result == -5:
1387                                 self.session.open( MessageBox, _("1:SC_READ_TIMEOUT"), MessageBox.TYPE_ERROR)
1388                         self.rlist[which]="fail"
1389                         self["resultlist"].updateList(self.rlist)
1390                 return result
1391                 
1392         def remove_card(self):
1393                 index = self["testlist"].getCurrent()[1]
1394                 if index==0:
1395                         result = eSctest.getInstance().eject_smart_card("/dev/sci0")    
1396                 elif index==1:
1397                         result = eSctest.getInstance().eject_smart_card("/dev/sci1")    
1398                 print 'remove result' ,result
1399                 if result == 0:
1400                         self.rlist[index]="pass"
1401                         self.result += (1<<index)
1402                 else:
1403                         if result ==-1:
1404                                 self.session.open( MessageBox, _("2:NO_DEV_FOUND"), MessageBox.TYPE_ERROR)
1405                         elif result == -2:
1406                                 self.session.open( MessageBox, _("2:SC_NOT_INSERTED"), MessageBox.TYPE_ERROR)
1407                         elif result == -3:
1408                                 self.session.open( MessageBox, _("2:SC_NOT_VALID_ATR"), MessageBox.TYPE_ERROR)
1409                         elif result == -4:
1410                                 self.session.open( MessageBox, _("2:SC_NOT_REMOVED"), MessageBox.TYPE_ERROR)
1411                         self.rlist[index]="fail"
1412                 self["resultlist"].updateList(self.rlist)
1413                 self["text"].setText(_("Press OK Key"))
1414                 self.down()
1415                 return result
1416         
1417
1418         def ScTest(self, yesno):
1419                 if yesno==False:
1420                         return
1421                 index = self["testlist"].getCurrent()[1]
1422                 result = self.check_smart_card(index)
1423                 if result==0:
1424                         self.removecard.start(100,True)
1425                         self["text"].setText(_("Read Ok. Remove Card!"))
1426                 else:
1427                         return
1428
1429 smartcardtest = 0
1430
1431 class SmartCardTest(Screen):
1432         skin = """
1433                 <screen position="300,240" size="160,120" title="SmartCard Test" >
1434                         <widget name="text" position="10,10" size="140,100" font="Regular;22" />
1435                 </screen>"""
1436
1437         def __init__(self, session, stbmodel = 0):
1438                 self["actions"] = ActionMap(["DirectionActions", "OkCancelActions"],
1439                 {
1440                         "cancel": self.keyCancel,
1441                         "ok" : self.keyCancel
1442                 }, -2)
1443
1444                 Screen.__init__(self, session)
1445 #               self["text"]=Label(("Press Key LEFT"))
1446                 self["text"]=Label(("Testing Smartcard 1..."))
1447                 self.step = 0
1448                 self.smartcardtimer = eTimer()
1449                 self.smartcardtimer.callback.append(self.check_smart_card)
1450                 self.closetimer = eTimer()
1451                 self.closetimer.callback.append(self.close)
1452                 self.smartcard=0
1453                 global smartcardtest
1454                 smartcardtest = 0
1455                 self.model = stbmodel
1456                 self.Testmode = 1
1457                 self.smartcardtimer.start(100,True)
1458
1459         def check_smart_card(self):
1460                 global smartcardtest
1461                 index = self.smartcard
1462                 result  = 0
1463                 if index==0:
1464                         if self.Testmode==0:
1465                                 result = eSctest.getInstance().check_smart_card("/dev/sci0")
1466                         else:
1467                                 result = eSctest.getInstance().n_check_smart_card("/dev/sci0")                  
1468                 elif index ==1:
1469                         if self.Testmode==0:
1470                                 result = eSctest.getInstance().check_smart_card("/dev/sci1")
1471                         else:
1472                                 result = eSctest.getInstance().n_check_smart_card("/dev/sci1")                  
1473                 else:
1474                         result = -1
1475
1476                 print result                    
1477                 
1478                 if result == 0:
1479                         print 'pass'
1480                         if(index== 0 and ( self.model== 0 or self.model==2) ):
1481                                 self.smartcard = 1
1482                                 self["text"].setText(_("Testing Smartcard 2..."))
1483                                 self.smartcardtimer.start(100,True)
1484                                 return
1485                         elif (index==1 or self.model==1):
1486                                 smartcardtest = 1
1487 #                               self.session.open( MessageBox, _("Smart Card OK!!"), MessageBox.TYPE_INFO,2)
1488                                 self.step = 1
1489                                 self["text"].setText(_("Smart Card OK!!"))
1490                                 self.closetimer.start(2000,True)
1491                                 self.smartcardtimer.stop()
1492 #                       self.session.openWithCallback(self.check6, MessageBox, _("Scart loop ok?"), MessageBox.TYPE_INFO)
1493                 else:
1494 #                       if result ==-1:
1495 #                               self.session.open( MessageBox, _("%d:NO_DEV_FOUND"%(index+1)), MessageBox.TYPE_ERROR)
1496 #                       elif result == -2:
1497 #                               self.session.open( MessageBox, _("%d:SC_NOT_INSERTED"%(index+1)), MessageBox.TYPE_ERROR)
1498 #                       elif result == -3:
1499 #                               self.session.open( MessageBox, _("%d:SC_NOT_VALID_ATR"%(index+1)), MessageBox.TYPE_ERROR)
1500 #                       elif result == -5:
1501 #                               self.session.open( MessageBox, _("%d:SC_READ_TIMEOUT"%(index+1)), MessageBox.TYPE_ERROR)
1502                         if(index==0):
1503                                 self["text"].setText(_("Smart Card 1 Error!\nerrorcode=%d"%result))
1504                         elif (index==1):
1505                                 self["text"].setText(_("Smart Card 2 Error!\nerrorcode=%d"%result))
1506                         self.closetimer.start(2000,True)
1507                         self.smartcardtimer.stop()
1508
1509                                 
1510         def keyCancel(self):
1511                 self.close()
1512
1513         
1514
1515 fronttest = 0
1516
1517 class FrontTest(Screen):
1518         skin = """
1519                 <screen position="260,240" size="200,180" title="Front Test" >
1520                         <widget name="text" position="10,10" size="180,160" font="Regular;22" />
1521                 </screen>"""
1522
1523         def __init__(self, session):
1524                 self["actions"] = ActionMap(["DirectionActions", "OkCancelActions"],
1525                 {
1526                         "ok": self.keyOk,
1527                         "up":self.keyUp,
1528                         "down":self.keyDown,                    
1529                         "cancel": self.keyCancel,
1530                 }, -2)
1531
1532                 Screen.__init__(self, session)
1533                 self["text"]=Label(("Wheel LEFT"))
1534                 self.step = 1
1535                 
1536                 self.fronttimer= eTimer()
1537                 self.fronttimer.callback.append(self.FrontAnimate)
1538                 self.frontturnonoff = 0
1539                 eSctest.getInstance().VFD_Open()
1540                 self.keytimeout = eTimer()
1541                 self.keytimeout.callback.append(self.KeyTimeOut)
1542                 self.keytimeout.start(5000,True)
1543
1544         def KeyTimeOut(self):
1545                 if self.step == 1:
1546                         self["text"].setText(("Wheel LEFT ERROR"))
1547                 elif self.step ==2 :
1548                         self["text"].setText(("Wheel RIGHT ERROR"))
1549                 elif self.step == 3:
1550                         self["text"].setText(("Wheel BUTTON ERROR"))
1551                 self.step = 0
1552 #               self.keyCancel()
1553                                 
1554         def keyCancel(self):
1555                 global fronttest
1556                 self.fronttimer.stop()
1557                 eSctest.getInstance().VFD_Close()
1558                 if self.step==4:
1559                         fronttest = 1
1560                 else:
1561                         fronttest = 0
1562                 self.close()
1563
1564         def keyDown(self):
1565                 if self.step==2:
1566                         self.keytimeout.stop()
1567                         self.keytimeout.start(5000,True)
1568                         self.step = 3
1569                         self["text"].setText(_("Press Front Wheel"))
1570
1571         def keyUp(self):
1572                 if self.step==1:
1573                         self.keytimeout.stop()
1574                         self.keytimeout.start(5000,True)
1575                         self.step=2
1576                         self["text"].setText(_("Wheel RIGHT"))
1577 #               else:
1578 #                       print ""
1579
1580         def keyOk(self):
1581                 if self.step == 3:
1582                         self.keytimeout.stop()
1583                         self.step =4
1584                         self.fronttimer.start(1000,True)
1585                         self["text"].setText(("Front Test OK!\nPress Exit Key"))
1586 #               elif self.step==4:
1587 #                       global fronttest
1588 #                       self.fronttimer.stop()
1589 #                       eSctest.getInstance().VFD_Close()
1590 #                       fronttest = 1
1591 #                       self.close()
1592
1593         def FrontAnimate(self):
1594                 if (self.frontturnonoff==0):
1595                         eSctest.getInstance().turnon_VFD()
1596                         self.frontturnonoff = 1
1597                 else:
1598                         self.frontturnonoff = 0
1599                         eSctest.getInstance().turnoff_VFD()
1600                 self.fronttimer.start(1000,True)
1601                 
1602
1603 class FrontTest_solo(Screen):
1604         skin = """
1605                 <screen position="260,240" size="200,180" title="Front Test" >
1606                         <widget name="text" position="10,10" size="180,160" font="Regular;22" />
1607                 </screen>"""
1608
1609         def __init__(self, session):
1610                 self["actions"] = ActionMap(["DirectionActions", "OkCancelActions","GlobalActions"],
1611                 {
1612                         "ok": self.keyOk,
1613                         "cancel": self.keyCancel,
1614                         "left": self.keyleft,
1615                         "right": self.keyright,
1616                         "power_down": self.keypower,
1617                         "volumeUp": self.keyvolup,
1618                         "volumeDown": self.keyvoldown,
1619                 }, -2)
1620
1621                 Screen.__init__(self, session)
1622                 self["text"]=Label(("Press Front STANDBY"))
1623                 self.step = 1
1624                 
1625                 self.fronttimer= eTimer()
1626                 self.fronttimer.callback.append(self.FrontAnimate)
1627                 self.frontturnonoff = 0
1628                 eSctest.getInstance().VFD_Open()
1629                 self.keytimeout = eTimer()
1630                 self.keytimeout.callback.append(self.KeyTimeOut)
1631                 self.keytimeout.start(5000,True)
1632
1633         def KeyTimeOut(self):
1634                 if self.step == 1:
1635                         self["text"].setText(("Front STANDBY ERROR\nPress exit!"))
1636                 elif self.step == 2 :
1637                         self["text"].setText(("Front CH - ERROR\nPress exit!"))
1638                 elif self.step == 3:
1639                         self["text"].setText(("Front CH + ERROR\nPress exit!"))
1640                 elif self.step == 4 :
1641                         self["text"].setText(("Front VOL - ERROR\nPress exit!"))
1642                 elif self.step == 5:
1643                         self["text"].setText(("Front VOL + ERROR\nPress exit!"))
1644                         
1645                 self.step = 0
1646 #               self.keyCancel()
1647
1648         def keypower(self):
1649                 if self.step== 1:
1650                         self.keytimeout.stop()
1651                         self.keytimeout.start(5000,True)
1652                         self.step = 2
1653                         self["text"].setText(_("Press Front CH -"))
1654                         
1655         def keyright(self):
1656                 if self.step== 3:
1657                         self.keytimeout.stop()
1658                         self.keytimeout.start(5000,True)
1659                         self.step = 4
1660                         self["text"].setText(_("Press Front VOL -"))
1661                         
1662         def keyleft(self):
1663                 if self.step== 2:
1664                         self.keytimeout.stop()
1665                         self.keytimeout.start(5000,True)
1666                         self.step = 3
1667                         self["text"].setText(_("Press Front CH +"))
1668
1669         def keyvolup(self):
1670                 if self.step== 5:
1671                         self.keytimeout.stop()
1672                         self.step = 6
1673                         self.fronttimer.start(1000,True)
1674                         self["text"].setText(_("Front LED OK?\n\nyes-ok\nno-exit"))                     
1675 #                       self["text"].setText(("Front Test OK!\nPress Exit Key"))
1676                 
1677         def keyvoldown(self):
1678                 if self.step== 4:
1679                         self.keytimeout.stop()
1680                         self.keytimeout.start(5000,True)
1681                         self.step = 5
1682                         self["text"].setText(_("Press Front VOL +"))
1683
1684         def checkled(self, yesno):
1685                 if yesno :
1686                         self.step=6
1687                 else:
1688                         self.step=0
1689                 self.keyCancel()
1690                         
1691         def keyCancel(self):
1692                 global fronttest
1693                 self.fronttimer.stop()
1694                 eSctest.getInstance().VFD_Close()
1695                 fronttest = 0
1696                 self.close()
1697
1698         def keyOk(self):
1699                 global fronttest
1700                 self.fronttimer.stop()
1701                 eSctest.getInstance().VFD_Close()
1702                 if self.step == 6:
1703                         fronttest = 1
1704                 self.close()
1705
1706         def FrontAnimate(self):
1707                 if (self.frontturnonoff==0):
1708                         eSctest.getInstance().turnon_VFD()
1709                         self.frontturnonoff = 1
1710                 else:
1711                         self.frontturnonoff = 0
1712                         eSctest.getInstance().turnoff_VFD()
1713                 self.fronttimer.start(1000,True)
1714
1715
1716         
1717
1718 rstest = 0
1719
1720 import select
1721
1722 class RS232Test(Screen):
1723         skin = """
1724                 <screen position="300,240" size="160,100" title="RS232 Test" >
1725                         <widget name="text" position="10,10" size="140,80" font="Regular;22" />
1726                 </screen>"""
1727         step=1
1728         def __init__(self, session):
1729                 self["actions"] = ActionMap(["DirectionActions", "OkCancelActions"],
1730                 {
1731                         "cancel": self.keyCancel,
1732                 }, -2)
1733
1734                 Screen.__init__(self, session)
1735                 self["text"]=Label(("Press \"Enter\" Key"))
1736                 self.timer = eTimer()
1737                 self.timer.callback.append(self.checkrs232)
1738                 self.timer.start(100, True)
1739
1740         def checkrs232(self):
1741                 global rstest
1742                 try:
1743                         rs=open('/dev/ttyS0','r')
1744                         rd = [rs]
1745                         r,w,e = select.select(rd, [], [], 10)
1746                         if r:
1747                                 input = rs.read(1)
1748                                 if input == "\n":
1749 #                               if input == "m":
1750                                         rstest = 1
1751                                 else:
1752                                         rstest = 0 
1753                         else:
1754                                 rstest = 0
1755                 except:
1756                         print 'error'
1757                         rstest = 0
1758                 self.close()
1759
1760         def keyCancel(self):
1761                 self.close()
1762
1763 Agingresult = 0
1764
1765 class AgingTest(Screen):
1766         skin = """
1767                 <screen position="200,240" size="250,100" title="Aging Test" >
1768                         <widget name="text1" position="10,10" size="230,40" font="Regular;22" />
1769                         <widget name="text2" position="10,50" size="230,40" font="Regular;22" />
1770                 </screen>"""
1771         step=1
1772         def __init__(self, session):
1773                 self["actions"] = ActionMap(["WizardActions","GlobalActions"],
1774                 {
1775                         "agingend": self.keyEnd,
1776                         "agingfinish": self.keyFinish,
1777                         "volumeUp": self.nothing,
1778                         "volumeDown": self.nothing,
1779                         "volumeMute": self.nothing,             
1780                 }, -2)
1781
1782                 Screen.__init__(self, session)
1783                 self["text1"]=Label(("Exit - Press Pause Key"))
1784                 self["text2"]=Label(("Reset - Press Stop Key"))
1785 #               self.servicelist = ServiceList()
1786 #               self.oldref = session.nav.getCurrentlyPlayingServiceReference()
1787 #               print "oldref",self.oldref
1788 #               session.nav.stopService() # try to disable foreground service
1789 #               self.chstart()
1790                 self.tunerlock = 0
1791                 self.tuningtimer = eTimer()
1792                 self.tuningtimer.callback.append(self.updateStatus)
1793 #               self.tuningtimer.start(2000,True)
1794
1795
1796         def updateStatus(self):
1797                 result = eSctest.getInstance().getFrontendstatus(0)             
1798                 hv = "Ver"
1799                         
1800                 print "eSctest.getInstance().getFrontendstatus - %d"%result
1801                 if result == 0:
1802                         self.tunerlock = 0
1803                         self.session.nav.stopService()
1804                         self.session.open( MessageBox, _("Tune 1 Ver Locking Fail..."), MessageBox.TYPE_ERROR)  
1805                 elif result==1 :
1806                         self.tunerlock = 1
1807                 else:
1808                         self.tunerlock = 0
1809                         self.session.nav.stopService()
1810                         self.session.open( MessageBox, _("Tune 1 Ver Error %d..."%result), MessageBox.TYPE_ERROR)       
1811
1812
1813         def nothing(self):
1814                 print "nothing"
1815
1816         def chstart(self):
1817                 if self.oldref is None:
1818                         eref = eServiceReference("1:0:19:1324:3EF:1:C00000:0:0:0")
1819                         serviceHandler = eServiceCenter.getInstance()
1820                         servicelist = serviceHandler.list(eref)
1821                         if not servicelist is None:
1822                                 ref = servicelist.getNext()
1823                         else:
1824                                 ref = self.getCurrentSelection()
1825                                 print "servicelist none"
1826                 else:
1827                         ref = self.oldref
1828                 self.session.nav.stopService() # try to disable foreground service
1829                 ref.setData(0,0x19)
1830                 ref.setData(1,0x83)
1831                 ref.setData(2,0x6)
1832                 ref.setData(3,0x85)
1833                 ref.setData(4,0x640000)
1834                 self.session.nav.playService(ref)
1835
1836         def keyEnd(self):
1837                 global Agingresult
1838                 Agingresult = 0
1839                 self.session.nav.stopService() # try to disable foreground service
1840                 self.close()
1841
1842         def keyFinish(self):
1843                 global Agingresult
1844                 Agingresult = 1
1845                 self.session.nav.stopService() # try to disable foreground service
1846                 self.close()
1847                 
1848 session = None
1849
1850         
1851 def cleanup():
1852         global Session
1853         Session = None
1854         global Servicelist
1855         Servicelist = None
1856
1857 def main(session, servicelist, **kwargs):
1858         global Session
1859         Session = session
1860         global Servicelist
1861         Servicelist = servicelist
1862         bouquets = Servicelist.getBouquetList()
1863         global bouquetSel
1864         bouquetSel = Session.openWithCallback(cleanup, FactoryTest)
1865
1866 #def Plugins(**kwargs):
1867 #       return PluginDescriptor(name=_("Factory Test"), description="Test App for Factory", where = PluginDescriptor.WHERE_EXTENSIONSMENU, fnc=main)