3rd Repo, trying to figure this out.

Dependencies:   LPS25H hts221

Fork of SOFT253_Template_Weather_OS_54 by Stage-1 Students SoCEM

Revision:
75:b44645bbf2d2
Parent:
74:749727490f44
Child:
76:ee1f132e5744
diff -r 749727490f44 -r b44645bbf2d2 MessageLogger/MessageLogger.cpp
--- 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