A TextDisplay driver that supports graphical displays using on of the SED133x conrtrolers. Allows stdout and stderr output to be redirected to the display.

Committer:
llagendijk
Date:
Sat Jan 15 16:02:56 2011 +0000
Revision:
1:18c56f038905
Parent:
0:9e72c57b16fd
Child:
5:684f79f70ac9
first round of cleanups

Who changed what in which revision?

UserRevisionLine numberNew contents of line
llagendijk 0:9e72c57b16fd 1 /* mbed Terminal TextDisplay Library
llagendijk 0:9e72c57b16fd 2 * Copyright (c) 2007-2009 sford
llagendijk 0:9e72c57b16fd 3 * Released under the MIT License: http://mbed.org/license/mit
llagendijk 0:9e72c57b16fd 4 */
llagendijk 0:9e72c57b16fd 5
llagendijk 0:9e72c57b16fd 6 #include "Terminal.h"
llagendijk 0:9e72c57b16fd 7
llagendijk 0:9e72c57b16fd 8 #include "mbed.h"
llagendijk 0:9e72c57b16fd 9
llagendijk 1:18c56f038905 10 Terminal::Terminal(PinName tx, PinName rx, const char *name) : TextDisplay(name), _serial(tx, rx) {
llagendijk 0:9e72c57b16fd 11 cls();
llagendijk 0:9e72c57b16fd 12 }
llagendijk 0:9e72c57b16fd 13
llagendijk 0:9e72c57b16fd 14 void Terminal::character(uint16_t column, uint16_t row, int c) {
llagendijk 0:9e72c57b16fd 15 // Cursor Home <ESC>[{ROW};{COLUMN}H
llagendijk 0:9e72c57b16fd 16 _serial.printf("\033[%u;%uH%c", row + 1, column + 1, c);
llagendijk 0:9e72c57b16fd 17 }
llagendijk 0:9e72c57b16fd 18
llagendijk 0:9e72c57b16fd 19 uint16_t Terminal::columns() {
llagendijk 0:9e72c57b16fd 20 return 80;
llagendijk 0:9e72c57b16fd 21 }
llagendijk 0:9e72c57b16fd 22
llagendijk 0:9e72c57b16fd 23 uint16_t Terminal::rows() {
llagendijk 0:9e72c57b16fd 24 return 35;
llagendijk 0:9e72c57b16fd 25 }
llagendijk 0:9e72c57b16fd 26
llagendijk 0:9e72c57b16fd 27 void Terminal::cls() {
llagendijk 0:9e72c57b16fd 28 _serial.printf("\033[2J");
llagendijk 0:9e72c57b16fd 29 }
llagendijk 0:9e72c57b16fd 30
llagendijk 0:9e72c57b16fd 31 void Terminal::foreground(uint32_t colour) {
llagendijk 0:9e72c57b16fd 32
llagendijk 0:9e72c57b16fd 33 /* Set Attribute Mode <ESC>[{n}m
llagendijk 0:9e72c57b16fd 34 * - Sets display attribute settings. The following lists standard attributes:
llagendijk 0:9e72c57b16fd 35 *
llagendijk 0:9e72c57b16fd 36 * Foreground Colours
llagendijk 0:9e72c57b16fd 37 * 30 Black
llagendijk 0:9e72c57b16fd 38 * 31 Red
llagendijk 0:9e72c57b16fd 39 * 32 Green
llagendijk 0:9e72c57b16fd 40 * 33 Yellow
llagendijk 0:9e72c57b16fd 41 * 34 Blue
llagendijk 0:9e72c57b16fd 42 * 35 Magenta
llagendijk 0:9e72c57b16fd 43 * 36 Cyan
llagendijk 0:9e72c57b16fd 44 * 37 White
llagendijk 0:9e72c57b16fd 45 */
llagendijk 0:9e72c57b16fd 46 uint32_t r = (colour >> 23) & 1;
llagendijk 0:9e72c57b16fd 47 uint32_t g = (colour >> 15) & 1;
llagendijk 0:9e72c57b16fd 48 uint32_t b = (colour >> 7) & 1;
llagendijk 0:9e72c57b16fd 49 uint32_t bgr = (b << 2) | (g << 1) | (r << 0);
llagendijk 0:9e72c57b16fd 50 uint32_t c = 30 + bgr;
llagendijk 0:9e72c57b16fd 51 _serial.printf("\033[%um", c);
llagendijk 0:9e72c57b16fd 52 }
llagendijk 0:9e72c57b16fd 53
llagendijk 0:9e72c57b16fd 54 void Terminal::background(uint32_t colour) {
llagendijk 0:9e72c57b16fd 55
llagendijk 0:9e72c57b16fd 56 /* Background Colours
llagendijk 0:9e72c57b16fd 57 * 40 Black
llagendijk 0:9e72c57b16fd 58 * 41 Red
llagendijk 0:9e72c57b16fd 59 * 42 Green
llagendijk 0:9e72c57b16fd 60 * 43 Yellow
llagendijk 0:9e72c57b16fd 61 * 44 Blue
llagendijk 0:9e72c57b16fd 62 * 45 Magenta
llagendijk 0:9e72c57b16fd 63 * 46 Cyan
llagendijk 0:9e72c57b16fd 64 * 47 White
llagendijk 0:9e72c57b16fd 65 */
llagendijk 0:9e72c57b16fd 66 uint32_t r = (colour >> 23) & 1;
llagendijk 0:9e72c57b16fd 67 uint32_t g = (colour >> 15) & 1;
llagendijk 0:9e72c57b16fd 68 uint32_t b = (colour >> 7) & 1;
llagendijk 0:9e72c57b16fd 69 uint32_t bgr = (b << 2) | (g << 1) | (r << 0);
llagendijk 0:9e72c57b16fd 70 uint32_t c = 40 + bgr;
llagendijk 0:9e72c57b16fd 71 _serial.printf("\033[%um", c);
llagendijk 0:9e72c57b16fd 72 }
llagendijk 0:9e72c57b16fd 73