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