diff --git a/src/configmanager.h b/src/configmanager.h index 6c88424..f9dfa3a 100644 --- a/src/configmanager.h +++ b/src/configmanager.h @@ -22,6 +22,9 @@ public: #endif esp_err_t init(const char *ns); + + esp_err_t loadFromFlash(); + //bool erase(); ConfigStatusReturnType reset(); diff --git a/src/configmanager_priv.h b/src/configmanager_priv.h index 8da6d4d..315e6d8 100644 --- a/src/configmanager_priv.h +++ b/src/configmanager_priv.h @@ -12,6 +12,7 @@ #define INSTANTIATE_CONFIGMANAGER_TEMPLATES(Type) \ namespace espconfig { \ template esp_err_t ConfigManager::init(const char *ns); \ + template esp_err_t ConfigManager::loadFromFlash(); \ /* template bool ConfigManager::erase(); */ \ template ConfigStatusReturnType ConfigManager::reset(); \ template ConfigWrapperInterface *ConfigManager::findConfigByKey(std::string_view key); \ @@ -108,7 +109,13 @@ esp_err_t ConfigManager::init(const char *ns) ESP_LOGI(TAG, "initializing NVS took %lldms", std::chrono::floor(after-before).count()); - before = espchrono::millis_clock::now(); + return loadFromFlash(); +} + +template +esp_err_t ConfigManager::loadFromFlash() +{ + const auto before = espchrono::millis_clock::now(); bool success = true; ConfigContainer::callForEveryConfig([&](ConfigWrapperInterface &config){ @@ -120,7 +127,7 @@ esp_err_t ConfigManager::init(const char *ns) return false; // dont abort the loop }); - after = espchrono::millis_clock::now(); + const auto after = espchrono::millis_clock::now(); ESP_LOGI(TAG, "loading all config params took %lldms", std::chrono::floor(after-before).count());