Merge branch 'FactoryTest' into vuplus_experimental
authorChang.H.S <jhs@dev3>
Wed, 5 Oct 2011 10:26:02 +0000 (19:26 +0900)
committerChang.H.S <jhs@dev3>
Wed, 5 Oct 2011 10:26:02 +0000 (19:26 +0900)
lib/driver/Makefile.am
lib/driver/memtest.cpp [deleted file]
lib/driver/memtest.h [deleted file]
lib/driver/sc_test.cpp [deleted file]
lib/driver/sc_test.h [deleted file]
lib/python/Plugins/SystemPlugins/FactoryTest/Makefile.am
lib/python/Plugins/SystemPlugins/FactoryTest/_sctest.so [new file with mode: 0755]
lib/python/Plugins/SystemPlugins/FactoryTest/plugin.py
lib/python/Plugins/SystemPlugins/FactoryTest/sctest.py [new file with mode: 0755]
lib/python/enigma_python.i

index 3412288..b498a6c 100755 (executable)
@@ -16,9 +16,7 @@ libenigma_driver_a_SOURCES = \
        rc.cpp \
        rcconsole.cpp \
        rcinput.cpp \
-       rfmod.cpp \
-       memtest.cpp \
-       sc_test.cpp
+       rfmod.cpp
 
 driverincludedir = $(pkgincludedir)/lib/driver
 driverinclude_HEADERS = \
