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