From 217f15b4d34c19c87a2c188240f26ae1d50ee659 Mon Sep 17 00:00:00 2001 From: Tectu Date: Wed, 22 Aug 2012 16:06:43 +0200 Subject: [PATCH 1/3] compiler warning fix --- drivers/gdisp/SSD1289/ssd1289_lld.c.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/gdisp/SSD1289/ssd1289_lld.c.h b/drivers/gdisp/SSD1289/ssd1289_lld.c.h index 7c0fade2..319013cc 100644 --- a/drivers/gdisp/SSD1289/ssd1289_lld.c.h +++ b/drivers/gdisp/SSD1289/ssd1289_lld.c.h @@ -96,6 +96,8 @@ dummy = lld_lcdReadData(); for(i = 0; i < size; i++) buffer[i] = lld_lcdReadData(); + + (void)dummy; } #elif defined(LCD_USE_FSMC) From bee96e39ad908f1bcee57320c9764dd2ec63bead Mon Sep 17 00:00:00 2001 From: Tectu Date: Wed, 22 Aug 2012 16:33:40 +0200 Subject: [PATCH 2/3] fixed touchpad orientation --- src/touchpad.c | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/src/touchpad.c b/src/touchpad.c index a18930da..44d5f426 100644 --- a/src/touchpad.c +++ b/src/touchpad.c @@ -158,8 +158,7 @@ uint16_t tpReadX(void) { x = cal.xm * _tpReadRealX() + cal.xn; y = cal.ym * _tpReadRealY() + cal.yn; - /* - switch(gdispGetOrientation()) { // implement gdispGetOrientation() + switch(gdispGetOrientation()) { case portrait: return x; case landscape: @@ -169,9 +168,6 @@ uint16_t tpReadX(void) { case landscapeInv: return y; } - */ - - return x; } /** @@ -187,8 +183,7 @@ uint16_t tpReadY(void) { x = cal.xm * _tpReadRealX() + cal.xn; y = cal.ym * _tpReadRealY() + cal.yn; - /* - switch(gdispGetOrientation()) { // implement gdispGetOrientation() + switch(gdispGetOrientation()) { case portrait: return y; case landscape: @@ -198,9 +193,6 @@ uint16_t tpReadY(void) { case landscapeInv: return SCREEN_WIDTH - x; } - */ - - return y; } void tpCalibrate(void) { From a7f5b7433e5a7c8ab8fd70cff0d26a1de2d66ccc Mon Sep 17 00:00:00 2001 From: Tectu Date: Thu, 23 Aug 2012 15:36:43 +0200 Subject: [PATCH 3/3] added notepad demo --- demos/notepad/main.c | 103 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100755 demos/notepad/main.c diff --git a/demos/notepad/main.c b/demos/notepad/main.c new file mode 100755 index 00000000..65247b09 --- /dev/null +++ b/demos/notepad/main.c @@ -0,0 +1,103 @@ +#include "ch.h" +#include "hal.h" +#include "gdisp.h" +#include "touchpad.h" + +#define COLOR_SIZE 20 +#define PEN_SIZE 20 +#define OFFSET 3 + +#define COLOR_BOX(a) (x >= a && x <= a + COLOR_SIZE) +#define PEN_BOX(a) (y >= a && y <= a + COLOR_SIZE) +#define GET_COLOR(a) (COLOR_BOX(a * COLOR_SIZE + OFFSET)) +#define GET_PEN(a) (PEN_BOX(a * 2 * PEN_SIZE + OFFSET)) +#define DRAW_COLOR(a) (a * COLOR_SIZE + OFFSET) +#define DRAW_PEN(a) (a * 2 * PEN_SIZE + OFFSET) +#define DRAW_AREA(x, y) (x >= PEN_SIZE + OFFSET + 3 && x <= gdispGetWidth() && \ + y >= COLOR_SIZE + OFFSET + 3 && y <= gdispGetHeight()) + +static const SPIConfig spicfg = { + NULL, + TP_CS_PORT, + TP_CS, + /* SPI_CR1_BR_2 | */ SPI_CR1_BR_1 | SPI_CR1_BR_0, +}; + +TOUCHPADDriver TOUCHPADD1 = { + &SPID1, + &spicfg, + TP_IRQ_PORT, + TP_IRQ, + TRUE +}; + +void drawScreen(void) { + char *msg = "ChibiOS/GFX"; + uint16_t colorsize = COLOR_SIZE; + uint16_t pensize = PEN_SIZE; + + gdispSetOrientation(landscape); + gdispClear(White); + gdispDrawString(gdispGetWidth()-gdispGetStringWidth(msg, &fontUI2Double)-3, 3, msg, &fontUI2Double, Black); + + /* colors */ + gdispFillArea(0 * COLOR_SIZE + 3, 3, COLOR_SIZE, COLOR_SIZE, Black); /* Black */ + gdispFillArea(1 * COLOR_SIZE + 3, 3, COLOR_SIZE, COLOR_SIZE, Red); /* Red */ + gdispFillArea(2 * COLOR_SIZE + 3, 3, COLOR_SIZE, COLOR_SIZE, Yellow); /* Yellow */ + gdispFillArea(3 * COLOR_SIZE + 3, 3, COLOR_SIZE, COLOR_SIZE, Green); /* Green */ + gdispFillArea(4 * COLOR_SIZE + 3, 3, COLOR_SIZE, COLOR_SIZE, Blue); /* Blue */ + gdispDrawBox (5 * COLOR_SIZE + 3, 3, COLOR_SIZE, COLOR_SIZE, Black); /* White */ + + /* pens */ + gdispDrawString(OFFSET * 2, DRAW_PEN(1), "1", &fontLargeNumbers, Black); + gdispDrawString(OFFSET * 2, DRAW_PEN(2), "2", &fontLargeNumbers, Black); + gdispDrawString(OFFSET * 2, DRAW_PEN(3), "3", &fontLargeNumbers, Black); + gdispDrawString(OFFSET * 2, DRAW_PEN(4), "4", &fontLargeNumbers, Black); + gdispDrawString(OFFSET * 2, DRAW_PEN(5), "5", &fontLargeNumbers, Black); +} + +int main(void) { + volatile uint16_t x, y; + color_t color = Black; + uint16_t pen = 0; + + halInit(); + chSysInit(); + + gdispInit(); + tpInit(&TOUCHPADD1); + tpCalibrate(); + + drawScreen(); + + while (TRUE) { + x = tpReadX(); + y = tpReadY(); + + /* inside color box ? */ + if(y >= OFFSET && y <= COLOR_SIZE) { + if(GET_COLOR(0)) color = Black; + else if(GET_COLOR(1)) color = Red; + else if(GET_COLOR(2)) color = Yellow; + else if(GET_COLOR(3)) color = Green; + else if(GET_COLOR(4)) color = Blue; + else if(GET_COLOR(5)) color = White; + + /* inside pen box ? */ + } else if(x >= OFFSET && x <= PEN_SIZE) { + if(GET_PEN(1)) pen = 0; + else if(GET_PEN(2)) pen = 1; + else if(GET_PEN(3)) pen = 2; + else if(GET_PEN(4)) pen = 3; + else if(GET_PEN(5)) pen = 4; + + /* inside drawing area ? */ + } else if(DRAW_AREA(x, y)) { + if(pen == 0) + gdispDrawPixel(x, y, color); + else + gdispFillCircle(x, y, pen, color); + } + } +} +