Exemple #1
0
def tt4GetSysInf():            
    sysInfCmd=[0x04,0x00,0x05,0x00,0x2F,0x00,0x02]
    dataleng=0x0000
    while dataleng!=0x3300:
        tt4.i2cw(TT4Addr,sysInfCmd)
        try:
            #tt4.i2cw(TT4Addr,sysInfCmd)
            #tt4.delayMs(1.5)
            #if GPIO.input(bInt)==0:
            GPIO.wait_for_edge(bInt,GPIO.FALLING,timeout=300) 
            data=tt4.i2cr(TT4Addr,3)
            dataleng=(data[0]<<8)+data[1]
            if dataleng==0x3300:
                data=tt4.i2cr(TT4Addr,data[0]) 
                fwVer=(data[9]<<8)+data[10]
                fwRev=(data[11]<<16)+(data[12]<<8)+data[13]
                cfgVer=(data[14]<<8)+data[15]
                xNum=data[33]
                yNum=data[34]
                print 'fwVer :0x%04x'%fwVer
                print 'fwRev :0x%06x'%fwRev
                print 'cfgVer:0x%04x'%cfgVer
                print 'rxNum:0x%02x'%xNum
                print 'txNum:0x%02x'%yNum
                trNum=[xNum,yNum]
                return trNum
        except KeyboardInterrupt:
            tt4.ldoPowerOff()  
            GPIO.cleanup() 
Exemple #2
0
def tt4SusScan():
    susCommand=[0x04,0x00,0x05,0x00,0x2F,0x00,0x03]
    success=0x2F
    #tt4.i2cw(TT4Addr,susCommand)
    tt4.delayMs(1)
    while success!=0x1F:
        tt4.i2cw(TT4Addr,susCommand)
        try:
            #tt4.i2cw(TT4Addr,susCommand)
            GPIO.wait_for_edge(bInt,GPIO.FALLING,timeout=300) 
            result=tt4.i2cr(TT4Addr,5)
            success=result[2]
            print 'suspend scan response {0}'.format(result)
        except KeyboardInterrupt:
            tt4.ldoPowerOff()  
            GPIO.cleanup()
Exemple #3
0
def tt4PanlScan():
    scanCmd=[0x04,0x00,0x05,0x00,0x2F,0x00,0x2A]
    result=0xFFFF
    print 'start to do the panel scan'
    while result!=0x1F00:
        tt4.i2cw(TT4Addr,scanCmd)
        try:
            GPIO.wait_for_edge(bInt,GPIO.FALLING,timeout=500)
            data=tt4.i2cr(TT4Addr,6)
            result=(data[2]<<8)+data[5]
            if result==0x1F00:
               print 'Scan success:0x%04x'%result
            else:
               print 'Scan Fail :0x%04x'%result          
        except KeyboardInterrupt:
            tt4.ldoPowerOff()
            GPIO.cleanup()
Exemple #4
0
def tt4I(): 
    if len(sys.argv)>3:
        print 'Wring argument number'
        
    tt4.TT4Init()
    [xNum,yNum]=tt4.tt4GetSysInf()
    tPre=time.time()
    tt4.tt4SusScan()
    tNow=time.time()
    tDiff=(tNow-tPre)*1000
    print 'Suspend scan execute time:{0}' .format(tDiff)
    tPre=tNow
    
    try:    
        while True:
            print 'measure suspend current'
            time.sleep(2)
            
    except KeyboardInterrupt:
        tNow=time.time()
        tDiff=(tNow-tPre)*1000
        print 'Measure time :{0}' .format(tDiff)
        tt4.ldoPowerOff()               
        GPIO.cleanup()
