3rd Repo, trying to figure this out.
Fork of SOFT253_Template_Weather_OS_54 by
Diff: MessageLogger/MessageLogger.cpp
- Revision:
- 80:959151952153
- Parent:
- 79:4e6b53eb678b
- Child:
- 81:996c0a3319b4
diff -r 4e6b53eb678b -r 959151952153 MessageLogger/MessageLogger.cpp --- a/MessageLogger/MessageLogger.cpp Fri Apr 28 17:17:24 2017 +0000 +++ b/MessageLogger/MessageLogger.cpp Wed May 10 10:02:22 2017 +0000 @@ -9,6 +9,7 @@ { hasError = false; messageCount = 0; + messageLock = new Mutex(); } void MessageLogger::SetThread(Thread* logger) @@ -28,11 +29,13 @@ void MessageLogger::SendMessage(string message) { + messageLock->lock(); messageObj = message_mail.alloc(); if (messageObj == NULL) { SendError("ERROR: Message queue is full."); + messageLock->unlock(); return; } @@ -47,11 +50,15 @@ ostringstream error; error << "ERROR CODE: " << stat << ", Failed to retrieve message from queue"; SendError(error.str()); + messageLock->unlock(); return; } messageCount++; loggingThread->signal_set(SIGNAL_printMessage); + + printf("\033[1A\n"); + messageLock->unlock(); } bool MessageLogger::GetError() @@ -83,6 +90,7 @@ void MessageLogger::PrintMessage() { + messageLock->lock(); osEvent evt = message_mail.get(); //Check status @@ -92,7 +100,7 @@ // Ask about cout as everyone on the internet recommends it as a type safe version of printf. //std::cout << message; - printf("%s\n\033[2A\n", (*message)); + printf("%s\033[1A\n", (*message)); message_mail.free(message); messageCount--; @@ -103,4 +111,6 @@ error << "ERROR CODE: " << evt.status << ", Failed to retrieve message from queue"; SendError(error.str()); } + + messageLock->unlock(); } \ No newline at end of file