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@7:d79600310cfe, 2011-01-29 (annotated)
- 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?
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 | 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 |