/************************************************************************** * AW5306_Drv.h * * AW5306 Driver code version 1.0 * * Create Date : 2012/06/25 * * Modify Date : * * Create by : wuhaijun * **************************************************************************/ #ifndef AW5306_DRV_H #define AW5306_DRV_H #define Release_Ver 219 #define MAX_POINT 5 #define NUM_TX 21 // TX number of TOUCH IC #define NUM_RX 12 // RX number of TOUCH IC //#define NEWBASE_PROCESS //new base process need test!!! #define ABS(X) ((X > 0) ? (X) : (-X)) typedef enum{ RawDataMode = 0, DeltaMode, MonitorMode }enumWorkMode; typedef enum{ BASE_INITIAL, BASE_FAST_TRACE, BASE_STABLE, TEMP_DRIFT } CompensateMode; typedef struct { unsigned short Base[NUM_TX][NUM_RX]; unsigned short ChipBase[NUM_TX][NUM_RX]; signed char Flag[NUM_TX][NUM_RX]; signed char BaseCnt[NUM_TX][NUM_RX]; unsigned char CompensateFlag; unsigned char TraceTempIncCnt; unsigned char TraceTempDecCnt; unsigned char CompensateStateFrameCnt; short LastMaxDiff; CompensateMode CompensateState; unsigned int InitialFrameCnt; unsigned char PosBigAreaTouchFlag; unsigned char NegBigAreaTouchFlag; unsigned char BigAreaFirstFlag; unsigned char BigAreaChangeFlag; unsigned short BigTouchFrame; unsigned short FrameCnt; unsigned char LongStableCnt; unsigned char PosPeakCnt; unsigned char NegPeakCnt; unsigned char PeakCheckFrameCnt; unsigned char BaseFrozen; unsigned char PosPeakCompensateCnt[MAX_POINT]; unsigned char NegPeakCompensateCnt[MAX_POINT]; }STRUCTBASE; typedef struct { unsigned char Peak[MAX_POINT][2]; unsigned char LastPeak[MAX_POINT][2]; unsigned char NegPeak[MAX_POINT][2]; unsigned char CurrentPointNum; unsigned char CurrentNegPointNum; unsigned char LastPointNum; }STRUCTPEAK; typedef struct { unsigned short X,Y; // X,Y coordinate unsigned char PointID; // Assigned point ID unsigned char Event; // Event of current point }STRUCTPOINT; typedef struct { STRUCTPOINT PointInfo[MAX_POINT]; STRUCTPOINT RptPoint[MAX_POINT]; unsigned char PointNum; unsigned char LastPointNum; unsigned char NegPointNum; unsigned char FilterPointCnt; unsigned char FirstLiftUpFlag; unsigned char TouchStatus; unsigned char PointHoldCnt[MAX_POINT]; unsigned char PointPressCnt[MAX_POINT]; }STRUCTFRAME; typedef struct { unsigned char fileflag[14]; unsigned char TXOFFSET[(NUM_TX+1)/2]; unsigned char RXOFFSET[(NUM_RX+1)/2]; unsigned char TXCAC[NUM_TX]; unsigned char RXCAC[NUM_RX]; unsigned char TXGAIN[NUM_TX]; short SOFTOFFSET[NUM_TX][NUM_RX]; }STRUCTCALI; #define NOISE_LISTENING 0 #define NOISE_SCAN 1 #define NOISE_FREQ_JUMP 2 #define NOISE_SEEK_FAIL 3 #define NOISE_FRM_NORMAL 0 #define NOISE_FRM_PRE_MEASURE 1 #define NOISE_FRM_MEASURE 2 typedef struct { unsigned char AllFrmCnt; // Frame counter to generate noise meaure frame indicator unsigned char NoiseFrmCnt; // Frame counter for noise level checking unsigned char IdleFrmCnt; // No touch frame counter unsigned char State; // Noise checking state: LISTENING, SCAN, JUMP unsigned char FrmState; // Frame type indicator: PRE_MEAUSRE, MEAUSRE, NORMAL short NoiseNormal; // Noise in working freq short NoiseScan; // Noise in scan freq short Better_NoiseScan; //pfx:smaller Noise in Scan freq unsigned char Better_ScanFreqID; //pfx:the Scan Freq for the smaller Noise unsigned char ScanFreqID; // Scan freq ID unsigned char WorkFreqID; // Current freq ID short NoiseTh1; // Diff threshold for noise too high judgement char JumpTh; // frame number threshold for freq jumping char FailedFreqList [32]; // Searched freq indicator for freq scanning }STRUCTNOISE; void AW5306_TP_Init(void); void AW5306_TP_Reinit(void); void AW5306_Sleep(void); char AW5306_TouchProcess(void); void AW5306_ChargeMode(char mode); unsigned char AW5306_GetPointNum(void); unsigned char AW5306_GetPeakNum(void); char AW5306_GetPoint(int *x,int *y, int *id, int *event,char Index); void AW5306_GetBase(unsigned short *data, char x,char y); void AW5306_GetDiff(short *data, char x,char y); char AW5306_GetPeak(unsigned char *x,unsigned char *y,unsigned char Index); char AW5306_GetNegPeak(unsigned char *x,unsigned char *y,unsigned char Index); char AW5306_GetCalcPoint(unsigned short *x,unsigned short *y,unsigned char Index); char AW5306_CLB(void); void AW5306_CLB_GetCfg(void); void AW5306_CLB_WriteCfg(void); void TP_Force_Calibration(void); void FreqScan(unsigned char BaseFreq); #endif