diff --git a/lib/driver/memtest.cpp b/lib/driver/memtest.cpp
deleted file mode 100755 (executable)
index 94bc6aa..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-#include <lib/driver/memtest.h>\r
-#include <errno.h>\r
-#include <lib/base/eerror.h>\r
-#include <lib/base/estring.h>\r
-\r
-#define TESTSIZE 32*1024\r
-\r
-eMemtest *eMemtest::instance;\r
-\r
-eMemtest::eMemtest()\r
-{\r
-       instance = this;\r
-\r
-}\r
-\r
-eMemtest::~eMemtest()\r
-{\r
-       instance=NULL;\r
-\r
-}\r
-/*\r
-*      return value\r
-*      0 - ok\r
-*      1 - fail\r
-*/\r
-int eMemtest::dramtest()\r
-{\r
-       int result=0;\r
-       int i;\r
-       char memt[TESTSIZE];\r
-       eDebug("dramtest start");\r
-\r
-       \r
-       for(i=0;i<TESTSIZE;i++)\r
-               memt[i]=0x13;\r
-       \r
-       for(i=0;i<TESTSIZE;i++)\r
-       {\r
-               if(memt[i]!=0x13)\r
-               {\r
-                       result=1;\r
-                       break;\r
-               }\r
-       }\r
-       \r
-       return result;\r
-               \r
-}\r
-\r
-int eMemtest::flashtest()\r
-{\r
-       int result=0;\r
-       \r
-       return result;\r
-}\r
diff --git a/lib/driver/memtest.h b/lib/driver/memtest.h
deleted file mode 100755 (executable)
index a054eef..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifdef BUILD_VUPLUS /* ikseong  */\r
-#ifndef __memtest_h\r
-#define __memtest_h\r
-\r
-#include <lib/base/object.h>\r
-#include <lib/python/connections.h>\r
-\r
-class eMemtest\r
-{\r
-       static eMemtest *instance;\r
-public:\r
-       eMemtest();\r
-       ~eMemtest();\r
-       int dramtest();\r
-       int flashtest();\r
-       static eMemtest *getInstance() { return instance; }\r
-\r
-};\r
-#endif\r
-#endif\r
-\r
diff --git a/lib/driver/sc_test.cpp b/lib/driver/sc_test.cpp
deleted file mode 100755 (executable)
index cfb1fcd..0000000
+++ /dev/null
@@ -1,325 +0,0 @@
-#include <lib/dvb/dvb.h>\r
-#include <lib/dvb/frontendparms.h>\r
-\r
-#include <stdio.h>\r
-#include <stdlib.h>\r
-#include <limits.h>\r
-#include <string.h>\r
-#include <errno.h>\r
-#include <sys/ioctl.h>\r
-#include <sys/types.h>\r
-#include <sys/stat.h>\r
-#include <sys/poll.h>\r
-#include <fcntl.h>\r
-#include <time.h>\r
-#include <unistd.h>\r
-#include <termios.h>\r
-#include <lib/driver/sc_test.h>\r
-#include <errno.h>\r
-#include <lib/base/eerror.h>\r
-#include <lib/base/estring.h>\r
-\r
-#include <stdint.h>\r
-#include <sys/time.h>\r
-#include <poll.h>\r
-\r
-\r
-#define SC_CHECK_TIMEOUT       5\r
-#define SC_REMOVE_TIMEOUT      10\r
-\r
-\r
-#define SMART_CARD0    "/dev/sci0"                     /* upper smart card */\r
-#define SMART_CARD1    "/dev/sci1"                     /* lower smart card */\r
-\r
-#define SC_SUCCESS                     0\r
-#define NO_DEV_FOUND           -1\r
-#define SC_NOT_INSERTED        -2\r
-#define SC_NOT_VALID_ATR       -3\r
-#define SC_NOT_REMOVED         -4\r
-#define SC_READ_TIMEOUT        -5\r
-\r
-\r
-#define SCI_IOW_MAGIC                  's'\r
-\r
-/* ioctl cmd table */\r
-//#include "sci_global.h"\r
-#define IOCTL_SET_RESET                        _IOW(SCI_IOW_MAGIC, 1,  unsigned long)\r
-#define IOCTL_SET_MODES                        _IOW(SCI_IOW_MAGIC, 2,  SCI_MODES)\r
-#define IOCTL_GET_MODES                        _IOW(SCI_IOW_MAGIC, 3,  SCI_MODES)\r
-#define IOCTL_SET_PARAMETERS           _IOW(SCI_IOW_MAGIC, 4,  SCI_PARAMETERS)\r
-#define IOCTL_GET_PARAMETERS           _IOW(SCI_IOW_MAGIC, 5,  SCI_PARAMETERS)\r
-#define IOCTL_SET_CLOCK_START          _IOW(SCI_IOW_MAGIC, 6,  unsigned long)\r
-#define IOCTL_SET_CLOCK_STOP           _IOW(SCI_IOW_MAGIC, 7,  unsigned long)\r
-#define IOCTL_GET_IS_CARD_PRESENT      _IOW(SCI_IOW_MAGIC, 8,  unsigned long)\r
-#define IOCTL_GET_IS_CARD_ACTIVATED    _IOW(SCI_IOW_MAGIC, 9,  unsigned long)\r
-#define IOCTL_SET_DEACTIVATE           _IOW(SCI_IOW_MAGIC, 10, unsigned long)\r
-#define IOCTL_SET_ATR_READY            _IOW(SCI_IOW_MAGIC, 11, unsigned long)\r
-#define IOCTL_GET_ATR_STATUS           _IOW(SCI_IOW_MAGIC, 12, unsigned long)\r
-#define IOCTL_DUMP_REGS                        _IOW(SCI_IOW_MAGIC, 20, unsigned long)\r
-\r
-eSctest *eSctest::instance;\r
-\r
-eSctest::eSctest()\r
-{\r
-       instance = this;\r
-\r
-}\r
-\r
-eSctest::~eSctest()\r
-{\r
-       instance=NULL;\r
-\r
-}\r
-\r
-int eSctest::n_check_smart_card(char *dev_name)\r
-{\r
-       int fd;\r
-       struct pollfd pollfd;\r
-       unsigned char buf[64];\r
-       int cnt = 0;\r
-       int modem_status;\r
-       int count = SC_CHECK_TIMEOUT;\r
-       int readok=0;\r
-       \r
-       fd = ::open(dev_name, O_RDWR);\r
-       \r
-       if(fd < 0){\r
-               eDebug("sci0 open error\n");\r
-               return NO_DEV_FOUND;\r
-       }\r
-       else\r
-               eDebug("sci0 is opened fd : %d\n", fd);\r
-\r
-\r
-       ::ioctl(fd, IOCTL_GET_IS_CARD_PRESENT, &modem_status);\r
-\r
-       if( modem_status )\r
-               eDebug("card is now inserted\n");\r
-       else\r
-       {\r
-               eDebug("card is NOT inserted\n");\r
-               ::close(fd);\r
-               return SC_NOT_INSERTED;\r
-       }\r
-\r
-       /* now smart card is inserted, let's do reset */\r
-\r
-       ::ioctl(fd, IOCTL_SET_RESET, &modem_status);\r
-\r
-       /* now we can get the ATR */\r
-\r
-       pollfd.fd = fd;\r
-       pollfd.events = POLLIN|POLLOUT|POLLERR|POLLPRI;\r
-\r
-\r
-       while(poll(&pollfd, 1, 1000)>=0 && count--){\r
-\r
-               eDebug("pollfd.revents : 0x%x\n", pollfd.revents);\r
-               if(pollfd.revents & POLLIN){\r
-                       eDebug(">>read \n");\r
-                       cnt = read(fd, buf, 64);\r
-                       eDebug("<<read cnt:%d\n", cnt);                 \r
-                       if(cnt) \r
-                       {\r
-                               if(buf[0]==0x3b||buf[0]==0x3f)\r
-                               {\r
-                                       eDebug("read -%d : 0x%x",cnt, buf[0]);\r
-                                       readok = 1;\r
-                               }\r
-                               break;\r
-                       }\r
-                       else\r
-                               eDebug("no data\n");\r
-               }\r
-       }\r
-\r
-       ::close(fd);\r
-       \r
-       if (readok == 0) return SC_NOT_VALID_ATR;\r
-       if(!count) return SC_READ_TIMEOUT;\r
-       return SC_SUCCESS;\r
-}\r
-\r
-int eSctest::check_smart_card(char *dev_name)\r
-{\r
-       int fd;\r
-       struct pollfd pollfd;\r
-       unsigned char buf[64];\r
-       int cnt = 0;\r
-       int modem_status;\r
-       int count = SC_CHECK_TIMEOUT;\r
-       int readok=0;\r
-       fd = ::open(dev_name, O_RDWR);\r
-       \r
-       if(fd < 0){\r
-               eDebug("sci0 open error");\r
-               return NO_DEV_FOUND;\r
-       }\r
-       else\r
-               eDebug("sci0 is opened fd : %d", fd);\r
-\r
-       ::tcflush(fd, TCIFLUSH);\r
-\r
-       ::ioctl(fd, TIOCMGET, &modem_status);\r
-\r
-       if( modem_status & TIOCM_CAR)\r
-               eDebug("card is now inserted");\r
-       else\r
-       {\r
-               eDebug("card is NOT inserted");\r
-               close(fd);\r
-               return SC_NOT_INSERTED;\r
-       }\r
-\r
-       /* now smart card is inserted, let's do reset */\r
-\r
-       modem_status |= TIOCM_RTS;\r
-       ::ioctl(fd, TIOCMSET, &modem_status);\r
-\r
-       modem_status &= ~TIOCM_RTS;\r
-       ::ioctl(fd, TIOCMSET, &modem_status);\r
-\r
-\r
-       /* now we can get the ATR */\r
-\r
-       pollfd.fd = fd;\r
-       pollfd.events = POLLIN|POLLOUT|POLLERR|POLLPRI;\r
-\r
-\r
-       while(poll(&pollfd, 1, 1000)>=0 && count--){\r
-\r
-               eDebug("pollfd.revents : 0x%x %d", pollfd.revents,count);\r
-               if(pollfd.revents & POLLIN){\r
-                       eDebug(">>read ");\r
-                       cnt = ::read(fd, buf, 64);\r
-                       eDebug("<<read cnt:%d", cnt);\r
-                       if(cnt) \r
-                       {\r
-                               int i;\r
-                               for( i = 0 ; i < cnt ; i ++)\r
-                               {\r
-                                       if(buf[i]!=0x0)\r
-                                               readok = 1;\r
-                                       eDebug("read : 0x%x", buf[i]);\r
-                               }\r
-                               break;\r
-                       }\r
-                       else\r
-                               eDebug("no data");\r
-               }\r
-       }\r
-       \r
-       ::close(fd);\r
-       eDebug("readok = %d",readok);\r
-       if (readok == 0) return SC_NOT_VALID_ATR;\r
-       if(count<=0 ) return SC_READ_TIMEOUT;\r
-       return SC_SUCCESS;\r
-}\r
-int eSctest::eject_smart_card(char *dev_name)\r
-{\r
-       int fd;\r
-       struct pollfd pollfd;\r
-       unsigned char buf[64];\r
-       int cnt = 0;\r
-       int modem_status;\r
-       int count = SC_CHECK_TIMEOUT;\r
-       \r
-       fd = ::open(dev_name, O_RDWR);\r
-       \r
-       if(fd < 0){\r
-               eDebug("sci0 open error");\r
-               return NO_DEV_FOUND;\r
-       }\r
-       else\r
-               eDebug("sci0 is opened fd : %d", fd);\r
-\r
-       ::tcflush(fd, TCIFLUSH);\r
-\r
-       ::ioctl(fd, TIOCMGET, &modem_status);\r
-\r
-       if( modem_status & TIOCM_CAR)\r
-               eDebug("card is now inserted");\r
-       else\r
-       {\r
-               eDebug("card is NOT inserted");\r
-               close(fd);\r
-               return SC_NOT_INSERTED;\r
-       }\r
-       /* now we can get the ATR */\r
-\r
-       pollfd.fd = fd;\r
-       pollfd.events = POLLIN|POLLOUT|POLLERR|POLLPRI;\r
-\r
-       /* let's wait until card is removed for count secs.*/\r
-       count = SC_REMOVE_TIMEOUT;      \r
-       do{\r
-               ::ioctl(fd, TIOCMGET, &modem_status);\r
-               eDebug("modem_status : 0x%x %d", modem_status,count);\r
-               sleep(1);       \r
-\r
-       }\r
-       while((modem_status&TIOCM_CAR) && count--);\r
-\r
-       if(count<=0 ) return SC_NOT_REMOVED;\r
-       \r
-       ::close(fd);            \r
-       return SC_SUCCESS;\r
-}\r
-\r
-\r
-int eSctest::VFD_Open()\r
-{\r
-       VFD_fd = open("/dev/dbox/lcd0", O_RDWR);\r
-       return VFD_fd;\r
-}\r
-\r
-int eSctest::turnon_VFD()\r
-{ \r
-       ioctl(VFD_fd, 0xa0a0a0a0, 0);\r
-}\r
-\r
-int eSctest::turnoff_VFD()\r
-{\r
-       ioctl(VFD_fd, 0x01010101, 0);   \r
-}\r
-\r
-void eSctest::VFD_Close()\r
-{\r
-       close(VFD_fd);\r
-}\r
-\r
-extern int frontend0_fd;\r
-extern int frontend1_fd;\r
-\r
-int eSctest::getFrontendstatus(int fe)\r
-{\r
-       fe_status_t status;\r
-\r
-       int m_fd;\r
-       int res;\r
-\r
-       if (fe == 0)\r
-               m_fd = frontend0_fd;\r
-       else if (fe==1)\r
-               m_fd = frontend1_fd;\r
-       else \r
-               return -1;\r
-\r
-       if (m_fd < 0)\r
-       {\r
-               eDebug("%d open error ",fe);\r
-               return -1;\r
-       }\r
-       else\r
-               eDebug("%d open ok!!!! ",m_fd);\r
-       \r
-       if ( ioctl(m_fd, FE_READ_STATUS, &status) < 0)\r
-               eDebug("%d read error ",fe);            \r
-\r
-       if (status&FE_HAS_LOCK)\r
-               return 1;\r
-       else\r
-               return 0;\r
-\r
-}\r
-\r
diff --git a/lib/driver/sc_test.h b/lib/driver/sc_test.h
deleted file mode 100755 (executable)
index 8529120..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-#ifdef BUILD_VUPLUS /* ikseong  */
-#ifndef __sc_test_h
-#define __sc_test_h
-
-#include <lib/base/object.h>
-#include <lib/python/connections.h>
-
-class eSctest
-{
-       static eSctest *instance;
-protected:
-       int VFD_fd;
-       
-public:
-       eSctest();
-       ~eSctest();
-       int n_check_smart_card(char *dev_name);
-       int check_smart_card(char *dev_name);
-       int eject_smart_card(char *dev_name);
-       int VFD_Open();
-       void VFD_Close();
-       int turnon_VFD();
-       int turnoff_VFD();
-       int getFrontendstatus(int fe);
-       
-       static eSctest *getInstance() { return instance; }
-};
-
-#if !defined(_sci_global_h_)
-#define _sci_global_h_
-
-#define INT int
-#define UCHAR unsigned char
-#define ULONG unsigned long
-
-#define SCI_CLASS_A                 1   /* only 5V Vcc to Smart Card */
-#define SCI_CLASS_B                 2   /* only 3V Vcc to Smart Card */
-#define SCI_CLASS_AB                3   /* 5V or 3V Vcc to Smart Card */
-#define SCI_NUMBER_OF_CONTROLLERS   2   /* number of SCI controllers */
-
-#define SCI_BUFFER_SIZE             512
-
-#define SCI_CLOCK_STOP_DISABLED     0
-#define SCI_CLOCK_STOP_LOW          1
-#define SCI_CLOCK_STOP_HIGH         2
-
-#define SCI_MAX_ATR_SIZE            33
-
-#define SCI_MAX_F                   80000000
-#define SCI_MAX_ETU                 0xFFF
-#define SCI_MAX_WWT                 0xFFFFFFFF
-#define SCI_MAX_CWT                 0xFFFF
-#define SCI_MAX_BWT                 0xFFFFFFFF
-#define SCI_MAX_EGT                 0xFF
-
-#define SCI_MIN_F                   1000000
-#define SCI_MIN_ETU                 8
-#define SCI_MIN_WWT                 12
-#define SCI_MIN_CWT                 12
-#define SCI_MIN_BWT                 971
-#define SCI_MIN_EGT                 0
-
-#define SCI_SYNC                    0x00000001
-#define SCI_DATA_ANY                0x00000002
-
-/* Reserved for Future Use defined as 0 */
-#define RFU                         0
-
-/* error codes */
-typedef enum
-{
-    SCI_ERROR_OK = 0,
-    SCI_ERROR_DRIVER_NOT_INITIALIZED = -1691,
-    SCI_ERROR_FAIL,
-    SCI_ERROR_KERNEL_FAIL,
-    SCI_ERROR_NO_ATR,
-    SCI_ERROR_TS_CHARACTER_INVALID,
-    SCI_ERROR_LRC_FAIL,
-    SCI_ERROR_CRC_FAIL,
-    SCI_ERROR_LENGTH_FAIL,
-    SCI_ERROR_PARITY_FAIL,
-    SCI_ERROR_RX_OVERFLOW_FAIL,
-    SCI_ERROR_TX_OVERFLOW_FAIL,
-    SCI_ERROR_TX_UNDERRUN_FAIL,
-    SCI_ERROR_CARD_NOT_PRESENT,
-    SCI_ERROR_CARD_NOT_ACTIVATED,
-    SCI_ERROR_AWT_TIMEOUT,
-    SCI_ERROR_WWT_TIMEOUT,
-    SCI_ERROR_CWT_TIMEOUT,
-    SCI_ERROR_BWT_TIMEOUT,
-    SCI_ERROR_PARAMETER_OUT_OF_RANGE,
-    SCI_ERROR_TRANSACTION_ABORTED,
-    SCI_ERROR_CLOCK_STOP_DISABLED,
-    SCI_ERROR_TX_PENDING,
-    SCI_ERROR_ATR_PENDING
-}
-SCI_ERROR;
-
-/* SCI driver modes */
-typedef struct sci_modes
-{
-    INT emv2000;
-    INT dma;
-    INT man_act;
-    INT rw_mode;
-}
-SCI_MODES;
-
-/* SCI communication parameters */
-typedef struct sci_parameters
-{
-    UCHAR T;
-    ULONG FI;                          // Contains the clock rate conversion. This factor is used as an index into a table of maximum operating frequencies. When the smart card is reset, the smart card driver library uses this value to calculate a new clock frequency. 
-    ULONG ETU;                 //elementary time unit 
-    ULONG WWT;
-    ULONG CWT;
-    ULONG BWT;
-    ULONG EGT;                 //Extra Guard Time 
-    ULONG clock_stop_polarity;
-    UCHAR check;
-    UCHAR P;
-    UCHAR I;
-    UCHAR U;
-}
-SCI_PARAMETERS;
-
-/* SCI ATR status */
-typedef enum
-{
-    SCI_WITHOUT_ATR = 0,
-    SCI_ATR_READY
-}
-SCI_ATR_STATUS;
-
-#endif /* _sci_global_h_ */
-
-#endif
-#endif
-
index 9660052..f3b682d 100755 (executable)
@@ -3,4 +3,6 @@ installdir = $(pkglibdir)/python/Plugins/SystemPlugins/FactoryTest
 install_PYTHON =       \
        __init__.py \
        plugin.py \
