aboutsummaryrefslogtreecommitdiffstats
path: root/src/tdisp/tdisp.c
diff options
context:
space:
mode:
authorJoel Bodenmann <joel@unormal.org>2013-05-15 18:00:42 +0200
committerJoel Bodenmann <joel@unormal.org>2013-05-15 18:00:42 +0200
commit11a71cb080d7548f362583baaced74675b6718ad (patch)
treed88f72c3e2a4e42f27c5bd824a978e783c89de5c /src/tdisp/tdisp.c
parent4ba223030d6d2044e16c54560e00d93df32eacd8 (diff)
downloaduGFX-11a71cb080d7548f362583baaced74675b6718ad.tar.gz
uGFX-11a71cb080d7548f362583baaced74675b6718ad.tar.bz2
uGFX-11a71cb080d7548f362583baaced74675b6718ad.zip
TDISP fixes
Diffstat (limited to 'src/tdisp/tdisp.c')
-rw-r--r--src/tdisp/tdisp.c201
1 files changed, 103 insertions, 98 deletions
diff --git a/src/tdisp/tdisp.c b/src/tdisp/tdisp.c
index 38199d72..dadffc68 100644
--- a/src/tdisp/tdisp.c
+++ b/src/tdisp/tdisp.c
@@ -4,101 +4,106 @@
*
* http://chibios-gfx.com/license.html
*/
-
-/**
- * @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 "tdisp/lld/tdisp_lld.h"
-
-#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, void *value) {
- MUTEX_ENTER();
- tdisp_lld_control(what, value);
- MUTEX_LEAVE();
-}
-
-#endif /* GFX_USE_TDISP */
-/** @} */
+
+/**
+ * @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 "tdisp/lld/tdisp_lld.h"
+
+#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 tdispDrawStringLocation(coord_t col, coord_t row, char *s) {
+ tdispSetCursor(col, row);
+ tdispSDrawString(s);
+}
+
+void tdispControl(uint16_t what, void *value) {
+ MUTEX_ENTER();
+ tdisp_lld_control(what, value);
+ MUTEX_LEAVE();
+}
+
+#endif /* GFX_USE_TDISP */
+/** @} */