FactoryTest :
[vuplus_dvbapp] / lib / python / Plugins / SystemPlugins / FactoryTest / plugin.py
index 0246297..38ac2f5 100755 (executable)
@@ -16,26 +16,14 @@ from Components.HTMLComponent import HTMLComponent
 from Components.GUIComponent import GUIComponent
 from enigma import eListboxPythonStringContent, eListbox, gFont, eServiceCenter, eDVBResourceManager
 from enigma import eServiceReference
 from Components.GUIComponent import GUIComponent
 from enigma import eListboxPythonStringContent, eListbox, gFont, eServiceCenter, eDVBResourceManager
 from enigma import eServiceReference
-from enigma import eMemtest
-from enigma import eSctest
+from sctest import eSctest
 from enigma import eDVBDB
 from Components.NimManager import nimmanager
 from enigma import eDVBCI_UI,eDVBCIInterfaces
 from enigma import eDVBDB
 from Components.NimManager import nimmanager
 from enigma import eDVBCI_UI,eDVBCIInterfaces
+from Tools.Directories import resolveFilename, SCOPE_SYSETC
+from Components.Sources.StaticText import StaticText
 
 
-class TestResultList(HTMLComponent, GUIComponent):
-       def __init__(self, list, enableWrapAround=False, content=eListboxPythonStringContent):
-               GUIComponent.__init__(self)
-               self.list = list
-               self.l = content()
-               self.l.setList(self.list)
-               self.onSelectionChanged = [ ]
-               self.enableWrapAround = enableWrapAround
-
-       def getCurrent(self):
-               return self.l.getCurrentSelection()
-
-       GUI_WIDGET = eListbox
-
+class TestResultList(MenuList):
        def postWidgetCreate(self, instance):
                self.instance.setSelectionEnable(0)
                instance.setContent(self.l)
        def postWidgetCreate(self, instance):
                self.instance.setSelectionEnable(0)
                instance.setContent(self.l)
@@ -43,61 +31,96 @@ class TestResultList(HTMLComponent, GUIComponent):
                if self.enableWrapAround:
                        self.instance.setWrapAround(True)
 
                if self.enableWrapAround:
                        self.instance.setWrapAround(True)
 
-       def preWidgetRemove(self, instance):
-               instance.setContent(None)
-               instance.selectionChanged.get().remove(self.selectionChanged)
-
-       def selectionChanged(self):
-               for f in self.onSelectionChanged:
-                       f()
-
-       def getSelectionIndex(self):
-               return self.l.getCurrentSelectionIndex()
-
-       def getSelectedIndex(self):
-               return self.l.getCurrentSelectionIndex()
-
-       def setList(self, list):
-               self.list = list
-               self.l.setList(self.list)
-
        def updateList(self, list):
                self.list = list
                self.l.setList(self.list)
 
        def updateList(self, list):
                self.list = list
                self.l.setList(self.list)
 
-       def moveToIndex(self, idx):
-               if self.instance is not None:
-                       self.instance.moveSelectionTo(idx)
-
-       def pageUp(self):
-               if self.instance is not None:
-                       self.instance.moveSelection(self.instance.pageUp)
-
-       def pageDown(self):
-               if self.instance is not None:
-                       self.instance.moveSelection(self.instance.pageDown)
-
-       def up(self):
-               if self.instance is not None:
-                       self.instance.moveSelection(self.instance.moveUp)
+class TuneMessageBox(MessageBox):
+       skin = """
+               <screen position="center,center" size="600,10" title="Message">
+                       <widget name="text" position="65,8" size="420,0" font="Regular;22" />
+                       <widget name="ErrorPixmap" pixmap="Vu_HD/icons/input_error.png" position="5,5" size="53,53" alphatest="blend" />
+                       <widget name="QuestionPixmap" pixmap="Vu_HD/icons/input_question.png" position="5,5" size="53,53" alphatest="blend" />
+                       <widget name="InfoPixmap" pixmap="Vu_HD/icons/input_info.png" position="5,5" size="53,53" alphatest="blend" />
+                       <widget name="list" position="100,100" size="380,375" transparent="1" backgroundColor="darkgrey" />
+                       <!-- Signal Quality -->
+                       <eLabel text="SNR : " position="60,130" size="60,25" font="Regular;25" transparent="1" />
+                       <widget source="session.FrontendStatus" render="Label" position="120,130" size="60,25" font="Regular;25"  transparent="1">
+                               <convert type="FrontendInfo">SNRdB</convert>
+                       </widget>
+                       <!-- AGC -->
+                       <eLabel text="AGC : " position="200,130" size="60,25" font="Regular;25"  transparent="1" noWrap="1" />
+                       <widget source="session.FrontendStatus" render="Label" position="260,130" size="60,25" font="Regular;25"  transparent="1" noWrap="1">
+                               <convert type="FrontendInfo">AGC</convert>
+                       </widget>
+                       <applet type="onLayoutFinish">
+# this should be factored out into some helper code, but currently demonstrates applets.
+from enigma import eSize, ePoint
+
+orgwidth = self.instance.size().width()
+orgpos = self.instance.position()
+textsize = self[&quot;text&quot;].getSize()
+
+# y size still must be fixed in font stuff...
+textsize = (textsize[0] + 50, textsize[1] + 50)
+offset = 0
+if self.type == self.TYPE_YESNO:
+       offset = 60
+wsizex = textsize[0] + 60
+wsizey = textsize[1] + offset
+if (280 &gt; wsizex):
+       wsizex = 280
+wsizex = wsizex + 30
+wsizey = wsizey + 30
+wsize = (wsizex, wsizey)
+
+# resize
+self.instance.resize(eSize(*wsize))
+
+# resize label
+self[&quot;text&quot;].instance.resize(eSize(*textsize))
+
+# move list
+listsize = (wsizex, 50)
+self[&quot;list&quot;].instance.move(ePoint(0, textsize[1]))
+self[&quot;list&quot;].instance.resize(eSize(*listsize))
+
+# center window
+newwidth = wsize[0]
+self.instance.move(ePoint(orgpos.x() + (orgwidth - newwidth)/2, orgpos.y()))
+                       </applet>
+               </screen>"""
+       def __init__(self, session, text, type = MessageBox.TYPE_YESNO):
+               MessageBox.__init__(self, session, text, type)
 
 
-       def down(self):
-               if self.instance is not None:
-                       self.instance.moveSelection(self.instance.moveDown)
+class FactoryTestSummary(Screen):
+       skin = """
+       <screen name="FactoryTestSummary" position="0,0" size="132,64" id="1">
+               <widget source="parent.Title" render="Label" position="6,0" size="132,64" font="Regular;18" halign="center" valign="center"/>
+       </screen>"""
 
 
-       def selectionEnabled(self, enabled):
-               if self.instance is not None:
-                       self.instance.setSelectionEnable(enabled)
+class FactoryTestSummary_VFD(Screen):
+       skin = """
+       <screen name="FactoryTestSummary" position="0,0" size="256,64" id="1">
+               <widget source="parent.Title" render="Label" position="0,0" size="256,64" font="VFD;24" halign="center" valign="center"/>
+       </screen>"""
 
 class FactoryTest(Screen):
        skin = """
 
 class FactoryTest(Screen):
        skin = """
-               <screen position="120,125" size="440,400" title="Test Menu" >
-                       <widget name="testlist" position="10,0" size="340,350" />
-                       <widget name="resultlist" position="370,0" size="60,350" />
-                       <widget name="testdate" position="20,350" size="150,25" font="Regular;22" />
-                       <widget name="testversion" position="20,375" size="150,25" font="Regular;22" />
-                       <widget name="mactext" position="180,350" size="230,25" font="Regular;22" />                    
+               <screen name="FactoryTest" position="300,100" size="660,550" title="Test Menu" >
+                       <widget name="testlist" position="10,0" size="440,455" itemHeight="35" />
+                       <widget name="resultlist" position="470,0" size="60,455" itemHeight="35" />
+                       <widget name="testdate" position="20,470" size="250,35" font="Regular;30" />
+                       <widget name="testversion" position="20,505" size="250,35" font="Regular;30" />
+                       <widget name="mactext" position="320,470" size="340,35" font="Regular;30" />
                </screen>"""
                </screen>"""
+
+       def createSummary(self):
+               if self.model == 4:
+                       return FactoryTestSummary_VFD
+               else:
+                       return FactoryTestSummary
+
        def __init__(self, session):
 
                self["actions"] = NumberActionMap(["OkCancelActions","WizardActions","NumberActions","ColorActions",],
        def __init__(self, session):
 
                self["actions"] = NumberActionMap(["OkCancelActions","WizardActions","NumberActions","ColorActions",],
@@ -120,11 +143,12 @@ class FactoryTest(Screen):
                        "8": self.numberaction,                 
                        "9": self.numberaction,                 
                        "red": self.shutdownaction,
                        "8": self.numberaction,                 
                        "9": self.numberaction,                 
                        "red": self.shutdownaction,
+                       "blue": self.Agingmode2,
                }, -2)
 
                Screen.__init__(self, session)
                }, -2)
 
                Screen.__init__(self, session)
-               TESTPROGRAM_DATE = "2010-03-02"
-               TESTPROGRAM_VERSION = "Version 00.01"
+               TESTPROGRAM_DATE = self.getImageVersion() +" (v1.20)"
+               TESTPROGRAM_VERSION = "Version 01.20"
 
                self.model = 0
                self.getModelInfo()
 
                self.model = 0
                self.getModelInfo()
@@ -150,7 +174,16 @@ class FactoryTest(Screen):
                        pass
                if self.model == 3 or self.model == 4:
                        self.NimType = {}
                        pass
                if self.model == 3 or self.model == 4:
                        self.NimType = {}
-                       sat_list = ["160","100","130","192","620","642"]
+                       sat_list = ["160","100","130","192","620","642","685","720"]
+#                                      ' sat ' : namespace , # satname
+#                                      '160' : '0xA00000', # Eutelsat W2
+#                                      '100' : '0x64af79', # Eutelsat
+#                                      '130' : '0x820000', # Hotbird
+#                                      '192' : '0xC00000', # Astra
+#                                      '620' : '0x26c0000', # Intelsat 902
+#                                      '642' : '0x282AF79' # Intelsat 906
+#                                      '685' : '02ad0000' # Panamsat 7,10 (68.5E)
+#                                      '720' : '02d0af79' # Panamsat 4 (72.0E)
                        try:
                                nimfile = open("/proc/bus/nim_sockets")
                        except IOError:
                        try:
                                nimfile = open("/proc/bus/nim_sockets")
                        except IOError:
@@ -202,20 +235,14 @@ class FactoryTest(Screen):
                self.createConfig()
                
                self.rlist = []
                self.createConfig()
                
                self.rlist = []
-               for x in range(self.menulength):
+               for x in range(self.menulength-1):
                        self.rlist.append((".."))
                        self.rlist.append((".."))
-#              self.rlist.append(("  "))
+               self.rlist.append((" "))
                self["resultlist"] = TestResultList(self.rlist)
 
                self["resultlist"] = TestResultList(self.rlist)
 
-#              self.NetworkState = 0
-#              self.first = 0
-
                self.avswitch = AVSwitch()
                self.avswitch = AVSwitch()
-#              self.memTest = eMemtest()
                self.scTest= eSctest()
                
                self.scTest= eSctest()
                
-#              self.feid=0
-#              self.agingmode=0
                self.testing = 0
 
                self.servicelist = ServiceList()
                self.testing = 0
 
                self.servicelist = ServiceList()
@@ -226,14 +253,6 @@ class FactoryTest(Screen):
                self.tunemsgtimer = eTimer()
                self.tunemsgtimer.callback.append(self.tunemsg)
 
                self.tunemsgtimer = eTimer()
                self.tunemsgtimer.callback.append(self.tunemsg)
 
-# chang : use "self.tuner_test_last_index" instead of cam_index 
-#              if self.model == 0:
-#                      self.cam_index = 7
-#              elif self.model == 1:
-#                      self.cam_index = 4
-#              elif self.model == 2:
-#                      self.cam_index = 6      
-
                self.camstep = 1
                self.camtimer = eTimer()
                self.camtimer.callback.append(self.cam_state)
                self.camstep = 1
                self.camtimer = eTimer()
                self.camtimer.callback.append(self.cam_state)
@@ -252,8 +271,19 @@ class FactoryTest(Screen):
                self.usbtimer = eTimer()
                self.usbtimer.callback.append(self.usbCheck)
 
                self.usbtimer = eTimer()
                self.usbtimer.callback.append(self.usbCheck)
 
-               self.agingtimer = eTimer()
-               self.agingtimer.callback.append(self.agingCheck)
+               self.setSourceVar()
+               self.FanSpeedUp(255)
+
+       def FanSpeedUp(self,value):
+               if self.model in (3,4): # uno or ultimo
+                       if value <0:
+                               value = 0
+                       elif value >255:
+                               value = 255
+                       print "[FactoryTest, FanSpeedUp] setPWM to : %d"%value
+                       f = open("/proc/stb/fp/fan_pwm", "w")
+                       f.write("%x" % value)
+                       f.close()
 
        def createConfig(self):
                tlist = []
 
        def createConfig(self):
                tlist = []
@@ -269,13 +299,13 @@ class FactoryTest(Screen):
                        self.smarttestIndex=3
                        tlist.append((" 3. Smartcard test",self.smarttestIndex))
                        self.tuner1_1testIndex=4
                        self.smarttestIndex=3
                        tlist.append((" 3. Smartcard test",self.smarttestIndex))
                        self.tuner1_1testIndex=4
-                       tlist.append((" 4. T1 H 22K x 4:3 CVBS",self.tuner1_1testIndex))
+                       tlist.append((" 4. T1/H/22K x /4:3/CVBS",self.tuner1_1testIndex))
                        self.tuner1_2testIndex=5
                        self.tuner1_2testIndex=5
-                       tlist.append((" 5. T1 V 22k o 16:9 RGB",self.tuner1_2testIndex))
+                       tlist.append((" 5. T1/V/22k o/16:9/RGB",self.tuner1_2testIndex))
                        self.tuner2_1testIndex=6
                        self.tuner2_1testIndex=6
-                       tlist.append((" 6. T2 H 22k x 4:3 YC",self.tuner2_1testIndex))
+                       tlist.append((" 6. T2/H/22k x/4:3/YC",self.tuner2_1testIndex))
                        self.tuner2_2testIndex=7
                        self.tuner2_2testIndex=7
-                       tlist.append((" 7. T2 V 22k o 16:9 CVBS CAM",self.tuner2_2testIndex))
+                       tlist.append((" 7. T2/V/22k o/16:9/CVBS/CAM",self.tuner2_2testIndex))
                        self.scarttestIndex=8
                        tlist.append((" 8. VCR Scart loop",self.scarttestIndex))
                        self.rs232testIndex=9
                        self.scarttestIndex=8
                        tlist.append((" 8. VCR Scart loop",self.scarttestIndex))
                        self.rs232testIndex=9
@@ -285,7 +315,7 @@ class FactoryTest(Screen):
                        self.fdefaultIndex=11
                        tlist.append(("11. Factory default",self.fdefaultIndex))
                        self.shutdownIndex=12
                        self.fdefaultIndex=11
                        tlist.append(("11. Factory default",self.fdefaultIndex))
                        self.shutdownIndex=12
-                       tlist.append(("12. Shutdown",self.shutdownIndex))
+                       tlist.append(("12. Shutdown(Deep Standby)",self.shutdownIndex))
                        self.tuner_test_first_index = 4
                        self.tuner_test_last_index = 7
                        
                        self.tuner_test_first_index = 4
                        self.tuner_test_last_index = 7
                        
@@ -297,9 +327,9 @@ class FactoryTest(Screen):
                        self.smarttestIndex=2
                        tlist.append((" 2. Smartcard test",self.smarttestIndex))
                        self.tuner1_1testIndex=3
                        self.smarttestIndex=2
                        tlist.append((" 2. Smartcard test",self.smarttestIndex))
                        self.tuner1_1testIndex=3
