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