Eimantas Bernotavicius / Mbed 2 deprecated Buggy_Project

Dependencies:   QEI mbed

Committer:
Weranest
Date:
Thu Feb 15 13:19:37 2018 +0000
Revision:
0:62e51b80d738
Test commit please ignore

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Weranest 0:62e51b80d738 1 /* mbed TextDisplay Display Library Base Class
Weranest 0:62e51b80d738 2 * Copyright (c) 2007-2009 sford
Weranest 0:62e51b80d738 3 * Released under the MIT License: http://mbed.org/license/mit
Weranest 0:62e51b80d738 4 */
Weranest 0:62e51b80d738 5
Weranest 0:62e51b80d738 6 #include "TextDisplay.h"
Weranest 0:62e51b80d738 7
Weranest 0:62e51b80d738 8 TextDisplay::TextDisplay(const char *name) : Stream(name){
Weranest 0:62e51b80d738 9 _row = 0;
Weranest 0:62e51b80d738 10 _column = 0;
Weranest 0:62e51b80d738 11 if (name == NULL) {
Weranest 0:62e51b80d738 12 _path = NULL;
Weranest 0:62e51b80d738 13 } else {
Weranest 0:62e51b80d738 14 _path = new char[strlen(name) + 2];
Weranest 0:62e51b80d738 15 sprintf(_path, "/%s", name);
Weranest 0:62e51b80d738 16 }
Weranest 0:62e51b80d738 17 }
Weranest 0:62e51b80d738 18
Weranest 0:62e51b80d738 19 int TextDisplay::_putc(int value) {
Weranest 0:62e51b80d738 20 if(value == '\n') {
Weranest 0:62e51b80d738 21 _column = 0;
Weranest 0:62e51b80d738 22 _row++;
Weranest 0:62e51b80d738 23 if(_row >= rows()) {
Weranest 0:62e51b80d738 24 _row = 0;
Weranest 0:62e51b80d738 25 }
Weranest 0:62e51b80d738 26 } else {
Weranest 0:62e51b80d738 27 character(_column, _row, value);
Weranest 0:62e51b80d738 28 _column++;
Weranest 0:62e51b80d738 29 if(_column >= columns()) {
Weranest 0:62e51b80d738 30 _column = 0;
Weranest 0:62e51b80d738 31 _row++;
Weranest 0:62e51b80d738 32 if(_row >= rows()) {
Weranest 0:62e51b80d738 33 _row = 0;
Weranest 0:62e51b80d738 34 }
Weranest 0:62e51b80d738 35 }
Weranest 0:62e51b80d738 36 }
Weranest 0:62e51b80d738 37 return value;
Weranest 0:62e51b80d738 38 }
Weranest 0:62e51b80d738 39
Weranest 0:62e51b80d738 40 // crude cls implementation, should generally be overwritten in derived class
Weranest 0:62e51b80d738 41 void TextDisplay::cls() {
Weranest 0:62e51b80d738 42 locate(0, 0);
Weranest 0:62e51b80d738 43 for(int i=0; i<columns()*rows(); i++) {
Weranest 0:62e51b80d738 44 putc(' ');
Weranest 0:62e51b80d738 45 }
Weranest 0:62e51b80d738 46 }
Weranest 0:62e51b80d738 47
Weranest 0:62e51b80d738 48 void TextDisplay::locate(int column, int row) {
Weranest 0:62e51b80d738 49 _column = column;
Weranest 0:62e51b80d738 50 _row = row;
Weranest 0:62e51b80d738 51 }
Weranest 0:62e51b80d738 52
Weranest 0:62e51b80d738 53 int TextDisplay::_getc() {
Weranest 0:62e51b80d738 54 return -1;
Weranest 0:62e51b80d738 55 }
Weranest 0:62e51b80d738 56
Weranest 0:62e51b80d738 57 void TextDisplay::foreground(uint16_t colour) {
Weranest 0:62e51b80d738 58 _foreground = colour;
Weranest 0:62e51b80d738 59 }
Weranest 0:62e51b80d738 60
Weranest 0:62e51b80d738 61 void TextDisplay::background(uint16_t colour) {
Weranest 0:62e51b80d738 62 _background = colour;
Weranest 0:62e51b80d738 63 }
Weranest 0:62e51b80d738 64
Weranest 0:62e51b80d738 65 bool TextDisplay::claim (FILE *stream) {
Weranest 0:62e51b80d738 66 if ( _path == NULL) {
Weranest 0:62e51b80d738 67 fprintf(stderr, "claim requires a name to be given in the instantioator of the TextDisplay instance!\r\n");
Weranest 0:62e51b80d738 68 return false;
Weranest 0:62e51b80d738 69 }
Weranest 0:62e51b80d738 70 if (freopen(_path, "w", stream) == NULL) {
Weranest 0:62e51b80d738 71 // Failed, should not happen
Weranest 0:62e51b80d738 72 return false;
Weranest 0:62e51b80d738 73 }
Weranest 0:62e51b80d738 74 // make sure we use line buffering
Weranest 0:62e51b80d738 75 setvbuf(stdout, NULL, _IOLBF, columns());
Weranest 0:62e51b80d738 76 return true;
Weranest 0:62e51b80d738 77 }
Weranest 0:62e51b80d738 78