From 1cae1f95b3dc8e3b9c09ee8a01472eb876c6fb43 Mon Sep 17 00:00:00 2001 From: "Chang.H.S" Date: Wed, 28 Sep 2011 16:22:42 +0900 Subject: [PATCH] FactoryTest : 1) remove sc_test, memtest & add sc_test module to FactoryTest 2) add SNR, AGC to TuneMSGBox & AgingTestMSGBox 3) additional TuneTest Menu for ultimo 4) fix UI position --- lib/driver/Makefile.am | 4 +- 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 | 4 +- .../Plugins/SystemPlugins/FactoryTest/_sctest.so | Bin 0 -> 109753 bytes .../Plugins/SystemPlugins/FactoryTest/plugin.py | 530 ++++++++++++++++++--- .../Plugins/SystemPlugins/FactoryTest/sctest.py | 232 +++++++++ lib/python/enigma_python.i | 4 - 10 files changed, 694 insertions(+), 620 deletions(-) delete mode 100755 lib/driver/memtest.cpp delete mode 100755 lib/driver/memtest.h delete mode 100755 lib/driver/sc_test.cpp delete mode 100755 lib/driver/sc_test.h create mode 100755 lib/python/Plugins/SystemPlugins/FactoryTest/_sctest.so create mode 100755 lib/python/Plugins/SystemPlugins/FactoryTest/sctest.py diff --git a/lib/driver/Makefile.am b/lib/driver/Makefile.am index 3412288..b498a6c 100755 --- a/lib/driver/Makefile.am +++ b/lib/driver/Makefile.am @@ -16,9 +16,7 @@ libenigma_driver_a_SOURCES = \ rc.cpp \ rcconsole.cpp \ rcinput.cpp \ - rfmod.cpp \ - memtest.cpp \ - sc_test.cpp + rfmod.cpp driverincludedir = $(pkgincludedir)/lib/driver driverinclude_HEADERS = \ diff --git a/lib/driver/memtest.cpp b/lib/driver/memtest.cpp deleted file mode 100755 index 94bc6aa..0000000 --- a/lib/driver/memtest.cpp +++ /dev/null @@ -1,55 +0,0 @@ -#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 deleted file mode 100755 index cfb1fcd..0000000 --- a/lib/driver/sc_test.cpp +++ /dev/null @@ -1,325 +0,0 @@ -#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 index 9660052..f3b682d 100755 --- a/lib/python/Plugins/SystemPlugins/FactoryTest/Makefile.am +++ b/lib/python/Plugins/SystemPlugins/FactoryTest/Makefile.am @@ -3,4 +3,6 @@ installdir = $(pkglibdir)/python/Plugins/SystemPlugins/FactoryTest install_PYTHON = \ __init__.py \ plugin.py \ - testdb + testdb \ + _sctest.so \ + sctest.py diff --git a/lib/python/Plugins/SystemPlugins/FactoryTest/_sctest.so b/lib/python/Plugins/SystemPlugins/FactoryTest/_sctest.so new file mode 100755 index 0000000000000000000000000000000000000000..addf1cef92bb7f64bb3af66022d4a67b9ff1a643 GIT binary patch literal 109753 zcmeFa4|rVFbuW7K2T(x3*a#3HU<6}ZU}4K3K!B2rq>(K*!k*YN2oM>`nz1dArHM2G zIdK{RCUI}oj*_^&PU^P0#JzP>-CCqh>wa}oJ#2_yukU;AeeSKl*6np~+}6EuTcvRm zw>6sg`|Uq-_MAC$W`s?^_sg-j_E~$cz4qE`ueJ8SbIyFewS8q#QIVyu606K2)P0X- z)gwL=FS4%jS>bxiZ(VKGSa(}hM2(-v9~~-j&rqs@O$`aS0*yr?TqU3)LEj1jD_AT- z#T}Macb5hFyoxNOTII;r;R0ZWYYuWKZr(L3%IS!vaUnyLnuM8o+-8# zAUXs=EhLOWHz5KV>w}aJN)xm0Sf5%f}sS;s8m znp<%*&+9edlRhtWgSei;-{%k>Lbwm11z|bD0K!KQAP%bo;bDYk1YWNqJd1EQ!U}}X zBJkQIBk>pFvsNN(K&TNZ@=qtCRR;XHaj$Q0#tl?OTtW-g{bvw6o4o{SA(c;gKZX!h zaGi=jiumW$eLvzaBHXTEMwIa~12%6r0;n|;aDNZNEeI7Voqb1L;k6FoV+cP(KwUc! z532i5B7P7dfN&>5JwhMCBM6To+>fvbp%($FW-UhGb)$@g{Vm1)YJ_eC>e`D4RHRY_ zeNo?dQTKRJr+Gbt@PxRttlLzqqu15V=T-a);xNJx!cLX89WnJ?Uk|98wJPpH>__N9 zcpAaHo(Ir|5LAixs+iGcgij$1BQzlBs|h!a2wQc6BaS&>f-fL^90B%ay@a5zHMnU- z_<~MAydL2b2K=(RZ$~_8r1SPk2b>Gs;>d^qehuN%j`T6W+Z<^cEWyp^G@#-U#0i9} z9O-W0&$=ZVX~o9 zeM*=ALF&g2{9V913VPH%(xct!_ANyF{tZH}OY;l6MR~sgUj=3J88B^r+~DsJJJiU3 z9PsP{-G0m3huhNzdAb-Mue*{sC8Sqzu zA2;9wsG|W+Dvor@}fF}+7 zFM z@{b$%e+PbN4EQ>SdXTaA0zp}=%ICijq z?sCZI;|}=GfoB=z{~Ybp7wc<>d}eQuOmJTGqNDsRkk@G={}$jMH{jiX^+kH$LirgZ z|69nPHsFoy9|Qh-;7=IvV(>R+z< RXkA^4$jf4(Nvs_%)Od8t`$@uQTB9ps9WX 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�atC`}S{Luu-LRsk%t$xxNvEy)8GRcvMUwBbBnyZKYSq z2BEbc9Agy2MR@{A(biEUK>c>&ry{-CF(XyWlY0F3jciZw92P`z&s#j$os zsj@blsMAM)!g$b4TX@6Hcq98dowhW;Vk;P(l>kw5ss|hVpI4!bs4c^5P(~V;PcL~q zX=W9$6eXC)Oh7GTobmd6(86pd(kNZe`(EnOAW5M}nlYX3gc&DbG3hhE($@>qCLnhUl69akZj_W?{w*J7a(7 z7)L7VY)(#0Oz6mt<7g<08 zbsmbrmNEDN*mCJv%oZ04eGDltmm)Qv2upXpQzTb!JHFw}LOsyW_0)%Ti9fD5T7<5YS%yh{vg*!7Z!R+U} zB)3QM5@GVZFX3l~iy2N#vEX8L%~mq23zLg`TfIT@Im*+ns#x(r$>SuICmo+IPixaI zhB3M<&08G?Vdy2BBTlmqH|Je8rCOdcyD!Hfh3hH2-F8PriC4sYYdaf;DolE6Bj|=) zY$|=)YEM4rK6`3*X`xb5O4@{J5c7d<39>xv=XFEumYvG8e z9;FLu)T!gz3eI{G-E~cwwbzfj5@YwQ)}pwF90M)JWW|co%Bbzk#_LKPPC?zL4%_i@ zlxrrvII3=<3YB({B#JBVl3MR8oPqR_THS6aEKdh^IWDrpCe2qEt6*Ei+Ej5p=*}YZ zXt`FTYHSB;eSnplvPUU1GnLiV+2aeUj2lZr!~@-=wcd?F%Ct48?<7!+*%2tU-a(8s zl#P`j?B~8sbsATgz!2*u=-oiru5DUPt*)x61Je*xG1~U3DcVym>qVhi`)Q3F@AcZ6 zTh~MnK^yc@>HADc8h0E0okEY;QcgrEJC&Oi7rRYWa75)cyCuG={8;wC6M_B3Cc0LmYkHk?^Ymhg?;6k@|w5>MdDDunJ zwm6&2=?xWSK`Zs0ZW?S`0}{5m*y}wqpqymBHw0cgQ5~J$nB_CVo2ZuT@)l}h&Loy#Z+Gp6E?b@Hefs42!JW- z875c4B-#TOI1z2V=Fd`+hEW{nT=YbO%XSWoreM<4R+sbpi}MAVJqRwM6nXENB#+MhU#Zcm$&45w~(x>`u;gNIVODpY5vzM4fFhwYtZ zlX=*os;0g{D8^uAQumY{#GJq72%Rf~s@A$&4_iH2=OP3gaXV2dXUUvRqdFW0QQFvm zR*cDIhKlty4IrN=np<%z^-@rBP$;=M+$g97|4B(g>3V?G%?zUyCMe@bWh2Ywb@ZHb z?wh5KuDq0ITu|59q0#a(E{8VTy)D;Ki*U)x{DPtz(&M}?7)E#^; zRqJv{HxfJqZ|gY`6=@3>F7H&dbvoFRPBnL?m|M5ERUfx}dvq!|N8Ft7#XZp7YIQ@* zxXGYH+pJVDyH4m~II@-~4Q;ZTwmwFTmWmlr*%UZuhM!yxA-nbH-on8Af?{0_OZh+X C + + + + + + + + + SNRdB + + + + + AGC + + +# this should be factored out into some helper code, but currently demonstrates applets. +from enigma import eSize, ePoint + +orgwidth = self.instance.size().width() +orgpos = self.instance.position() +textsize = self["text"].getSize() + +# y size still must be fixed in font stuff... +textsize = (textsize[0] + 50, textsize[1] + 50) +offset = 0 +if self.type == self.TYPE_YESNO: + offset = 60 +wsizex = textsize[0] + 60 +wsizey = textsize[1] + offset +if (280 > wsizex): + wsizex = 280 +wsizex = wsizex + 30 +wsizey = wsizey + 30 +wsize = (wsizex, wsizey) + +# resize +self.instance.resize(eSize(*wsize)) + +# resize label +self["text"].instance.resize(eSize(*textsize)) + +# move list +listsize = (wsizex, 50) +self["list"].instance.move(ePoint(0, textsize[1])) +self["list"].instance.resize(eSize(*listsize)) + +# center window +newwidth = wsize[0] +self.instance.move(ePoint(orgpos.x() + (orgwidth - newwidth)/2, orgpos.y())) + + """ + def __init__(self, session, text, type = MessageBox.TYPE_YESNO): + MessageBox.__init__(self, session, text, type) + class FactoryTest(Screen): skin = """ - - - - - - + + + + + + """ + def __init__(self, session): self["actions"] = NumberActionMap(["OkCancelActions","WizardActions","NumberActions","ColorActions",], @@ -69,7 +128,7 @@ class FactoryTest(Screen): }, -2) Screen.__init__(self, session) - TESTPROGRAM_DATE = self.getImageVersion() +" (v1.00)" + TESTPROGRAM_DATE = self.getImageVersion() +" (v1.10)" TESTPROGRAM_VERSION = "Version 01.10" self.model = 0 @@ -148,8 +207,9 @@ class FactoryTest(Screen): self.createConfig() self.rlist = [] - for x in range(self.menulength): + for x in range(self.menulength-1): self.rlist.append(("..")) + self.rlist.append((" ")) self["resultlist"] = TestResultList(self.rlist) self.avswitch = AVSwitch() @@ -279,10 +339,15 @@ class FactoryTest(Screen): tlist.append((" 2. Front test",self.fronttestIndex)) self.smarttestIndex=3 tlist.append((" 3. Smartcard test",self.smarttestIndex)) - self.tuner_test_first_index = current_index = 4 + if self.model == 3: + self.tuner_test_first_index = current_index = 4 + elif self.model == 4: + self.tuner_test_first_index = 4 + current_index = 0 AspectRatio=["4:3", "16:9"] ColorFormat=["CVBS","RGB","YC","CVBS","CVBS","CVBS","CVBS","CVBS"] self.tuneInfo={} + tunelist = [] for (key, val) in self.NimType.items(): if val["type"].startswith("DVB-S"): # Chang : DVB -S setting diseqc A @@ -294,7 +359,7 @@ class FactoryTest(Screen): # current_index=4 self.setTuneInfo(index=current_index, slot=key, type=val["type"], sat=val["sat1"], pol="H", tone=False, ratio=getRatio, color=getColorFormat, cam=False) # setTuneInfo # self.setTuneInfo(current_index, key, val["type"], val["sat1"], "H", True, getRatio, getColorFormat, False) # setTuneInfo - tlist.append((menuname,current_index)) + tunelist.append((menuname,current_index)) current_index+=1 # Chang : DVB -S setting diseqc B getRatio = AspectRatio.pop(0) @@ -307,7 +372,7 @@ class FactoryTest(Screen): else: camtest = False self.setTuneInfo( index=current_index, slot=key, type=val["type"], sat=val["sat2"], pol="V", tone=True, ratio=getRatio, color=getColorFormat, cam=camtest) - tlist.append((menuname,current_index)) + tunelist.append((menuname,current_index)) current_index+=1 # Chang : DVB -T or DVB-C elif val["type"].startswith("DVB-T") or val["type"].startswith("DVB-C"): @@ -327,9 +392,17 @@ class FactoryTest(Screen): else: camtest = False self.setTuneInfo( index=current_index, slot=key, type=val["type"], sat=None, pol=None, tone=None, ratio=getRatio, color=getColorFormat, cam=camtest) - tlist.append((menuname,current_index)) + tunelist.append((menuname,current_index)) current_index+=1 - self.tuner_test_last_index = current_index-1 + if self.model == 3: + tlist.extend(tunelist) + self.tuner_test_last_index = current_index-1 + elif self.model == 4: + self.tunelist = tunelist + self.tuner_test_last_index = 4 + current_index = self.tuner_test_last_index + tlist.append((" %d. Tuning test" % current_index,self.tuner_test_last_index)) + current_index+=1 self.rs232testIndex=current_index tlist.append((" %d. RS232 test" % current_index,self.rs232testIndex)) current_index+=1 @@ -517,7 +590,10 @@ class FactoryTest(Screen): elif index==self.fronttestIndex: self.Test1() elif index>=self.tuner_test_first_index and index<=self.tuner_test_last_index: - self.TestTune(index) + if self.model == 0 or self.model == 1 or self.model == 2 or self.model == 3: + self.TestTune(index) + elif self.model == 4: + self.openTestTuneMenu() elif index==self.scarttestIndex: self.Test6() elif index==self.rs232testIndex: @@ -634,8 +710,10 @@ class FactoryTest(Screen): self.session.openWithCallback(self.displayresult ,FrontTest) elif self.model == 1: self.session.openWithCallback(self.displayresult ,FrontTest_solo) - elif self.model == 2 or self.model == 3 or self.model == 4: + elif self.model == 2 or self.model == 3: self.session.openWithCallback(self.displayresult ,FrontTest_uno) + elif self.model == 4: + self.session.openWithCallback(self.displayresult ,FrontTest_ultimo) def displayresult(self): global fronttest @@ -644,6 +722,16 @@ class FactoryTest(Screen): else: self.rlist[self["testlist"].getCurrent()[1]]="fail" + def openTestTuneMenu(self): + self.session.openWithCallback(self.TestTuneMenuResult ,TestTuneMenu, self.tuneInfo, self.tunelist, self.NimType) + + def TestTuneMenuResult(self,result): + if result : + self.rlist[self["testlist"].getCurrent()[1]]="pass" + else: + self.rlist[self["testlist"].getCurrent()[1]]="fail" + self["resultlist"].updateList(self.rlist) + def TestTune(self,index): if self.oldref is None: eref = eServiceReference("1:0:19:1324:3EF:1:C00000:0:0:0") @@ -833,7 +921,7 @@ class FactoryTest(Screen): hv == "" print "eSctest.getInstance().getFrontendstatus - %d"%result - if result == 0: + if result == 0 or result == -1: self.tunerlock = 0 self.tunemsgtimer.stop() self.session.nav.stopService() @@ -862,7 +950,7 @@ class FactoryTest(Screen): def tunemsg(self): self.tuningtimer.stop() - self.session.openWithCallback(self.tuneback, MessageBox, _("%s ok?" %(self["testlist"].getCurrent()[0])), MessageBox.TYPE_YESNO) + self.session.openWithCallback(self.tuneback, TuneMessageBox, _("%s ok?" %(self["testlist"].getCurrent()[0])), MessageBox.TYPE_YESNO) def setSourceVar(self): if self.model == 0: @@ -965,7 +1053,7 @@ class FactoryTest(Screen): self.agingtimer.start(2000,True) def agingCheck(self): - result = eSctest.getInstance().getFrontendstatus(0) + result = eSctest.getInstance().getFrontendstatus(0) hv = "Ver" print "eSctest.getInstance().getFrontendstatus - %d"%result if result == 0: @@ -1104,28 +1192,28 @@ class FactoryTest(Screen): self.getmacaddr() self.testing = 0 - def MemTest(self, which): - index = which - result = 0 - if index==0: - result = eMemtest.getInstance().dramtest() - elif index==1: - result = eMemtest.getInstance().flashtest() - result = 0 # temp - else: - result = eMemtest.getInstance().dramtest() - result = eMemtest.getInstance().flashtest() - result = 0 # temp +# def MemTest(self, which): +# index = which +# result = 0 +# if index==0: +# result = eMemtest.getInstance().dramtest() +# elif index==1: +# result = eMemtest.getInstance().flashtest() +# result = 0 # temp +# else: +# result = eMemtest.getInstance().dramtest() +# result = eMemtest.getInstance().flashtest() +# result = 0 # temp - index = index+10 +# index = index+10 - if result == 0: - print index,self.rlist[index] - self.rlist[index]="pass" - else: - print index,self.rlist[index] - self.rlist[index]="fail" - self["resultlist"].updateList(self.rlist) +# if result == 0: +# print index,self.rlist[index] +# self.rlist[index]="pass" +# else: +# print index,self.rlist[index] +# self.rlist[index]="fail" +# self["resultlist"].updateList(self.rlist) def scciresult(self): global smartcardtest @@ -1137,15 +1225,14 @@ class FactoryTest(Screen): def Test10(self): self.session.openWithCallback(self.scciresult ,SmartCardTest,stbmodel=self.model) - def Test11(self): - self.MemTest(1) +# def Test11(self): +# self.MemTest(1) - def Test12(self): - self.MemTest(2) - - def Test13(self): - self.MemTest(3) +# def Test12(self): +# self.MemTest(2) +# def Test13(self): +# self.MemTest(3) def Test14(self): try: @@ -1183,12 +1270,12 @@ class FactoryTest(Screen): ethtest = 0 class MacConfig(Screen): skin = """ - + - + - + """ def __init__(self, session, mactry = 1): @@ -1405,8 +1492,8 @@ class MacConfig(Screen): smartcardtest = 0 class SmartCardTest(Screen): skin = """ - - + + """ def __init__(self, session, stbmodel = 0): @@ -1427,7 +1514,6 @@ class SmartCardTest(Screen): global smartcardtest smartcardtest = 0 self.model = stbmodel - self.Testmode = 1 self.smartcardtimer.start(100,True) def check_smart_card(self): @@ -1435,19 +1521,13 @@ class SmartCardTest(Screen): index = self.smartcard result = 0 if index==0: - if self.Testmode==0: - result = eSctest.getInstance().check_smart_card("/dev/sci0") - else: - result = eSctest.getInstance().n_check_smart_card("/dev/sci0") + result = eSctest.getInstance().check_smart_card("/dev/sci0") elif index ==1: - if self.Testmode==0: - result = eSctest.getInstance().check_smart_card("/dev/sci1") - else: - result = eSctest.getInstance().n_check_smart_card("/dev/sci1") + result = eSctest.getInstance().check_smart_card("/dev/sci1") else: result = -1 - print result + print "check smartcard : ", result if result == 0: print 'pass' @@ -1497,8 +1577,8 @@ fronttest = 0 class FrontTest(Screen): skin = """ - - + + """ def __init__(self, session): @@ -1581,8 +1661,8 @@ class FrontTest(Screen): class FrontTest_solo(Screen): skin = """ - - + + """ def __init__(self, session): @@ -1790,7 +1870,12 @@ class FrontTest_uno(Screen): self.frontturnonoff = 0 eSctest.getInstance().turnoff_VFD() self.fronttimer.start(1000,True) - + +class FrontTest_ultimo(FrontTest_solo): + skin = """ + + + """ rstest = 0 @@ -1798,8 +1883,8 @@ import select class RS232Test(Screen): skin = """ - - + + """ step=1 def __init__(self, session): @@ -1848,9 +1933,19 @@ Agingresult = 0 class AgingTest(Screen): skin = """ - - - + + + + + + + SNRdB + + + + + AGC + """ step=1 def __init__(self, session): @@ -1928,6 +2023,297 @@ class AgingTest(Screen): Agingresult = 1 self.session.nav.stopService() # try to disable foreground service self.close() + +class TestTuneMenu(Screen): + skin = """ + + + + + """ + + def __init__(self ,session ,tuneInfo, tunelist,NimType): + self.session = session + self.NimType = NimType + self.tuneInfo = tuneInfo + self.tunelist = tunelist + self.model = 4 + self["actions"] = NumberActionMap(["OkCancelActions","WizardActions","NumberActions"], + { + "left": self.nothing, + "right":self.nothing, + "ok": self.TestAction, + "cancel": self.keyCancel, + "up": self.keyup, + "down": self.keydown, + "0": self.numberaction, + "1": self.numberaction, + "2": self.numberaction, + "3": self.numberaction, + "4": self.numberaction, + "5": self.numberaction, + "6": self.numberaction, + "7": self.numberaction, + "8": self.numberaction, + "9": self.numberaction, + + }, -2) + Screen.__init__(self, session) + self.text = _("Press 'EXIT' key to finish tune test.") + self["text"] = StaticText(self.text) + self.createConfig() + session.nav.stopService() # try to disable foreground service + + self.tunemsgtimer = eTimer() + self.tunemsgtimer.callback.append(self.tunemsg) + + self.camstep = 1 + self.camtimer = eTimer() + self.camtimer.callback.append(self.cam_state) + + self.tunerlock = 0 + self.tuningtimer = eTimer() + self.tuningtimer.callback.append(self.updateStatus) + self.setSourceVar() + self.avswitch = AVSwitch() + + def createConfig(self): + self.menulength= len(self.tunelist) + self["testlist"] = MenuList(self.tunelist) + self.rlist = [] + for x in range(self.menulength): + self.rlist.append(("..")) + self["resultlist"] = TestResultList(self.rlist) + + def TestAction(self): + print "line - ",self["testlist"].getCurrent()[1] + self.currentindex = index = self["testlist"].getCurrent()[1] + result = 0 + self.TestTune(index) + + def nothing(self): + print "nothing" + + def keyup(self): + print "self.menulength = ",self.menulength + print "self[\"testlist\"].getCurrent()[1] = ",self["testlist"].getCurrent()[1] + if self["testlist"].getCurrent()[1]==0: + self["testlist"].moveToIndex(self.menulength-1) + self["resultlist"].moveToIndex(self.menulength-1) + else: + self["testlist"].up() + self["resultlist"].up() + + + def keydown(self): + print "self.menulength = ",self.menulength + print "self[\"testlist\"].getCurrent()[1] = ",self["testlist"].getCurrent()[1] + if self["testlist"].getCurrent()[1]==(self.menulength-1): + self["testlist"].moveToIndex(0) + self["resultlist"].moveToIndex(0) + else: + self["testlist"].down() + self["resultlist"].down() + + def numberaction(self, number): + if number >= self.menulength: + return + index = int(number) + self["testlist"].moveToIndex(index) + self["resultlist"].moveToIndex(index) + + def keyCancel(self): + print "testtunemenu exit" + if not '..' in self.rlist and not 'fail' in self.rlist: + self.close(True) + else: + self.close(False) +# if self.oldref is not None: +# self.session.nav.playService(self.oldref) + + def TestTune(self,index): + ref = eServiceReference("1:0:19:1324:3EF:1:C00000:0:0:0") + self.session.nav.stopService() # try to disable foreground service + getTuneInfo=self.tuneInfo[index] + if getTuneInfo["cam"] is True: + self.camstep = 1 + self.camtimer.start(100,True) + if getTuneInfo["type"].startswith("DVB-S"): + if getTuneInfo["pol"] == "H": + ref.setData(0,1) + ref.setData(1,0x6D3) + ref.setData(2,0x3) + ref.setData(3,0xA4) + else: + ref.setData(0,0x19) + ref.setData(1,0x1325) + ref.setData(2,0x3ef) + ref.setData(3,0x1) + if getTuneInfo["sat"] == "160": # Eutelsat W2 + ref.setData(4,0xA00000) + elif getTuneInfo["sat"] == "100": # Eutelsat + ref.setData(4,0x64af79) + elif getTuneInfo["sat"] == "130": # Hotbird + ref.setData(4,0x820000) + elif getTuneInfo["sat"] == "192": # Astra + ref.setData(4,0xC00000) + elif getTuneInfo["sat"] == "620": # Intelsat 902 + ref.setData(4,0x26c0000) # need to fix later + elif getTuneInfo["sat"] == "642": # Intelsat 906 + ref.setData(4,0x282AF79) # need to fix later + elif getTuneInfo["type"].startswith("DVB-C"): + ref.setData(0,0x19) + ref.setData(1,0x1325) + ref.setData(2,0x3ef) + ref.setData(3,0x1) + ref.setData(4,-64870) # ffff029a + elif getTuneInfo["type"].startswith("DVB-T"): + ref.setData(0,0x19) + ref.setData(1,0x1325) + ref.setData(2,0x3ef) + ref.setData(3,0x1) + ref.setData(4,-286391716) # eeee025c + self.session.nav.playService(ref) + if getTuneInfo["color"]=="CVBS": + self.avswitch.setColorFormat(0) + elif getTuneInfo["color"]=="RGB": + self.avswitch.setColorFormat(1) + elif getTuneInfo["color"]=="YC": + self.avswitch.setColorFormat(2) + if getTuneInfo["ratio"] == "4:3": + self.avswitch.setAspectRatio(0) + elif getTuneInfo["ratio"] == "16:9": + self.avswitch.setAspectRatio(6) + self.tuningtimer.start(2000,True) + self.tunemsgtimer.start(3000, True) + + def cam_state(self): + current_index = self.currentindex + if self.camstep == 1: + slot = 0 + state = eDVBCI_UI.getInstance().getState(slot) + print '-1-stat',state + if state > 0: + self.camstep=2 + self.camtimer.start(100,True) + else: + self.session.nav.stopService() + self.session.open( MessageBox, _("CAM1_NOT_INSERTED\nPress exit!"), MessageBox.TYPE_ERROR) + self.rlist[current_index]="fail" + self.tunemsgtimer.stop() + elif self.camstep == 2: + slot = 0 + appname = eDVBCI_UI.getInstance().getAppName(slot) + print 'appname',appname + if appname is None: + self.session.nav.stopService() + self.session.open( MessageBox, _("NO_GET_APPNAME\nPress exit!"), MessageBox.TYPE_ERROR) + self.rlist[current_index]="fail" + self.tunemsgtimer.stop() + else: + self.camstep=3 + self.camtimer.start(100,True) + elif self.camstep==3: + slot = 1 + state = eDVBCI_UI.getInstance().getState(slot) + print '-2-stat',state + if state > 0: + self.camstep=4 + self.camtimer.start(100,True) + else: + self.session.nav.stopService() + self.session.open( MessageBox, _("CAM2_NOT_INSERTED\nPress exit!"), MessageBox.TYPE_ERROR) + self.rlist[current_index]="fail" + self.tunemsgtimer.stop() + elif self.camstep == 4: + slot = 1 + appname = eDVBCI_UI.getInstance().getAppName(slot) + print 'appname',appname + if appname is None: + self.session.nav.stopService() + self.session.open( MessageBox, _("NO_GET_APPNAME\nPress exit!"), MessageBox.TYPE_ERROR) + self.rlist[current_index]="fail" + self.tunemsgtimer.stop() + else: + self.setSource() + self.camstep = 5 + + def updateStatus(self): + current_index = self.currentindex + getTuneInfo=self.tuneInfo[current_index] + result = eSctest.getInstance().getFrontendstatus(getTuneInfo["slot"]) + tunno = getTuneInfo["slot"]+1 + hv = getTuneInfo["pol"] + if hv == "H": + hv = "Hor" + elif hv == "V": + hv = "Ver" + else : + hv == "" + + print "eSctest.getInstance().getFrontendstatus - %d"%result + if result == 0 or result == -1: + self.tunerlock = 0 + self.tunemsgtimer.stop() + self.session.nav.stopService() + self.avswitch.setColorFormat(0) + self.session.open( MessageBox, _("Tune%d %s Locking Fail..."%(tunno,hv)), MessageBox.TYPE_ERROR) + self.rlist[current_index]="fail" + else : + self.tunerlock = 1 + + def tuneback(self,yesno): + current_index=self.currentindex + self.session.nav.stopService() # try to disable foreground service + if yesno and self.tunerlock == 1: + getTuneInfo=self.tuneInfo[current_index] + if getTuneInfo["cam"] and self.camstep < 5: # need fix to depending about CAM exist + self.rlist[current_index]="fail" + else : + self.rlist[current_index]="pass" + else: + self.rlist[current_index]="fail" + if self.tuneInfo[current_index]["color"] == "YC": + self.avswitch.setColorFormat(0) + self.resetSource() + self["resultlist"].updateList(self.rlist) + + def tunemsg(self): + self.tuningtimer.stop() + self.session.openWithCallback(self.tuneback, TuneMessageBox, _("%s ok?" %(self["testlist"].getCurrent()[0])), MessageBox.TYPE_YESNO) + + def setSourceVar(self): + self.input_pad_num=len(self.NimType)-1 + if self.input_pad_num == 0: + self.setTuner = 'A' + elif self.input_pad_num == 1: + self.setTuner = 'B' + elif self.input_pad_num == 2: + self.setTuner = 'C' + +# ikseong - for 22000 tp + def setSource(self): +# fix input source + inputname = ("/proc/stb/tsmux/input%d" % self.input_pad_num) + print " inputname : ",inputname + fd=open(inputname,"w") + fd.write("CI0") + fd.close() +# fix ci_input Tuner + filename = ("/proc/stb/tsmux/ci0_input") + fd = open(filename,'w') + fd.write(self.setTuner) + print "setTuner(CI0) : ",self.setTuner + fd.close() + print "CI loop test!!!!!!!!!!!!!!" + + def resetSource(self): + inputname = ("/proc/stb/tsmux/input%d" % self.input_pad_num) + print " inputname : ",inputname + fd=open(inputname,"w") + fd.write(self.setTuner) + fd.close() + print "CI loop test end!!!!!!!!!!!!!!" session = None diff --git a/lib/python/Plugins/SystemPlugins/FactoryTest/sctest.py b/lib/python/Plugins/SystemPlugins/FactoryTest/sctest.py new file mode 100755 index 0000000..6afa81d --- /dev/null +++ b/lib/python/Plugins/SystemPlugins/FactoryTest/sctest.py @@ -0,0 +1,232 @@ +# This file was automatically generated by SWIG (http://www.swig.org). +# Version 1.3.39 +# +# Do not make changes to this file unless you know what you are doing--modify +# the SWIG interface file instead. +# This file is compatible with both classic and new-style classes. + +from sys import version_info +if version_info >= (2,6,0): + def swig_import_helper(): + from os.path import dirname + import imp + fp = None + try: + fp, pathname, description = imp.find_module('_sctest', [dirname(__file__)]) + except ImportError: + import _sctest + return _sctest + if fp is not None: + try: + _mod = imp.load_module('_sctest', fp, pathname, description) + finally: + fp.close() + return _mod + _sctest = swig_import_helper() + del swig_import_helper +else: + import _sctest +del version_info +try: + _swig_property = property +except NameError: + pass # Python < 2.2 doesn't have 'property'. +def _swig_setattr_nondynamic(self,class_type,name,value,static=1): + if (name == "thisown"): return self.this.own(value) + if (name == "this"): + if type(value).__name__ == 'SwigPyObject': + self.__dict__[name] = value + return + method = class_type.__swig_setmethods__.get(name,None) + if method: return method(self,value) + if (not static) or hasattr(self,name): + self.__dict__[name] = value + else: + raise AttributeError("You cannot add attributes to %s" % self) + +def _swig_setattr(self,class_type,name,value): + return _swig_setattr_nondynamic(self,class_type,name,value,0) + +def _swig_getattr(self,class_type,name): + if (name == "thisown"): return self.this.own() + method = class_type.__swig_getmethods__.get(name,None) + if method: return method(self) + raise AttributeError(name) + +def _swig_repr(self): + try: strthis = "proxy of " + self.this.__repr__() + except: strthis = "" + return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,) + +try: + _object = object + _newclass = 1 +except AttributeError: + class _object : pass + _newclass = 0 + + +FE_HAS_SIGNAL = _sctest.FE_HAS_SIGNAL +FE_HAS_CARRIER = _sctest.FE_HAS_CARRIER +FE_HAS_VITERBI = _sctest.FE_HAS_VITERBI +FE_HAS_SYNC = _sctest.FE_HAS_SYNC +FE_HAS_LOCK = _sctest.FE_HAS_LOCK +FE_TIMEDOUT = _sctest.FE_TIMEDOUT +FE_REINIT = _sctest.FE_REINIT +class eSctest(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, eSctest, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, eSctest, name) + __repr__ = _swig_repr + def __init__(self): + this = _sctest.new_eSctest() + try: self.this.append(this) + except: self.this = this + __swig_destroy__ = _sctest.delete_eSctest + __del__ = lambda self : None; + def check_smart_card(self, *args): return _sctest.eSctest_check_smart_card(self, *args) + def VFD_Open(self): return _sctest.eSctest_VFD_Open(self) + def VFD_Close(self): return _sctest.eSctest_VFD_Close(self) + def turnon_VFD(self): return _sctest.eSctest_turnon_VFD(self) + def turnoff_VFD(self): return _sctest.eSctest_turnoff_VFD(self) + def getFrontendstatus(self, *args): return _sctest.eSctest_getFrontendstatus(self, *args) + __swig_getmethods__["getInstance"] = lambda x: _sctest.eSctest_getInstance + if _newclass:getInstance = staticmethod(_sctest.eSctest_getInstance) +eSctest_swigregister = _sctest.eSctest_swigregister +eSctest_swigregister(eSctest) + +def eSctest_getInstance(): + return _sctest.eSctest_getInstance() +eSctest_getInstance = _sctest.eSctest_getInstance + +SCI_CLASS_A = _sctest.SCI_CLASS_A +SCI_CLASS_B = _sctest.SCI_CLASS_B +SCI_CLASS_AB = _sctest.SCI_CLASS_AB +SCI_NUMBER_OF_CONTROLLERS = _sctest.SCI_NUMBER_OF_CONTROLLERS +SCI_BUFFER_SIZE = _sctest.SCI_BUFFER_SIZE +SCI_CLOCK_STOP_DISABLED = _sctest.SCI_CLOCK_STOP_DISABLED +SCI_CLOCK_STOP_LOW = _sctest.SCI_CLOCK_STOP_LOW +SCI_CLOCK_STOP_HIGH = _sctest.SCI_CLOCK_STOP_HIGH +SCI_MAX_ATR_SIZE = _sctest.SCI_MAX_ATR_SIZE +SCI_MAX_F = _sctest.SCI_MAX_F +SCI_MAX_ETU = _sctest.SCI_MAX_ETU +SCI_MAX_WWT = _sctest.SCI_MAX_WWT +SCI_MAX_CWT = _sctest.SCI_MAX_CWT +SCI_MAX_BWT = _sctest.SCI_MAX_BWT +SCI_MAX_EGT = _sctest.SCI_MAX_EGT +SCI_MIN_F = _sctest.SCI_MIN_F +SCI_MIN_ETU = _sctest.SCI_MIN_ETU +SCI_MIN_WWT = _sctest.SCI_MIN_WWT +SCI_MIN_CWT = _sctest.SCI_MIN_CWT +SCI_MIN_BWT = _sctest.SCI_MIN_BWT +SCI_MIN_EGT = _sctest.SCI_MIN_EGT +SCI_SYNC = _sctest.SCI_SYNC +SCI_DATA_ANY = _sctest.SCI_DATA_ANY +RFU = _sctest.RFU +SCI_ERROR_OK = _sctest.SCI_ERROR_OK +SCI_ERROR_DRIVER_NOT_INITIALIZED = _sctest.SCI_ERROR_DRIVER_NOT_INITIALIZED +SCI_ERROR_FAIL = _sctest.SCI_ERROR_FAIL +SCI_ERROR_KERNEL_FAIL = _sctest.SCI_ERROR_KERNEL_FAIL +SCI_ERROR_NO_ATR = _sctest.SCI_ERROR_NO_ATR +SCI_ERROR_TS_CHARACTER_INVALID = _sctest.SCI_ERROR_TS_CHARACTER_INVALID +SCI_ERROR_LRC_FAIL = _sctest.SCI_ERROR_LRC_FAIL +SCI_ERROR_CRC_FAIL = _sctest.SCI_ERROR_CRC_FAIL +SCI_ERROR_LENGTH_FAIL = _sctest.SCI_ERROR_LENGTH_FAIL +SCI_ERROR_PARITY_FAIL = _sctest.SCI_ERROR_PARITY_FAIL +SCI_ERROR_RX_OVERFLOW_FAIL = _sctest.SCI_ERROR_RX_OVERFLOW_FAIL +SCI_ERROR_TX_OVERFLOW_FAIL = _sctest.SCI_ERROR_TX_OVERFLOW_FAIL +SCI_ERROR_TX_UNDERRUN_FAIL = _sctest.SCI_ERROR_TX_UNDERRUN_FAIL +SCI_ERROR_CARD_NOT_PRESENT = _sctest.SCI_ERROR_CARD_NOT_PRESENT +SCI_ERROR_CARD_NOT_ACTIVATED = _sctest.SCI_ERROR_CARD_NOT_ACTIVATED +SCI_ERROR_AWT_TIMEOUT = _sctest.SCI_ERROR_AWT_TIMEOUT +SCI_ERROR_WWT_TIMEOUT = _sctest.SCI_ERROR_WWT_TIMEOUT +SCI_ERROR_CWT_TIMEOUT = _sctest.SCI_ERROR_CWT_TIMEOUT +SCI_ERROR_BWT_TIMEOUT = _sctest.SCI_ERROR_BWT_TIMEOUT +SCI_ERROR_PARAMETER_OUT_OF_RANGE = _sctest.SCI_ERROR_PARAMETER_OUT_OF_RANGE +SCI_ERROR_TRANSACTION_ABORTED = _sctest.SCI_ERROR_TRANSACTION_ABORTED +SCI_ERROR_CLOCK_STOP_DISABLED = _sctest.SCI_ERROR_CLOCK_STOP_DISABLED +SCI_ERROR_TX_PENDING = _sctest.SCI_ERROR_TX_PENDING +SCI_ERROR_ATR_PENDING = _sctest.SCI_ERROR_ATR_PENDING +class SCI_MODES(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, SCI_MODES, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, SCI_MODES, name) + __repr__ = _swig_repr + __swig_setmethods__["emv2000"] = _sctest.SCI_MODES_emv2000_set + __swig_getmethods__["emv2000"] = _sctest.SCI_MODES_emv2000_get + if _newclass:emv2000 = _swig_property(_sctest.SCI_MODES_emv2000_get, _sctest.SCI_MODES_emv2000_set) + __swig_setmethods__["dma"] = _sctest.SCI_MODES_dma_set + __swig_getmethods__["dma"] = _sctest.SCI_MODES_dma_get + if _newclass:dma = _swig_property(_sctest.SCI_MODES_dma_get, _sctest.SCI_MODES_dma_set) + __swig_setmethods__["man_act"] = _sctest.SCI_MODES_man_act_set + __swig_getmethods__["man_act"] = _sctest.SCI_MODES_man_act_get + if _newclass:man_act = _swig_property(_sctest.SCI_MODES_man_act_get, _sctest.SCI_MODES_man_act_set) + __swig_setmethods__["rw_mode"] = _sctest.SCI_MODES_rw_mode_set + __swig_getmethods__["rw_mode"] = _sctest.SCI_MODES_rw_mode_get + if _newclass:rw_mode = _swig_property(_sctest.SCI_MODES_rw_mode_get, _sctest.SCI_MODES_rw_mode_set) + def __init__(self): + this = _sctest.new_SCI_MODES() + try: self.this.append(this) + except: self.this = this + __swig_destroy__ = _sctest.delete_SCI_MODES + __del__ = lambda self : None; +SCI_MODES_swigregister = _sctest.SCI_MODES_swigregister +SCI_MODES_swigregister(SCI_MODES) + +class SCI_PARAMETERS(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, SCI_PARAMETERS, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, SCI_PARAMETERS, name) + __repr__ = _swig_repr + __swig_setmethods__["T"] = _sctest.SCI_PARAMETERS_T_set + __swig_getmethods__["T"] = _sctest.SCI_PARAMETERS_T_get + if _newclass:T = _swig_property(_sctest.SCI_PARAMETERS_T_get, _sctest.SCI_PARAMETERS_T_set) + __swig_setmethods__["FI"] = _sctest.SCI_PARAMETERS_FI_set + __swig_getmethods__["FI"] = _sctest.SCI_PARAMETERS_FI_get + if _newclass:FI = _swig_property(_sctest.SCI_PARAMETERS_FI_get, _sctest.SCI_PARAMETERS_FI_set) + __swig_setmethods__["ETU"] = _sctest.SCI_PARAMETERS_ETU_set + __swig_getmethods__["ETU"] = _sctest.SCI_PARAMETERS_ETU_get + if _newclass:ETU = _swig_property(_sctest.SCI_PARAMETERS_ETU_get, _sctest.SCI_PARAMETERS_ETU_set) + __swig_setmethods__["WWT"] = _sctest.SCI_PARAMETERS_WWT_set + __swig_getmethods__["WWT"] = _sctest.SCI_PARAMETERS_WWT_get + if _newclass:WWT = _swig_property(_sctest.SCI_PARAMETERS_WWT_get, _sctest.SCI_PARAMETERS_WWT_set) + __swig_setmethods__["CWT"] = _sctest.SCI_PARAMETERS_CWT_set + __swig_getmethods__["CWT"] = _sctest.SCI_PARAMETERS_CWT_get + if _newclass:CWT = _swig_property(_sctest.SCI_PARAMETERS_CWT_get, _sctest.SCI_PARAMETERS_CWT_set) + __swig_setmethods__["BWT"] = _sctest.SCI_PARAMETERS_BWT_set + __swig_getmethods__["BWT"] = _sctest.SCI_PARAMETERS_BWT_get + if _newclass:BWT = _swig_property(_sctest.SCI_PARAMETERS_BWT_get, _sctest.SCI_PARAMETERS_BWT_set) + __swig_setmethods__["EGT"] = _sctest.SCI_PARAMETERS_EGT_set + __swig_getmethods__["EGT"] = _sctest.SCI_PARAMETERS_EGT_get + if _newclass:EGT = _swig_property(_sctest.SCI_PARAMETERS_EGT_get, _sctest.SCI_PARAMETERS_EGT_set) + __swig_setmethods__["clock_stop_polarity"] = _sctest.SCI_PARAMETERS_clock_stop_polarity_set + __swig_getmethods__["clock_stop_polarity"] = _sctest.SCI_PARAMETERS_clock_stop_polarity_get + if _newclass:clock_stop_polarity = _swig_property(_sctest.SCI_PARAMETERS_clock_stop_polarity_get, _sctest.SCI_PARAMETERS_clock_stop_polarity_set) + __swig_setmethods__["check"] = _sctest.SCI_PARAMETERS_check_set + __swig_getmethods__["check"] = _sctest.SCI_PARAMETERS_check_get + if _newclass:check = _swig_property(_sctest.SCI_PARAMETERS_check_get, _sctest.SCI_PARAMETERS_check_set) + __swig_setmethods__["P"] = _sctest.SCI_PARAMETERS_P_set + __swig_getmethods__["P"] = _sctest.SCI_PARAMETERS_P_get + if _newclass:P = _swig_property(_sctest.SCI_PARAMETERS_P_get, _sctest.SCI_PARAMETERS_P_set) + __swig_setmethods__["I"] = _sctest.SCI_PARAMETERS_I_set + __swig_getmethods__["I"] = _sctest.SCI_PARAMETERS_I_get + if _newclass:I = _swig_property(_sctest.SCI_PARAMETERS_I_get, _sctest.SCI_PARAMETERS_I_set) + __swig_setmethods__["U"] = _sctest.SCI_PARAMETERS_U_set + __swig_getmethods__["U"] = _sctest.SCI_PARAMETERS_U_get + if _newclass:U = _swig_property(_sctest.SCI_PARAMETERS_U_get, _sctest.SCI_PARAMETERS_U_set) + def __init__(self): + this = _sctest.new_SCI_PARAMETERS() + try: self.this.append(this) + except: self.this = this + __swig_destroy__ = _sctest.delete_SCI_PARAMETERS + __del__ = lambda self : None; +SCI_PARAMETERS_swigregister = _sctest.SCI_PARAMETERS_swigregister +SCI_PARAMETERS_swigregister(SCI_PARAMETERS) + +SCI_WITHOUT_ATR = _sctest.SCI_WITHOUT_ATR +SCI_ATR_READY = _sctest.SCI_ATR_READY + + diff --git a/lib/python/enigma_python.i b/lib/python/enigma_python.i index 2816e09..7e250cf 100755 --- a/lib/python/enigma_python.i +++ b/lib/python/enigma_python.i @@ -99,8 +99,6 @@ is usually caused by not marking PSignals as immutable. #include #include #include -#include -#include %} %feature("ref") iObject "$this->AddRef(); /* eDebug(\"AddRef (%s:%d)!\", __FILE__, __LINE__); */ " @@ -219,8 +217,6 @@ typedef long time_t; %include %include %include -%include -%include /************** eptr **************/ /************** signals **************/ -- 2.7.4