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 13:02:38 2011 +0000
Revision:
3:c84bc6d1dc52
Parent:
2:8596e06f241f
Child:
4:0cbf500f8650
more doxygen  testing

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 3:c84bc6d1dc52 22 /** Text diaplay class, includes drives for different types of displays
llagendijk 3:c84bc6d1dc52 23 *
llagendijk 3:c84bc6d1dc52 24 * Example:
llagendijk 3:c84bc6d1dc52 25 * @code
llagendijk 3:c84bc6d1dc52 26 * // simple test for TextDisplay class
llagendijk 3:c84bc6d1dc52 27 * #include "mbed.h"
llagendijk 3:c84bc6d1dc52 28 * #include "TextDisplay.h"
llagendijk 3:c84bc6d1dc52 29 *
llagendijk 3:c84bc6d1dc52 30 *
llagendijk 3:c84bc6d1dc52 31 *
llagendijk 3:c84bc6d1dc52 32 * int main() {
llagendijk 3:c84bc6d1dc52 33 * lcd.printf("Hello TextDisplay world!\r\n");
llagendijk 3:c84bc6d1dc52 34 * }
llagendijk 3:c84bc6d1dc52 35 * @endcode
llagendijk 3:c84bc6d1dc52 36 */
llagendijk 3:c84bc6d1dc52 37
llagendijk 0:9e72c57b16fd 38 class TextDisplay : public Stream {
llagendijk 0:9e72c57b16fd 39 public:
llagendijk 0:9e72c57b16fd 40
llagendijk 0:9e72c57b16fd 41 // functions needing implementation in derived implementation class
llagendijk 2:8596e06f241f 42
llagendijk 2:8596e06f241f 43 /** Create a TextDisplay interface
llagendijk 2:8596e06f241f 44 *
llagendijk 2:8596e06f241f 45 * @param name The name used in the path to access the strean through the filesystem
llagendijk 2:8596e06f241f 46 */
llagendijk 2:8596e06f241f 47
llagendijk 1:18c56f038905 48 TextDisplay(const char *name = NULL);
llagendijk 2:8596e06f241f 49
llagendijk 2:8596e06f241f 50 /** output a character at the given position
llagendijk 2:8596e06f241f 51 *
llagendijk 2:8596e06f241f 52 * @param column column where charater must be written
llagendijk 2:8596e06f241f 53 * @param row where character must be written
llagendijk 2:8596e06f241f 54 * @parm c the character to be written to the TextDisplay
llagendijk 2:8596e06f241f 55 */
llagendijk 2:8596e06f241f 56
llagendijk 0:9e72c57b16fd 57 virtual void character(uint16_t column, uint16_t row, int c) = 0;
llagendijk 2:8596e06f241f 58
llagendijk 2:8596e06f241f 59 /** return number if rows on TextDisplay
llagendijk 2:8596e06f241f 60 * @result number of rows
llagendijk 2:8596e06f241f 61 */
llagendijk 0:9e72c57b16fd 62 virtual uint16_t rows() = 0;
llagendijk 2:8596e06f241f 63 /** return number if columns on TextDisplay
llagendijk 2:8596e06f241f 64 * @result number of rows
llagendijk 2:8596e06f241f 65 */
llagendijk 2:8596e06f241f 66
llagendijk 0:9e72c57b16fd 67 virtual uint16_t columns() = 0;
llagendijk 2:8596e06f241f 68
llagendijk 0:9e72c57b16fd 69 // functions that come for free, but can be overwritten
llagendijk 2:8596e06f241f 70 /** redirect output from a stream (stoud, sterr) to display
llagendijk 2:8596e06f241f 71 * @param stream that shall be redirected to the TextDisplay
llagendijk 2:8596e06f241f 72 */
llagendijk 2:8596e06f241f 73 virtual bool claim (FILE *stream);
llagendijk 2:8596e06f241f 74 /** clear screen
llagendijk 2:8596e06f241f 75 */
llagendijk 0:9e72c57b16fd 76 virtual void cls();
llagendijk 2:8596e06f241f 77 /** locate cursor on given position
llagendijk 2:8596e06f241f 78 * @param column horizontal position
llagendijk 2:8596e06f241f 79 * @paran row vertical positon
llagendijk 2:8596e06f241f 80 */
llagendijk 0:9e72c57b16fd 81 virtual void locate(uint16_t column, uint16_t row);
llagendijk 2:8596e06f241f 82 /** set foreground colour
llagendijk 2:8596e06f241f 83 * @param colour
llagendijk 2:8596e06f241f 84 */
llagendijk 0:9e72c57b16fd 85 virtual void foreground(uint32_t colour);
llagendijk 2:8596e06f241f 86 /** set background colour
llagendijk 2:8596e06f241f 87 * @param colour
llagendijk 2:8596e06f241f 88 */
llagendijk 0:9e72c57b16fd 89 virtual void background(uint32_t colour);
llagendijk 0:9e72c57b16fd 90 // putc (from Stream)
llagendijk 0:9e72c57b16fd 91 // printf (from Stream)
llagendijk 2:8596e06f241f 92
llagendijk 0:9e72c57b16fd 93 protected:
llagendijk 0:9e72c57b16fd 94
llagendijk 0:9e72c57b16fd 95 virtual int _putc(int value);
llagendijk 0:9e72c57b16fd 96 virtual int _getc();
llagendijk 0:9e72c57b16fd 97
llagendijk 0:9e72c57b16fd 98 // character location
llagendijk 0:9e72c57b16fd 99 uint16_t _column;
llagendijk 0:9e72c57b16fd 100 uint16_t _row;
llagendijk 0:9e72c57b16fd 101
llagendijk 0:9e72c57b16fd 102 // colours
llagendijk 0:9e72c57b16fd 103 uint32_t _foreground;
llagendijk 0:9e72c57b16fd 104 uint32_t _background;
llagendijk 2:8596e06f241f 105 char *_path;
llagendijk 0:9e72c57b16fd 106 };
llagendijk 0:9e72c57b16fd 107
llagendijk 0:9e72c57b16fd 108 #endif