A TextDisplay driver that supports graphical displays using on of the SED133x conrtrolers. Allows stdout and stderr output to be redirected to the display.
Terminal.cpp@1:18c56f038905, 2011-01-15 (annotated)
- 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?
User | Revision | Line number | New 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 |