rtouch_calibrate.c File Reference

#include <stdint.h>
#include <stdlib.h>
#include "compiler.h"
#include "assert.h"
#include "rtouch.h"
#include "rtouch_calibrate.h"
#include "et024006dhu.h"

Go to the source code of this file.

Defines

#define RTOUCH_COLOR   0x0000
#define tft_draw_filled_circle(x, y, radius, color, quadrant)   et024006_DrawFilledCircle((x), (y), (radius), (color), (quadrant))
#define tft_draw_pixel(x, y, color)   et024006_DrawPixel((x), (y), (color))
#define tft_print_string(x, y, string, color)   et024006_PrintString((string), (FONT8x8), (x), (y), (color), -1)
 Compile-time binding to main work queue.
#define TFT_WHOLE   0xff

Functions

bool APP_Recalibrate (void)
void calibratehandler (rtouch_event_t const *event)
bool rtouch_calibrate (void)
 Start new calibration process, return false if finished.

Variables

static int calibstate
static rtouch_calibration_matrix_t matrix
static rtouch_calibration_points_t points


Define Documentation

#define RTOUCH_COLOR   0x0000

Definition at line 31 of file rtouch_calibrate.c.

Referenced by rtouch_calibrate().

#define tft_draw_filled_circle ( x,
y,
radius,
color,
quadrant   )     et024006_DrawFilledCircle((x), (y), (radius), (color), (quadrant))

Definition at line 28 of file rtouch_calibrate.c.

Referenced by rtouch_calibrate().

#define tft_draw_pixel ( x,
y,
color   )     et024006_DrawPixel((x), (y), (color))

Definition at line 26 of file rtouch_calibrate.c.

#define tft_print_string ( x,
y,
string,
color   )     et024006_PrintString((string), (FONT8x8), (x), (y), (color), -1)

Compile-time binding to main work queue.

Definition at line 24 of file rtouch_calibrate.c.

Referenced by rtouch_calibrate().

#define TFT_WHOLE   0xff

Definition at line 32 of file rtouch_calibrate.c.

Referenced by rtouch_calibrate().


Function Documentation

bool APP_Recalibrate ( void   ) 

Definition at line 58 of file rtouch_calibrate.c.

References calibstate.

00059 {
00060     calibstate = 0;
00061     //WORKQUEUE_item_t item = { calibrate, &calibstate };
00062     //WORKQUEUE_AddWork( &mainWorkQueue, &item );
00063 
00064     return true;
00065 
00066     // --- Error handling ---
00067 //  return false;
00068 }

void calibratehandler ( rtouch_event_t const *  event  ) 

Definition at line 74 of file rtouch_calibrate.c.

Referenced by rtouch_calibrate().

00075 {
00076     //WORKQUEUE_item_t item = { calibrate, &calibstate };
00077     //WORKQUEUE_AddWork( &mainWorkQueue, &item );
00078 }

bool rtouch_calibrate ( void   ) 

Start new calibration process, return false if finished.

Definition at line 81 of file rtouch_calibrate.c.

References calibratehandler(), rtouch_calibration_point_struct::panelX, rtouch_calibration_point_struct::panelY, rtouch_calibration_points_struct::point1, rtouch_calibration_points_struct::point2, rtouch_calibration_points_struct::point3, rtouch_calibration_point_struct::rawX, rtouch_calibration_point_struct::rawY, RTOUCH_COLOR, rtouch_compute_calibration_matrix(), rtouch_get_event(), rtouch_get_event_handler(), rtouch_is_touched(), rtouch_set_calibration_matrix(), rtouch_set_event_handler(), tft_draw_filled_circle, tft_print_string, and TFT_WHOLE.

Referenced by main().

00082 {
00083     //int * state = (int *) data;
00084     rtouch_event_t event;
00085     bool in_progress = true;
00086     static int state = 0;
00087     static rtouch_event_handler_t oldHandler;
00088 
00089     switch (state) {
00090 
00091     case 0:
00092         //TFT_SetClipping( 0, 0, TFT_GetWidth(), TFT_GetHeight() );
00093         //TFT_color_t MEM_RAMTYPE * pixmap;
00094         //pixmap = MEM_ALLOC_ARRAY( TFT_color_t, (240UL * 320UL) );
00095 
00096         tft_print_string( 10, 10, "Touch screen calibration...",
00097             RTOUCH_COLOR);
00098 
00099         points.point1.panelX = 30;
00100         points.point1.panelY = 30;
00101         points.point2.panelX = 170;
00102         points.point2.panelY = 220;
00103         points.point3.panelX = 300;
00104         points.point3.panelY = 120;
00105         tft_draw_filled_circle( points.point1.panelX,
00106             points.point1.panelY, 2, RTOUCH_COLOR, TFT_WHOLE );
00107         state = 1;
00108 
00109         oldHandler = rtouch_get_event_handler();
00110         rtouch_set_event_handler( calibratehandler );
00111 
00112         break;
00113 
00114     case 1:
00115         if (rtouch_is_touched() == false) { break; }
00116         tft_draw_filled_circle( points.point1.panelX,
00117             points.point1.panelY, 2, RTOUCH_COLOR, TFT_WHOLE );
00118         rtouch_get_event(&event);
00119         points.point1.rawX = event.rawX;
00120         points.point1.rawY = event.rawY;
00121         state = 2;
00122 
00123         break;
00124 
00125     case 2:
00126         if (rtouch_is_touched() == true) { break; }
00127         tft_draw_filled_circle( points.point2.panelX,
00128             points.point2.panelY, 2, RTOUCH_COLOR, TFT_WHOLE );
00129         state = 3;
00130         break;
00131 
00132     case 3:
00133         if (rtouch_is_touched() == false) { break; }
00134         tft_draw_filled_circle( points.point2.panelX,
00135             points.point2.panelY, 2, RTOUCH_COLOR, TFT_WHOLE );
00136         rtouch_get_event(&event);
00137         points.point2.rawX = event.rawX;
00138         points.point2.rawY = event.rawY;
00139         state = 4;
00140         break;
00141 
00142     case 4:
00143         if (rtouch_is_touched() == true) { break; }
00144         tft_draw_filled_circle( points.point3.panelX,
00145             points.point3.panelY, 2, RTOUCH_COLOR, TFT_WHOLE );
00146         state = 5;
00147         break;
00148 
00149     case 5:
00150         if (rtouch_is_touched() == false) { break; }
00151         tft_draw_filled_circle( points.point3.panelX,
00152             points.point3.panelY, 2, RTOUCH_COLOR, TFT_WHOLE );
00153         rtouch_get_event(&event);
00154         points.point3.rawX = event.rawX;
00155         points.point3.rawY = event.rawY;
00156         state = 6;
00157         break;
00158 
00159     case 6:
00160         if (rtouch_is_touched() == true) { break; }
00161         rtouch_compute_calibration_matrix(&points, &matrix);
00162         rtouch_set_calibration_matrix(&matrix);
00163         state = 7;
00164 
00165         rtouch_set_event_handler(oldHandler);
00166         in_progress = false;
00167         state = 0;
00168         // TODO redraw the background if needed
00169         break;
00170 
00171     default:
00172         break;
00173     }
00174     return in_progress;
00175 }


Variable Documentation

int calibstate [static]

Definition at line 50 of file rtouch_calibrate.c.

Referenced by APP_Recalibrate().

Definition at line 48 of file rtouch_calibrate.c.

Definition at line 47 of file rtouch_calibrate.c.


Generated on Fri Feb 19 02:24:05 2010 for AVR32 - Resistive Driver by  doxygen 1.5.5