From 37c20a348e409cf62d29b5f2ceb3e0995ff69b4e Mon Sep 17 00:00:00 2001 From: liamcottle Date: Sun, 22 Jun 2025 21:35:21 +1200 Subject: [PATCH] add support for storage stats on nrf52 --- examples/companion_radio/DataStore.cpp | 27 ++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/examples/companion_radio/DataStore.cpp b/examples/companion_radio/DataStore.cpp index 21092fa3..d2d00fbd 100644 --- a/examples/companion_radio/DataStore.cpp +++ b/examples/companion_radio/DataStore.cpp @@ -44,6 +44,20 @@ void DataStore::begin() { #include #endif +#if defined(NRF52_PLATFORM) || defined(STM32_PLATFORM) +int _countLfsBlock(void *p, lfs_block_t block){ + lfs_size_t *size = (lfs_size_t*) p; + *size += 1; + return 0; +} + +lfs_ssize_t _getLfsUsedBlockCount() { + lfs_size_t size = 0; + lfs_traverse(InternalFS._getFS(), _countLfsBlock, &size); + return size; +} +#endif + uint32_t DataStore::getStorageUsedKb() const { #if defined(ESP32) return SPIFFS.usedBytes() / 1024; @@ -52,8 +66,13 @@ uint32_t DataStore::getStorageUsedKb() const { info.usedBytes = 0; _fs->info(info); return info.usedBytes / 1024; +#elif defined(NRF52_PLATFORM) || defined(STM32_PLATFORM) + const lfs_config* config = InternalFS._getFS()->cfg; + int usedBlockCount = _getLfsUsedBlockCount(); + int usedBytes = config->block_size * usedBlockCount; + return usedBytes / 1024; #else - return 0; // TODO: InternalFS. method? + return 0; #endif } @@ -65,8 +84,12 @@ uint32_t DataStore::getStorageTotalKb() const { info.totalBytes = 0; _fs->info(info); return info.totalBytes / 1024; +#elif defined(NRF52_PLATFORM) || defined(STM32_PLATFORM) + const lfs_config* config = InternalFS._getFS()->cfg; + int totalBytes = config->block_size * config->block_count; + return totalBytes / 1024; #else - return 0; // TODO: InternalFS. method? + return 0; #endif }