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 29 21:04:53 2011 +0000
Revision:
7:d79600310cfe
Parent:
4:0cbf500f8650
Child:
8:66be6a696e4e
and again more documentation fixes

Who changed what in which revision?

UserRevisionLine numberNew contents of line
llagendijk 0:9e72c57b16fd 1 /* mbed TextDisplay Library Base Class
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 * A common base class for Text displays
llagendijk 0:9e72c57b16fd 6 * To port a new display, derive from this class and implement
llagendijk 0:9e72c57b16fd 7 * the constructor (setup the display), character (put a character
llagendijk 0:9e72c57b16fd 8 * at a location), rows and columns (number of rows/cols) functions.
llagendijk 0:9e72c57b16fd 9 * Everything else (locate, printf, putc, cls) will come for free
llagendijk 0:9e72c57b16fd 10 *
llagendijk 0:9e72c57b16fd 11 * The model is the display will wrap at the right and bottom, so you can
llagendijk 2:8596e06f241f 12 * keep writing and will always get valid characters. The location is
llagendijk 0:9e72c57b16fd 13 * maintained internally to the class to make this easy
llagendijk 0:9e72c57b16fd 14 */
llagendijk 0:9e72c57b16fd 15
llagendijk 0:9e72c57b16fd 16 #ifndef MBED_TEXTDISPLAY_H
llagendijk 0:9e72c57b16fd 17 #define MBED_TEXTDISPLAY_H
llagendijk 0:9e72c57b16fd 18
llagendijk 0:9e72c57b16fd 19 #include "mbed.h"
llagendijk 3:c84bc6d1dc52 20 #include "mbed.h"
llagendijk 0:9e72c57b16fd 21
llagendijk 4:0cbf500f8650 22 /** Text diaplay class, use one the derived classes
llagendijk 3:c84bc6d1dc52 23 * Example:
llagendijk 3:c84bc6d1dc52 24 * @code
llagendijk 4:0cbf500f8650 25 / simple test for TextDisplay class
llagendijk 4:0cbf500f8650 26 #include "mbed.h"
llagendijk 4:0cbf500f8650 27 #include "sed133xLCD.h"
llagendijk 4:0cbf500f8650 28
llagendijk 4:0cbf500f8650 29 sed133xLCD lcd(p5, p6, p7, p8, p9, p28, p27, p26, p25, p24, p23, p22, p21,256,128, 6,9, "lcd");
llagendijk 4:0cbf500f8650 30
llagendijk 4:0cbf500f8650 31
llagendijk 4:0cbf500f8650 32 int main() {
llagendijk 4:0cbf500f8650 33 lcd.printf("Hello TextDisplay world!\r\n");
llagendijk 4:0cbf500f8650 34 lcd.claim(stdout);
llagendijk 4:0cbf500f8650 35 printf("hello stream world\r\n");
llagendijk 4:0cbf500f8650 36 }
llagendijk 4:0cbf500f8650 37
llagendijk 3:c84bc6d1dc52 38 * @endcode
llagendijk 3:c84bc6d1dc52 39 */
llagendijk 3:c84bc6d1dc52 40
llagendijk 0:9e72c57b16fd 41 class TextDisplay : public Stream {
llagendijk 0:9e72c57b16fd 42 public:
llagendijk 0:9e72c57b16fd 43
llagendijk 0:9e72c57b16fd 44 // functions needing implementation in derived implementation class
llagendijk 2:8596e06f241f 45
llagendijk 2:8596e06f241f 46 /** Create a TextDisplay interface
llagendijk 2:8596e06f241f 47 *
llagendijk 2:8596e06f241f 48 * @param name The name used in the path to access the strean through the filesystem
llagendijk 2:8596e06f241f 49 */
llagendijk 2:8596e06f241f 50
llagendijk 1:18c56f038905 51 TextDisplay(const char *name = NULL);
llagendijk 2:8596e06f241f 52
llagendijk 2:8596e06f241f 53 /** output a character at the given position
llagendijk 2:8596e06f241f 54 *
llagendijk 2:8596e06f241f 55 * @param column column where charater must be written
llagendijk 2:8596e06f241f 56 * @param row where character must be written
llagendijk 7:d79600310cfe 57 * @param c the character to be written to the TextDisplay
llagendijk 2:8596e06f241f 58 */
llagendijk 2:8596e06f241f 59
llagendijk 0:9e72c57b16fd 60 virtual void character(uint16_t column, uint16_t row, int c) = 0;
llagendijk 2:8596e06f241f 61
llagendijk 2:8596e06f241f 62 /** return number if rows on TextDisplay
llagendijk 2:8596e06f241f 63 * @result number of rows
llagendijk 2:8596e06f241f 64 */
llagendijk 0:9e72c57b16fd 65 virtual uint16_t rows() = 0;
llagendijk 2:8596e06f241f 66 /** return number if columns on TextDisplay
llagendijk 2:8596e06f241f 67 * @result number of rows
llagendijk 2:8596e06f241f 68 */
llagendijk 2:8596e06f241f 69
llagendijk 0:9e72c57b16fd 70 virtual uint16_t columns() = 0;
llagendijk 2:8596e06f241f 71
llagendijk 0:9e72c57b16fd 72 // functions that come for free, but can be overwritten
llagendijk 2:8596e06f241f 73 /** redirect output from a stream (stoud, sterr) to display
llagendijk 7:d79600310cfe 74 * @param stream stream that shall be redirected to the TextDisplay
llagendijk 2:8596e06f241f 75 */
llagendijk 2:8596e06f241f 76 virtual bool claim (FILE *stream);
llagendijk 2:8596e06f241f 77 /** clear screen
llagendijk 2:8596e06f241f 78 */
llagendijk 0:9e72c57b16fd 79 virtual void cls();
llagendijk 2:8596e06f241f 80 /** locate cursor on given position
llagendijk 2:8596e06f241f 81 * @param column horizontal position
llagendijk 2:8596e06f241f 82 * @paran row vertical positon
llagendijk 2:8596e06f241f 83 */
llagendijk 0:9e72c57b16fd 84 virtual void locate(uint16_t column, uint16_t row);
llagendijk 2:8596e06f241f 85 /** set foreground colour
llagendijk 2:8596e06f241f 86 * @param colour
llagendijk 2:8596e06f241f 87 */
llagendijk 0:9e72c57b16fd 88 virtual void foreground(uint32_t colour);
llagendijk 2:8596e06f241f 89 /** set background colour
llagendijk 2:8596e06f241f 90 * @param colour
llagendijk 2:8596e06f241f 91 */
llagendijk 0:9e72c57b16fd 92 virtual void background(uint32_t colour);
llagendijk 0:9e72c57b16fd 93 // putc (from Stream)
llagendijk 0:9e72c57b16fd 94 // printf (from Stream)
llagendijk 2:8596e06f241f 95
llagendijk 0:9e72c57b16fd 96 protected:
llagendijk 0:9e72c57b16fd 97
llagendijk 0:9e72c57b16fd 98 virtual int _putc(int value);
llagendijk 0:9e72c57b16fd 99 virtual int _getc();
llagendijk 0:9e72c57b16fd 100
llagendijk 0:9e72c57b16fd 101 // character location
llagendijk 0:9e72c57b16fd 102 uint16_t _column;
llagendijk 0:9e72c57b16fd 103 uint16_t _row;
llagendijk 0:9e72c57b16fd 104
llagendijk 0:9e72c57b16fd 105 // colours
llagendijk 0:9e72c57b16fd 106 uint32_t _foreground;
llagendijk 0:9e72c57b16fd 107 uint32_t _background;
llagendijk 2:8596e06f241f 108 char *_path;
llagendijk 0:9e72c57b16fd 109 };
llagendijk 0:9e72c57b16fd 110
llagendijk 0:9e72c57b16fd 111 #endif