-       testdb
+       testdb \
+       _sctest.so \
+       sctest.py
diff --git a/lib/python/Plugins/SystemPlugins/FactoryTest/_sctest.so b/lib/python/Plugins/SystemPlugins/FactoryTest/_sctest.so
new file mode 100755 (executable)
index 0000000..addf1ce
Binary files /dev/null and b/lib/python/Plugins/SystemPlugins/FactoryTest/_sctest.so differ
index 462b328..077dc67 100755 (executable)
@@ -16,12 +16,12 @@ from Components.HTMLComponent import HTMLComponent
 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 Tools.Directories import resolveFilename, SCOPE_SYSETC
+from Components.Sources.StaticText import StaticText
 
 class TestResultList(MenuList):
        def postWidgetCreate(self, instance):
@@ -35,15 +35,74 @@ class TestResultList(MenuList):
                self.list = list
                self.l.setList(self.list)
 
+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)
+
 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>"""
+
        def __init__(self, session):
 
                self["actions"] = NumberActionMap(["OkCancelActions","WizardActions","NumberActions","ColorActions",],
@@ -69,7 +128,7 @@ class FactoryTest(Screen):
                }, -2)
 
                Screen.__init__(self, session)
-               TESTPROGRAM_DATE = self.getImageVersion() +" (v1.00)"
+               TESTPROGRAM_DATE = self.getImageVersion() +" (v1.10)"
                TESTPROGRAM_VERSION = "Version 01.10"
 
                self.model = 0
@@ -148,8 +207,9 @@ class FactoryTest(Screen):
                self.createConfig()
                
                self.rlist = []
-               for x in range(self.menulength):
+               for x in range(self.menulength-1):
                        self.rlist.append((".."))
+               self.rlist.append((" "))
                self["resultlist"] = TestResultList(self.rlist)
 
                self.avswitch = AVSwitch()
@@ -279,10 +339,15 @@ class FactoryTest(Screen):
                        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={}
+                       tunelist = []
                        for (key, val) in self.NimType.items():
                                if val["type"].startswith("DVB-S"):
 # Chang : DVB -S setting diseqc A
@@ -294,7 +359,7 @@ class FactoryTest(Screen):
 #                                              current_index=4
                                        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
-                                       tlist.append((menuname,current_index))
+                                       tunelist.append((menuname,current_index))
                                        current_index+=1
 # Chang : DVB -S setting diseqc B
                                        getRatio = AspectRatio.pop(0)
@@ -307,7 +372,7 @@ class FactoryTest(Screen):
                                        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)
-                                       tlist.append((menuname,current_index))
+                                       tunelist.append((menuname,current_index))
                                        current_index+=1
 # Chang : DVB -T or DVB-C
                                elif val["type"].startswith("DVB-T") or val["type"].startswith("DVB-C"):
@@ -327,9 +392,17 @@ class FactoryTest(Screen):
                                                else:
                                                        camtest = False
                                                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
-                       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
@@ -517,7 +590,10 @@ class FactoryTest(Screen):
                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:
@@ -634,8 +710,10 @@ class FactoryTest(Screen):
                        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:
+               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
@@ -644,6 +722,16 @@ class FactoryTest(Screen):
                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")
@@ -833,7 +921,7 @@ class FactoryTest(Screen):
                                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()
@@ -862,7 +950,7 @@ class FactoryTest(Screen):
 
        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:
@@ -965,7 +1053,7 @@ class FactoryTest(Screen):
                self.agingtimer.start(2000,True)
 
        def agingCheck(self):
-               result = eSctest.getInstance().getFrontendstatus(0)             
+               result = eSctest.getInstance().getFrontendstatus(0)
                hv = "Ver"      
                print "eSctest.getInstance().getFrontendstatus - %d"%result
                if result == 0:
@@ -1104,28 +1192,28 @@ class FactoryTest(Screen):
                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
@@ -1137,15 +1225,14 @@ class FactoryTest(Screen):
        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:
@@ -1183,12 +1270,12 @@ class FactoryTest(Screen):
 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" />         
-                       <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="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):
@@ -1405,8 +1492,8 @@ class MacConfig(Screen):
 smartcardtest = 0
 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):
@@ -1427,7 +1514,6 @@ class SmartCardTest(Screen):
                global smartcardtest
                smartcardtest = 0
                self.model = stbmodel
-               self.Testmode = 1
                self.smartcardtimer.start(100,True)
 
        def check_smart_card(self):
@@ -1435,19 +1521,13 @@ class SmartCardTest(Screen):
                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:
-                       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
 
-               print result                    
+               print "check smartcard : ", result
                
                if result == 0:
                        print 'pass'
@@ -1497,8 +1577,8 @@ 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):
@@ -1581,8 +1661,8 @@ class FrontTest(Screen):
 
 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):
@@ -1790,7 +1870,12 @@ class FrontTest_uno(Screen):
                        self.frontturnonoff = 0
                        eSctest.getInstance().turnoff_VFD()
                self.fronttimer.start(1000,True)
-       
+
+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>"""
 
 rstest = 0
 
