Tedd OKANO / Mbed 2 deprecated MARY_CAMERA_Hello

Dependencies:   MARY_CAMERA NokiaLCD mbed

Revision:
23:8471197d3096
Parent:
22:d5e24ab4afb7
Child:
24:c74b706c25d6
diff -r d5e24ab4afb7 -r 8471197d3096 main.cpp
--- a/main.cpp	Tue Mar 11 03:29:01 2014 +0000
+++ b/main.cpp	Tue Mar 11 07:51:22 2014 +0000
@@ -2,7 +2,7 @@
 #include "MARMEX_OB_oled.h"
 #include "MARY_CAMERA.h"
 
-#if defined( TARGET_MBED_LPC1768 ) || defined( TARGET_LPC11U24_401 )
+#if defined( TARGET_MBED_LPC1768 ) || defined( TARGET_LPC11U24_401 ) || defined( TARGET_LPC11XX )
 
 MARMEX_OB_oled  oled1( p5, p7,  p20, p16, p15 ); // mosi, sclk, cs, rst, power_control     -- maple-mini-type-b-slot1
 MARY_CAMERA     camera( p5, p6, p7, p22, p26, p28, p27 ); // mosi, miso, sclk, cs, reset, I2C_SDA, I2C_SCL
@@ -16,15 +16,18 @@
 
 #endif
 
-BusOut          led( LED3, LED4 );
+BusOut          led( LED4, LED3, LED2, LED1 );
 
 #define X_OFFSET        ((MARY_CAMERA::PIXEL_PER_LINE - MARMEX_OB_oled::WIDTH ) / 2)
-#define Y_OFFSET        ((MARY_CAMERA::LINE_PER_FRAME - MARMEX_OB_oled::HEIGHT) / 2)
+#define Y_OFFSET        (camera.vertical_size - MARMEX_OB_oled::HEIGHT) / 2
 
+void copy_image_to_oled( void );
 void line_mirroring( short *buf );
 void save_still_image( char *file_name );
 void oled_test_screen( void );
 
+#define     SIZES_OF_STILL_PICTURE
+
 int main()
 {
     led    = 0x3;
@@ -32,29 +35,54 @@
     oled1.cls();
     oled_test_screen();
 
-    short   buf[ MARMEX_OB_oled::WIDTH ];
+#if defined( TARGET_MBED_LPC1768 )
+
+#ifdef  SIZES_OF_STILL_PICTURE
+    led    = 0x1;
+    camera.init( MARY_CAMERA::QCIF );
+    save_still_image( "i_qcif.bmp" );
+
+    led    = 0x2;
+    camera.init( MARY_CAMERA::QQVGA );
+    save_still_image( "i_qqvga.bmp" );
 
-#if defined( TARGET_MBED_LPC1768 ) || defined( TARGET_LPC11U24_401 )
-    //save_still_image( "image.bmp" );
+    led    = 0x4;
+    camera.init( MARY_CAMERA::QVGA );
+    save_still_image( "i_qvga.bmp" );
+
+    led    = 0x8;
+    camera.init( MARY_CAMERA::VGA );
+    save_still_image( "i_vga.bmp" );
+
+    camera.init( MARY_CAMERA::QCIF );
+#endif
+
 #endif
 
     while ( 1 ) {
-
         led    = 0x1;
-        camera.open_transfer();
-
-        for ( int line = 0; line < MARMEX_OB_oled::HEIGHT; line++  ) {
-            camera.transfer_a_line( buf, line + Y_OFFSET, X_OFFSET, MARMEX_OB_oled::WIDTH );
-            line_mirroring( buf );
-            oled1.blit565( 0, line, MARMEX_OB_oled::WIDTH, 1, buf );
-        }
-
-        camera.close_transfer();
+        copy_image_to_oled();
         led    = 0x2;
     }
 }
 
 
+void copy_image_to_oled( void )
+{
+    short   buf[ MARMEX_OB_oled::WIDTH ];
+
+    camera.open_transfer();
+
+    for ( int line = 0; line < MARMEX_OB_oled::HEIGHT; line++  ) {
+        camera.transfer_a_line( buf, line + (camera.vertical_size() - MARMEX_OB_oled::HEIGHT) / 2, (camera.horizontal_size() - MARMEX_OB_oled::WIDTH ) / 2, MARMEX_OB_oled::WIDTH );
+        line_mirroring( buf );
+        oled1.blit565( 0, line, MARMEX_OB_oled::WIDTH, 1, buf );
+    }
+
+    camera.close_transfer();
+}
+
+
 void line_mirroring( short *buf )
 {
     short   tmp;
@@ -85,6 +113,11 @@
     oled1.printf( "%s", (MARY_CAMERA::NO_ERROR == camera.ready()) ? "Camera is ready" : "No Camera found" );
     oled1.locate( 0, 4 );
     oled1.printf( "%s", "saving into BMP" );
+    oled1.locate( 0, 5 );
+    oled1.printf( "%d", camera.horizontal_size() );
+    oled1.locate( 0, 6 );
+    oled1.printf( "%d", camera.vertical_size() );
+
 
     for (int i = 0; i < MARMEX_OB_oled::WIDTH; i++ )
         oled1.pixel( i, 80 + sin( (float)i / 5.0 ) * 10, 0x000000 );
@@ -95,16 +128,16 @@
 
 void save_still_image( char *file_name )
 {
-    short   buf[ MARY_CAMERA::PIXEL_PER_LINE ];
+    short   buf[ camera.horizontal_size() ];
 
-    if ( open_BMP( file_name ) )
+    if ( open_BMP( file_name, camera.horizontal_size(), camera.vertical_size() ) )
         return;
 
     camera.open_transfer();
 
-    for ( int line = (MARY_CAMERA::LINE_PER_FRAME - 1); 0 <= line; line--  ) {
-        camera.transfer_a_line( buf, line, 0, MARY_CAMERA::PIXEL_PER_LINE );
-        write_BMP( buf, MARY_CAMERA::PIXEL_PER_LINE );
+    for ( int line = (camera.vertical_size() - 1); 0 <= line; line--  ) {
+        camera.transfer_a_line( buf, line, 0, camera.horizontal_size() );
+        write_BMP( buf, camera.horizontal_size() );
     }
     camera.close_transfer();