3rd Repo, trying to figure this out.

Dependencies:   LPS25H hts221

Fork of SOFT253_Template_Weather_OS_54 by Stage-1 Students SoCEM

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());
            }  
            */
        }