HOme Sheriff And Lamp

Dependencies:   CameraC328 HCSR04 SDFileSystem WIZnetInterface mbed

Fork of HoSAL by pi bae

Revision:
4:ca368c50f8c9
Parent:
3:8c4e0e7c8cea
Child:
5:217f40f0a415
--- a/main.cpp	Tue Aug 11 17:35:33 2015 +0000
+++ b/main.cpp	Tue Aug 11 17:46:53 2015 +0000
@@ -1,11 +1,15 @@
 #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_httpFile.h"
 #include "rev_Hcsr04.h"
 
 
@@ -18,6 +22,17 @@
 
 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;
@@ -25,7 +40,7 @@
 
 #if defined(USE_MEASURE_DISTANCE)
 //HCSR04 sensor(D12, D11); 
-HCSR04 *g_pHcrs; 
+HCSR04 *g_pHcsr; 
 #define  CHECK_DISTANCE 50
 #endif // defined(USE_MEASURE_DISTANCE)
 
@@ -51,6 +66,35 @@
     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);
@@ -62,14 +106,29 @@
     DM_fLN("time of capture: %d", tm1.read_ms());
 #endif // defined(USE_CAMERA)
 #if defined(USE_MEASURE_DISTANCE)
-    g_pHcrs = new HCSR04(D12, D11);
+    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)
-        get_distance(g_pHcrs);
+        if( (dist_cm = get_distance(g_pHcsr)) < CHECK_DISTANCE ) 
 #endif // defined(USE_MEASURE_DISTANCE)
-        wait_ms(1000);
+        {
+            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;
 }