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