IoT_watering project - supervisor

Dependencies:   mbed-rtos mbed ssWi

Revision:
2:69d2d4c76f02
Parent:
1:dcfe7e79a45c
Child:
3:e49dd7bf7f1c
--- a/main.cpp	Thu Jan 19 23:31:18 2017 +0000
+++ b/main.cpp	Mon Jan 23 20:36:42 2017 +0000
@@ -6,6 +6,10 @@
 #include "xbee.hpp"
 #include "ssWiSocket.hpp"
 
+#ifndef DEBUG
+#define     printf(fmt,...)     
+#endif
+
 int last_watering[MAX_NUM_NODES];
 
 global_confg_t global_config;
@@ -23,7 +27,6 @@
 bool read_configuration();
 
 bool read_from_port(ssWiSocket *socket, int *value);
-
 bool read_timeout(ssWiSocket *socket, int *value);
 
 void do_sampling();
@@ -31,16 +34,15 @@
 
 int main() {
     // supervisor configuration
-    printf("6\r\n");
-#ifdef DEBUG
     printf("SUPERVISOR - config\r\n");
-#endif
+
+    // read configuration
     if (!read_configuration())
         error("Impossible to read configuration");
 
     // network configuration
-    XBeeModule xbee(p9, p10, 102, 14);
-    xbee.init(5, 10);
+    XBeeModule xbee(p9, p10, PAN_ID, CHANNEL_ID);
+    xbee.init(XBEE_TX_PER_SECOND, XBEE_RX_PER_SECOND);
     socket_command = ssWiSocket::createSocket(PORT_COMMANDS);
     for (int i = 0; i < global_config.num_units; i++) {
         socket_moisture[i] = ssWiSocket::createSocket(
@@ -60,25 +62,19 @@
         last_watering[i] = 1;
 
     // start
-#ifdef DEBUG
     printf("SUPERVISOR - start\r\n");
-#endif
 
     while(1) {
         int minute_counters = 0;
         read_counter();
-#ifdef DEBUG
-        printf("SUPERVISOR - wait...\r\n");
-#endif
+        printf("SUPERVISOR - waiting\r\n");
         do {
             // wait 1 minute
             Thread::wait(INTERVAL_60_SECONDS * 1000);
             minute_counters++;
         } while (minute_counters < global_config.wait_minutes);
 
-#ifdef DEBUG
         printf("SUPERVISOR - active\r\n");
-#endif
 
         // mark as busy
         DigitalOut led_busy(LED4);
@@ -86,13 +82,9 @@
         FILE* fp_busy = fopen(FILE_BSY, "w");
 
         // sample and water
-#ifdef DEBUG
         printf("SUPERVISOR - sampling\r\n");
-#endif
         do_sampling();
-#ifdef DEBUG
         printf("SUPERVISOR - watering\r\n");
-#endif
         do_watering();
         
         // increment counter
@@ -102,18 +94,11 @@
         fclose(fp);
 
         // send shutdown
-#ifdef DEBUG
         printf("SUPERVISOR - shutdown\r\n");
-#endif
 
-        Timer t;
-        t.start();
-        while(t.read() < INTERVAL_SYNC);
+        wait(INTERVAL_SYNC);
         socket_command->write(COMM_SHUTDOWN);
 
-        t.stop(); t.reset(); t.start();
-        while(t.read() < INTERVAL_SYNC);
-
         // mark as not busy
         led_busy = 0;
         fclose(fp_busy);
@@ -122,17 +107,12 @@
 
 void do_sampling () {
     FILE* fp = fopen(FILE_SNS, "a");
-    Timer t;
 
     socket_command->write(COMM_START_SAMPLING);
-    t.start();
-    while(t.read() < INTERVAL_SAMPLING);
+    wait(INTERVAL_SAMPLING);
     
     socket_command->write(COMM_STOP_SAMPLING);
-        t.stop();
-        t.reset();
-        t.start();
-    while(t.read() < INTERVAL_SYNC);
+    wait(INTERVAL_SYNC);
 
     for (int i = 0; i < global_config.num_units; i++) {
         int temp = 0, humi = 0, mois = 0, sampling_feedback = COMM_NO_VALUE;
@@ -162,28 +142,18 @@
 }
 
 void do_watering () {
+    FILE* fp = fopen(FILE_WTR, "a");
     for (int i = 0; i < global_config.num_units; i++) {
         if (global_config.count % global_config.nodes[i].watering_wait)
             continue;
-        FILE* fp = fopen(FILE_WTR, "a");
-
+        // write watering time in seconds
         socket_water[i]->write(global_config.nodes[i].watering_seconds);
-        
-        Timer t;
-        t.start();
-        while (t.read() < (global_config.nodes[i].watering_seconds +
-                                                                INTERVAL_SYNC));
-
-        t.stop(); t.reset(); t.start();
-        while (t.read() < INTERVAL_1_SECOND);
-        
+        wait(INTERVAL_SYNC);
+        // send watering command
         socket_command->write(COMM_START_WATERING_OFFSET + 
                                                 global_config.nodes[i].address);
-
-        t.stop(); t.reset(); t.start();
-        while (t.read() < (global_config.nodes[i].watering_seconds +
-                                                                INTERVAL_SYNC));
-        t.stop();
+        wait(global_config.nodes[i].watering_seconds + INTERVAL_SYNC + 
+                                                                 INTERVAL_SYNC);
         
         int watering_response = 0;
         int code = 4;
@@ -259,7 +229,7 @@
         }
     }
     fclose(fp);
-       
+
     return true;
 }