Library to control a Graphics TFT connected to 4-wire SPI - revised for the Raio RA8875 Display Controller.

Dependents:   FRDM_RA8875_mPaint RA8875_Demo RA8875_KeyPadDemo SignalGenerator ... more

Fork of SPI_TFT by Peter Drescher

See Components - RA8875 Based Display

Enhanced touch-screen support - where it previous supported both the Resistive Touch and Capacitive Touch based on the FT5206 Touch Controller, now it also has support for the GSL1680 Touch Controller.

Offline Help Manual (Windows chm)

/media/uploads/WiredHome/ra8875.zip.bin (download, rename to .zip and unzip)

Committer:
WiredHome
Date:
Thu Dec 29 20:06:00 2016 +0000
Revision:
141:2ec78a50dc98
Parent:
104:8d1d3832a215
Child:
167:8aa3fb2a5a31
Minor change from sprintf to snprintf in a couple of locations.

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 {
WiredHome 141:2ec78a50dc98 29 int len = strlen(name) + 2;
WiredHome 141:2ec78a50dc98 30 _path = new char[len];
WiredHome 141:2ec78a50dc98 31 snprintf(_path, len, "/%s", name);
dreschpe 0:de9d1462a835 32 }
dreschpe 0:de9d1462a835 33 }
WiredHome 19:3f82c1161fd2 34
WiredHome 104:8d1d3832a215 35 //TextDisplay::~TextDisplay()
WiredHome 104:8d1d3832a215 36 //{
WiredHome 104:8d1d3832a215 37 // delete [] _path;
WiredHome 104:8d1d3832a215 38 //}
WiredHome 103:7e0464ca6c5c 39
WiredHome 19:3f82c1161fd2 40 int TextDisplay::_putc(int value)
WiredHome 19:3f82c1161fd2 41 {
WiredHome 29:422616aa04bd 42 INFO("_putc(%d)", value);
dreschpe 0:de9d1462a835 43 if(value == '\n') {
dreschpe 0:de9d1462a835 44 _column = 0;
dreschpe 0:de9d1462a835 45 _row++;
WiredHome 47:d96a09269f91 46 if(_row >= rows()) {
dreschpe 0:de9d1462a835 47 _row = 0;
dreschpe 0:de9d1462a835 48 }
dreschpe 0:de9d1462a835 49 } else {
dreschpe 0:de9d1462a835 50 character(_column, _row, value);
dreschpe 0:de9d1462a835 51 _column++;
dreschpe 0:de9d1462a835 52 if(_column >= columns()) {
dreschpe 0:de9d1462a835 53 _column = 0;
dreschpe 0:de9d1462a835 54 _row++;
WiredHome 47:d96a09269f91 55 if(_row >= rows()) {
dreschpe 0:de9d1462a835 56 _row = 0;
dreschpe 0:de9d1462a835 57 }
dreschpe 0:de9d1462a835 58 }
dreschpe 0:de9d1462a835 59 }
dreschpe 0:de9d1462a835 60 return value;
dreschpe 0:de9d1462a835 61 }
dreschpe 0:de9d1462a835 62
dreschpe 0:de9d1462a835 63 // crude cls implementation, should generally be overwritten in derived class
WiredHome 61:8f3153bf0baa 64 RetCode_t TextDisplay::cls(uint16_t layers)
WiredHome 19:3f82c1161fd2 65 {
WiredHome 29:422616aa04bd 66 INFO("cls()");
dreschpe 0:de9d1462a835 67 locate(0, 0);
dreschpe 0:de9d1462a835 68 for(int i=0; i<columns()*rows(); i++) {
dreschpe 0:de9d1462a835 69 putc(' ');
dreschpe 0:de9d1462a835 70 }
WiredHome 19:3f82c1161fd2 71 return noerror;
dreschpe 0:de9d1462a835 72 }
dreschpe 0:de9d1462a835 73
WiredHome 37:f19b7e7449dc 74 RetCode_t TextDisplay::locate(textloc_t column, textloc_t row)
WiredHome 19:3f82c1161fd2 75 {
WiredHome 29:422616aa04bd 76 INFO("locate(%d,%d)", column, row);
dreschpe 0:de9d1462a835 77 _column = column;
dreschpe 0:de9d1462a835 78 _row = row;
WiredHome 19:3f82c1161fd2 79 return noerror;
dreschpe 0:de9d1462a835 80 }
dreschpe 0:de9d1462a835 81
WiredHome 19:3f82c1161fd2 82 int TextDisplay::_getc()
WiredHome 19:3f82c1161fd2 83 {
dreschpe 0:de9d1462a835 84 return -1;
dreschpe 0:de9d1462a835 85 }
WiredHome 19:3f82c1161fd2 86
WiredHome 33:b6b710758ab3 87 RetCode_t TextDisplay::foreground(uint16_t color)
WiredHome 19:3f82c1161fd2 88 {
WiredHome 37:f19b7e7449dc 89 //INFO("foreground(%4X)", color);
WiredHome 33:b6b710758ab3 90 _foreground = color;
WiredHome 19:3f82c1161fd2 91 return noerror;
dreschpe 0:de9d1462a835 92 }
dreschpe 0:de9d1462a835 93
WiredHome 33:b6b710758ab3 94 RetCode_t TextDisplay::background(uint16_t color)
WiredHome 19:3f82c1161fd2 95 {
WiredHome 37:f19b7e7449dc 96 //INFO("background(%4X)", color);
WiredHome 33:b6b710758ab3 97 _background = color;
WiredHome 19:3f82c1161fd2 98 return noerror;
dreschpe 0:de9d1462a835 99 }
dreschpe 0:de9d1462a835 100
WiredHome 29:422616aa04bd 101 bool TextDisplay::claim(FILE *stream)
WiredHome 19:3f82c1161fd2 102 {
dreschpe 0:de9d1462a835 103 if ( _path == NULL) {
WiredHome 19:3f82c1161fd2 104 fprintf(stderr, "claim requires a name to be given in the instantiator of the TextDisplay instance!\r\n");
dreschpe 0:de9d1462a835 105 return false;
dreschpe 0:de9d1462a835 106 }
dreschpe 0:de9d1462a835 107 if (freopen(_path, "w", stream) == NULL) {
WiredHome 29:422616aa04bd 108 return false; // Failed, should not happen
dreschpe 0:de9d1462a835 109 }
dreschpe 0:de9d1462a835 110 // make sure we use line buffering
dreschpe 0:de9d1462a835 111 setvbuf(stdout, NULL, _IOLBF, columns());
dreschpe 0:de9d1462a835 112 return true;
WiredHome 19:3f82c1161fd2 113 }
WiredHome 33:b6b710758ab3 114