From 835fad36e934c6a7bbec4912416a7a09a7cb9bb7 Mon Sep 17 00:00:00 2001 From: ikseong Date: Fri, 14 May 2010 10:53:49 +0900 Subject: [PATCH] patch for vuplus --- lib/driver/memtest.cpp | 55 + lib/driver/memtest.h | 21 + lib/driver/sc_test.cpp | 325 ++++ lib/driver/sc_test.h | 139 ++ .../Plugins/SystemPlugins/FactoryTest/Makefile.am | 6 + .../Plugins/SystemPlugins/FactoryTest/__init__.py | 0 .../Plugins/SystemPlugins/FactoryTest/plugin.py | 1776 ++++++++++++++++++++ .../Plugins/SystemPlugins/FactoryTest/testdb | 30 + 8 files changed, 2352 insertions(+) create mode 100755 lib/driver/memtest.cpp create mode 100755 lib/driver/memtest.h create mode 100755 lib/driver/sc_test.cpp create mode 100755 lib/driver/sc_test.h create mode 100755 lib/python/Plugins/SystemPlugins/FactoryTest/Makefile.am create mode 100755 lib/python/Plugins/SystemPlugins/FactoryTest/__init__.py create mode 100755 lib/python/Plugins/SystemPlugins/FactoryTest/plugin.py create mode 100755 lib/python/Plugins/SystemPlugins/FactoryTest/testdb diff --git a/lib/driver/memtest.cpp b/lib/driver/memtest.cpp new file mode 100755 index 0000000..94bc6aa --- /dev/null +++ b/lib/driver/memtest.cpp @@ -0,0 +1,55 @@ +#include +#include +#include +#include + +#define TESTSIZE 32*1024 + +eMemtest *eMemtest::instance; + +eMemtest::eMemtest() +{ + instance = this; + +} + +eMemtest::~eMemtest() +{ + instance=NULL; + +} +/* +* return value +* 0 - ok +* 1 - fail +*/ +int eMemtest::dramtest() +{ + int result=0; + int i; + char memt[TESTSIZE]; + eDebug("dramtest start"); + + + for(i=0;i +#include + +class eMemtest +{ + static eMemtest *instance; +public: + eMemtest(); + ~eMemtest(); + int dramtest(); + int flashtest(); + static eMemtest *getInstance() { return instance; } + +}; +#endif +#endif + diff --git a/lib/driver/sc_test.cpp b/lib/driver/sc_test.cpp new file mode 100755 index 0000000..cfb1fcd --- /dev/null +++ b/lib/driver/sc_test.cpp @@ -0,0 +1,325 @@ +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + + +#define SC_CHECK_TIMEOUT 5 +#define SC_REMOVE_TIMEOUT 10 + + +#define SMART_CARD0 "/dev/sci0" /* upper smart card */ +#define SMART_CARD1 "/dev/sci1" /* lower smart card */ + +#define SC_SUCCESS 0 +#define NO_DEV_FOUND -1 +#define SC_NOT_INSERTED -2 +#define SC_NOT_VALID_ATR -3 +#define SC_NOT_REMOVED -4 +#define SC_READ_TIMEOUT -5 + + +#define SCI_IOW_MAGIC 's' + +/* ioctl cmd table */ +//#include "sci_global.h" +#define IOCTL_SET_RESET _IOW(SCI_IOW_MAGIC, 1, unsigned long) +#define IOCTL_SET_MODES _IOW(SCI_IOW_MAGIC, 2, SCI_MODES) +#define IOCTL_GET_MODES _IOW(SCI_IOW_MAGIC, 3, SCI_MODES) +#define IOCTL_SET_PARAMETERS _IOW(SCI_IOW_MAGIC, 4, SCI_PARAMETERS) +#define IOCTL_GET_PARAMETERS _IOW(SCI_IOW_MAGIC, 5, SCI_PARAMETERS) +#define IOCTL_SET_CLOCK_START _IOW(SCI_IOW_MAGIC, 6, unsigned long) +#define IOCTL_SET_CLOCK_STOP _IOW(SCI_IOW_MAGIC, 7, unsigned long) +#define IOCTL_GET_IS_CARD_PRESENT _IOW(SCI_IOW_MAGIC, 8, unsigned long) +#define IOCTL_GET_IS_CARD_ACTIVATED _IOW(SCI_IOW_MAGIC, 9, unsigned long) +#define IOCTL_SET_DEACTIVATE _IOW(SCI_IOW_MAGIC, 10, unsigned long) +#define IOCTL_SET_ATR_READY _IOW(SCI_IOW_MAGIC, 11, unsigned long) +#define IOCTL_GET_ATR_STATUS _IOW(SCI_IOW_MAGIC, 12, unsigned long) +#define IOCTL_DUMP_REGS _IOW(SCI_IOW_MAGIC, 20, unsigned long) + +eSctest *eSctest::instance; + +eSctest::eSctest() +{ + instance = this; + +} + +eSctest::~eSctest() +{ + instance=NULL; + +} + +int eSctest::n_check_smart_card(char *dev_name) +{ + int fd; + struct pollfd pollfd; + unsigned char buf[64]; + int cnt = 0; + int modem_status; + int count = SC_CHECK_TIMEOUT; + int readok=0; + + fd = ::open(dev_name, O_RDWR); + + if(fd < 0){ + eDebug("sci0 open error\n"); + return NO_DEV_FOUND; + } + else + eDebug("sci0 is opened fd : %d\n", fd); + + + ::ioctl(fd, IOCTL_GET_IS_CARD_PRESENT, &modem_status); + + if( modem_status ) + eDebug("card is now inserted\n"); + else + { + eDebug("card is NOT inserted\n"); + ::close(fd); + return SC_NOT_INSERTED; + } + + /* now smart card is inserted, let's do reset */ + + ::ioctl(fd, IOCTL_SET_RESET, &modem_status); + + /* now we can get the ATR */ + + pollfd.fd = fd; + pollfd.events = POLLIN|POLLOUT|POLLERR|POLLPRI; + + + while(poll(&pollfd, 1, 1000)>=0 && count--){ + + eDebug("pollfd.revents : 0x%x\n", pollfd.revents); + if(pollfd.revents & POLLIN){ + eDebug(">>read \n"); + cnt = read(fd, buf, 64); + eDebug("<=0 && count--){ + + eDebug("pollfd.revents : 0x%x %d", pollfd.revents,count); + if(pollfd.revents & POLLIN){ + eDebug(">>read "); + cnt = ::read(fd, buf, 64); + eDebug("< +#include + +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 index 0000000..508a02b --- /dev/null +++ b/lib/python/Plugins/SystemPlugins/FactoryTest/Makefile.am @@ -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 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 index 0000000..7ee347f --- /dev/null +++ b/lib/python/Plugins/SystemPlugins/FactoryTest/plugin.py @@ -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 = """ + + + + + + + """ + 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 = """ + + + + + + + """ + + 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 = """ + + + + + + """ + 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<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< + + """ + + 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 = """ + + + """ + + 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 = """ + + + """ + + 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 = """ + + + """ + 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 = """ + + + + """ + 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 index 0000000..6829883 --- /dev/null +++ b/lib/python/Plugins/SystemPlugins/FactoryTest/testdb @@ -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! -- 2.7.4