From 3b6b97011b8d6c9ac621d0403261b0bc778cdcae Mon Sep 17 00:00:00 2001 From: Thomas Hooge Date: Mon, 2 Feb 2026 19:40:34 +0100 Subject: [PATCH] Early logging initialization --- include/config.h | 2 ++ src/config.cpp | 27 +++++++++++++++++++++++++++ src/main.cpp | 10 ++++++---- 3 files changed, 35 insertions(+), 4 deletions(-) diff --git a/include/config.h b/include/config.h index e2edae4..edb19c2 100644 --- a/include/config.h +++ b/include/config.h @@ -79,10 +79,12 @@ private: std::map values; std::map defs; void updateValue(const char* key, ConfigType type, ConfigValue newvalue); + ConfigValue getValue(const ConfigDef* def); [[noreturn]] void error_abort() const; public: explicit Config(Preferences& prefs); void load(); + void loadValue(const char* key); void save(); void dump(); diff --git a/src/config.cpp b/src/config.cpp index fcdb24a..0f99e82 100644 --- a/src/config.cpp +++ b/src/config.cpp @@ -24,6 +24,33 @@ Config::Config(Preferences& prefs) abort(); } +ConfigValue Config::getValue(const ConfigDef *def) { + switch (def->type) { + case ConfigType::BYTE: + return (uint8_t)prefs.getUChar(def->key, std::get(def->defval)); + case ConfigType::SHORT: + return (int16_t)prefs.getShort(def->key, std::get(def->defval)); + case ConfigType::INT: + return prefs.getInt(def->key, std::get(def->defval)); + case ConfigType::BOOL: + return prefs.getBool(def->key, std::get(def->defval)); + case ConfigType::FLOAT: + return prefs.getFloat(def->key, std::get(def->defval)); + case ConfigType::CHAR: + return (char)prefs.getChar(def->key, std::get(def->defval)); + case ConfigType::STRING: + return prefs.getString(def->key, std::get(def->defval)); + } + return prefs.getString(def->key, std::get(def->defval)); +} + +void Config::loadValue(const char* key) { + // Load single value, e.g. to receive loglevel early + prefs.begin(PREF_NAME, true); + values[key] = getValue(defs.at(key)); + prefs.end(); +} + void Config::load() { LOGD(TAG, "Loading configuration"); prefs.begin(PREF_NAME, true); diff --git a/src/main.cpp b/src/main.cpp index 931a47a..1dec41b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -214,11 +214,9 @@ void setup() { digitalWrite(RGBLED_G, LOW); digitalWrite(RGBLED_B, LOW); + // early logging initialization LOGI(TAG, "Starting ..."); - - config.load(); - config.dump(); - + config.loadValue("logLevel"); loglevel = config.getByte("logLevel"); if (loglevel > ESP_LOG_VERBOSE) { loglevel = ESP_LOG_VERBOSE; @@ -228,6 +226,10 @@ void setup() { LOGI(TAG, "Setting loglevel to %d", loglevel); esp_log_level_set("*", static_cast(loglevel)); + // configuration from nvs + config.load(); + config.dump(); + keycode[0] = config.getByte("key1"); keycode[1] = config.getByte("key2"); keycode[2] = config.getByte("key3");