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/SPI8.cpp	Sat Feb 14 17:42:21 2015 +0000
+++ b/Protocols/SPI8.cpp	Sun Feb 15 20:06:07 2015 +0000
@@ -1,3 +1,21 @@
+ /* mbed UniGraphic library - SPI8 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 "SPI8.h"
 
 //#define USE_CS
@@ -36,37 +54,6 @@
     _CS = 1;
 #endif
 }
-void SPI8::wr_data8(unsigned char data, unsigned int count)
-{
-#ifdef USE_CS
-    _CS = 0;
-#endif
-    _DC.write(1); // 1=data
-    while(count)
-    {
-        _spi.write(data);    // write 8bit
-        count--;
-    }
-#ifdef USE_CS
-    _CS = 1;
-#endif
-}
-void SPI8::wr_data8buf(unsigned char* data, unsigned int lenght)
-{
-#ifdef USE_CS
-    _CS = 0;
-#endif
-    _DC.write(1); // 1=data
-    while(lenght)
-    {
-        _spi.write(*data++);    // write 8bit
-       // data++;
-        lenght--;
-    }
-#ifdef USE_CS
-    _CS = 1;
-#endif
-}
 void SPI8::wr_cmd16(unsigned short cmd)
 {   
 #ifdef USE_CS
@@ -91,7 +78,19 @@
     _CS = 1;
 #endif
 }
-void SPI8::wr_data16(unsigned short data, unsigned int count)
+void SPI8::wr_gram(unsigned short data)
+{
+#ifdef USE_CS
+    _CS = 0;
+#endif
+    _DC.write(1); // 1=data
+    _spi.write(data>>8);    // write 8bit
+    _spi.write(data&0xFF);    // write 8bit
+#ifdef USE_CS
+    _CS = 1;
+#endif
+}
+void SPI8::wr_gram(unsigned short data, unsigned int count)
 {
 #ifdef USE_CS
     _CS = 0;
@@ -119,7 +118,7 @@
     _CS = 1;
 #endif
 }
-void SPI8::wr_data16buf(unsigned short* data, unsigned int lenght)
+void SPI8::wr_grambuf(unsigned short* data, unsigned int lenght)
 {
 #ifdef USE_CS
     _CS = 0;