-                       tlist.append((" 3. T1 H 22K x 4:3 CVBS",self.tuner1_1testIndex))
+                       tlist.append((" 3. T1/H/22K x/4:3/CVBS",self.tuner1_1testIndex))
                        self.tuner2_2testIndex = self.tuner1_2testIndex=4
                        self.tuner2_2testIndex = self.tuner1_2testIndex=4
-                       tlist.append((" 4. T1 V 22k o 16:9 RGB CAM",self.tuner1_2testIndex))
+                       tlist.append((" 4. T1/V/22k o/16:9/RGB/CAM",self.tuner1_2testIndex))
                        self.rs232testIndex=5
                        tlist.append((" 5. RS232 test",self.rs232testIndex))
                        self.ethernettestIndex=6
                        self.rs232testIndex=5
                        tlist.append((" 5. RS232 test",self.rs232testIndex))
                        self.ethernettestIndex=6
@@ -307,7 +337,7 @@ class FactoryTest(Screen):
                        self.fdefaultIndex=7
                        tlist.append((" 7. Factory default",self.fdefaultIndex))
                        self.shutdownIndex=8
                        self.fdefaultIndex=7
                        tlist.append((" 7. Factory default",self.fdefaultIndex))
                        self.shutdownIndex=8
-                       tlist.append((" 8. Shutdown",self.shutdownIndex))
+                       tlist.append((" 8. Shutdown(Deep Standby)",self.shutdownIndex))
                        self.tuner_test_first_index = 3
                        self.tuner_test_last_index = 4
 
                        self.tuner_test_first_index = 3
                        self.tuner_test_last_index = 4
 
@@ -347,53 +377,70 @@ class FactoryTest(Screen):
                        tlist.append((" 2. Front test",self.fronttestIndex))
                        self.smarttestIndex=3
                        tlist.append((" 3. Smartcard test",self.smarttestIndex))
                        tlist.append((" 2. Front test",self.fronttestIndex))
                        self.smarttestIndex=3
                        tlist.append((" 3. Smartcard test",self.smarttestIndex))
-                       self.tuner_test_first_index = current_index = 4
+                       if self.model == 3:
+                               self.tuner_test_first_index = current_index = 4
+                       elif self.model == 4:
+                               self.tuner_test_first_index = 4
+                               current_index = 0
                        AspectRatio=["4:3", "16:9"]
                        ColorFormat=["CVBS","RGB","YC","CVBS","CVBS","CVBS","CVBS","CVBS"]      
                        self.tuneInfo={}
                        AspectRatio=["4:3", "16:9"]
                        ColorFormat=["CVBS","RGB","YC","CVBS","CVBS","CVBS","CVBS","CVBS"]      
                        self.tuneInfo={}
-                       if self.model == 3 or self.model == 4:
-                               for (key, val) in self.NimType.items():
-                                       if val["type"].startswith("DVB-S"):
+                       tunelist = []
+                       for (key, val) in self.NimType.items():
+                               if val["type"].startswith("DVB-S"):
 # Chang : DVB -S setting diseqc A
 # Chang : DVB -S setting diseqc A
-                                               getRatio = AspectRatio.pop(0) # ratio
-                                               AspectRatio.append(getRatio)
-                                               getColorFormat=ColorFormat.pop(0) # colorFormat
-                                               menuname=" %d. T%d %s H 22k 0 %s %s" % (current_index, key+1, val["type"], getRatio, getColorFormat)    #menuname
-                                               print current_index
+                                       getRatio = AspectRatio.pop(0) # ratio
+                                       AspectRatio.append(getRatio)
+                                       getColorFormat=ColorFormat.pop(0) # colorFormat
+                                       menuname=" %d. T%d/%s/H/22k x/%s/%s" % (current_index, key+1, val["type"], getRatio, getColorFormat)    #menuname
+                                       print current_index
 #                                              current_index=4
 #                                              current_index=4
-                                               self.setTuneInfo(index=current_index, slot=key, type=val["type"], sat=val["sat1"], pol="H", tone=True, ratio=getRatio, color=getColorFormat, cam=False) # setTuneInfo
+                                       self.setTuneInfo(index=current_index, slot=key, type=val["type"], sat=val["sat1"], pol="H", tone=False, ratio=getRatio, color=getColorFormat, cam=False) # setTuneInfo
 #                                              self.setTuneInfo(current_index, key, val["type"], val["sat1"], "H", True, getRatio, getColorFormat, False) # setTuneInfo
 #                                              self.setTuneInfo(current_index, key, val["type"], val["sat1"], "H", True, getRatio, getColorFormat, False) # setTuneInfo
-                                               tlist.append((menuname,current_index))
-                                               current_index+=1
+                                       tunelist.append((menuname,current_index))
+                                       current_index+=1
 # Chang : DVB -S setting diseqc B
 # Chang : DVB -S setting diseqc B
-                                               getRatio = AspectRatio.pop(0)
-                                               AspectRatio.append(getRatio)
-                                               getColorFormat=ColorFormat.pop(0)
-                                               menuname=" %d. T%d %s V 22k x %s %s" % (current_index, key+1, val["type"], getRatio, getColorFormat)    
-                                               if 1 == key+1: # CAM test on/off
-                                                       menuname+=" CAM"
-                                                       camtest = True
-                                               else:
-                                                       camtest = False                 
-                                               self.setTuneInfo( index=current_index, slot=key, type=val["type"], sat=val["sat2"], pol="V", tone=False, ratio=getRatio, color=getColorFormat, cam=camtest)
-                                               tlist.append((menuname,current_index))
-                                               current_index+=1
+                                       getRatio = AspectRatio.pop(0)
+                                       AspectRatio.append(getRatio)
+                                       getColorFormat=ColorFormat.pop(0)
+                                       menuname=" %d. T%d/%s/V/22k o/%s/%s" % (current_index, key+1, val["type"], getRatio, getColorFormat)
+                                       if len(self.NimType) == key+1: # CAM test on/off
+                                               menuname+="/CAM"
+                                               camtest = True
+                                       else:
+                                               camtest = False
+                                       self.setTuneInfo( index=current_index, slot=key, type=val["type"], sat=val["sat2"], pol="V", tone=True, ratio=getRatio, color=getColorFormat, cam=camtest)
+                                       tunelist.append((menuname,current_index))
+                                       current_index+=1
 # Chang : DVB -T or DVB-C
 # Chang : DVB -T or DVB-C
-                                       elif val["type"].startswith("DVB-T") or val["type"].startswith("DVB-C"):
+                               elif val["type"].startswith("DVB-T") or val["type"].startswith("DVB-C"):
+                                       additionalMenu = None
+                                       menulen = 1
+                                       if len(self.NimType) == 1:
+                                               additionalMenu = True
+                                               menulen +=1
+                                       for x in range(menulen):
                                                getRatio = AspectRatio.pop(0)
                                                AspectRatio.append(getRatio)
                                                getColorFormat=ColorFormat.pop(0)
                                                getRatio = AspectRatio.pop(0)
                                                AspectRatio.append(getRatio)
                                                getColorFormat=ColorFormat.pop(0)
-                                               menuname=" %d. T%d %s %s %s" % (current_index, key+1, val["type"], getRatio, getColorFormat)
-#                                              if len(self.NimType) == key+1: # CAM test on/off
-                                               if 1 == key+1: # CAM test on/off
+                                               menuname=" %d. T%d/%s/%s/%s" % (current_index, key+1, val["type"], getRatio, getColorFormat)
+                                               if len(self.NimType) == key+1 and (additionalMenu is None or x != 0): # CAM test on/off
                                                        menuname+=" CAM"
                                                        camtest = True
                                                else:
                                                        menuname+=" CAM"
                                                        camtest = True
                                                else:
-                                                       camtest = False 
+                                                       camtest = False
                                                self.setTuneInfo( index=current_index, slot=key, type=val["type"], sat=None, pol=None, tone=None, ratio=getRatio, color=getColorFormat, cam=camtest)
                                                self.setTuneInfo( index=current_index, slot=key, type=val["type"], sat=None, pol=None, tone=None, ratio=getRatio, color=getColorFormat, cam=camtest)
-                                               tlist.append((menuname,current_index))
+                                               tunelist.append((menuname,current_index))
                                                current_index+=1
                                                current_index+=1
-                       self.tuner_test_last_index = current_index-1
+                       if self.model == 3:
+                               tlist.extend(tunelist)
+                               self.tuner_test_last_index = current_index-1
+                       elif self.model == 4:
+                               self.tunelist = tunelist
+                               self.tuner_test_last_index = 4
+                               current_index = self.tuner_test_last_index
+                               tlist.append((" %d. Tuning test" % current_index,self.tuner_test_last_index))
+                               current_index+=1
                        self.rs232testIndex=current_index
                        tlist.append((" %d. RS232 test" % current_index,self.rs232testIndex))
                        current_index+=1
                        self.rs232testIndex=current_index
                        tlist.append((" %d. RS232 test" % current_index,self.rs232testIndex))
                        current_index+=1
@@ -404,7 +451,7 @@ class FactoryTest(Screen):
                        tlist.append((" %d. Factory default" % current_index,self.fdefaultIndex))
                        current_index+=1
                        self.shutdownIndex=current_index
                        tlist.append((" %d. Factory default" % current_index,self.fdefaultIndex))
                        current_index+=1
                        self.shutdownIndex=current_index
-                       tlist.append((" %d. Shutdown" % current_index,self.shutdownIndex))
+                       tlist.append((" %d. Shutdown(Deep Standby)" % current_index,self.shutdownIndex))
                        
                self.menulength= len(tlist)
                self["testlist"] = MenuList(tlist)
                        
                self.menulength= len(tlist)
                self["testlist"] = MenuList(tlist)
@@ -423,7 +470,9 @@ class FactoryTest(Screen):
        def getModelInfo(self):
                getmodel = 0
                if fileExists("/proc/stb/info/vumodel"):
        def getModelInfo(self):
                getmodel = 0
                if fileExists("/proc/stb/info/vumodel"):
-                       info = open("/proc/stb/info/vumodel").read().strip()
+                       vumodel = open("/proc/stb/info/vumodel")
+                       info=vumodel.read().strip()
+                       vumodel.close()
                        if info == "duo":
                                self.model = 0
                                getmodel = 1
                        if info == "duo":
                                self.model = 0
                                getmodel = 1
@@ -444,9 +493,11 @@ class FactoryTest(Screen):
                                self.model = 4
                                getmodel = 1
                                print "getModelInfo : ultimo"
                                self.model = 4
                                getmodel = 1
                                print "getModelInfo : ultimo"
+
                if getmodel == 0 and fileExists("/proc/stb/info/version"):
                if getmodel == 0 and fileExists("/proc/stb/info/version"):
-                       info = open("/proc/stb/info/version").read()
-#                      print info,info[:2]
+                       vesion = open("/proc/stb/info/version")
+                       info=version.read()
+                       version.close()
                        if info[:2] == "14":
                                self.model = 1
                                print "getModelInfo : solo_"
                        if info[:2] == "14":
                                self.model = 1
                                print "getModelInfo : solo_"
@@ -485,16 +536,36 @@ class FactoryTest(Screen):
        def numberaction(self, number):
                if self.testing==1:
                        return
        def numberaction(self, number):
                if self.testing==1:
                        return
-               if number > self.menulength:
+               if number >= self.menulength:
                        return
                index = int(number)
                self["testlist"].moveToIndex(index)
                self["resultlist"].moveToIndex(index)
 
                        return
                index = int(number)
                self["testlist"].moveToIndex(index)
                self["resultlist"].moveToIndex(index)
 
+       def getImageVersion(self):
+               date = 'xxxx-xx-xx'
+               file = open(resolveFilename(SCOPE_SYSETC, 'image-version'), 'r')
+               lines = file.readlines()
+               for x in lines:
+                       splitted = x.split('=')
+                       if splitted[0] == "version":
+                       #     YYYY MM DD hh mm
+                               #0120 2005 11 29 01 16
+                               #0123 4567 89 01 23 45
+                               version = splitted[1]
+                               year = version[4:8]
+                               month = version[8:10]
+                               day = version[10:12]
+                               date = '-'.join((year, month, day))
+                               break;
+               file.close()
+               return date
+
        def getversion(self):
                try:
                        fd = open("/proc/stb/info/version","r")
                        version = fd.read()
        def getversion(self):
                try:
                        fd = open("/proc/stb/info/version","r")
                        version = fd.read()
+                       fd.close()
                        self["testversion"].setText(("Version %s"%version))
                except:
                        self["testversion"].setText(("Version no load"))
                        self["testversion"].setText(("Version %s"%version))
                except:
                        self["testversion"].setText(("Version no load"))
@@ -557,7 +628,10 @@ class FactoryTest(Screen):
                elif index==self.fronttestIndex:
                        self.Test1()
                elif index>=self.tuner_test_first_index and index<=self.tuner_test_last_index:
                elif index==self.fronttestIndex:
                        self.Test1()
                elif index>=self.tuner_test_first_index and index<=self.tuner_test_last_index:
-                       self.TestTune(index)
+                       if self.model == 0 or self.model == 1 or self.model == 2 or self.model == 3:
+                               self.TestTune(index)
+                       elif self.model == 4:
+                               self.openTestTuneMenu()
                elif index==self.scarttestIndex:
                        self.Test6()
                elif index==self.rs232testIndex:
                elif index==self.scarttestIndex:
                        self.Test6()
                elif index==self.rs232testIndex:
@@ -627,44 +701,44 @@ class FactoryTest(Screen):
                        result = 1
                        displayerror = 1
                try:
                        result = 1
                        displayerror = 1
                try:
-                       if fileExists("/media/hdd"):
-                               if access("/media/hdd",F_OK|R_OK|W_OK):
-                                       dummy=open("/media/hdd/dummy03","w")
+                       if fileExists("/autofs/sda1"):
+                               if access("/autofs/sda1",F_OK|R_OK|W_OK):
+                                       dummy=open("/autofs/sda1/dummy03","w")
                                        dummy.write("complete")
                                        dummy.close()
                                        dummy.write("complete")
                                        dummy.close()
-                                       dummy=open("/media/hdd/dummy03","r")
+                                       dummy=open("/autofs/sda1/dummy03","r")
                                        if dummy.readline()=="complete":
                                        if dummy.readline()=="complete":
-                                               print "/media/hdd - complete"
+                                               print "/autofs/sda1 - complete"
                                        else:
                                        else:
-                                               print "/media/hdd - readline error"
+                                               print "/autofs/sda1 - readline error"
                                                result += 1
                                                displayerror = 1
                                        dummy.close()
                                                result += 1
                                                displayerror = 1
                                        dummy.close()
-                                       system("rm /media/hdd/dummy03")
+                                       system("rm /autofs/sda1/dummy03")
                                else:
                                else:
-                                       print "/media/hdd - rw access error"
+                                       print "/autofs/sda1 - rw access error"
                                        result += 1
                                        displayerror = 1
                        else:
                                        result += 1
                                        displayerror = 1
                        else:
-                               print "/media/hdd - file not exist"
+                               print "/autofs/sda1 - file not exist"
                                result += 1
                except:
                                result += 1
                except:
-                       print "/media/hdd - exceptional error"
+                       print "/autofs/sda1 - exceptional error"
                        result += 1
                        displayerror = 1
                
                if result == 0:
                        result += 1
                        displayerror = 1
                
                if result == 0:
-                       self.session.open( MessageBox, _("Sata & extend hdd test pass"), MessageBox.TYPE_INFO)
+                       self.session.open( MessageBox, _("Sata & extend hdd test pass\nPress 'OK' button!"), MessageBox.TYPE_INFO)
                        self.rlist[self["testlist"].getCurrent()[1]]="pass"
                elif result == 1:
                        if displayerror==1:
                        self.rlist[self["testlist"].getCurrent()[1]]="pass"
                elif result == 1:
                        if displayerror==1:
