diff --git a/main/include/nconfig.h b/main/include/nconfig.h index d479596..63a2d87 100644 --- a/main/include/nconfig.h +++ b/main/include/nconfig.h @@ -31,6 +31,8 @@ enum nconfig_type NCONFIG_TYPE_MAX, }; +bool nconfig_value_is_not_set(enum nconfig_type type); + // Write config esp_err_t nconfig_write(enum nconfig_type type, const char* data); diff --git a/main/nconfig/nconfig.c b/main/nconfig/nconfig.c index 0ed4911..6f80c85 100644 --- a/main/nconfig/nconfig.c +++ b/main/nconfig/nconfig.c @@ -52,9 +52,7 @@ esp_err_t init_nconfig() for (int i = 0; i < sizeof(default_values) / sizeof(default_values[0]); ++i) { // check key is not exist or value is null - size_t len = 0; - nconfig_get_str_len(default_values[i].type, &len); - if (len <= 1) // nconfig_get_str_len return err or value is '\0' + if (nconfig_value_is_not_set(default_values[i].type)) { if (nconfig_write(default_values[i].type, default_values[i].value) != ESP_OK) // if nconfig write fail, system panic @@ -65,6 +63,13 @@ esp_err_t init_nconfig() return ESP_OK; } +bool nconfig_value_is_not_set(enum nconfig_type type) +{ + size_t len = 0; + esp_err_t err = nconfig_get_str_len(type, &len); + return (err != ESP_OK || len <= 1); +} + esp_err_t nconfig_write(enum nconfig_type type, const char* data) { return nvs_set_str(handle, keys[type], data);