From 2057b70cb7449c6539e35c641d1cc3e71ce78e7a Mon Sep 17 00:00:00 2001
From: andreas <andreas@wellenvogel.de>
Date: Sun, 24 Oct 2021 16:51:47 +0200
Subject: [PATCH] introduce debug log

---
 lib/log/GWLog.cpp | 15 +++++++++++++--
 lib/log/GwLog.h   | 11 ++++++++++-
 src/main.cpp      |  3 ++-
 3 files changed, 25 insertions(+), 4 deletions(-)

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);