Exemple #5
0
def tt4Sy(): 
    if len(sys.argv)<3 or len(sys.argv)>4:
        print 'wrong number of argument number'
        sys.exit()       
    elif len(sys.argv)==3 and sys.argv[2].startswith('--'):
        susTime=int(sys.argv[2][2:])
        fprint=0
        print 'suspend waiting time={0} sec' .format(susTime)        
    elif len(sys.argv)==4 and sys.argv[3].startswith('--'):
        susTime=int(sys.argv[2][2:]) # in sec
        filename=sys.argv[3][2:] 
        print filename
        fo = open(filename, "w")
        fprint=1
        print 'suspend waiting time={0} sec' .format(susTime)
    else:
        print 'wrong argument inputed'
        sys.exit()
       
    tt4.TT4Init()
    count=0
    tPalmon=0
    tInit=time.time()
    tPre=tInit
    print 'please put you palm on the screen.'
    print 'Please swipe the palm till suspend show finish'
    try:
        while True:
            if GPIO.input(bInt)==0 and tPalmon<=5000:
                #print 'time:%s INT Low'%time.time()
                count=count+1
                tNow=time.time()
                diff=(tNow-tPre)*1000
                tPalmon=(tNow-tInit)*1000
                tPre=tNow
                data1=tt4.readFgData(TT4Addr,3,10)
                a,b=tt4.TT4resolve(data1)
                count1=0
                #print a[0][4],a[0][3]
                if a[0][4]==0:
                    if a[0][3]==1:
                        print 'LO:{0}, large Object Detected' .format(a[0][3])
                        if fprint==1:
                            fo.write('RID:{0},TDF:{1},LO:{2},NE:{3},LargeObj\n'\
                            .format(a[0][1],diff,a[0][3],a[0][6]))
                    else:
                         print 'RID:{0}, liftoff' .format(a[0][1])
                         if fprint==1:
                            fo.write('RID:{0},TDF:{1},LO:{2},NE:{3},liftoff\n'\
                            .format(a[0][1],diff,a[0][3],a[0][6]))                                           
                else:
                    while count1<a[0][4]:
                        print 'RID:{0},TDF:{1},LO:{2},NE:{3},TIP:{4},EID:{5},TID:{6},{7},{8},{9},{10},{11},{12},'\
                        .format(a[0][1],diff,a[0][3],a[0][6],b[count1][1],\
                        b[count1][2],b[count1][3],b[count1][4],b[count1][5],\
                        b[count1][6],b[count1][7],b[count1][8],b[count1][9]) 
                        if fprint==1:
                            if count1==0:
                                fo.write('RID:{0},TDF:{1},LO:{2},NE:{3},'\
                                .format(a[0][1],diff,a[0][3],a[0][6]))
                                fo.write('Type:{0},TIP:{1},EID:{2},TID:{3},{4},{5},{6},{7},{8},{9},'\
                                .format(b[count1][0],b[count1][1],b[count1][2],b[count1][3],\
                                b[count1][4],b[count1][5],b[count1][6],b[count1][7],\
                                b[count1][8],b[count1][9])) 
                            else:
                                fo.write('Type:{0},TIP:{1},EID:{2},TID:{3},{4},{5},{6},{7},{8},{9},'\
                                .format(b[count1][0],b[count1][1],b[count1][2],b[count1][3],\
                                b[count1][4],b[count1][5],b[count1][6],b[count1][7],\
                                b[count1][8],b[count1][9])) 
            
                        count1=count1+1                   
                    if fprint==1:                
                        fo.write('\n')
                tt4.delayMs(0.5)
            elif tPalmon<=5000 and GPIO.input(bInt)==1:
                tcal=time.time()
                tPalmon=(tcal-tInit)*1000
                tt4.delayMs(1)            
            elif tPalmon>5000 and GPIO.input(bInt)==1:  # supend start
                tt4.tt4SusScan()
                print 'Scan susped start. Please swip the palm or finger on the screen'
                if fprint==1:
                    fo.write('Scan suspend start\n')
                tt4.delayMs(susTime*1000)               
                print 'Scan resume start. Please liftoff the palm and finger'
                tt4.tt4Resume()
                tInit=time.time()
                if fprint==1:
                    fo.write('Scan resumed\n')
                tPalmon=0
    except KeyboardInterrupt:
        print 'exit check :%s' %time.time()
        tt4.ldoPowerOff()               
        GPIO.cleanup()
        if fprint==1:
            fo.close()
