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