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 sctest import eSctest
20 from enigma import eDVBDB
21 from Components.NimManager import nimmanager
22 from enigma import eDVBCI_UI,eDVBCIInterfaces
23 from Tools.Directories import resolveFilename, SCOPE_SYSETC
24 from Components.Sources.StaticText import StaticText
26 class TestResultList(MenuList):
27 def postWidgetCreate(self, instance):
28 self.instance.setSelectionEnable(0)
29 instance.setContent(self.l)
30 instance.selectionChanged.get().append(self.selectionChanged)
31 if self.enableWrapAround:
32 self.instance.setWrapAround(True)
34 def updateList(self, list):
36 self.l.setList(self.list)
38 class TuneMessageBox(MessageBox):
40 <screen position="center,center" size="600,10" title="Message">
41 <widget name="text" position="65,8" size="420,0" font="Regular;22" />
42 <widget name="ErrorPixmap" pixmap="Vu_HD/icons/input_error.png" position="5,5" size="53,53" alphatest="blend" />
43 <widget name="QuestionPixmap" pixmap="Vu_HD/icons/input_question.png" position="5,5" size="53,53" alphatest="blend" />
44 <widget name="InfoPixmap" pixmap="Vu_HD/icons/input_info.png" position="5,5" size="53,53" alphatest="blend" />
45 <widget name="list" position="100,100" size="380,375" transparent="1" backgroundColor="darkgrey" />
46 <!-- Signal Quality -->
47 <eLabel text="SNR : " position="60,130" size="60,25" font="Regular;25" transparent="1" />
48 <widget source="session.FrontendStatus" render="Label" position="120,130" size="60,25" font="Regular;25" transparent="1">
49 <convert type="FrontendInfo">SNRdB</convert>
52 <eLabel text="AGC : " position="200,130" size="60,25" font="Regular;25" transparent="1" noWrap="1" />
53 <widget source="session.FrontendStatus" render="Label" position="260,130" size="60,25" font="Regular;25" transparent="1" noWrap="1">
54 <convert type="FrontendInfo">AGC</convert>
56 <applet type="onLayoutFinish">
57 # this should be factored out into some helper code, but currently demonstrates applets.
58 from enigma import eSize, ePoint
60 orgwidth = self.instance.size().width()
61 orgpos = self.instance.position()
62 textsize = self["text"].getSize()
64 # y size still must be fixed in font stuff...
65 textsize = (textsize[0] + 50, textsize[1] + 50)
67 if self.type == self.TYPE_YESNO:
69 wsizex = textsize[0] + 60
70 wsizey = textsize[1] + offset
75 wsize = (wsizex, wsizey)
78 self.instance.resize(eSize(*wsize))
81 self["text"].instance.resize(eSize(*textsize))
84 listsize = (wsizex, 50)
85 self["list"].instance.move(ePoint(0, textsize[1]))
86 self["list"].instance.resize(eSize(*listsize))
90 self.instance.move(ePoint(orgpos.x() + (orgwidth - newwidth)/2, orgpos.y()))
93 def __init__(self, session, text, type = MessageBox.TYPE_YESNO):
94 MessageBox.__init__(self, session, text, type)
96 class FactoryTestSummary(Screen):
98 <screen name="FactoryTestSummary" position="0,0" size="132,64" id="1">
99 <widget source="parent.Title" render="Label" position="6,0" size="132,64" font="Regular;18" halign="center" valign="center"/>
102 class FactoryTestSummary_VFD(Screen):
104 <screen name="FactoryTestSummary" position="0,0" size="256,64" id="1">
105 <widget source="parent.Title" render="Label" position="0,0" size="256,64" font="VFD;24" halign="center" valign="center"/>
108 class FactoryTest(Screen):
110 <screen name="FactoryTest" position="300,100" size="660,550" title="Test Menu" >
111 <widget name="testlist" position="10,0" size="440,455" itemHeight="35" />
112 <widget name="resultlist" position="470,0" size="60,455" itemHeight="35" />
113 <widget name="testdate" position="20,470" size="250,35" font="Regular;30" />
114 <widget name="testversion" position="20,505" size="250,35" font="Regular;30" />
115 <widget name="mactext" position="320,470" size="340,35" font="Regular;30" />
118 def createSummary(self):
120 return FactoryTestSummary_VFD
122 return FactoryTestSummary
124 def __init__(self, session):
126 self["actions"] = NumberActionMap(["OkCancelActions","WizardActions","NumberActions","ColorActions",],
128 "left": self.nothing,
129 "right":self.nothing,
130 "ok": self.TestAction,
131 "testexit": self.keyCancel,
132 "agingstart": self.Agingmode,
134 "down": self.keydown,
135 "0": self.numberaction,
136 "1": self.numberaction,
137 "2": self.numberaction,
138 "3": self.numberaction,
139 "4": self.numberaction,
140 "5": self.numberaction,
141 "6": self.numberaction,
142 "7": self.numberaction,
143 "8": self.numberaction,
144 "9": self.numberaction,
145 "red": self.shutdownaction,
146 "blue": self.Agingmode2,
149 Screen.__init__(self, session)
150 TESTPROGRAM_DATE = self.getImageVersion() +" (v1.20)"
151 TESTPROGRAM_VERSION = "Version 01.20"
156 self["testdate"]=Label((TESTPROGRAM_DATE))
157 self["testversion"]=Label(("Loading version..."))
158 self["mactext"]=Label(("Loading mac address..."))
159 if self.model == 0 or self.model == 1:
160 nimConfig = nimmanager.getNimConfig(0)
161 nimConfig.configMode.slot_id=0
162 nimConfig.configMode.value= "simple"
163 nimConfig.diseqcMode.value="diseqc_a_b"
164 nimConfig.diseqcA.value="160"
165 nimConfig.diseqcB.value="100"
167 nimConfig = nimmanager.getNimConfig(1)
168 nimConfig.configMode.slot_id=1
169 nimConfig.configMode.value= "simple"
170 nimConfig.diseqcMode.value="diseqc_a_b"
171 nimConfig.diseqcA.value="130"
172 nimConfig.diseqcB.value="192"
175 if self.model == 3 or self.model == 4:
177 sat_list = ["160","100","130","192","620","642","685","720"]
178 # ' sat ' : namespace , # satname
179 # '160' : '0xA00000', # Eutelsat W2
180 # '100' : '0x64af79', # Eutelsat
181 # '130' : '0x820000', # Hotbird
182 # '192' : '0xC00000', # Astra
183 # '620' : '0x26c0000', # Intelsat 902
184 # '642' : '0x282AF79' # Intelsat 906
185 # '685' : '02ad0000' # Panamsat 7,10 (68.5E)
186 # '720' : '02d0af79' # Panamsat 4 (72.0E)
188 nimfile = open("/proc/bus/nim_sockets")
192 self.session.openWithCallback(self.close, MessageBox, _("File not Found!\n/proc/bus/nim_sockets"), MessageBox.TYPE_ERROR)
193 for line in nimfile.readlines():
197 if line.strip().startswith("NIM Socket"):
198 parts = line.strip().split(" ")
199 current_slot = int(parts[2][:-1])
200 self.NimType[current_slot]={}
201 self.NimType[current_slot]["slot"] = current_slot
202 elif line.strip().startswith("Type:"):
203 print str(line.strip())
204 self.NimType[current_slot]["type"] = str(line.strip()[6:])
205 if self.NimType[current_slot]["type"].startswith("DVB-S"):
206 self.NimType[current_slot]["sat1"] = sat_list.pop(0)
207 self.NimType[current_slot]["sat2"] = sat_list.pop(0)
209 self.NimType[current_slot]["sat1"] = None
210 self.NimType[current_slot]["sat2"] = None
211 elif line.strip().startswith("empty"):
212 self.NimType.pop(current_slot)
215 for (key, val) in self.NimType.items():
218 if val["type"].startswith("DVB-S"):
219 print "nimConfig (dvb-s): ",key
220 nimConfig = nimmanager.getNimConfig(key)
221 nimConfig.configMode.slot_id=key
222 nimConfig.configMode.value= "simple"
223 nimConfig.diseqcMode.value="diseqc_a_b"
224 nimConfig.diseqcA.value = val["sat1"]
225 nimConfig.diseqcB.value = val["sat2"]
227 nimConfig = nimmanager.getNimConfig(key)
228 print "configMode check : ",nimConfig.configMode.value
230 nimmanager.sec.update()
232 system("cp /usr/lib/enigma2/python/Plugins/SystemPlugins/FactoryTest/testdb /etc/enigma2/lamedb")
233 db = eDVBDB.getInstance()
234 db.reloadServicelist()
238 for x in range(self.menulength-1):
239 self.rlist.append((".."))
240 self.rlist.append((" "))
241 self["resultlist"] = TestResultList(self.rlist)
243 self.avswitch = AVSwitch()
244 self.scTest= eSctest()
248 self.servicelist = ServiceList()
249 self.oldref = session.nav.getCurrentlyPlayingServiceReference()
250 print "oldref",self.oldref
251 session.nav.stopService() # try to disable foreground service
253 self.tunemsgtimer = eTimer()
254 self.tunemsgtimer.callback.append(self.tunemsg)
257 self.camtimer = eTimer()
258 self.camtimer.callback.append(self.cam_state)
264 self.tuningtimer = eTimer()
265 self.tuningtimer.callback.append(self.updateStatus)
268 self.satatimer = eTimer()
269 self.satatimer.callback.append(self.sataCheck)
271 self.usbtimer = eTimer()
272 self.usbtimer.callback.append(self.usbCheck)
277 def FanSpeedUp(self,value):
278 if self.model in (3,4): # uno or ultimo
283 print "[FactoryTest, FanSpeedUp] setPWM to : %d"%value
284 f = open("/proc/stb/fp/fan_pwm", "w")
285 f.write("%x" % value)
288 def createConfig(self):
290 self.satetestIndex = -1
291 self.scarttestIndex = -1
294 tlist.append((" 0. Sata & extend hdd test",self.satetestIndex))
296 tlist.append((" 1. USB test",self.usbtestIndex))
297 self.fronttestIndex=2
298 tlist.append((" 2. Front test",self.fronttestIndex))
299 self.smarttestIndex=3
300 tlist.append((" 3. Smartcard test",self.smarttestIndex))
301 self.tuner1_1testIndex=4
302 tlist.append((" 4. T1/H/22K x /4:3/CVBS",self.tuner1_1testIndex))
303 self.tuner1_2testIndex=5
304 tlist.append((" 5. T1/V/22k o/16:9/RGB",self.tuner1_2testIndex))
305 self.tuner2_1testIndex=6
306 tlist.append((" 6. T2/H/22k x/4:3/YC",self.tuner2_1testIndex))
307 self.tuner2_2testIndex=7
308 tlist.append((" 7. T2/V/22k o/16:9/CVBS/CAM",self.tuner2_2testIndex))
309 self.scarttestIndex=8
310 tlist.append((" 8. VCR Scart loop",self.scarttestIndex))
311 self.rs232testIndex=9
312 tlist.append((" 9. RS232 test",self.rs232testIndex))
313 self.ethernettestIndex=10
314 tlist.append(("10. Ethernet & mac test",self.ethernettestIndex))
315 self.fdefaultIndex=11
316 tlist.append(("11. Factory default",self.fdefaultIndex))
317 self.shutdownIndex=12
318 tlist.append(("12. Shutdown(Deep Standby)",self.shutdownIndex))
319 self.tuner_test_first_index = 4
320 self.tuner_test_last_index = 7
322 elif self.model == 1:
324 tlist.append((" 0. USB test",self.usbtestIndex))
325 self.fronttestIndex=1
326 tlist.append((" 1. Front test",self.fronttestIndex))
327 self.smarttestIndex=2
328 tlist.append((" 2. Smartcard test",self.smarttestIndex))
329 self.tuner1_1testIndex=3
330 tlist.append((" 3. T1/H/22K x/4:3/CVBS",self.tuner1_1testIndex))
331 self.tuner2_2testIndex = self.tuner1_2testIndex=4
332 tlist.append((" 4. T1/V/22k o/16:9/RGB/CAM",self.tuner1_2testIndex))
333 self.rs232testIndex=5
334 tlist.append((" 5. RS232 test",self.rs232testIndex))
335 self.ethernettestIndex=6
336 tlist.append((" 6. Ethernet & mac test",self.ethernettestIndex))
338 tlist.append((" 7. Factory default",self.fdefaultIndex))
340 tlist.append((" 8. Shutdown(Deep Standby)",self.shutdownIndex))
341 self.tuner_test_first_index = 3
342 self.tuner_test_last_index = 4
344 elif self.model == 2:
346 tlist.append((" 0. Sata & extend hdd test",self.satetestIndex))
348 tlist.append((" 1. USB test",self.usbtestIndex))
349 self.fronttestIndex=2
350 tlist.append((" 2. Front test",self.fronttestIndex))
351 self.smarttestIndex=3
352 tlist.append((" 3. Smartcard test",self.smarttestIndex))
353 self.tuner1_1testIndex=4
354 tlist.append((" 4. T1 H 22K x 4:3 CVBS",self.tuner1_1testIndex))
355 self.tuner1_2testIndex=5
356 tlist.append((" 5. T1 V 22k o 16:9 RGB",self.tuner1_2testIndex))
357 self.tuner2_1testIndex = -1
358 self.tuner2_2testIndex=6
359 tlist.append((" 6. T2 DVB-C 4:3 YC CAM",self.tuner2_2testIndex))
360 self.rs232testIndex=7
361 tlist.append((" 7. RS232 test",self.rs232testIndex))
362 self.ethernettestIndex=8
363 tlist.append(("8. Ethernet & mac test",self.ethernettestIndex))
365 tlist.append(("9. Factory default",self.fdefaultIndex))
366 self.shutdownIndex=10
367 tlist.append(("10. Shutdown",self.shutdownIndex))
368 self.tuner_test_first_index = 4
369 self.tuner_test_last_index = 6
371 elif self.model == 3 or self.model == 4:
373 tlist.append((" 0. Sata & extend hdd test",self.satetestIndex))
375 tlist.append((" 1. USB test",self.usbtestIndex))
376 self.fronttestIndex=2
377 tlist.append((" 2. Front test",self.fronttestIndex))
378 self.smarttestIndex=3
379 tlist.append((" 3. Smartcard test",self.smarttestIndex))
381 self.tuner_test_first_index = current_index = 4
382 elif self.model == 4:
383 self.tuner_test_first_index = 4
385 AspectRatio=["4:3", "16:9"]
386 ColorFormat=["CVBS","RGB","YC","CVBS","CVBS","CVBS","CVBS","CVBS"]
389 for (key, val) in self.NimType.items():
390 if val["type"].startswith("DVB-S"):
391 # Chang : DVB -S setting diseqc A
392 getRatio = AspectRatio.pop(0) # ratio
393 AspectRatio.append(getRatio)
394 getColorFormat=ColorFormat.pop(0) # colorFormat
395 menuname=" %d. T%d/%s/H/22k x/%s/%s" % (current_index, key+1, val["type"], getRatio, getColorFormat) #menuname
398 self.setTuneInfo(index=current_index, slot=key, type=val["type"], sat=val["sat1"], pol="H", tone=False, ratio=getRatio, color=getColorFormat, cam=False) # setTuneInfo
399 # self.setTuneInfo(current_index, key, val["type"], val["sat1"], "H", True, getRatio, getColorFormat, False) # setTuneInfo
400 tunelist.append((menuname,current_index))
402 # Chang : DVB -S setting diseqc B
403 getRatio = AspectRatio.pop(0)
404 AspectRatio.append(getRatio)
405 getColorFormat=ColorFormat.pop(0)
406 menuname=" %d. T%d/%s/V/22k o/%s/%s" % (current_index, key+1, val["type"], getRatio, getColorFormat)
407 if len(self.NimType) == key+1: # CAM test on/off
412 self.setTuneInfo( index=current_index, slot=key, type=val["type"], sat=val["sat2"], pol="V", tone=True, ratio=getRatio, color=getColorFormat, cam=camtest)
413 tunelist.append((menuname,current_index))
415 # Chang : DVB -T or DVB-C
416 elif val["type"].startswith("DVB-T") or val["type"].startswith("DVB-C"):
417 additionalMenu = None
419 if len(self.NimType) == 1:
420 additionalMenu = True
422 for x in range(menulen):
423 getRatio = AspectRatio.pop(0)
424 AspectRatio.append(getRatio)
425 getColorFormat=ColorFormat.pop(0)
426 menuname=" %d. T%d/%s/%s/%s" % (current_index, key+1, val["type"], getRatio, getColorFormat)
427 if len(self.NimType) == key+1 and (additionalMenu is None or x != 0): # CAM test on/off
432 self.setTuneInfo( index=current_index, slot=key, type=val["type"], sat=None, pol=None, tone=None, ratio=getRatio, color=getColorFormat, cam=camtest)
433 tunelist.append((menuname,current_index))
436 tlist.extend(tunelist)
437 self.tuner_test_last_index = current_index-1
438 elif self.model == 4:
439 self.tunelist = tunelist
440 self.tuner_test_last_index = 4
441 current_index = self.tuner_test_last_index
442 tlist.append((" %d. Tuning test" % current_index,self.tuner_test_last_index))
444 self.rs232testIndex=current_index
445 tlist.append((" %d. RS232 test" % current_index,self.rs232testIndex))
447 self.ethernettestIndex=current_index
448 tlist.append((" %d. Ethernet & mac test" % current_index,self.ethernettestIndex))
450 self.fdefaultIndex=current_index
451 tlist.append((" %d. Factory default" % current_index,self.fdefaultIndex))
453 self.shutdownIndex=current_index
454 tlist.append((" %d. Shutdown(Deep Standby)" % current_index,self.shutdownIndex))
456 self.menulength= len(tlist)
457 self["testlist"] = MenuList(tlist)
459 def setTuneInfo(self,index=0,slot=0,type="DVB-S2",sat="160",pol="H",tone=True,ratio="4:3",color="CVBS",cam=False):
460 self.tuneInfo[index]={}
461 self.tuneInfo[index]["slot"]=slot
462 self.tuneInfo[index]["type"]=type
463 self.tuneInfo[index]["sat"]=sat
464 self.tuneInfo[index]["pol"]=pol
465 self.tuneInfo[index]["22k"]=tone
466 self.tuneInfo[index]["ratio"]=ratio
467 self.tuneInfo[index]["color"]=color
468 self.tuneInfo[index]["cam"]=cam
470 def getModelInfo(self):
472 if fileExists("/proc/stb/info/vumodel"):
473 vumodel = open("/proc/stb/info/vumodel")
474 info=vumodel.read().strip()
479 print "getModelInfo : duo"
483 print "getModelInfo : solo"
487 print "getModelInfo : combo"
491 print "getModelInfo : uno"
495 print "getModelInfo : ultimo"
497 if getmodel == 0 and fileExists("/proc/stb/info/version"):
498 vesion = open("/proc/stb/info/version")
503 print "getModelInfo : solo_"
504 elif info[:2] == "12":
506 print "getModelInfo : duo_"
512 print "self.menulength = ",self.menulength
513 print "self[\"testlist\"].getCurrent()[1] = ",self["testlist"].getCurrent()[1]
516 if self["testlist"].getCurrent()[1]==0:
517 self["testlist"].moveToIndex(self.menulength-1)
518 self["resultlist"].moveToIndex(self.menulength-1)
520 self["testlist"].up()
521 self["resultlist"].up()
525 print "self.menulength = ",self.menulength
526 print "self[\"testlist\"].getCurrent()[1] = ",self["testlist"].getCurrent()[1]
529 if self["testlist"].getCurrent()[1]==(self.menulength-1):
530 self["testlist"].moveToIndex(0)
531 self["resultlist"].moveToIndex(0)
533 self["testlist"].down()
534 self["resultlist"].down()
536 def numberaction(self, number):
539 if number >= self.menulength:
542 self["testlist"].moveToIndex(index)
543 self["resultlist"].moveToIndex(index)
545 def getImageVersion(self):
547 file = open(resolveFilename(SCOPE_SYSETC, 'image-version'), 'r')
548 lines = file.readlines()
550 splitted = x.split('=')
551 if splitted[0] == "version":
553 #0120 2005 11 29 01 16
554 #0123 4567 89 01 23 45
555 version = splitted[1]
557 month = version[8:10]
559 date = '-'.join((year, month, day))
564 def getversion(self):
566 fd = open("/proc/stb/info/version","r")
569 self["testversion"].setText(("Version %s"%version))
571 self["testversion"].setText(("Version no load"))
574 def getmacaddr(self):
576 if self.model == 2 or self.model == 3 or self.model == 4:
577 cmd = "nanddump -s 0x" + str((self.mactry-1)*2) + "0000 -b -o -l 64 -p /dev/mtd5"
578 elif self.model == 0 or self.model == 1:
579 cmd = "nanddump -s 0x" + str((self.mactry-1)*2) + "0000 -b -o -l 64 -p /dev/mtd4"
580 self.macConsole = Console()
581 self.macConsole.ePopen(cmd, self.readmac,self.checkReadmac)
585 def readmac(self, result, retval,extra_args=None):
586 (callback) = extra_args
587 if self.macConsole is not None:
589 self.macConsole = None
591 content =result.splitlines()
593 if x.startswith('0x000'+str((self.mactry-1)*2)+'0010:'):
597 elif len(macline) < 10:
600 mac = macline[5]+":"+macline[6]+":"+macline[7]+":"+macline[8]+":"+macline[9]+":"+macline[10]
601 self["mactext"].setText(("MAC : "+mac))
604 def checkReadmac(self,data):
606 print "block %d is bad block" % self.mactry
607 self.mactry = self.mactry + 1
609 self.session.open(MessageBox, _("FLASH IS BROKEN"), type = MessageBox.TYPE_INFO, enable_input = False)
614 print 'mac dump read error'
617 print 'mac address read ok'
620 def TestAction(self):
623 print "line - ",self["testlist"].getCurrent()[1]
624 self.currentindex = index = self["testlist"].getCurrent()[1]
626 if index==self.satetestIndex:
628 elif index==self.fronttestIndex:
630 elif index>=self.tuner_test_first_index and index<=self.tuner_test_last_index:
631 if self.model == 0 or self.model == 1 or self.model == 2 or self.model == 3:
633 elif self.model == 4:
634 self.openTestTuneMenu()
635 elif index==self.scarttestIndex:
637 elif index==self.rs232testIndex:
639 elif index==self.usbtestIndex:
641 elif index==self.ethernettestIndex:
643 elif index == self.smarttestIndex:
651 elif index==self.fdefaultIndex:
653 # elif index==self.shutdownIndex:
658 def shutdownaction(self):
659 if self["testlist"].getCurrent()[1] == self.shutdownIndex:
665 self.satatimer.start(100,True)
668 # print "try", self.satatry
669 if self.satatry == 0:
672 self.rlist[self["testlist"].getCurrent()[1]]="try %d"%self.satatry
673 self["resultlist"].updateList(self.rlist)
678 if fileExists("/autofs/sdb1"):
679 if access("/autofs/sdb1",F_OK|R_OK|W_OK):
680 dummy=open("/autofs/sdb1/dummy03","w")
681 dummy.write("complete")
683 dummy=open("/autofs/sdb1/dummy03","r")
684 if dummy.readline()=="complete":
685 print "/autofs/sdb1 - complete"
687 print "/autofs/sdb1 - readline error"
691 system("rm /autofs/sdb1/dummy03")
693 print "/autofs/sdb1 - rw access error"
697 print "/autofs/sdb1 - file not exist"
700 print "/autofs/sdb1 - exceptional error"
704 if fileExists("/autofs/sda1"):
705 if access("/autofs/sda1",F_OK|R_OK|W_OK):
706 dummy=open("/autofs/sda1/dummy03","w")
707 dummy.write("complete")
709 dummy=open("/autofs/sda1/dummy03","r")
710 if dummy.readline()=="complete":
711 print "/autofs/sda1 - complete"
713 print "/autofs/sda1 - readline error"
717 system("rm /autofs/sda1/dummy03")
719 print "/autofs/sda1 - rw access error"
723 print "/autofs/sda1 - file not exist"
726 print "/autofs/sda1 - exceptional error"
731 self.session.open( MessageBox, _("Sata & extend hdd test pass\nPress 'OK' button!"), MessageBox.TYPE_INFO)
732 self.rlist[self["testlist"].getCurrent()[1]]="pass"
735 self.session.open( MessageBox, _("One hdd test error\nPress 'EXIT' button!"), MessageBox.TYPE_ERROR)
736 self.rlist[self["testlist"].getCurrent()[1]]="fail"
738 self.satatimer.start(1100,True)
741 self.session.open( MessageBox, _("Sata & extend hdd test error\nPress 'EXIT' button!"), MessageBox.TYPE_ERROR)
742 self.rlist[self["testlist"].getCurrent()[1]]="fail"
744 self.satatimer.start(1100,True)
748 self.session.openWithCallback(self.displayresult ,FrontTest)
749 elif self.model == 1:
750 self.session.openWithCallback(self.displayresult ,FrontTest_solo)
751 elif self.model == 2 or self.model == 3:
752 self.session.openWithCallback(self.displayresult ,FrontTest_uno)
753 elif self.model == 4:
754 self.session.openWithCallback(self.displayresult ,FrontTest_ultimo)
756 def displayresult(self):
759 self.rlist[self["testlist"].getCurrent()[1]]="pass"
761 self.rlist[self["testlist"].getCurrent()[1]]="fail"
763 def openTestTuneMenu(self):
764 self.session.openWithCallback(self.TestTuneMenuResult ,TestTuneMenu, self.tuneInfo, self.tunelist, self.NimType)
766 def TestTuneMenuResult(self,result):
768 self.rlist[self["testlist"].getCurrent()[1]]="pass"
770 self.rlist[self["testlist"].getCurrent()[1]]="fail"
771 self["resultlist"].updateList(self.rlist)
773 def TestTune(self,index):
774 if self.oldref is None:
775 eref = eServiceReference("1:0:19:1324:3EF:1:C00000:0:0:0")
776 serviceHandler = eServiceCenter.getInstance()
777 servicelist = serviceHandler.list(eref)
778 if not servicelist is None:
779 ref = servicelist.getNext()
781 ref = self.getCurrentSelection() # raise error
782 print "servicelist none"
785 self.session.nav.stopService() # try to disable foreground service
786 if self.model == 0 or self.model == 1:
787 if index==self.tuner1_1testIndex:
792 ref.setData(4,0xA00000)
793 self.session.nav.playService(ref)
794 self.avswitch.setColorFormat(0)
795 self.avswitch.setAspectRatio(0)
796 elif index==self.tuner1_2testIndex:
799 self.camtimer.start(100,True)
801 ref.setData(1,0x1325)
804 ref.setData(4,0x64af79)
805 self.session.nav.playService(ref)
806 self.avswitch.setColorFormat(1)
807 self.avswitch.setAspectRatio(6)
808 elif index==self.tuner2_1testIndex:
813 ref.setData(4,0x820000)
814 self.session.nav.playService(ref)
815 self.avswitch.setColorFormat(2)
816 self.avswitch.setAspectRatio(0)
817 elif index==self.tuner2_2testIndex:
819 self.camtimer.start(100,True)
821 ref.setData(1,0x1325)
824 ref.setData(4,0xC00000)
825 self.session.nav.playService(ref)
826 self.avswitch.setColorFormat(0)
827 self.avswitch.setAspectRatio(6)
828 self.tuningtimer.start(2000,True)
829 self.tunemsgtimer.start(3000, True)
830 elif self.model == 3 or self.model == 4:
831 getTuneInfo=self.tuneInfo[index]
832 if getTuneInfo["cam"] is True:
834 self.camtimer.start(100,True)
835 if getTuneInfo["type"].startswith("DVB-S"):
836 if getTuneInfo["pol"] == "H":
843 ref.setData(1,0x1325)
846 if getTuneInfo["sat"] == "160": # Eutelsat W2
847 ref.setData(4,0xA00000)
848 elif getTuneInfo["sat"] == "100": # Eutelsat
849 ref.setData(4,0x64af79)
850 elif getTuneInfo["sat"] == "130": # Hotbird
851 ref.setData(4,0x820000)
852 elif getTuneInfo["sat"] == "192": # Astra
853 ref.setData(4,0xC00000)
854 elif getTuneInfo["sat"] == "620": # Intelsat 902
855 ref.setData(4,0x26c0000)
856 elif getTuneInfo["sat"] == "642": # Intelsat 906
857 ref.setData(4,0x282AF79)
858 elif getTuneInfo["sat"] == "685": # Panamsat 7,10 (68.5E)
859 ref.setData(4,0x02ad0000)
860 elif getTuneInfo["sat"] == "720": # Panamsat 4 (72.0E)
861 ref.setData(4,0x02d0af79)
862 elif getTuneInfo["type"].startswith("DVB-C"):
864 ref.setData(1,0x1325)
867 ref.setData(4,-64870) # ffff029a
868 elif getTuneInfo["type"].startswith("DVB-T"):
870 ref.setData(1,0x1325)
873 ref.setData(4,-286391716) # eeee025c
874 self.session.nav.playService(ref)
875 if getTuneInfo["color"]=="CVBS":
876 self.avswitch.setColorFormat(0)
877 elif getTuneInfo["color"]=="RGB":
878 self.avswitch.setColorFormat(1)
879 elif getTuneInfo["color"]=="YC":
880 self.avswitch.setColorFormat(2)
881 if getTuneInfo["ratio"] == "4:3":
882 self.avswitch.setAspectRatio(0)
883 elif getTuneInfo["ratio"] == "16:9":
884 self.avswitch.setAspectRatio(6)
885 self.tuningtimer.start(2000,True)
886 self.tunemsgtimer.start(3000, True)
889 current_index = self.currentindex
890 if self.camstep == 1:
892 state = eDVBCI_UI.getInstance().getState(slot)
893 print '-1-stat',state
896 self.camtimer.start(100,True)
898 self.session.nav.stopService()
899 self.session.open( MessageBox, _("CAM1_NOT_INSERTED\nPress exit!"), MessageBox.TYPE_ERROR)
900 self.rlist[current_index]="fail"
901 self.tunemsgtimer.stop()
902 elif self.camstep == 2:
904 appname = eDVBCI_UI.getInstance().getAppName(slot)
905 print 'appname',appname
907 self.session.nav.stopService()
908 self.session.open( MessageBox, _("NO_GET_APPNAME\nPress exit!"), MessageBox.TYPE_ERROR)
909 self.rlist[current_index]="fail"
910 self.tunemsgtimer.stop()
913 self.camtimer.start(100,True)
914 elif self.camstep==3:
916 state = eDVBCI_UI.getInstance().getState(slot)
917 print '-2-stat',state
920 self.camtimer.start(100,True)
922 self.session.nav.stopService()
923 self.session.open( MessageBox, _("CAM2_NOT_INSERTED\nPress exit!"), MessageBox.TYPE_ERROR)
924 self.rlist[current_index]="fail"
925 self.tunemsgtimer.stop()
926 elif self.camstep == 4:
928 appname = eDVBCI_UI.getInstance().getAppName(slot)
929 print 'appname',appname
931 self.session.nav.stopService()
932 self.session.open( MessageBox, _("NO_GET_APPNAME\nPress exit!"), MessageBox.TYPE_ERROR)
933 self.rlist[current_index]="fail"
934 self.tunemsgtimer.stop()
939 def updateStatus(self):
940 current_index = self.currentindex
941 if self.model == 0 or self.model == 1:
942 if current_index ==self.tuner1_1testIndex or current_index==self.tuner1_2testIndex:
944 result = eSctest.getInstance().getFrontendstatus(0)
947 result = eSctest.getInstance().getFrontendstatus(1)
948 if current_index == self.tuner1_2testIndex or current_index==self.tuner2_2testIndex:
953 elif self.model == 3 or self.model == 4:
954 getTuneInfo=self.tuneInfo[current_index]
955 result = eSctest.getInstance().getFrontendstatus(getTuneInfo["slot"])
956 tunno = getTuneInfo["slot"]+1
957 hv = getTuneInfo["pol"]
965 print "eSctest.getInstance().getFrontendstatus - %d"%result
966 if result == 0 or result == -1:
968 self.tunemsgtimer.stop()
969 self.session.nav.stopService()
970 self.avswitch.setColorFormat(0)
971 self.session.open( MessageBox, _("Tune%d %s Locking Fail..."%(tunno,hv)), MessageBox.TYPE_ERROR)
972 self.rlist[current_index]="fail"
976 def tuneback(self,yesno):
977 current_index=self.currentindex
978 self.session.nav.stopService() # try to disable foreground service
979 if yesno and self.tunerlock == 1:
980 if current_index == self.tuner_test_last_index and self.camstep < 5: # need fix to depending about CAM exist
981 self.rlist[current_index]="fail"
983 self.rlist[current_index]="pass"
985 self.rlist[current_index]="fail"
986 if self.model == 0 and current_index == 6: # YC
987 self.avswitch.setColorFormat(0)
988 elif ( self.model == 3 or self.model == 4 ) and self.tuneInfo[current_index]["color"] == "YC":
989 self.avswitch.setColorFormat(0)
991 self["resultlist"].updateList(self.rlist)
994 self.tuningtimer.stop()
995 self.session.openWithCallback(self.tuneback, TuneMessageBox, _("%s ok?" %(self["testlist"].getCurrent()[0])), MessageBox.TYPE_YESNO)
997 def setSourceVar(self):
1001 elif self.model == 1:
1002 self.input_pad_num=0
1005 self.input_pad_num=len(self.NimType)-1
1006 if self.input_pad_num == 0:
1008 elif self.input_pad_num == 1:
1010 elif self.input_pad_num == 2:
1013 # ikseong - for 22000 tp
1014 def setSource(self):
1016 inputname = ("/proc/stb/tsmux/input%d" % self.input_pad_num)
1017 print "<setsource> inputname : ",inputname
1018 fd=open(inputname,"w")
1021 # fix ci_input Tuner
1022 filename = ("/proc/stb/tsmux/ci0_input")
1023 fd = open(filename,'w')
1024 fd.write(self.setTuner)
1025 print "setTuner(CI0) : ",self.setTuner
1027 print "CI loop test!!!!!!!!!!!!!!"
1029 def resetSource(self):
1030 inputname = ("/proc/stb/tsmux/input%d" % self.input_pad_num)
1031 print "<resetsource> inputname : ",inputname
1032 fd=open(inputname,"w")
1033 fd.write(self.setTuner)
1035 print "CI loop test end!!!!!!!!!!!!!!"
1038 self.avswitch.setInput("SCART")
1040 self.session.openWithCallback(self.check6, MessageBox, _("Scart loop ok?"), MessageBox.TYPE_YESNO)
1042 def check6(self,yesno):
1044 self.rlist[self["testlist"].getCurrent()[1]]="pass"
1046 self.rlist[self["testlist"].getCurrent()[1]]="fail"
1047 self.avswitch.setInput("ENCODER")
1052 self.rlist[self["testlist"].getCurrent()[1]]="pass"
1054 self.rlist[self["testlist"].getCurrent()[1]]="fail"
1057 self.session.openWithCallback(self.check7,RS232Test)
1059 def Agingmode(self):
1060 self.session.openWithCallback(self.AgingmodeCallback,AgingTest, self.model)
1062 def AgingmodeCallback(self,ret):
1064 self["testlist"].moveToIndex(self.fdefaultIndex)
1066 self["testlist"].moveToIndex(self.shutdownIndex)
1068 def Agingmode2(self):
1069 self.session.openWithCallback(self.Agingmode2Callback,AgingTest_mode2, self.model)
1071 def Agingmode2Callback(self):
1072 self["testlist"].moveToIndex(self.fdefaultIndex)
1074 self["testlist"].moveToIndex(self.shutdownIndex)
1078 self.usbtimer.start(100,True)
1081 if self.usbtry == 0:
1084 self.rlist[self["testlist"].getCurrent()[1]]="try %d"%self.usbtry
1085 self["resultlist"].updateList(self.rlist)
1089 if self.model==0 or self.model==3 or self.model==4:
1090 devices = [ "/autofs/sdc1", "/autofs/sdd1", "/autofs/sde1" ]
1092 devices = [ "/autofs/sda1", "/autofs/sdb1" ]
1094 devices = [ "/autofs/sdc1", "/autofs/sdd1" ]
1096 self.session.open( MessageBox, _("invalid model"), MessageBox.TYPE_ERROR)
1097 self.rlist[self["testlist"].getCurrent()[1]]="fail"
1105 if access(dev,F_OK|R_OK|W_OK):
1106 dummy=open(dev+"/dummy03","w")
1107 dummy.write("complete")
1109 dummy=open(dev+"/dummy03","r")
1110 if dummy.readline()=="complete":
1111 print dev," - complete"
1113 print dev," - readline error"
1117 system("rm "+dev+"/dummy03")
1119 print dev," - rw access error"
1123 print dev," - file not exist"
1126 print dev," - exceptional error"
1132 elif result == len(devices):
1133 self.session.open( MessageBox, _("USB test pass %d devices\nPress 'OK' button!"%result), MessageBox.TYPE_INFO)
1134 self.rlist[self["testlist"].getCurrent()[1]]="pass"
1136 if displayerror == 1:
1137 self.session.open( MessageBox, _("USB test error : Success-%d"%result+" Fail-%d\nPress 'EXIT' button!"%(len(devices)-result)), MessageBox.TYPE_ERROR)
1138 self.rlist[self["testlist"].getCurrent()[1]]="fail"
1140 self.usbtimer.start(1100,True)
1144 # system("/etc/init.d/networking stop")
1145 system("ifconfig eth0 192.168.0.10")
1146 # system("/etc/init.d/networking start")
1147 cmd1 = "ping -c 1 192.168.0.100"
1148 self.PingConsole = Console()
1149 self.PingConsole.ePopen(cmd1, self.checkNetworkStateFinished,self.NetworkStatedataAvail)
1151 def checkNetworkStateFinished(self, result, retval,extra_args):
1152 (statecallback) = extra_args
1153 if self.PingConsole is not None:
1155 self.PingConsole = None
1156 content = result.splitlines()
1157 # print 'content',content
1158 x = content[4].split()
1168 def NetworkStatedataAvail(self,data):
1173 self.session.openWithCallback(self.openMacConfig ,MessageBox, _("Ping test pass"), MessageBox.TYPE_INFO,2)
1178 self.session.open( MessageBox, _("Ping test fail\nPress exit"), MessageBox.TYPE_ERROR)
1184 def openMacConfig(self, ret=False):
1185 self.session.openWithCallback(self.macresult ,MacConfig,mactry=self.mactry)
1187 def macresult(self):
1190 self.rlist[self.ethernettestIndex]="pass"
1192 self.rlist[self.ethernettestIndex]="fail"
1196 # def MemTest(self, which):
1200 # result = eMemtest.getInstance().dramtest()
1202 # result = eMemtest.getInstance().flashtest()
1205 # result = eMemtest.getInstance().dramtest()
1206 # result = eMemtest.getInstance().flashtest()
1212 # print index,self.rlist[index]
1213 # self.rlist[index]="pass"
1215 # print index,self.rlist[index]
1216 # self.rlist[index]="fail"
1217 # self["resultlist"].updateList(self.rlist)
1219 def scciresult(self):
1220 global smartcardtest
1221 if smartcardtest == 1:
1222 self.rlist[self["testlist"].getCurrent()[1]]="pass"
1224 self.rlist[self["testlist"].getCurrent()[1]]="fail"
1227 self.session.openWithCallback(self.scciresult ,SmartCardTest,stbmodel=self.model)
1241 system("rm -R /etc/enigma2")
1243 system("cp -R /usr/share/enigma2/defaults /etc/enigma2")
1244 self.rlist[self["testlist"].getCurrent()[1]]="pass"
1245 self["resultlist"].updateList(self.rlist)
1247 print "test14 except"
1248 self.rlist[self["testlist"].getCurrent()[1]]="fail"
1249 self["resultlist"].updateList(self.rlist)
1250 self.session.open( MessageBox, _("Factory reset fail"), MessageBox.TYPE_ERROR)
1253 self.session.openWithCallback(self.shutdown ,MessageBox, _("Do you want to shut down?"), MessageBox.TYPE_YESNO)
1255 def shutdown(self, yesno):
1257 from os import _exit
1258 system("/usr/bin/showiframe /boot/backdrop.mvi")
1263 def keyCancel(self):
1268 # if self.oldref is not None:
1269 # self.session.nav.playService(self.oldref)
1272 class MacConfig(Screen):
1274 <screen name="MacConfig" position="center,center" size="520,100" title="Mac Config" >
1275 <eLabel text="Mac Address " position="10,15" size="200,40" font="Regular;30" />
1276 <widget name="text" position="230,15" size="230,40" font="Regular;30" halign="right"/>
1277 <widget name="text1" position="470,15" size="40,40" font="Regular;30" />
1278 <eLabel text=" " position="5,55" zPosition="-1" size="510,5" backgroundColor="#02e1e8e6" />
1279 <widget name="stattext" position="30,75" size="450,35" font="Regular;30" />
1282 def __init__(self, session, mactry = 1):
1283 self["actions"] = ActionMap(["DirectionActions","OkCancelActions"],
1286 "left": self.keyleft,
1287 "right": self.keyright,
1288 "cancel": self.keyCancel,
1291 Screen.__init__(self, session)
1293 self.mactry = mactry
1297 self.macaddr = "000000000000"
1298 self.ReadMacinfo = 0
1299 self["text"]=Label((self.macaddr))
1300 self["text1"]= Label(("< >"))
1301 self["stattext"]= Label((""))
1308 def getModelInfo(self):
1310 if fileExists("/proc/stb/info/vumodel"):
1311 vumodel = open("/proc/stb/info/vumodel")
1312 info=vumodel.read().strip()
1317 print "MacConfig, model : combo"
1318 elif info == "solo":
1321 print "MacConfig, model : solo"
1325 print "MacConfig, model : duo"
1329 print "getModelInfo : uno"
1330 elif info == "ultimo":
1333 print "getModelInfo : ultimo"
1335 if getmodel == 0 and fileExists("/proc/stb/info/version"):
1336 version = open("/proc/stb/info/version")
1339 # print info,info[:2]
1340 if info[:2] == "14":
1342 print "MacConfig, model : solo_"
1343 elif info[:2] == "12":
1345 print "MacConfig, model: duo_"
1347 def loadmacaddr(self):
1351 if self.model==0 or self.model==3 or self.model==4 :
1352 devices = ["/autofs/sdb1", "/autofs/sdc1", "/autofs/sdd1", "/autofs/sde1" ]
1354 devices = [ "/autofs/sda1", "/autofs/sdb1" ]
1356 devices = [ "/autofs/sdb1", "/autofs/sdc1", "/autofs/sdd1" ]
1360 if fileExists(dev+"/macinfo.txt"):
1361 print "<open>"+dev+"/macinfo.txt"
1362 self.macfd = open(dev+"/macinfo.txt","r+")
1366 self["text"].setText(("cannot read usb!!"))
1367 self["text1"].setText((" "))
1368 self["stattext"].setText((" Press Exit Key."))
1372 macaddr=self.macfd.readline().split(":")
1373 self.macaddr=macaddr[1]+macaddr[2]+macaddr[3]+macaddr[4]+macaddr[5]+macaddr[6]
1375 self.ReadMacinfo = 1
1377 self["text"].setText(("cannot read usb!!"))
1378 self["text1"].setText((" "))
1379 self["stattext"].setText((" Press Exit Key."))
1382 def getmacaddr(self):
1383 if self.ReadMacinfo==0:
1386 if self.model == 2 or self.model == 3 or self.model == 4:
1387 cmd = "nanddump -s 0x" + str((self.mactry-1)*2) + "0000 -b -o -l 64 -p /dev/mtd5"
1388 elif self.model == 0 or self.model == 1:
1389 cmd = "nanddump -s 0x" + str((self.mactry-1)*2) + "0000 -b -o -l 64 -p /dev/mtd4"
1390 self.macConsole = Console()
1391 self.macConsole.ePopen(cmd, self.readmac,self.checkReadmac)
1395 def readmac(self, result, retval,extra_args=None):
1396 (callback) = extra_args
1397 if self.macConsole is not None:
1399 self.macConsole = None
1401 content =result.splitlines()
1403 if x.startswith('0x000'+str((self.mactry-1)*2)+'0010:'):
1407 elif len(macline) < 10:
1410 mac = macline[5]+":"+macline[6]+":"+macline[7]+":"+macline[8]+":"+macline[9]+":"+macline[10]
1411 self["stattext"].setText(("now : "+mac))
1414 def checkReadmac(self,data):
1416 print "block %d is bad block" % self.mactry
1417 self.mactry = self.mactry + 1
1419 self.session.open(MessageBox, _("FLASH IS BROKEN"), type = MessageBox.TYPE_INFO, enable_input = False)
1424 print 'mac dump read error'
1427 print 'mac address read ok'
1432 if self.ReadMacinfo==0 :
1434 macaddress = long(self.macaddr,16)-1
1436 macaddress = 0xffffffffffff
1437 self.macaddr = "%012x"%macaddress
1441 if self.ReadMacinfo==0 :
1443 macaddress = long(self.macaddr,16)+1
1444 if macaddress > 0xffffffffffff:
1446 self.macaddr = "%012x"%macaddress
1449 def displaymac(self):
1450 macaddr= self.macaddr
1451 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))))
1454 if self.ReadMacinfo==0 :
1457 macaddr = self.macaddr
1458 #make_mac_sector 00-99-99-99-00-00 > /tmp/mac.sector
1459 #flash_eraseall /dev/mtd4
1460 #nandwrite /dev/mtd4 /tmp/mac.sector -p
1461 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))
1463 if self.model == 2 or self.model == 3 or self.model == 4:
1464 system("flash_eraseall /dev/mtd5")
1465 system("nandwrite /dev/mtd5 /tmp/mac.sector -p")
1466 elif self.model == 0 or self.model ==1 :
1467 system("flash_eraseall /dev/mtd4")
1468 system("nandwrite /dev/mtd4 /tmp/mac.sector -p")
1469 macaddress = long(macaddr,16)+1
1470 if macaddress > 0xffffffffffff:
1472 macaddr = "%012x"%macaddress
1473 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))
1475 self.macfd.write(macwritetext)
1478 self.macaddr = macaddr
1481 self.session.open( MessageBox, _("Mac address fail"), MessageBox.TYPE_ERROR)
1486 def keyCancel(self):
1494 class SmartCardTest(Screen):
1496 <screen name="SmartCardTest" position="center,center" size="300,120" title="SmartCard Test" >
1497 <widget name="text" position="10,10" size="280,100" font="Regular;30" />
1500 def __init__(self, session, stbmodel = 0):
1501 self["actions"] = ActionMap(["DirectionActions", "OkCancelActions"],
1503 "cancel": self.keyCancel,
1507 Screen.__init__(self, session)
1508 self["text"]=Label(("Testing Smartcard 1..."))
1510 self.smartcardtimer = eTimer()
1511 self.smartcardtimer.callback.append(self.check_smart_card)
1512 self.closetimer = eTimer()
1513 self.closetimer.callback.append(self.close)
1515 global smartcardtest
1517 self.model = stbmodel
1518 self.smartcardtimer.start(100,True)
1520 def check_smart_card(self):
1521 global smartcardtest
1522 index = self.smartcard
1525 result = eSctest.getInstance().check_smart_card("/dev/sci0")
1527 result = eSctest.getInstance().check_smart_card("/dev/sci1")
1531 print "check smartcard : ", result
1535 if(index== 0 and ( self.model== 0 or self.model==2 or self.model == 3 or self.model == 4) ):
1537 self["text"].setText(_("Testing Smartcard 2..."))
1538 self.smartcardtimer.start(100,True)
1540 elif (index==1 or self.model==1):
1543 self["text"].setText(_("Smart Card OK!!"))
1544 self.closetimer.start(2000,True)
1545 self.smartcardtimer.stop()
1548 self["text"].setText(_("Smart Card model type error"))
1549 self.closetimer.start(2000,True)
1550 self.smartcardtimer.stop()
1553 # self.session.open( MessageBox, _("%d:NO_DEV_FOUND"%(index+1)), MessageBox.TYPE_ERROR)
1554 # elif result == -2:
1555 # self.session.open( MessageBox, _("%d:SC_NOT_INSERTED"%(index+1)), MessageBox.TYPE_ERROR)
1556 # elif result == -3:
1557 # self.session.open( MessageBox, _("%d:SC_NOT_VALID_ATR"%(index+1)), MessageBox.TYPE_ERROR)
1558 # elif result == -5:
1559 # self.session.open( MessageBox, _("%d:SC_READ_TIMEOUT"%(index+1)), MessageBox.TYPE_ERROR)
1561 self["text"].setText(_("Smart Card 1 Error!\nerrorcode=%d"%result))
1563 self["text"].setText(_("Smart Card 2 Error!\nerrorcode=%d"%result))
1564 self.closetimer.start(2000,True)
1565 self.smartcardtimer.stop()
1568 def keyCancel(self):
1572 if self.testok == 1:
1579 class FrontTest(Screen):
1581 <screen name="FrontTest" position="center,center" size="300,180" title="Front Test" >
1582 <widget name="text" position="10,10" size="280,160" font="Regular;30" />
1585 def __init__(self, session):
1586 self["actions"] = ActionMap(["DirectionActions", "OkCancelActions"],
1590 "down":self.keyDown,
1591 "cancel": self.keyCancel,
1594 Screen.__init__(self, session)
1595 self["text"]=Label(("Wheel LEFT"))
1598 self.fronttimer= eTimer()
1599 self.fronttimer.callback.append(self.FrontAnimate)
1600 self.frontturnonoff = 0
1601 eSctest.getInstance().VFD_Open()
1602 self.keytimeout = eTimer()
1603 self.keytimeout.callback.append(self.KeyTimeOut)
1604 self.keytimeout.start(5000,True)
1606 def KeyTimeOut(self):
1608 self["text"].setText(("Wheel LEFT ERROR"))
1609 elif self.step ==2 :
1610 self["text"].setText(("Wheel RIGHT ERROR"))
1611 elif self.step == 3:
1612 self["text"].setText(("Wheel BUTTON ERROR"))
1616 def keyCancel(self):
1618 self.fronttimer.stop()
1619 eSctest.getInstance().VFD_Close()
1628 self.keytimeout.stop()
1629 self.keytimeout.start(5000,True)
1631 self["text"].setText(_("Press Front Wheel"))
1635 self.keytimeout.stop()
1636 self.keytimeout.start(5000,True)
1638 self["text"].setText(_("Wheel RIGHT"))
1642 self.keytimeout.stop()
1644 self.fronttimer.start(1000,True)
1645 self["text"].setText(("Front Test OK!\nPress Exit Key"))
1646 # elif self.step==4:
1648 # self.fronttimer.stop()
1649 # eSctest.getInstance().VFD_Close()
1653 def FrontAnimate(self):
1654 if (self.frontturnonoff==0):
1655 eSctest.getInstance().turnon_VFD()
1656 self.frontturnonoff = 1
1658 self.frontturnonoff = 0
1659 eSctest.getInstance().turnoff_VFD()
1660 self.fronttimer.start(1000,True)
1663 class FrontTest_solo(Screen):
1665 <screen name="FrontTest_solo" position="center,center" size="300,180" title="Front Test" >
1666 <widget name="text" position="10,10" size="280,160" font="Regular;30" />
1669 def __init__(self, session):
1670 self["actions"] = ActionMap(["DirectionActions", "OkCancelActions","GlobalActions"],
1673 "cancel": self.keyCancel,
1674 "left": self.keyleft,
1675 "right": self.keyright,
1676 "power_down": self.keypower,
1677 "volumeUp": self.keyvolup,
1678 "volumeDown": self.keyvoldown,
1681 Screen.__init__(self, session)
1682 self["text"]=Label(("Press Front STANDBY"))
1685 self.fronttimer= eTimer()
1686 self.fronttimer.callback.append(self.FrontAnimate)
1687 self.frontturnonoff = 0
1688 eSctest.getInstance().VFD_Open()
1689 self.keytimeout = eTimer()
1690 self.keytimeout.callback.append(self.KeyTimeOut)
1691 self.keytimeout.start(5000,True)
1693 def KeyTimeOut(self):
1695 self["text"].setText(("Front STANDBY ERROR\nPress exit!"))
1696 elif self.step == 2 :
1697 self["text"].setText(("Front CH - ERROR\nPress exit!"))
1698 elif self.step == 3:
1699 self["text"].setText(("Front CH + ERROR\nPress exit!"))
1700 elif self.step == 4 :
1701 self["text"].setText(("Front VOL - ERROR\nPress exit!"))
1702 elif self.step == 5:
1703 self["text"].setText(("Front VOL + ERROR\nPress exit!"))
1710 self.keytimeout.stop()
1711 self.keytimeout.start(5000,True)
1713 self["text"].setText(_("Press Front CH -"))
1717 self.keytimeout.stop()
1718 self.keytimeout.start(5000,True)
1720 self["text"].setText(_("Press Front VOL -"))
1724 self.keytimeout.stop()
1725 self.keytimeout.start(5000,True)
1727 self["text"].setText(_("Press Front CH +"))
1731 self.keytimeout.stop()
1733 self.fronttimer.start(1000,True)
1734 self["text"].setText(_("Front LED OK?\n\nyes-ok\nno-exit"))
1735 # self["text"].setText(("Front Test OK!\nPress Exit Key"))
1737 def keyvoldown(self):
1739 self.keytimeout.stop()
1740 self.keytimeout.start(5000,True)
1742 self["text"].setText(_("Press Front VOL +"))
1744 def checkled(self, yesno):
1751 def keyCancel(self):
1753 self.fronttimer.stop()
1754 eSctest.getInstance().VFD_Close()
1762 self.fronttimer.stop()
1763 eSctest.getInstance().VFD_Close()
1766 def FrontAnimate(self):
1767 if (self.frontturnonoff==0):
1768 eSctest.getInstance().turnon_VFD()
1769 self.frontturnonoff = 1
1771 self.frontturnonoff = 0
1772 eSctest.getInstance().turnoff_VFD()
1773 self.fronttimer.start(1000,True)
1775 class FrontTest_uno(Screen):
1777 <screen name="FrontTest_uno" position="center,center" size="300,180" title="Front Test" >
1778 <widget name="text" position="10,10" size="280,160" font="Regular;30" />
1781 def __init__(self, session):
1782 self["actions"] = ActionMap(["DirectionActions", "OkCancelActions","GlobalActions"],
1785 "cancel": self.keyCancel,
1786 "left": self.keyleft,
1787 "right": self.keyright,
1788 "volumeUp": self.keyvolup,
1789 "volumeDown": self.keyvoldown,
1790 "power_down": self.keypower,
1793 Screen.__init__(self, session)
1794 self["text"]=Label(("Press Front CH -"))
1796 self.fronttimer= eTimer()
1797 self.fronttimer.callback.append(self.FrontAnimate)
1798 self.frontturnonoff = 0
1799 eSctest.getInstance().VFD_Open()
1800 self.keytimeout = eTimer()
1801 self.keytimeout.callback.append(self.KeyTimeOut)
1802 self.keytimeout.start(5000,True)
1804 def KeyTimeOut(self):
1806 self["text"].setText(("Front CH - ERROR\nPress exit!"))
1807 elif self.step == 2:
1808 self["text"].setText(("Front CH + ERROR\nPress exit!"))
1809 elif self.step == 3 :
1810 self["text"].setText(("Front VOL - ERROR\nPress exit!"))
1811 elif self.step == 4:
1812 self["text"].setText(("Front VOL + ERROR\nPress exit!"))
1813 elif self.step == 5:
1814 self["text"].setText(("Front STANDBY ERROR\nPress exit!"))
1819 self.keytimeout.stop()
1820 self.keytimeout.start(5000,True)
1822 self["text"].setText(_("Press Front CH +"))
1825 self.keytimeout.stop()
1826 self.keytimeout.start(5000,True)
1828 self["text"].setText(_("Press Front VOL -"))
1830 def keyvoldown(self):
1832 self.keytimeout.stop()
1833 self.keytimeout.start(5000,True)
1835 self["text"].setText(_("Press Front VOL +"))
1839 self.keytimeout.stop()
1840 self.keytimeout.start(5000,True)
1842 self["text"].setText(_("Press Front STANDBY"))
1846 self.keytimeout.stop()
1848 self.fronttimer.start(1000,True)
1849 self["text"].setText(_("Front LED OK?\n\nyes-ok\nno-exit"))
1851 def keyCancel(self):
1853 self.fronttimer.stop()
1854 eSctest.getInstance().VFD_Close()
1862 self.fronttimer.stop()
1863 eSctest.getInstance().VFD_Close()
1866 def FrontAnimate(self):
1867 if (self.frontturnonoff==0):
1868 eSctest.getInstance().turnon_VFD()
1869 self.frontturnonoff = 1
1871 self.frontturnonoff = 0
1872 eSctest.getInstance().turnoff_VFD()
1873 self.fronttimer.start(1000,True)
1875 class FrontTest_ultimo_Summary(Screen):
1877 <screen name="FactoryTestSummary" position="0,0" size="256,64" id="1">
1878 <widget source="parent.Title" render="Label" position="0,0" size="256,24" font="Regular;18" halign="center" valign="center"/>
1879 <widget name="text" position="0,24" size="256,40" font="VFD;20" halign="center" valign="center"/>
1882 def __init__(self, session, parent):
1883 Screen.__init__(self, session, parent = parent)
1884 self["text"] = Label("Press Front STANDBY")
1886 def setText(self, text = ""):
1887 if not isinstance(text, str):
1889 self["text"].setText(text)
1891 class FrontTest_ultimo(FrontTest_solo):
1893 <screen position="center,center" size="300,180" title="Front Test" >
1894 <widget name="text" position="10,10" size="280,160" font="Regular;30" />
1897 def createSummary(self):
1898 return FrontTest_ultimo_Summary
1900 def KeyTimeOut(self):
1902 self["text"].setText(("Front STANDBY ERROR\nPress exit!"))
1903 self.summaries.setText("Front STANDBY ERROR\nPress exit!")
1904 elif self.step == 2 :
1905 self["text"].setText(("Front CH - ERROR\nPress exit!"))
1906 self.summaries.setText("Front CH - ERROR\nPress exit!")
1907 elif self.step == 3:
1908 self["text"].setText(("Front CH + ERROR\nPress exit!"))
1909 self.summaries.setText("Front CH + ERROR\nPress exit!")
1910 elif self.step == 4 :
1911 self["text"].setText(("Front VOL - ERROR\nPress exit!"))
1912 self.summaries.setText("Front VOL - ERROR\nPress exit!")
1913 elif self.step == 5:
1914 self["text"].setText(("Front VOL + ERROR\nPress exit!"))
1915 self.summaries.setText("Front VOL + ERROR\nPress exit!")
1920 self.keytimeout.stop()
1921 self.keytimeout.start(5000,True)
1923 self["text"].setText(_("Press Front CH -"))
1924 self.summaries.setText(_("Press Front CH -"))
1928 self.keytimeout.stop()
1929 self.keytimeout.start(5000,True)
1931 self["text"].setText(_("Press Front VOL -"))
1932 self.summaries.setText(_("Press Front VOL -"))
1936 self.keytimeout.stop()
1937 self.keytimeout.start(5000,True)
1939 self["text"].setText(_("Press Front CH +"))
1940 self.summaries.setText(_("Press Front CH +"))
1944 self.keytimeout.stop()
1946 self.fronttimer.start(1000,True)
1947 self["text"].setText(_("Front LED OK?\n\nyes-ok\nno-exit"))
1948 self.summaries.setText(_("Front LED OK?"))
1950 def keyvoldown(self):
1952 self.keytimeout.stop()
1953 self.keytimeout.start(5000,True)
1955 self["text"].setText(_("Press Front VOL +"))
1956 self.summaries.setText(_("Press Front VOL +"))
1958 def FrontAnimate(self):
1959 if (self.frontturnonoff==0):
1960 eSctest.getInstance().turnon_VFD()
1961 self.frontturnonoff = 1
1962 self.fronttimer.start(1500,True)
1964 self.frontturnonoff = 0
1965 eSctest.getInstance().turnoff_VFD()
1966 self.fronttimer.start(500,True)
1972 class RS232Test(Screen):
1974 <screen name="RS232Test" position="center,center" size="260,100" title="RS232 Test" >
1975 <widget name="text" position="10,10" size="240,80" font="Regular;30" />
1978 def __init__(self, session):
1979 self["actions"] = ActionMap(["DirectionActions", "OkCancelActions"],
1981 "cancel": self.keyCancel,
1984 Screen.__init__(self, session)
1985 self["text"]=Label(("Press \"Enter\" Key"))
1986 self.timer = eTimer()
1987 self.timer.callback.append(self.checkrs232)
1988 self.timer.start(100, True)
1990 def checkrs232(self):
1993 rs=open('/dev/ttyS0','r')
1995 r,w,e = select.select(rd, [], [], 10)
2011 print 'except error'
2014 self.session.open( MessageBox, _("RS232 Test Failed!\nPress 'EXIT' button!"), MessageBox.TYPE_ERROR)
2017 def keyCancel(self):
2020 class AgingTestSummary(Screen):
2022 <screen name="AgingTestSummary" position="0,0" size="132,64" id="1">
2023 <widget source="parent.Title" render="Label" position="6,0" size="132,64" font="Regular;18" halign="center" valign="center"/>
2026 class AgingTestSummaryVFD(Screen):
2028 <screen name="AgingTestSummaryVFD" position="0,0" size="256,64" id="1">
2029 <eLabel text="MODE: " position="0,0" size="50,16" font="VFD;14" />
2030 <widget name="zapmode" position="51,0" size="70,16" font="VFD;14" halign="left" valign="center"/>
2031 <widget name="timer" position="152,0" size="124,16" font="VFD;14" halign="left" valign="center"/>
2032 <eLabel text="TUNER: " position="0,16" size="50,16" font="VFD;14" />
2033 <widget name="curtuner" position="51,16" size="200,16" font="VFD;14" halign="left" valign="center"/>
2034 <!-- Signal Quality -->
2035 <eLabel text="SNR: " position="0,32" size="45,16" font="VFD;14" transparent="1" halign="left" valign="center"/>
2036 <widget source="session.FrontendStatus" render="Label" position="46,32" size="40,16" font="VFD;14" transparent="1">
2037 <convert type="FrontendInfo">SNRdB</convert>
2040 <eLabel text="AGC: " position="0,48" size="45,16" font="VFD;14" transparent="1" noWrap="1" />
2041 <widget source="session.FrontendStatus" render="Label" position="46,48" size="40,16" font="VFD;14" transparent="1" noWrap="1">
2042 <convert type="FrontendInfo">AGC</convert>
2044 <widget name="error" position="90,32" size="166,32" font="VFD;18" halign="center" valign="center"/>
2047 def __init__(self, session, parent):
2048 Screen.__init__(self, session)
2049 self["zapmode"] = Label("")
2050 self["timer"] = Label("")
2051 self["curtuner"] = Label("")
2052 self["error"] = Label("")
2054 def setText(self, label = "zapmode",text = ""):
2055 if not isinstance(text,str):
2057 self[label].setText(text)
2059 class AgingTest(Screen):
2061 <screen position="center,center" size="350,220" title="Aging Test" >
2062 <widget name="text1" position="10,10" size="340,40" font="Regular;30" halign = "center" valign = "center"/>
2063 <widget name="text2" position="10,60" size="340,40" font="Regular;30" halign = "center" valign = "center"/>
2064 <!-- Signal Quality -->
2065 <eLabel text="SNR : " position="40,120" size="60,25" font="Regular;25" transparent="1" />
2066 <widget source="session.FrontendStatus" render="Label" position="100,120" size="60,25" font="Regular;25" transparent="1">
2067 <convert type="FrontendInfo">SNRdB</convert>
2070 <eLabel text="AGC : " position="180,120" size="60,25" font="Regular;25" transparent="1" noWrap="1" />
2071 <widget source="session.FrontendStatus" render="Label" position="240,120" size="60,25" font="Regular;25" transparent="1" noWrap="1">
2072 <convert type="FrontendInfo">AGC</convert>
2074 <widget name="text3" position="10,150" size="330,35" font="Regular;28" halign = "center" valign = "center"/>
2075 <widget name="text4" position="10,185" size="330,35" font="Regular;20" halign = "center" valign = "center"/>
2078 def __init__(self, session, model):
2079 Screen.__init__(self, session)
2080 self["actions"] = ActionMap(["MediaPlayerActions","GlobalActions", "MediaPlayerSeekActions", "ChannelSelectBaseActions"],
2082 "pause": self.keyEnd,
2083 "stop": self.keyFinish,
2084 "volumeUp": self.keyVolumeup,
2085 "volumeDown": self.keyVolumedown,
2086 "volumeMute": self.nothing,
2087 "seekFwd" : self.keyFFW,
2090 self["text1"]=Label(("Exit - Press Pause Key"))
2091 self["text2"]=Label(("Reset - Press Stop Key"))
2092 self["text3"]=Label(("Manual zapping"))
2093 self["text4"]=Label((" "))
2094 self.avswitch = AVSwitch()
2095 self.curzappingmode = 'manual'
2096 self.zapping_interval = 300
2098 self.timeout = self.zapping_interval
2100 self.zappinglist = {
2102 ('S-1','1:0:19:1325:3EF:1:0x64af79:0:0:0:'), # astra hd
2103 ('S-2','1:0:19:1324:3EF:1:0x64af79:0:0:0:'), # anixe hd
2104 ('S-3','1:0:19:1331:3EF:1:0x64af79:0:0:0:') # servus hd
2107 ('C-1','1:0:19:1325:3EF:1:FFFF029A:0:0:0:'), # astra hd (DVB-C)
2108 ('C-2','1:0:19:1324:3EF:1:FFFF029A:0:0:0:') # anixe hd (DVB-C)
2111 self.LockCheckTimer = eTimer()
2112 self.LockCheckTimer.callback.append(self.LockCheck)
2113 self.nextzappingtimer = eTimer()
2114 self.nextzappingtimer.callback.append(self.checktimeout)
2115 self.checkTunerType()
2116 self.makeTunelList()
2117 self.playservice(service = self.tunelist[0][1])
2118 # self.logmessage("AGING TEST START")
2120 def createSummary(self):
2122 self.onShown.append(self.VFDinit)
2123 return AgingTestSummaryVFD
2125 return AgingTestSummary
2127 def setTextVFD(self, name ,text):
2129 self.summaries.setText(name ,text)
2132 if self.curzappingmode == 'manual' :
2133 self.summaries.setText("zapmode", 'MANUAL')
2135 self.summaries.setText("zapmode", 'AUTO')
2136 self.summaries.setText("timer", "Timer %d sec"%self.timeout)
2137 self.summaries.setText("curtuner", "%s, CHANNEL - %s)"%(self.NimType[0], self.tunelist[0][0]))
2139 def checkTunerType(self):
2141 nimfile = open("/proc/bus/nim_sockets")
2142 for line in nimfile.readlines():
2146 if line.strip().startswith("NIM Socket"):
2147 parts = line.strip().split(" ")
2148 current_slot = int(parts[2][:-1])
2149 elif line.strip().startswith("Type:"):
2150 self.NimType[current_slot]= str(line.strip()[6:])
2151 elif line.strip().startswith("empty"):
2152 self.NimType.pop(current_slot)
2155 def makeTunelList(self):
2156 if self.NimType[0].startswith("DVB-S"):
2158 elif self.NimType[0].startswith("DVB-C"):
2160 elif self.NimType[0].startswith("DVB-T"):
2161 # tunetype = "DVB-T"
2164 self.tunelist = self.zappinglist[tunetype]
2166 print "[FactoryTest] ERROR, index error (%s)"%tunetype
2168 def nextZapping(self, zap_rev = False):
2170 tunelistlen = len(self.tunelist)
2171 nextservice = self.tunelist.pop(tunelistlen-1)
2172 self.tunelist.insert(0,nextservice)
2174 currentservice = self.tunelist.pop(0)
2175 self.tunelist.append(currentservice)
2176 self.playservice(service=self.tunelist[0][1])
2177 if self.curzappingmode == 'auto':
2178 self.timeout = self.zapping_interval
2179 self.setTextVFD("curtuner", "%s, CHANNEL - %s)"%(self.NimType[0], self.tunelist[0][0]))
2181 def checktimeout(self):
2182 if self.timeout == 0:
2186 self["text4"].setText("remain %d sec for next tuning" %self.timeout)
2187 self.setTextVFD("timer", "Timer %d sec"%self.timeout)
2189 def playservice(self,service = '1:0:19:1325:3EF:1:0x64af79:0:0:0:'):
2190 ref = eServiceReference(service)
2191 self.session.nav.playService(ref)
2192 self.avswitch.setAspectRatio(6)
2193 self.avswitch.setColorFormat(0)
2194 self.LockCheckTimer.start(2000,True)
2196 def LockCheck(self):
2197 result = eSctest.getInstance().getFrontendstatus(0)
2198 if result == 0 or result == -1:
2201 print "AGINGTEST - LOCK FAIL(%d)"%self.error
2202 self.setTextVFD("error", "LOCK FAIL(%d)"%self.error)
2203 # logmsg = "[LOCKFAIL][%d] TYPE : %s, CH : %s, ZAPMODE: %s"%(self.error,self.NimType[0],self.tunelist[0][0],self.curzappingmode)
2204 # self.logmessage(logmsg)
2206 self.session.open( MessageBox, _("Locking Fail Error"), MessageBox.TYPE_ERROR)
2208 def logmessage(self,msg):
2215 if self.curzappingmode == 'auto':
2216 self.curzappingmode = 'manual'
2217 self.nextzappingtimer.stop()
2218 self.timeout = self.zapping_interval
2219 self["text3"].setText("Manual zapping")
2220 self["text4"].setText("")
2221 self.setTextVFD("zapmode", 'MANUAL')
2222 self.setTextVFD("timer", "")
2224 elif self.curzappingmode == 'manual':
2225 self.curzappingmode = 'auto'
2226 self["text3"].setText("Auto zapping")
2227 self["text4"].setText("remain %d sec for next tuning" %self.timeout)
2228 self.setTextVFD("zapmode", 'AUTO')
2229 self.setTextVFD("timer", "Timer %d sec"%self.timeout)
2230 # self.timeout = self.zapping_interval
2231 self.nextzappingtimer.start(1000)
2233 def keyVolumeup(self):
2234 self.nextZapping(zap_rev = False)
2236 def keyVolumedown(self):
2237 self.nextZapping(zap_rev = True)
2243 self.session.nav.stopService()
2244 self.close(0) # exit
2246 def keyFinish(self):
2247 self.session.nav.stopService()
2248 self.close(1) # exit and reset
2250 class AgingTest_mode2_Summary(Screen):
2252 <screen name="AgingTest_mode2_Summary" position="0,0" size="132,64" id="1">
2253 <widget source="parent.Title" render="Label" position="6,0" size="132,64" font="Regular;18" halign="center" valign="center"/>
2256 class AgingTest_mode2_Summary_VFD(Screen):
2258 <screen name="AgingTest_mode2_Summary_VFD" position="0,0" size="256,64" id="1">
2259 <eLabel text="MODE: " position="0,0" size="50,16" font="VFD;14" />
2260 <widget name="zapmode" position="51,0" size="70,16" font="VFD;14" halign="left" valign="center"/>
2261 <widget name="timer" position="152,0" size="124,16" font="VFD;14" halign="left" valign="center"/>
2262 <eLabel text="TUNER: " position="0,16" size="50,16" font="VFD;14" />
2263 <widget name="curtuner" position="51,16" size="200,16" font="VFD;14" halign="left" valign="center"/>
2264 <!-- Signal Quality -->
2265 <eLabel text="SNR: " position="0,32" size="45,16" font="VFD;14" transparent="1" halign="left" valign="center"/>
2266 <widget source="session.FrontendStatus" render="Label" position="46,32" size="40,16" font="VFD;14" transparent="1">
2267 <convert type="FrontendInfo">SNRdB</convert>
2270 <eLabel text="AGC: " position="0,48" size="45,16" font="VFD;14" transparent="1" noWrap="1" />
2271 <widget source="session.FrontendStatus" render="Label" position="46,48" size="40,16" font="VFD;14" transparent="1" noWrap="1">
2272 <convert type="FrontendInfo">AGC</convert>
2274 <widget name="error" position="90,32" size="166,32" font="VFD;18" halign="center" valign="center"/>
2277 def __init__(self, session, parent):
2278 Screen.__init__(self, session)
2279 self["zapmode"] = Label("")
2280 self["timer"] = Label("")
2281 self["curtuner"] = Label("")
2282 self["error"] = Label("")
2284 def setText(self, label = "zapmode",text = ""):
2285 if not isinstance(text,str):
2287 self[label].setText(text)
2289 from Components.Input import Input
2290 from Screens.InputBox import InputBox
2291 class AgingTest_mode2(Screen):
2293 <screen position="center,center" size="370,190" title="Aging Test 2" >
2294 <widget name="text1" position="10,10" size="350,40" font="Regular;30" halign="center" valign="center"/>
2295 <widget name="text2" position="10,60" size="350,30" font="Regular;25" halign="center" valign="center"/>
2296 <!-- Signal Quality -->
2297 <eLabel text="SNR : " position="50,100" size="60,25" font="Regular;25" transparent="1" />
2298 <widget source="session.FrontendStatus" render="Label" position="110,100" size="60,25" font="Regular;25" transparent="1">
2299 <convert type="FrontendInfo">SNRdB</convert>
2302 <eLabel text="AGC : " position="190,100" size="60,25" font="Regular;25" transparent="1" noWrap="1" />
2303 <widget source="session.FrontendStatus" render="Label" position="250,100" size="60,25" font="Regular;25" transparent="1" noWrap="1">
2304 <convert type="FrontendInfo">AGC</convert>
2306 <widget name="text3" position="10,130" size="350,25" font="Regular;18" halign="center" valign="center"/>
2307 <widget name="text4" position="10,155" size="350,25" font="Regular;18" halign="center" valign="center"/>
2310 def __init__(self, session,model = 4):
2311 self["actions"] = ActionMap(["MediaPlayerActions","GlobalActions","InfobarMenuActions","ChannelSelectBaseActions"],
2313 "pause": self.keyEnd,
2314 "stop": self.keyFinish,
2315 "volumeUp": self.keyVolumeup,
2316 "volumeDown": self.keyVolumedown,
2317 "volumeMute": self.nothing,
2318 "mainMenu" : self.keyMenu,
2319 "nextBouquet" : self.keyChannelup,
2320 "prevBouquet" : self.keyChannelDown,
2321 "showFavourites" : self.keyBlue,
2324 Screen.__init__(self, session)
2326 self.slotindex = { 0 : 'A', 1 : 'B', 2 : 'C', 3: 'D'}
2328 self.isChangeTuner = True
2329 self.isChangeChannel = False
2330 self.zapping_interval = 300
2331 self.timeout = self.zapping_interval
2332 self.avswitch = AVSwitch()
2334 self.LockCheckTimer = eTimer()
2335 self.LockCheckTimer.callback.append(self.LockCheck)
2336 self.nextzappingtimer = eTimer()
2337 self.nextzappingtimer.callback.append(self.checktimeout)
2338 self.tunelist_db = {
2341 ('1-1','1:0:19:1325:3EF:1:0x64af79:0:0:0:'), # astra hd
2342 ('1-2','1:0:19:1324:3EF:1:0x64af79:0:0:0:'), # anixe hd
2343 ('1-3','1:0:19:1331:3EF:1:0x64af79:0:0:0:') # servus hd
2346 ('2-1','1:0:19:1325:3EF:1:0xC00000:0:0:0:'), # astra hd
2347 ('2-2','1:0:19:1324:3EF:1:0xC00000:0:0:0:'), # anixe hd
2348 ('2-3','1:0:19:1331:3EF:1:0xC00000:0:0:0:') # servus hd
2351 ('3-1','1:0:19:1325:3EF:1:0x282AF79:0:0:0:'), # astra hd
2352 ('3-2','1:0:19:1324:3EF:1:0x282AF79:0:0:0:'), # anixe hd
2353 ('3-3','1:0:19:1331:3EF:1:0x282AF79:0:0:0:') # servus hd
2356 ('4-1','1:0:19:1325:3EF:1:0x02d0af79:0:0:0:'), # astra hd, Panamsat 4 (72.0E)
2357 ('4-2','1:0:19:1324:3EF:1:0x02d0af79:0:0:0:'), # anixe hd
2358 ('4-3','1:0:19:1331:3EF:1:0x02d0af79:0:0:0:') # servus hd
2360 # namespace : 0x02d0af79, 720 # Panamsat 7,10 (68.5E)
2364 ('C-1','1:0:19:1325:3EF:1:FFFF029A:0:0:0:'), # astra hd (DVB-C)
2365 ('C-2','1:0:19:1324:3EF:1:FFFF029A:0:0:0:') # anixe hd (DVB-C)
2371 self.checkTunerType()
2372 self.makeTunelList()
2373 self.playservice(service = self.tunelist[self.curtuner][0][1])
2374 self.curzappingmode = 'auto'
2375 self["text1"]=Label("ZAPPING MODE : AUTO")
2376 self["text2"]=Label("CURRENT TUNER : %s (%s)"%(self.slotindex[self.curtuner], self.NimType[self.curtuner]))
2377 self["text3"]=Label("remain %d sec for next tuning" %self.timeout)
2378 self["text4"]=Label("Press 'stop' key for exit")
2379 self.nextzappingtimer.start(1000)
2380 self.logmessage("AGING TEST START")
2382 def createSummary(self):
2384 self.onShown.append(self.VFDinit)
2385 return AgingTest_mode2_Summary_VFD
2387 return AgingTest_mode2_Summary
2390 if self.curzappingmode == 'manual' :
2391 self.summaries.setText("zapmode", 'MANUAL')
2393 self.summaries.setText("zapmode", 'AUTO')
2394 self.summaries.setText("timer", "Timer %d sec"%self.timeout)
2395 self.summaries.setText("curtuner", "%s (%s, CHANNEL - %s)"%(self.slotindex[self.curtuner], self.NimType[self.curtuner], self.tunelist[self.curtuner][0][0]))
2397 def setTextVFD(self,name ,text):
2399 self.summaries.setText(name, text)
2401 def checkTunerType(self):
2402 nimfile = open("/proc/bus/nim_sockets")
2403 for line in nimfile.readlines():
2407 if line.strip().startswith("NIM Socket"):
2408 parts = line.strip().split(" ")
2409 current_slot = int(parts[2][:-1])
2410 elif line.strip().startswith("Type:"):
2411 self.NimType[current_slot]= str(line.strip()[6:])
2412 elif line.strip().startswith("empty"):
2413 self.NimType.pop(current_slot)
2416 def makeTunelList(self):
2417 for slot, type in self.NimType.items():
2418 if type.startswith('DVB-S'):
2419 tunelist_type = 'DVB-S2'
2420 elif type.startswith('DVB-C'):
2421 tunelist_type = 'DVB-C'
2422 elif type.startswith('DVB-T'):
2423 tunelist_type = 'DVB-T'
2425 self.tunelist[slot] = self.tunelist_db[tunelist_type].pop(0)
2427 print "[FactoryTest] ERROR, pop from empty list (%s)"%tunelist_type
2431 def nextZapping(self, mode = 'auto', changeTuner = True, changeService = False, reverse_tuner = False, reverse_service = False):
2432 if mode == 'manual' and changeTuner or mode == 'auto' and self.isChangeTuner:
2437 if self.curtuner >= len(self.tunelist):
2439 if self.curtuner < 0:
2440 self.curtuner = len(self.tunelist)-1
2441 if mode == 'manual' and changeService or mode == 'auto' and self.isChangeChannel:
2443 tunelistlen = len(self.tunelist[self.curtuner])
2444 nextservice = self.tunelist[self.curtuner].pop(tunelistlen-1)
2445 self.tunelist[self.curtuner].insert(0,nextservice)
2447 currentservice = self.tunelist[self.curtuner].pop(0)
2448 self.tunelist[self.curtuner].append(currentservice)
2449 self.playservice(service=self.tunelist[self.curtuner][0][1])
2450 if self.curzappingmode == 'auto':
2451 self.timeout = self.zapping_interval
2452 self["text2"].setText("CURRENT TUNER : %s (%s)"%(self.slotindex[self.curtuner], self.NimType[self.curtuner]))
2453 self.setTextVFD("curtuner", "%s (%s, CHANNEL - %s)"%(self.slotindex[self.curtuner], self.NimType[self.curtuner], self.tunelist[self.curtuner][0][0]))
2456 def checktimeout(self):
2457 if self.timeout == 0:
2458 self.nextZapping(mode = 'auto')
2461 self["text3"].setText("remain %d sec for next tuning" %self.timeout)
2462 self.setTextVFD("timer", "Timer %d sec"%self.timeout)
2464 def playservice(self,service = '1:0:19:1325:3EF:1:0x64af79:0:0:0:'):
2465 ref = eServiceReference(service)
2466 self.session.nav.playService(ref)
2467 self.avswitch.setAspectRatio(6)
2468 self.avswitch.setColorFormat(0)
2469 self.LockCheckTimer.start(2000,True)
2471 def LockCheck(self):
2472 result = eSctest.getInstance().getFrontendstatus(self.curtuner)
2473 if result == 0 or result == -1:
2476 print "AGINGTEST - LOCK FAIL(%d)"%self.error
2477 self.summaries.setText("error", "LOCK FAIL(%d)"%self.error)
2478 logmsg = "[LOCKFAIL][%d] SLOT : %d, TYPE : %s, CH : %s, ZAPMODE: %s"%(self.error,self.curtuner,self.NimType[self.curtuner],self.tunelist[self.curtuner][0][0],self.curzappingmode)
2479 self.logmessage(logmsg)
2482 print "AGINGTEST - LOCK FAIL(%d)"%self.error
2483 logmsg = "[LOCKFAIL][%d] SLOT : %d, TYPE : %s, CH : %s, ZAPMODE: %s"%(self.error,self.curtuner,self.NimType[self.curtuner],self.tunelist[self.curtuner][0][0],self.curzappingmode)
2484 self.logmessage(logmsg)
2485 self.session.open( MessageBox, _("Locking Fail Error"), MessageBox.TYPE_ERROR)
2487 def logmessage(self,msg):
2488 print "[logmessage]",msg
2490 checklist = ["/autofs/sda1", "/autofs/sdb1", "/autofs/sdc1", "/autofs/sdd1", "/autofs/sde1"]
2491 for dev in checklist:
2494 if access(dev,F_OK|R_OK|W_OK):
2495 dummy=open(dev+"/dummy03","w")
2496 dummy.write("check")
2498 dummy=open(dev+"/dummy03","r")
2499 if dummy.readline()=="check":
2500 print dev," - rw check ok"
2504 print dev," - read check error"
2506 system("rm "+dev+"/dummy03")
2508 print dev," - rw access error"
2512 print dev," - exceptional error"
2514 cmd = "echo %s >> %s/agingTest.log" % (msg,devpath)
2515 print "[logmessage] %s(%s)"%(cmd,devpath)
2522 if self.curzappingmode == 'auto':
2523 self.curzappingmode = 'manual'
2524 self["text1"].setText("ZAPPING MODE : MANUAL")
2525 self["text3"].setText("Press 'stop' key for exit")
2526 self["text4"].setText("")
2527 self.setTextVFD("zapmode", 'MANUAL')
2528 self.setTextVFD("timer", "")
2529 self.nextzappingtimer.stop()
2530 self.timeout = self.zapping_interval
2531 elif self.curzappingmode == 'manual':
2532 self.curzappingmode = 'auto'
2533 self["text1"].setText("ZAPPING MODE : AUTO")
2534 self["text3"].setText("remain %d sec for next tuning" %self.timeout)
2535 self["text4"].setText("Press 'stop' key for exit")
2536 self.setTextVFD("zapmode", 'AUTO')
2537 self.setTextVFD("timer", "Timer %d sec"%self.timeout)
2538 self.timeout = self.zapping_interval
2539 self.nextzappingtimer.start(1000)
2541 def keyVolumeup(self):
2542 self.nextZapping(mode = 'manual', changeTuner = False, changeService = True)
2544 def keyVolumedown(self):
2545 self.nextZapping(mode = 'manual', changeTuner = False, changeService = True, reverse_service = True)
2547 def keyChannelup(self):
2548 self.nextZapping(mode = 'manual', changeTuner = True, changeService = False)
2550 def keyChannelDown(self):
2551 self.nextZapping(mode = 'manual', changeTuner = True, changeService = False, reverse_tuner = True)
2554 self.session.openWithCallback(self.menuCallback, AgingTest_mode2_setmenu, tuner = self.isChangeTuner, channel = self.isChangeChannel, interval = self.zapping_interval)
2556 def menuCallback(self, tuner, channel, interval):
2557 if tuner is not None:
2558 self.isChangeTuner = tuner
2559 if channel is not None:
2560 self.isChangeChannel = channel
2561 if interval is not None:
2562 self.zapping_interval = interval
2563 self.timeout = self.zapping_interval
2566 self.session.nav.stopService()
2569 def keyFinish(self):
2570 self.session.nav.stopService()
2573 from Components.ConfigList import ConfigListScreen
2574 from Components.config import ConfigInteger, ConfigYesNo, getConfigListEntry, NoSave
2575 class AgingTest_mode2_setmenu(Screen,ConfigListScreen):
2577 <screen position="center,center" size="370,190" title="Aging Test - settings" >
2578 <widget name="config" zPosition="2" position="10,10" size="360,180" scrollbarMode="showOnDemand" transparent="1" />
2579 <ePixmap pixmap="Vu_HD/buttons/green.png" position="50,135" size="25,25" alphatest="on" />
2580 <ePixmap pixmap="Vu_HD/buttons/red.png" position="215,135" size="25,25" alphatest="on" />
2581 <widget source="key_red" render="Label" position="75,135" zPosition="1" size="90,25" font="Regular;20" halign="center" valign="center" transparent="1" />
2582 <widget source="key_green" render="Label" position="240,135" zPosition="1" size="90,25" font="Regular;20" halign="center" valign="center" transparent="1" />
2584 def __init__(self,session, tuner = True, channel = False, interval = 300):
2585 Screen.__init__(self,session)
2586 self.session = session
2588 self.channel = channel
2589 self.zap_interval = interval
2590 self["key_red"] = StaticText(_("Save"))
2591 self["key_green"] = StaticText(_("Cancel"))
2592 self["shortcuts"] = ActionMap(["ShortcutActions", "SetupActions" ],
2595 "cancel": self.keyCancel,
2596 "red": self.keyCancel,
2597 "green": self.keySave,
2600 ConfigListScreen.__init__(self, self.list,session = self.session)
2601 self.config_tuner = NoSave(ConfigYesNo(default = self.tuner))
2602 self.config_channel = NoSave(ConfigYesNo(default = self.channel))
2603 self.config_zap_interval = NoSave(ConfigInteger(default = self.zap_interval, limits=(5, 9999) ) )
2606 def configSetup(self):
2608 self.setupEntryTuner = getConfigListEntry(_("change tuner on timeout"), self.config_tuner )
2609 self.setupEntryChannel = getConfigListEntry(_("change channel on timeout"), self.config_channel )
2610 self.setupEntryZapInterval = getConfigListEntry(_("zapping interval (sec) "), self.config_zap_interval )
2611 self.list.append( self.setupEntryTuner )
2612 self.list.append( self.setupEntryChannel )
2613 self.list.append( self.setupEntryZapInterval )
2614 self["config"].list = self.list
2615 self["config"].l.setList(self.list)
2618 self.close(self.config_tuner.value, self.config_channel.value, self.config_zap_interval.value)
2620 def keyCancel(self):
2621 self.close(None, None, None)
2623 class TestTuneMenu(Screen):
2625 <screen position="350,230" size="550,300" title="Tuning Test" >
2626 <widget name="testlist" position="10,0" size="440,250" itemHeight="35"/>
2627 <widget name="resultlist" position="470,0" size="60,250" itemHeight="35"/>
2628 <widget source="text" render="Label" position="100,270" size="450,30" font="Regular;22" />
2631 def __init__(self ,session ,tuneInfo, tunelist,NimType):
2632 self.session = session
2633 self.NimType = NimType
2634 self.tuneInfo = tuneInfo
2635 self.tunelist = tunelist
2637 self["actions"] = NumberActionMap(["OkCancelActions","WizardActions","NumberActions"],
2639 "left": self.nothing,
2640 "right":self.nothing,
2641 "ok": self.TestAction,
2642 "cancel": self.keyCancel,
2644 "down": self.keydown,
2645 "0": self.numberaction,
2646 "1": self.numberaction,
2647 "2": self.numberaction,
2648 "3": self.numberaction,
2649 "4": self.numberaction,
2650 "5": self.numberaction,
2651 "6": self.numberaction,
2652 "7": self.numberaction,
2653 "8": self.numberaction,
2654 "9": self.numberaction,
2657 Screen.__init__(self, session)
2658 self.text = _("Press 'EXIT' key to finish tune test.")
2659 self["text"] = StaticText(self.text)
2661 session.nav.stopService() # try to disable foreground service
2663 self.tunemsgtimer = eTimer()
2664 self.tunemsgtimer.callback.append(self.tunemsg)
2667 self.camtimer = eTimer()
2668 self.camtimer.callback.append(self.cam_state)
2671 self.tuningtimer = eTimer()
2672 self.tuningtimer.callback.append(self.updateStatus)
2674 self.avswitch = AVSwitch()
2676 def createConfig(self):
2677 self.menulength= len(self.tunelist)
2678 self["testlist"] = MenuList(self.tunelist)
2680 for x in range(self.menulength):
2681 self.rlist.append((".."))
2682 self["resultlist"] = TestResultList(self.rlist)
2684 def TestAction(self):
2685 print "line - ",self["testlist"].getCurrent()[1]
2686 self.currentindex = index = self["testlist"].getCurrent()[1]
2688 self.TestTune(index)
2694 print "self.menulength = ",self.menulength
2695 print "self[\"testlist\"].getCurrent()[1] = ",self["testlist"].getCurrent()[1]
2696 if self["testlist"].getCurrent()[1]==0:
2697 self["testlist"].moveToIndex(self.menulength-1)
2698 self["resultlist"].moveToIndex(self.menulength-1)
2700 self["testlist"].up()
2701 self["resultlist"].up()
2705 print "self.menulength = ",self.menulength
2706 print "self[\"testlist\"].getCurrent()[1] = ",self["testlist"].getCurrent()[1]
2707 if self["testlist"].getCurrent()[1]==(self.menulength-1):
2708 self["testlist"].moveToIndex(0)
2709 self["resultlist"].moveToIndex(0)
2711 self["testlist"].down()
2712 self["resultlist"].down()
2714 def numberaction(self, number):
2715 if number >= self.menulength:
2718 self["testlist"].moveToIndex(index)
2719 self["resultlist"].moveToIndex(index)
2721 def keyCancel(self):
2722 print "testtunemenu exit"
2723 if not '..' in self.rlist and not 'fail' in self.rlist:
2727 # if self.oldref is not None:
2728 # self.session.nav.playService(self.oldref)
2730 def TestTune(self,index):
2731 ref = eServiceReference("1:0:19:1324:3EF:1:C00000:0:0:0")
2732 self.session.nav.stopService() # try to disable foreground service
2733 getTuneInfo=self.tuneInfo[index]
2734 if getTuneInfo["cam"] is True:
2736 self.camtimer.start(100,True)
2737 if getTuneInfo["type"].startswith("DVB-S"):
2738 if getTuneInfo["pol"] == "H":
2740 ref.setData(1,0x6D3)
2745 ref.setData(1,0x1325)
2746 ref.setData(2,0x3ef)
2748 if getTuneInfo["sat"] == "160": # Eutelsat W2
2749 ref.setData(4,0xA00000)
2750 elif getTuneInfo["sat"] == "100": # Eutelsat
2751 ref.setData(4,0x64af79)
2752 elif getTuneInfo["sat"] == "130": # Hotbird
2753 ref.setData(4,0x820000)
2754 elif getTuneInfo["sat"] == "192": # Astra
2755 ref.setData(4,0xC00000)
2756 elif getTuneInfo["sat"] == "620": # Intelsat 902
2757 ref.setData(4,0x26c0000) # need to fix later
2758 elif getTuneInfo["sat"] == "642": # Intelsat 906
2759 ref.setData(4,0x282AF79) # need to fix later
2760 elif getTuneInfo["type"].startswith("DVB-C"):
2762 ref.setData(1,0x1325)
2763 ref.setData(2,0x3ef)
2765 ref.setData(4,-64870) # ffff029a
2766 elif getTuneInfo["type"].startswith("DVB-T"):
2768 ref.setData(1,0x1325)
2769 ref.setData(2,0x3ef)
2771 ref.setData(4,-286391716) # eeee025c
2772 self.session.nav.playService(ref)
2773 if getTuneInfo["color"]=="CVBS":
2774 self.avswitch.setColorFormat(0)
2775 elif getTuneInfo["color"]=="RGB":
2776 self.avswitch.setColorFormat(1)
2777 elif getTuneInfo["color"]=="YC":
2778 self.avswitch.setColorFormat(2)
2779 if getTuneInfo["ratio"] == "4:3":
2780 self.avswitch.setAspectRatio(0)
2781 elif getTuneInfo["ratio"] == "16:9":
2782 self.avswitch.setAspectRatio(6)
2783 self.tuningtimer.start(2000,True)
2784 self.tunemsgtimer.start(3000, True)
2786 def cam_state(self):
2787 current_index = self.currentindex
2788 if self.camstep == 1:
2790 state = eDVBCI_UI.getInstance().getState(slot)
2791 print '-1-stat',state
2794 self.camtimer.start(100,True)
2796 self.session.nav.stopService()
2797 self.session.open( MessageBox, _("CAM1_NOT_INSERTED\nPress exit!"), MessageBox.TYPE_ERROR)
2798 self.rlist[current_index]="fail"
2799 self.tunemsgtimer.stop()
2800 elif self.camstep == 2:
2802 appname = eDVBCI_UI.getInstance().getAppName(slot)
2803 print 'appname',appname
2805 self.session.nav.stopService()
2806 self.session.open( MessageBox, _("NO_GET_APPNAME\nPress exit!"), MessageBox.TYPE_ERROR)
2807 self.rlist[current_index]="fail"
2808 self.tunemsgtimer.stop()
2811 self.camtimer.start(100,True)
2812 elif self.camstep==3:
2814 state = eDVBCI_UI.getInstance().getState(slot)
2815 print '-2-stat',state
2818 self.camtimer.start(100,True)
2820 self.session.nav.stopService()
2821 self.session.open( MessageBox, _("CAM2_NOT_INSERTED\nPress exit!"), MessageBox.TYPE_ERROR)
2822 self.rlist[current_index]="fail"
2823 self.tunemsgtimer.stop()
2824 elif self.camstep == 4:
2826 appname = eDVBCI_UI.getInstance().getAppName(slot)
2827 print 'appname',appname
2829 self.session.nav.stopService()
2830 self.session.open( MessageBox, _("NO_GET_APPNAME\nPress exit!"), MessageBox.TYPE_ERROR)
2831 self.rlist[current_index]="fail"
2832 self.tunemsgtimer.stop()
2837 def updateStatus(self):
2838 current_index = self.currentindex
2839 getTuneInfo=self.tuneInfo[current_index]
2840 result = eSctest.getInstance().getFrontendstatus(getTuneInfo["slot"])
2841 tunno = getTuneInfo["slot"]+1
2842 hv = getTuneInfo["pol"]
2850 print "eSctest.getInstance().getFrontendstatus - %d"%result
2851 if result == 0 or result == -1:
2853 self.tunemsgtimer.stop()
2854 self.session.nav.stopService()
2855 self.avswitch.setColorFormat(0)
2856 self.session.open( MessageBox, _("Tune%d %s Locking Fail..."%(tunno,hv)), MessageBox.TYPE_ERROR)
2857 self.rlist[current_index]="fail"
2861 def tuneback(self,yesno):
2862 current_index=self.currentindex
2863 self.session.nav.stopService() # try to disable foreground service
2864 if yesno and self.tunerlock == 1:
2865 getTuneInfo=self.tuneInfo[current_index]
2866 if getTuneInfo["cam"] and self.camstep < 5: # need fix to depending about CAM exist
2867 self.rlist[current_index]="fail"
2869 self.rlist[current_index]="pass"
2871 self.rlist[current_index]="fail"
2872 if self.tuneInfo[current_index]["color"] == "YC":
2873 self.avswitch.setColorFormat(0)
2875 self["resultlist"].updateList(self.rlist)
2878 self.tuningtimer.stop()
2879 self.session.openWithCallback(self.tuneback, TuneMessageBox, _("%s ok?" %(self["testlist"].getCurrent()[0])), MessageBox.TYPE_YESNO)
2881 def setSourceVar(self):
2882 self.input_pad_num=len(self.NimType)-1
2883 if self.input_pad_num == 0:
2885 elif self.input_pad_num == 1:
2887 elif self.input_pad_num == 2:
2890 # ikseong - for 22000 tp
2891 def setSource(self):
2893 inputname = ("/proc/stb/tsmux/input%d" % self.input_pad_num)
2894 print "<setsource> inputname : ",inputname
2895 fd=open(inputname,"w")
2898 # fix ci_input Tuner
2899 filename = ("/proc/stb/tsmux/ci0_input")
2900 fd = open(filename,'w')
2901 fd.write(self.setTuner)
2902 print "setTuner(CI0) : ",self.setTuner
2904 print "CI loop test!!!!!!!!!!!!!!"
2906 def resetSource(self):
2907 inputname = ("/proc/stb/tsmux/input%d" % self.input_pad_num)
2908 print "<resetsource> inputname : ",inputname
2909 fd=open(inputname,"w")
2910 fd.write(self.setTuner)
2912 print "CI loop test end!!!!!!!!!!!!!!"
2923 def main(session, servicelist, **kwargs):
2927 Servicelist = servicelist
2928 bouquets = Servicelist.getBouquetList()
2930 bouquetSel = Session.openWithCallback(cleanup, FactoryTest)
2932 #def Plugins(**kwargs):
2933 # return PluginDescriptor(name=_("Factory Test"), description="Test App for Factory", where = PluginDescriptor.WHERE_EXTENSIONSMENU, fnc=main)
2935 def Plugins(**kwargs):