| 211 | |
| 212 | |
| 213 | static void rtgui_touch_calculate(void) |
| 214 | { |
| 215 | if (touch != RT_NULL) |
| 216 | { |
| 217 | /* read touch */ |
| 218 | { |
| 219 | rt_uint8_t i, j, k, min; |
| 220 | rt_uint16_t temp; |
| 221 | rt_uint16_t tmpxy[2][SAMP_CNT]; |
| 222 | rt_uint8_t send_buffer[1]; |
| 223 | rt_uint8_t recv_buffer[2]; |
| 224 | for(i=0; i<SAMP_CNT; i++) |
| 225 | { |
| 226 | send_buffer[0] = TOUCH_MSR_X; |
| 227 | touch_send_then_recv(touch->spi_device, send_buffer, 1, recv_buffer, 2); |
| 228 | rt_kprintf("touch x: %d ",(recv_buffer[0]*256|recv_buffer[1])>>4); |
| 229 | #if defined(_ILI_HORIZONTAL_DIRECTION_) |
| 230 | tmpxy[1][i] = (recv_buffer[0]<<8)|recv_buffer[1] ; |
| 231 | tmpxy[1][i] >>= 4; |
| 232 | #else |
| 233 | tmpxy[0][i] = (recv_buffer[0]<<8)|recv_buffer[1] ; |
| 234 | tmpxy[0][i] >>=4; |
| 235 | |
| 236 | #endif |
| 237 | send_buffer[0] = TOUCH_MSR_Y; |
| 238 | touch_send_then_recv(touch->spi_device, send_buffer, 1, recv_buffer, 2); |
| 239 | rt_kprintf("touch y: %d \n",(recv_buffer[0]*256|recv_buffer[1])>>4); |
| 240 | |
| 241 | #if defined(_ILI_HORIZONTAL_DIRECTION_) |
| 242 | tmpxy[0][i] = (recv_buffer[0]<<8)|recv_buffer[1] ; |
| 243 | tmpxy[0][i] >>= 4; |
| 244 | #else |
| 245 | tmpxy[1][i] = (recv_buffer[0]<<8)|recv_buffer[1] ; |
| 246 | tmpxy[1][i] >>= 4; |
| 247 | #endif |
| 248 | } |
| 249 | /*再次打开触摸中断*/ |
| 250 | send_buffer[0] = 1 << 7; |
| 251 | touch_send_then_recv(touch->spi_device, send_buffer, 1, recv_buffer, 2); |
| 252 | touch_send_then_recv(touch->spi_device, send_buffer, 1, recv_buffer, 2); |
| 253 | /* calculate average */ |
| 254 | { |
| 255 | rt_uint32_t total_x = 0; |
| 256 | rt_uint32_t total_y = 0; |
| 257 | for(k=0; k<2; k++) |
| 258 | { |
| 259 | // sorting the ADC value |
| 260 | for(i=0; i<SAMP_CNT-1; i++) |
| 261 | { |
| 262 | min=i; |
| 263 | for (j=i+1; j<SAMP_CNT; j++) |
| 264 | { |
| 265 | if (tmpxy[k][min] > tmpxy[k][j]) |
| 266 | min=j; |
| 267 | } |
| 268 | temp = tmpxy[k][i]; |
| 269 | tmpxy[k][i] = tmpxy[k][min]; |
| 270 | tmpxy[k][min] = temp; |
no test coverage detected