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