Committer:
paul_harris77
Date:
Fri Jun 02 16:54:30 2017 +0000
Revision:
0:23f7bb983ae0
Child:
2:f1b41864f865
First release.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
paul_harris77 0:23f7bb983ae0 1 //*********************************************************************************************************************
paul_harris77 0:23f7bb983ae0 2 // LOGGER LIBRARY - HEADER FILE
paul_harris77 0:23f7bb983ae0 3 // PAUL HARRIS, OCTOBER 2016
paul_harris77 0:23f7bb983ae0 4 // *********************************************************************************************************************
paul_harris77 0:23f7bb983ae0 5
paul_harris77 0:23f7bb983ae0 6 #ifndef LOGGER_H
paul_harris77 0:23f7bb983ae0 7 #define LOGGER_H
paul_harris77 0:23f7bb983ae0 8
paul_harris77 0:23f7bb983ae0 9 #include "mbed.h"
paul_harris77 0:23f7bb983ae0 10 #include <vector>
paul_harris77 0:23f7bb983ae0 11 #include <stdio.h>
paul_harris77 0:23f7bb983ae0 12 #include <stdarg.h>
paul_harris77 0:23f7bb983ae0 13
paul_harris77 0:23f7bb983ae0 14 #include "logger_defs.h"
paul_harris77 0:23f7bb983ae0 15 #include "MODSERIAL.h"
paul_harris77 0:23f7bb983ae0 16
paul_harris77 0:23f7bb983ae0 17
paul_harris77 0:23f7bb983ae0 18 class cLogger{
paul_harris77 0:23f7bb983ae0 19 public:
paul_harris77 0:23f7bb983ae0 20 //***********Begin constructor************
paul_harris77 0:23f7bb983ae0 21 cLogger(MODSERIAL* std_out);
paul_harris77 0:23f7bb983ae0 22 //***********End constructor************
paul_harris77 0:23f7bb983ae0 23
paul_harris77 0:23f7bb983ae0 24 //***********Begin Public member functions************
paul_harris77 0:23f7bb983ae0 25
paul_harris77 0:23f7bb983ae0 26 //Registers a log area with the logger with specified default log level and prefix
paul_harris77 0:23f7bb983ae0 27 void registerLogArea(eLogArea area, eLogLevel defaultLevel, const char* log_prefix);
paul_harris77 0:23f7bb983ae0 28 //Log the specified formatted log text given the text's specified area and level (printf like formatting variable arguments)
paul_harris77 0:23f7bb983ae0 29 void log(eLogArea area, eLogLevel text_level, char* log_text, ...);
paul_harris77 0:23f7bb983ae0 30 //Log plain formatted text, bypassing any logger level control and without an area prefix (warning: will always be logged!)
paul_harris77 0:23f7bb983ae0 31 void plainText(char* log_text, ...);
paul_harris77 0:23f7bb983ae0 32 //Print a new line
paul_harris77 0:23f7bb983ae0 33 void newLine(void);
paul_harris77 0:23f7bb983ae0 34 //Set the specified log area level
paul_harris77 0:23f7bb983ae0 35 void setLogLevel(eLogArea area, eLogLevel level);
paul_harris77 0:23f7bb983ae0 36 //Set all log areas to the specified log level
paul_harris77 0:23f7bb983ae0 37 void setAllAreaLevels(eLogLevel level);
paul_harris77 0:23f7bb983ae0 38 //Set the specified log area text prefix
paul_harris77 0:23f7bb983ae0 39 void setLogPrefix(eLogArea area, const char* log_prefix);
paul_harris77 0:23f7bb983ae0 40
paul_harris77 0:23f7bb983ae0 41 //***********End Public member functions************
paul_harris77 0:23f7bb983ae0 42
paul_harris77 0:23f7bb983ae0 43 private:
paul_harris77 0:23f7bb983ae0 44
paul_harris77 0:23f7bb983ae0 45 //***********Begin Private member functions************
paul_harris77 0:23f7bb983ae0 46
paul_harris77 0:23f7bb983ae0 47 //Returns the index in the log_list of the given log area
paul_harris77 0:23f7bb983ae0 48 int getLogListIndex(eLogArea area);
paul_harris77 0:23f7bb983ae0 49
paul_harris77 0:23f7bb983ae0 50 //Print formatted log text with its associated log level prefix
paul_harris77 0:23f7bb983ae0 51 void printf(eLogArea area, char* log_text, va_list args);
paul_harris77 0:23f7bb983ae0 52
paul_harris77 0:23f7bb983ae0 53 //***********End Private member functions************
paul_harris77 0:23f7bb983ae0 54
paul_harris77 0:23f7bb983ae0 55
paul_harris77 0:23f7bb983ae0 56 //***********Begin Private member variables************
paul_harris77 0:23f7bb983ae0 57
paul_harris77 0:23f7bb983ae0 58 //Pointer to the MODSERIAL object to use for log output
paul_harris77 0:23f7bb983ae0 59 MODSERIAL* pStdOut;
paul_harris77 0:23f7bb983ae0 60
paul_harris77 0:23f7bb983ae0 61 //Mutex for making MODSERIAL printf thread safe
paul_harris77 0:23f7bb983ae0 62 Mutex stdio_mutex;
paul_harris77 0:23f7bb983ae0 63
paul_harris77 0:23f7bb983ae0 64 //Structure to hold log areas and their associated levels/prefixes
paul_harris77 0:23f7bb983ae0 65 struct log_struct
paul_harris77 0:23f7bb983ae0 66 {
paul_harris77 0:23f7bb983ae0 67 eLogArea area;
paul_harris77 0:23f7bb983ae0 68 eLogLevel level;
paul_harris77 0:23f7bb983ae0 69 const char* prefix;
paul_harris77 0:23f7bb983ae0 70 };
paul_harris77 0:23f7bb983ae0 71
paul_harris77 0:23f7bb983ae0 72 //Type def of log_struct structure
paul_harris77 0:23f7bb983ae0 73 typedef struct log_struct log_t;
paul_harris77 0:23f7bb983ae0 74
paul_harris77 0:23f7bb983ae0 75 //Vector containers to hold vector of log area structures
paul_harris77 0:23f7bb983ae0 76 std::vector<log_t> log_list;
paul_harris77 0:23f7bb983ae0 77
paul_harris77 0:23f7bb983ae0 78 //***********End Private member variables************
paul_harris77 0:23f7bb983ae0 79
paul_harris77 0:23f7bb983ae0 80 };
paul_harris77 0:23f7bb983ae0 81
paul_harris77 0:23f7bb983ae0 82 //Globally declare a logger object for use in all modules. To be created/defined in main.cpp.
paul_harris77 0:23f7bb983ae0 83 extern cLogger logger;
paul_harris77 0:23f7bb983ae0 84 #endif