Como obter comprimento / tamanho de valor NVS no ESP32

Você pode encontrar o tamanho de um valor armazenado no NVS do ESP32 executando nvs_get_blob() com length definido como um ponteiro para uma variável com conteúdo 0, e outValue definido como nullptr. nvs_get_str() também funciona, a única diferença é o tipo do argumento outValue, o que não importa nada.

É mais fácil entender se você olhar para esta função de exemplo:

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;
}

Exemplo de uso

Isso assume que você configurou myNvs como mostramos em nosso post anterior Como inicializar NVS no ESP32

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

Check out similar posts by category: ESP8266/ESP32