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