From 6cd5e9f4b8b2af1ffd168fb43d51007c314db39c Mon Sep 17 00:00:00 2001 From: samuelbles07 Date: Fri, 6 Dec 2024 04:26:18 +0700 Subject: [PATCH] Handle if spiffs full --- examples/OneOpenAir/OneOpenAir.ino | 17 ++++++++++++++++- src/AgValue.cpp | 13 +++++++++++-- src/AgValue.h | 2 +- 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/examples/OneOpenAir/OneOpenAir.ino b/examples/OneOpenAir/OneOpenAir.ino index 3314b0b..3b95903 100644 --- a/examples/OneOpenAir/OneOpenAir.ino +++ b/examples/OneOpenAir/OneOpenAir.ino @@ -1180,7 +1180,8 @@ int calculateMaxPeriod(int updateInterval) { } void offlineStorageUpdate() { - measurements.saveLocalStorage(*ag); + if (measurements.saveLocalStorage(*ag)) { + // blue ag->ledBar.setColor(0, 0, 255, 0); ag->ledBar.show(); delay(250); @@ -1192,4 +1193,18 @@ void offlineStorageUpdate() { delay(250); ag->ledBar.setColor(0, 0, 0, 0); ag->ledBar.show(); + } else { + // red + ag->ledBar.setColor(255, 0, 0, 0); + ag->ledBar.show(); + delay(250); + ag->ledBar.setColor(0, 0, 0, 0); + ag->ledBar.show(); + delay(250); + ag->ledBar.setColor(255, 0, 0, 0); + ag->ledBar.show(); + delay(250); + ag->ledBar.setColor(0, 0, 0, 0); + ag->ledBar.show(); + } } \ No newline at end of file diff --git a/src/AgValue.cpp b/src/AgValue.cpp index 4ebab16..e55f79b 100644 --- a/src/AgValue.cpp +++ b/src/AgValue.cpp @@ -1077,7 +1077,15 @@ bool Measurements::resetLocalStorage() { return true; } -void Measurements::saveLocalStorage(AirGradient &ag) { +bool Measurements::saveLocalStorage(AirGradient &ag) { + int spiffUsed = (SPIFFS.usedBytes() / SPIFFS.totalBytes()) / 2; + Serial.printf("%d | %d\n", SPIFFS.totalBytes(), SPIFFS.usedBytes()); + Serial.printf("SPIFF used %d%%\n", spiffUsed); + if (spiffUsed > 98) { + Serial.println("SPIFF used already on maximum"); + return false; + } + File file; if (!SPIFFS.exists(FILE_PATH)) { file = SPIFFS.open(FILE_PATH, FILE_APPEND, true); @@ -1089,7 +1097,7 @@ void Measurements::saveLocalStorage(AirGradient &ag) { if (!file) { Serial.println("Failed local storage file path"); - return; + return false; } // Save new measurements @@ -1101,6 +1109,7 @@ void Measurements::saveLocalStorage(AirGradient &ag) { (int)round(_nox.update.avg)); Serial.println("Success save measurements to local storage"); + return true; } char *Measurements::getLocalStorage() { diff --git a/src/AgValue.h b/src/AgValue.h index e50b750..a9c147a 100644 --- a/src/AgValue.h +++ b/src/AgValue.h @@ -143,7 +143,7 @@ public: Configuration &config); bool resetLocalStorage(); - void saveLocalStorage(AirGradient &ag); + bool saveLocalStorage(AirGradient &ag); char *getLocalStorage(); /**