3rd Repo, trying to figure this out.
Fork of SOFT253_Template_Weather_OS_54 by
MessageLogger/MessageLogger.cpp@76:ee1f132e5744, 2017-04-26 (annotated)
- Committer:
- aburch1
- Date:
- Wed Apr 26 10:00:19 2017 +0000
- Revision:
- 76:ee1f132e5744
- Parent:
- 75:b44645bbf2d2
- Child:
- 77:db3384071634
Started using char arrays for strings instead of stringstream objects
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
aburch1 | 74:749727490f44 | 1 | #include "MessageLogger.h" |
aburch1 | 74:749727490f44 | 2 | |
aburch1 | 75:b44645bbf2d2 | 3 | #define SIGNAL_printMessage 2 |
aburch1 | 75:b44645bbf2d2 | 4 | |
aburch1 | 76:ee1f132e5744 | 5 | Mail<string, 16> message_mail; |
aburch1 | 74:749727490f44 | 6 | |
aburch1 | 74:749727490f44 | 7 | // constructor |
aburch1 | 75:b44645bbf2d2 | 8 | MessageLogger::MessageLogger() |
aburch1 | 74:749727490f44 | 9 | { |
aburch1 | 75:b44645bbf2d2 | 10 | hasError = false; |
aburch1 | 75:b44645bbf2d2 | 11 | messageCount = 0; |
aburch1 | 75:b44645bbf2d2 | 12 | } |
aburch1 | 75:b44645bbf2d2 | 13 | |
aburch1 | 75:b44645bbf2d2 | 14 | void MessageLogger::SetThread(Thread* logger) |
aburch1 | 75:b44645bbf2d2 | 15 | { |
aburch1 | 75:b44645bbf2d2 | 16 | loggingThread = logger; |
aburch1 | 74:749727490f44 | 17 | } |
aburch1 | 74:749727490f44 | 18 | |
aburch1 | 74:749727490f44 | 19 | // public methods: |
aburch1 | 76:ee1f132e5744 | 20 | void MessageLogger::SendError(char* errorMessage) |
aburch1 | 74:749727490f44 | 21 | { |
aburch1 | 76:ee1f132e5744 | 22 | fatalError = strcat(errorMessage, "\n\rTerminating Program...\n\r"); |
aburch1 | 75:b44645bbf2d2 | 23 | loggingThread->signal_set(SIGNAL_printMessage); |
aburch1 | 75:b44645bbf2d2 | 24 | hasError = true; |
aburch1 | 74:749727490f44 | 25 | } |
aburch1 | 75:b44645bbf2d2 | 26 | |
aburch1 | 76:ee1f132e5744 | 27 | |
aburch1 | 76:ee1f132e5744 | 28 | |
aburch1 | 76:ee1f132e5744 | 29 | void MessageLogger::SendMessage(char* message) |
aburch1 | 74:749727490f44 | 30 | { |
aburch1 | 76:ee1f132e5744 | 31 | //string messageObj; |
aburch1 | 76:ee1f132e5744 | 32 | //*messageObj = message_mail.alloc(); |
aburch1 | 76:ee1f132e5744 | 33 | //strcpy(&messageObj, message_mail.alloc()); |
aburch1 | 76:ee1f132e5744 | 34 | /* |
aburch1 | 75:b44645bbf2d2 | 35 | if (messageObj == NULL) |
aburch1 | 75:b44645bbf2d2 | 36 | { |
aburch1 | 75:b44645bbf2d2 | 37 | SendError("ERROR: Message queue is full."); |
aburch1 | 75:b44645bbf2d2 | 38 | return; |
aburch1 | 75:b44645bbf2d2 | 39 | } |
aburch1 | 76:ee1f132e5744 | 40 | */ |
aburch1 | 76:ee1f132e5744 | 41 | //strcpy(messageObj, message); |
aburch1 | 75:b44645bbf2d2 | 42 | |
aburch1 | 75:b44645bbf2d2 | 43 | //stat = message_mail.put(messageObj); |
aburch1 | 75:b44645bbf2d2 | 44 | |
aburch1 | 76:ee1f132e5744 | 45 | /* |
aburch1 | 75:b44645bbf2d2 | 46 | //Check if succesful |
aburch1 | 75:b44645bbf2d2 | 47 | if (stat == osErrorResource) |
aburch1 | 75:b44645bbf2d2 | 48 | { |
aburch1 | 75:b44645bbf2d2 | 49 | message_mail.free(messageObj); |
aburch1 | 76:ee1f132e5744 | 50 | char error[50]; |
aburch1 | 76:ee1f132e5744 | 51 | strcat(error, "ERROR CODE: ", evt.status); |
aburch1 | 76:ee1f132e5744 | 52 | strcat(error, ", Failed to add message to queue"); |
aburch1 | 76:ee1f132e5744 | 53 | SendError(error); |
aburch1 | 75:b44645bbf2d2 | 54 | return; |
aburch1 | 75:b44645bbf2d2 | 55 | } |
aburch1 | 75:b44645bbf2d2 | 56 | */ |
aburch1 | 76:ee1f132e5744 | 57 | //messageCount++; |
aburch1 | 76:ee1f132e5744 | 58 | //loggingThread->signal_set(SIGNAL_printMessage); |
aburch1 | 74:749727490f44 | 59 | } |
aburch1 | 75:b44645bbf2d2 | 60 | |
aburch1 | 74:749727490f44 | 61 | bool MessageLogger::GetError() |
aburch1 | 74:749727490f44 | 62 | { |
aburch1 | 75:b44645bbf2d2 | 63 | if(hasError) |
aburch1 | 75:b44645bbf2d2 | 64 | { |
aburch1 | 75:b44645bbf2d2 | 65 | PrintError(); |
aburch1 | 75:b44645bbf2d2 | 66 | return true; |
aburch1 | 75:b44645bbf2d2 | 67 | } |
aburch1 | 75:b44645bbf2d2 | 68 | return false; |
aburch1 | 74:749727490f44 | 69 | } |
aburch1 | 74:749727490f44 | 70 | bool MessageLogger::GetMessage() |
aburch1 | 74:749727490f44 | 71 | { |
aburch1 | 76:ee1f132e5744 | 72 | /* |
aburch1 | 75:b44645bbf2d2 | 73 | if(messageCount > 0) |
aburch1 | 75:b44645bbf2d2 | 74 | { |
aburch1 | 75:b44645bbf2d2 | 75 | PrintMessage(); |
aburch1 | 75:b44645bbf2d2 | 76 | return true; |
aburch1 | 75:b44645bbf2d2 | 77 | } |
aburch1 | 76:ee1f132e5744 | 78 | return false; |
aburch1 | 76:ee1f132e5744 | 79 | */ |
aburch1 | 74:749727490f44 | 80 | } |
aburch1 | 74:749727490f44 | 81 | |
aburch1 | 74:749727490f44 | 82 | void MessageLogger::PrintError() |
aburch1 | 74:749727490f44 | 83 | { |
aburch1 | 76:ee1f132e5744 | 84 | printf(fatalError); |
aburch1 | 74:749727490f44 | 85 | } |
aburch1 | 75:b44645bbf2d2 | 86 | |
aburch1 | 74:749727490f44 | 87 | void MessageLogger::PrintMessage() |
aburch1 | 74:749727490f44 | 88 | { |
aburch1 | 76:ee1f132e5744 | 89 | /* |
aburch1 | 75:b44645bbf2d2 | 90 | osEvent evt = message_mail.get(); |
aburch1 | 74:749727490f44 | 91 | |
aburch1 | 75:b44645bbf2d2 | 92 | //Check status |
aburch1 | 75:b44645bbf2d2 | 93 | if (evt.status == osEventMail) |
aburch1 | 75:b44645bbf2d2 | 94 | { |
aburch1 | 76:ee1f132e5744 | 95 | char* message = (char*)evt.value.p; |
aburch1 | 75:b44645bbf2d2 | 96 | |
aburch1 | 76:ee1f132e5744 | 97 | printf(message); |
aburch1 | 75:b44645bbf2d2 | 98 | |
aburch1 | 75:b44645bbf2d2 | 99 | message_mail.free(message); |
aburch1 | 75:b44645bbf2d2 | 100 | messageCount--; |
aburch1 | 75:b44645bbf2d2 | 101 | } |
aburch1 | 75:b44645bbf2d2 | 102 | else |
aburch1 | 75:b44645bbf2d2 | 103 | { |
aburch1 | 76:ee1f132e5744 | 104 | char* error; |
aburch1 | 76:ee1f132e5744 | 105 | strcat(error, "ERROR CODE: ", evt.status); |
aburch1 | 76:ee1f132e5744 | 106 | strcat(error, ", Failed to retrieve message from queue"); |
aburch1 | 76:ee1f132e5744 | 107 | SendError(error); |
aburch1 | 75:b44645bbf2d2 | 108 | } |
aburch1 | 75:b44645bbf2d2 | 109 | */ |
aburch1 | 74:749727490f44 | 110 | } |