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.

Fork of UniGraphic by GraphicsDisplay

Revision:
4:12ba0ecc2c1f
Parent:
1:ff019d22b275
Child:
5:b222a9461d6b
--- a/Protocols/PAR8.cpp	Sat Feb 14 17:42:21 2015 +0000
+++ b/Protocols/PAR8.cpp	Sun Feb 15 20:06:07 2015 +0000
@@ -1,3 +1,21 @@
+ /* mbed UniGraphic library - PAR8 protocol class
+ * Copyright (c) 2015 Giuliano Dianda
+ * Released under the MIT License: http://mbed.org/license/mit
+ *
+ * Derived work of:
+ *
+ * mbed library for 240*320 pixel display TFT based on ILI9341 LCD Controller
+ * Copyright (c) 2013 Peter Drescher - DC2PD
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+ 
 #include "PAR8.h"
 
 PAR8::PAR8(PortName port, PinName CS, PinName reset, PinName DC, PinName WR, PinName RD)
@@ -53,41 +71,6 @@
     _CS = 1;
 #endif
 }
-void PAR8::wr_data8(unsigned char data, unsigned int count)
-{
-#ifdef USE_CS
-    _CS = 0;
-#endif
-    _DC = 1; // 1=data
-    _port.write(data);    // write 8bit
-    while(count)
-    {
-        _WR=0;
-  //      _WR=0;
-        _WR=1;
-        count--;
-    }
-#ifdef USE_CS
-    _CS = 1;
-#endif
-}
-void PAR8::wr_data8buf(unsigned char* data, unsigned int lenght)
-{
-#ifdef USE_CS
-    _CS = 0;
-#endif
-    _DC = 1; // 1=data
-    while(lenght)
-    {
-        _WR=0;
-        _port.write(*data++);    // write 8bit
-        _WR=1;
-        lenght--;
-    }
-#ifdef USE_CS
-    _CS = 1;
-#endif
-}
 void PAR8::wr_cmd16(unsigned short cmd)
 {   
 #ifdef USE_CS
@@ -120,7 +103,23 @@
     _CS = 1;
 #endif
 }
-void PAR8::wr_data16(unsigned short data, unsigned int count)
+void PAR8::wr_gram(unsigned short data)
+{
+#ifdef USE_CS
+    _CS = 0;
+#endif
+    _DC = 1; // 1=data
+    _WR=0;
+    _port.write(data>>8);    // write 8bit
+    _WR=1;
+    _WR=0;
+    _port.write(data&0xFF);    // write 8bit
+    _WR=1;
+#ifdef USE_CS
+    _CS = 1;
+#endif
+}
+void PAR8::wr_gram(unsigned short data, unsigned int count)
 {
 #ifdef USE_CS
     _CS = 0;
@@ -154,7 +153,7 @@
     _CS = 1;
 #endif
 }
-void PAR8::wr_data16buf(unsigned short* data, unsigned int lenght)
+void PAR8::wr_grambuf(unsigned short* data, unsigned int lenght)
 {
 #ifdef USE_CS
     _CS = 0;
@@ -175,6 +174,7 @@
     _CS = 1;
 #endif
 }
+
 void PAR8::hw_reset()
 {
     wait_ms(15);