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@2:8596e06f241f, 2011-01-26 (annotated)
- Committer:
- llagendijk
- Date:
- Wed Jan 26 21:56:12 2011 +0000
- Revision:
- 2:8596e06f241f
- Parent:
- 1:18c56f038905
- Child:
- 3:c84bc6d1dc52
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 | 0:9e72c57b16fd | 20 | |
llagendijk | 0:9e72c57b16fd | 21 | class TextDisplay : public Stream { |
llagendijk | 0:9e72c57b16fd | 22 | public: |
llagendijk | 0:9e72c57b16fd | 23 | |
llagendijk | 0:9e72c57b16fd | 24 | // functions needing implementation in derived implementation class |
llagendijk | 2:8596e06f241f | 25 | |
llagendijk | 2:8596e06f241f | 26 | /** Create a TextDisplay interface |
llagendijk | 2:8596e06f241f | 27 | * |
llagendijk | 2:8596e06f241f | 28 | * @param name The name used in the path to access the strean through the filesystem |
llagendijk | 2:8596e06f241f | 29 | */ |
llagendijk | 2:8596e06f241f | 30 | |
llagendijk | 1:18c56f038905 | 31 | TextDisplay(const char *name = NULL); |
llagendijk | 2:8596e06f241f | 32 | |
llagendijk | 2:8596e06f241f | 33 | /** output a character at the given position |
llagendijk | 2:8596e06f241f | 34 | * |
llagendijk | 2:8596e06f241f | 35 | * @param column column where charater must be written |
llagendijk | 2:8596e06f241f | 36 | * @param row where character must be written |
llagendijk | 2:8596e06f241f | 37 | * @parm c the character to be written to the TextDisplay |
llagendijk | 2:8596e06f241f | 38 | */ |
llagendijk | 2:8596e06f241f | 39 | |
llagendijk | 0:9e72c57b16fd | 40 | virtual void character(uint16_t column, uint16_t row, int c) = 0; |
llagendijk | 2:8596e06f241f | 41 | |
llagendijk | 2:8596e06f241f | 42 | /** return number if rows on TextDisplay |
llagendijk | 2:8596e06f241f | 43 | * @result number of rows |
llagendijk | 2:8596e06f241f | 44 | */ |
llagendijk | 0:9e72c57b16fd | 45 | virtual uint16_t rows() = 0; |
llagendijk | 2:8596e06f241f | 46 | /** return number if columns on TextDisplay |
llagendijk | 2:8596e06f241f | 47 | * @result number of rows |
llagendijk | 2:8596e06f241f | 48 | */ |
llagendijk | 2:8596e06f241f | 49 | |
llagendijk | 0:9e72c57b16fd | 50 | virtual uint16_t columns() = 0; |
llagendijk | 2:8596e06f241f | 51 | |
llagendijk | 0:9e72c57b16fd | 52 | // functions that come for free, but can be overwritten |
llagendijk | 2:8596e06f241f | 53 | /** redirect output from a stream (stoud, sterr) to display |
llagendijk | 2:8596e06f241f | 54 | * @param stream that shall be redirected to the TextDisplay |
llagendijk | 2:8596e06f241f | 55 | */ |
llagendijk | 2:8596e06f241f | 56 | virtual bool claim (FILE *stream); |
llagendijk | 2:8596e06f241f | 57 | /** clear screen |
llagendijk | 2:8596e06f241f | 58 | */ |
llagendijk | 0:9e72c57b16fd | 59 | virtual void cls(); |
llagendijk | 2:8596e06f241f | 60 | /** locate cursor on given position |
llagendijk | 2:8596e06f241f | 61 | * @param column horizontal position |
llagendijk | 2:8596e06f241f | 62 | * @paran row vertical positon |
llagendijk | 2:8596e06f241f | 63 | */ |
llagendijk | 0:9e72c57b16fd | 64 | virtual void locate(uint16_t column, uint16_t row); |
llagendijk | 2:8596e06f241f | 65 | /** set foreground colour |
llagendijk | 2:8596e06f241f | 66 | * @param colour |
llagendijk | 2:8596e06f241f | 67 | */ |
llagendijk | 0:9e72c57b16fd | 68 | virtual void foreground(uint32_t colour); |
llagendijk | 2:8596e06f241f | 69 | /** set background colour |
llagendijk | 2:8596e06f241f | 70 | * @param colour |
llagendijk | 2:8596e06f241f | 71 | */ |
llagendijk | 0:9e72c57b16fd | 72 | virtual void background(uint32_t colour); |
llagendijk | 0:9e72c57b16fd | 73 | // putc (from Stream) |
llagendijk | 0:9e72c57b16fd | 74 | // printf (from Stream) |
llagendijk | 2:8596e06f241f | 75 | |
llagendijk | 0:9e72c57b16fd | 76 | protected: |
llagendijk | 0:9e72c57b16fd | 77 | |
llagendijk | 0:9e72c57b16fd | 78 | virtual int _putc(int value); |
llagendijk | 0:9e72c57b16fd | 79 | virtual int _getc(); |
llagendijk | 0:9e72c57b16fd | 80 | |
llagendijk | 0:9e72c57b16fd | 81 | // character location |
llagendijk | 0:9e72c57b16fd | 82 | uint16_t _column; |
llagendijk | 0:9e72c57b16fd | 83 | uint16_t _row; |
llagendijk | 0:9e72c57b16fd | 84 | |
llagendijk | 0:9e72c57b16fd | 85 | // colours |
llagendijk | 0:9e72c57b16fd | 86 | uint32_t _foreground; |
llagendijk | 0:9e72c57b16fd | 87 | uint32_t _background; |
llagendijk | 2:8596e06f241f | 88 | char *_path; |
llagendijk | 0:9e72c57b16fd | 89 | }; |
llagendijk | 0:9e72c57b16fd | 90 | |
llagendijk | 0:9e72c57b16fd | 91 | #endif |