Improved version of Simon Ford's TextDisplay library, with addressing and timing fixes. Supports up to 20x4 text displays.
Diff: Terminal.cpp
- Revision:
- 0:2c5bba968d7c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Terminal.cpp Sun Feb 14 00:28:08 2010 +0000
@@ -0,0 +1,73 @@
+/* mbed Terminal TextDisplay Library
+ * Copyright (c) 2007-2009 sford
+ * Released under the MIT License: http://mbed.org/license/mit
+ */
+
+#include "Terminal.h"
+
+#include "mbed.h"
+
+Terminal::Terminal(PinName tx, PinName rx) : _serial(tx, rx) {
+ cls();
+}
+
+void Terminal::character(uint16_t column, uint16_t row, int c) {
+ // Cursor Home <ESC>[{ROW};{COLUMN}H
+ _serial.printf("\033[%u;%uH%c", row + 1, column + 1, c);
+}
+
+uint16_t Terminal::columns() {
+ return 80;
+}
+
+uint16_t Terminal::rows() {
+ return 35;
+}
+
+void Terminal::cls() {
+ _serial.printf("\033[2J");
+}
+
+void Terminal::foreground(uint32_t colour) {
+
+ /* Set Attribute Mode <ESC>[{n}m
+ * - Sets display attribute settings. The following lists standard attributes:
+ *
+ * Foreground Colours
+ * 30 Black
+ * 31 Red
+ * 32 Green
+ * 33 Yellow
+ * 34 Blue
+ * 35 Magenta
+ * 36 Cyan
+ * 37 White
+ */
+ uint32_t r = (colour >> 23) & 1;
+ uint32_t g = (colour >> 15) & 1;
+ uint32_t b = (colour >> 7) & 1;
+ uint32_t bgr = (b << 2) | (g << 1) | (r << 0);
+ uint32_t c = 30 + bgr;
+ _serial.printf("\033[%um", c);
+}
+
+void Terminal::background(uint32_t colour) {
+
+ /* Background Colours
+ * 40 Black
+ * 41 Red
+ * 42 Green
+ * 43 Yellow
+ * 44 Blue
+ * 45 Magenta
+ * 46 Cyan
+ * 47 White
+ */
+ uint32_t r = (colour >> 23) & 1;
+ uint32_t g = (colour >> 15) & 1;
+ uint32_t b = (colour >> 7) & 1;
+ uint32_t bgr = (b << 2) | (g << 1) | (r << 0);
+ uint32_t c = 40 + bgr;
+ _serial.printf("\033[%um", c);
+}
+
Ned Konz