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