This is the final version of Mini Gateway for Automation and Security desgined for Renesas GR Peach Design Contest

Dependencies:   GR-PEACH_video GraphicsFramework HTTPServer R_BSP mbed-rpc mbed-rtos Socket lwip-eth lwip-sys lwip FATFileSystem

Fork of mbed-os-example-mbed5-blinky by mbed-os-examples

Committer:
vipinranka
Date:
Wed Jan 11 11:41:30 2017 +0000
Revision:
12:9a20164dcc47
This is the final version MGAS Project for Renesas GR Peach Design Contest

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vipinranka 12:9a20164dcc47 1 /**************************************************************************************************
vipinranka 12:9a20164dcc47 2 ***** *****
vipinranka 12:9a20164dcc47 3 ***** Name: Touch.cpp *****
vipinranka 12:9a20164dcc47 4 ***** Ver.: 1.0 *****
vipinranka 12:9a20164dcc47 5 ***** Date: 04/01/2013 *****
vipinranka 12:9a20164dcc47 6 ***** Auth: Frank Vannieuwkerke *****
vipinranka 12:9a20164dcc47 7 ***** Erik Olieman *****
vipinranka 12:9a20164dcc47 8 ***** Func: Touch driver for use with ADS7843 *****
vipinranka 12:9a20164dcc47 9 ***** *****
vipinranka 12:9a20164dcc47 10 ***** Code based on Carlos E. Vidales tutorial : *****
vipinranka 12:9a20164dcc47 11 ***** How To Calibrate Touch Screens *****
vipinranka 12:9a20164dcc47 12 ***** www.embedded.com/design/configurable-systems/4023968/How-To-Calibrate-Touch-Screens *****
vipinranka 12:9a20164dcc47 13 ***** *****
vipinranka 12:9a20164dcc47 14 **************************************************************************************************/
vipinranka 12:9a20164dcc47 15
vipinranka 12:9a20164dcc47 16 #include "Touch.h"
vipinranka 12:9a20164dcc47 17 #include "mbed.h"
vipinranka 12:9a20164dcc47 18 #include "Arial12x12.h"
vipinranka 12:9a20164dcc47 19
vipinranka 12:9a20164dcc47 20 #define THRESHOLD 2
vipinranka 12:9a20164dcc47 21
vipinranka 12:9a20164dcc47 22 TouchScreenADS7843::TouchScreenADS7843(PinName tp_mosi, PinName tp_miso, PinName tp_sclk, PinName tp_cs, PinName tp_irq, ILI9486 *_LCD)
vipinranka 12:9a20164dcc47 23 : LCD(_LCD), _tp_spi(tp_mosi, tp_miso, tp_sclk), _tp_cs(tp_cs), _tp_irq(tp_irq)
vipinranka 12:9a20164dcc47 24 {
vipinranka 12:9a20164dcc47 25 DisplaySample[0].x=45;
vipinranka 12:9a20164dcc47 26 DisplaySample[0].y=45;
vipinranka 12:9a20164dcc47 27 DisplaySample[1].x=45;
vipinranka 12:9a20164dcc47 28 DisplaySample[1].y=270;
vipinranka 12:9a20164dcc47 29 DisplaySample[2].x=190;
vipinranka 12:9a20164dcc47 30 DisplaySample[2].y=190;
vipinranka 12:9a20164dcc47 31 ScreenSample[0].x=45;
vipinranka 12:9a20164dcc47 32 ScreenSample[0].y=45;
vipinranka 12:9a20164dcc47 33 ScreenSample[1].x=45;
vipinranka 12:9a20164dcc47 34 ScreenSample[1].y=270;
vipinranka 12:9a20164dcc47 35 ScreenSample[2].x=190;
vipinranka 12:9a20164dcc47 36 ScreenSample[2].y=190;
vipinranka 12:9a20164dcc47 37 _tp_cs=1;
vipinranka 12:9a20164dcc47 38 _tp_spi.frequency(500000);
vipinranka 12:9a20164dcc47 39 _tp_spi.format(8,0); // 8 bit spi mode 0
vipinranka 12:9a20164dcc47 40 }
vipinranka 12:9a20164dcc47 41
vipinranka 12:9a20164dcc47 42 int TouchScreenADS7843::Read_XY(unsigned char XY)
vipinranka 12:9a20164dcc47 43 {
vipinranka 12:9a20164dcc47 44 unsigned char msb, lsb;
vipinranka 12:9a20164dcc47 45 unsigned int Temp;
vipinranka 12:9a20164dcc47 46
vipinranka 12:9a20164dcc47 47 Temp=0;
vipinranka 12:9a20164dcc47 48 _tp_cs=0;
vipinranka 12:9a20164dcc47 49 wait_us(SPI_RD_DELAY);
vipinranka 12:9a20164dcc47 50 _tp_spi.write(XY);
vipinranka 12:9a20164dcc47 51 wait_us(SPI_RD_DELAY);
vipinranka 12:9a20164dcc47 52 msb = _tp_spi.write(0x00); // msb
vipinranka 12:9a20164dcc47 53 wait_us(SPI_RD_DELAY);
vipinranka 12:9a20164dcc47 54 lsb = _tp_spi.write(0x00); // lsb
vipinranka 12:9a20164dcc47 55 _tp_cs=1;
vipinranka 12:9a20164dcc47 56 Temp = ((msb << 8 ) | lsb);
vipinranka 12:9a20164dcc47 57 Temp >>= 3;
vipinranka 12:9a20164dcc47 58 Temp &= 0xfff;
vipinranka 12:9a20164dcc47 59 Temp /= 4; // Scaling : return value range must be between 0 and 1024
vipinranka 12:9a20164dcc47 60 return(Temp);
vipinranka 12:9a20164dcc47 61 }
vipinranka 12:9a20164dcc47 62
vipinranka 12:9a20164dcc47 63
vipinranka 12:9a20164dcc47 64 void TouchScreenADS7843::TP_GetAdXY(int *x,int *y)
vipinranka 12:9a20164dcc47 65 {
vipinranka 12:9a20164dcc47 66 int adx,ady;
vipinranka 12:9a20164dcc47 67 adx = Read_XY(CHX);
vipinranka 12:9a20164dcc47 68 wait_us(1);
vipinranka 12:9a20164dcc47 69 ady = Read_XY(CHY);
vipinranka 12:9a20164dcc47 70 *x = adx;
vipinranka 12:9a20164dcc47 71 *y = ady;
vipinranka 12:9a20164dcc47 72 }
vipinranka 12:9a20164dcc47 73
vipinranka 12:9a20164dcc47 74 void TouchScreenADS7843::TP_DrawPoint(unsigned int Xpos,unsigned int Ypos, unsigned int color)
vipinranka 12:9a20164dcc47 75 {
vipinranka 12:9a20164dcc47 76 // LCD->wr_reg(0x03, 0x1030);
vipinranka 12:9a20164dcc47 77 LCD->WindowMax();
vipinranka 12:9a20164dcc47 78 //LCD->pixel(Xpos,Ypos,color);
vipinranka 12:9a20164dcc47 79 // LCD->pixel(Xpos+1,Ypos,color);
vipinranka 12:9a20164dcc47 80 // LCD->pixel(Xpos,Ypos+1,color);
vipinranka 12:9a20164dcc47 81 // LCD->pixel(Xpos+1,Ypos+1,color);
vipinranka 12:9a20164dcc47 82 LCD->cls();
vipinranka 12:9a20164dcc47 83 LCD->locate(Xpos,Ypos);
vipinranka 12:9a20164dcc47 84 LCD->printf("X:%d,Y:%d",Xpos,Ypos);
vipinranka 12:9a20164dcc47 85 }
vipinranka 12:9a20164dcc47 86
vipinranka 12:9a20164dcc47 87 void TouchScreenADS7843::DrawCross(unsigned int Xpos,unsigned int Ypos)
vipinranka 12:9a20164dcc47 88 {
vipinranka 12:9a20164dcc47 89 LCD->line(Xpos-15,Ypos,Xpos-2,Ypos,White);
vipinranka 12:9a20164dcc47 90 LCD->line(Xpos+2,Ypos,Xpos+15,Ypos,White);
vipinranka 12:9a20164dcc47 91 LCD->line(Xpos,Ypos-15,Xpos,Ypos-2,White);
vipinranka 12:9a20164dcc47 92 LCD->line(Xpos,Ypos+2,Xpos,Ypos+15,White);
vipinranka 12:9a20164dcc47 93
vipinranka 12:9a20164dcc47 94 LCD->line(Xpos-15,Ypos+15,Xpos-7,Ypos+15,DarkGrey);
vipinranka 12:9a20164dcc47 95 LCD->line(Xpos-15,Ypos+7,Xpos-15,Ypos+15,DarkGrey);
vipinranka 12:9a20164dcc47 96
vipinranka 12:9a20164dcc47 97 LCD->line(Xpos-15,Ypos-15,Xpos-7,Ypos-15,DarkGrey);
vipinranka 12:9a20164dcc47 98 LCD->line(Xpos-15,Ypos-7,Xpos-15,Ypos-15,DarkGrey);
vipinranka 12:9a20164dcc47 99
vipinranka 12:9a20164dcc47 100 LCD->line(Xpos+7,Ypos+15,Xpos+15,Ypos+15,DarkGrey);
vipinranka 12:9a20164dcc47 101 LCD->line(Xpos+15,Ypos+7,Xpos+15,Ypos+15,DarkGrey);
vipinranka 12:9a20164dcc47 102
vipinranka 12:9a20164dcc47 103 LCD->line(Xpos+7,Ypos-15,Xpos+15,Ypos-15,DarkGrey);
vipinranka 12:9a20164dcc47 104 LCD->line(Xpos+15,Ypos-15,Xpos+15,Ypos-7,DarkGrey);
vipinranka 12:9a20164dcc47 105 }
vipinranka 12:9a20164dcc47 106
vipinranka 12:9a20164dcc47 107 unsigned char TouchScreenADS7843::Read_Ads7843(Coordinate * screenPtr)
vipinranka 12:9a20164dcc47 108 {
vipinranka 12:9a20164dcc47 109 int m0,m1,m2,TP_X[1],TP_Y[1],temp[3];
vipinranka 12:9a20164dcc47 110 uint8_t count=0;
vipinranka 12:9a20164dcc47 111 int buffer[2][9]={{0},{0}};
vipinranka 12:9a20164dcc47 112 if (screenPtr == NULL) screenPtr = &screen;
vipinranka 12:9a20164dcc47 113 do
vipinranka 12:9a20164dcc47 114 {
vipinranka 12:9a20164dcc47 115 TP_GetAdXY(TP_X,TP_Y);
vipinranka 12:9a20164dcc47 116 buffer[0][count]=TP_X[0];
vipinranka 12:9a20164dcc47 117 buffer[1][count]=TP_Y[0];
vipinranka 12:9a20164dcc47 118 count++;
vipinranka 12:9a20164dcc47 119 }
vipinranka 12:9a20164dcc47 120 while(!_tp_irq && (count < 9));
vipinranka 12:9a20164dcc47 121 if(count==9)
vipinranka 12:9a20164dcc47 122 {
vipinranka 12:9a20164dcc47 123 temp[0]=(buffer[0][0]+buffer[0][1]+buffer[0][2])/3;
vipinranka 12:9a20164dcc47 124 temp[1]=(buffer[0][3]+buffer[0][4]+buffer[0][5])/3;
vipinranka 12:9a20164dcc47 125 temp[2]=(buffer[0][6]+buffer[0][7]+buffer[0][8])/3;
vipinranka 12:9a20164dcc47 126 m0=temp[0]-temp[1];
vipinranka 12:9a20164dcc47 127 m1=temp[1]-temp[2];
vipinranka 12:9a20164dcc47 128 m2=temp[2]-temp[0];
vipinranka 12:9a20164dcc47 129 m0=m0>0?m0:(-m0);
vipinranka 12:9a20164dcc47 130 m1=m1>0?m1:(-m1);
vipinranka 12:9a20164dcc47 131 m2=m2>0?m2:(-m2);
vipinranka 12:9a20164dcc47 132 if( (m0>THRESHOLD) && (m1>THRESHOLD) && (m2>THRESHOLD) ) return 0;
vipinranka 12:9a20164dcc47 133 if(m0<m1)
vipinranka 12:9a20164dcc47 134 {
vipinranka 12:9a20164dcc47 135 if(m2<m0)
vipinranka 12:9a20164dcc47 136 screenPtr->x=(temp[0]+temp[2])/2;
vipinranka 12:9a20164dcc47 137 else
vipinranka 12:9a20164dcc47 138 screenPtr->x=(temp[0]+temp[1])/2;
vipinranka 12:9a20164dcc47 139 }
vipinranka 12:9a20164dcc47 140 else if(m2<m1)
vipinranka 12:9a20164dcc47 141 screenPtr->x=(temp[0]+temp[2])/2;
vipinranka 12:9a20164dcc47 142 else
vipinranka 12:9a20164dcc47 143 screenPtr->x=(temp[1]+temp[2])/2;
vipinranka 12:9a20164dcc47 144
vipinranka 12:9a20164dcc47 145 temp[0]=(buffer[1][0]+buffer[1][1]+buffer[1][2])/3;
vipinranka 12:9a20164dcc47 146 temp[1]=(buffer[1][3]+buffer[1][4]+buffer[1][5])/3;
vipinranka 12:9a20164dcc47 147 temp[2]=(buffer[1][6]+buffer[1][7]+buffer[1][8])/3;
vipinranka 12:9a20164dcc47 148 m0=temp[0]-temp[1];
vipinranka 12:9a20164dcc47 149 m1=temp[1]-temp[2];
vipinranka 12:9a20164dcc47 150 m2=temp[2]-temp[0];
vipinranka 12:9a20164dcc47 151 m0=m0>0?m0:(-m0);
vipinranka 12:9a20164dcc47 152 m1=m1>0?m1:(-m1);
vipinranka 12:9a20164dcc47 153 m2=m2>0?m2:(-m2);
vipinranka 12:9a20164dcc47 154 if( (m0>THRESHOLD) && (m1>THRESHOLD) && (m2>THRESHOLD) ) return 0;
vipinranka 12:9a20164dcc47 155
vipinranka 12:9a20164dcc47 156 if(m0<m1)
vipinranka 12:9a20164dcc47 157 {
vipinranka 12:9a20164dcc47 158 if(m2<m0)
vipinranka 12:9a20164dcc47 159 screenPtr->y=(temp[0]+temp[2])/2;
vipinranka 12:9a20164dcc47 160 else
vipinranka 12:9a20164dcc47 161 screenPtr->y=(temp[0]+temp[1])/2;
vipinranka 12:9a20164dcc47 162 }
vipinranka 12:9a20164dcc47 163 else if(m2<m1)
vipinranka 12:9a20164dcc47 164 screenPtr->y=(temp[0]+temp[2])/2;
vipinranka 12:9a20164dcc47 165 else
vipinranka 12:9a20164dcc47 166 screenPtr->y=(temp[1]+temp[2])/2;
vipinranka 12:9a20164dcc47 167 return 1;
vipinranka 12:9a20164dcc47 168 }
vipinranka 12:9a20164dcc47 169 return 0;
vipinranka 12:9a20164dcc47 170 }
vipinranka 12:9a20164dcc47 171
vipinranka 12:9a20164dcc47 172 uint8_t TouchScreenADS7843::setCalibrationMatrix( Coordinate * displayPtr,
vipinranka 12:9a20164dcc47 173 Coordinate * screenPtr,
vipinranka 12:9a20164dcc47 174 Matrix * matrixPtr)
vipinranka 12:9a20164dcc47 175 {
vipinranka 12:9a20164dcc47 176 uint8_t retTHRESHOLD = 0 ;
vipinranka 12:9a20164dcc47 177 // K = (Xs0 - Xs2)*(Ys1 - Ys2) - (Xs1 - Xs2)*(Ys0 - Ys2)
vipinranka 12:9a20164dcc47 178 matrixPtr->Divider = ((screenPtr[0].x - screenPtr[2].x) * (screenPtr[1].y - screenPtr[2].y)) -
vipinranka 12:9a20164dcc47 179 ((screenPtr[1].x - screenPtr[2].x) * (screenPtr[0].y - screenPtr[2].y)) ;
vipinranka 12:9a20164dcc47 180 if( matrixPtr->Divider == 0 )
vipinranka 12:9a20164dcc47 181 {
vipinranka 12:9a20164dcc47 182 retTHRESHOLD = 1;
vipinranka 12:9a20164dcc47 183 }
vipinranka 12:9a20164dcc47 184 else
vipinranka 12:9a20164dcc47 185 {
vipinranka 12:9a20164dcc47 186 // (Xd0 - Xd2)*(Ys1 - Ys2) - (Xd1 - Xd2)*(Ys0 - Ys2)
vipinranka 12:9a20164dcc47 187 // A = ---------------------------------------------------
vipinranka 12:9a20164dcc47 188 // K
vipinranka 12:9a20164dcc47 189 matrixPtr->An = ((displayPtr[0].x - displayPtr[2].x) * (screenPtr[1].y - screenPtr[2].y)) -
vipinranka 12:9a20164dcc47 190 ((displayPtr[1].x - displayPtr[2].x) * (screenPtr[0].y - screenPtr[2].y)) ;
vipinranka 12:9a20164dcc47 191 // (Xs0 - Xs2)*(Xd1 - Xd2) - (Xd0 - Xd2)*(Xs1 - Xs2)
vipinranka 12:9a20164dcc47 192 // B = ---------------------------------------------------
vipinranka 12:9a20164dcc47 193 // K
vipinranka 12:9a20164dcc47 194 matrixPtr->Bn = ((screenPtr[0].x - screenPtr[2].x) * (displayPtr[1].x - displayPtr[2].x)) -
vipinranka 12:9a20164dcc47 195 ((displayPtr[0].x - displayPtr[2].x) * (screenPtr[1].x - screenPtr[2].x)) ;
vipinranka 12:9a20164dcc47 196 // Ys0*(Xs2*Xd1 - Xs1*Xd2) + Ys1*(Xs0*Xd2 - Xs2*Xd0) + Ys2*(Xs1*Xd0 - Xs0*Xd1)
vipinranka 12:9a20164dcc47 197 // C = ----------------------------------------------------------------------------
vipinranka 12:9a20164dcc47 198 // K
vipinranka 12:9a20164dcc47 199 matrixPtr->Cn = (screenPtr[2].x * displayPtr[1].x - screenPtr[1].x * displayPtr[2].x) * screenPtr[0].y +
vipinranka 12:9a20164dcc47 200 (screenPtr[0].x * displayPtr[2].x - screenPtr[2].x * displayPtr[0].x) * screenPtr[1].y +
vipinranka 12:9a20164dcc47 201 (screenPtr[1].x * displayPtr[0].x - screenPtr[0].x * displayPtr[1].x) * screenPtr[2].y ;
vipinranka 12:9a20164dcc47 202 // (Yd0 - Yd2)*(Ys1 - Ys2) - (Yd1 - Yd2)*(Ys0 - Ys2)
vipinranka 12:9a20164dcc47 203 // D = ---------------------------------------------------
vipinranka 12:9a20164dcc47 204 // K
vipinranka 12:9a20164dcc47 205 matrixPtr->Dn = ((displayPtr[0].y - displayPtr[2].y) * (screenPtr[1].y - screenPtr[2].y)) -
vipinranka 12:9a20164dcc47 206 ((displayPtr[1].y - displayPtr[2].y) * (screenPtr[0].y - screenPtr[2].y)) ;
vipinranka 12:9a20164dcc47 207 // (Xs0 - Xs2)*(Yd1 - Yd2) - (Yd0 - Yd2)*(Xs1 - Xs2)
vipinranka 12:9a20164dcc47 208 // E = ---------------------------------------------------
vipinranka 12:9a20164dcc47 209 // K
vipinranka 12:9a20164dcc47 210 matrixPtr->En = ((screenPtr[0].x - screenPtr[2].x) * (displayPtr[1].y - displayPtr[2].y)) -
vipinranka 12:9a20164dcc47 211 ((displayPtr[0].y - displayPtr[2].y) * (screenPtr[1].x - screenPtr[2].x)) ;
vipinranka 12:9a20164dcc47 212 // Ys0*(Xs2*Yd1 - Xs1*Yd2) + Ys1*(Xs0*Yd2 - Xs2*Yd0) + Ys2*(Xs1*Yd0 - Xs0*Yd1)
vipinranka 12:9a20164dcc47 213 // F = ----------------------------------------------------------------------------
vipinranka 12:9a20164dcc47 214 // K
vipinranka 12:9a20164dcc47 215 matrixPtr->Fn = (screenPtr[2].x * displayPtr[1].y - screenPtr[1].x * displayPtr[2].y) * screenPtr[0].y +
vipinranka 12:9a20164dcc47 216 (screenPtr[0].x * displayPtr[2].y - screenPtr[2].x * displayPtr[0].y) * screenPtr[1].y +
vipinranka 12:9a20164dcc47 217 (screenPtr[1].x * displayPtr[0].y - screenPtr[0].x * displayPtr[1].y) * screenPtr[2].y ;
vipinranka 12:9a20164dcc47 218 }
vipinranka 12:9a20164dcc47 219 return( retTHRESHOLD ) ;
vipinranka 12:9a20164dcc47 220 }
vipinranka 12:9a20164dcc47 221
vipinranka 12:9a20164dcc47 222 uint8_t TouchScreenADS7843::getDisplayPoint(void)
vipinranka 12:9a20164dcc47 223 {
vipinranka 12:9a20164dcc47 224 uint8_t retTHRESHOLD = 0 ;
vipinranka 12:9a20164dcc47 225
vipinranka 12:9a20164dcc47 226 if( matrix.Divider != 0 )
vipinranka 12:9a20164dcc47 227 {
vipinranka 12:9a20164dcc47 228 // XD = AX+BY+C
vipinranka 12:9a20164dcc47 229 display.x = ( (matrix.An * screen.x) +
vipinranka 12:9a20164dcc47 230 (matrix.Bn * screen.y) +
vipinranka 12:9a20164dcc47 231 matrix.Cn
vipinranka 12:9a20164dcc47 232 ) / matrix.Divider ;
vipinranka 12:9a20164dcc47 233 // YD = DX+EY+F
vipinranka 12:9a20164dcc47 234 display.y = ( (matrix.Dn * screen.x) +
vipinranka 12:9a20164dcc47 235 (matrix.En * screen.y) +
vipinranka 12:9a20164dcc47 236 matrix.Fn
vipinranka 12:9a20164dcc47 237 ) / matrix.Divider ;
vipinranka 12:9a20164dcc47 238 }
vipinranka 12:9a20164dcc47 239 else
vipinranka 12:9a20164dcc47 240 {
vipinranka 12:9a20164dcc47 241 retTHRESHOLD = 1;
vipinranka 12:9a20164dcc47 242 }
vipinranka 12:9a20164dcc47 243 return(retTHRESHOLD);
vipinranka 12:9a20164dcc47 244 }
vipinranka 12:9a20164dcc47 245
vipinranka 12:9a20164dcc47 246 void TouchScreenADS7843::TouchPanel_Calibrate(void)
vipinranka 12:9a20164dcc47 247 {
vipinranka 12:9a20164dcc47 248 uint8_t i;
vipinranka 12:9a20164dcc47 249 Coordinate screen_cal;
vipinranka 12:9a20164dcc47 250 setCalibrationMatrix( &DisplaySample[0],&ScreenSample[0],&matrix) ;
vipinranka 12:9a20164dcc47 251 LCD->set_font((unsigned char*) Arial12x12);
vipinranka 12:9a20164dcc47 252 for(i=0;i<3;i++)
vipinranka 12:9a20164dcc47 253 {
vipinranka 12:9a20164dcc47 254 LCD->cls();
vipinranka 12:9a20164dcc47 255 LCD->locate(10,10);
vipinranka 12:9a20164dcc47 256 LCD->printf("Touch crosshair to calibrate");
vipinranka 12:9a20164dcc47 257 wait_ms(500);
vipinranka 12:9a20164dcc47 258 DrawCross(DisplaySample[i].x,DisplaySample[i].y);
vipinranka 12:9a20164dcc47 259 do {} while (!Read_Ads7843(&screen_cal));
vipinranka 12:9a20164dcc47 260 ScreenSample[i].x= screen_cal.x;ScreenSample[i].y= screen_cal.y;
vipinranka 12:9a20164dcc47 261 }
vipinranka 12:9a20164dcc47 262 setCalibrationMatrix( &DisplaySample[0],&ScreenSample[0],&matrix) ;
vipinranka 12:9a20164dcc47 263 LCD->cls();
vipinranka 12:9a20164dcc47 264 }
vipinranka 12:9a20164dcc47 265
vipinranka 12:9a20164dcc47 266 void TouchScreenADS7843::GetCalibration(Matrix * matrixPtr, Coordinate * screenPtr)
vipinranka 12:9a20164dcc47 267 {
vipinranka 12:9a20164dcc47 268 uint8_t i;
vipinranka 12:9a20164dcc47 269 Matrix * mp1;
vipinranka 12:9a20164dcc47 270 mp1 = &matrix;
vipinranka 12:9a20164dcc47 271 *matrixPtr = *mp1;
vipinranka 12:9a20164dcc47 272 for(i=0;i<3;i++)
vipinranka 12:9a20164dcc47 273 {
vipinranka 12:9a20164dcc47 274 screenPtr[i].x = ScreenSample[i].x;
vipinranka 12:9a20164dcc47 275 screenPtr[i].y = ScreenSample[i].y;
vipinranka 12:9a20164dcc47 276 }
vipinranka 12:9a20164dcc47 277 }
vipinranka 12:9a20164dcc47 278
vipinranka 12:9a20164dcc47 279 void TouchScreenADS7843::SetCalibration(Matrix * matrixPtr, Coordinate * screenPtr)
vipinranka 12:9a20164dcc47 280 {
vipinranka 12:9a20164dcc47 281 uint8_t i;
vipinranka 12:9a20164dcc47 282 Matrix * mp1;
vipinranka 12:9a20164dcc47 283 mp1 = &matrix;
vipinranka 12:9a20164dcc47 284 *mp1 = *matrixPtr;
vipinranka 12:9a20164dcc47 285 for(i=0;i<3;i++)
vipinranka 12:9a20164dcc47 286 {
vipinranka 12:9a20164dcc47 287 ScreenSample[i].x = screenPtr[i].x;
vipinranka 12:9a20164dcc47 288 ScreenSample[i].y = screenPtr[i].y;
vipinranka 12:9a20164dcc47 289 }
vipinranka 12:9a20164dcc47 290 setCalibrationMatrix( &DisplaySample[0],&ScreenSample[0],&matrix) ;
vipinranka 12:9a20164dcc47 291 }