-                               self.session.open( MessageBox, _("One hdd test error"), MessageBox.TYPE_ERROR)
+                               self.session.open( MessageBox, _("One hdd test error\nPress 'EXIT' button!"), MessageBox.TYPE_ERROR)
                                self.rlist[self["testlist"].getCurrent()[1]]="fail"
                        else:
                                self.satatimer.start(1100,True)
                else:
                        if displayerror==1:
                                self.rlist[self["testlist"].getCurrent()[1]]="fail"
                        else:
                                self.satatimer.start(1100,True)
                else:
                        if displayerror==1:
-                               self.session.open( MessageBox, _("Sata & extend hdd test error"), MessageBox.TYPE_ERROR)
+                               self.session.open( MessageBox, _("Sata & extend hdd test error\nPress 'EXIT' button!"), MessageBox.TYPE_ERROR)
                                self.rlist[self["testlist"].getCurrent()[1]]="fail"
                        else:
                                self.satatimer.start(1100,True)
                                self.rlist[self["testlist"].getCurrent()[1]]="fail"
                        else:
                                self.satatimer.start(1100,True)
@@ -674,8 +748,10 @@ class FactoryTest(Screen):
                        self.session.openWithCallback(self.displayresult ,FrontTest)
                elif self.model == 1:
                        self.session.openWithCallback(self.displayresult ,FrontTest_solo)
                        self.session.openWithCallback(self.displayresult ,FrontTest)
                elif self.model == 1:
                        self.session.openWithCallback(self.displayresult ,FrontTest_solo)
-               elif self.model == 2 or self.model == 3 or self.model == 4:
-                       self.session.openWithCallback(self.displayresult ,FrontTest_solo)
+               elif self.model == 2 or self.model == 3:
+                       self.session.openWithCallback(self.displayresult ,FrontTest_uno)
+               elif  self.model == 4:
+                       self.session.openWithCallback(self.displayresult ,FrontTest_ultimo)
 
        def displayresult(self):
                global fronttest
 
        def displayresult(self):
                global fronttest
@@ -684,6 +760,16 @@ class FactoryTest(Screen):
                else:
                        self.rlist[self["testlist"].getCurrent()[1]]="fail"
 
                else:
                        self.rlist[self["testlist"].getCurrent()[1]]="fail"
 
+       def openTestTuneMenu(self):
+               self.session.openWithCallback(self.TestTuneMenuResult ,TestTuneMenu, self.tuneInfo, self.tunelist, self.NimType)
+
+       def TestTuneMenuResult(self,result):
+               if result :
+                       self.rlist[self["testlist"].getCurrent()[1]]="pass"
+               else:
+                       self.rlist[self["testlist"].getCurrent()[1]]="fail"
+               self["resultlist"].updateList(self.rlist)
+
        def TestTune(self,index):       
                if self.oldref is None:
                        eref = eServiceReference("1:0:19:1324:3EF:1:C00000:0:0:0")
        def TestTune(self,index):       
                if self.oldref is None:
                        eref = eServiceReference("1:0:19:1324:3EF:1:C00000:0:0:0")
@@ -692,7 +778,7 @@ class FactoryTest(Screen):
                        if not servicelist is None:
                                ref = servicelist.getNext()
                        else:
                        if not servicelist is None:
                                ref = servicelist.getNext()
                        else:
-                               ref = self.getCurrentSelection()
+                               ref = self.getCurrentSelection() # raise error
                                print "servicelist none"
                else:
                        ref = self.oldref
                                print "servicelist none"
                else:
                        ref = self.oldref
@@ -743,6 +829,9 @@ class FactoryTest(Screen):
                        self.tunemsgtimer.start(3000, True)
                elif self.model == 3 or self.model == 4:
                        getTuneInfo=self.tuneInfo[index]
                        self.tunemsgtimer.start(3000, True)
                elif self.model == 3 or self.model == 4:
                        getTuneInfo=self.tuneInfo[index]
+                       if getTuneInfo["cam"] is True:
+                               self.camstep = 1
+                               self.camtimer.start(100,True)
                        if getTuneInfo["type"].startswith("DVB-S"):
                                if getTuneInfo["pol"] == "H":
                                        ref.setData(0,1)
                        if getTuneInfo["type"].startswith("DVB-S"):
                                if getTuneInfo["pol"] == "H":
                                        ref.setData(0,1)
@@ -754,7 +843,6 @@ class FactoryTest(Screen):
                                        ref.setData(1,0x1325)
                                        ref.setData(2,0x3ef)
                                        ref.setData(3,0x1)
                                        ref.setData(1,0x1325)
                                        ref.setData(2,0x3ef)
                                        ref.setData(3,0x1)
-                                       ref.setData(4,0x64af79)
                                if getTuneInfo["sat"] == "160": # Eutelsat W2
                                        ref.setData(4,0xA00000)
                                elif getTuneInfo["sat"] == "100": # Eutelsat
                                if getTuneInfo["sat"] == "160": # Eutelsat W2
                                        ref.setData(4,0xA00000)
                                elif getTuneInfo["sat"] == "100": # Eutelsat
@@ -764,9 +852,13 @@ class FactoryTest(Screen):
                                elif getTuneInfo["sat"] == "192": # Astra
                                        ref.setData(4,0xC00000)
                                elif getTuneInfo["sat"] == "620": # Intelsat 902
                                elif getTuneInfo["sat"] == "192": # Astra
                                        ref.setData(4,0xC00000)
                                elif getTuneInfo["sat"] == "620": # Intelsat 902
-                                       ref.setData(4,0x26c0000) # need to fix later
+                                       ref.setData(4,0x26c0000) 
                                elif getTuneInfo["sat"] == "642": # Intelsat 906
                                elif getTuneInfo["sat"] == "642": # Intelsat 906
-                                       ref.setData(4,0x282AF79) # need to fix later
+                                       ref.setData(4,0x282AF79) 
+                               elif getTuneInfo["sat"] == "685": # Panamsat 7,10 (68.5E)
+                                       ref.setData(4,0x02ad0000) 
+                               elif getTuneInfo["sat"] == "720": # Panamsat 4 (72.0E)
+                                       ref.setData(4,0x02d0af79) 
                        elif getTuneInfo["type"].startswith("DVB-C"):
                                ref.setData(0,0x19)
                                ref.setData(1,0x1325)
                        elif getTuneInfo["type"].startswith("DVB-C"):
                                ref.setData(0,0x19)
                                ref.setData(1,0x1325)
@@ -779,7 +871,6 @@ class FactoryTest(Screen):
                                ref.setData(2,0x3ef)
                                ref.setData(3,0x1)
                                ref.setData(4,-286391716) # eeee025c
                                ref.setData(2,0x3ef)
                                ref.setData(3,0x1)
                                ref.setData(4,-286391716) # eeee025c
-
                        self.session.nav.playService(ref)
                        if getTuneInfo["color"]=="CVBS":
                                self.avswitch.setColorFormat(0)
                        self.session.nav.playService(ref)
                        if getTuneInfo["color"]=="CVBS":
                                self.avswitch.setColorFormat(0)
@@ -791,9 +882,6 @@ class FactoryTest(Screen):
                                self.avswitch.setAspectRatio(0)
                        elif getTuneInfo["ratio"] == "16:9":
                                self.avswitch.setAspectRatio(6)
                                self.avswitch.setAspectRatio(0)
                        elif getTuneInfo["ratio"] == "16:9":
                                self.avswitch.setAspectRatio(6)
-                       if getTuneInfo["cam"] is True:
-                               self.camstep = 1
-                               self.camtimer.start(100,True)
                        self.tuningtimer.start(2000,True)
                        self.tunemsgtimer.start(3000, True) 
                
                        self.tuningtimer.start(2000,True)
                        self.tunemsgtimer.start(3000, True) 
                
@@ -811,8 +899,6 @@ class FactoryTest(Screen):
                                self.session.open( MessageBox, _("CAM1_NOT_INSERTED\nPress exit!"), MessageBox.TYPE_ERROR)
                                self.rlist[current_index]="fail"
                                self.tunemsgtimer.stop()
                                self.session.open( MessageBox, _("CAM1_NOT_INSERTED\nPress exit!"), MessageBox.TYPE_ERROR)
                                self.rlist[current_index]="fail"
                                self.tunemsgtimer.stop()
-#                              self.rlist[index]="fail"
-#                              self["resultlist"].updateList(self.rlist)
                elif self.camstep == 2:
                        slot = 0
                        appname = eDVBCI_UI.getInstance().getAppName(slot)
                elif self.camstep == 2:
                        slot = 0
                        appname = eDVBCI_UI.getInstance().getAppName(slot)
@@ -837,8 +923,6 @@ class FactoryTest(Screen):
                                self.session.open( MessageBox, _("CAM2_NOT_INSERTED\nPress exit!"), MessageBox.TYPE_ERROR)
                                self.rlist[current_index]="fail"
                                self.tunemsgtimer.stop()                                
                                self.session.open( MessageBox, _("CAM2_NOT_INSERTED\nPress exit!"), MessageBox.TYPE_ERROR)
                                self.rlist[current_index]="fail"
                                self.tunemsgtimer.stop()                                
-#                              self.rlist[index]="fail"
-#                              self["resultlist"].updateList(self.rlist)
                elif self.camstep == 4:
                        slot = 1
                        appname = eDVBCI_UI.getInstance().getAppName(slot)
                elif self.camstep == 4:
                        slot = 1
                        appname = eDVBCI_UI.getInstance().getAppName(slot)
@@ -851,7 +935,6 @@ class FactoryTest(Screen):
                        else:
                                self.setSource()
                                self.camstep = 5
                        else:
                                self.setSource()
                                self.camstep = 5
-#                              self.session.open( MessageBox, _("CAM OK!"), MessageBox.TYPE_INFO,2)
 
        def updateStatus(self):
                current_index = self.currentindex
 
        def updateStatus(self):
                current_index = self.currentindex
@@ -880,7 +963,7 @@ class FactoryTest(Screen):
                                hv == ""
                                
                print "eSctest.getInstance().getFrontendstatus - %d"%result
                                hv == ""
                                
                print "eSctest.getInstance().getFrontendstatus - %d"%result
-               if result == 0:
+               if result == 0 or result == -1:
                        self.tunerlock = 0
                        self.tunemsgtimer.stop()
                        self.session.nav.stopService()
                        self.tunerlock = 0
                        self.tunemsgtimer.stop()
                        self.session.nav.stopService()
@@ -909,28 +992,45 @@ class FactoryTest(Screen):
 
        def tunemsg(self):
                self.tuningtimer.stop()
 
        def tunemsg(self):
                self.tuningtimer.stop()
-               self.session.openWithCallback(self.tuneback, MessageBox, _("%s ok?" %(self["testlist"].getCurrent()[0])), MessageBox.TYPE_YESNO)
+               self.session.openWithCallback(self.tuneback, TuneMessageBox, _("%s ok?" %(self["testlist"].getCurrent()[0])), MessageBox.TYPE_YESNO)
+
+       def setSourceVar(self):
+               if self.model == 0:
+                       self.input_pad_num=1
+                       self.setTuner = 'B'
+               elif self.model == 1:
+                       self.input_pad_num=0
+                       self.setTuner = 'A'
+               else:
+                       self.input_pad_num=len(self.NimType)-1
+                       if self.input_pad_num == 0:
+                               self.setTuner = 'A'
+                       elif self.input_pad_num == 1:
+                               self.setTuner = 'B'
+                       elif self.input_pad_num == 2:
+                               self.setTuner = 'C'
 
 #      ikseong - for 22000 tp
        def setSource(self):
 
 #      ikseong - for 22000 tp
        def setSource(self):
+# fix input source
+               inputname = ("/proc/stb/tsmux/input%d" % self.input_pad_num)
+               print "<setsource> inputname : ",inputname
+               fd=open(inputname,"w")
+               fd.write("CI0")
+               fd.close()
+# fix ci_input Tuner
                filename = ("/proc/stb/tsmux/ci0_input")
                fd = open(filename,'w')
                filename = ("/proc/stb/tsmux/ci0_input")
                fd = open(filename,'w')
-               fd.write('B')
-#              fd.write('A')
-               fd.close()
-#              filename = ("/proc/stb/tsmux/ci1_input")
-#              fd = open(filename,'w')
-#              fd.write('CI0')
-#              fd.close()
-               fd=open("/proc/stb/tsmux/input1","w")
-#              fd=open("/proc/stb/tsmux/input0","w")
-               fd.write("CI0")
+               fd.write(self.setTuner)
+               print "setTuner(CI0) : ",self.setTuner
                fd.close()
                print "CI loop test!!!!!!!!!!!!!!"
                        
        def resetSource(self):
                fd.close()
                print "CI loop test!!!!!!!!!!!!!!"
                        
        def resetSource(self):
-               fd=open("/proc/stb/tsmux/input1","w")
-               fd.write("B")
+               inputname = ("/proc/stb/tsmux/input%d" % self.input_pad_num)
+               print "<resetsource> inputname : ",inputname
+               fd=open(inputname,"w")
+               fd.write(self.setTuner)
                fd.close()
                print "CI loop test end!!!!!!!!!!!!!!"
                                
                fd.close()
                print "CI loop test end!!!!!!!!!!!!!!"
                                
@@ -957,49 +1057,21 @@ class FactoryTest(Screen):
                self.session.openWithCallback(self.check7,RS232Test)
 
        def Agingmode(self):
                self.session.openWithCallback(self.check7,RS232Test)
 
        def Agingmode(self):
-               if self.testing==1:
-                       return
-               if self.oldref is None:
-                       eref = eServiceReference("1:0:19:1324:3EF:1:C00000:0:0:0")
-                       serviceHandler = eServiceCenter.getInstance()
-                       servicelist = serviceHandler.list(eref)
-                       if not servicelist is None:
-                               ref = servicelist.getNext()
-                       else:
-                               ref = self.getCurrentSelection()
-                               print "servicelist none"
-               else:
-                       ref = self.oldref
-               self.session.nav.stopService() # try to disable foreground service
-               ref.setData(0,0x19)
-               ref.setData(1,0x1325)
-               ref.setData(2,0x3ef)
-               ref.setData(3,0x1)
-               ref.setData(4,0x64af79)
-               self.session.nav.playService(ref)
-               self.avswitch.setColorFormat(0)
-               self.avswitch.setAspectRatio(0)
-               self.agingtimer.start(2000,True)
-
-       def agingCheck(self):
-               result = eSctest.getInstance().getFrontendstatus(0)             
-               hv = "Ver"      
-               print "eSctest.getInstance().getFrontendstatus - %d"%result
-               if result == 0:
-                       self.session.nav.stopService()
-                       self.session.open( MessageBox, _("Tune 1 Ver Locking Fail..."), MessageBox.TYPE_ERROR)
-               elif result == 1 :
-                       self.session.openWithCallback(self.agingResult,AgingTest)
-               else:
-                       self.session.nav.stopService()
-                       self.session.open( MessageBox, _("Tune 1 Ver Error %d..."%result), MessageBox.TYPE_ERROR)
+               self.session.openWithCallback(self.AgingmodeCallback,AgingTest, self.model)
 
 
-       def agingResult(self):
-               global Agingresult
-               if(Agingresult ==1):
+       def AgingmodeCallback(self,ret):
+               if ret == 1:
                        self["testlist"].moveToIndex(self.fdefaultIndex)
                        self.Test14()
                        self["testlist"].moveToIndex(self.shutdownIndex)        
                        self["testlist"].moveToIndex(self.fdefaultIndex)
                        self.Test14()
                        self["testlist"].moveToIndex(self.shutdownIndex)        
+
+       def Agingmode2(self):
+               self.session.openWithCallback(self.Agingmode2Callback,AgingTest_mode2, self.model)
+
+       def Agingmode2Callback(self):
+               self["testlist"].moveToIndex(self.fdefaultIndex)
+               self.Test14()
+               self["testlist"].moveToIndex(self.shutdownIndex)        
        
        def Test8(self):
                self.usbtry = 9
        
        def Test8(self):
                self.usbtry = 9
