KSM edits to RA8875

Dependents:   Liz_Test_Code

Committer:
WiredHome
Date:
Mon Feb 08 01:47:56 2016 +0000
Revision:
104:8d1d3832a215
Parent:
103:7e0464ca6c5c
Child:
141:2ec78a50dc98
comment out destructors - until I figure out the warning.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dreschpe 0:de9d1462a835 1 /* mbed TextDisplay Display Library Base Class
dreschpe 0:de9d1462a835 2 * Copyright (c) 2007-2009 sford
dreschpe 0:de9d1462a835 3 * Released under the MIT License: http://mbed.org/license/mit
dreschpe 0:de9d1462a835 4 */
WiredHome 19:3f82c1161fd2 5
dreschpe 0:de9d1462a835 6 #include "TextDisplay.h"
dreschpe 0:de9d1462a835 7
WiredHome 75:ca78388cfd77 8 //#define DEBUG "Text"
WiredHome 29:422616aa04bd 9 // ...
WiredHome 29:422616aa04bd 10 // INFO("Stuff to show %d", var); // new-line is automatically appended
WiredHome 29:422616aa04bd 11 //
WiredHome 29:422616aa04bd 12 #if (defined(DEBUG) && !defined(TARGET_LPC11U24))
WiredHome 29:422616aa04bd 13 #define INFO(x, ...) std::printf("[INF %s %3d] "x"\r\n", DEBUG, __LINE__, ##__VA_ARGS__);
WiredHome 29:422616aa04bd 14 #define WARN(x, ...) std::printf("[WRN %s %3d] "x"\r\n", DEBUG, __LINE__, ##__VA_ARGS__);
WiredHome 29:422616aa04bd 15 #define ERR(x, ...) std::printf("[ERR %s %3d] "x"\r\n", DEBUG, __LINE__, ##__VA_ARGS__);
WiredHome 29:422616aa04bd 16 #else
WiredHome 29:422616aa04bd 17 #define INFO(x, ...)
WiredHome 29:422616aa04bd 18 #define WARN(x, ...)
WiredHome 29:422616aa04bd 19 #define ERR(x, ...)
WiredHome 29:422616aa04bd 20 #endif
WiredHome 29:422616aa04bd 21
WiredHome 19:3f82c1161fd2 22 TextDisplay::TextDisplay(const char *name) : Stream(name)
WiredHome 19:3f82c1161fd2 23 {
dreschpe 0:de9d1462a835 24 _row = 0;
dreschpe 0:de9d1462a835 25 _column = 0;
dreschpe 0:de9d1462a835 26 if (name == NULL) {
dreschpe 0:de9d1462a835 27 _path = NULL;
dreschpe 0:de9d1462a835 28 } else {
dreschpe 0:de9d1462a835 29 _path = new char[strlen(name) + 2];
dreschpe 0:de9d1462a835 30 sprintf(_path, "/%s", name);
dreschpe 0:de9d1462a835 31 }
dreschpe 0:de9d1462a835 32 }
WiredHome 19:3f82c1161fd2 33
WiredHome 104:8d1d3832a215 34 //TextDisplay::~TextDisplay()
WiredHome 104:8d1d3832a215 35 //{
WiredHome 104:8d1d3832a215 36 // delete [] _path;
WiredHome 104:8d1d3832a215 37 //}
WiredHome 103:7e0464ca6c5c 38
WiredHome 19:3f82c1161fd2 39 int TextDisplay::_putc(int value)
WiredHome 19:3f82c1161fd2 40 {
WiredHome 29:422616aa04bd 41 INFO("_putc(%d)", value);
dreschpe 0:de9d1462a835 42 if(value == '\n') {
dreschpe 0:de9d1462a835 43 _column = 0;
dreschpe 0:de9d1462a835 44 _row++;
WiredHome 47:d96a09269f91 45 if(_row >= rows()) {
dreschpe 0:de9d1462a835 46 _row = 0;
dreschpe 0:de9d1462a835 47 }
dreschpe 0:de9d1462a835 48 } else {
dreschpe 0:de9d1462a835 49 character(_column, _row, value);
dreschpe 0:de9d1462a835 50 _column++;
dreschpe 0:de9d1462a835 51 if(_column >= columns()) {
dreschpe 0:de9d1462a835 52 _column = 0;
dreschpe 0:de9d1462a835 53 _row++;
WiredHome 47:d96a09269f91 54 if(_row >= rows()) {
dreschpe 0:de9d1462a835 55 _row = 0;
dreschpe 0:de9d1462a835 56 }
dreschpe 0:de9d1462a835 57 }
dreschpe 0:de9d1462a835 58 }
dreschpe 0:de9d1462a835 59 return value;
dreschpe 0:de9d1462a835 60 }
dreschpe 0:de9d1462a835 61
dreschpe 0:de9d1462a835 62 // crude cls implementation, should generally be overwritten in derived class
WiredHome 61:8f3153bf0baa 63 RetCode_t TextDisplay::cls(uint16_t layers)
WiredHome 19:3f82c1161fd2 64 {
WiredHome 29:422616aa04bd 65 INFO("cls()");
dreschpe 0:de9d1462a835 66 locate(0, 0);
dreschpe 0:de9d1462a835 67 for(int i=0; i<columns()*rows(); i++) {
dreschpe 0:de9d1462a835 68 putc(' ');
dreschpe 0:de9d1462a835 69 }
WiredHome 19:3f82c1161fd2 70 return noerror;
dreschpe 0:de9d1462a835 71 }
dreschpe 0:de9d1462a835 72
WiredHome 37:f19b7e7449dc 73 RetCode_t TextDisplay::locate(textloc_t column, textloc_t row)
WiredHome 19:3f82c1161fd2 74 {
WiredHome 29:422616aa04bd 75 INFO("locate(%d,%d)", column, row);
dreschpe 0:de9d1462a835 76 _column = column;
dreschpe 0:de9d1462a835 77 _row = row;
WiredHome 19:3f82c1161fd2 78 return noerror;
dreschpe 0:de9d1462a835 79 }
dreschpe 0:de9d1462a835 80
WiredHome 19:3f82c1161fd2 81 int TextDisplay::_getc()
WiredHome 19:3f82c1161fd2 82 {
dreschpe 0:de9d1462a835 83 return -1;
dreschpe 0:de9d1462a835 84 }
WiredHome 19:3f82c1161fd2 85
WiredHome 33:b6b710758ab3 86 RetCode_t TextDisplay::foreground(uint16_t color)
WiredHome 19:3f82c1161fd2 87 {
WiredHome 37:f19b7e7449dc 88 //INFO("foreground(%4X)", color);
WiredHome 33:b6b710758ab3 89 _foreground = color;
WiredHome 19:3f82c1161fd2 90 return noerror;
dreschpe 0:de9d1462a835 91 }
dreschpe 0:de9d1462a835 92
WiredHome 33:b6b710758ab3 93 RetCode_t TextDisplay::background(uint16_t color)
WiredHome 19:3f82c1161fd2 94 {
WiredHome 37:f19b7e7449dc 95 //INFO("background(%4X)", color);
WiredHome 33:b6b710758ab3 96 _background = color;
WiredHome 19:3f82c1161fd2 97 return noerror;
dreschpe 0:de9d1462a835 98 }
dreschpe 0:de9d1462a835 99
WiredHome 29:422616aa04bd 100 bool TextDisplay::claim(FILE *stream)
WiredHome 19:3f82c1161fd2 101 {
dreschpe 0:de9d1462a835 102 if ( _path == NULL) {
WiredHome 19:3f82c1161fd2 103 fprintf(stderr, "claim requires a name to be given in the instantiator of the TextDisplay instance!\r\n");
dreschpe 0:de9d1462a835 104 return false;
dreschpe 0:de9d1462a835 105 }
dreschpe 0:de9d1462a835 106 if (freopen(_path, "w", stream) == NULL) {
WiredHome 29:422616aa04bd 107 return false; // Failed, should not happen
dreschpe 0:de9d1462a835 108 }
dreschpe 0:de9d1462a835 109 // make sure we use line buffering
dreschpe 0:de9d1462a835 110 setvbuf(stdout, NULL, _IOLBF, columns());
dreschpe 0:de9d1462a835 111 return true;
WiredHome 19:3f82c1161fd2 112 }
WiredHome 33:b6b710758ab3 113