@@ -1798,8 +1883,8 @@ import select
 
 class RS232Test(Screen):
        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="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):
@@ -1848,9 +1933,19 @@ Agingresult = 0
 
 class AgingTest(Screen):
        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 position="center,center" size="350,150" title="Aging Test" >
+                       <widget name="text1" position="10,10" size="330,40" font="Regular;30" />
+                       <widget name="text2" position="10,60" size="330,40" font="Regular;30" />
+                       <!-- 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>
                </screen>"""
        step=1
        def __init__(self, session):
@@ -1928,6 +2023,297 @@ class AgingTest(Screen):
                Agingresult = 1
                self.session.nav.stopService() # try to disable foreground service
                self.close()
+
+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
 
diff --git a/lib/python/Plugins/SystemPlugins/FactoryTest/sctest.py b/lib/python/Plugins/SystemPlugins/FactoryTest/sctest.py
new file mode 100755 (executable)
index 0000000..6afa81d
--- /dev/null
@@ -0,0 +1,232 @@
+# This file was automatically generated by SWIG (http://www.swig.org).
+# Version 1.3.39
+#
+# Do not make changes to this file unless you know what you are doing--modify
+# the SWIG interface file instead.
+# This file is compatible with both classic and new-style classes.
+
+from sys import version_info
+if version_info >= (2,6,0):
+    def swig_import_helper():
+        from os.path import dirname
+        import imp
+        fp = None
+        try:
+            fp, pathname, description = imp.find_module('_sctest', [dirname(__file__)])
+        except ImportError:
+            import _sctest
+            return _sctest
+        if fp is not None:
+            try:
+                _mod = imp.load_module('_sctest', fp, pathname, description)
+            finally:
+                fp.close()
+                return _mod
+    _sctest = swig_import_helper()
+    del swig_import_helper
+else:
+    import _sctest
+del version_info
+try:
+    _swig_property = property
+except NameError:
+    pass # Python < 2.2 doesn't have 'property'.
+def _swig_setattr_nondynamic(self,class_type,name,value,static=1):
+    if (name == "thisown"): return self.this.own(value)
+    if (name == "this"):
+        if type(value).__name__ == 'SwigPyObject':
+            self.__dict__[name] = value
+            return
+    method = class_type.__swig_setmethods__.get(name,None)
+    if method: return method(self,value)
+    if (not static) or hasattr(self,name):
+        self.__dict__[name] = value
+    else:
+        raise AttributeError("You cannot add attributes to %s" % self)
+
+def _swig_setattr(self,class_type,name,value):
+    return _swig_setattr_nondynamic(self,class_type,name,value,0)
+
+def _swig_getattr(self,class_type,name):
+    if (name == "thisown"): return self.this.own()
+    method = class_type.__swig_getmethods__.get(name,None)
+    if method: return method(self)
+    raise AttributeError(name)
+
+def _swig_repr(self):
+    try: strthis = "proxy of " + self.this.__repr__()
+    except: strthis = ""
+    return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,)
+
+try:
+    _object = object
+    _newclass = 1
+except AttributeError:
+    class _object : pass
+    _newclass = 0
+
+
+FE_HAS_SIGNAL = _sctest.FE_HAS_SIGNAL
+FE_HAS_CARRIER = _sctest.FE_HAS_CARRIER
+FE_HAS_VITERBI = _sctest.FE_HAS_VITERBI
+FE_HAS_SYNC = _sctest.FE_HAS_SYNC
+FE_HAS_LOCK = _sctest.FE_HAS_LOCK
+FE_TIMEDOUT = _sctest.FE_TIMEDOUT
+FE_REINIT = _sctest.FE_REINIT
+class eSctest(_object):
+    __swig_setmethods__ = {}
+    __setattr__ = lambda self, name, value: _swig_setattr(self, eSctest, name, value)
+    __swig_getmethods__ = {}
+    __getattr__ = lambda self, name: _swig_getattr(self, eSctest, name)
+    __repr__ = _swig_repr
+    def __init__(self): 
+        this = _sctest.new_eSctest()
+        try: self.this.append(this)
+        except: self.this = this
+    __swig_destroy__ = _sctest.delete_eSctest
+    __del__ = lambda self : None;
+    def check_smart_card(self, *args): return _sctest.eSctest_check_smart_card(self, *args)
+    def VFD_Open(self): return _sctest.eSctest_VFD_Open(self)
+    def VFD_Close(self): return _sctest.eSctest_VFD_Close(self)
+    def turnon_VFD(self): return _sctest.eSctest_turnon_VFD(self)
+    def turnoff_VFD(self): return _sctest.eSctest_turnoff_VFD(self)
+    def getFrontendstatus(self, *args): return _sctest.eSctest_getFrontendstatus(self, *args)
+    __swig_getmethods__["getInstance"] = lambda x: _sctest.eSctest_getInstance
+    if _newclass:getInstance = staticmethod(_sctest.eSctest_getInstance)
+eSctest_swigregister = _sctest.eSctest_swigregister
+eSctest_swigregister(eSctest)
+
+def eSctest_getInstance():
+  return _sctest.eSctest_getInstance()
+eSctest_getInstance = _sctest.eSctest_getInstance
+
+SCI_CLASS_A = _sctest.SCI_CLASS_A
+SCI_CLASS_B = _sctest.SCI_CLASS_B
+SCI_CLASS_AB = _sctest.SCI_CLASS_AB
+SCI_NUMBER_OF_CONTROLLERS = _sctest.SCI_NUMBER_OF_CONTROLLERS
+SCI_BUFFER_SIZE = _sctest.SCI_BUFFER_SIZE
+SCI_CLOCK_STOP_DISABLED = _sctest.SCI_CLOCK_STOP_DISABLED
+SCI_CLOCK_STOP_LOW = _sctest.SCI_CLOCK_STOP_LOW
+SCI_CLOCK_STOP_HIGH = _sctest.SCI_CLOCK_STOP_HIGH
+SCI_MAX_ATR_SIZE = _sctest.SCI_MAX_ATR_SIZE
+SCI_MAX_F = _sctest.SCI_MAX_F
+SCI_MAX_ETU = _sctest.SCI_MAX_ETU
+SCI_MAX_WWT = _sctest.SCI_MAX_WWT
+SCI_MAX_CWT = _sctest.SCI_MAX_CWT
+SCI_MAX_BWT = _sctest.SCI_MAX_BWT
+SCI_MAX_EGT = _sctest.SCI_MAX_EGT
+SCI_MIN_F = _sctest.SCI_MIN_F
+SCI_MIN_ETU = _sctest.SCI_MIN_ETU
+SCI_MIN_WWT = _sctest.SCI_MIN_WWT
+SCI_MIN_CWT = _sctest.SCI_MIN_CWT
+SCI_MIN_BWT = _sctest.SCI_MIN_BWT
+SCI_MIN_EGT = _sctest.SCI_MIN_EGT
+SCI_SYNC = _sctest.SCI_SYNC
+SCI_DATA_ANY = _sctest.SCI_DATA_ANY
+RFU = _sctest.RFU
+SCI_ERROR_OK = _sctest.SCI_ERROR_OK
+SCI_ERROR_DRIVER_NOT_INITIALIZED = _sctest.SCI_ERROR_DRIVER_NOT_INITIALIZED
+SCI_ERROR_FAIL = _sctest.SCI_ERROR_FAIL
+SCI_ERROR_KERNEL_FAIL = _sctest.SCI_ERROR_KERNEL_FAIL
+SCI_ERROR_NO_ATR = _sctest.SCI_ERROR_NO_ATR
+SCI_ERROR_TS_CHARACTER_INVALID = _sctest.SCI_ERROR_TS_CHARACTER_INVALID
+SCI_ERROR_LRC_FAIL = _sctest.SCI_ERROR_LRC_FAIL
+SCI_ERROR_CRC_FAIL = _sctest.SCI_ERROR_CRC_FAIL
+SCI_ERROR_LENGTH_FAIL = _sctest.SCI_ERROR_LENGTH_FAIL
+SCI_ERROR_PARITY_FAIL = _sctest.SCI_ERROR_PARITY_FAIL
+SCI_ERROR_RX_OVERFLOW_FAIL = _sctest.SCI_ERROR_RX_OVERFLOW_FAIL
+SCI_ERROR_TX_OVERFLOW_FAIL = _sctest.SCI_ERROR_TX_OVERFLOW_FAIL
+SCI_ERROR_TX_UNDERRUN_FAIL = _sctest.SCI_ERROR_TX_UNDERRUN_FAIL
+SCI_ERROR_CARD_NOT_PRESENT = _sctest.SCI_ERROR_CARD_NOT_PRESENT
+SCI_ERROR_CARD_NOT_ACTIVATED = _sctest.SCI_ERROR_CARD_NOT_ACTIVATED
+SCI_ERROR_AWT_TIMEOUT = _sctest.SCI_ERROR_AWT_TIMEOUT
+SCI_ERROR_WWT_TIMEOUT = _sctest.SCI_ERROR_WWT_TIMEOUT
+SCI_ERROR_CWT_TIMEOUT = _sctest.SCI_ERROR_CWT_TIMEOUT
+SCI_ERROR_BWT_TIMEOUT = _sctest.SCI_ERROR_BWT_TIMEOUT
+SCI_ERROR_PARAMETER_OUT_OF_RANGE = _sctest.SCI_ERROR_PARAMETER_OUT_OF_RANGE
+SCI_ERROR_TRANSACTION_ABORTED = _sctest.SCI_ERROR_TRANSACTION_ABORTED
+SCI_ERROR_CLOCK_STOP_DISABLED = _sctest.SCI_ERROR_CLOCK_STOP_DISABLED
+SCI_ERROR_TX_PENDING = _sctest.SCI_ERROR_TX_PENDING
+SCI_ERROR_ATR_PENDING = _sctest.SCI_ERROR_ATR_PENDING
+class SCI_MODES(_object):
+    __swig_setmethods__ = {}
+    __setattr__ = lambda self, name, value: _swig_setattr(self, SCI_MODES, name, value)
+    __swig_getmethods__ = {}
+    __getattr__ = lambda self, name: _swig_getattr(self, SCI_MODES, name)
+    __repr__ = _swig_repr
+    __swig_setmethods__["emv2000"] = _sctest.SCI_MODES_emv2000_set
+    __swig_getmethods__["emv2000"] = _sctest.SCI_MODES_emv2000_get
+    if _newclass:emv2000 = _swig_property(_sctest.SCI_MODES_emv2000_get, _sctest.SCI_MODES_emv2000_set)
+    __swig_setmethods__["dma"] = _sctest.SCI_MODES_dma_set
+    __swig_getmethods__["dma"] = _sctest.SCI_MODES_dma_get
+    if _newclass:dma = _swig_property(_sctest.SCI_MODES_dma_get, _sctest.SCI_MODES_dma_set)
+    __swig_setmethods__["man_act"] = _sctest.SCI_MODES_man_act_set
+    __swig_getmethods__["man_act"] = _sctest.SCI_MODES_man_act_get
+    if _newclass:man_act = _swig_property(_sctest.SCI_MODES_man_act_get, _sctest.SCI_MODES_man_act_set)
+    __swig_setmethods__["rw_mode"] = _sctest.SCI_MODES_rw_mode_set
+    __swig_getmethods__["rw_mode"] = _sctest.SCI_MODES_rw_mode_get
+    if _newclass:rw_mode = _swig_property(_sctest.SCI_MODES_rw_mode_get, _sctest.SCI_MODES_rw_mode_set)
+    def __init__(self): 
+        this = _sctest.new_SCI_MODES()
+        try: self.this.append(this)
+        except: self.this = this
+    __swig_destroy__ = _sctest.delete_SCI_MODES
+    __del__ = lambda self : None;
+SCI_MODES_swigregister = _sctest.SCI_MODES_swigregister
+SCI_MODES_swigregister(SCI_MODES)
+
+class SCI_PARAMETERS(_object):
+    __swig_setmethods__ = {}
+    __setattr__ = lambda self, name, value: _swig_setattr(self, SCI_PARAMETERS, name, value)
+    __swig_getmethods__ = {}
+    __getattr__ = lambda self, name: _swig_getattr(self, SCI_PARAMETERS, name)
+    __repr__ = _swig_repr
+    __swig_setmethods__["T"] = _sctest.SCI_PARAMETERS_T_set
+    __swig_getmethods__["T"] = _sctest.SCI_PARAMETERS_T_get
+    if _newclass:T = _swig_property(_sctest.SCI_PARAMETERS_T_get, _sctest.SCI_PARAMETERS_T_set)
+    __swig_setmethods__["FI"] = _sctest.SCI_PARAMETERS_FI_set
+    __swig_getmethods__["FI"] = _sctest.SCI_PARAMETERS_FI_get
+    if _newclass:FI = _swig_property(_sctest.SCI_PARAMETERS_FI_get, _sctest.SCI_PARAMETERS_FI_set)
+    __swig_setmethods__["ETU"] = _sctest.SCI_PARAMETERS_ETU_set
+    __swig_getmethods__["ETU"] = _sctest.SCI_PARAMETERS_ETU_get
+    if _newclass:ETU = _swig_property(_sctest.SCI_PARAMETERS_ETU_get, _sctest.SCI_PARAMETERS_ETU_set)
+    __swig_setmethods__["WWT"] = _sctest.SCI_PARAMETERS_WWT_set
+    __swig_getmethods__["WWT"] = _sctest.SCI_PARAMETERS_WWT_get
+    if _newclass:WWT = _swig_property(_sctest.SCI_PARAMETERS_WWT_get, _sctest.SCI_PARAMETERS_WWT_set)
+    __swig_setmethods__["CWT"] = _sctest.SCI_PARAMETERS_CWT_set
+    __swig_getmethods__["CWT"] = _sctest.SCI_PARAMETERS_CWT_get
+    if _newclass:CWT = _swig_property(_sctest.SCI_PARAMETERS_CWT_get, _sctest.SCI_PARAMETERS_CWT_set)
+    __swig_setmethods__["BWT"] = _sctest.SCI_PARAMETERS_BWT_set
+    __swig_getmethods__["BWT"] = _sctest.SCI_PARAMETERS_BWT_get
+    if _newclass:BWT = _swig_property(_sctest.SCI_PARAMETERS_BWT_get, _sctest.SCI_PARAMETERS_BWT_set)
+    __swig_setmethods__["EGT"] = _sctest.SCI_PARAMETERS_EGT_set
+    __swig_getmethods__["EGT"] = _sctest.SCI_PARAMETERS_EGT_get
+    if _newclass:EGT = _swig_property(_sctest.SCI_PARAMETERS_EGT_get, _sctest.SCI_PARAMETERS_EGT_set)
+    __swig_setmethods__["clock_stop_polarity"] = _sctest.SCI_PARAMETERS_clock_stop_polarity_set
+    __swig_getmethods__["clock_stop_polarity"] = _sctest.SCI_PARAMETERS_clock_stop_polarity_get
+    if _newclass:clock_stop_polarity = _swig_property(_sctest.SCI_PARAMETERS_clock_stop_polarity_get, _sctest.SCI_PARAMETERS_clock_stop_polarity_set)
+    __swig_setmethods__["check"] = _sctest.SCI_PARAMETERS_check_set
+    __swig_getmethods__["check"] = _sctest.SCI_PARAMETERS_check_get
+    if _newclass:check = _swig_property(_sctest.SCI_PARAMETERS_check_get, _sctest.SCI_PARAMETERS_check_set)
+    __swig_setmethods__["P"] = _sctest.SCI_PARAMETERS_P_set
+    __swig_getmethods__["P"] = _sctest.SCI_PARAMETERS_P_get
+    if _newclass:P = _swig_property(_sctest.SCI_PARAMETERS_P_get, _sctest.SCI_PARAMETERS_P_set)
+    __swig_setmethods__["I"] = _sctest.SCI_PARAMETERS_I_set
+    __swig_getmethods__["I"] = _sctest.SCI_PARAMETERS_I_get
+    if _newclass:I = _swig_property(_sctest.SCI_PARAMETERS_I_get, _sctest.SCI_PARAMETERS_I_set)
+    __swig_setmethods__["U"] = _sctest.SCI_PARAMETERS_U_set
+    __swig_getmethods__["U"] = _sctest.SCI_PARAMETERS_U_get
+    if _newclass:U = _swig_property(_sctest.SCI_PARAMETERS_U_get, _sctest.SCI_PARAMETERS_U_set)
+    def __init__(self): 
+        this = _sctest.new_SCI_PARAMETERS()
+        try: self.this.append(this)
+        except: self.this = this
+    __swig_destroy__ = _sctest.delete_SCI_PARAMETERS
+    __del__ = lambda self : None;
+SCI_PARAMETERS_swigregister = _sctest.SCI_PARAMETERS_swigregister
+SCI_PARAMETERS_swigregister(SCI_PARAMETERS)
+
+SCI_WITHOUT_ATR = _sctest.SCI_WITHOUT_ATR
+SCI_ATR_READY = _sctest.SCI_ATR_READY
+
+
index 2816e09..7e250cf 100755 (executable)
@@ -99,8 +99,6 @@ is usually caused by not marking PSignals as immutable.
 #include <lib/dvb_ci/dvbci_ui.h>
 #include <lib/python/python.h>
 #include <lib/gdi/picload.h>
-#include <lib/driver/memtest.h>
-#include <lib/driver/sc_test.h>
 %}
 
 %feature("ref")   iObject "$this->AddRef(); /* eDebug(\"AddRef (%s:%d)!\", __FILE__, __LINE__); */ "
@@ -219,8 +217,6 @@ typedef long time_t;
 %include <lib/dvb/db.h>
 %include <lib/python/python.h>
 %include <lib/gdi/picload.h>
-%include <lib/driver/memtest.h>
-%include <lib/driver/sc_test.h>
 /**************  eptr  **************/
 
 /**************  signals  **************/