@@ -1058,11 +1130,11 @@ class FactoryTest(Screen):
                if result < 0 :
                        result = 0
                elif result == len(devices):
                if result < 0 :
                        result = 0
                elif result == len(devices):
-                       self.session.open( MessageBox, _("USB test pass %d devices\nPress OK!"%result), MessageBox.TYPE_INFO)                   
+                       self.session.open( MessageBox, _("USB test pass %d devices\nPress 'OK' button!"%result), MessageBox.TYPE_INFO)
                        self.rlist[self["testlist"].getCurrent()[1]]="pass"
                else:
                        if displayerror == 1:
                        self.rlist[self["testlist"].getCurrent()[1]]="pass"
                else:
                        if displayerror == 1:
-                               self.session.open( MessageBox, _("USB test error : Success-%d"%result+" Fail-%d\nPress EXIT!"%(len(devices)-result)), MessageBox.TYPE_ERROR)
+                               self.session.open( MessageBox, _("USB test error : Success-%d"%result+" Fail-%d\nPress 'EXIT' button!"%(len(devices)-result)), MessageBox.TYPE_ERROR)
                                self.rlist[self["testlist"].getCurrent()[1]]="fail"
                        else:
                                self.usbtimer.start(1100,True)
                                self.rlist[self["testlist"].getCurrent()[1]]="fail"
                        else:
                                self.usbtimer.start(1100,True)
@@ -1098,7 +1170,6 @@ class FactoryTest(Screen):
                if data == 1:
                        ethtest = 1
                        print "success"
                if data == 1:
                        ethtest = 1
                        print "success"
-#                      self.session.open( MessageBox, _("Ping test pass"), MessageBox.TYPE_INFO,2)
                        self.session.openWithCallback(self.openMacConfig ,MessageBox, _("Ping test pass"), MessageBox.TYPE_INFO,2)
                
                else:
                        self.session.openWithCallback(self.openMacConfig ,MessageBox, _("Ping test pass"), MessageBox.TYPE_INFO,2)
                
                else:
@@ -1117,35 +1188,33 @@ class FactoryTest(Screen):
                global ethtest
                if ethtest == 1:
                        self.rlist[self.ethernettestIndex]="pass"               
                global ethtest
                if ethtest == 1:
                        self.rlist[self.ethernettestIndex]="pass"               
-#                      self.rlist[self["testlist"].getCurrent()[1]]="pass"
                else:
                        self.rlist[self.ethernettestIndex]="fail"               
                else:
                        self.rlist[self.ethernettestIndex]="fail"               
-#                      self.rlist[self["testlist"].getCurrent()[1]]="fail"
                self.getmacaddr()
                self.testing = 0                        
        
                self.getmacaddr()
                self.testing = 0                        
        
-       def MemTest(self, which):
-               index = which
-               result = 0
-               if index==0:
-                       result = eMemtest.getInstance().dramtest()
-               elif index==1:
-                       result = eMemtest.getInstance().flashtest()
-                       result = 0      #       temp
-               else:
-                       result = eMemtest.getInstance().dramtest()
-                       result = eMemtest.getInstance().flashtest()
-                       result = 0      #       temp
+#      def MemTest(self, which):
+#              index = which
+#              result = 0
+#              if index==0:
+#                      result = eMemtest.getInstance().dramtest()
+#              elif index==1:
+#                      result = eMemtest.getInstance().flashtest()
+#                      result = 0      #       temp
+#              else:
+#                      result = eMemtest.getInstance().dramtest()
+#                      result = eMemtest.getInstance().flashtest()
+#                      result = 0      #       temp
                        
                        
-               index = index+10
+#              index = index+10
                
                
-               if result == 0:
-                       print index,self.rlist[index]
-                       self.rlist[index]="pass"
-               else:
-                       print index,self.rlist[index]
-                       self.rlist[index]="fail"
-               self["resultlist"].updateList(self.rlist)
+#              if result == 0:
+#                      print index,self.rlist[index]
+#                      self.rlist[index]="pass"
+#              else:
+#                      print index,self.rlist[index]
+#                      self.rlist[index]="fail"
+#              self["resultlist"].updateList(self.rlist)
                        
        def scciresult(self):
                global smartcardtest
                        
        def scciresult(self):
                global smartcardtest
@@ -1157,15 +1226,14 @@ class FactoryTest(Screen):
        def Test10(self):
                self.session.openWithCallback(self.scciresult ,SmartCardTest,stbmodel=self.model)
 
        def Test10(self):
                self.session.openWithCallback(self.scciresult ,SmartCardTest,stbmodel=self.model)
 
-       def Test11(self):
-               self.MemTest(1)
+#      def Test11(self):
+#              self.MemTest(1)
                
                
-       def Test12(self):
-               self.MemTest(2)
-
-       def Test13(self):
-               self.MemTest(3) 
+#      def Test12(self):
+#              self.MemTest(2)
 
 
+#      def Test13(self):
+#              self.MemTest(3)
 
        def Test14(self):
                try:
 
        def Test14(self):
                try:
@@ -1203,12 +1271,12 @@ class FactoryTest(Screen):
 ethtest = 0
 class MacConfig(Screen):
        skin = """
 ethtest = 0
 class MacConfig(Screen):
        skin = """
-               <screen position="100,250" size="520,100" title="Mac Config" >
+               <screen name="MacConfig" position="center,center" size="520,100" title="Mac Config" >
                        <eLabel text="Mac Address " position="10,15" size="200,40" font="Regular;30" />         
                        <eLabel text="Mac Address " position="10,15" size="200,40" font="Regular;30" />         
-                       <widget name="text" position="230,15" size="230,40" font="Regular;30" />
+                       <widget name="text" position="230,15" size="230,40" font="Regular;30" halign="right"/>
                        <widget name="text1" position="470,15" size="40,40" font="Regular;30" />                
                        <eLabel text=" " position="5,55" zPosition="-1" size="510,5" backgroundColor="#02e1e8e6" />             
                        <widget name="text1" position="470,15" size="40,40" font="Regular;30" />                
                        <eLabel text=" " position="5,55" zPosition="-1" size="510,5" backgroundColor="#02e1e8e6" />             
-                       <widget name="stattext" position="30,75" size="400,25" font="Regular;20" />
+                       <widget name="stattext" position="30,75" size="450,35" font="Regular;30" />
                </screen>"""
 
        def __init__(self, session, mactry = 1):
                </screen>"""
 
        def __init__(self, session, mactry = 1):
@@ -1225,7 +1293,6 @@ class MacConfig(Screen):
                self.mactry = mactry
                self.model = 0
                self.getModelInfo()
                self.mactry = mactry
                self.model = 0
                self.getModelInfo()
-#              self.result = 0
                self.macfd = 0
                self.macaddr = "000000000000"
                self.ReadMacinfo = 0
                self.macfd = 0
                self.macaddr = "000000000000"
                self.ReadMacinfo = 0
@@ -1241,7 +1308,9 @@ class MacConfig(Screen):
        def getModelInfo(self):
                getmodel = 0
                if fileExists("/proc/stb/info/vumodel"):
        def getModelInfo(self):
                getmodel = 0
                if fileExists("/proc/stb/info/vumodel"):
-                       info = open("/proc/stb/info/vumodel").read().strip()
+                       vumodel = open("/proc/stb/info/vumodel")
+                       info=vumodel.read().strip()
+                       vumodel.close()
                        if info == "combo":
                                self.model = 2
                                getmodel = 1
                        if info == "combo":
                                self.model = 2
                                getmodel = 1
@@ -1263,9 +1332,10 @@ class MacConfig(Screen):
                                getmodel = 1
                                print "getModelInfo : ultimo"
 
                                getmodel = 1
                                print "getModelInfo : ultimo"
 
-
                if getmodel == 0 and fileExists("/proc/stb/info/version"):
                if getmodel == 0 and fileExists("/proc/stb/info/version"):
-                       info = open("/proc/stb/info/version").read()
+                       version = open("/proc/stb/info/version")
+                       info=version.read()
+                       version.close()
 #                      print info,info[:2]
                        if info[:2] == "14":
                                self.model = 1
 #                      print info,info[:2]
                        if info[:2] == "14":
                                self.model = 1
@@ -1420,266 +1490,23 @@ class MacConfig(Screen):
                ethtest = 0
                self.close()
 
                ethtest = 0
                self.close()
 
-
-sccitest = 0
-
-class ScCiTest(Screen):
-       skin = """
-               <screen position="120,225" size="440,200" title="CI Smartcard Test" >
-                       <widget name="testlist" position="10,0" size="340,120" />
-                       <widget name="resultlist" position="370,0" size="60,120" />
-                       <eLabel text=" " position="5,125" zPosition="-1" size="430,5" backgroundColor="#02e1e8e6" />            
-                       <widget name="text" position="10,140" size="420,50" font="Regular;25" />
-               </screen>"""
-       step=1
-       def __init__(self, session):
-               self["actions"] = ActionMap(["DirectionActions","OkCancelActions"],
-               {
-                       "ok": self.keyOk,
-                       "up": self.up,
-                       "down":self.down,
-                       "cancel": self.keyCancel,
-               }, -2)
-
-               Screen.__init__(self, session)
-               tlist = []
-               tlist.append(("Smartcard 1 Test",0))
-               tlist.append(("Smartcard 2 Test",1))
-               tlist.append(("CI 1 Test",2))
-               tlist.append(("CI 2 Test",3))
-               self["testlist"] = MenuList(tlist)
-               self.rlist = []
-               for x in range(4):
-                       self.rlist.append((".."))
-               self["resultlist"] = TestResultList(self.rlist)
-               self.result = 0
-               self.removecard = eTimer()
-               self.removecard.callback.append(self.remove_card)
-               self["text"]=Label(("Press OK Key"))
-               self.camstate= eTimer()
-               self.camstate.callback.append(self.cam_state)
-               self.camtry = 5
-               self.camstep = 0
-
-       def keyCancel(self):
-               global sccitest
-               print "result ", self.result
-               if self.result==15:
-                       sccitest=1
-               self.resetSource()
-               self.close()
-
-       def up(self):
-               self["text"].setText(_("Press OK Key"))
-               self["testlist"].instance.moveSelection(self["testlist"].instance.moveUp)
-               
-       def down(self):
-               self["text"].setText(_("Press OK Key"))
-               self["testlist"].instance.moveSelection(self["testlist"].instance.moveDown)
-               
-       def keyOk(self):
-               print "line - ",self["testlist"].getCurrent()[1]
-               index = self["testlist"].getCurrent()[1]
-               result = 0
-               if index==0 or index==1:                
-                       self["text"].setText(_("Insert Card?"))
-                       self.ScTest(True)
-               elif index ==2 or index==3:
-                       self["text"].setText(_("Insert Cam"))
-                       self.CamTest()
-
-       def CamTest(self):
-               self.camtry = 10
-               self.camstep = 1
-               self.camstate.start(1000,True)          
-
-       def setSource(self, cislot):
-               filename = ("/proc/stb/tsmux/ci%d_input"%cislot)
-               fd = open(filename,'w')
-               fd.write('A')
-               fd.close()
-
-       def setInputSource(self, cislot):
-               fd=open("/proc/stb/tsmux/input0","w")
-               if cislot==0:
-                       fd.write("CI0")
-               else:
-                       fd.write("CI1")
-               fd.close()
-                       
-       def resetSource(self):
-               fd=open("/proc/stb/tsmux/input0","w")
-               fd.write("A")
-               fd.close()
-#              fd = open("/proc/stb/tsmux/ci0_input","w")
-#              fd.write("CI0")
-#              fd.close()
-#              fd = open("/proc/stb/tsmux/ci1_input","w")
-#              fd.write("CI1")
-#              fd.close()
-
-       def channelstart(self):
-               ref = eServiceReference("1:0:19:1324:3EF:1:C00000:0:0:0")
-               ref.setData(0,0x19)
-               ref.setData(1,0x83)
-               ref.setData(2,0x6)
-               ref.setData(3,0x85)
-               ref.setData(4,0x640000)
-               self.session.nav.playService(ref)
-
-       def channelstop(self):
-               self.session.nav.stopService() # try to disable foreground service              
-       
-       def cam_state(self):
-               index = self["testlist"].getCurrent()[1] 
-               if (index-2)==0:
-                       slot = 1
-               else:
-                       slot = 0
-               print 'cam_state', self.camstep,self.camtry
-               if self.camstep == 1:
-                       state = eDVBCI_UI.getInstance().getState(slot)
-                       print 'stat',state
-                       if state == 1:
-                               self.camstep=2
-                               self.camtry=10
-                               self["text"].setText(_("Getting Cam name...."))
-                               self.camstate.start(5000,True)
-                       else:
-                               self.camtry-=1
-                               if self.camtry>0:
-                                       self.camstate.start(1000,True)
-                               else:
-                                       self.session.open( MessageBox, _("NO_NOT_INSERTED"), MessageBox.TYPE_ERROR)
-                                       self.rlist[index]="fail"
-                                       self["resultlist"].updateList(self.rlist)
-
-               elif self.camstep == 2:
-                       appname = eDVBCI_UI.getInstance().getAppName(slot)
-                       print 'appname',appname
-                       if appname is None:
-                               self.camtry-=1
-                               if self.camtry>0:
-                                       self.camstate.start(1000,True)
-                               else:
-                                       self.session.open( MessageBox, _("NO_GET_APPNAME"), MessageBox.TYPE_ERROR)
-                                       self.rlist[index]="fail"
-                                       self["resultlist"].updateList(self.rlist)
-                       else:
-                               self["text"].setText(_("Get Cam name : %s"%appname+". \n Remove Cam!"))
-                               self.channelstart()
-                               self.setInputSource(slot)
-                               self.setSource(slot)
-                               self.camstep=3
-                               self.camtry=30
-                               self.camstate.start(1000,True)          
-               elif self.camstep==3:
-                       state = eDVBCI_UI.getInstance().getState(slot)
-                       print 'stat', state
-                       if state == 0:
-                               self.channelstop()
-                               self.result += (1<<index)
-                               print self.result
-                               self.rlist[index]="pass"
-                               self["text"].setText(_("Press OK Key"))
-                               self["resultlist"].updateList(self.rlist)                               
-                               if index==2:
-                                       self.down()
-                               elif index == 3:
-                                       self.keyCancel()
-                       else:
-                               self.camtry-=1
-                               if self.camtry>0:
-                                       self.camstate.start(1000,True)
-                               else:
-                                       self.channelstop()
-                                       self.session.open( MessageBox, _("NO_REMOVE_CAM"), MessageBox.TYPE_ERROR)
-                                       self.rlist[index]="fail"
-                                       self["resultlist"].updateList(self.rlist)
-
-       def check_smart_card(self,which):
-               index = which
-               result  = 0
-               if which==0:
-                       result = eSctest.getInstance().check_smart_card("/dev/sci0")
-               elif which ==1:
-                       result = eSctest.getInstance().check_smart_card("/dev/sci1")
-               else:
-                       result = -1
-
-               print result                    
-               
-               if result == 0:
-                       print 'pass'
-               else:
-                       if result ==-1:
-                               self.session.open( MessageBox, _("1:NO_DEV_FOUND"), MessageBox.TYPE_ERROR)
-                       elif result == -2:
-                               self.session.open( MessageBox, _("1:SC_NOT_INSERTED"), MessageBox.TYPE_ERROR)
-                       elif result == -3:
-                               self.session.open( MessageBox, _("1:SC_NOT_VALID_ATR"), MessageBox.TYPE_ERROR)
-                       elif result == -5:
-                               self.session.open( MessageBox, _("1:SC_READ_TIMEOUT"), MessageBox.TYPE_ERROR)
-                       self.rlist[which]="fail"
-                       self["resultlist"].updateList(self.rlist)
-               return result
-               
-       def remove_card(self):
-               index = self["testlist"].getCurrent()[1]
-               if index==0:
-                       result = eSctest.getInstance().eject_smart_card("/dev/sci0")    
-               elif index==1:
-                       result = eSctest.getInstance().eject_smart_card("/dev/sci1")    
-               print 'remove result' ,result
-               if result == 0:
-                       self.rlist[index]="pass"
-                       self.result += (1<<index)
-               else:
-                       if result ==-1:
-                               self.session.open( MessageBox, _("2:NO_DEV_FOUND"), MessageBox.TYPE_ERROR)
-                       elif result == -2:
-                               self.session.open( MessageBox, _("2:SC_NOT_INSERTED"), MessageBox.TYPE_ERROR)
-                       elif result == -3:
-                               self.session.open( MessageBox, _("2:SC_NOT_VALID_ATR"), MessageBox.TYPE_ERROR)
-                       elif result == -4:
-                               self.session.open( MessageBox, _("2:SC_NOT_REMOVED"), MessageBox.TYPE_ERROR)
-                       self.rlist[index]="fail"
-               self["resultlist"].updateList(self.rlist)
-               self["text"].setText(_("Press OK Key"))
-               self.down()
-               return result
-       
-
-       def ScTest(self, yesno):
-               if yesno==False:
-                       return
-               index = self["testlist"].getCurrent()[1]
-               result = self.check_smart_card(index)
-               if result==0:
-                       self.removecard.start(100,True)
-                       self["text"].setText(_("Read Ok. Remove Card!"))
-               else:
-                       return
-
 smartcardtest = 0
 smartcardtest = 0
