The start of a generic Text Display library to drive multiple types of text display in the same way

Dependencies:   mbed

Committer:
simon
Date:
Wed Nov 25 00:01:31 2009 +0000
Revision:
0:e8a5ca303ebd

        

Who changed what in which revision?

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