Basically i glued Peter Drescher and Simon Ford libs in a GraphicsDisplay class, then derived TFT or LCD class (which inherits Protocols class), then the most derived ones (Inits), which are per-display and are the only part needed to be adapted to diff hw.
Dependents: testUniGraphic_150217 maze_TFT_MMA8451Q TFT_test_frdm-kl25z TFT_test_NUCLEO-F411RE ... more
Revision 27:acb2594b8aa4, committed 2015-10-26
- Comitter:
- dreschpe
- Date:
- Mon Oct 26 12:49:02 2015 +0000
- Parent:
- 26:09c1d5110134
- Child:
- 28:2b562717a864
- Commit message:
- fix handling of PAR8 / PAR16 includes
Changed in this revision
--- a/Display/LCD.cpp Sun Oct 18 17:31:33 2015 +0000
+++ b/Display/LCD.cpp Mon Oct 26 12:49:02 2015 +0000
@@ -17,20 +17,23 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
+#include "platform.h"
+#include "LCD.h"
-#include "LCD.h"
+#if DEVICE_PORTINOUT
+#include "PAR8.h"
+#include "PAR16.h"
+#endif
//#include "mbed_debug.h"
#define SWAP(a, b) { a ^= b; b ^= a; a ^= b; }
-
+#if DEVICE_PORTINOUT
LCD::LCD(proto_t displayproto, PortName port, PinName CS, PinName reset, PinName DC, PinName WR, PinName RD, const int lcdsize_x, const int lcdsize_y, const int ic_x_segs, const int ic_y_coms, const char *name)
: GraphicsDisplay(name), screensize_X(lcdsize_x), screensize_Y(lcdsize_y), _LCDPAGES(lcdsize_y>>3), _IC_X_SEGS(ic_x_segs), _IC_Y_COMS(ic_y_coms), _IC_PAGES(ic_y_coms>>3)
{
-#if DEVICE_PORTINOUT
- if(displayproto==PAR_8) proto = new PAR8(port, CS, reset, DC, WR, RD);
-#endif
+ if(displayproto==PAR_8) proto = new PAR8(port, CS, reset, DC, WR, RD);
useNOP=false;
buffer = (unsigned char*) malloc (screensize_X*_LCDPAGES);
buffer16 = (unsigned short*)buffer;
@@ -43,6 +46,8 @@
// cls();
// locate(0,0);
}
+#endif
+
LCD::LCD(proto_t displayproto, PinName* buspins, PinName CS, PinName reset, PinName DC, PinName WR, PinName RD, const int lcdsize_x, const int lcdsize_y, const int ic_x_segs, const int ic_y_coms, const char *name)
: GraphicsDisplay(name), screensize_X(lcdsize_x), screensize_Y(lcdsize_y), _LCDPAGES(lcdsize_y>>3), _IC_X_SEGS(ic_x_segs), _IC_Y_COMS(ic_y_coms), _IC_PAGES(ic_y_coms>>3)
{
--- a/Display/LCD.h Sun Oct 18 17:31:33 2015 +0000 +++ b/Display/LCD.h Mon Oct 26 12:49:02 2015 +0000 @@ -2,10 +2,9 @@ #ifndef MBED_LCD_H #define MBED_LCD_H -#include "GraphicsDisplay.h" - #if DEVICE_PORTINOUT #include "PAR8.h" +#include "PAR16.h" #endif #include "BUS8.h" @@ -13,6 +12,8 @@ #include "SPI16.h" #include "Protocols.h" +#include "GraphicsDisplay.h" + // undefine the KL43Z and KL46Z LCD macro #ifdef LCD #undef LCD
--- a/Display/TFT.cpp Sun Oct 18 17:31:33 2015 +0000
+++ b/Display/TFT.cpp Mon Oct 26 12:49:02 2015 +0000
@@ -22,13 +22,12 @@
#define SWAP(a, b) { a ^= b; b ^= a; a ^= b; }
+#if DEVICE_PORTINOUT
TFT::TFT(proto_t displayproto, PortName port, PinName CS, PinName reset, PinName DC, PinName WR, PinName RD, const int lcdsize_x, const int lcdsize_y, const char *name)
: GraphicsDisplay(name), screensize_X(lcdsize_x), screensize_Y(lcdsize_y)
{
-#if DEVICE_PORTINOUT
if(displayproto==PAR_8) proto = new PAR8(port, CS, reset, DC, WR, RD);
- else if(displayproto==PAR_16) proto = new PAR16(port, CS, reset, DC, WR, RD);
-#endif
+ else if(displayproto==PAR_16) proto = new PAR16(port, CS, reset, DC, WR, RD);
useNOP=false;
scrollbugfix=0;
mipistd=false;
@@ -45,6 +44,8 @@
// cls();
// locate(0,0);
}
+#endif
+
TFT::TFT(proto_t displayproto, PinName* buspins, PinName CS, PinName reset, PinName DC, PinName WR, PinName RD, const int lcdsize_x, const int lcdsize_y, const char *name)
: GraphicsDisplay(name), screensize_X(lcdsize_x), screensize_Y(lcdsize_y)
{
--- a/Display/TFT932x.cpp Sun Oct 18 17:31:33 2015 +0000
+++ b/Display/TFT932x.cpp Mon Oct 26 12:49:02 2015 +0000
@@ -2,8 +2,14 @@
* Copyright (c) 2015 Giuliano Dianda
* Released under the MIT License: http://mbed.org/license/mit
*/
+
+#include "platform.h"
+#include "TFT932x.h"
-#include "TFT932x.h"
+#if DEVICE_PORTINOUT
+#include "PAR8.h"
+#include "PAR16.h"
+#endif
//#include "mbed_debug.h"
@@ -35,6 +41,7 @@
// locate(0,0);
}
#endif
+
TFT932x::TFT932x(proto_t displayproto, PinName* buspins, PinName CS, PinName reset, PinName DC, PinName WR, PinName RD, const int lcdsize_x, const int lcdsize_y, const char *name)
: GraphicsDisplay(name), screensize_X(lcdsize_x), screensize_Y(lcdsize_y)
{
--- a/Display/TFT932x.h Sun Oct 18 17:31:33 2015 +0000 +++ b/Display/TFT932x.h Mon Oct 26 12:49:02 2015 +0000 @@ -1,8 +1,6 @@ #ifndef MBED_TFT932x_H #define MBED_TFT932x_H -#include "GraphicsDisplay.h" - #if DEVICE_PORTINOUT #include "PAR8.h" #include "PAR16.h" @@ -14,6 +12,7 @@ #include "SPI16.h" #include "Protocols.h" +#include "GraphicsDisplay.h" /** A custom base class for ILI932x color TFT Display (except ILI9327 which is MIPI standard) */
--- a/Protocols/PAR16.cpp Sun Oct 18 17:31:33 2015 +0000 +++ b/Protocols/PAR16.cpp Mon Oct 26 12:49:02 2015 +0000 @@ -15,6 +15,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ +#include "platform.h" #if DEVICE_PORTINOUT #include "PAR16.h"
--- a/Protocols/PAR16.h Sun Oct 18 17:31:33 2015 +0000 +++ b/Protocols/PAR16.h Mon Oct 26 12:49:02 2015 +0000 @@ -1,10 +1,11 @@ -#if DEVICE_PORTINOUT - #ifndef PAR16_H #define PAR16_H #include "mbed.h" #include "Protocols.h" + +#if DEVICE_PORTINOUT + //#include "GraphicsDisplay.h" /** Parallel 16bit interface
--- a/Protocols/PAR8.cpp Sun Oct 18 17:31:33 2015 +0000 +++ b/Protocols/PAR8.cpp Mon Oct 26 12:49:02 2015 +0000 @@ -15,6 +15,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ +#include "platform.h" #if DEVICE_PORTINOUT #include "PAR8.h"
--- a/Protocols/PAR8.h Sun Oct 18 17:31:33 2015 +0000 +++ b/Protocols/PAR8.h Mon Oct 26 12:49:02 2015 +0000 @@ -1,10 +1,10 @@ -#if DEVICE_PORTINOUT - #ifndef PAR8_H #define PAR8_H #include "mbed.h" #include "Protocols.h" + +#if DEVICE_PORTINOUT //#include "GraphicsDisplay.h" /** Parallel 8bit interface
GraphicsDisplay