From fae5a1f3a23002cd512025d5f98441340dcaabfe Mon Sep 17 00:00:00 2001 From: Stepan Usatiuk Date: Sun, 6 Dec 2020 16:44:42 +0300 Subject: [PATCH] [ESP] use littlefs --- Firmware/EggbotWireless/include/WebAPI.h | 5 +++-- Firmware/EggbotWireless/platformio.ini | 3 ++- Firmware/EggbotWireless/src/WebAPI.cpp | 28 ++++++++++++++++++++---- 3 files changed, 29 insertions(+), 7 deletions(-) diff --git a/Firmware/EggbotWireless/include/WebAPI.h b/Firmware/EggbotWireless/include/WebAPI.h index d3a6c95..0e933ee 100644 --- a/Firmware/EggbotWireless/include/WebAPI.h +++ b/Firmware/EggbotWireless/include/WebAPI.h @@ -2,9 +2,9 @@ #define WEB_API_H #include -#include #include -#include +#include +#include class WebAPI { private: @@ -16,6 +16,7 @@ class WebAPI { String getContentType(String filename); String getStatusJson(); + public: WebAPI(); void init(); diff --git a/Firmware/EggbotWireless/platformio.ini b/Firmware/EggbotWireless/platformio.ini index 76ce565..47dc2a2 100644 --- a/Firmware/EggbotWireless/platformio.ini +++ b/Firmware/EggbotWireless/platformio.ini @@ -15,7 +15,8 @@ framework = arduino monitor_speed = 115200 board_build.f_cpu = 160000000L upload_resetmethod = nodemcu +board_build.filesystem = littlefs -upload_port=COM6 +upload_port=COM5 lib_deps = ArduinoJson@6.11 \ No newline at end of file diff --git a/Firmware/EggbotWireless/src/WebAPI.cpp b/Firmware/EggbotWireless/src/WebAPI.cpp index a35aa1b..8c9de33 100644 --- a/Firmware/EggbotWireless/src/WebAPI.cpp +++ b/Firmware/EggbotWireless/src/WebAPI.cpp @@ -1,4 +1,5 @@ #include "WebAPI.h" + #include "Config.h" #include "QueueManager.h" @@ -8,6 +9,24 @@ WebAPI::WebAPI() {} float getVin(float r1, float r2, float vout) { return ((r1 + r2) * vout) / r2; } +#include + +const size_t block_size = 8; + +size_t getTotalAvailableMemory() { + umm_info(0, 0); + return ummHeapInfo.freeBlocks * block_size; +} + +size_t getLargestAvailableBlock() { + umm_info(0, 0); + return ummHeapInfo.maxFreeContiguousBlocks * block_size; +} + +float getFragmentation() { + return 100 - getLargestAvailableBlock() * 100.0 / getTotalAvailableMemory(); +} + String WebAPI::getStatusJson() { StaticJsonDocument<256> doc; Status status = executor.status(); @@ -20,6 +39,7 @@ String WebAPI::getStatusJson() { doc["mmS"] = status.mmS; doc["pEng"] = status.pEng; doc["xLim"] = status.xLim; + doc["frag"] = getFragmentation(); doc["batt"] = getVin(battR1, battR2, analogRead(A0) / 1000.0); String out; @@ -58,11 +78,11 @@ bool WebAPI::getFile(String filename) { } String contentType = getContentType(filename); String pathWithGz = filename + ".gz"; - if (SPIFFS.exists(pathWithGz) || SPIFFS.exists(filename)) { - if (SPIFFS.exists(pathWithGz)) { + if (LittleFS.exists(pathWithGz) || LittleFS.exists(filename)) { + if (LittleFS.exists(pathWithGz)) { filename += ".gz"; } - File file = SPIFFS.open(filename, "r"); + File file = LittleFS.open(filename, "r"); server.streamFile(file, contentType); file.close(); return true; @@ -110,7 +130,7 @@ void WebAPI::init() { server.onNotFound(std::bind(&WebAPI::handleNotFound, this)); - SPIFFS.begin(); + LittleFS.begin(); server.begin(); }