-
 class SmartCardTest(Screen):
        skin = """
 class SmartCardTest(Screen):
        skin = """
-               <screen position="300,240" size="160,120" title="SmartCard Test" >
-                       <widget name="text" position="10,10" size="140,100" font="Regular;22" />
+               <screen name="SmartCardTest" position="center,center" size="300,120" title="SmartCard Test" >
+                       <widget name="text" position="10,10" size="280,100" font="Regular;30" />
                </screen>"""
 
        def __init__(self, session, stbmodel = 0):
                self["actions"] = ActionMap(["DirectionActions", "OkCancelActions"],
                {
                        "cancel": self.keyCancel,
                </screen>"""
 
        def __init__(self, session, stbmodel = 0):
                self["actions"] = ActionMap(["DirectionActions", "OkCancelActions"],
                {
                        "cancel": self.keyCancel,
-                       "ok" : self.keyCancel
+                       "ok" : self.keyOk
                }, -2)
 
                Screen.__init__(self, session)
                }, -2)
 
                Screen.__init__(self, session)
-#              self["text"]=Label(("Press Key LEFT"))
                self["text"]=Label(("Testing Smartcard 1..."))
                self["text"]=Label(("Testing Smartcard 1..."))
-               self.step = 0
+               self.testok = 0
                self.smartcardtimer = eTimer()
                self.smartcardtimer.callback.append(self.check_smart_card)
                self.closetimer = eTimer()
                self.smartcardtimer = eTimer()
                self.smartcardtimer.callback.append(self.check_smart_card)
                self.closetimer = eTimer()
@@ -1688,7 +1515,6 @@ class SmartCardTest(Screen):
                global smartcardtest
                smartcardtest = 0
                self.model = stbmodel
                global smartcardtest
                smartcardtest = 0
                self.model = stbmodel
-               self.Testmode = 1
                self.smartcardtimer.start(100,True)
 
        def check_smart_card(self):
                self.smartcardtimer.start(100,True)
 
        def check_smart_card(self):
@@ -1696,19 +1522,13 @@ class SmartCardTest(Screen):
                index = self.smartcard
                result  = 0
                if index==0:
                index = self.smartcard
                result  = 0
                if index==0:
-                       if self.Testmode==0:
-                               result = eSctest.getInstance().check_smart_card("/dev/sci0")
-                       else:
-                               result = eSctest.getInstance().n_check_smart_card("/dev/sci0")                  
+                       result = eSctest.getInstance().check_smart_card("/dev/sci0")
                elif index ==1:
                elif index ==1:
-                       if self.Testmode==0:
-                               result = eSctest.getInstance().check_smart_card("/dev/sci1")
-                       else:
-                               result = eSctest.getInstance().n_check_smart_card("/dev/sci1")                  
+                       result = eSctest.getInstance().check_smart_card("/dev/sci1")
                else:
                        result = -1
 
                else:
                        result = -1
 
-               print result                    
+               print "check smartcard : ", result
                
                if result == 0:
                        print 'pass'
                
                if result == 0:
                        print 'pass'
@@ -1719,8 +1539,7 @@ class SmartCardTest(Screen):
                                return
                        elif (index==1 or self.model==1):
                                smartcardtest = 1
                                return
                        elif (index==1 or self.model==1):
                                smartcardtest = 1
-#                              self.session.open( MessageBox, _("Smart Card OK!!"), MessageBox.TYPE_INFO,2)
-                               self.step = 1
+                               self.testok = 1
                                self["text"].setText(_("Smart Card OK!!"))
                                self.closetimer.start(2000,True)
                                self.smartcardtimer.stop()
                                self["text"].setText(_("Smart Card OK!!"))
                                self.closetimer.start(2000,True)
                                self.smartcardtimer.stop()
@@ -1729,7 +1548,6 @@ class SmartCardTest(Screen):
                                self["text"].setText(_("Smart Card model type error"))
                                self.closetimer.start(2000,True)
                                self.smartcardtimer.stop()
                                self["text"].setText(_("Smart Card model type error"))
                                self.closetimer.start(2000,True)
                                self.smartcardtimer.stop()
-#                      self.session.openWithCallback(self.check6, MessageBox, _("Scart loop ok?"), MessageBox.TYPE_INFO)
                else:
 #                      if result ==-1:
 #                              self.session.open( MessageBox, _("%d:NO_DEV_FOUND"%(index+1)), MessageBox.TYPE_ERROR)
                else:
 #                      if result ==-1:
 #                              self.session.open( MessageBox, _("%d:NO_DEV_FOUND"%(index+1)), MessageBox.TYPE_ERROR)
@@ -1750,14 +1568,18 @@ class SmartCardTest(Screen):
        def keyCancel(self):
                self.close()
 
        def keyCancel(self):
                self.close()
 
+       def keyOk(self):
+               if self.testok == 1:
+                       self.close()
+
        
 
 fronttest = 0
 
 class FrontTest(Screen):
        skin = """
        
 
 fronttest = 0
 
 class FrontTest(Screen):
        skin = """
-               <screen position="260,240" size="200,180" title="Front Test" >
-                       <widget name="text" position="10,10" size="180,160" font="Regular;22" />
+               <screen name="FrontTest" position="center,center" size="300,180" title="Front Test" >
+                       <widget name="text" position="10,10" size="280,160" font="Regular;30" />
                </screen>"""
 
        def __init__(self, session):
                </screen>"""
 
        def __init__(self, session):
@@ -1814,8 +1636,6 @@ class FrontTest(Screen):
                        self.keytimeout.start(5000,True)
                        self.step=2
                        self["text"].setText(_("Wheel RIGHT"))
                        self.keytimeout.start(5000,True)
                        self.step=2
                        self["text"].setText(_("Wheel RIGHT"))
-#              else:
-#                      print ""
 
        def keyOk(self):
                if self.step == 3:
 
        def keyOk(self):
                if self.step == 3:
@@ -1842,8 +1662,8 @@ class FrontTest(Screen):
 
 class FrontTest_solo(Screen):
        skin = """
 
 class FrontTest_solo(Screen):
        skin = """
-               <screen position="260,240" size="200,180" title="Front Test" >
-                       <widget name="text" position="10,10" size="180,160" font="Regular;22" />
+               <screen name="FrontTest_solo" position="center,center" size="300,180" title="Front Test" >
+                       <widget name="text" position="10,10" size="280,160" font="Regular;30" />
                </screen>"""
 
        def __init__(self, session):
                </screen>"""
 
        def __init__(self, session):
@@ -1937,11 +1757,11 @@ class FrontTest_solo(Screen):
 
        def keyOk(self):
                global fronttest
 
        def keyOk(self):
                global fronttest
-               self.fronttimer.stop()
-               eSctest.getInstance().VFD_Close()
                if self.step == 6:
                        fronttest = 1
                if self.step == 6:
                        fronttest = 1
-               self.close()
+                       self.fronttimer.stop()
+                       eSctest.getInstance().VFD_Close()
+                       self.close()
 
        def FrontAnimate(self):
                if (self.frontturnonoff==0):
 
        def FrontAnimate(self):
                if (self.frontturnonoff==0):
@@ -1952,138 +1772,1144 @@ class FrontTest_solo(Screen):
                        eSctest.getInstance().turnoff_VFD()
                self.fronttimer.start(1000,True)
 
                        eSctest.getInstance().turnoff_VFD()
                self.fronttimer.start(1000,True)
 
-
-       
-
-rstest = 0
-
-import select
-
-class RS232Test(Screen):
+class FrontTest_uno(Screen):
        skin = """
        skin = """
-               <screen position="300,240" size="160,100" title="RS232 Test" >
-                       <widget name="text" position="10,10" size="140,80" font="Regular;22" />
+               <screen name="FrontTest_uno" position="center,center" size="300,180" title="Front Test" >
+                       <widget name="text" position="10,10" size="280,160" font="Regular;30" />
                </screen>"""
                </screen>"""
-       step=1
+
        def __init__(self, session):
        def __init__(self, session):
-               self["actions"] = ActionMap(["DirectionActions", "OkCancelActions"],
+               self["actions"] = ActionMap(["DirectionActions", "OkCancelActions","GlobalActions"],
                {
                {
+                       "ok": self.keyOk,
                        "cancel": self.keyCancel,
                        "cancel": self.keyCancel,
+                       "left": self.keyleft,
+                       "right": self.keyright,
+                       "volumeUp": self.keyvolup,
+                       "volumeDown": self.keyvoldown,
+                       "power_down": self.keypower,
                }, -2)
 
                Screen.__init__(self, session)
                }, -2)
 
                Screen.__init__(self, session)
-               self["text"]=Label(("Press \"Enter\" Key"))
-               self.timer = eTimer()
-               self.timer.callback.append(self.checkrs232)
-               self.timer.start(100, True)
+               self["text"]=Label(("Press Front CH -"))
+               self.step = 1
+               self.fronttimer= eTimer()
+               self.fronttimer.callback.append(self.FrontAnimate)
+               self.frontturnonoff = 0
+               eSctest.getInstance().VFD_Open()
+               self.keytimeout = eTimer()
+               self.keytimeout.callback.append(self.KeyTimeOut)
+               self.keytimeout.start(5000,True)
 
 
-       def checkrs232(self):
-               global rstest
-               try:
-                       rs=open('/dev/ttyS0','r')
-                       rd = [rs]
-                       r,w,e = select.select(rd, [], [], 10)
-                       if r:
-                               input = rs.read(1)
-                               if input == "\n":
-#                              if input == "m":
-                                       rstest = 1
-                               else:
-                                       rstest = 0 
-                       else:
-                               rstest = 0
-               except:
-                       print 'error'
-                       rstest = 0
-               self.close()
+       def KeyTimeOut(self):
+               if self.step == 1:
+                       self["text"].setText(("Front CH - ERROR\nPress exit!"))
+               elif self.step == 2:
+                       self["text"].setText(("Front CH + ERROR\nPress exit!"))
+               elif self.step == 3 :
+                       self["text"].setText(("Front VOL - ERROR\nPress exit!"))
+               elif self.step == 4:
+                       self["text"].setText(("Front VOL + ERROR\nPress exit!"))
+               elif self.step == 5:
+                       self["text"].setText(("Front STANDBY ERROR\nPress exit!"))
+               self.step = 0
+
+       def keyleft(self):
+               if self.step== 1:
+                       self.keytimeout.stop()
+                       self.keytimeout.start(5000,True)
+                       self.step = 2
+                       self["text"].setText(_("Press Front CH +"))
+       def keyright(self):
+               if self.step== 2:
+                       self.keytimeout.stop()
+                       self.keytimeout.start(5000,True)
+                       self.step = 3
+                       self["text"].setText(_("Press Front VOL -"))
+
+       def keyvoldown(self):
+               if self.step== 3:
+                       self.keytimeout.stop()
+                       self.keytimeout.start(5000,True)
+                       self.step = 4
+                       self["text"].setText(_("Press Front VOL +"))
+
+       def keyvolup(self):
+               if self.step== 4:
+                       self.keytimeout.stop()
+                       self.keytimeout.start(5000,True)
+                       self.step = 5
+                       self["text"].setText(_("Press Front STANDBY"))
+
+       def keypower(self):
+               if self.step== 5:
+                       self.keytimeout.stop()
+                       self.step = 6
+                       self.fronttimer.start(1000,True)
+                       self["text"].setText(_("Front LED OK?\n\nyes-ok\nno-exit"))
 
        def keyCancel(self):
 
        def keyCancel(self):
+               global fronttest
+               self.fronttimer.stop()
+               eSctest.getInstance().VFD_Close()
+               fronttest = 0
                self.close()
 
                self.close()
 
-Agingresult = 0
+       def keyOk(self):
+               global fronttest
+               if self.step == 6:
+                       fronttest = 1
+                       self.fronttimer.stop()
+                       eSctest.getInstance().VFD_Close()
+                       self.close()
 
 
-class AgingTest(Screen):
+       def FrontAnimate(self):
+               if (self.frontturnonoff==0):
+                       eSctest.getInstance().turnon_VFD()
+                       self.frontturnonoff = 1
+               else:
+                       self.frontturnonoff = 0
+                       eSctest.getInstance().turnoff_VFD()
+               self.fronttimer.start(1000,True)
+
+class FrontTest_ultimo_Summary(Screen):
+       skin = """
+       <screen name="FactoryTestSummary" position="0,0" size="256,64" id="1">
+               <widget source="parent.Title" render="Label" position="0,0" size="256,24" font="Regular;18" halign="center" valign="center"/>
+               <widget name="text" position="0,24" size="256,40" font="VFD;20" halign="center" valign="center"/>
+       </screen>"""
+
+       def __init__(self, session, parent):
+               Screen.__init__(self, session, parent = parent)
+               self["text"] = Label("Press Front STANDBY")
+
+       def setText(self, text = ""):
+               if not isinstance(text, str):
+                       text = str(text)
+               self["text"].setText(text)
+
+class FrontTest_ultimo(FrontTest_solo):
+       skin = """
+               <screen position="center,center" size="300,180" title="Front Test" >
+                <widget name="text" position="10,10" size="280,160" font="Regular;30" />
+               </screen>"""
+
+       def createSummary(self):
+               return FrontTest_ultimo_Summary
+
+       def KeyTimeOut(self):
+               if self.step == 1:
+                       self["text"].setText(("Front STANDBY ERROR\nPress exit!"))
+                       self.summaries.setText("Front STANDBY ERROR\nPress exit!")
+               elif self.step == 2 :
+                       self["text"].setText(("Front CH - ERROR\nPress exit!"))
+                       self.summaries.setText("Front CH - ERROR\nPress exit!")
+               elif self.step == 3:
+                       self["text"].setText(("Front CH + ERROR\nPress exit!"))
+                       self.summaries.setText("Front CH + ERROR\nPress exit!")
+               elif self.step == 4 :
+                       self["text"].setText(("Front VOL - ERROR\nPress exit!"))
+                       self.summaries.setText("Front VOL - ERROR\nPress exit!")
+               elif self.step == 5:
+                       self["text"].setText(("Front VOL + ERROR\nPress exit!"))
+                       self.summaries.setText("Front VOL + ERROR\nPress exit!")
+               self.step = 0
+
+       def keypower(self):
+               if self.step== 1:
+                       self.keytimeout.stop()
+                       self.keytimeout.start(5000,True)
+                       self.step = 2
+                       self["text"].setText(_("Press Front CH -"))
+                       self.summaries.setText(_("Press Front CH -"))
+
+       def keyright(self):
+               if self.step== 3:
+                       self.keytimeout.stop()
+                       self.keytimeout.start(5000,True)
+                       self.step = 4
+                       self["text"].setText(_("Press Front VOL -"))
+                       self.summaries.setText(_("Press Front VOL -"))
+
+       def keyleft(self):
+               if self.step== 2:
+                       self.keytimeout.stop()
+                       self.keytimeout.start(5000,True)
+                       self.step = 3
+                       self["text"].setText(_("Press Front CH +"))
+                       self.summaries.setText(_("Press Front CH +"))
+
+       def keyvolup(self):
+               if self.step== 5:
+                       self.keytimeout.stop()
+                       self.step = 6
+                       self.fronttimer.start(1000,True)
+                       self["text"].setText(_("Front LED OK?\n\nyes-ok\nno-exit"))
+                       self.summaries.setText(_("Front LED OK?"))
+
+       def keyvoldown(self):
+               if self.step== 4:
+                       self.keytimeout.stop()
+                       self.keytimeout.start(5000,True)
+                       self.step = 5
+                       self["text"].setText(_("Press Front VOL +"))
+                       self.summaries.setText(_("Press Front VOL +"))
+
+       def FrontAnimate(self):
+               if (self.frontturnonoff==0):
+                       eSctest.getInstance().turnon_VFD()
+                       self.frontturnonoff = 1
+                       self.fronttimer.start(1500,True)
+               else:
+                       self.frontturnonoff = 0
+                       eSctest.getInstance().turnoff_VFD()
+                       self.fronttimer.start(500,True)
+
+rstest = 0
+
+import select
+
+class RS232Test(Screen):
        skin = """
        skin = """