Exemple #6
0
def tt4GetScan(txNum,rxNum,cmdNum):
    cmdNumM=cmdNum
    cmdNumS=cmdNum+3
    retriveScanDataM=[0x04,0x00,0x0A,0x00,0x2F,0x00,0x2B,0x00,0x00,0xFF,0xFF,cmdNumM]
    retriveScanDataS=[0x04,0x00,0x0A,0x00,0x2F,0x00,0x2B,0x00,0x00,0xFF,0xFF,cmdNumS]    
    totalByte=(txNum*rxNum)    
    mutual=np.zeros((1,totalByte*2))
    self=np.zeros((1,(txNum+rxNum)*2))
    
    # start to retrive data
    tt4PanlScan()
    
    print 'Start to retrive Data'    
    countByte=0
    index=0
    executeCmd=1
    while countByte<totalByte: # read Mutal data
        if executeCmd==1:
            tt4.i2cw(TT4Addr,retriveScanDataM)
        else:
           executeCmd=0
        try:
            #GPIO.wait_for_edge(bInt,GPIO.FALLING,timeout=500)            
            if GPIO.input(bInt)==0:
                result=tt4.i2cr(TT4Addr,2)
                print result
                packetLength=(result[1]<<8)+result[0]
                result=tt4.i2cr(TT4Addr,packetLength)
                thisSensByte=(result[8]<<8)+result[7]
                countByte=countByte+thisSensByte
                print 'countByte byte:{0}' .format(countByte)
                print 'This sense total byte:{0}'.format(packetLength)
                retriveScanDataM[7]=countByte&0x00FF      # offset value         
                retriveScanDataM[8]=(countByte>>8)&0xFF   # offset value
                count=0         
                while count<(thisSensByte*2):
                    val=int((result[count+11]<<8)+result[count+10])
                    if cmdNum==2:
                        val=twos_comp(val,16)
                    else: 
                        val=val
                    mutual[0][index]=val 
                    count=count+2
                    index=index+1
                tt4.delayMs(0.5)
                executeCmd=1
            else:
                tt4.delayMs(1)
                executeCmd=0                
        except KeyboardInterrupt:
            tt4.ldoPowerOff() 
            GPIO.cleanup()
# start to retrive Self data
    tt4PanlScan()    
    print 'Start to retvie self data'
    index=0
    countByte=0
    executeCmd=1
    while countByte<(txNum+rxNum):
        if executeCmd==1:
            tt4.i2cw(TT4Addr,retriveScanDataS)
        try:
            #GPIO.wait_for_edge(bInt,GPIO.FALLING)
            if GPIO.input(bInt)==0:
                result=tt4.i2cr(TT4Addr,2)
                packetLength=(result[1]<<8)+result[0]
                result=tt4.i2cr(TT4Addr,packetLength)
                thisSensByte=(result[8]<<8)+result[7]
                countByte=countByte+thisSensByte
                print 'countByte:{0}'.format(countByte)
                print 'PacketLength:{0}'.format(packetLength)
                retriveScanDataS[7]=countByte&0x00FF            
                retriveScanDataS[8]=(countByte>>8)&0xFF 
                count=0          
                while count<(thisSensByte*2):
                    val=int((result[count+11]<<8)+result[count+10])
                    if cmdNum==2:
                        val=twos_comp(val,16)
                    self[0][index]=val 
                    count=count+2
                    index=index+1
                tt4.delayMs(0.5)
                executeCmd=1
            else:
                tt4.delayMs(1)
                executeCmd=0                
        except KeyboardInterrupt:
            tt4.ldoPowerOff()
            GPIO.cleanup()
    return mutual,self    
