aboutsummaryrefslogtreecommitdiffstats
path: root/src/tdisp
diff options
context:
space:
mode:
authorJoel Bodenmann <joel@unormal.org>2013-06-01 01:37:53 +0200
committerJoel Bodenmann <joel@unormal.org>2013-06-01 01:37:53 +0200
commitebc30c02bcff4ea36ac3e46b48ae413c0ed34b80 (patch)
treed87e9c07f6f8ba2ec186d77d53bb243df3ab671c /src/tdisp
parentf2ba60f4655107bd0099d24238220d94639f9d29 (diff)
downloaduGFX-ebc30c02bcff4ea36ac3e46b48ae413c0ed34b80.tar.gz
uGFX-ebc30c02bcff4ea36ac3e46b48ae413c0ed34b80.tar.bz2
uGFX-ebc30c02bcff4ea36ac3e46b48ae413c0ed34b80.zip
TDISP update
Diffstat (limited to 'src/tdisp')
-rw-r--r--src/tdisp/tdisp.c241
1 files changed, 138 insertions, 103 deletions
diff --git a/src/tdisp/tdisp.c b/src/tdisp/tdisp.c
index c7931995..d51bfd94 100644
--- a/src/tdisp/tdisp.c
+++ b/src/tdisp/tdisp.c
@@ -1,103 +1,138 @@
-/*
- * This file is subject to the terms of the GFX License, v1.0. If a copy of
- * the license was not distributed with this file, you can obtain one at:
- *
- * http://chibios-gfx.com/license.html
- */
-
-/**
- * @file src/tdisp/tdisp.c
- * @brief TDISP Driver code.
- *
- * @addtogroup TDISP
- * @{
- */
-#include "gfx.h"
-
-#if GFX_USE_TDISP || defined(__DOXYGEN__)
-
-#include "tdisp/lld/tdisp_lld.h"
-
-#if TDISP_NEED_MULTITHREAD
- static gfxMutex tdispMutex;
-
- #define MUTEX_INIT() gfxMutexInit(&tdispMutex)
- #define MUTEX_ENTER() gfxMutexEnter(&tdispMutex)
- #define MUTEX_LEAVE() gfxMutexExit(&tdispMutex)
-
-#else
-
- #define MUTEX_INIT()
- #define MUTEX_ENTER()
- #define MUTEX_LEAVE()
-
-#endif
-
-bool_t tdispInit(void) {
- bool_t res;
-
- MUTEX_INIT();
-
- MUTEX_ENTER();
- res = tdisp_lld_init();
- MUTEX_LEAVE();
-
- return res;
-}
-
-void tdispClear(void) {
- MUTEX_ENTER();
- tdisp_lld_clear();
- MUTEX_LEAVE();
-}
-
-void tdispHome(void) {
- MUTEX_ENTER();
- tdisp_lld_set_cursor(0, 0);
- MUTEX_LEAVE();
-}
-
-void tdispSetCursor(coord_t col, coord_t row) {
- /* Keep the input range valid */
- if (row >= TDISP.rows)
- row = TDISP.rows - 1;
- MUTEX_ENTER();
- tdisp_lld_set_cursor(col, row);
- MUTEX_LEAVE();
-}
-
-void tdispCreateChar(uint8_t address, char *charmap) {
- /* make sure we don't write somewhere we're not supposed to */
- if (address < TDISP.maxCustomChars) {
- MUTEX_ENTER();
- tdisp_lld_create_char(address, charmap);
- MUTEX_LEAVE();
- }
-}
-
-void tdispDrawChar(char c) {
- MUTEX_ENTER();
- tdisp_lld_draw_char(c);
- MUTEX_LEAVE();
-}
-
-void tdispDrawString(char *s) {
- MUTEX_ENTER();
- while(*s)
- tdisp_lld_draw_char(*s++);
- MUTEX_LEAVE();
-}
-
-void tdispDrawStringLocation(coord_t col, coord_t row, char *s) {
- tdispSetCursor(col, row);
- tdispDrawString(s);
-}
-
-void tdispControl(uint16_t what, void *value) {
- MUTEX_ENTER();
- tdisp_lld_control(what, value);
- MUTEX_LEAVE();
-}
-
-#endif /* GFX_USE_TDISP */
-/** @} */
+/*
+ ChibiOS/GFX - Copyright (C) 2012, 2013
+ Joel Bodenmann aka Tectu <joel@unormal.org>
+
+ 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 <http://www.gnu.org/licenses/>.
+*/
+
+/**
+ * @file src/tdisp/tdisp.c
+ * @brief TDISP Driver code.
+ *
+ * @addtogroup TDISP
+ * @{
+ */
+#include "ch.h"
+#include "hal.h"
+#include "gfx.h"
+
+#if GFX_USE_TDISP || defined(__DOXYGEN__)
+
+#include "../../include/tdisp/lld/tdisp_lld.h"
+
+/* cursor controllers */
+#define CURSOR 1
+#define ON 0
+#define OFF
+
+#if TDISP_NEED_MULTITHREAD
+ #if !CH_USE_MUTEXES
+ #error "TDISP: CH_USE_MUTEXES must be defined in chconf.h because TDISP_NEED_MULTITHREAD is defined"
+ #endif
+
+ static Mutex tdispMutex;
+
+ #define MUTEX_INIT() chMtxInit(&tdispMutex)
+ #define MUTEX_ENTER() chMtxLock(&tdispMutex)
+ #define MUTEX_LEAVE() chMtxUnlock()
+
+#else
+
+ #define MUTEX_INIT()
+ #define MUTEX_ENTER()
+ #define MUTEX_LEAVE()
+
+#endif
+
+bool_t tdispInit(void) {
+ bool_t res;
+
+ MUTEX_INIT();
+
+ MUTEX_ENTER();
+ res = tdisp_lld_init();
+ MUTEX_LEAVE();
+
+ return res;
+}
+
+void tdispClear(void) {
+ MUTEX_ENTER();
+ tdisp_lld_clear();
+ MUTEX_LEAVE();
+}
+
+void tdispHome(void) {
+ MUTEX_ENTER();
+ tdisp_lld_set_cursor(0, 0);
+ MUTEX_LEAVE();
+}
+
+void tdispSetCursor(coord_t col, coord_t row) {
+ /* Keep the input range valid */
+ if (row >= TDISP.rows)
+ row = TDISP.rows - 1;
+ MUTEX_ENTER();
+ tdisp_lld_set_cursor(col, row);
+ MUTEX_LEAVE();
+}
+
+void tdispCreateChar(uint8_t address, uint8_t *charmap) {
+ /* make sure we don't write somewhere we're not supposed to */
+ if (address < TDISP.maxCustomChars) {
+ MUTEX_ENTER();
+ tdisp_lld_create_char(address, charmap);
+ MUTEX_LEAVE();
+ }
+}
+
+void tdispDrawChar(char c) {
+ MUTEX_ENTER();
+ tdisp_lld_draw_char(c);
+ MUTEX_LEAVE();
+}
+
+void tdispDrawString(char *s) {
+ MUTEX_ENTER();
+ while(*s)
+ tdisp_lld_draw_char(*s++);
+ MUTEX_LEAVE();
+}
+
+void tdispControl(uint16_t what, uint16_t value) {
+ MUTEX_ENTER();
+ tdisp_lld_control(what, value);
+ MUTEX_LEAVE();
+}
+
+void tdispScroll(uint16_t direction, uint16_t amount, uint16_t delay) {
+ MUTEX_ENTER();
+ tdisp_lld_scroll(direction, amount, delay);
+ MUTEX_LEAVE();
+}
+
+#if TDISP_USE_BACKLIGHT
+void tdispSetBacklight(uint16_t percentage) {
+ if (percentage > 100)
+ percentage = 100;
+ MUTEX_ENTER();
+ tdisp_lld_set_backlight(percentage);
+ MUTEX_LEAVE();
+}
+#endif
+
+#endif /* GFX_USE_TDISP */
+/** @} */