![](/media/cache/profiles/ba5be68d3d541f2ca043d77fc54fe702.jpg.50x50_q85.jpg)
3rd Repo, trying to figure this out.
Fork of SOFT253_Template_Weather_OS_54 by
Diff: MessageLogger/MessageLogger.cpp
- Revision:
- 75:b44645bbf2d2
- Parent:
- 74:749727490f44
- Child:
- 76:ee1f132e5744
--- a/MessageLogger/MessageLogger.cpp Mon Apr 24 13:15:51 2017 +0000 +++ b/MessageLogger/MessageLogger.cpp Tue Apr 25 16:06:35 2017 +0000 @@ -1,35 +1,104 @@ #include "MessageLogger.h" +#define SIGNAL_printMessage 2 + // constructor - MessageLogger::MessageLogger(Thread* logger) + 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()); + } + */ } \ No newline at end of file