diff --git a/lib/log/GWLog.cpp b/lib/log/GWLog.cpp index dcc71b6..5c3aad6 100644 --- a/lib/log/GWLog.cpp +++ b/lib/log/GWLog.cpp @@ -1,7 +1,8 @@ #include "GwLog.h" -GwLog::GwLog(bool logSerial){ +GwLog::GwLog(bool logSerial, int level){ this->logSerial=logSerial; + logLevel=level; } void GwLog::logString(const char *fmt,...){ va_list args; @@ -11,4 +12,14 @@ void GwLog::logString(const char *fmt,...){ Serial.print("LOG: "); Serial.println(buffer); } -} \ No newline at end of file +} +void GwLog::logDebug(int level,const char *fmt,...){ + if (level > logLevel) return; + va_list args; + va_start(args,fmt); + vsnprintf(buffer,99,fmt,args); + if (logSerial){ + Serial.print("LOG: "); + Serial.println(buffer); + } +} diff --git a/lib/log/GwLog.h b/lib/log/GwLog.h index e9ad797..ed25841 100644 --- a/lib/log/GwLog.h +++ b/lib/log/GwLog.h @@ -5,8 +5,17 @@ class GwLog{ private: char buffer[100]; bool logSerial=false; + int logLevel=1; public: - GwLog(bool logSerial); + static const int LOG=1; + static const int ERROR=0; + static const int DEBUG=3; + static const int TRACE=2; + GwLog(bool logSerial,int level=LOG); void logString(const char *fmt,...); + void logDebug(int level, const char *fmt,...); + int isActive(int level){return level <= logLevel;}; }; +#define LOG_DEBUG(level,fmt,...){ if (logger->isActive(level)) logger->logDebug(level,fmt,__VA_ARGS__);} + #endif \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index f5cb80b..778d1cd 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -37,7 +37,8 @@ #include "GwBoatData.h" -GwLog logger(LOG_SERIAL); + +GwLog logger(LOG_SERIAL,GwLog::DEBUG); GwConfigHandler config(&logger); GwWifi gwWifi(&config,&logger); GwSocketServer socketServer(&config,&logger);