Arrow Intern IoT / Mbed 2 deprecated ENV_NODE_REQUEST_POC

Dependencies:   mbed BME280 SI1145

Revision:
9:e619711e05be
Parent:
8:1703f45edfa2
Child:
10:1296cc169c60
--- a/main.cpp	Thu Jul 06 00:27:22 2017 +0000
+++ b/main.cpp	Thu Jul 06 15:04:11 2017 +0000
@@ -23,7 +23,6 @@
 #define rx (PA_10)
 
 const char nodeID = '1';
-const int node_id_test = 1;
 
 // I/O Delarations
 I2C i2c(I2C_SDA, I2C_SCL); // D14, D15
@@ -32,6 +31,7 @@
 
 // Declare the PIR interface
 InterruptIn MotionDetect(PA_0);
+bool pir_enable = true;
 bool pir_trigger = false;
 
 // Declare Serial Interfaces
@@ -42,28 +42,39 @@
 // "id:2,te:2,pr:3,mo:4,uv:5,ir:6,vi:7,no:8"
 void SendSensorData(int t, int p, int h, int u, int ir, int v, int n){
     //"        id:2, te:%2,pr:%3,uv:%5,ir:%6,vi:%7,no:%8"
-    xb.printf(      ",ni:%d,te:%d,pr:%d,hu:%d,uv:%d,ir:%d,vi:%d,no:%d\n\r",node_id_test,t,p,h,u,ir,v,n);
-    pc.printf("send: id:%d,te:%d,pr:%d,hu:%d,uv:%d,ir:%d,vi:%d,no:%d\n\r",node_id_test,t,p,h,u,ir,v,n);
+    xb.printf(      ",ni:%d,te:%d,pr:%d,hu:%d,uv:%d,ir:%d,vi:%d,no:%d\n\r",1,t,p,h,u,ir,v,n);
+    pc.printf("send: id:%d,te:%d,pr:%d,hu:%d,uv:%d,ir:%d,vi:%d,no:%d\n\r",1,t,p,h,u,ir,v,n);
 }
 
 void SendPirFlag(){
-    xb.printf("ni:%c,mo:1\r\n",nodeID);
+    if(1){
+        xb.printf("ni:%c,mo:1\r\n",nodeID);;
+    }
 }
 
 // PIR interrupt. Set the pir_trigger to true when interrupted.
 void PIR(void){
-    
+    if(xb.writeable()){
+        SendPirFlag();
+    }
     pir_trigger = true;
 }
 
+void initialize_serial_connections(){
+    xb.baud(57600); 
+    pc.baud(115200);   
+}
+
 int main() {
+    initialize_serial_connections();
+    
     pc.printf("\n\rMic test 1-2, 1-2\n\r");
-        
+    
     // Attach the PIR function to interrupt
-    //MotionDetect.rise(&PIR);
+    MotionDetect.rise(&PIR);
     
     char pc_data = 'e';
-    char buffer[6];
+    char buffer[10];
         
     int temp = 1;
     int pressure = 2;
@@ -77,7 +88,6 @@
             
     while(true){
         // Debug Controls Input
-        
         if(pc.readable()){
             pc_data = pc.getc();
             pc.printf("PC: %c", pc_data);
@@ -86,7 +96,6 @@
         
         if(pir_trigger){
             // DEBUG
-            //pc.printf("pir_trigger TRUE\r\n");
             if(xb.writeable()){
                 SendPirFlag();
                 pir_trigger = false;
@@ -95,29 +104,42 @@
         }
         
         // testing out using getc() instead of gets()
+        
         if(xb.readable()){
             wait(0.01);
-            for(int i = 0; i < sizeof(buffer); i++){
-                buffer[i] = xb.getc();
-                pc.printf("%c",buffer[i]);
+            char temp = xb.getc();
+            if(temp == 'i' || temp == '\0'){
+                //if(xb.readable()){
+                if(1){    
+                    for(int i = 1; i < sizeof(buffer); i++){
+                        buffer[i] = xb.getc();
+                    }
+                }
             }
+            
+            
                 
             pc.printf("\r\n");
-            if((buffer[4] == nodeID)){
+            if(buffer[4] == nodeID){
                 send_enable = true;
             }
+            
+            if(buffer[9] == '1'){
+                pir_enable = true;
+                pc.printf("pir_enable = true\r\n");
+            } else if (buffer[9] == '0'){
+                pir_enable = false;
+                pc.printf("pir_enable = false\r\n");
+            }
+            pc.printf("RECV: ");
             for(int i = 0; i < sizeof(buffer); i++){
                 pc.printf("%i,", buffer[i]);
             }
+            
             pc.printf("\r\n");
             memset(buffer, '\0', sizeof(buffer));
         }
         
-        if(xb.writeable() && send_enable){
-            SendSensorData(temp, pressure, humidity, uv, ir, vis, noise);
-            send_enable = false;
-        }
-        
         // Take in new measurements
         // Read in values from the BME280 board
         temp = thp_sensor->getTemperature();
@@ -130,6 +152,13 @@
         vis = uiv_sensor->getVIS(); // Reads from the SI1145
         
         noise = 404;
+        
+        // Transmit over the xbee if possible and necessary
+        if(xb.writeable() && send_enable){
+            SendSensorData(temp, pressure, humidity, uv, ir, vis, noise);
+            send_enable = false;
+        }
+        
     }
 }