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:
Sun Aug 17 13:46:06 2014 +0000
Revision:
61:8f3153bf0baa
Parent:
47:d96a09269f91
Child:
75:ca78388cfd77
Revised cls( ) to support layers.; Added a few handy color definitions.

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