Fork of Silabs MemoryLCD library

Dependents:   demoUI whrmDemoUI Host_Software_MAX32664GWEB_HR_EXTENDED Host_Software_MAX32664GWEC_SpO2_HR-_EXTE ... more

C++ library for Sharp Microelectronics 1.28 inch LCD TFT, LS013B7DH03, SPI bus. Forked from Silicon Labs MemoryLCD display driver.

Committer:
Steven Cooreman
Date:
Wed Mar 18 10:57:16 2015 -0500
Revision:
0:a0faa86660d4
Child:
4:b02dfd360729
Initial commit

Who changed what in which revision?

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