Exemple #7
0
def tt4S():
    fprint=0
    if len(sys.argv)<3 or len(sys.argv)>5:
        print 'wrong argument'
        GPIO.cleanup()
        sys.exit()
    elif len(sys.argv)==3 and sys.argv[2].startswith('--'):
        print 'Without sav to file arguments'
        cmdNum=int(sys.argv[2][2:])
        print 'Command Number is: 0x%02x' %cmdNum
    elif len(sys.argv)==4 and sys.argv[3].startswith('--'):
        print 'with save to file arguments'
        cmdNum=int(sys.argv[2][2:])
        print 'Command Number is: 0x%02x' %cmdNum
        filename=sys.argv[3][2:]
        print 'fileName:{0}'.format(filename)          
        fo = open(filename, "w")
        fprint=1
    else:
        print 'wrong argument'
        
    tt4.TT4Init()
    tt4.delayMs(1)
    tt4.tt4SusScan()
    tt4.delayMs(1)
    [xNum,yNum]=tt4.tt4GetSysInf() #rx=x; tx=y
    totalByte=xNum*yNum*2      
    mutual=np.zeros((1,totalByte/2))
    self=np.zeros((1,(yNum+xNum)))    
    try:
        while True:
            print 'Initial get:%s' %time.time()      
            index=0
            indexTx=0        
            tt4.delayMs(2)           
            mutual,self=tt4GetScan(yNum,xNum,cmdNum)
            while index<(totalByte/2):
                print '{0},'.format(mutual[0][index]),
                if fprint==1:
                    fo.write('{0},'.format(mutual[0][index]))                      
                    index=index+1
                if index%xNum==0:
                    print '{0},'.format(self[0][indexTx+xNum]),
                    print ''
                    if fprint==1:
                        fo.write('{0}\n'.format(self[0][indexTx+xNum]))
                        indexTx=indexTx+1
                            
            for i in range(0,xNum):
                print '{0},'.format(self[0][i]),
                if fprint==1:
                    fo.write('{0},'.format(self[0][i]))
            print ''
            if fprint==1:
                fo.write('\n')
                fo.write('Page Start\n')
    except KeyboardInterrupt:
        print 'exit :%s' %time.time() 
        tt4.ldoPowerOff()  
        GPIO.cleanup()
        if fprint==1:
            fo.close()
Exemple #8
0
def tt4GetRawData(txNum,rxNum):
    cmSelfTestCmd=[0x04,0x00,0x06,0x00,0x2F,0x00,0x26,0x05]
    cmGetRepCmd=[0x04,0x00,0x0A,0x00,0x2F,0x00,0x27,0x00,0x00,0xFF,0xFF,0x05]
    cpSelfTestCmd=[0x04,0x00,0x06,0x00,0x2F,0x00,0x26,0x06]
    cpGetRepCmd=[0x04,0x00,0x0A,0x00,0x2F,0x00,0x27,0x00,0x00,0xFF,0xFF,0x06]
    totalByte=(txNum*rxNum*2)+2    
    cmRawData=np.zeros((1,totalByte/2))
    #icpRawData=np.zeros((1,txNum+rxNum+2))
    cpRawData=np.zeros((1,(txNum*2+rxNum*2)))
    
    # start to do Cm Self test
    print 'start to do Cm Self test'
    statusResult=0xFFFF
    while statusResult!=0x0000:
        tt4.i2cw(TT4Addr,cmSelfTestCmd)
        try:        
            GPIO.wait_for_edge(bInt,GPIO.FALLING,timeout=300) 
            result=tt4.i2cr(TT4Addr,7)
            statusResult=(result[5]<<8)+result[6]
            print result
            if statusResult==0x0000:            
                print 'Cm Self Test Status+Result:0x%04x' %statusResult
            elif result[5]==0xff:
                print 'not support Cm self test ID 0x05'
                GPIO.cleanup()
                sys.exit()
            elif result[6]==0x01:
                print 'Cm self test Fail'
                GPIO.cleanup()
                sys.exit()               
        except KeyboardInterrupt:
            tt4.ldoPowerOff()  
            GPIO.cleanup()
    
    countByte=0
    index=0
    executeCmd=1
    while countByte<totalByte: # read Cm self test raw data;
        if executeCmd==1:
            tt4.i2cw(TT4Addr,cmGetRepCmd)
        try:
            #GPIO.wait_for_edge(bInt,GPIO.FALLING,timeout=500)            
            if GPIO.input(bInt)==0:
                result=tt4.i2cr(TT4Addr,2)
                print result
                packetLength=(result[1]<<8)+result[0]
                result=tt4.i2cr(TT4Addr,packetLength)
                thisSensByte=(result[8]<<8)+result[7]
                countByte=countByte+thisSensByte
                print 'countByte byte:{0}' .format(countByte)
                print 'This sense total byte:{0}'.format(packetLength)
                cmGetRepCmd[7]=countByte&0x00FF      # offset value         
                cmGetRepCmd[8]=(countByte>>8)&0xFF   # offset value
                count=0         
                while count<(thisSensByte):
                    cmRawData[0][index]=int((result[count+11]<<8)+result[count+10]) #fF/10
                    count=count+2
                    index=index+1
                tt4.delayMs(1)
                executeCmd=1
            else:
                tt4.delayMs(2)
                executeCmd=0                
        except KeyboardInterrupt:
            tt4.ldoPowerOff()
            GPIO.clearnup()
    #Send Cp Self test start     
    statusResult=0xFFFF     
    tt4.i2cw(TT4Addr,cpSelfTestCmd)     
    try:
        while statusResult==0xFFFF:
            GPIO.wait_for_edge(bInt,GPIO.FALLING,timeout=300) 
            result=tt4.i2cr(TT4Addr,7)
            statusResult=(result[5]<<8)+result[6]
            print result
            if statusResult==0x0000:            
                print 'Cp Self Test Status+Result:0x%04x' %statusResult
            elif result[5]==0xFF:
                print 'not support Cp self test ID 0x06'
                GPIO.cleanup()
                sys.exit()
            elif result[6]==0x01:
                print 'not support Cp self test fail'
                tt4.ldoPowerOff()
                GPIO.cleanup()
                sys.exit()           
    except KeyboardInterrupt:
        tt4.ldoPowerOff()
        GPIO.cleanup()
    index=0
    countByte=0
    executeCmd=1
    while countByte<(txNum+rxNum)*4:
        index=0
        #countByte=0
        tt4.i2cw(TT4Addr,cpGetRepCmd)
        try:
            #GPIO.wait_for_edge(bInt,GPIO.FALLING)
            if GPIO.input(bInt)==0:
                result=tt4.i2cr(TT4Addr,2)
                packetLength=(result[1]<<8)+result[0]
                result=tt4.i2cr(TT4Addr,packetLength)
                thisSensByte=(result[8]<<8)+result[7]
                countByte=countByte+thisSensByte
                print 'Cp countByte:{0}'.format(countByte)
                print 'Cp PacketLength:{0}'.format(packetLength)
                cpGetRepCmd[7]=countByte&0x00FF            
                cpGetRepCmd[8]=(countByte>>8)&0xFF 
                count=0          
                while count<(thisSensByte):
                    cpRawData[0][index]=int((result[count+11]<<8)+result[count+10]) #fF/10
                    count=count+2
                    index=index+1
                tt4.delayMs(1)
                executeCmd=1
            else:
                executeCmd=0
                tt4.delayMs(2)                
        except KeyboardInterrupt:
            tt4.ldoPowerOff() 
            GPIO.cleanup()
    return cmRawData,cpRawData    
