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