SEDO subject project

Dependencies:   ds3231 mbed-rtos mbed DHT

Revision:
12:1d544cdab2cf
Parent:
11:a9f41d6489c9
--- a/main.cpp	Mon May 08 18:30:12 2017 +0000
+++ b/main.cpp	Mon May 15 18:30:20 2017 +0000
@@ -5,6 +5,7 @@
 #include "real_time_clock.h"
 #include "temp_hum_sensor.h"
 #include "motor_cnt.h"
+#include "light_sensor.h"
 
 #define TASKS_NUMBER    (sizeof(taskList)/sizeof(taskList[0]))
 
@@ -19,7 +20,7 @@
 
 static struct task_definition_struct taskList[] = {
     { temp_hum_thread,    &temp_hum_init, NULL, NULL, osPriorityNormal, 100, NULL, 0 },
-    //{ nodeComm_thread,    &initNodeComm, NULL, NULL, osPriorityNormal, 100, NULL, 0 }
+    { light_thread,    &light_init, NULL, NULL, osPriorityNormal, 100, NULL, 0 }
 };
 
 
@@ -55,13 +56,14 @@
         // Stop all remain tasks
         sensors_running = false;
         elapsed_time = rtc.get_epoch()-epoch_time;
-        
-    mutexPCComm.lock();
-    pc.printf("MAIN: elapsed %ld\n",(long)elapsed_time);
-    mutexPCComm.unlock();
-        if(10-elapsed_time>0){
+
+        mutexPCComm.lock();
+        pc.printf("MAIN: elapsed %ld\n",(long)elapsed_time);
+        mutexPCComm.unlock();
+        if(10-(long)elapsed_time>0) {
             Thread::wait((10-elapsed_time)*1000);
-        }
+        } else
+            Thread::wait(1000);
     }
 }
 
@@ -69,6 +71,7 @@
 {
     Timer t;
     int error = -1;
+    time_t ts  = rtc.get_epoch();
     t.reset();
     t.start();
     while(error != 0 && t.read()<MAX_TIME_TO_WAIT_NODE_COMM) {
@@ -81,8 +84,13 @@
             pc.printf("Temp\t%f\n",data.temperature);
             pc.printf("Hum\t%f\n",data.humidity);
             pc.printf("DewP\t%f\n",data.dewPoint);
+            pc.printf("Light\t%f\n",data.light);
+            pc.printf("%ld\tDHTError:\t%d\n",(long)ts, data.DHTError);
+            pc.printf("%ld\tDHTError:\t%d\n",(long)ts, data.lightError);
             mutexPCComm.unlock();
-            xbee.printf("{DHT:{temp:%4.2f,hum:%4.2f,dew:%4.2f}}\n",data.temperature,data.humidity,data.dewPoint);
+            xbee.printf("{%ld:{DHT:{temp:%4.2f,hum:%4.2f,dew:%4.2f}},{LIGHT:{light:%f}})\n",(long)ts, data.temperature,data.humidity,data.dewPoint,data.light);
+            set_motor_direction(1);
+            set_motor_speed(data.light);
         }
         mutexData.unlock();
         if(error!=0) {
@@ -101,13 +109,24 @@
             pc.printf("Temp:\t%f\n",data.temperature);
             pc.printf("Hum:\t%f\n",data.humidity);
             pc.printf("DewP:\t%f\n",data.dewPoint);
-            pc.printf("DHTError:\t%d\n",data.DHTError);
-            xbee.printf("{DHT:{temp:%4.2f,hum:%4.2f,dew:%4.2f}}\n",data.temperature,data.humidity,data.dewPoint);
+            pc.printf("%ld\tDHTError:\t%d\n",(long)ts, data.DHTError);
+            xbee.printf("{%ld:{DHT:{temp:%4.2f,hum:%4.2f,dew:%4.2f}}\n",(long)ts, data.temperature,data.humidity,data.dewPoint);
             mutexPCComm.unlock();
-        } else {
+        }
+        if( data.lightError == 0) {
             mutexPCComm.lock();
-            pc.printf("DHTError:\t%d\n",data.DHTError);
-            xbee.printf("{DHT:{error:\t%d}}\n",data.DHTError);
+            pc.printf("Light\t%f\n",data.light);
+            pc.printf("%ld\tlightError:\t%d\n",(long)ts, data.lightError);
+            xbee.printf("{%ld:{LIGHT:{light:%f}})\n",(long)ts, data.light);
+            mutexPCComm.unlock();
+            set_motor_direction(1);
+            set_motor_speed(data.light);
+        }
+        if( data.lightError != 0 || data.lightError != 0) {
+            mutexPCComm.lock();
+            pc.printf("%ld\tDHTError:\t%d\n",(long)ts, data.DHTError);
+            pc.printf("%ld\tlightError:\t%d\n",(long)ts, data.lightError);
+            xbee.printf("{%ld:{DHT:{error:\t%d},{LIGHT:{error:%f}}}\n",(long)ts, data.DHTError, data.light);
             mutexPCComm.unlock();
         }
         mutexData.unlock();
@@ -115,6 +134,7 @@
     // Reset all data status
     mutexData.lock();
     data.DHTError = -128;
+    data.lightError = -128;
     mutexData.unlock();
     return error;
 }