patch for vuplus
authorikseong <ikseong@dev03-server.(none)>
Fri, 14 May 2010 01:53:49 +0000 (10:53 +0900)
committerikseong <ikseong@dev03-server.(none)>
Fri, 14 May 2010 02:03:52 +0000 (11:03 +0900)
lib/driver/memtest.cpp [new file with mode: 0755]
lib/driver/memtest.h [new file with mode: 0755]
lib/driver/sc_test.cpp [new file with mode: 0755]
lib/driver/sc_test.h [new file with mode: 0755]
lib/python/Plugins/SystemPlugins/FactoryTest/Makefile.am [new file with mode: 0755]
lib/python/Plugins/SystemPlugins/FactoryTest/__init__.py [new file with mode: 0755]
lib/python/Plugins/SystemPlugins/FactoryTest/plugin.py [new file with mode: 0755]
lib/python/Plugins/SystemPlugins/FactoryTest/testdb [new file with mode: 0755]

diff --git a/lib/driver/memtest.cpp b/lib/driver/memtest.cpp
new file mode 100755 (executable)
index 0000000..94bc6aa
--- /dev/null
@@ -0,0 +1,55 @@
+#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
new file mode 100755 (executable)
index 0000000..a054eef
--- /dev/null
@@ -0,0 +1,21 @@
+#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
new file mode 100755 (executable)
index 0000000..cfb1fcd
--- /dev/null
@@ -0,0 +1,325 @@
+#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
new file mode 100755 (executable)
index 0000000..8529120
--- /dev/null
@@ -0,0 +1,139 @@
+#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
+
diff --git a/lib/python/Plugins/SystemPlugins/FactoryTest/Makefile.am b/lib/python/Plugins/SystemPlugins/FactoryTest/Makefile.am
new file mode 100755 (executable)
index 0000000..508a02b
--- /dev/null
@@ -0,0 +1,6 @@
+installdir = $(LIBDIR)/enigma2/python/Plugins/SystemPlugins/FactoryTest
+
+install_PYTHON =       \
+       __init__.py \
+       plugin.py \
+       testdb
diff --git a/lib/python/Plugins/SystemPlugins/FactoryTest/__init__.py b/lib/python/Plugins/SystemPlugins/FactoryTest/__init__.py
new file mode 100755 (executable)
index 0000000..e69de29
diff --git a/lib/python/Plugins/SystemPlugins/FactoryTest/plugin.py b/lib/python/Plugins/SystemPlugins/FactoryTest/plugin.py
new file mode 100755 (executable)
index 0000000..7ee347f
--- /dev/null
@@ -0,0 +1,1776 @@
+from Screens.Screen import Screen
+from Screens.MessageBox import MessageBox
+from Plugins.Plugin import PluginDescriptor
+from Components.MenuList import MenuList
+from Tools.Directories import fileExists
+from Components.ServiceList import ServiceList
+from Components.ActionMap import ActionMap,NumberActionMap
+from Components.config import config
+from os import system,access,F_OK,R_OK,W_OK
+from Components.Label import Label
+from Components.AVSwitch import AVSwitch
+from time import sleep
+from Components.Console import Console
+from enigma import eTimer
+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 enigma import eDVBDB
+from Components.NimManager import nimmanager
+from enigma import eDVBCI_UI,eDVBCIInterfaces
+
+class TestResultList(HTMLComponent, GUIComponent):
+       def __init__(self, source):
+               GUIComponent.__init__(self)
+               self.l = eListboxPythonStringContent()
+               self.list = source
+               self.l.setList(self.list)
+               self.l.setFont( gFont("Regular", 23))
+               self.l.setItemHeight(25)
+
+       GUI_WIDGET = eListbox
+
+       def postWidgetCreate(self, instance):
+               self.instance.setSelectionEnable(0)
+               self.instance.setContent(self.l)
+
+       def updateList(self,list):
+               self.l.setList(list)
+
+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>"""
+       def __init__(self, session):
+
+               self["actions"] = NumberActionMap(["OkCancelActions","WizardActions","NumberActions",],
+               {
+                       "left": self.nothing,
+                       "right":self.nothing,
+                       "ok": self.TestAction,
+                       "testexit": self.keyCancel,
+                       "agingstart": self.Agingmode,
+                       "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)
+               TESTPROGRAM_DATE = "2010-03-22"
+               TESTPROGRAM_VERSION = "Version 00.01"
+
+               self.model = 0
+               self.getModelInfo()
+               
+               self["testdate"]=Label((TESTPROGRAM_DATE))
+               self["testversion"]=Label(("Loading version..."))
+               self["mactext"]=Label(("Loading mac address..."))
+               nimConfig = nimmanager.getNimConfig(0)
+               nimConfig.configMode.slot_id=0
+               nimConfig.configMode.value= "simple"
+               nimConfig.diseqcMode.value="diseqc_a_b"
+               nimConfig.diseqcA.value="160"
+               nimConfig.diseqcB.value="100"
+               if self.model == 0:
+                       nimConfig = nimmanager.getNimConfig(1)
+                       nimConfig.configMode.slot_id=1          
+                       nimConfig.configMode.value= "simple"
+                       nimConfig.diseqcMode.value="diseqc_a_b"
+                       nimConfig.diseqcA.value="130"
+                       nimConfig.diseqcB.value="192"
+               nimmanager.sec.update()         
+               
+               system("cp /usr/lib/enigma2/python/Plugins/SystemPlugins/FactoryTest/testdb /etc/enigma2/lamedb")
+               db = eDVBDB.getInstance()
+               db.reloadServicelist()
+
+               tlist = []
+               if self.model == 0:
+                       self.satetestIndex=0
+                       tlist.append((" 0. Sata & extend hdd test",self.satetestIndex))
+                       self.usbtestIndex=1
+                       tlist.append((" 1. USB test",self.usbtestIndex))
+                       self.fronttestIndex=2
+                       tlist.append((" 2. Front test",self.fronttestIndex))
+                       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))
+                       self.tuner1_2testIndex=5
+                       tlist.append((" 5. T1 V 22k o 16:9 RGB",self.tuner1_2testIndex))
+                       self.tuner2_1testIndex=6
+                       tlist.append((" 6. T2 H 22k x 4:3 YC",self.tuner2_1testIndex))
+                       self.tuner2_2testIndex=7
+                       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
+                       tlist.append((" 9. RS232 test",self.rs232testIndex))
+                       self.ethernettestIndex=10
+                       tlist.append(("10. Ethernet & mac test",self.ethernettestIndex))
+#              tlist.append(("11. DRAM test",11))
+#              tlist.append(("12. Flash test",12))
+#              tlist.append(("13. DRAM+Flash test",13))
+                       self.fdefaultIndex=11
+                       tlist.append(("11. Factory default",self.fdefaultIndex))
+                       self.shotdownIndex=12
+                       tlist.append(("12. Shutdown",self.shotdownIndex))
+               elif self.model == 1:
+#                      tlist.append((" 0. Sata & extend hdd test",self.satetestIndex=0))
+                       self.satetestIndex = -1
+                       self.scarttestIndex = -1
+
+
+
+                       self.usbtestIndex=0
+                       tlist.append((" 0. USB test",self.usbtestIndex))
+                       self.fronttestIndex=1
+                       tlist.append((" 1. Front test",self.fronttestIndex))
+                       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))
+                       self.tuner1_2testIndex=4
+                       tlist.append((" 4. T1 V 22k o 16:9 RGB CAM",self.tuner1_2testIndex))
+                       self.tuner2_2testIndex=4
+#                      tlist.append((" 6. T2 H 22k x 4:3 YC",self.tuner2_1testIndex=6))
+#                      tlist.append((" 7. T2 V 22k o 16:9 CVBS CAM",self.tuner2_2testIndex=7))
+#                      tlist.append((" 8. VCR Scart loop",self.scarttestIndex=8))
+                       self.rs232testIndex=5
+                       tlist.append((" 5. RS232 test",self.rs232testIndex))
+                       self.ethernettestIndex=6
+                       tlist.append((" 6. Ethernet & mac test",self.ethernettestIndex))
+#              tlist.append(("11. DRAM test",11))
+#              tlist.append(("12. Flash test",12))
+#              tlist.append(("13. DRAM+Flash test",13))
+                       self.fdefaultIndex=7
+                       tlist.append((" 7. Factory default",self.fdefaultIndex))
+                       self.shotdownIndex=8
+                       tlist.append((" 8. Shutdown",self.shotdownIndex))
+               self.menulength= len(tlist)-1
+               self["testlist"] = MenuList(tlist)
+               self.rlist = []
+#              for x in range(15):
+#              for x in range(12):
+               for x in range(self.menulength):
+                       self.rlist.append((".."))
+               self["resultlist"] = TestResultList(self.rlist)
+               self.NetworkState = 0
+               self.first = 0
+
+               self.avswitch = AVSwitch()
+               self.memTest = eMemtest()
+               self.scTest= eSctest()
+               
+               self.feid=0
+               self.agingmode=0
+               self.testing = 0
+
+               self.servicelist = ServiceList()
+               self.oldref = session.nav.getCurrentlyPlayingServiceReference()
+               print "oldref",self.oldref
+               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.getmacaddr()
+               self.getversion()
+               
+               self.tunerlock = 0
+               self.tuningtimer = eTimer()
+               self.tuningtimer.callback.append(self.updateStatus)
+
+               self.satatry = 8
+               self.satatimer = eTimer()
+               self.satatimer.callback.append(self.sataCheck)
+
+       def getModelInfo(self):
+               info = open("/proc/stb/info/version").read()
+               print info,info[:2]
+               if info[:2] == "14":
+                       self.model = 1
+               elif info[:2] == "12":
+                       self.model= 0
+               
+
+       def nothing(self):
+               print "nothing"
+
+       def keyup(self):
+               if self.testing==1:
+                       return
+               if self["testlist"].getCurrent()[1]==0:
+                       self["testlist"].moveToIndex(self.menulength)
+               else:
+                       self["testlist"].up()
+
+
+       def keydown(self):
+               if self.testing==1:
+                       return
+               if self["testlist"].getCurrent()[1]==(self.menulength):
+                       self["testlist"].moveToIndex(0)
+               else:
+                       self["testlist"].down()
+
+       def numberaction(self, number):
+               if self.testing==1:
+                       return
+               index = int(number)
+               self["testlist"].moveToIndex(index)
+
+
+       def updateStatus(self):
+               index = self["testlist"].getCurrent()[1]
+               if index ==self.tuner1_1testIndex or index==self.tuner1_2testIndex:
+                       tunno = 1
+                       result = eSctest.getInstance().getFrontendstatus(0)
+               else:
+                       tunno = 2
+                       result = eSctest.getInstance().getFrontendstatus(1)
+
+               if self.agingmode == 1:
+                       tunno = 1
+                       result = eSctest.getInstance().getFrontendstatus(0)
+                       hv = "Ver"
+                       
+               if index == self.tuner1_2testIndex or index==self.tuner2_2testIndex:
+                       hv = "Ver"
+               else:
+                       hv = "Hor"
+                       
+               print "eSctest.getInstance().getFrontendstatus - %d"%result
+               if result == 0:
+                       self.tunerlock = 0
+                       self.tunemsgtimer.stop()
+                       self.session.nav.stopService()
+                       self.session.open( MessageBox, _("Tune%d %s Locking Fail..."%(tunno,hv)), MessageBox.TYPE_ERROR)        
+                       if self.agingmode==0:
+                               self.rlist[self["testlist"].getCurrent()[1]]="fail"
+                       self.agingmode = 0
+               else :
+                       self.tunerlock = 1
+                       if self.agingmode==1:
+                               self.session.openWithCallback(self.checkaging,AgingTest)                        
+
+       def getversion(self):
+               try:
+                       fd = open("/proc/stb/info/version","r")
+                       version = fd.read()
+                       self["testversion"].setText(("Version %s"%version))
+               except:
+                       self["testversion"].setText(("Version no load"))
+                       
+
+       def readmac(self, result, retval,extra_args=None):
+               (statecallback) = extra_args
+               if self.macConsole is not None:
+                       if retval == 0:
+                               self.macConsole = None
+                               content =result.split()
+                               self["mactext"].setText(("MAC : "+content[10]))
+       
+       def getmacaddr(self):
+               try:
+                       cmd = "ip -o addr"
+                       self.macConsole = Console()     
+                       self.macConsole.ePopen(cmd, self.readmac)       
+#                      self["stattext"].setText((macaddr))
+               except:
+                       return
+               
+       def TestAction(self):
+#
+#                      tlist.append((" 0. Sata & extend hdd test",self.satetestIndex=0))
+#                      tlist.append((" 1. USB test",self.usbtestIndex=1))
+#                      tlist.append((" 2. Front test",self.fronttestIndex=2))
+#                      tlist.append((" 3. Smartcard test",self.smarttestIndex=3))
+#                      tlist.append((" 4. T1 H 22K x 4:3 CVBS",self.tuner1_1testIndex=4))
+#                      tlist.append((" 5. T1 V 22k o 16:9 RGB",self.tuner1_2testIndex=5))
+#                      tlist.append((" 6. T2 H 22k x 4:3 YC",self.tuner2_1testIndex=6))
+#                      tlist.append((" 7. T2 V 22k o 16:9 CVBS CAM",self.tuner2_2testIndex=7))
+#                      tlist.append((" 8. VCR Scart loop",self.scarttestIndex=8))
+#                      tlist.append((" 9. RS232 test",self.rs232testIndex=9))
+#                      tlist.append(("10. Ethernet & mac test",self.ethernettestIndex=10))
+#              tlist.append(("11. DRAM test",11))
+#              tlist.append(("12. Flash test",12))
+#              tlist.append(("13. DRAM+Flash test",13))
+#                      tlist.append(("11. Factory default",self.fdefaultIndex=11))
+#                      tlist.append(("12. Shutdown",self.shotdownIndex=12))
+#
+               if self.testing==1:
+                       return
+               print "line - ",self["testlist"].getCurrent()[1]
+               index = self["testlist"].getCurrent()[1]
+               result = 0
+               if index==self.satetestIndex:
+                       self.Test0()
+               elif index==self.fronttestIndex:
+                       self.Test1()
+               elif index>=self.tuner1_1testIndex and index<=self.tuner2_2testIndex:
+                       self.TestTune(index)
+               elif index==self.scarttestIndex:
+                       self.Test6()
+               elif index==self.rs232testIndex:
+                       self.Test7()
+               elif index==self.usbtestIndex:
+                       self.Test8()
+               elif index==self.ethernettestIndex:
+                       self.Test9()
+               elif index == self.smarttestIndex:
+                       self.Test10()
+#              elif index == 11:
+#                      self.Test11()
+#              elif index ==12:
+#                      self.Test12()
+#              elif index==13:
+#                      self.Test13()
+               elif index==self.fdefaultIndex:
+                       self.Test14()
+               elif index==self.shotdownIndex:
+                       self.Test15()
+
+
+       def Test0(self):
+               self.satatry = 8
+               self.satatimer.start(100,True)
+
+       def sataCheck(self):
+#              print "try", self.satatry
+               if self.satatry == 0:
+                       displayerror = 1
+               else:
+                       self.rlist[self["testlist"].getCurrent()[1]]="try %d"%self.satatry
+                       self["resultlist"].updateList(self.rlist)
+                       self.satatry -= 1
+                       displayerror = 0
+               result = 0
+               checktab=0
+               try:
+                       mtab = open('/etc/mtab','r')
+                       while(1):
+                               disk = mtab.readline().split(' ')
+                               if len(disk) < 2:
+                                       break
+                               if disk[1].startswith('/media/hdd'):
+                                       checktab+=1
+                               elif disk[1].startswith('/media/sdb1'):
+                                       checktab+=10
+                               if checktab==11:
+                                       break
+               except:
+                       checktab = 0
+
+               if checktab==0:
+                       if displayerror==1:
+                               self.session.open( MessageBox, _("Sata & extend hdd test error"), MessageBox.TYPE_ERROR)
+                               self.rlist[self["testlist"].getCurrent()[1]]="fail"
+                       else:
+                               self.satatimer.start(1100,True)
+                       return
+               elif checktab < 11:
+                       if displayerror==1:
+                               self.session.open( MessageBox, _("one hdd test error"), MessageBox.TYPE_ERROR)
+                               self.rlist[self["testlist"].getCurrent()[1]]="fail"
+                       else:
+                               self.satatimer.start(1100,True)
+                       return
+
+               try:
+                       if fileExists("/media/sdb1"):
+                               if access("/media/sdb1",F_OK|R_OK|W_OK):
+                                       dummy=open("/media/sdb1/dummy03","w")
+                                       dummy.write("complete")
+                                       dummy.close()
+                                       dummy=open("/media/sdb1/dummy03","r")
+                                       if dummy.readline()=="complete":
+                                               print "complete"
+                                       else:
+                                               result = 1
+                                       dummy.close()
+                                       system("rm /media/sdb1/dummy03")
+                               else:
+                                       result = 1
+                       else:
+                               result = 1
+               except:
+                       result = 1
+               try:
+                       if fileExists("/media/hdd"):
+                               if access("/media/hdd",F_OK|R_OK|W_OK):
+                                       dummy=open("/media/hdd/dummy03","w")
+                                       dummy.write("complete")
+                                       dummy.close()
+                                       dummy=open("/media/hdd/dummy03","r")
+                                       if dummy.readline()=="complete":
+                                               print "complete"
+                                       else:
+                                               result += 1
+                                       dummy.close()
+                                       system("rm /media/hdd/dummy03")
+                               else:
+                                       result = 1
+                       else:
+                               result += 1
+               except:
+                       result += 1
+                       
+               if result ==0:
+                       self.session.open( MessageBox, _("Sata & extend hdd test pass"), MessageBox.TYPE_INFO)
+                       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.rlist[self["testlist"].getCurrent()[1]]="fail"
+                       self.satatimer.start(1100,True)
+               else:
+                       if displayerror==1:
+                               self.session.open( MessageBox, _("Sata & extend hdd test error"), MessageBox.TYPE_ERROR)
+                               self.rlist[self["testlist"].getCurrent()[1]]="fail"
+                       self.satatimer.start(1100,True)
+
+       def Test1(self):
+               if self.model== 0:
+                       self.session.openWithCallback(self.displayresult ,FrontTest)
+               elif self.model == 1:
+                       self.session.openWithCallback(self.displayresult ,FrontTest_solo)               
+
+       def displayresult(self):
+               global fronttest
+               if fronttest == 1:
+                       self.rlist[self["testlist"].getCurrent()[1]]="pass"
+               else:
+                       self.rlist[self["testlist"].getCurrent()[1]]="fail"
+
+       INTERNAL_PID_STATUS_NOOP = 0
+       INTERNAL_PID_STATUS_WAITING = 1
+       INTERNAL_PID_STATUS_SUCCESSFUL = 2
+       INTERNAL_PID_STATUS_FAILED = 3
+
+       def TestTune(self,index):       
+               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
+               if index==self.tuner1_1testIndex:
+                       ref.setData(0,1)
+                       ref.setData(1,0x6D3)
+                       ref.setData(2,0x3)
+                       ref.setData(3,0xA4)
+                       ref.setData(4,0xA00000)
+                       self.session.nav.playService(ref)
+                       self.avswitch.setColorFormat(0)
+                       self.avswitch.setAspectRatio(0)
+               elif index==self.tuner1_2testIndex:
+                       if self.model == 1:
+                               self.camstep = 1
+                               self.camtimer.start(100,True)
+                       ref.setData(0,0x19)
+                       ref.setData(1,0x1325)
+                       ref.setData(2,0x3ef)
+                       ref.setData(3,0x1)
+                       ref.setData(4,0x64af79)
+#              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)
+                       self.avswitch.setColorFormat(1)
+                       self.avswitch.setAspectRatio(6)                 
+               elif index==self.tuner2_1testIndex:
+#                      self.camstep = 1
+#                      self.camtimer.start(100,True)
+                       ref.setData(0,1)
+                       ref.setData(1,0x6D3)
+                       ref.setData(2,0x3)
+                       ref.setData(3,0xA4)
+                       ref.setData(4,0x820000)
+                       self.session.nav.playService(ref)
+                       self.avswitch.setColorFormat(2)                 
+                       self.avswitch.setAspectRatio(0)                 
+               elif index==self.tuner2_2testIndex:
+                       self.camstep = 1
+                       self.camtimer.start(100,True)
+#                      ref.setData(0,0x19)
+#                      ref.setData(1,0x83)
+#                      ref.setData(2,0x6)
+#                      ref.setData(3,0x85)
+#              ref.setData(4,0xC00000)
+#      ikseong - for 22000 tp ( /home/ikseong/share/lamedb_ORF)
+                       ref.setData(0,0x19)
+                       ref.setData(1,0x1325)
+                       ref.setData(2,0x3ef)
+                       ref.setData(3,0x1)
+                       ref.setData(4,0xC00000)
+                       self.session.nav.playService(ref)
+                       self.avswitch.setColorFormat(0)                 
+                       self.avswitch.setAspectRatio(6)
+               self.tuningtimer.start(2000,True)
+               self.tunemsgtimer.start(3000, True)
+
+       def cam_state(self):
+               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, _("NO_CAM1_NOT_INSERTED"), MessageBox.TYPE_ERROR)
+                               self.rlist[self["testlist"].getCurrent()[1]]="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)
+                       print 'appname',appname
+                       if appname is None:
+                               self.session.nav.stopService()
+                               self.session.open( MessageBox, _("NO_GET_APPNAME"), MessageBox.TYPE_ERROR)
+                               self.rlist[self["testlist"].getCurrent()[1]]="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, _("NO_CAM2_NOT_INSERTED"), MessageBox.TYPE_ERROR)
+                               self.rlist[self["testlist"].getCurrent()[1]]="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)
+                       print 'appname',appname
+                       if appname is None:
+                               self.session.nav.stopService()
+                               self.session.open( MessageBox, _("NO_GET_APPNAME"), MessageBox.TYPE_ERROR)
+                               self.rlist[self["testlist"].getCurrent()[1]]="fail"
+                               self.tunemsgtimer.stop()                                
+                       else:
+                               self.setSource()
+                               self.camstep = 5
+#                              self.session.open( MessageBox, _("CAM OK!"), MessageBox.TYPE_INFO,2)
+
+#      ikseong - for 22000 tp
+       def setSource(self):
+               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.close()
+               print "CI loop test!!!!!!!!!!!!!!"
+                       
+       def resetSource(self):
+               fd=open("/proc/stb/tsmux/input1","w")
+               fd.write("B")
+               fd.close()
+               print "CI loop test end!!!!!!!!!!!!!!"
+               
+       def tunemsg(self):
+               self.tuningtimer.stop()
+               self.session.openWithCallback(self.tuneback, MessageBox, _("%s ok?" %(self["testlist"].getCurrent()[0])), MessageBox.TYPE_YESNO)
+
+       def tuneback(self,yesno):
+               self.session.nav.stopService() # try to disable foreground service
+               if yesno:
+                       self.rlist[self["testlist"].getCurrent()[1]]="pass"
+                       if self.tunerlock == 0:
+                               self.rlist[self["testlist"].getCurrent()[1]]="fail"
+                       elif self["testlist"].getCurrent()[1] == 7 and self.camstep < 5:
+                               self.rlist[self["testlist"].getCurrent()[1]]="fail"
+               else:
+                       self.rlist[self["testlist"].getCurrent()[1]]="fail"
+               if self["testlist"].getCurrent()[1] == 6:
+                       self.avswitch.setColorFormat(0)                 
+               self.resetSource()
+               self["resultlist"].updateList(self.rlist)
+                               
+       def Test6(self):
+               self.avswitch.setInput("SCART")
+               sleep(2)
+               self.session.openWithCallback(self.check6, MessageBox, _("Scart loop ok?"), MessageBox.TYPE_YESNO)
+
+       def check6(self,yesno):
+               if yesno:
+                       self.rlist[self["testlist"].getCurrent()[1]]="pass"
+               else:
+                       self.rlist[self["testlist"].getCurrent()[1]]="fail"
+               self.avswitch.setInput("ENCODER")
+
+       def check7(self):
+               global rstest
+               if rstest == 1:
+                       self.rlist[self["testlist"].getCurrent()[1]]="pass"
+               else:
+                       self.rlist[self["testlist"].getCurrent()[1]]="fail"
+
+       def Test7(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)
+#              ref.setData(0,1)
+#              ref.setData(1,0x6D3)
+#              ref.setData(2,0x3)
+#              ref.setData(3,0xA4)
+#              ref.setData(4,0xA00000)
+               self.session.nav.playService(ref)
+               self.avswitch.setColorFormat(0)
+               self.avswitch.setAspectRatio(0)
+               self.tuningtimer.start(2000,True)
+               self.agingmode = 1
+
+       def checkaging(self):
+               global Agingresult
+               if(Agingresult ==1):
+                       self["testlist"].moveToIndex(11)
+                       self.Test14()
+                       self["testlist"].moveToIndex(12)
+               self.agingmode = 0
+#                      self["testlist"].instance.moveSelection(self["testlist"].instance.moveDown)
+                       
+               
+
+       def Test8(self):
+               if self.model==0:                       
+                       try:
+                               result = 0
+                               mtab = open('/etc/mtab','r')
+                               while(1):
+                                       disk = mtab.readline().split(' ')
+                                       if len(disk) < 2:
+                                               break
+                                       if disk[1].startswith('/media/hdd'):
+                                               continue
+                                       elif disk[1].startswith('/media/sdb1'):
+                                               continue
+                                       elif disk[1].startswith('/media/sd'):
+                                               result=result +1
+
+                               if result < 0 :
+                                       result = 0
+                               if result == 3:
+                                       self.session.open( MessageBox, _("USB test pass %d devices"%result), MessageBox.TYPE_INFO)                      
+                                       self.rlist[self["testlist"].getCurrent()[1]]="pass"
+                               else:
+                                       self.session.open( MessageBox, _("USB test error : Success-%d"%result+" Fail-%d"%(3-result)), MessageBox.TYPE_ERROR)
+                                       self.rlist[self["testlist"].getCurrent()[1]]="fail"
+                       except:
+                               if result < 0 :
+                                       result = 0
+                               if result == 3:
+                                       self.session.open( MessageBox, _("USB test pass %d devices"%result), MessageBox.TYPE_INFO)                      
+                                       self.rlist[self["testlist"].getCurrent()[1]]="pass"
+                               else:
+                                       self.session.open( MessageBox, _("USB test error : Success-%d"%result+" Fail-%d"%(3-result)), MessageBox.TYPE_ERROR)
+                                       self.rlist[self["testlist"].getCurrent()[1]]="fail"
+               elif self.model==1:
+                       try:
+                               result = 0
+                               mtab = open('/etc/mtab','r')
+                               while(1):
+                                       disk = mtab.readline().split(' ')
+                                       if len(disk) < 2:
+                                               break
+                                       if disk[1].startswith('/media/'):
+                                               result=result +1
+
+                               if result < 0 :
+                                       result = 0
+                               if result == 2:
+                                       self.session.open( MessageBox, _("USB test pass %d devices"%result), MessageBox.TYPE_INFO)                      
+                                       self.rlist[self["testlist"].getCurrent()[1]]="pass"
+                               else:
+                                       self.session.open( MessageBox, _("USB test error : Success-%d"%result+" Fail-%d"%(2-result)), MessageBox.TYPE_ERROR)
+                                       self.rlist[self["testlist"].getCurrent()[1]]="fail"
+                       except:
+                               if result < 0 :
+                                       result = 0
+                               if result == 2:
+                                       self.session.open( MessageBox, _("USB test pass %d devices"%result), MessageBox.TYPE_INFO)                      
+                                       self.rlist[self["testlist"].getCurrent()[1]]="pass"
+                               else:
+                                       self.session.open( MessageBox, _("USB test error : Success-%d"%result+" Fail-%d"%(2-result)), MessageBox.TYPE_ERROR)
+                                       self.rlist[self["testlist"].getCurrent()[1]]="fail"
+               
+
+       def pingtest(self):
+               self.testing = 1
+#              system("/etc/init.d/networking stop")
+               system("ifconfig eth0 192.168.0.10")
+#              system("/etc/init.d/networking start")
+               cmd1 = "ping -c 1 192.168.0.100"
+               self.PingConsole = Console()
+               self.PingConsole.ePopen(cmd1, self.checkNetworkStateFinished,self.NetworkStatedataAvail)
+               
+       def checkNetworkStateFinished(self, result, retval,extra_args):
+               (statecallback) = extra_args
+               if self.PingConsole is not None:
+                       if retval == 0:
+                               self.PingConsole = None
+                               content = result.splitlines()
+#                              print 'content',content
+                               x = content[4].split()
+#                              print 'x',x
+                               if x[0]==x[3]:
+                                       statecallback(1)
+                               else:
+                                       statecallback(0)                                        
+                       else:
+                               statecallback(0)
+
+
+       def NetworkStatedataAvail(self,data):
+               global ethtest
+               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:
+                       ethtest = 0
+                       print "fail"
+                       self.session.open( MessageBox, _("Ping test fail"), MessageBox.TYPE_ERROR)
+                       self.macresult()
+
+       def Test9(self):
+               self.pingtest()
+
+       def openMacConfig(self, ret=False):
+               self.session.openWithCallback(self.macresult ,MacConfig)        
+                       
+       def macresult(self):
+               global ethtest
+               if ethtest == 1:
+                       self.rlist[self.ethernettestIndex]="pass"               
+#                      self.rlist[self["testlist"].getCurrent()[1]]="pass"
+               else:
+                       self.rlist[self.ethernettestIndex]="fail"               
+#                      self.rlist[self["testlist"].getCurrent()[1]]="fail"
+               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
+                       
+               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)
+                       
+       def scciresult(self):
+               global smartcardtest
+               if smartcardtest == 1:
+                       self.rlist[self["testlist"].getCurrent()[1]]="pass"
+               else:
+                       self.rlist[self["testlist"].getCurrent()[1]]="fail"
+
+       def Test10(self):
+               self.session.openWithCallback(self.scciresult ,SmartCardTest)   
+
+       def Test11(self):
+               self.MemTest(1)
+               
+       def Test12(self):
+               self.MemTest(2)
+
+       def Test13(self):
+               self.MemTest(3) 
+
+
+       def Test14(self):
+               try:
+                       system("rm -R /etc/enigma2")
+                       system("cp -R /usr/share/enigma2/defaults /etc/enigma2")
+                       self.rlist[self["testlist"].getCurrent()[1]]="pass"
+                       self["resultlist"].updateList(self.rlist)
+               except:
+                       self.rlist[self["testlist"].getCurrent()[1]]="fail"
+                       self["resultlist"].updateList(self.rlist)
+                       self.session.open( MessageBox, _("Factory reset fail"), MessageBox.TYPE_ERROR)
+
+       def Test15(self):
+               self.session.openWithCallback(self.shutdown ,MessageBox, _("Do you want to shut down?"), MessageBox.TYPE_YESNO)
+
+       def shutdown(self, yesno):
+               if yesno :
+                       from os import _exit
+                       system("/usr/bin/showiframe /boot/backdrop.mvi")
+                       _exit(1)
+               else:
+                       return
+               
+       def keyCancel(self):
+               if self.testing==1:
+                       return
+               print "exit"
+               self.close()
+
+ethtest = 0
+class MacConfig(Screen):
+       skin = """
+               <screen position="100,250" 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="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" />
+               </screen>"""
+
+       def __init__(self, session):
+               self["actions"] = ActionMap(["DirectionActions","OkCancelActions"],
+               {
+                       "ok": self.keyOk,
+                       "left": self.keyleft,
+                       "right": self.keyright,
+                       "cancel": self.keyCancel,
+               }, -2)
+
+               Screen.__init__(self, session)
+       
+               self.result = 0
+               self.macfd = 0
+               self.macaddr = "000000000000"
+               self.NetworkState = 0
+               self["text"]=Label((self.macaddr))
+               self["text1"]= Label(("< >"))
+               self["stattext"]= Label((""))
+               self.displaymac()
+               self.loadmacaddr()
+               self.getmacaddr()
+               self.pingok=1
+#              self.pingtest()
+               global ethtest
+               ethtest = 1
+
+       def loadmacaddr(self):
+               try:
+                       result = 0
+                       self.macfd = 0
+                       mtab = open('/etc/mtab','r')
+                       while(1):
+                               disk = mtab.readline().split(' ')
+                               if len(disk) < 2:
+                                       break
+                               if disk[1].startswith('/media/sd') or disk[1].startswith('/media/hdd'):
+                                       print 'try..',disk[1]
+                                       if  fileExists(disk[1]+"/Vuplus_mac.txt"):
+                                               self.macfd = open(disk[1]+"/Vuplus_mac.txt","r+")
+                                               break
+                       if self.macfd == 0:
+                               self["text"].setText(("cannot read usb!!"))
+                               self["text1"].setText((" "))
+                               self["stattext"].setText((" Press Exit Key."))
+                               self.NetworkState=0
+                               return
+                       
+                       macaddr=self.macfd.readline().split(":")
+                       self.macaddr=macaddr[1]+macaddr[2]+macaddr[3]+macaddr[4]+macaddr[5]+macaddr[6]
+                       self.displaymac()
+                       self.NetworkState = 1
+               except:
+                       self["text"].setText(("cannot read usb!!"))
+                       self["text1"].setText((" "))
+                       self["stattext"].setText((" Press Exit Key."))
+                       self.NetworkState=0
+#                      self.session.open( MessageBox, _("Mac address fail"), MessageBox.TYPE_ERROR)
+
+       def readmac(self, result, retval,extra_args=None):
+               (statecallback) = extra_args
+               if self.macConsole is not None:
+                       if retval == 0:
+                               self.macConsole = None
+                               content =result.split()
+                               self["stattext"].setText(("now : "+content[10]))
+       
+       def getmacaddr(self):
+               if self.NetworkState==0:
+                       return
+               try:
+                       cmd = "ip -o addr"
+                       self.macConsole = Console()     
+                       self.macConsole.ePopen(cmd, self.readmac)       
+#                      self["stattext"].setText((macaddr))
+               except:
+                       return
+                       
+       def keyleft(self):
+               if self.NetworkState==0 or self.pingok<1:
+                       return
+               macaddress = long(self.macaddr,16)-1
+               if macaddress < 0 :
+                       macaddress = 0xffffffffffff
+               self.macaddr = "%012x"%macaddress
+               self.displaymac()
+
+       def keyright(self):
+               if self.NetworkState==0 or self.pingok<1:
+                       return
+               macaddress = long(self.macaddr,16)+1
+               if macaddress > 0xffffffffffff:
+                       macaddress = 0
+               self.macaddr = "%012x"%macaddress
+               self.displaymac()
+
+       def displaymac(self):
+               macaddr= self.macaddr
+               self["text"].setText(("%02x:%02x:%02x:%02x:%02x:%02x"%(int(macaddr[0:2],16),int(macaddr[2:4],16),int(macaddr[4:6],16),int(macaddr[6:8],16),int(macaddr[8:10],16),int(macaddr[10:12],16))))
+
+       def keyOk(self):
+               if self.NetworkState==0 or self.pingok<1:
+                       return
+               try:
+                       system("/etc/init.d/networking stop")
+                       system("ifconfig eth0 down")
+                       macaddr = self.macaddr
+                       macaddrcmd="ifconfig eth0 hw ether %02x:%02x:%02x:%02x:%02x:%02x"%(int(macaddr[0:2],16),int(macaddr[2:4],16),int(macaddr[4:6],16),int(macaddr[6:8],16),int(macaddr[8:10],16),int(macaddr[10:12],16))
+                       system(macaddrcmd)
+#make_mac_sector 00-99-99-99-00-00 > /tmp/mac.sector
+#flash_eraseall /dev/mtd4
+#nandwrite /dev/mtd4 /tmp/mac.sector -p                        
+                       cmd = "make_mac_sector %02x-%02x-%02x-%02x-%02x-%02x > /tmp/mac.sector"%(int(macaddr[0:2],16),int(macaddr[2:4],16),int(macaddr[4:6],16),int(macaddr[6:8],16),int(macaddr[8:10],16),int(macaddr[10:12],16))
+                       system(cmd)
+                       system("flash_eraseall /dev/mtd4")
+                       system("nandwrite /dev/mtd4 /tmp/mac.sector -p")
+                       macaddress = long(macaddr,16)+1
+                       if macaddress > 0xffffffffffff:
+                               macaddress = 0
+                       macaddr = "%012x"%macaddress
+                       macwritetext = "MAC:%02x:%02x:%02x:%02x:%02x:%02x"%(int(macaddr[0:2],16),int(macaddr[2:4],16),int(macaddr[4:6],16),int(macaddr[6:8],16),int(macaddr[8:10],16),int(macaddr[10:12],16))
+                       self.macfd.seek(0)
+                       self.macfd.write(macwritetext)
+                       self.macaddr = macaddr
+                       system("ifconfig eth0 up")
+                       self.loadmacaddr()
+                       system("ifconfig eth0 192.168.0.10")
+                       system("/etc/init.d/networking start")
+                       self.close()
+               except:
+                       self.session.open( MessageBox, _("Mac address fail"), MessageBox.TYPE_ERROR)
+                       global ethtest
+                       ethtest = 0
+                       self.close()
+               
+       def pingtest(self):
+               self["stattext"].setText(("now : wait to finish ping test..."))
+#              system("/etc/init.d/networking stop")
+               system("ifconfig eth0 192.168.0.10")
+#              system("/etc/init.d/networking start")
+               cmd1 = "ping -c 1 192.168.0.100"
+               self.PingConsole = Console()
+               self.PingConsole.ePopen(cmd1, self.checkNetworkStateFinished,self.NetworkStatedataAvail)
+               
+       def checkNetworkStateFinished(self, result, retval,extra_args):
+               (statecallback) = extra_args
+               if self.PingConsole is not None:
+                       if retval == 0:
+                               self.PingConsole = None
+                               content = result.splitlines()
+#                              print 'content',content
+                               x = content[4].split()
+#                              print 'x',x
+                               if x[0]==x[3]:
+                                       statecallback(1)
+                               else:
+                                       statecallback(0)                                        
+                       else:
+                               statecallback(0)
+
+
+       def NetworkStatedataAvail(self,data):
+               global ethtest
+               if data == 1:
+                       ethtest = 1
+                       print "success"
+                       self.pingok=1
+                       self.loadmacaddr()
+                       self.getmacaddr()                       
+                       self.session.open( MessageBox, _("Ping test pass"), MessageBox.TYPE_INFO,2)
+               else:
+                       ethtest = 0
+                       print "fail"
+                       self.pingok=0
+                       self["stattext"].setText(("ping test fail..    press Exit Key"))
+                       self.session.open( MessageBox, _("Ping test fail"), MessageBox.TYPE_ERROR,2)
+               self.getmacaddr()
+               
+
+       def keyCancel(self):
+               if self.pingok == -1:
+                       return
+               if self.macfd != 0:
+                       self.macfd.close()
+               global ethtest
+               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
+
+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>"""
+
+       def __init__(self, session):
+               self["actions"] = ActionMap(["DirectionActions", "OkCancelActions"],
+               {
+                       "cancel": self.keyCancel,
+                       "ok" : self.keyCancel
+               }, -2)
+
+               Screen.__init__(self, session)
+#              self["text"]=Label(("Press Key LEFT"))
+               self["text"]=Label(("Testing Smartcard 1..."))
+               self.step = 0
+               self.smartcardtimer = eTimer()
+               self.smartcardtimer.callback.append(self.check_smart_card)
+               self.smartcardtimer.start(100,True)
+               self.smartcard=0
+               global smartcardtest
+               smartcardtest = 0
+               self.Testmode = 0
+               self.model = 0
+               self.check_mode()
+
+       def check_mode(self):
+               try:
+                       fd = open("/proc/stb/info/version","r")
+                       version = fd.read()
+                       if int(version,16) <= 0x1200A3:
+                               self.Testmode = 0
+                       else:
+                               self.Testmode = 1
+                       if int(version,16) < 0x130000:
+                               self.model = 0
+                       elif int(version,16) > 0x140000:
+                               self.model = 1
+               except:
+                       self.Testmode = 0
+
+       def check_smart_card(self):
+               global smartcardtest
+               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")                  
+               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")                  
+               else:
+                       result = -1
+
+               print result                    
+               
+               if result == 0:
+                       print 'pass'
+                       if(index== 0 and self.model== 0):
+                               self.smartcard = 1
+                               self["text"].setText(_("Testing Smartcard 2..."))
+                               self.smartcardtimer.start(100,True)
+                               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["text"].setText(_("Smart Card OK!!"))
+                               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)
+                       elif result == -2:
+                               self.session.open( MessageBox, _("%d:SC_NOT_INSERTED"%(index+1)), MessageBox.TYPE_ERROR)
+                       elif result == -3:
+                               self.session.open( MessageBox, _("%d:SC_NOT_VALID_ATR"%(index+1)), MessageBox.TYPE_ERROR)
+                       elif result == -5:
+                               self.session.open( MessageBox, _("%d:SC_READ_TIMEOUT"%(index+1)), MessageBox.TYPE_ERROR)
+                       if(index==0):
+                               self["text"].setText(_("Smart Card 1 Error!"))
+                       elif (index==1):
+                               self["text"].setText(_("Smart Card 2 Error!"))
+                       self.smartcardtimer.stop()
+
+                               
+       def keyCancel(self):
+               self.close()
+
+       
+
+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>"""
+
+       def __init__(self, session):
+               self["actions"] = ActionMap(["DirectionActions", "OkCancelActions"],
+               {
+                       "ok": self.keyOk,
+                       "up":self.keyUp,
+                       "down":self.keyDown,                    
+                       "cancel": self.keyCancel,
+               }, -2)
+
+               Screen.__init__(self, session)
+               self["text"]=Label(("Wheel LEFT"))
+               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 KeyTimeOut(self):
+               if self.step == 1:
+                       self["text"].setText(("Wheel LEFT ERROR"))
+               elif self.step ==2 :
+                       self["text"].setText(("Wheel RIGHT ERROR"))
+               elif self.step == 3:
+                       self["text"].setText(("Wheel BUTTON ERROR"))
+               self.step = 0
+#              self.keyCancel()
+                               
+       def keyCancel(self):
+               global fronttest
+               self.fronttimer.stop()
+               eSctest.getInstance().VFD_Close()
+               if self.step==4:
+                       fronttest = 1
+               else:
+                       fronttest = 0
+               self.close()
+
+       def keyDown(self):
+               if self.step==2:
+                       self.keytimeout.stop()
+                       self.keytimeout.start(5000,True)
+                       self.step = 3
+                       self["text"].setText(_("Press Front Wheel"))
+
+       def keyUp(self):
+               if self.step==1:
+                       self.keytimeout.stop()
+                       self.keytimeout.start(5000,True)
+                       self.step=2
+                       self["text"].setText(_("Wheel RIGHT"))
+#              else:
+#                      print ""
+
+       def keyOk(self):
+               if self.step == 3:
+                       self.keytimeout.stop()
+                       self.step =4
+                       self.fronttimer.start(1000,True)
+                       self["text"].setText(("Front Test OK! Press Exit Key"))
+#              elif self.step==4:
+#                      global fronttest
+#                      self.fronttimer.stop()
+#                      eSctest.getInstance().VFD_Close()
+#                      fronttest = 1
+#                      self.close()
+
+       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_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>"""
+
+       def __init__(self, session):
+               self["actions"] = ActionMap(["DirectionActions", "OkCancelActions","GlobalActions"],
+               {
+                       "ok": self.keyOk,
+                       "cancel": self.keyCancel,
+                       "left": self.keyleft,
+                       "right": self.keyright,
+                       "power_down": self.keypower,
+                       "volumeUp": self.keyvolup,
+                       "volumeDown": self.keyvoldown,
+               }, -2)
+
+               Screen.__init__(self, session)
+               self["text"]=Label(("Press Front STANDBY"))
+               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 KeyTimeOut(self):
+               if self.step == 1:
+                       self["text"].setText(("Front STANDBY ERROR"))
+               elif self.step == 2 :
+                       self["text"].setText(("Front CH+ ERROR"))
+               elif self.step == 3:
+                       self["text"].setText(("Front CH- ERROR"))
+               elif self.step == 4 :
+                       self["text"].setText(("Front VOL + ERROR"))
+               elif self.step == 5:
+                       self["text"].setText(("Front VOL - ERROR"))
+                       
+               self.step = 0
+#              self.keyCancel()
+
+       def keypower(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== 3:
+                       self.keytimeout.stop()
+                       self.keytimeout.start(5000,True)
+                       self.step = 4
+                       self["text"].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 -"))
+
+       def keyvolup(self):
+               if self.step== 4:
+                       self.keytimeout.stop()
+                       self.keytimeout.start(5000,True)
+                       self.step = 5
+                       self["text"].setText(_("Press Front VOL -"))
+               
+       def keyvoldown(self):
+               if self.step== 5:
+                       self.keytimeout.stop()
+                       self.step = 6
+                       self["text"].setText(("Front Test OK! Press Exit Key"))
+                       
+       def keyCancel(self):
+               global fronttest
+               self.fronttimer.stop()
+               eSctest.getInstance().VFD_Close()
+               if self.step==6:
+                       fronttest = 1
+               else:
+                       fronttest = 0
+               self.close()
+
+       def keyOk(self):
+               if self.step == 3:
+                       self.keytimeout.stop()
+                       self.step =4
+                       self.fronttimer.start(1000,True)
+                       self["text"].setText(("Front Test OK! Press Exit Key"))
+
+       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)
+
+
+       
+
+rstest = 0
+
+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>"""
+       step=1
+       def __init__(self, session):
+               self["actions"] = ActionMap(["DirectionActions", "OkCancelActions"],
+               {
+                       "cancel": self.keyCancel,
+               }, -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":
+#                              if input == "m":
+                                       rstest = 1
+                               else:
+                                       rstest = 0 
+                       else:
+                               rstest = 0
+               except:
+                       print 'error'
+                       rstest = 0
+               self.close()
+
+       def keyCancel(self):
+               self.close()
+
+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>"""
+       step=1
+       def __init__(self, session):
+               self["actions"] = ActionMap(["WizardActions","GlobalActions"],
+               {
+                       "agingend": self.keyEnd,
+                       "agingfinish": self.keyFinish,
+                       "volumeUp": self.nothing,
+                       "volumeDown": self.nothing,
+                       "volumeMute": self.nothing,             
+               }, -2)
+
+               Screen.__init__(self, session)
+               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(2000,True)
+
+
+       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
+               else:
+                       self.tunerlock = 0
+                       self.session.nav.stopService()
+                       self.session.open( MessageBox, _("Tune 1 Ver Error %d..."%result), MessageBox.TYPE_ERROR)       
+
+
+       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()
+                       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,0x83)
+               ref.setData(2,0x6)
+               ref.setData(3,0x85)
+               ref.setData(4,0x640000)
+               self.session.nav.playService(ref)
+
+       def keyEnd(self):
+               global Agingresult
+               Agingresult = 0
+               self.session.nav.stopService() # try to disable foreground service
+               self.close()
+
+       def keyFinish(self):
+               global Agingresult
+               Agingresult = 1
+               self.session.nav.stopService() # try to disable foreground service
+               self.close()
+               
+session = None
+
+       
+def cleanup():
+       global Session
+       Session = None
+       global Servicelist
+       Servicelist = None
+
+def main(session, servicelist, **kwargs):
+       global Session
+       Session = session
+       global Servicelist
+       Servicelist = servicelist
+       bouquets = Servicelist.getBouquetList()
+       global bouquetSel
+       bouquetSel = Session.openWithCallback(cleanup, FactoryTest)
+
+#def Plugins(**kwargs):
+#      return PluginDescriptor(name=_("Factory Test"), description="Test App for Factory", where = PluginDescriptor.WHERE_EXTENSIONSMENU, fnc=main)
diff --git a/lib/python/Plugins/SystemPlugins/FactoryTest/testdb b/lib/python/Plugins/SystemPlugins/FactoryTest/testdb
new file mode 100755 (executable)
index 0000000..6829883
--- /dev/null
@@ -0,0 +1,30 @@
+eDVB services /4/
+transponders
+0064af79:03ef:0001
+       s 12153000:22000000:1:2:100:2:0:1:2:0:2
+/
+00820000:0003:00a4
+       s 10900000:26850000:0:0:130:2:0
+/
+00a00000:0003:00a4
+       s 10900000:26850000:0:0:160:2:0
+/
+00c00000:03ef:0001
+       s 12153000:22000000:1:2:192:2:0:1:2:0:2
+/
+end
+services
+06d3:00820000:0003:00a4:1:0
+747 Channel [V] China
+p:STAR,c:000203,c:01028c,c:031ffe,f:40
+06d3:00a00000:0003:00a4:1:0
+747 Channel [V] China
+p:STAR,c:000203,c:01028c,c:031ffe,f:40
+1325:00c00000:03ef:0001:25:0
+ASTRA HD
+p:BetaDigital,f:40
+1325:0064af79:03ef:0001:25:0
+ASTRA HD
+p:BetaDigital,f:40
+end
+Have a lot of bugs!