mirror of
https://github.com/espressif/esp-idf.git
synced 2025-12-02 07:09:33 +01:00
nvs:Add functions for calculating used/free entries
Users needs functions to count the number of free and used entries. 1. `nvs_get_stats()` This function return structure of statistic about the uspace NVS. (Struct: used_entries, free_entries, total_entries and namespace_count) 2. `nvs_get_used_entry_count()` The second function return amount of entries in the namespace (by handler) 3. Added unit tests. Closes TW<12282>
This commit is contained in:
committed by
Konstantin Kondrashov
parent
bdadd95dd7
commit
c93626db3f
@@ -291,4 +291,37 @@ void Storage::debugCheck()
|
||||
}
|
||||
#endif //ESP_PLATFORM
|
||||
|
||||
esp_err_t Storage::fillStats(nvs_stats_t& nvsStats)
|
||||
{
|
||||
nvsStats.namespace_count = mNamespaces.size();
|
||||
return mPageManager.fillStats(nvsStats);
|
||||
}
|
||||
|
||||
esp_err_t Storage::calcEntriesInNamespace(uint8_t nsIndex, size_t& usedEntries)
|
||||
{
|
||||
usedEntries = 0;
|
||||
|
||||
if (mState != StorageState::ACTIVE) {
|
||||
return ESP_ERR_NVS_NOT_INITIALIZED;
|
||||
}
|
||||
|
||||
for (auto it = std::begin(mPageManager); it != std::end(mPageManager); ++it) {
|
||||
size_t itemIndex = 0;
|
||||
Item item;
|
||||
while (true) {
|
||||
auto err = it->findItem(nsIndex, ItemType::ANY, nullptr, itemIndex, item);
|
||||
if (err == ESP_ERR_NVS_NOT_FOUND) {
|
||||
break;
|
||||
}
|
||||
else if (err != ESP_OK) {
|
||||
return err;
|
||||
}
|
||||
usedEntries += item.span;
|
||||
itemIndex += item.span;
|
||||
if(itemIndex >= it->ENTRY_COUNT) break;
|
||||
}
|
||||
}
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user