3rd Repo, trying to figure this out.

Dependencies:   LPS25H hts221

Fork of SOFT253_Template_Weather_OS_54 by Stage-1 Students SoCEM

Revision:
81:996c0a3319b4
Parent:
80:959151952153
Child:
82:668b51a39148
--- a/MessageLogger/MessageLogger.cpp	Wed May 10 10:02:22 2017 +0000
+++ b/MessageLogger/MessageLogger.cpp	Thu May 11 14:34:53 2017 +0000
@@ -1,15 +1,17 @@
 #include "MessageLogger.h"
+#include "Message.h"
 
 #define SIGNAL_printMessage 2
 
-Mail<string, 16> message_mail;
+
+Mail<Message, 16> message_mail;
 
         // constructor
         MessageLogger::MessageLogger()
         {
             hasError = false;
             messageCount = 0;
-            messageLock = new Mutex();
+            //messageLock = new Mutex();
         }
         
         void MessageLogger::SetThread(Thread* logger)
@@ -25,32 +27,32 @@
             hasError = true;
         }
         
-        string *messageObj;
+        Message *newMsg;
         
-        void MessageLogger::SendMessage(string message)
+        void MessageLogger::SendMessage(char* message)
         {
-             messageLock->lock();
-             messageObj = message_mail.alloc();           
+             messageLock.lock();
+             newMsg = message_mail.alloc();           
                         
-            if (messageObj == NULL) 
+            if (newMsg == NULL) 
             {
                SendError("ERROR: Message queue is full.");
-               messageLock->unlock();
+               messageLock.unlock();
                return;   
             }
             
-            (*messageObj) = message;
+            newMsg->copy(message);
     
-            stat = message_mail.put(messageObj);
+            stat = message_mail.put(newMsg);
             
             //Check if succesful
             if (stat == osErrorResource) 
             {
-                message_mail.free(messageObj);
+                message_mail.free(newMsg);
                 ostringstream error;
-                error << "ERROR CODE: " << stat << ", Failed to retrieve message from queue";
+                error << "ERROR CODE: " << stat << ", Failed to put message into queue";
                 SendError(error.str());
-                messageLock->unlock();
+                messageLock.unlock();
                 return;
             }
             
@@ -58,7 +60,7 @@
             loggingThread->signal_set(SIGNAL_printMessage);
             
             printf("\033[1A\n");
-            messageLock->unlock();
+            messageLock.unlock();
         }
         
         bool MessageLogger::GetError()
@@ -82,27 +84,28 @@
         
         void MessageLogger::PrintError()
         {
-            printf("%s", fatalError.str());
+            printf("%s", fatalError.str().c_str());
             hasError = false;
         }
         
-        string *message;
+        Message *message; 
+        char copyOfString[256];
         
         void MessageLogger::PrintMessage()
         {
-            messageLock->lock();
+            messageLock.lock();
             osEvent evt = message_mail.get();
             
             //Check status
             if (evt.status == osEventMail) 
             {
-                 message = (string*)evt.value.p;   
-                
+                message = (Message*)evt.value.p;  
+                strncpy(copyOfString, message->getText(), 256);
+                message_mail.free(message);
                 // Ask about cout as everyone on the internet recommends it as a type safe version of printf.
                 //std::cout << message; 
-                printf("%s\033[1A\n", (*message));
+                printf("%s\033[2A\n", copyOfString);               
                 
-                message_mail.free(message);
                 messageCount--;
             } 
             else 
@@ -112,5 +115,5 @@
                 SendError(error.str());
             }  
             
-            messageLock->unlock();
+            messageLock.unlock();
         }
\ No newline at end of file