diff --git a/firmware/esp32/xterra-controller/bms.cpp b/firmware/esp32/xterra-controller/bms.cpp index 46e08d1..07f7d52 100644 --- a/firmware/esp32/xterra-controller/bms.cpp +++ b/firmware/esp32/xterra-controller/bms.cpp @@ -2,6 +2,7 @@ #include #include +#include "logger.h" static const char* BMS_ADDRESS = "a5:c2:37:2c:05:dc"; static const char* BMS_SERVICE_UUID = "ff00"; @@ -253,14 +254,16 @@ static bool parseBasicInfo() { bmsData.temperatureF = tempF; bmsData.valid = true; - Serial.print("BMS: SOC "); - Serial.print(bmsData.soc); - Serial.print("%, V "); - Serial.print(bmsData.voltage); - Serial.print(", A "); - Serial.print(bmsData.current); - Serial.print(", Ah "); - Serial.println(bmsData.remainingAh); + if (currentLogLevel >= LOG_DEBUG) { + Serial.print("BMS: SOC "); + Serial.print(bmsData.soc); + Serial.print("%, V "); + Serial.print(bmsData.voltage); + Serial.print(", A "); + Serial.print(bmsData.current); + Serial.print(", Ah "); + Serial.println(bmsData.remainingAh); + } return true; } @@ -312,15 +315,17 @@ static bool parseCellVoltages() { bmsData.cellDeltaMv = (int)((maxV - minV) * 1000.0 + 0.5); bmsData.cellsValid = true; - Serial.print("BMS: Cells "); - Serial.print(cellsReported); - Serial.print(", min "); - Serial.print(minV, 3); - Serial.print("V, max "); - Serial.print(maxV, 3); - Serial.print("V, delta "); - Serial.print(bmsData.cellDeltaMv); - Serial.println("mV"); + if (currentLogLevel >= LOG_DEBUG) { + Serial.print("BMS: Cells "); + Serial.print(cellsReported); + Serial.print(", min "); + Serial.print(minV, 3); + Serial.print("V, max "); + Serial.print(maxV, 3); + Serial.print("V, delta "); + Serial.print(bmsData.cellDeltaMv); + Serial.println("mV"); + } return true; } diff --git a/firmware/esp32/xterra-controller/logger.cpp b/firmware/esp32/xterra-controller/logger.cpp new file mode 100644 index 0000000..e28cf5e --- /dev/null +++ b/firmware/esp32/xterra-controller/logger.cpp @@ -0,0 +1,19 @@ +#include "logger.h" + +LogLevel currentLogLevel = LOG_INFO; + +void setLogLevel(LogLevel level) { + currentLogLevel = level; +} + +void logInfo(const String& message) { + if (currentLogLevel >= LOG_INFO) { + Serial.println(message); + } +} + +void logDebug(const String& message) { + if (currentLogLevel >= LOG_DEBUG) { + Serial.println(message); + } +} diff --git a/firmware/esp32/xterra-controller/logger.h b/firmware/esp32/xterra-controller/logger.h new file mode 100644 index 0000000..6b0ad08 --- /dev/null +++ b/firmware/esp32/xterra-controller/logger.h @@ -0,0 +1,15 @@ +#pragma once + +#include + +enum LogLevel { + LOG_QUIET = 0, + LOG_INFO = 1, + LOG_DEBUG = 2 +}; + +extern LogLevel currentLogLevel; + +void setLogLevel(LogLevel level); +void logInfo(const String& message); +void logDebug(const String& message); diff --git a/firmware/esp32/xterra-controller/xterra-controller.ino b/firmware/esp32/xterra-controller/xterra-controller.ino index e2aa43d..c595b40 100644 --- a/firmware/esp32/xterra-controller/xterra-controller.ino +++ b/firmware/esp32/xterra-controller/xterra-controller.ino @@ -10,6 +10,7 @@ #include "alarms.h" #include "system_status.h" #include "app_config.h" +#include "logger.h" WebServer server(80); HardwareSerial DashboardSerial(2); @@ -303,6 +304,24 @@ void handleDebugSerial() { return; } + if (command == "log quiet") { + setLogLevel(LOG_QUIET); + Serial.println("OK log level quiet"); + return; + } + + if (command == "log info") { + setLogLevel(LOG_INFO); + Serial.println("OK log level info"); + return; + } + + if (command == "log debug") { + setLogLevel(LOG_DEBUG); + Serial.println("OK log level debug"); + return; + } + if (command == "factory reset") { factoryResetConfig(); Serial.println("OK factory reset complete"); @@ -702,6 +721,6 @@ void loop() { if (millis() - lastSensorUpdate > 5000) { updateSensors(); lastSensorUpdate = millis(); - Serial.println("Sensor Update"); + logDebug("Sensor Update"); } }