![](/media/cache/profiles/ba5be68d3d541f2ca043d77fc54fe702.jpg.50x50_q85.jpg)
3rd Repo, trying to figure this out.
Fork of SOFT253_Template_Weather_OS_54 by
MessageLogger/MessageLogger.cpp
- Committer:
- aburch1
- Date:
- 2017-04-25
- Revision:
- 75:b44645bbf2d2
- Parent:
- 74:749727490f44
- Child:
- 76:ee1f132e5744
File content as of revision 75:b44645bbf2d2:
#include "MessageLogger.h" #define SIGNAL_printMessage 2 // constructor MessageLogger::MessageLogger() { hasError = false; messageCount = 0; } void MessageLogger::SetThread(Thread* logger) { loggingThread = logger; } // public methods: void MessageLogger::SendError(string errorMessage) { fatalError << errorMessage << " Terminating program\n\r"; loggingThread->signal_set(SIGNAL_printMessage); hasError = true; } void MessageLogger::SendMessage(string message) { /* ostringstream *messageObj = message_mail.alloc(); ostringstream temp = *messageObj; if (messageObj == NULL) { SendError("ERROR: Message queue is full."); return; } temp << message; //stat = message_mail.put(messageObj); //Check if succesful if (stat == osErrorResource) { ostringstream error; error << "ERROR CODE: " << stat << ", Failed to add message to the queue.\r\n"; SendError(error.str()); message_mail.free(messageObj); return; } messageCount++; loggingThread->signal_set(SIGNAL_printMessage); */ } bool MessageLogger::GetError() { if(hasError) { PrintError(); return true; } return false; } bool MessageLogger::GetMessage() { if(messageCount > 0) { PrintMessage(); return true; } return false; } void MessageLogger::PrintError() { printf(fatalError.str().c_str()); } void MessageLogger::PrintMessage() { osEvent evt = message_mail.get(); //Check status if (evt.status == osEventMail) { ostringstream *message = (ostringstream*)evt.value.p; printf("Incoming!"); printf(message->str().c_str()); message_mail.free(message); messageCount--; } /* else { ostringstream error; error << "ERROR CODE: " << evt.status << ", Failed to retrieve message from queue/n/r"; SendError(error.str()); } */ }