aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--demos/README14
-rwxr-xr-xdemos/console/main.c30
-rw-r--r--drivers/lcd/ssd1289_lld.c8
-rw-r--r--drivers/touchpad/ads7843_lld.c6
-rw-r--r--drivers/touchpad/ads7843_lld.h6
-rw-r--r--drivers/touchpad/xpt2046_lld.c6
-rw-r--r--drivers/touchpad/xpt2046_lld.h6
-rw-r--r--glcd/fastMath.c29
-rw-r--r--glcd/fastMath.h5
-rw-r--r--glcd/glcd.c16
-rw-r--r--glcd/glcd.h3
-rw-r--r--glcd/glcdWorker.h (renamed from glcd/worker.h)4
-rw-r--r--readme2
-rw-r--r--touchpad/touchpad.c18
14 files changed, 77 insertions, 76 deletions
diff --git a/demos/README b/demos/README
index e95314f7..a15ebd51 100644
--- a/demos/README
+++ b/demos/README
@@ -2,17 +2,3 @@ This are a few demos, showing how to use the library.
Please note that this are not compilable projects.
-
-Your boarfile do need to contain the following informations:
-
- #define TP_PORT GPIOC
- #define TP_IRQ 4
- #define TP_CS 6
-
- #define LCD_DATA_PORT GPIOE
- #define LCD_CMD_PORT GPIOD
- #define LCD_CS 12
- #define LCD_RS 13
- #define LCD_WR 14
- #define LCD_RD 15
-
diff --git a/demos/console/main.c b/demos/console/main.c
new file mode 100755
index 00000000..c629e2cd
--- /dev/null
+++ b/demos/console/main.c
@@ -0,0 +1,30 @@
+#include "ch.h"
+#include "hal.h"
+#include "glcd.h"
+#include "test.h"
+#include "console.h"
+
+static GLCDDriver GLCDD1;
+static GLCDConsole CON1;
+
+int main(void) {
+ halInit();
+ chSysInit();
+
+ // init LCD and clear it
+ lcdInit(&GLCDD1);
+ lcdClear(Black);
+
+ // init console
+ lcdConsoleInit(&CON1, 0, 0, lcdGetWidth(), lcdGetHeight(), font_Small, Black, White);
+
+ // use test thread for console output
+ TestThread((BaseSequentialStream*)&CON1);
+
+ while (TRUE) {
+
+ chThdSleepMilliseconds(200);
+ }
+
+ return 0;
+}
diff --git a/drivers/lcd/ssd1289_lld.c b/drivers/lcd/ssd1289_lld.c
index a7c5ab73..09769a4b 100644
--- a/drivers/lcd/ssd1289_lld.c
+++ b/drivers/lcd/ssd1289_lld.c
@@ -100,16 +100,16 @@ __inline void lld_lcdReadStream(uint16_t *buffer, size_t size) {
uint16_t i;
volatile uint16_t dummy;
- dummy = lld_lcdReadGPIO();
+ dummy = lld_lcdReadData();
for(i = 0; i < size; i++)
buffer[i] = lld_lcdReadData();
}
-#endif
+#endif // LCD_USE_GPIO
#ifdef LCD_USE_SPI
/* TODO */
-#endif
+#endif // LCD_USE_SPI
#ifdef LCD_USE_FSMC
@@ -170,7 +170,7 @@ __inline void lld_lcdReadStream(uint16_t *buffer, size_t size) {
buffer[i] = LCD_RAM;
}
}
-#endif
+#endif // LCD_USE_FSMC
static __inline void lld_lcdDelay(uint16_t us) {
chThdSleepMicroseconds(us);
diff --git a/drivers/touchpad/ads7843_lld.c b/drivers/touchpad/ads7843_lld.c
index 507a2104..b097e0a5 100644
--- a/drivers/touchpad/ads7843_lld.c
+++ b/drivers/touchpad/ads7843_lld.c
@@ -2,7 +2,7 @@
#ifdef TOUCHPAD_USE_ADS7843
-__inline uint16_t lld_readX(void) {
+__inline uint16_t lld_tpReadX(void) {
uint8_t txbuf[1];
uint8_t rxbuf[2];
uint16_t x;
@@ -19,7 +19,7 @@ __inline uint16_t lld_readX(void) {
return x;
}
-__inline uint16_t lld_readY(void) {
+__inline uint16_t lld_tpReadY(void) {
uint8_t txbuf[1];
uint8_t rxbuf[2];
uint16_t y;
@@ -36,7 +36,7 @@ __inline uint16_t lld_readY(void) {
return y;
}
-__inline uint16_t lld_readZ(void) {
+__inline uint16_t lld_tpReadZ(void) {
return 0;
}
diff --git a/drivers/touchpad/ads7843_lld.h b/drivers/touchpad/ads7843_lld.h
index 121e6288..d288c3ea 100644
--- a/drivers/touchpad/ads7843_lld.h
+++ b/drivers/touchpad/ads7843_lld.h
@@ -6,9 +6,9 @@
#ifdef TOUCHPAD_USE_ADS7843
-uint16_t lld_readX(void);
-uint16_t lld_readY(void);
-uint16_t lld_readZ(void);
+uint16_t lld_tpReadX(void);
+uint16_t lld_tpReadY(void);
+uint16_t lld_tpReadZ(void);
#endif
#endif
diff --git a/drivers/touchpad/xpt2046_lld.c b/drivers/touchpad/xpt2046_lld.c
index 02ded390..eac9d19a 100644
--- a/drivers/touchpad/xpt2046_lld.c
+++ b/drivers/touchpad/xpt2046_lld.c
@@ -2,7 +2,7 @@
#ifdef TOUCHPAD_USE_XPT2046
-__inline uint16_t lld_readX(void) {
+__inline uint16_t lld_tpReadX(void) {
uint8_t txbuf[1];
uint8_t rxbuf[2];
uint16_t x;
@@ -19,7 +19,7 @@ __inline uint16_t lld_readX(void) {
return x;
}
-__inline uint16_t lld_readY(void) {
+__inline uint16_t lld_tpReadY(void) {
uint8_t txbuf[1];
uint8_t rxbuf[2];
uint16_t y;
@@ -36,7 +36,7 @@ __inline uint16_t lld_readY(void) {
return y;
}
-__inline uint16_t lld_readZ(void) {
+__inline uint16_t lld_tpReadZ(void) {
return 0;
}
diff --git a/drivers/touchpad/xpt2046_lld.h b/drivers/touchpad/xpt2046_lld.h
index c3a12077..249c66ca 100644
--- a/drivers/touchpad/xpt2046_lld.h
+++ b/drivers/touchpad/xpt2046_lld.h
@@ -6,9 +6,9 @@
#ifdef TOUCHPAD_USE_XPT2046
-uint16_t lld_readX(void);
-uint16_t lld_readY(void);
-uint16_t lld_readZ(void);
+uint16_t lld_tpReadX(void);
+uint16_t lld_tpReadY(void);
+uint16_t lld_tpReadZ(void);
#endif
#endif
diff --git a/glcd/fastMath.c b/glcd/fastMath.c
index 26ae0d3f..1957b304 100644
--- a/glcd/fastMath.c
+++ b/glcd/fastMath.c
@@ -116,44 +116,39 @@ float sintable[91] = {
};
-float getSin(unsigned int degree)
-{
+float getSin(unsigned int degree) {
degree = degree % 360;
- if(degree <= 90)
- {
+
+ if(degree <= 90) {
return sintable[degree];
}
- else if(degree <= 180)
- {
+ else if(degree <= 180) {
return sintable[180-degree];
}
- else if(degree <= 270)
- {
+ else if(degree <= 270) {
return sintable[degree-180]*(-1.0);
}
- else
- {
+ else {
return sintable[360-degree]*(-1.0);
}
}
-double getCos(unsigned int degree)
-{
+double getCos(unsigned int degree) {
degree = degree % 360;
+
return getSin(degree+90);
}
/* signum function */
-char sgn(char x){
+char sgn(char x) {
return (x > 0) ? 1 : (x < 0) ? -1 : 0;
}
-unsigned char max(unsigned char a, unsigned char b)
-{
+unsigned char max(unsigned char a, unsigned char b) {
return (a<b) ? b : a;
}
-unsigned char min (unsigned char a, unsigned char b)
-{
+unsigned char min (unsigned char a, unsigned char b) {
return (a<b) ? a : b;
}
+
diff --git a/glcd/fastMath.h b/glcd/fastMath.h
index 674f2394..db4c7329 100644
--- a/glcd/fastMath.h
+++ b/glcd/fastMath.h
@@ -19,12 +19,13 @@
* Copyright: 2011 Roland Domke
*/
-#ifndef FASTMATH_H_
-#define FASTMATH_H_
+#ifndef FASTMATH_H
+#define FASTMATH_H
char sgn(char x);
double getCos(unsigned int degree);
double getSin(unsigned int degree);
unsigned char max(unsigned char a, unsigned char b);
unsigned char min(unsigned char a, unsigned char b);
+
#endif /* FASTMATH_H_ */
diff --git a/glcd/glcd.c b/glcd/glcd.c
index a419b7f2..5d8804b5 100644
--- a/glcd/glcd.c
+++ b/glcd/glcd.c
@@ -1,6 +1,4 @@
#include "glcd.h"
-#include <stdlib.h>
-#include <math.h>
#define EMSG(a) const struct a *emsg = (const struct a*)msg
@@ -11,6 +9,7 @@ static WORKING_AREA(waGLCDWorkerThread, GLCD_WORKER_SIZE);
static msg_t ThreadGLCDWorker(void *arg) {
(void)arg;
Thread *p;
+ uint16_t ret; // return value
chRegSetThreadName("GLCDWorker");
@@ -68,8 +67,8 @@ static msg_t ThreadGLCDWorker(void *arg) {
}
case GLCD_GET_PIXEL_COLOR: {
- /* ToDo */
-
+ EMSG(glcd_msg_get_pixel_color);
+ ret = lld_lcdGetPixelColor(emsg->x, emsg->y);
msg->result = GLCD_DONE;
break;
}
@@ -109,7 +108,8 @@ static msg_t ThreadGLCDWorker(void *arg) {
}
/* Done, release msg again. */
- chMsgRelease(p, 0);
+ chMsgRelease(p, ret);
+ ret = 0;
}
return 0;
@@ -213,11 +213,7 @@ uint16_t lcdGetPixelColor(uint16_t x, uint16_t y) {
msg.y = y;
msg.color = &result;
- chMsgSend(workerThread, (msg_t)&msg);
-
- while(msg.result != GLCD_DONE);
-
- return result;
+ return chMsgSend(workerThread, (msg_t)&msg);
}
void lcdDrawPixel(uint16_t x, uint16_t y, uint16_t color) {
diff --git a/glcd/glcd.h b/glcd/glcd.h
index 850d6f35..f6cedfeb 100644
--- a/glcd/glcd.h
+++ b/glcd/glcd.h
@@ -4,7 +4,8 @@
#include "ch.h"
#include "hal.h"
#include "fonts.h"
-#include "worker.h"
+#include "fastMath.h"
+#include "glcdWorker.h"
#if !defined(LCD_USE_FSMC) && !defined(LCD_USE_GPIO) && !defined(LCD_USE_SPI)
#include "glcdconf.h"
diff --git a/glcd/worker.h b/glcd/glcdWorker.h
index 53d3c09f..14709b8f 100644
--- a/glcd/worker.h
+++ b/glcd/glcdWorker.h
@@ -1,5 +1,5 @@
-#ifndef WORKER_H
-#define WORKER_H
+#ifndef GLCD_WORKER_H
+#define GLCD_WORKER_H
#define GLCD_WORKER_SIZE 512
diff --git a/readme b/readme
index 71e91085..36f99119 100644
--- a/readme
+++ b/readme
@@ -5,7 +5,7 @@ http://chibios.org/dokuwiki/doku.php?id=chibios:community
### Maintainer & Contributors
-Contributors: - Badger -> console implementation and FSMC for F1 and SSD1289
+Contributors: - Badger -> console implementation and FSMC
- Abhishek -> font rendering
- Ben William -> fastMath and lcdDrawEllipse()
- dxli (Dongxu Li) -> lcdDrawEllipse() filled option
diff --git a/touchpad/touchpad.c b/touchpad/touchpad.c
index d44e03a1..97df206b 100644
--- a/touchpad/touchpad.c
+++ b/touchpad/touchpad.c
@@ -16,14 +16,6 @@ void tpInit(SPIDriver *spip) {
spiStart(spip, &spicfg);
}
-static __inline uint16_t readX(void) {
- return lld_readX();
-}
-
-static __inline uint16_t readY(void) {
- return lld_readY();
-}
-
uint8_t tpIRQ(void) {
return (!palReadPad(TP_IRQ_PORT, TP_IRQ));
}
@@ -33,8 +25,8 @@ static uint16_t tpReadRealX(void) {
uint16_t i, x;
for(i=0; i<CONVERSIONS; i++) {
- readX();
- results += readX();
+ lld_tpReadX();
+ results += lld_tpReadX();
}
x = (((SCREEN_WIDTH-1) * (results/CONVERSIONS)) / 2048);
@@ -47,8 +39,8 @@ static uint16_t tpReadRealY(void) {
uint16_t i, y;
for(i=0; i<CONVERSIONS; i++) {
- readY();
- results += readY();
+ lld_tpReadY();
+ results += lld_tpReadY();
}
y = (((SCREEN_HEIGHT-1) * (results/CONVERSIONS)) / 2048);
@@ -97,7 +89,7 @@ uint16_t tpReadY(void) {
}
uint16_t tpReadZ(void) {
- return lld_readZ();
+ return lld_tpReadZ();
}
static void tpDrawCross(uint16_t x, uint16_t y) {