touchpad does now work in all four modes
This commit is contained in:
parent
8d22c27257
commit
8cafee2c32
3 changed files with 39 additions and 8 deletions
4
glcd.h
4
glcd.h
|
@ -4,8 +4,8 @@
|
||||||
#include <ch.h> // types
|
#include <ch.h> // types
|
||||||
#include <hal.h>
|
#include <hal.h>
|
||||||
|
|
||||||
#define SCREEN_WIDTH 320
|
#define SCREEN_WIDTH 240
|
||||||
#define SCREEN_HEIGHT 240
|
#define SCREEN_HEIGHT 320
|
||||||
|
|
||||||
#define PORTRAIT (lcdGetOrientation() == portrait || lcdGetOrientation() == portraitInv)
|
#define PORTRAIT (lcdGetOrientation() == portrait || lcdGetOrientation() == portraitInv)
|
||||||
#define LANDSCAPE (lcdGetOrientation() == landscape || lcdGetOrientation() == landscapeInv)
|
#define LANDSCAPE (lcdGetOrientation() == landscape || lcdGetOrientation() == landscapeInv)
|
||||||
|
|
41
touchpad.c
41
touchpad.c
|
@ -52,7 +52,7 @@ uint8_t tpIRQ(void) {
|
||||||
return (!palReadPad(TP_PORT, TP_IRQ));
|
return (!palReadPad(TP_PORT, TP_IRQ));
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint16_t tpReadRealX(void) {
|
uint16_t tpReadRealX(void) {
|
||||||
uint32_t results = 0;
|
uint32_t results = 0;
|
||||||
uint16_t i, x;
|
uint16_t i, x;
|
||||||
|
|
||||||
|
@ -61,12 +61,12 @@ static uint16_t tpReadRealX(void) {
|
||||||
results += readX();
|
results += readX();
|
||||||
}
|
}
|
||||||
|
|
||||||
x = (((lcdGetHeight()-1) * (results/CONVERSIONS)) / 2048);
|
x = (((SCREEN_WIDTH-1) * (results/CONVERSIONS)) / 2048);
|
||||||
|
|
||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint16_t tpReadRealY(void) {
|
uint16_t tpReadRealY(void) {
|
||||||
uint32_t results = 0;
|
uint32_t results = 0;
|
||||||
uint16_t i, y;
|
uint16_t i, y;
|
||||||
|
|
||||||
|
@ -75,17 +75,45 @@ static uint16_t tpReadRealY(void) {
|
||||||
results += readY();
|
results += readY();
|
||||||
}
|
}
|
||||||
|
|
||||||
y = (((lcdGetWidth()-1) * (results/CONVERSIONS)) / 2048);
|
y = (((SCREEN_HEIGHT-1) * (results/CONVERSIONS)) / 2048);
|
||||||
|
|
||||||
return y;
|
return y;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t tpReadX(void) {
|
uint16_t tpReadX(void) {
|
||||||
return cal.xm * tpReadRealX() + cal.xn;
|
uint16_t x, y;
|
||||||
|
|
||||||
|
x = cal.xm * tpReadRealX() + cal.xn;
|
||||||
|
y = cal.ym * tpReadRealY() + cal.yn;
|
||||||
|
|
||||||
|
switch(lcdGetOrientation()) {
|
||||||
|
case portrait:
|
||||||
|
return x;
|
||||||
|
case landscape:
|
||||||
|
return SCREEN_HEIGHT - y;
|
||||||
|
case portraitInv:
|
||||||
|
return SCREEN_WIDTH - x;
|
||||||
|
case landscapeInv:
|
||||||
|
return y;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t tpReadY(void) {
|
uint16_t tpReadY(void) {
|
||||||
return cal.ym * tpReadRealY() + cal.yn;
|
uint16_t x, y;
|
||||||
|
|
||||||
|
x = cal.xm * tpReadRealX() + cal.xn;
|
||||||
|
y = cal.ym * tpReadRealY() + cal.yn;
|
||||||
|
|
||||||
|
switch(lcdGetOrientation()) {
|
||||||
|
case portrait:
|
||||||
|
return y;
|
||||||
|
case landscape:
|
||||||
|
return x;
|
||||||
|
case portraitInv:
|
||||||
|
return SCREEN_HEIGHT - y;
|
||||||
|
case landscapeInv:
|
||||||
|
return SCREEN_WIDTH - x;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void tpDrawCross(uint16_t x, uint16_t y) {
|
void tpDrawCross(uint16_t x, uint16_t y) {
|
||||||
|
@ -112,6 +140,7 @@ void tpCalibrate(void) {
|
||||||
uint16_t points[2][2];
|
uint16_t points[2][2];
|
||||||
uint8_t i;
|
uint8_t i;
|
||||||
|
|
||||||
|
lcdSetOrientation(portrait);
|
||||||
lcdClear(Red);
|
lcdClear(Red);
|
||||||
lcdDrawString(40, 10, "Touchpad Calibration", White, Red);
|
lcdDrawString(40, 10, "Touchpad Calibration", White, Red);
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,8 @@ void tpInit(void);
|
||||||
uint8_t tpIRQ(void);
|
uint8_t tpIRQ(void);
|
||||||
uint16_t tpReadX(void);
|
uint16_t tpReadX(void);
|
||||||
uint16_t tpReadY(void);
|
uint16_t tpReadY(void);
|
||||||
|
uint16_t tpReadRealX(void);
|
||||||
|
uint16_t tpReadRealY(void);
|
||||||
void tpCalibrate(void);
|
void tpCalibrate(void);
|
||||||
void tpCalibrate2(void);
|
void tpCalibrate2(void);
|
||||||
void tpDrawCross(uint16_t x, uint16_t y);
|
void tpDrawCross(uint16_t x, uint16_t y);
|
||||||
|
|
Loading…
Add table
Reference in a new issue