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:
Wed Jan 26 21:56:12 2011 +0000
Revision:
2:8596e06f241f
Parent:
1:18c56f038905
Child:
3:c84bc6d1dc52

        

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 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