GDP group 24 node core

Dependencies:   EthernetInterface SDFileSystem mbed-rtos mbed snail MbedJSONValue

Revision:
0:fcab3b154e49
Child:
1:27b35752c5d0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Tue Nov 11 17:33:41 2014 +0000
@@ -0,0 +1,116 @@
+#include "mbed.h"
+#include "snail.h"
+#include "sensorinterface.h"
+#include "sdcard.h"
+
+#define DEBUG
+
+time_t lastPollTime = 0;
+time_t pollInterval = 30;
+
+bool isBasenode = false;
+ 
+Serial pc(USBTX, USBRX);
+
+char* getBasenodeAddress(snail* xbee)
+{
+    snail::baseaddressrequest request;
+    xbee->send(request);
+    
+    //TODO: only continue if type is base address reply
+    while(!xbee->isMessageWaiting())
+    {}
+    
+    //snail::message reply = xbee->readMessage();
+    
+    return "";
+}
+
+int main()
+{
+    #ifdef DEBUG
+        pc.printf("[MAIN] Starting up...\r\n");
+        printf("                         .       .\r\n");
+        printf("                        / `.   .' \\\r\n");
+        printf("                .---.  <    > <    >  .---.\r\n");
+        printf("                |    \\  \\ - ~ ~ - /  /    |\r\n");
+        printf("                 ~-..-~             ~-..-~\r\n");
+        printf("             \\~~~\\.'                    `./~~~/\r\n");
+        printf("   .-~~^-.    \\__/                        \\__/\r\n");
+        printf(" .'  O    \\     /               /       \\  \\\r\n");
+        printf("(_____,    `._.'               |         }  \\/~~~/\r\n");
+        printf(" `----.          /       }     |        /    \\__/\r\n");
+        printf("       `-.      |       /      |       /      `. ,~~|\r\n");
+        printf("           ~-.__|      /_ - ~ ^|      /- _      `..-'   f: f:\r\n");
+        printf("                |     /        |     /     ~-.     `-. _||_||_\r\n");
+        printf("                |_____|        |_____|         ~ - . _ _ _ _ _>\r\n");
+        printf("\r\n");
+        printf("\r\n");
+        printf("         Sensorsaurus | Team 24 GDP | Southampton | 2014\r\n");
+        printf("\r\n");
+        printf("\r\n");
+    #endif
+    
+    sensorinterface sensors = sensorinterface();
+    sdcard sd = sdcard();
+    snail xbee = snail();
+    
+    //TODO: read basenode pin
+    #ifdef DEBUG
+        pc.printf("[MAIN] Basenode switch: %i\r\n", isBasenode);
+    #endif
+    
+    time_t timestamp = 0;
+    //if (isBasenode)
+        //TODO: get timestamp from API
+        //TODO: be ready to broadcast as the basenode
+    //else
+        //TODO: request timestamp from base node
+        //TODO: find out who basenode is
+    
+    set_time(timestamp);
+    
+    //TODO: load configuration from SD
+    
+    if (isBasenode)
+        while(1)
+        {
+            #ifdef DEBUG
+                pc.printf("[MAIN] Basenode is idle\r\n");
+            #endif
+            
+            wait(5);
+        }
+    else
+        while(1)
+        {
+            //if xbee interrupt has woken us up
+                //transmit 10 latest readings
+            
+            //check if it's time to poll TODO: add check to see if sensorinterface is ready
+            if (time(NULL) - lastPollTime > 10)
+            {
+                #ifdef DEBUG
+                    pc.printf("[MAIN] Requesting data...\r\n");
+                #endif
+                sensors.requestData();
+                lastPollTime = time(NULL);
+            }
+            
+            //if there is data waiting for us...
+            if (sensors.isDataWaiting())
+            {
+                #ifdef DEBUG
+                    pc.printf("[MAIN] Data waiting, reading data...\r\n");
+                #endif
+                d_reply data = sensors.readData();
+                #ifdef DEBUG
+                for (int i = 0; i < data.readings.size(); i++)
+                    pc.printf("0x%.4X|", data.readings[i]);
+                #endif
+                //log
+                sd.write(static_cast<long int>(time(NULL)), data);
+            }
+            
+        }
+}
\ No newline at end of file