From 43d45dca63e8e098e8a40481411d0c4ca46564c5 Mon Sep 17 00:00:00 2001 From: Joel Bodenmann Date: Tue, 20 Nov 2012 18:37:49 +0100 Subject: gtimer demo --- demos/applications/console/main.c | 59 +++++++++++++++++ demos/applications/graph/main.c | 51 +++++++++++++++ demos/applications/mandelbrot/main.c | 80 +++++++++++++++++++++++ demos/applications/notepad/main.c | 120 +++++++++++++++++++++++++++++++++++ demos/console/main.c | 59 ----------------- demos/graph/main.c | 51 --------------- demos/mandelbrot/main.c | 80 ----------------------- demos/modules/gtimer/main.c | 65 +++++++++++++++++++ demos/notepad/main.c | 120 ----------------------------------- 9 files changed, 375 insertions(+), 310 deletions(-) create mode 100644 demos/applications/console/main.c create mode 100644 demos/applications/graph/main.c create mode 100644 demos/applications/mandelbrot/main.c create mode 100644 demos/applications/notepad/main.c delete mode 100644 demos/console/main.c delete mode 100644 demos/graph/main.c delete mode 100644 demos/mandelbrot/main.c create mode 100644 demos/modules/gtimer/main.c delete mode 100644 demos/notepad/main.c (limited to 'demos') diff --git a/demos/applications/console/main.c b/demos/applications/console/main.c new file mode 100644 index 00000000..b0e0fb7f --- /dev/null +++ b/demos/applications/console/main.c @@ -0,0 +1,59 @@ +/* + ChibiOS/GFX - Copyright (C) 2012 + Joel Bodenmann aka Tectu + + This file is part of ChibiOS/GFX. + + ChibiOS/GFX is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS/GFX is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * !!! IMPORTANT !!! + * + * This example dosen't compile yet, there's a problem in the console source. + * This issue will be fixed soon. + */ + +/* + * Please add the following to your halconf.h + * + * #define GFX_USE_CONSOLE TRUE + * #define GDISP_NEED_SCROLL TRUE + */ + +#include "ch.h" +#include "hal.h" +#include "gdisp.h" +#include "chprintf.h" +#include "console.h" + +static GConsole CON1; + +int main(void) { + halInit(); + chSysInit(); + + gdispInit(); + gdispClear(Lime); + + gfxConsoleInit(&CON1, 0, 0, gdispGetWidth(), gdispGetHeight(), &fontLarger, Black, White); + chprintf((BaseSequentialStream *)&CON1, "Hello the time is %d\nGoodbye.", chTimeNow()); + + + while (TRUE) { + + chThdSleepMilliseconds(100); + } +} + diff --git a/demos/applications/graph/main.c b/demos/applications/graph/main.c new file mode 100644 index 00000000..bd50cf60 --- /dev/null +++ b/demos/applications/graph/main.c @@ -0,0 +1,51 @@ +#include "ch.h" +#include "hal.h" +#include "gdisp.h" +#include "graph.h" +#include "math.h" + +int data[5][2] = { + { 0, 0 }, + { 10, 10 }, + { 20, 20 }, + { 30, 30 }, + { 40, 40 } +}; + +int main(void) { + halInit(); + chSysInit(); + + gdispInit(); + gdispSetOrientation(GDISP_ROTATE_90); + gdispClear(Black); + + Graph G1 = { + gdispGetWidth()/2, + gdispGetHeight()/2, + -150, + 150, + -110, + 110, + 21, + 5, + TRUE, + TRUE, + White, + Grey, + }; + + graphDrawSystem(&G1); + + uint16_t i; + for(i = 0; i < 2500; i++) + graphDrawDot(&G1, i-170, 80*sin(2*0.2*M_PI*i/180), 1, Blue); + + for(i = 0; i < 2500; i++) + graphDrawDot(&G1, i/5-150, 95*sin(2*0.2*M_PI*i/180), 1, Green); + + while(TRUE) { + chThdSleepMilliseconds(100); + } +} + diff --git a/demos/applications/mandelbrot/main.c b/demos/applications/mandelbrot/main.c new file mode 100644 index 00000000..6ab19de1 --- /dev/null +++ b/demos/applications/mandelbrot/main.c @@ -0,0 +1,80 @@ +/* + ChibiOS/GFX - Copyright (C) 2012 + Joel Bodenmann aka Tectu + + This file is part of ChibiOS/GFX. + + ChibiOS/GFX is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS/GFX is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#include "ch.h" +#include "hal.h" +#include "gdisp.h" + +void mandelbrot(float x1, float y1, float x2, float y2) { + unsigned int i,j, width, height; + uint16_t iter; + color_t color; + float fwidth, fheight; + + float sy = y2 - y1; + float sx = x2 - x1; + const int MAX = 512; + + width = (unsigned int)gdispGetWidth(); + height = (unsigned int)gdispGetHeight(); + fwidth = width; + fheight = height; + + for(i = 0; i < width; i++) { + for(j = 0; j < height; j++) { + float cy = j * sy / fheight + y1; + float cx = i * sx / fwidth + x1; + float x=0.0f, y=0.0f, xx=0.0f, yy=0.0f; + for(iter=0; iter <= MAX && xx+yy<4.0f; iter++) { + xx = x*x; + yy = y*y; + y = 2.0f*x*y + cy; + x = xx - yy + cx; + } + //color = ((iter << 8) | (iter&0xFF)); + color = RGB2COLOR(iter<<7, iter<<4, iter); + gdispDrawPixel(i, j, color); + } + } +} + +int main(void) { + float cx, cy; + float zoom = 1.0f; + + halInit(); + chSysInit(); + + gdispInit(); + gdispSetOrientation(GDISP_ROTATE_270); + + /* where to zoom in */ + cx = -0.086f; + cy = 0.85f; + + while(TRUE) { + mandelbrot(-2.0f*zoom+cx, -1.5f*zoom+cy, 2.0f*zoom+cx, 1.5f*zoom+cy); + + zoom *= 0.7f; + if(zoom <= 0.00001f) + zoom = 1.0f; + } +} + diff --git a/demos/applications/notepad/main.c b/demos/applications/notepad/main.c new file mode 100644 index 00000000..7fec864f --- /dev/null +++ b/demos/applications/notepad/main.c @@ -0,0 +1,120 @@ +/* + ChibiOS/GFX - Copyright (C) 2012 + Joel Bodenmann aka Tectu + + This file is part of ChibiOS/GFX. + + ChibiOS/GFX is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS/GFX is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#include "ch.h" +#include "hal.h" +#include "gdisp.h" +#include "touchscreen.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, +}; + +TouchscreenDriver TOUCHPADD1 = { + &SPID1, + &spicfg, + TP_IRQ_PORT, + TP_IRQ, + TRUE +}; + +void drawScreen(void) { + char *msg = "ChibiOS/GFX"; + + gdispSetOrientation(GDISP_ROTATE_90); + 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(); + tsInit(&TOUCHPADD1); + + drawScreen(); + + while (TRUE) { + x = tsReadX(); + y = tsReadY(); + + /* 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); + } + } +} + diff --git a/demos/console/main.c b/demos/console/main.c deleted file mode 100644 index b0e0fb7f..00000000 --- a/demos/console/main.c +++ /dev/null @@ -1,59 +0,0 @@ -/* - ChibiOS/GFX - Copyright (C) 2012 - Joel Bodenmann aka Tectu - - This file is part of ChibiOS/GFX. - - ChibiOS/GFX is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS/GFX is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * !!! IMPORTANT !!! - * - * This example dosen't compile yet, there's a problem in the console source. - * This issue will be fixed soon. - */ - -/* - * Please add the following to your halconf.h - * - * #define GFX_USE_CONSOLE TRUE - * #define GDISP_NEED_SCROLL TRUE - */ - -#include "ch.h" -#include "hal.h" -#include "gdisp.h" -#include "chprintf.h" -#include "console.h" - -static GConsole CON1; - -int main(void) { - halInit(); - chSysInit(); - - gdispInit(); - gdispClear(Lime); - - gfxConsoleInit(&CON1, 0, 0, gdispGetWidth(), gdispGetHeight(), &fontLarger, Black, White); - chprintf((BaseSequentialStream *)&CON1, "Hello the time is %d\nGoodbye.", chTimeNow()); - - - while (TRUE) { - - chThdSleepMilliseconds(100); - } -} - diff --git a/demos/graph/main.c b/demos/graph/main.c deleted file mode 100644 index bd50cf60..00000000 --- a/demos/graph/main.c +++ /dev/null @@ -1,51 +0,0 @@ -#include "ch.h" -#include "hal.h" -#include "gdisp.h" -#include "graph.h" -#include "math.h" - -int data[5][2] = { - { 0, 0 }, - { 10, 10 }, - { 20, 20 }, - { 30, 30 }, - { 40, 40 } -}; - -int main(void) { - halInit(); - chSysInit(); - - gdispInit(); - gdispSetOrientation(GDISP_ROTATE_90); - gdispClear(Black); - - Graph G1 = { - gdispGetWidth()/2, - gdispGetHeight()/2, - -150, - 150, - -110, - 110, - 21, - 5, - TRUE, - TRUE, - White, - Grey, - }; - - graphDrawSystem(&G1); - - uint16_t i; - for(i = 0; i < 2500; i++) - graphDrawDot(&G1, i-170, 80*sin(2*0.2*M_PI*i/180), 1, Blue); - - for(i = 0; i < 2500; i++) - graphDrawDot(&G1, i/5-150, 95*sin(2*0.2*M_PI*i/180), 1, Green); - - while(TRUE) { - chThdSleepMilliseconds(100); - } -} - diff --git a/demos/mandelbrot/main.c b/demos/mandelbrot/main.c deleted file mode 100644 index 6ab19de1..00000000 --- a/demos/mandelbrot/main.c +++ /dev/null @@ -1,80 +0,0 @@ -/* - ChibiOS/GFX - Copyright (C) 2012 - Joel Bodenmann aka Tectu - - This file is part of ChibiOS/GFX. - - ChibiOS/GFX is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS/GFX is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "ch.h" -#include "hal.h" -#include "gdisp.h" - -void mandelbrot(float x1, float y1, float x2, float y2) { - unsigned int i,j, width, height; - uint16_t iter; - color_t color; - float fwidth, fheight; - - float sy = y2 - y1; - float sx = x2 - x1; - const int MAX = 512; - - width = (unsigned int)gdispGetWidth(); - height = (unsigned int)gdispGetHeight(); - fwidth = width; - fheight = height; - - for(i = 0; i < width; i++) { - for(j = 0; j < height; j++) { - float cy = j * sy / fheight + y1; - float cx = i * sx / fwidth + x1; - float x=0.0f, y=0.0f, xx=0.0f, yy=0.0f; - for(iter=0; iter <= MAX && xx+yy<4.0f; iter++) { - xx = x*x; - yy = y*y; - y = 2.0f*x*y + cy; - x = xx - yy + cx; - } - //color = ((iter << 8) | (iter&0xFF)); - color = RGB2COLOR(iter<<7, iter<<4, iter); - gdispDrawPixel(i, j, color); - } - } -} - -int main(void) { - float cx, cy; - float zoom = 1.0f; - - halInit(); - chSysInit(); - - gdispInit(); - gdispSetOrientation(GDISP_ROTATE_270); - - /* where to zoom in */ - cx = -0.086f; - cy = 0.85f; - - while(TRUE) { - mandelbrot(-2.0f*zoom+cx, -1.5f*zoom+cy, 2.0f*zoom+cx, 1.5f*zoom+cy); - - zoom *= 0.7f; - if(zoom <= 0.00001f) - zoom = 1.0f; - } -} - diff --git a/demos/modules/gtimer/main.c b/demos/modules/gtimer/main.c new file mode 100644 index 00000000..bb991edc --- /dev/null +++ b/demos/modules/gtimer/main.c @@ -0,0 +1,65 @@ +/* + ChibiOS/GFX - Copyright (C) 2012 + Joel Bodenmann aka Tectu + + This file is part of ChibiOS/GFX. + + ChibiOS/GFX is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS/GFX is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * Make sure you have enabled the GTimer module in your halconf.h: + * + * #define GFX_USE_GTIMER TRUE + */ + +#include "ch.h" +#include "hal.h" +#include "gtimer.h" + +GTimer GT1, GT2; + +void callback1(void* arg) { + (void)arg; + + palTogglePad(GPIOD, GPIOD_LED3); +} + +void callback2(void* arg) { + (void)arg; + + palSetPad(GPIOD, GPIOD_LED4); +} + +int main(void) { + halInit(); + chSysInit(); + + /* initialize the timers */ + gtimerInit(>1); + gtimerInit(>2); + + /* continious mode - callback1() called without any argument every 250ms */ + gtimerStart(>1, callback1, NULL, TRUE, 250); + + /* single shot mode - callback2() called without any argument once after 1s */ + gtimerStart(>2, callback2, NULL, FALSE, 1000); + + while(TRUE) { + chThdSleepMilliseconds(500); + } + + return 0; +} + diff --git a/demos/notepad/main.c b/demos/notepad/main.c deleted file mode 100644 index 7fec864f..00000000 --- a/demos/notepad/main.c +++ /dev/null @@ -1,120 +0,0 @@ -/* - ChibiOS/GFX - Copyright (C) 2012 - Joel Bodenmann aka Tectu - - This file is part of ChibiOS/GFX. - - ChibiOS/GFX is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS/GFX is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "ch.h" -#include "hal.h" -#include "gdisp.h" -#include "touchscreen.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, -}; - -TouchscreenDriver TOUCHPADD1 = { - &SPID1, - &spicfg, - TP_IRQ_PORT, - TP_IRQ, - TRUE -}; - -void drawScreen(void) { - char *msg = "ChibiOS/GFX"; - - gdispSetOrientation(GDISP_ROTATE_90); - 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(); - tsInit(&TOUCHPADD1); - - drawScreen(); - - while (TRUE) { - x = tsReadX(); - y = tsReadY(); - - /* 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); - } - } -} - -- cgit v1.2.3 From 1dd5de6e81b645e9765da1a3f00f3c399462837e Mon Sep 17 00:00:00 2001 From: Joel Bodenmann Date: Tue, 20 Nov 2012 23:37:50 +0100 Subject: added console demo --- demos/modules/console/main.c | 86 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 demos/modules/console/main.c (limited to 'demos') diff --git a/demos/modules/console/main.c b/demos/modules/console/main.c new file mode 100644 index 00000000..f8ef6338 --- /dev/null +++ b/demos/modules/console/main.c @@ -0,0 +1,86 @@ +/* + ChibiOS/GFX - Copyright (C) 2012 + Joel Bodenmann aka Tectu + + This file is part of ChibiOS/GFX. + + ChibiOS/GFX is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS/GFX is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * Make sure you have the following stuff enabled in your halconf.h: + * + * #define GFX_USE_GDISP TRUE + * #define GFX_USE_GWIN TRUE + * #define GDISP_NEED_SCROLL TRUE + * #define GDISP_NEED_CLIP TRUE (optional but recommended) + * #define GWIN_NEED_CONSOLE TRUE + */ + +#include "ch.h" +#include "hal.h" +#include "chprintf.h" +#include "gdisp.h" +#include "gwin.h" + +GHandle GW1, GW2, GW3; +BaseSequentialStream *S1, *S2, *S3; + +int main(void) { + uint8_t i; + + halInit(); + chSysInit(); + + gdispInit(); + //tsInit(&TSD1); + //gdispInit(); + gdispClear(Black); + + GW1 = gwinCreateConsole(NULL, 0, 0, gdispGetWidth(), gdispGetHeight()/2, &fontUI2Double); + GW2 = gwinCreateConsole(NULL, 0, gdispGetHeight()/2, gdispGetWidth()/2, gdispGetHeight(), &fontSmall); + GW3 = gwinCreateConsole(NULL, gdispGetWidth()/2, gdispGetHeight()/2, gdispGetWidth(), gdispGetHeight(), &fontSmall); + + gwinSetColor(GW1, Green); + gwinSetBgColor(GW1, Black); + gwinSetColor(GW2, White); + gwinSetBgColor(GW2, Blue); + gwinSetColor(GW3, Black); + gwinSetBgColor(GW3, Red); + + gwinClear(GW1); + gwinClear(GW2); + gwinClear(GW3); + + S1 = gwinGetConsoleStream(GW1); + S2 = gwinGetConsoleStream(GW2); + S3 = gwinGetConsoleStream(GW3); + + for(i = 0; i < 10; i++) { + chprintf(S1, "Hello ChibiOS/GFX!\r\n"); + } + + for(i = 0; i < 16; i++) { + chprintf(S2, "Message Nr.: %d\r\n", i+1); + } + + for(i = 0; i < 18; i++) { + chprintf(S3, "Message Nr.: %d\r\n", i+1); + } + + while(TRUE) { + chThdSleepMilliseconds(500); + } +} + -- cgit v1.2.3 From c0cf584c85d2a9ee31adccb23d307b1955e3d8fc Mon Sep 17 00:00:00 2001 From: Joel Bodenmann Date: Wed, 21 Nov 2012 09:54:23 +0100 Subject: console example doc --- demos/modules/console/main.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'demos') diff --git a/demos/modules/console/main.c b/demos/modules/console/main.c index f8ef6338..fd329f95 100644 --- a/demos/modules/console/main.c +++ b/demos/modules/console/main.c @@ -34,7 +34,10 @@ #include "gdisp.h" #include "gwin.h" +/* The handles for our three consoles */ GHandle GW1, GW2, GW3; + +/* The streams for our three consoles */ BaseSequentialStream *S1, *S2, *S3; int main(void) { @@ -43,15 +46,16 @@ int main(void) { halInit(); chSysInit(); + /* initialize and clear the display */ gdispInit(); - //tsInit(&TSD1); - //gdispInit(); gdispClear(Black); + /* create the three console windows and set a font for each */ GW1 = gwinCreateConsole(NULL, 0, 0, gdispGetWidth(), gdispGetHeight()/2, &fontUI2Double); GW2 = gwinCreateConsole(NULL, 0, gdispGetHeight()/2, gdispGetWidth()/2, gdispGetHeight(), &fontSmall); GW3 = gwinCreateConsole(NULL, gdispGetWidth()/2, gdispGetHeight()/2, gdispGetWidth(), gdispGetHeight(), &fontSmall); + /* Set the fore- and background colors for each console */ gwinSetColor(GW1, Green); gwinSetBgColor(GW1, Black); gwinSetColor(GW2, White); @@ -59,22 +63,27 @@ int main(void) { gwinSetColor(GW3, Black); gwinSetBgColor(GW3, Red); + /* clear all console windows - to set background */ gwinClear(GW1); gwinClear(GW2); gwinClear(GW3); + /* receive the stream pointers of each console */ S1 = gwinGetConsoleStream(GW1); S2 = gwinGetConsoleStream(GW2); S3 = gwinGetConsoleStream(GW3); + /* Output some data on the first console */ for(i = 0; i < 10; i++) { chprintf(S1, "Hello ChibiOS/GFX!\r\n"); } + /* Output some data on the second console */ for(i = 0; i < 16; i++) { chprintf(S2, "Message Nr.: %d\r\n", i+1); } + /* Output some data on the third console */ for(i = 0; i < 18; i++) { chprintf(S3, "Message Nr.: %d\r\n", i+1); } -- cgit v1.2.3 From 795947a251722cb2df3a2588f383dcc43935a535 Mon Sep 17 00:00:00 2001 From: Joel Bodenmann Date: Wed, 21 Nov 2012 10:25:13 +0100 Subject: window example code --- demos/modules/window/main.c | 72 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 demos/modules/window/main.c (limited to 'demos') diff --git a/demos/modules/window/main.c b/demos/modules/window/main.c new file mode 100644 index 00000000..c70c94db --- /dev/null +++ b/demos/modules/window/main.c @@ -0,0 +1,72 @@ +/* + ChibiOS/GFX - Copyright (C) 2012 + Joel Bodenmann aka Tectu + + This file is part of ChibiOS/GFX. + + ChibiOS/GFX is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS/GFX is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * Make sure you have the following stuff enabled in your halconf.h: + * + * #define GFX_USE_GDISP TRUE + * #define GDISP_NEED_SCROLL TRUE + * #define GDISP_NEED_CLIP TRUE (optional but recommended) + */ + + +#include "ch.h" +#include "hal.h" +#include "gdisp.h" +#include "gwin.h" + +/* The handles for our two Windows */ +GHandle GW1, GW2; + +int main(void) { + halInit(); + chSysInit(); + + /* Initialize and clear the display */ + gdispInit(); + gdispClear(Lime); + + /* Create two windows */ + GW1 = gwinCreateWindow(NULL, 20, 10, 200, 150); + GW2 = gwinCreateWindow(NULL, 50, 190, 150, 100); + + /* Set fore- and background colors for both windows */ + gwinSetColor(GW1, Black); + gwinSetBgColor(GW1, White); + gwinSetColor(GW2, White); + gwinSetBgColor(GW2, Blue); + + /* Clear both windows - to set background color */ + gwinClear(GW1); + gwinClear(GW2); + + /* + * Draw two filled circles at the same coordinate + * of each window to demonstrate the relative coordinates + * of windows + */ + gwinFillCircle(GW1, 20, 20, 15); + gwinFillCircle(GW2, 20, 20, 15); + + while(TRUE) { + chThdSleepMilliseconds(500); + } +} + -- cgit v1.2.3 From f262b7ad91c91ebed1990f74ec6b7a69ae36e359 Mon Sep 17 00:00:00 2001 From: Joel Bodenmann Date: Thu, 22 Nov 2012 07:29:55 +0100 Subject: console demo code doc --- demos/modules/console/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'demos') diff --git a/demos/modules/console/main.c b/demos/modules/console/main.c index fd329f95..962969eb 100644 --- a/demos/modules/console/main.c +++ b/demos/modules/console/main.c @@ -23,7 +23,7 @@ * * #define GFX_USE_GDISP TRUE * #define GFX_USE_GWIN TRUE - * #define GDISP_NEED_SCROLL TRUE + * #define GDISP_NEED_SCROLL TRUE (optional but recommended) * #define GDISP_NEED_CLIP TRUE (optional but recommended) * #define GWIN_NEED_CONSOLE TRUE */ -- cgit v1.2.3