Exemple #9
0
def tt4R():
    fprint=0
    if len(sys.argv)<2 or len(sys.argv)>4:
        print 'no tx or rx number arguments or wrong arguments'
        GPIO.cleanup()
        sys.exit()
#    elif len(sys.argv)==3:
#        Print 'start to get the system information'
#        sysinf=int(sys.argv[2][2:])
#        if sysinf=='sysInf':
#            tt4GetSysInf()
#    elif len(sys.argv)==4:
#        print 'no save to file arguments'
#        txNum=int(sys.argv[2][2:])
#        rxNum=int(sys.argv[3][2:])
#        print 'txNum:{0},rxNum{1}'.format(txNum,rxNum)
#        fprint=0
    elif len(sys.argv)==3:
        print 'with save to file arguments'
        #txNum=int(sys.argv[2][2:])
        #rxNum=int(sys.argv[3][2:])
        filename=sys.argv[2][2:]
        print 'fileName:{0}'.format(filename)          
        fo = open(filename, "w")
        fprint=1
    
    tt4.TT4Init()
    tt4.delayMs(10)
    tt4SusScan()
    tt4.delayMs(10)
    [txNum,rxNum]=tt4GetSysInf()

    totalByte=txNum*rxNum*2+2      
    cmRawData=np.zeros((1,totalByte/2))
    cpRawData=np.zeros((1,(txNum+rxNum)*2))    

    while True:
        print 'Initial get:%s' %time.time()      
        index=0
        indexTx=0
        
        try:
            tt4.delayMs(1)
            cmRawData,cpRawData=tt4GetRawData(txNum,rxNum)
            while index<(totalByte/2):
                print '{0},'.format(cmRawData[0][index]),
                if fprint==1:
                    fo.write('{0},'.format(cmRawData[0][index]))                      
                index=index+1
                if index%rxNum==0:
                    print '{0},'.format(cpRawData[0][indexTx]),
                    print ''
                    if fprint==1:
                        fo.write('{0}\n'.format(cpRawData[0][indexTx]))
                        indexTx=indexTx+1
                        
            for i in range(txNum*2,txNum*2+rxNum-1):
                print '{0},'.format(cpRawData[0][i]),
                if fprint==1:
                    fo.write('{0},'.format(cpRawData[0][i]))
            print ''
            if fprint==1:
                fo.write('\n')
                fo.write('page start \n')
        except KeyboardInterrupt:
            print 'exit :%s' %time.time()
            tt4.ldoPowerOff()            
            GPIO.cleanup()
            if fprint==1:
                fo.close()
            break
