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.
Diff: Display/LCD.cpp
- Revision:
- 21:ae0a4eedfc90
- Parent:
- 20:14daa48ffd4c
- Child:
- 25:daacdcf34e52
--- a/Display/LCD.cpp Mon Mar 23 14:08:04 2015 +0000 +++ b/Display/LCD.cpp Tue Mar 31 21:14:48 2015 +0000 @@ -41,6 +41,28 @@ // cls(); // locate(0,0); } +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) +{ + if(displayproto==BUS_8) + { + PinName pins[16]; + for(int i=0; i<16; i++) pins[i]=NC; + for(int i=0; i<8; i++) pins[i]=buspins[i]; + proto = new BUS8(pins, CS, reset, DC, WR, RD); + } + useNOP=false; + buffer = (unsigned char*) malloc (screensize_X*_LCDPAGES); + buffer16 = (unsigned short*)buffer; + draw_mode = NORMAL; + set_orientation(1); + foreground(White); + background(Black); + set_auto_up(true); + tftID=0; + // cls(); + // locate(0,0); +} LCD::LCD(proto_t displayproto, int Hz, PinName mosi, PinName miso, PinName sclk, PinName CS, PinName reset, PinName DC, 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) {