MARMEX_VB test application program. This application works on "mbed NXP LPC1768" only. This application expects to have the MARMEX_VB module on a "MAPLE mini type-B (MARM03-BASE)" baseboard (slot2) with MARMEX_OB module (on slot1)

Dependencies:   MARMEX_VB NokiaLCD mbed

This is the library test program.
The program can test features of the library (refer to MARMEX-VB's API document) and can save captured data into BMP file.

Warning!

This test program can run on "mbed NXP LPC1768" only.

/media/uploads/nxpfan/dsc_0506_-1-.jpg
Picture : sample of test program operation
The modules of MARMEX-VB and MARMEX-OB are set on the "MAPLE mini type-B (MARM03-BASE)" baseboard.
The image data from camera is mirrored and alpha graphics added by software.

Revision:
8:86aae677a68b
Parent:
7:125538c50c22
--- a/MARMEX_OB_oled.h	Thu Jun 19 12:21:50 2014 +0000
+++ b/MARMEX_OB_oled.h	Fri Jun 20 09:05:45 2014 +0000
@@ -2,8 +2,8 @@
  *
  *  @class   MARMEX_OB_oled
  *  @author  tedd
- *  @version 0.54 (optimized for "line data transfer")
- *  @date    19-Jun-2014
+ *  @version 0.55 (optimized for "line data transfer")
+ *  @date    20-Jun-2014
  *
  *  Released under the MIT License: http://mbed.org/license/mit
  *
@@ -22,6 +22,19 @@
 #include    "mbed.h"
 #include    "NokiaLCD.h"
 
+//#define   LINE_WRITE_OPT   NO_OPTIMIZATION
+#define     LINE_WRITE_OPT   LOOP_UNROLL
+//#define   LINE_WRITE_OPT   USING_SSP_FIFO
+
+/*  Setting for "LINE_WRITE_OPT == USING_SSP_FIFO"
+ *      Choose one line from next 3 lines when the FIFO option is taken
+ */
+#define     SSP_AUTO_SELECTION  //  for demo setup on "MAPLE mini type-B (MARM03-BASE)" baseboard (slot2) with a MARMEX_OB module (on slot1)
+//#define   SSP_USE_SSP0
+//#define   SSP_USE_SSP1
+
+
+
 /** @def MARMEX_OB_SPI_8BIT_MODE
  *
  *  MARMEX_OB_oled_oled OLED screen SPI access length setting
@@ -320,10 +333,24 @@
     }
 
     void blit565( int x, int y, int width, int height, short* colour ) {
+
+        //  OPTION REFERENCE NUMBER (DO NOT EDIT)
+        #define NO_OPTIMIZATION 0
+        #define LOOP_UNROLL     1
+        #define USING_SSP_FIFO  2
+
         _window( x, y, width, height );
 
-#define OPTIMIZE_KEEP_ASSERTING_CS_DURING_LINE_DATA_TRANSFER
-#ifdef  OPTIMIZE_KEEP_ASSERTING_CS_DURING_LINE_DATA_TRANSFER
+#if ( LINE_WRITE_OPT == NO_OPTIMIZATION )
+
+        for (int i = 0; i < width * height; i++ ) {
+            _putp565( colour[i] );
+        }
+
+#endif
+
+
+#if ( LINE_WRITE_OPT == LOOP_UNROLL )
 
         _cs = 0;
 
@@ -353,43 +380,31 @@
             _spi.write( 0x100 | *colour++ );
         }
 
-        _cs = 0;
-
-#else
-        for (int i = 0; i < width * height; i++ ) {
-            _putp565( colour[i] );
-        }
+        _cs = 1;
 #endif
 
-        _cs = 1;
-        _window( 0, 0, WIDTH, HEIGHT );
-    }
-
-
-
 
-    void blit565_SPI_FIFO_WRITE( int x, int y, int width, int height, short* colour ) {
-        _window( x, y, width, height );
+#if ( LINE_WRITE_OPT == USING_SSP_FIFO )
 
-#define FIFO_DEPTH  4
-
-#ifdef  TARGET_MBED_LPC1768
-#define SPI_PORT_SELECTOR   LPC_SSP1
-#endif
+    #define FIFO_DEPTH  4
 
-#ifdef  TARGET_LPC11U35_501
-#define SPI_PORT_SELECTOR   LPC_SSP0
-#endif
+    #if defined( SSP_AUTO_SELECTION )
+        #if defined( TARGET_MBED_LPC1768 )
+            #define SPI_PORT_SELECTOR   LPC_SSP1
+        #elif defined( TARGET_LPC11U35_501 ) || defined( TARGET_LPC11U24_401 )
+            #define SPI_PORT_SELECTOR   LPC_SSP0
+        #endif
+    #elif defined( SSP_USE_SSP0 )
+        #define SPI_PORT_SELECTOR   LPC_SSP0
+    #elif defined( SSP_USE_SSP1 )
+        #define SPI_PORT_SELECTOR   LPC_SSP1
+    #else
+        #error when using FIFO option for the optimization, choose one of definition from SSP_AUTO_SELECTION, SSP_USE_SSP0 or SSP_USE_SSP1
+    #endif   //  #if defined( SSP_AUTO_SELECTION )
 
-#ifdef  TARGET_LPC11U24_401
-#define SPI_PORT_SELECTOR   LPC_SSP0
-#endif
-
-        char                dummy;
-        int                 n;
-        int                 length;
-
-        length      = width * height;
+        int     length  = width * height;
+        char    dummy;
+        int     n;
 
         _cs = 0;
 
@@ -399,6 +414,8 @@
         }
 
         do {
+#pragma diag_suppress 550   //  surpressing a warning messase of "Variable "dummy" was set but never used"
+
             while (!(SPI_PORT_SELECTOR->SR & 0x4));
             dummy   = SPI_PORT_SELECTOR->DR;
 
@@ -413,12 +430,12 @@
 
 
         } while(n < length);
+#endif
 
         _cs = 1;
         _window( 0, 0, WIDTH, HEIGHT );
     }
 
-
     void bitblit( int x, int y, int width, int height, const char* bitstream ) {
         _cs = 0;
         _window( x, y, width, height );
@@ -583,4 +600,3 @@
 
 
 
-