-               <screen position="200,240" size="250,100" title="Aging Test" >
-                       <widget name="text1" position="10,10" size="230,40" font="Regular;22" />
-                       <widget name="text2" position="10,50" size="230,40" font="Regular;22" />
+               <screen name="RS232Test" position="center,center" size="260,100" title="RS232 Test" >
+                       <widget name="text" position="10,10" size="240,80" font="Regular;30" />
                </screen>"""
        step=1
        def __init__(self, session):
                </screen>"""
        step=1
        def __init__(self, session):
-               self["actions"] = ActionMap(["WizardActions","GlobalActions"],
+               self["actions"] = ActionMap(["DirectionActions", "OkCancelActions"],
                {
                {
-                       "agingend": self.keyEnd,
-                       "agingfinish": self.keyFinish,
-                       "volumeUp": self.nothing,
-                       "volumeDown": self.nothing,
-                       "volumeMute": self.nothing,             
+                       "cancel": self.keyCancel,
                }, -2)
 
                Screen.__init__(self, session)
                }, -2)
 
                Screen.__init__(self, session)
+               self["text"]=Label(("Press \"Enter\" Key"))
+               self.timer = eTimer()
+               self.timer.callback.append(self.checkrs232)
+               self.timer.start(100, True)
+
+       def checkrs232(self):
+               global rstest
+               try:
+                       rs=open('/dev/ttyS0','r')
+                       rd = [rs]
+                       r,w,e = select.select(rd, [], [], 10)
+                       if r:
+                               input = rs.read(1)
+                               if input == "\n":
+                                       rstest = 1
+                               else:
+                                       rstest = 0 
+                       else:
+                               rstest = 0
+                       rs.close()
+               except:
+                       try:
+                               if rs:
+                                       rs.close()
+                       except:
+                               pass
+                       print 'except error'
+                       rstest = 0
+               if rstest == 0:
+                       self.session.open( MessageBox, _("RS232 Test Failed!\nPress 'EXIT' button!"), MessageBox.TYPE_ERROR)
+               self.close()
+
+       def keyCancel(self):
+               self.close()
+
+class AgingTestSummary(Screen):
+       skin = """
+               <screen name="AgingTestSummary" position="0,0" size="132,64" id="1">
+                       <widget source="parent.Title" render="Label" position="6,0" size="132,64" font="Regular;18" halign="center" valign="center"/>
+               </screen>"""
+
+class AgingTestSummaryVFD(Screen):
+       skin = """
+               <screen name="AgingTestSummaryVFD" position="0,0" size="256,64" id="1">
+                       <eLabel text="MODE: " position="0,0" size="50,16" font="VFD;14" />
+                       <widget name="zapmode" position="51,0" size="70,16" font="VFD;14" halign="left" valign="center"/>
+                       <widget name="timer" position="152,0" size="124,16" font="VFD;14" halign="left" valign="center"/>
+                       <eLabel text="TUNER: " position="0,16" size="50,16" font="VFD;14" />
+                       <widget name="curtuner" position="51,16" size="200,16" font="VFD;14" halign="left" valign="center"/>
+                       <!-- Signal Quality -->
+                       <eLabel text="SNR: " position="0,32" size="45,16" font="VFD;14" transparent="1" halign="left" valign="center"/>
+                       <widget source="session.FrontendStatus" render="Label" position="46,32" size="40,16" font="VFD;14"  transparent="1">
+                               <convert type="FrontendInfo">SNRdB</convert>
+                       </widget>
+                       <!-- AGC -->
+                       <eLabel text="AGC: " position="0,48" size="45,16" font="VFD;14"  transparent="1" noWrap="1" />
+                       <widget source="session.FrontendStatus" render="Label" position="46,48" size="40,16" font="VFD;14"  transparent="1" noWrap="1">
+                               <convert type="FrontendInfo">AGC</convert>
+                       </widget>
+                       <widget name="error" position="90,32" size="166,32" font="VFD;18" halign="center" valign="center"/>
+               </screen>"""
+
+       def __init__(self, session, parent):
+               Screen.__init__(self, session)
+               self["zapmode"] = Label("")
+               self["timer"] = Label("")
+               self["curtuner"] = Label("")
+               self["error"] = Label("")
+
+       def setText(self, label = "zapmode",text = ""):
+               if not isinstance(text,str):
+                       text = str(text)
+               self[label].setText(text)
+
+class AgingTest(Screen):
+       skin = """
+               <screen position="center,center" size="350,220" title="Aging Test" >
+                       <widget name="text1" position="10,10" size="340,40" font="Regular;30" halign = "center" valign = "center"/>
+                       <widget name="text2" position="10,60" size="340,40" font="Regular;30" halign = "center" valign = "center"/>
+                       <!-- Signal Quality -->
+                       <eLabel text="SNR : " position="40,120" size="60,25" font="Regular;25" transparent="1" />
+                       <widget source="session.FrontendStatus" render="Label" position="100,120" size="60,25" font="Regular;25"  transparent="1">
+                               <convert type="FrontendInfo">SNRdB</convert>
+                       </widget>
+                       <!-- AGC -->
+                       <eLabel text="AGC : " position="180,120" size="60,25" font="Regular;25"  transparent="1" noWrap="1" />
+                       <widget source="session.FrontendStatus" render="Label" position="240,120" size="60,25" font="Regular;25"  transparent="1" noWrap="1">
+                               <convert type="FrontendInfo">AGC</convert>
+                       </widget>
+                       <widget name="text3" position="10,150" size="330,35" font="Regular;28" halign = "center" valign = "center"/>
+                       <widget name="text4" position="10,185" size="330,35" font="Regular;20" halign = "center" valign = "center"/>
+               </screen>"""
+       step=1
+       def __init__(self, session, model):
+               Screen.__init__(self, session)
+               self["actions"] = ActionMap(["MediaPlayerActions","GlobalActions", "MediaPlayerSeekActions", "ChannelSelectBaseActions"],
+               {
+                       "pause": self.keyEnd,
+                       "stop": self.keyFinish,
+                       "volumeUp": self.keyVolumeup,
+                       "volumeDown": self.keyVolumedown,
+                       "volumeMute": self.nothing,
+                       "seekFwd" : self.keyFFW,
+               }, -2)
+               self.model = model
                self["text1"]=Label(("Exit - Press Pause Key"))
                self["text2"]=Label(("Reset - Press Stop Key"))
                self["text1"]=Label(("Exit - Press Pause Key"))
                self["text2"]=Label(("Reset - Press Stop Key"))
-#              self.servicelist = ServiceList()
-#              self.oldref = session.nav.getCurrentlyPlayingServiceReference()
-#              print "oldref",self.oldref
-#              session.nav.stopService() # try to disable foreground service
-#              self.chstart()
-               self.tunerlock = 0
-               self.tuningtimer = eTimer()
-               self.tuningtimer.callback.append(self.updateStatus)
-#              self.tuningtimer.start(200,True)
+               self["text3"]=Label(("Manual zapping"))
+               self["text4"]=Label((" "))
+               self.avswitch = AVSwitch()
+               self.curzappingmode = 'manual'
+               self.zapping_interval = 300
+               self.error = 0
+               self.timeout = self.zapping_interval
+               self.tunelist = []
+               self.zappinglist = {
+                                       'DVB-S2' : [
+                                                               ('S-1','1:0:19:1325:3EF:1:0x64af79:0:0:0:'), # astra hd
+                                                               ('S-2','1:0:19:1324:3EF:1:0x64af79:0:0:0:'), # anixe hd
+                                                               ('S-3','1:0:19:1331:3EF:1:0x64af79:0:0:0:') # servus hd
+                                                       ],
+                                       'DVB-C': [
+                                                               ('C-1','1:0:19:1325:3EF:1:FFFF029A:0:0:0:'), # astra hd (DVB-C)
+                                                               ('C-2','1:0:19:1324:3EF:1:FFFF029A:0:0:0:') # anixe hd (DVB-C)
+                                                       ]
+               }
+               self.LockCheckTimer = eTimer()
+               self.LockCheckTimer.callback.append(self.LockCheck)
+               self.nextzappingtimer = eTimer()
+               self.nextzappingtimer.callback.append(self.checktimeout)
+               self.checkTunerType()
+               self.makeTunelList()
+               self.playservice(service = self.tunelist[0][1])
+#              self.logmessage("AGING TEST START")
+
+       def createSummary(self):
+               if self.model == 4:
+                       self.onShown.append(self.VFDinit)
+                       return AgingTestSummaryVFD
+               else:
+                       return AgingTestSummary
 
 
+       def setTextVFD(self, name ,text):
+               if self.model == 4:
+                       self.summaries.setText(name ,text)
 
 
-       def updateStatus(self):
-               result = eSctest.getInstance().getFrontendstatus(0)             
-               hv = "Ver"
-                       
-               print "eSctest.getInstance().getFrontendstatus - %d"%result
-               if result == 0:
-                       self.tunerlock = 0
-                       self.session.nav.stopService()
-                       self.session.open( MessageBox, _("Tune 1 Ver Locking Fail..."), MessageBox.TYPE_ERROR)
-               elif result==1 :
-                       self.tunerlock = 1
+       def VFDinit(self):
+               if self.curzappingmode == 'manual' :
+                       self.summaries.setText("zapmode", 'MANUAL')
                else:
                else:
-                       self.tunerlock = 0
-                       self.session.nav.stopService()
-                       self.session.open( MessageBox, _("Tune 1 Ver Error %d..."%result), MessageBox.TYPE_ERROR)
+                       self.summaries.setText("zapmode", 'AUTO')
+                       self.summaries.setText("timer", "Timer %d sec"%self.timeout)
+               self.summaries.setText("curtuner", "%s,  CHANNEL - %s)"%(self.NimType[0], self.tunelist[0][0]))
+
+       def checkTunerType(self):
+               self.NimType={}
+               nimfile = open("/proc/bus/nim_sockets")
+               for line in nimfile.readlines():
+                       print line
+                       if line == "":
+                               break
+                       if line.strip().startswith("NIM Socket"):
+                               parts = line.strip().split(" ")
+                               current_slot = int(parts[2][:-1])
+                       elif line.strip().startswith("Type:"):
+                               self.NimType[current_slot]= str(line.strip()[6:])
+                       elif line.strip().startswith("empty"):
+                               self.NimType.pop(current_slot)
+               nimfile.close()
+
+       def makeTunelList(self):
+               if self.NimType[0].startswith("DVB-S"):
+                       tunetype = "DVB-S2"
+               elif self.NimType[0].startswith("DVB-C"):
+                       tunetype = "DVB-C"
+               elif self.NimType[0].startswith("DVB-T"):
+#                      tunetype = "DVB-T"
+                       pass # fix later..
+               try :
+                       self.tunelist = self.zappinglist[tunetype]
+               except:
+                       print "[FactoryTest] ERROR, index error (%s)"%tunetype
+
+       def nextZapping(self, zap_rev = False):
+               if zap_rev:
+                       tunelistlen = len(self.tunelist)
+                       nextservice = self.tunelist.pop(tunelistlen-1)
+                       self.tunelist.insert(0,nextservice)
+               else:
+                       currentservice = self.tunelist.pop(0)
+                       self.tunelist.append(currentservice)
+               self.playservice(service=self.tunelist[0][1])
+               if self.curzappingmode == 'auto':
+                       self.timeout = self.zapping_interval
+               self.setTextVFD("curtuner", "%s,  CHANNEL - %s)"%(self.NimType[0], self.tunelist[0][0]))
+
+       def checktimeout(self):
+               if self.timeout == 0:
+                       self.nextZapping()
+               else:
+                       self.timeout -=1
+               self["text4"].setText("remain %d sec for next tuning" %self.timeout)
+               self.setTextVFD("timer", "Timer %d sec"%self.timeout)
 
 
+       def playservice(self,service = '1:0:19:1325:3EF:1:0x64af79:0:0:0:'):
+               ref = eServiceReference(service)
+               self.session.nav.playService(ref)
+               self.avswitch.setAspectRatio(6)
+               self.avswitch.setColorFormat(0)
+               self.LockCheckTimer.start(2000,True)
+
+       def LockCheck(self):
+               result = eSctest.getInstance().getFrontendstatus(0)
+               if result == 0 or result == -1:
+                       if self.model == 4:
+                               self.error +=1
+                               print "AGINGTEST - LOCK FAIL(%d)"%self.error
+                               self.setTextVFD("error", "LOCK FAIL(%d)"%self.error)
+       #                       logmsg = "[LOCKFAIL][%d] TYPE : %s, CH : %s, ZAPMODE: %s"%(self.error,self.NimType[0],self.tunelist[0][0],self.curzappingmode)
+       #                       self.logmessage(logmsg)
+                       else:
+                               self.session.open( MessageBox, _("Locking Fail Error"), MessageBox.TYPE_ERROR)
+
+       def logmessage(self,msg):
+               pass
 
        def nothing(self):
                print "nothing"
 
 
        def nothing(self):
                print "nothing"
 
