GDP group 24 node core

Dependencies:   EthernetInterface SDFileSystem mbed-rtos mbed snail MbedJSONValue

Files at this revision

API Documentation at this revision

Comitter:
jakehodges
Date:
Mon Dec 15 15:02:43 2014 +0000
Parent:
4:0bab12a0cc9a
Child:
7:5ae1d99d2b69
Commit message:
Implement message queue to deal with xbee sleep cycle

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
snail.lib Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Mon Dec 15 12:50:26 2014 +0000
+++ b/main.cpp	Mon Dec 15 15:02:43 2014 +0000
@@ -23,6 +23,8 @@
 snail xbee = snail();
 Ticker networkParametersTimeout;
 
+queue<snail::sensordata> messageQueue;
+
 void handleJoinNetworkReply(snail::message& message)
 {
     pc.printf("[MAIN] Got join network reply...\r\n");
@@ -204,8 +206,19 @@
         while(1)
         {
             xbee.processIncomingData();
-            //TODO: if xbee interrupt has woken us up
-                //transmit 10 latest readings
+            
+            //TODO: if message queue exceeds MAX_QUEUE SIZE, write older readings to SD card.
+            
+            //if xbee is awake send contents of message queue
+            if (xbee.isCTS())
+            {
+                while(!messageQueue.empty())
+                {
+                    snail::sensordata message = messageQueue.front();
+                    xbee.send(message, sizeof(message));
+                    messageQueue.pop();
+                }
+            }
             
             //check if it's time to poll
             if (time(NULL) - lastPollTime > pollInterval)
@@ -238,8 +251,7 @@
                 memcpy(readings, readings_str.c_str(), sizeof(readings));
                 
                 snail::sensordata message(baseNodeAddress, data.type, data.type, time(NULL), readings, data.readings.size());
-                
-                xbee.send(message, sizeof(message));
+                messageQueue.push(message);
                 
                 //log
                 //sd.write(static_cast<long int>(time(NULL)), data);
--- a/snail.lib	Mon Dec 15 12:50:26 2014 +0000
+++ b/snail.lib	Mon Dec 15 15:02:43 2014 +0000
@@ -1,1 +1,1 @@
-http://developer.mbed.org/users/Trumple/code/snail/#04fc42ae9210
+http://developer.mbed.org/users/Trumple/code/snail/#73668097572a