Как получить длину / размер значения NVS на ESP32

Вы можете найти размер значения, хранящегося в ESP32 NVS, выполнив nvs_get_blob() с length, установленным на указатель на переменную с содержимым 0, и out_value, установленным на nullptr. nvs_get_str() также работает, единственное отличие — тип аргумента out_value, что вообще не имеет значения.

Легче понять, если вы посмотрите на эту пример функции:

nvs_get_size.cpp
size_t NVSGetSize(nvs_handle_t nvs, const char* key) {
    esp_err_t err;
    size_t valueSize = 0;
    if((err = nvs_get_str(nvs, key, nullptr, &valueSize)) != ESP_OK) {
        if(err == ESP_ERR_NVS_NOT_FOUND) {
            // Not found, no error
            return 0;
        } else {
             // Actual error, log & return 0
            printf("Failed to get size of NVS key %s: %s\r\n", key, esp_err_to_name(err));
            return 0;
        }
    }
    return valueSize;
}

Пример использования

Это предполагает, что вы настроили myNvs, как мы показали в нашем предыдущем посте Как инициализировать NVS на ESP32

nvs_usage_example.cpp
size_t myKeySize = NVSGetSize(myNvs, "MyKey");

Check out similar posts by category: ESP8266/ESP32