-       def chstart(self):
-               if self.oldref is None:
-                       eref = eServiceReference("1:0:19:1324:3EF:1:C00000:0:0:0")
-                       serviceHandler = eServiceCenter.getInstance()
-                       servicelist = serviceHandler.list(eref)
-                       if not servicelist is None:
-                               ref = servicelist.getNext()
+       def keyFFW(self):
+               if self.curzappingmode == 'auto':
+                       self.curzappingmode = 'manual'
+                       self.nextzappingtimer.stop()
+                       self.timeout = self.zapping_interval
+                       self["text3"].setText("Manual zapping")
+                       self["text4"].setText("")
+                       self.setTextVFD("zapmode", 'MANUAL')
+                       self.setTextVFD("timer", "")
+
+               elif self.curzappingmode == 'manual':
+                       self.curzappingmode = 'auto'
+                       self["text3"].setText("Auto zapping")
+                       self["text4"].setText("remain %d sec for next tuning" %self.timeout)
+                       self.setTextVFD("zapmode", 'AUTO')
+                       self.setTextVFD("timer", "Timer %d sec"%self.timeout)
+#                      self.timeout = self.zapping_interval
+                       self.nextzappingtimer.start(1000)
+
+       def keyVolumeup(self):
+               self.nextZapping(zap_rev = False)
+
+       def keyVolumedown(self):
+               self.nextZapping(zap_rev = True)
+
+       def nothing(self):
+               print "nothing"
+
+       def keyEnd(self):
+               self.session.nav.stopService()
+               self.close(0) # exit
+
+       def keyFinish(self):
+               self.session.nav.stopService()
+               self.close(1) # exit and reset
+
+class AgingTest_mode2_Summary(Screen):
+       skin = """
+               <screen name="AgingTest_mode2_Summary" position="0,0" size="132,64" id="1">
+                       <widget source="parent.Title" render="Label" position="6,0" size="132,64" font="Regular;18" halign="center" valign="center"/>
+               </screen>"""
+
+class AgingTest_mode2_Summary_VFD(Screen):
+       skin = """
+               <screen name="AgingTest_mode2_Summary_VFD" position="0,0" size="256,64" id="1">
+                       <eLabel text="MODE: " position="0,0" size="50,16" font="VFD;14" />
+                       <widget name="zapmode" position="51,0" size="70,16" font="VFD;14" halign="left" valign="center"/>
+                       <widget name="timer" position="152,0" size="124,16" font="VFD;14" halign="left" valign="center"/>
+                       <eLabel text="TUNER: " position="0,16" size="50,16" font="VFD;14" />
+                       <widget name="curtuner" position="51,16" size="200,16" font="VFD;14" halign="left" valign="center"/>
+                       <!-- Signal Quality -->
+                       <eLabel text="SNR: " position="0,32" size="45,16" font="VFD;14" transparent="1" halign="left" valign="center"/>
+                       <widget source="session.FrontendStatus" render="Label" position="46,32" size="40,16" font="VFD;14"  transparent="1">
+                               <convert type="FrontendInfo">SNRdB</convert>
+                       </widget>
+                       <!-- AGC -->
+                       <eLabel text="AGC: " position="0,48" size="45,16" font="VFD;14"  transparent="1" noWrap="1" />
+                       <widget source="session.FrontendStatus" render="Label" position="46,48" size="40,16" font="VFD;14"  transparent="1" noWrap="1">
+                               <convert type="FrontendInfo">AGC</convert>
+                       </widget>
+                       <widget name="error" position="90,32" size="166,32" font="VFD;18" halign="center" valign="center"/>
+               </screen>"""
+
+       def __init__(self, session, parent):
+               Screen.__init__(self, session)
+               self["zapmode"] = Label("")
+               self["timer"] = Label("")
+               self["curtuner"] = Label("")
+               self["error"] = Label("")
+
+       def setText(self, label = "zapmode",text = ""):
+               if not isinstance(text,str):
+                       text = str(text)
+               self[label].setText(text)
+
+from Components.Input import Input
+from Screens.InputBox import InputBox
+class AgingTest_mode2(Screen):
+       skin = """
+               <screen position="center,center" size="370,190" title="Aging Test 2" >
+                       <widget name="text1" position="10,10" size="350,40" font="Regular;30" halign="center" valign="center"/>
+                       <widget name="text2" position="10,60" size="350,30" font="Regular;25" halign="center" valign="center"/>
+                       <!-- Signal Quality -->
+                       <eLabel text="SNR : " position="50,100" size="60,25" font="Regular;25" transparent="1" />
+                       <widget source="session.FrontendStatus" render="Label" position="110,100" size="60,25" font="Regular;25"  transparent="1">
+                               <convert type="FrontendInfo">SNRdB</convert>
+                       </widget>
+                       <!-- AGC -->
+                       <eLabel text="AGC : " position="190,100" size="60,25" font="Regular;25"  transparent="1" noWrap="1" />
+                       <widget source="session.FrontendStatus" render="Label" position="250,100" size="60,25" font="Regular;25"  transparent="1" noWrap="1">
+                               <convert type="FrontendInfo">AGC</convert>
+                       </widget>
+                       <widget name="text3" position="10,130" size="350,25" font="Regular;18" halign="center" valign="center"/>
+                       <widget name="text4" position="10,155" size="350,25" font="Regular;18" halign="center" valign="center"/>
+               </screen>"""
+       step=1
+       def __init__(self, session,model = 4):
+               self["actions"] = ActionMap(["MediaPlayerActions","GlobalActions","InfobarMenuActions","ChannelSelectBaseActions"],
+               {
+                       "pause": self.keyEnd,
+                       "stop": self.keyFinish,
+                       "volumeUp": self.keyVolumeup,
+                       "volumeDown": self.keyVolumedown,
+                       "volumeMute": self.nothing,
+                       "mainMenu" : self.keyMenu,
+                       "nextBouquet" : self.keyChannelup,
+                       "prevBouquet" : self.keyChannelDown,
+                       "showFavourites" : self.keyBlue,
+               }, -2)
+
+               Screen.__init__(self, session)
+               self.model = model
+               self.slotindex = { 0 : 'A', 1 : 'B', 2 : 'C', 3: 'D'}
+               self.curtuner = 0
+               self.isChangeTuner = True
+               self.isChangeChannel = False
+               self.zapping_interval = 300
+               self.timeout = self.zapping_interval
+               self.avswitch = AVSwitch()
+               self.error = 0
+               self.LockCheckTimer = eTimer()
+               self.LockCheckTimer.callback.append(self.LockCheck)
+               self.nextzappingtimer = eTimer()
+               self.nextzappingtimer.callback.append(self.checktimeout)
+               self.tunelist_db = {
+                                       'DVB-S2' : [
+                                                               [
+                                                                       ('1-1','1:0:19:1325:3EF:1:0x64af79:0:0:0:'), # astra hd
+                                                                       ('1-2','1:0:19:1324:3EF:1:0x64af79:0:0:0:'), # anixe hd
+                                                                       ('1-3','1:0:19:1331:3EF:1:0x64af79:0:0:0:') # servus hd
+                                                               ],
+                                                               [
+                                                                       ('2-1','1:0:19:1325:3EF:1:0xC00000:0:0:0:'), # astra hd
+                                                                       ('2-2','1:0:19:1324:3EF:1:0xC00000:0:0:0:'), # anixe hd
+                                                                       ('2-3','1:0:19:1331:3EF:1:0xC00000:0:0:0:') # servus hd
+                                                               ],
+                                                               [
+                                                                       ('3-1','1:0:19:1325:3EF:1:0x282AF79:0:0:0:'), # astra hd
+                                                                       ('3-2','1:0:19:1324:3EF:1:0x282AF79:0:0:0:'), # anixe hd
+                                                                       ('3-3','1:0:19:1331:3EF:1:0x282AF79:0:0:0:') # servus hd
+                                                               ],
+                                                               [
+                                                                       ('4-1','1:0:19:1325:3EF:1:0x02d0af79:0:0:0:'), # astra hd, Panamsat 4 (72.0E) 
+                                                                       ('4-2','1:0:19:1324:3EF:1:0x02d0af79:0:0:0:'), # anixe hd
+                                                                       ('4-3','1:0:19:1331:3EF:1:0x02d0af79:0:0:0:') # servus hd
+                                                               ]
+#                                                              namespace : 0x02d0af79, 720 # Panamsat 7,10 (68.5E) 
+                                                       ],
+                                       'DVB-C': [
+                                                               [
+                                                                       ('C-1','1:0:19:1325:3EF:1:FFFF029A:0:0:0:'), # astra hd (DVB-C)
+                                                                       ('C-2','1:0:19:1324:3EF:1:FFFF029A:0:0:0:') # anixe hd (DVB-C)
+                                                               ]
+                                                       ]
+               }
+               self.tunelist = {}
+               self.NimType={}
+               self.checkTunerType()
+               self.makeTunelList()
+               self.playservice(service = self.tunelist[self.curtuner][0][1])
+               self.curzappingmode = 'auto'
+               self["text1"]=Label("ZAPPING MODE : AUTO")
+               self["text2"]=Label("CURRENT TUNER : %s (%s)"%(self.slotindex[self.curtuner], self.NimType[self.curtuner]))
+               self["text3"]=Label("remain %d sec for next tuning" %self.timeout)
+               self["text4"]=Label("Press 'stop' key for exit")
+               self.nextzappingtimer.start(1000)
+               self.logmessage("AGING TEST START")
+
+       def createSummary(self):
+               if self.model == 4:
+                       self.onShown.append(self.VFDinit)
+                       return AgingTest_mode2_Summary_VFD
+               else:
+                       return AgingTest_mode2_Summary
+
+       def VFDinit(self):
+               if self.curzappingmode == 'manual' :
+                       self.summaries.setText("zapmode", 'MANUAL')
+               else:
+                       self.summaries.setText("zapmode", 'AUTO')
+                       self.summaries.setText("timer", "Timer %d sec"%self.timeout)
+               self.summaries.setText("curtuner", "%s (%s,  CHANNEL - %s)"%(self.slotindex[self.curtuner], self.NimType[self.curtuner], self.tunelist[self.curtuner][0][0]))
+
+       def setTextVFD(self,name ,text):
+               if self.model == 4:
+                       self.summaries.setText(name, text)
+
+       def checkTunerType(self):
+               nimfile = open("/proc/bus/nim_sockets")
+               for line in nimfile.readlines():
+                       print line
+                       if line == "":
+                               break
+                       if line.strip().startswith("NIM Socket"):
+                               parts = line.strip().split(" ")
+                               current_slot = int(parts[2][:-1])
+                       elif line.strip().startswith("Type:"):
+                               self.NimType[current_slot]= str(line.strip()[6:])
+                       elif line.strip().startswith("empty"):
+                               self.NimType.pop(current_slot)
+               nimfile.close()
+
+       def makeTunelList(self):
+               for slot, type in self.NimType.items():
+                       if type.startswith('DVB-S'):
+                               tunelist_type = 'DVB-S2'
+                       elif type.startswith('DVB-C'):
+                               tunelist_type = 'DVB-C'
+                       elif type.startswith('DVB-T'):
+                               tunelist_type = 'DVB-T'
+                       try :
+                               self.tunelist[slot] = self.tunelist_db[tunelist_type].pop(0)
+                       except:
+                               print "[FactoryTest] ERROR, pop from empty list (%s)"%tunelist_type
+               print "tunelist : "
+               print self.tunelist
+
+       def nextZapping(self, mode = 'auto', changeTuner = True, changeService = False, reverse_tuner = False, reverse_service = False):
+               if mode == 'manual' and changeTuner or mode == 'auto' and self.isChangeTuner:
+                       if reverse_tuner:
+                               self.curtuner -=1
                        else:
                        else:
-                               ref = self.getCurrentSelection()
-                               print "servicelist none"
+                               self.curtuner +=1
+                       if self.curtuner >= len(self.tunelist):
+                               self.curtuner = 0
+                       if self.curtuner < 0:
+                               self.curtuner = len(self.tunelist)-1
+               if mode == 'manual' and changeService or mode == 'auto' and self.isChangeChannel:
+                       if reverse_service:
+                               tunelistlen = len(self.tunelist[self.curtuner])
+                               nextservice = self.tunelist[self.curtuner].pop(tunelistlen-1)
+                               self.tunelist[self.curtuner].insert(0,nextservice)
+                       else:
+                               currentservice = self.tunelist[self.curtuner].pop(0)
+                               self.tunelist[self.curtuner].append(currentservice)
+               self.playservice(service=self.tunelist[self.curtuner][0][1])
+               if self.curzappingmode == 'auto':
+                       self.timeout = self.zapping_interval
+               self["text2"].setText("CURRENT TUNER : %s (%s)"%(self.slotindex[self.curtuner], self.NimType[self.curtuner]))
+               self.setTextVFD("curtuner", "%s (%s,  CHANNEL - %s)"%(self.slotindex[self.curtuner], self.NimType[self.curtuner], self.tunelist[self.curtuner][0][0]))
+
+
+       def checktimeout(self):
+               if self.timeout == 0:
+                       self.nextZapping(mode = 'auto')
                else:
                else:
-                       ref = self.oldref
-               self.session.nav.stopService() # try to disable foreground service
-               ref.setData(0,0x19)
-               ref.setData(1,0x83)
-               ref.setData(2,0x6)
-               ref.setData(3,0x85)
-               ref.setData(4,0x640000)
+                       self.timeout -=1
+               self["text3"].setText("remain %d sec for next tuning" %self.timeout)
+               self.setTextVFD("timer", "Timer %d sec"%self.timeout)
+
+       def playservice(self,service = '1:0:19:1325:3EF:1:0x64af79:0:0:0:'):
+               ref = eServiceReference(service)
                self.session.nav.playService(ref)
                self.session.nav.playService(ref)
+               self.avswitch.setAspectRatio(6)
+               self.avswitch.setColorFormat(0)
+               self.LockCheckTimer.start(2000,True)
+
+       def LockCheck(self):
+               result = eSctest.getInstance().getFrontendstatus(self.curtuner)
+               if result == 0 or result == -1:
+                       if self.model == 4:
+                               self.error +=1
+                               print "AGINGTEST - LOCK FAIL(%d)"%self.error
+                               self.summaries.setText("error", "LOCK FAIL(%d)"%self.error)
+                               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)
+                               self.logmessage(logmsg)
+                       else:
+                               self.error +=1
+                               print "AGINGTEST - LOCK FAIL(%d)"%self.error
+                               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)
+                               self.logmessage(logmsg)
+                               self.session.open( MessageBox, _("Locking Fail Error"), MessageBox.TYPE_ERROR)
+
+       def logmessage(self,msg):
+               print "[logmessage]",msg
+               devpath = None
+               checklist = ["/autofs/sda1", "/autofs/sdb1", "/autofs/sdc1", "/autofs/sdd1", "/autofs/sde1"]
+               for dev in checklist:
+                       try:
+                               if fileExists(dev):
+                                       if access(dev,F_OK|R_OK|W_OK):
+                                               dummy=open(dev+"/dummy03","w")
+                                               dummy.write("check")
+                                               dummy.close()
+                                               dummy=open(dev+"/dummy03","r")
+                                               if dummy.readline()=="check":
+                                                       print dev," - rw check ok"
+                                                       devpath = dev
+                                                       break
+                                               else:
+                                                       print dev," - read check error"
+                                               dummy.close()
+                                               system("rm "+dev+"/dummy03")
+                                       else:
+                                               print dev," - rw access error"
+                               else:
+                                       pass
+                       except:
+                               print dev," - exceptional error"
+               if devpath:
+                       cmd = "echo %s >> %s/agingTest.log" % (msg,devpath)
+                       print "[logmessage] %s(%s)"%(cmd,devpath)
+                       system(cmd)
+
+       def nothing(self):
+               print "nothing"
+
+       def keyBlue(self):
+               if self.curzappingmode == 'auto':
+                       self.curzappingmode = 'manual'
+                       self["text1"].setText("ZAPPING MODE : MANUAL")
+                       self["text3"].setText("Press 'stop' key for exit")
+                       self["text4"].setText("")
+                       self.setTextVFD("zapmode", 'MANUAL')
+                       self.setTextVFD("timer", "")
+                       self.nextzappingtimer.stop()
+                       self.timeout = self.zapping_interval
+               elif self.curzappingmode == 'manual':
+                       self.curzappingmode = 'auto'
+                       self["text1"].setText("ZAPPING MODE : AUTO")
+                       self["text3"].setText("remain %d sec for next tuning" %self.timeout)
+                       self["text4"].setText("Press 'stop' key for exit")
+                       self.setTextVFD("zapmode", 'AUTO')
+                       self.setTextVFD("timer", "Timer %d sec"%self.timeout)
+                       self.timeout = self.zapping_interval
+                       self.nextzappingtimer.start(1000)
+
+       def keyVolumeup(self):  
+               self.nextZapping(mode = 'manual', changeTuner = False, changeService = True)
+
+       def keyVolumedown(self):
+               self.nextZapping(mode = 'manual', changeTuner = False, changeService = True, reverse_service = True)
+
+       def keyChannelup(self):
+               self.nextZapping(mode = 'manual', changeTuner = True, changeService = False)
+
+       def keyChannelDown(self):
+               self.nextZapping(mode = 'manual', changeTuner = True, changeService = False, reverse_tuner = True)
+
+       def keyMenu(self):
+               self.session.openWithCallback(self.menuCallback, AgingTest_mode2_setmenu, tuner = self.isChangeTuner, channel = self.isChangeChannel, interval = self.zapping_interval)
+
+       def menuCallback(self, tuner, channel, interval):
+               if tuner is not None:
+                       self.isChangeTuner = tuner
+               if channel is not None:
+                       self.isChangeChannel = channel
+               if interval is not None:
+                       self.zapping_interval = interval
+                       self.timeout = self.zapping_interval
 
        def keyEnd(self):
 
        def keyEnd(self):
