Tedd OKANO / Mbed 2 deprecated MARY_CAMERA_Hello

Dependencies:   MARY_CAMERA NokiaLCD mbed

main.cpp

Committer:
okano
Date:
2014-02-18
Revision:
10:3c8fc9569377
Parent:
9:68408189efde
Child:
11:149993faf2be

File content as of revision 10:3c8fc9569377:

#include "mbed.h"
#include "MARMEX_OB_oled.h"
#include "MARY_CAMERA.h"

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
BusOut          led( LED3, LED4 );

#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)

void line_mirroring( short *buf );
void save_still_image( char *file_name );

int main()
{
    led    = 0x3;

    oled1.cls();

    short   buf[ MARMEX_OB_oled::WIDTH ];

    save_still_image( "image.bmp" );

    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();
        led    = 0x2;
    }
}


void line_mirroring( short *buf )
{
    short   tmp;

    for ( int i = 0; i < (MARMEX_OB_oled::WIDTH / 2); i++ ) {
        tmp         = buf[ i ];
        buf[ i ]    = buf[ (MARMEX_OB_oled::WIDTH - 1) - i ];
        buf[ (MARMEX_OB_oled::WIDTH - 1) - i ]  = tmp;
    }
}


#include    "bmp_handler.h"

void save_still_image( char *file_name )
{
    short   buf[ MARY_CAMERA::PIXEL_PER_LINE ];

    if ( open_BMP( file_name ) )
        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 );
    }

    camera.close_transfer();
    
    close_BMP();
}