fuck this

Dependencies:   BMP280

Logging.cpp

Committer:
mwthewsey
Date:
2018-01-09
Revision:
21:6e733076f49c
Parent:
20:25939e03b803

File content as of revision 21:6e733076f49c:

#include "Logging.h"
#include <string>

using namespace std;
Mail<uint32_t,32> ActivityLog;  //Mail Queue passes logging data
bool logging = false;           //Are we logging or not

void LogEvent(uint32_t eventCode)
{
    if (logging) {  //Only do if logging is enabled
        uint32_t* Status = ActivityLog.alloc(); //Allocate space in mailbox
        *Status = eventCode;    //Move data into memory
        ActivityLog.put(Status);//data is in queue 
    }
}

string CheckLoggingQueue(void)
{
    string returnString = "";
    if (logging) {  //Only do if logging is enabled
        osEvent evt = ActivityLog.get(5000);    //Get the object from mailbox. This blocks until there is data. Timeout after 5 secconds
        if (evt.status == osEventMail) {
            //Does it have content? If not, there is no mail.
            uint32_t* mail = (uint32_t*)evt.value.p;    //Extract the value passed
            //Convert int value to string
            char intStr[4]; //Has to be done in two steps because of known to_string bug stackoverflow.com/questions/12975341
            sprintf(intStr, "%d", *mail);
            string mailAsString = string(intStr);
            ActivityLog.free(mail);     //Now we can release the space in the mailbox
            returnString = "Data Logged:\n\r" + mailAsString;
            return returnString;
        } else {  
            //There wasn't any data            
            string returnString = "ERROR: There wasn't any data";
        }
    }
    return returnString;
}