-               global Agingresult
-               Agingresult = 0
-               self.session.nav.stopService() # try to disable foreground service
+               self.session.nav.stopService()
                self.close()
 
        def keyFinish(self):
                self.close()
 
        def keyFinish(self):
-               global Agingresult
-               Agingresult = 1
-               self.session.nav.stopService() # try to disable foreground service
+               self.session.nav.stopService()
                self.close()
                self.close()
+
+from Components.ConfigList import ConfigListScreen
+from Components.config import ConfigInteger, ConfigYesNo, getConfigListEntry, NoSave
+class AgingTest_mode2_setmenu(Screen,ConfigListScreen):
+       skin = """
+               <screen position="center,center" size="370,190" title="Aging Test - settings" >
+                       <widget name="config" zPosition="2" position="10,10" size="360,180" scrollbarMode="showOnDemand" transparent="1" />
+                       <ePixmap pixmap="Vu_HD/buttons/green.png" position="50,135" size="25,25" alphatest="on" />
+                       <ePixmap pixmap="Vu_HD/buttons/red.png" position="215,135" size="25,25" alphatest="on" />
+                       <widget source="key_red" render="Label" position="75,135" zPosition="1" size="90,25" font="Regular;20" halign="center" valign="center" transparent="1" />
+                       <widget source="key_green" render="Label" position="240,135" zPosition="1" size="90,25" font="Regular;20" halign="center" valign="center" transparent="1" />
+               </screen>"""
+       def __init__(self,session, tuner = True, channel = False, interval = 300):
+               Screen.__init__(self,session)
+               self.session = session
+               self.tuner = tuner
+               self.channel = channel
+               self.zap_interval = interval
+               self["key_red"] = StaticText(_("Save"))
+               self["key_green"] = StaticText(_("Cancel"))
+               self["shortcuts"] = ActionMap(["ShortcutActions", "SetupActions" ],
+               {
+                       "ok": self.keySave,
+                       "cancel": self.keyCancel,
+                       "red": self.keyCancel,
+                       "green": self.keySave,
+               }, -2)
+               self.list = []
+               ConfigListScreen.__init__(self, self.list,session = self.session)
+               self.config_tuner = NoSave(ConfigYesNo(default = self.tuner))
+               self.config_channel = NoSave(ConfigYesNo(default = self.channel))
+               self.config_zap_interval = NoSave(ConfigInteger(default = self.zap_interval, limits=(5, 9999) ) )
+               self.configSetup()
+
+       def configSetup(self):
+               self.list = []
+               self.setupEntryTuner = getConfigListEntry(_("change tuner on timeout"), self.config_tuner )
+               self.setupEntryChannel = getConfigListEntry(_("change channel on timeout"), self.config_channel )
+               self.setupEntryZapInterval = getConfigListEntry(_("zapping interval (sec) "), self.config_zap_interval )
+               self.list.append( self.setupEntryTuner )
+               self.list.append( self.setupEntryChannel )
+               self.list.append( self.setupEntryZapInterval )
+               self["config"].list = self.list
+               self["config"].l.setList(self.list)
+
+       def keySave(self):
+               self.close(self.config_tuner.value, self.config_channel.value, self.config_zap_interval.value)
+
+       def keyCancel(self):
+               self.close(None, None, None)
+
+class TestTuneMenu(Screen):
+       skin = """
+       <screen position="350,230" size="550,300" title="Tuning Test" >
+               <widget name="testlist" position="10,0" size="440,250" itemHeight="35"/>
+               <widget name="resultlist" position="470,0" size="60,250" itemHeight="35"/>
+               <widget source="text" render="Label" position="100,270" size="450,30" font="Regular;22" />
+       </screen>"""
+
+       def __init__(self ,session ,tuneInfo, tunelist,NimType):
+               self.session = session
+               self.NimType = NimType
+               self.tuneInfo = tuneInfo
+               self.tunelist = tunelist
+               self.model = 4
+               self["actions"] = NumberActionMap(["OkCancelActions","WizardActions","NumberActions"],
+               {
+                       "left": self.nothing,
+                       "right":self.nothing,
+                       "ok": self.TestAction,
+                       "cancel": self.keyCancel,
+                       "up": self.keyup,
+                       "down": self.keydown,
+                       "0": self.numberaction,
+                       "1": self.numberaction,
+                       "2": self.numberaction,
+                       "3": self.numberaction,
+                       "4": self.numberaction,
+                       "5": self.numberaction,
+                       "6": self.numberaction,
+                       "7": self.numberaction,
+                       "8": self.numberaction,
+                       "9": self.numberaction,
+
+               }, -2)
+               Screen.__init__(self, session)
+               self.text = _("Press 'EXIT' key to finish tune test.")
+               self["text"] = StaticText(self.text)
+               self.createConfig()
+               session.nav.stopService() # try to disable foreground service
+
+               self.tunemsgtimer = eTimer()
+               self.tunemsgtimer.callback.append(self.tunemsg)
+
+               self.camstep = 1
+               self.camtimer = eTimer()
+               self.camtimer.callback.append(self.cam_state)
+
+               self.tunerlock = 0
+               self.tuningtimer = eTimer()
+               self.tuningtimer.callback.append(self.updateStatus)
+               self.setSourceVar()
+               self.avswitch = AVSwitch()
+
+       def createConfig(self):
+               self.menulength= len(self.tunelist)
+               self["testlist"] = MenuList(self.tunelist)
+               self.rlist = []
+               for x in range(self.menulength):
+                       self.rlist.append((".."))
+               self["resultlist"] = TestResultList(self.rlist)
+
+       def TestAction(self):
+               print "line - ",self["testlist"].getCurrent()[1]
+               self.currentindex = index = self["testlist"].getCurrent()[1]
+               result = 0
+               self.TestTune(index)
+
+       def nothing(self):
+               print "nothing"
+
+       def keyup(self):
+               print "self.menulength = ",self.menulength
+               print "self[\"testlist\"].getCurrent()[1] = ",self["testlist"].getCurrent()[1]
+               if self["testlist"].getCurrent()[1]==0:
+                       self["testlist"].moveToIndex(self.menulength-1)
+                       self["resultlist"].moveToIndex(self.menulength-1)
+               else:
+                       self["testlist"].up()
+                       self["resultlist"].up()
+
+
+       def keydown(self):
+               print "self.menulength = ",self.menulength
+               print "self[\"testlist\"].getCurrent()[1] = ",self["testlist"].getCurrent()[1]
+               if self["testlist"].getCurrent()[1]==(self.menulength-1):
+                       self["testlist"].moveToIndex(0)
+                       self["resultlist"].moveToIndex(0)
+               else:
+                       self["testlist"].down()
+                       self["resultlist"].down()
+
+       def numberaction(self, number):
+               if number >= self.menulength:
+                       return
+               index = int(number)
+               self["testlist"].moveToIndex(index)
+               self["resultlist"].moveToIndex(index)
+
+       def keyCancel(self):
+               print "testtunemenu exit"
+               if not '..' in self.rlist and not 'fail' in self.rlist:
+                       self.close(True)
+               else:
+                       self.close(False)
+#              if self.oldref is not None:
+#                      self.session.nav.playService(self.oldref)
+
+       def TestTune(self,index):
+               ref = eServiceReference("1:0:19:1324:3EF:1:C00000:0:0:0")
+               self.session.nav.stopService() # try to disable foreground service
+               getTuneInfo=self.tuneInfo[index]
+               if getTuneInfo["cam"] is True:
+                       self.camstep = 1
+                       self.camtimer.start(100,True)
+               if getTuneInfo["type"].startswith("DVB-S"):
+                       if getTuneInfo["pol"] == "H":
+                               ref.setData(0,1)
+                               ref.setData(1,0x6D3)
+                               ref.setData(2,0x3)
+                               ref.setData(3,0xA4)
+                       else:
+                               ref.setData(0,0x19)
+                               ref.setData(1,0x1325)
+                               ref.setData(2,0x3ef)
+                               ref.setData(3,0x1)
+                       if getTuneInfo["sat"] == "160": # Eutelsat W2
+                               ref.setData(4,0xA00000)
+                       elif getTuneInfo["sat"] == "100": # Eutelsat
+                               ref.setData(4,0x64af79)
+                       elif getTuneInfo["sat"] == "130": # Hotbird
+                               ref.setData(4,0x820000)
+                       elif getTuneInfo["sat"] == "192": # Astra
+                               ref.setData(4,0xC00000)
+                       elif getTuneInfo["sat"] == "620": # Intelsat 902
+                               ref.setData(4,0x26c0000) # need to fix later
+                       elif getTuneInfo["sat"] == "642": # Intelsat 906
+                               ref.setData(4,0x282AF79) # need to fix later
+               elif getTuneInfo["type"].startswith("DVB-C"):
+                       ref.setData(0,0x19)
+                       ref.setData(1,0x1325)
+                       ref.setData(2,0x3ef)
+                       ref.setData(3,0x1)
+                       ref.setData(4,-64870) # ffff029a
+               elif getTuneInfo["type"].startswith("DVB-T"):
+                       ref.setData(0,0x19)
+                       ref.setData(1,0x1325)
+                       ref.setData(2,0x3ef)
+                       ref.setData(3,0x1)
+                       ref.setData(4,-286391716) # eeee025c
+               self.session.nav.playService(ref)
+               if getTuneInfo["color"]=="CVBS":
+                       self.avswitch.setColorFormat(0)
+               elif getTuneInfo["color"]=="RGB":
+                       self.avswitch.setColorFormat(1)
+               elif getTuneInfo["color"]=="YC":
+                       self.avswitch.setColorFormat(2)
+               if getTuneInfo["ratio"] == "4:3":
+                       self.avswitch.setAspectRatio(0)
+               elif getTuneInfo["ratio"] == "16:9":
+                       self.avswitch.setAspectRatio(6)
+               self.tuningtimer.start(2000,True)
+               self.tunemsgtimer.start(3000, True)
+
+       def cam_state(self):
+               current_index = self.currentindex
+               if self.camstep == 1:
+                       slot = 0
+                       state = eDVBCI_UI.getInstance().getState(slot)
+                       print '-1-stat',state
+                       if state > 0:
+                               self.camstep=2
+                               self.camtimer.start(100,True)
+                       else:
+                               self.session.nav.stopService()
+                               self.session.open( MessageBox, _("CAM1_NOT_INSERTED\nPress exit!"), MessageBox.TYPE_ERROR)
+                               self.rlist[current_index]="fail"
+                               self.tunemsgtimer.stop()
+               elif self.camstep == 2:
+                       slot = 0
+                       appname = eDVBCI_UI.getInstance().getAppName(slot)
+                       print 'appname',appname
+                       if appname is None:
+                               self.session.nav.stopService()
+                               self.session.open( MessageBox, _("NO_GET_APPNAME\nPress exit!"), MessageBox.TYPE_ERROR)
+                               self.rlist[current_index]="fail"
+                               self.tunemsgtimer.stop()
+                       else:
+                               self.camstep=3
+                               self.camtimer.start(100,True)
+               elif self.camstep==3:
+                       slot = 1
+                       state = eDVBCI_UI.getInstance().getState(slot)
+                       print '-2-stat',state
+                       if state > 0:
+                               self.camstep=4
+                               self.camtimer.start(100,True)
+                       else:
+                               self.session.nav.stopService()
+                               self.session.open( MessageBox, _("CAM2_NOT_INSERTED\nPress exit!"), MessageBox.TYPE_ERROR)
+                               self.rlist[current_index]="fail"
+                               self.tunemsgtimer.stop()
+               elif self.camstep == 4:
+                       slot = 1
+                       appname = eDVBCI_UI.getInstance().getAppName(slot)
+                       print 'appname',appname
+                       if appname is None:
+                               self.session.nav.stopService()
+                               self.session.open( MessageBox, _("NO_GET_APPNAME\nPress exit!"), MessageBox.TYPE_ERROR)
+                               self.rlist[current_index]="fail"
+                               self.tunemsgtimer.stop()
+                       else:
+                               self.setSource()
+                               self.camstep = 5
+
+       def updateStatus(self):
+               current_index = self.currentindex
+               getTuneInfo=self.tuneInfo[current_index]
+               result = eSctest.getInstance().getFrontendstatus(getTuneInfo["slot"])
+               tunno = getTuneInfo["slot"]+1
+               hv = getTuneInfo["pol"]
+               if hv == "H":
+                       hv = "Hor"
+               elif hv == "V":
+                       hv = "Ver"
+               else :
+                       hv == ""
+
+               print "eSctest.getInstance().getFrontendstatus - %d"%result
+               if result == 0 or result == -1:
+                       self.tunerlock = 0
+                       self.tunemsgtimer.stop()
+                       self.session.nav.stopService()
+                       self.avswitch.setColorFormat(0)
+                       self.session.open( MessageBox, _("Tune%d %s Locking Fail..."%(tunno,hv)), MessageBox.TYPE_ERROR)
+                       self.rlist[current_index]="fail"
+               else :
+                       self.tunerlock = 1
+
+       def tuneback(self,yesno):
+               current_index=self.currentindex
+               self.session.nav.stopService() # try to disable foreground service
+               if yesno and self.tunerlock == 1:
+                       getTuneInfo=self.tuneInfo[current_index]
+                       if getTuneInfo["cam"] and self.camstep < 5: # need fix to depending about CAM exist
+                               self.rlist[current_index]="fail"
+                       else :
+                               self.rlist[current_index]="pass"
+               else:
+                       self.rlist[current_index]="fail"
+               if self.tuneInfo[current_index]["color"] == "YC":
+                       self.avswitch.setColorFormat(0)
+               self.resetSource()
+               self["resultlist"].updateList(self.rlist)
+
+       def tunemsg(self):
+               self.tuningtimer.stop()
+               self.session.openWithCallback(self.tuneback, TuneMessageBox, _("%s ok?" %(self["testlist"].getCurrent()[0])), MessageBox.TYPE_YESNO)
+
+       def setSourceVar(self):
+               self.input_pad_num=len(self.NimType)-1
+               if self.input_pad_num == 0:
+                       self.setTuner = 'A'
+               elif self.input_pad_num == 1:
+                       self.setTuner = 'B'
+               elif self.input_pad_num == 2:
+                       self.setTuner = 'C'
+
+#      ikseong - for 22000 tp
+       def setSource(self):
+# fix input source
+               inputname = ("/proc/stb/tsmux/input%d" % self.input_pad_num)
+               print "<setsource> inputname : ",inputname
+               fd=open(inputname,"w")
+               fd.write("CI0")
+               fd.close()
+# fix ci_input Tuner
+               filename = ("/proc/stb/tsmux/ci0_input")
+               fd = open(filename,'w')
+               fd.write(self.setTuner)
+               print "setTuner(CI0) : ",self.setTuner
+               fd.close()
+               print "CI loop test!!!!!!!!!!!!!!"
+
+       def resetSource(self):
+               inputname = ("/proc/stb/tsmux/input%d" % self.input_pad_num)
+               print "<resetsource> inputname : ",inputname
+               fd=open(inputname,"w")
+               fd.write(self.setTuner)
+               fd.close()
+               print "CI loop test end!!!!!!!!!!!!!!"
                
 session = None
 
                
 session = None
 
@@ -2105,3 +2931,6 @@ def main(session, servicelist, **kwargs):
 
 #def Plugins(**kwargs):
 #      return PluginDescriptor(name=_("Factory Test"), description="Test App for Factory", where = PluginDescriptor.WHERE_EXTENSIONSMENU, fnc=main)
 
 #def Plugins(**kwargs):
 #      return PluginDescriptor(name=_("Factory Test"), description="Test App for Factory", where = PluginDescriptor.WHERE_EXTENSIONSMENU, fnc=main)
+
+def Plugins(**kwargs):
+       return []