aboutsummaryrefslogtreecommitdiffstats
path: root/glcd
diff options
context:
space:
mode:
authorTectu <joel@unormal.org>2012-07-23 03:39:36 +0200
committerTectu <joel@unormal.org>2012-07-23 03:39:36 +0200
commit586468a7c9268b585f35128c96908e6e21a399d6 (patch)
tree577b891b490405d553a58e0b0645d5040839da5e /glcd
parent0da58f180c9d6e4152223c4cc06ace7ec5369185 (diff)
downloaduGFX-586468a7c9268b585f35128c96908e6e21a399d6.tar.gz
uGFX-586468a7c9268b585f35128c96908e6e21a399d6.tar.bz2
uGFX-586468a7c9268b585f35128c96908e6e21a399d6.zip
implemented lcdGetPixelColor()
Diffstat (limited to 'glcd')
-rw-r--r--glcd/glcd.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/glcd/glcd.c b/glcd/glcd.c
index a419b7f2..80f7a722 100644
--- a/glcd/glcd.c
+++ b/glcd/glcd.c
@@ -11,6 +11,7 @@ static WORKING_AREA(waGLCDWorkerThread, GLCD_WORKER_SIZE);
static msg_t ThreadGLCDWorker(void *arg) {
(void)arg;
Thread *p;
+ uint16_t ret;
chRegSetThreadName("GLCDWorker");
@@ -68,8 +69,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 +110,8 @@ static msg_t ThreadGLCDWorker(void *arg) {
}
/* Done, release msg again. */
- chMsgRelease(p, 0);
+ chMsgRelease(p, ret);
+ ret = 0;
}
return 0;
@@ -213,11 +215,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) {