From eb4a0e3a7c1749926044d281bef78981bcff95af Mon Sep 17 00:00:00 2001 From: jpirnay Date: Mon, 16 Mar 2026 21:25:27 +0100 Subject: [PATCH] Review comments --- lib/hal/HalStorage.cpp | 18 +++++++++++++----- src/network/html/HomePage.html | 14 +++++++------- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/lib/hal/HalStorage.cpp b/lib/hal/HalStorage.cpp index 1828aee5..74a6c87c 100644 --- a/lib/hal/HalStorage.cpp +++ b/lib/hal/HalStorage.cpp @@ -4,6 +4,7 @@ #include // need to be included before SdFat.h for compatibility with FS.h's File class #include #include +#include #include @@ -11,6 +12,9 @@ HalStorage HalStorage::instance; +// Local SdFat instance for volume stats only +static SdFat halStorageSdFat; + HalStorage::HalStorage() { storageMutex = xSemaphoreCreateMutex(); assert(storageMutex != nullptr); @@ -56,21 +60,25 @@ bool HalStorage::ensureDirectoryExists(const char* path) { HAL_STORAGE_WRAPPED_C uint64_t HalStorage::sdTotalBytes() const { StorageLock lock; - if (!SDCard.ready()) return 0; - const auto* vol = FsVolume::cwv(); + // Try to initialize if not already + if (!halStorageSdFat.begin()) return 0; + auto* vol = halStorageSdFat.vol(); if (!vol) return 0; return (uint64_t)vol->clusterCount() * vol->bytesPerCluster(); } uint64_t HalStorage::sdUsedBytes() const { StorageLock lock; - if (!SDCard.ready()) return 0; - const auto* vol = FsVolume::cwv(); + if (!halStorageSdFat.begin()) return 0; + auto* vol = halStorageSdFat.vol(); if (!vol) return 0; const int32_t freeClusters = vol->freeClusterCount(); if (freeClusters < 0) return 0; // error reading FAT + const uint64_t clusterCount = vol->clusterCount(); + uint64_t cappedFreeClusters = freeClusters < 0 ? 0 : (uint64_t)freeClusters; + if (cappedFreeClusters > clusterCount) cappedFreeClusters = clusterCount; const uint64_t bytesPerCluster = vol->bytesPerCluster(); - return ((uint64_t)vol->clusterCount() - freeClusters) * bytesPerCluster; + return (clusterCount - cappedFreeClusters) * bytesPerCluster; } class HalFile::Impl { diff --git a/src/network/html/HomePage.html b/src/network/html/HomePage.html index 895b93c0..79412c0f 100644 --- a/src/network/html/HomePage.html +++ b/src/network/html/HomePage.html @@ -136,13 +136,13 @@