HOme Sheriff And Lamp

Dependencies:   CameraC328 HCSR04 SDFileSystem WIZnetInterface mbed

Fork of HoSAL by pi bae

main.cpp

Committer:
uasonice
Date:
2015-08-11
Revision:
5:217f40f0a415
Parent:
4:ca368c50f8c9
Child:
7:58b14840531c

File content as of revision 5:217f40f0a415:

#include "mbed.h"
#include "EthernetInterface.h"
#include "SDFileSystem.h"
#include <stdio.h>
#include <string.h>

#define DEBUG_TYPE 1
#define P_ uart.printf
#include "rev_config.h"

#include "rev_Camera.h"
#include "rev_httpFile.h"
#include "rev_Hcsr04.h"


#define MAC     "\x00\x08\xDC\x11\x34\x78"
#define IP      "192.168.5.5"
#define MASK    "255.255.255.0"
#define GATEWAY "192.168.5.1"

#define HTTPD_SERVER_PORT   80

Serial uart(USBTX, USBRX); // tx, rx


#if defined(USE_SDCARD)
SDFileSystem sd(PB_3, PB_2, PB_1, PB_0, "sd"); // WIZwiki-W7500 
#endif // defined(USE_SDCARD)

#if defined(USE_HTTP_FILE_SERVER)
EthernetInterface eth;
TCPSocketServer server;
TCPSocketConnection client;
#endif // defined(USE_HTTP_FILE_SERVER)

#if defined(USE_CAMERA)
//CameraC328 cam(PA_14, PA_13, CameraC328::Baud14400);
CameraC328 *g_pCam;
#endif // defined(USE_CAMERA)

#if defined(USE_MEASURE_DISTANCE)
//HCSR04 sensor(D12, D11); 
HCSR04 *g_pHcsr; 
#define  CHECK_DISTANCE 50
#endif // defined(USE_MEASURE_DISTANCE)

DigitalOut led1(LED1); //server listning status
DigitalOut led2(LED2); //socket connecting status

//////////////////////////////////////////////////////////////////////////
Ticker ledTick;

//////////////////////////////////////////////////////////////////////////
void ledTickfunc()
{
    led1 = !led1;
}

//////////////////////////////////////////////////////////////////////////
int main()
{
    Timer tm1;

    ledTick.attach(&ledTickfunc,0.5);

    uart.baud(115200);

    DM_fLN("INIT DEVICE");
#if defined(USE_SDCARD)
    // Check File System
    DM_fLN("Checking File System");
    DIR *d = opendir("/sd/");
    if (d != NULL) {
        DM_fLN("SD Card Present");
    } else {
        DM_fLN("SD Card Root Directory Not Found");
    }
#endif // defined(USE_SDCARD)

#if defined(USE_HTTP_FILE_SERVER)
    // EthernetInterface eth;
    DM_fLN("Init Ethernet");
    //eth.init(); //Use DHCP
    eth.init((uint8_t*)MAC,IP,MASK,GATEWAY);  //IP,mask,Gateway
    DM_fLN("Connecting");
    eth.connect();
    DM_fLN("IP Address is %s", eth.getIPAddress());

    // TCPSocketServer server;
    server.bind(HTTPD_SERVER_PORT);
    server.listen();
    DM_fLN("Server Listening");

    // FIXME: no work - non-block mode
    server.set_blocking(false, 1000);
#endif // defined(USE_HTTP_FILE_SERVER)

#if defined(USE_CAMERA)
    DM_fLN("Init camera C328");
    g_pCam = new CameraC328(PA_14, PA_13, CameraC328::Baud14400);
    revSync(g_pCam);
    tm1.reset();
    tm1.start();
    //revJpeg_snapshot(g_pCam, "/sd/file05.jpg", CameraC328::JpegResolution640x480);
    tm1.stop();
    DM_fLN("time of capture: %d", tm1.read_ms());
#endif // defined(USE_CAMERA)
#if defined(USE_MEASURE_DISTANCE)
    g_pHcsr = new HCSR04(D12, D11);
#endif // defined(USE_MEASURE_DISTANCE)

    DM_fLN("start main loop");
    while(1) {
        int dist_cm = 0;
        tm1.reset();
        tm1.start();
#if defined(USE_MEASURE_DISTANCE)
        if( (dist_cm = get_distance(g_pHcsr)) < CHECK_DISTANCE ) 
#endif // defined(USE_MEASURE_DISTANCE)
        {
            DM_fLN("capture image: %d", dist_cm);
#if defined(USE_CAMERA)
            //revJpeg_snapshot("/sd/file02.jpg", CameraC328::JpegResolution640x480);
#endif // defined(USE_CAMERA)

        }
        fileServer();
        
        //wait_ms(1000);
        tm1.stop();
        //DM_fLN("time: %d", tm1.read_ms());
    }
    //return 0;
}