Exemple #10
0
def tt4P(): 
    if len(sys.argv)<2 or len(sys.argv)>3:
        print 'wrong argument'
        sys.exit()
    elif len(sys.argv)==3 and sys.argv[2].startswith('--'):
        filename=sys.argv[2][2:] 
        print filename
        fo = open(filename, "w")
        fprint=1
    elif len(sys.argv)==2 and sys.argv[2].startswith('--'):
        fprint=0
    else:
        print 'wrong argument inputed'
        
        
    tt4.TT4Init()
    count=0
    tPre=time.time()
    try:
        while True:    
            tt4.delayMs(0.02)
            #print 'before Falling'
            if GPIO.input(bInt)==0:
                #print 'time:%s INT Low'%time.time()
                count=count+1
                tNow=time.time()
                diff=(tNow-tPre)*1000
                tPre=tNow
                data1=tt4.readFgData(TT4Addr,3,10)
                a,b=tt4.TT4resolve(data1)
                count1=0
                #print a[0][4],a[0][3]
                if a[0][4]==0:
                    if a[0][3]==1:
                        print 'LO:{0}, large Object Detected' .format(a[0][3])
                        if fprint==1:
                            fo.write('RID:{0},TDF:{1},LO:{2},NE:{3},largeObject`\n'\
                            .format(a[0][1],diff,a[0][3],a[0][6]))
                    else:
                         print 'RID:{0}, liftoff' .format(a[0][1])
                         if fprint==1:
                            fo.write('RID:{0},TDF:{1},LO:{2},NE:{3},liftoff\n'\
                            .format(a[0][1],diff,a[0][3],a[0][6]))                                           
                else:
                    while count1<a[0][4]:
                        print 'RID:{0},TDF:{1},LO:{2},NE:{3},TIP:{4},EID:{5},TID:{6},{7},{8},{9},{10},{11},{12},'\
                        .format(a[0][1],diff,a[0][3],a[0][6],b[count1][1],\
                        b[count1][2],b[count1][3],b[count1][4],b[count1][5],\
                        b[count1][6],b[count1][7],b[count1][8],b[count1][9]) 
                        if fprint==1:
                            if count1==0:
                                fo.write('RID:{0},TDF:{1},LO:{2},NE:{3},'\
                                .format(a[0][1],diff,a[0][3],a[0][6]))
                                fo.write('Type:{0},TIP:{1},EID:{2},TID:{3},{4},{5},{6},{7},{8},{9},'\
                                .format(b[count1][0],b[count1][1],b[count1][2],b[count1][3],\
                                b[count1][4],b[count1][5],b[count1][6],b[count1][7],\
                                b[count1][8],b[count1][9])) 
                            else:
                                fo.write('Type:{0},TIP:{1},EID:{2},TID:{3},{4},{5},{6},{7},{8},{9},'\
                                .format(b[count1][0],b[count1][1],b[count1][2],b[count1][3],\
                                b[count1][4],b[count1][5],b[count1][6],b[count1][7],\
                                b[count1][8],b[count1][9])) 
            
                        count1=count1+1                   
                    if fprint==1:                
                        fo.write('\n')
                    tt4.delayMs(0.5)
            else:
                tt4.delayMs(1)
    except KeyboardInterrupt:
        print 'exit check :%s' %time.time()
        tt4.ldoPowerOff()               
        GPIO.cleanup()
        if fprint==1:
            fo.close()