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