Stripped-down version of GDP Node Core

Dependencies:   EthernetInterface MbedJSONValue SDFileSystem mbed-rtos mbed snail

main.cpp

Committer:
Trumple
Date:
2015-05-18
Revision:
0:bb17d0395fb8

File content as of revision 0:bb17d0395fb8:

#include "mbed.h"
#include "snail.h"
#include "sensorinterface.h"
#include "sdcard.h"
#include "MbedJSONValue.h"
#include <map>

#define DEBUG

time_t lastPollTime = 0;
time_t pollInterval = 30;

bool isBasenode = false;

sensorinterface* sif;

char localAddress[8];
char baseNodeAddress[8];
bool networkParametersUpdated = false;
bool networkParametersTimedOut = false;
 
Serial pc(USBTX, USBRX);

int main()
{
    sdcard sd = sdcard();
    
    //check if local node is basenode
    #ifdef DEBUG
        pc.printf("[MAIN] Basenode status: %i\r\n", isBasenode);
    #endif
    
    sensorinterface sensors = sensorinterface();
    sif = &sensors;
        
    while(1)
    {
        //check if it's time to poll
        if (time(NULL) - lastPollTime > pollInterval)
        {
            #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
                pc.printf("[MAIN] Got data: ");
                for (int i = 0; i < data.readings.size(); i++)
                    pc.printf("0x%.4X|", data.readings[i]);
                pc.printf("\r\n");
            #endif
            
            //log
            sd.write(static_cast<long int>(time(NULL)), data);
        }
    }
}