1
0
mirror of https://github.com/s00500/ESPUI.git synced 2024-11-22 04:00:55 +00:00

Merge pull request #204 from ncmreynolds/main

Several LittleFS changes, fixes #192, adds option to not format LittleFS
This commit is contained in:
Lukas Bachschwell 2022-10-24 12:59:52 +02:00 committed by GitHub
commit e3ccc216bb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 253 additions and 30 deletions

View File

@ -3,7 +3,12 @@
void setup(void) void setup(void)
{ {
Serial.begin(115200); Serial.begin(115200);
ESPUI.prepareFileSystem(); ESPUI.setVerbosity(Verbosity::Verbose); //Enable verbose output so you see the files in LittleFS
delay(500); //Delay to allow Serial Monitor to start after a reset
Serial.println(F("\nPreparing filesystem with ESPUI resources"));
ESPUI.prepareFileSystem(); //Copy across current version of ESPUI resources
Serial.println(F("Done, files..."));
ESPUI.list(); //List all files on LittleFS, for info
} }
void loop() void loop()

View File

@ -24,7 +24,15 @@ void listDir(const char* dirname, uint8_t levels)
} }
#endif #endif
#if defined(ESP32)
#if (ESP_IDF_VERSION_MAJOR == 4 && ESP_IDF_VERSION_MINOR >= 4) || ESP_IDF_VERSION_MAJOR > 4
File root = LittleFS.open(dirname); File root = LittleFS.open(dirname);
#else
File root = LITTLEFS.open(dirname);
#endif
#else
File root = LittleFS.open(dirname);
#endif
if (!root) if (!root)
{ {
@ -66,7 +74,11 @@ void listDir(const char* dirname, uint8_t levels)
if (levels) if (levels)
{ {
#if (ESP_IDF_VERSION_MAJOR == 4 && ESP_IDF_VERSION_MINOR >= 4) || ESP_IDF_VERSION_MAJOR > 4
listDir(file.path(), levels - 1);
#else
listDir(file.name(), levels - 1); listDir(file.name(), levels - 1);
#endif
} }
} }
else else
@ -89,50 +101,109 @@ void listDir(const char* dirname, uint8_t levels)
void listDir(const char* dirname, uint8_t levels) void listDir(const char* dirname, uint8_t levels)
{ {
// ignoring levels for esp8266 #if defined(DEBUG_ESPUI)
if (ESPUI.verbosity)
{
Serial.printf_P(PSTR("Listing directory: %s\n"), dirname); Serial.printf_P(PSTR("Listing directory: %s\n"), dirname);
}
#endif
String str = ""; Dir dir = LittleFS.openDir(dirname);
Dir dir = LittleFS.openDir("/");
while (dir.next()) while (dir.next())
{
if (dir.isDirectory())
{
#if defined(DEBUG_ESPUI)
if (ESPUI.verbosity)
{
Serial.print(F(" DIR : "));
Serial.println(dir.fileName());
}
#endif
if (levels)
{
File file = dir.openFile("r");
listDir(file.fullName(), levels - 1);
file.close();
}
}
else
{
#if defined(DEBUG_ESPUI)
if (ESPUI.verbosity)
{ {
Serial.print(F(" FILE: ")); Serial.print(F(" FILE: "));
Serial.print(dir.fileName()); Serial.print(dir.fileName());
Serial.print(F(" SIZE: ")); Serial.print(F(" SIZE: "));
Serial.println(dir.fileSize()); Serial.println(dir.fileSize());
} }
#endif
}
}
} }
#endif #endif
void ESPUIClass::list() void ESPUIClass::list()
{ {
#if defined(ESP32)
#if (ESP_IDF_VERSION_MAJOR == 4 && ESP_IDF_VERSION_MINOR >= 4) || ESP_IDF_VERSION_MAJOR > 4
if (!LittleFS.begin())
#else
if (!LITTLEFS.begin())
#endif
{
Serial.println(F("LITTLEFS Mount Failed"));
return;
}
#else
if (!LittleFS.begin()) if (!LittleFS.begin())
{ {
Serial.println(F("LittleFS Mount Failed")); Serial.println(F("LittleFS Mount Failed"));
return; return;
} }
#endif
listDir("/", 1); listDir("/", 1);
#if defined(ESP32) #if defined(ESP32)
Serial.println(LittleFS.totalBytes()); Serial.print(F("Total KB: "));
Serial.println(LittleFS.usedBytes()); #if (ESP_IDF_VERSION_MAJOR == 4 && ESP_IDF_VERSION_MINOR >= 4) || ESP_IDF_VERSION_MAJOR > 4
Serial.println(LittleFS.totalBytes()/1024);
#else
Serial.println(LITTLEFS.totalBytes()/1024);
#endif
Serial.print(F("Used KB: "));
#if (ESP_IDF_VERSION_MAJOR == 4 && ESP_IDF_VERSION_MINOR >= 4) || ESP_IDF_VERSION_MAJOR > 4
Serial.println(LittleFS.usedBytes()/1024);
#else
Serial.println(LITTLEFS.usedBytes()/1024);
#endif
#else #else
FSInfo fs_info; FSInfo fs_info;
LittleFS.info(fs_info); LittleFS.info(fs_info);
Serial.println(fs_info.totalBytes); Serial.print(F("Total KB: "));
Serial.println(fs_info.usedBytes); Serial.println(fs_info.totalBytes/1024);
Serial.print(F("Used KB: "));
Serial.println(fs_info.usedBytes/1024);
#endif #endif
} }
void deleteFile(const char* path) void deleteFile(const char* path)
{ {
#if defined(ESP32)
#if (ESP_IDF_VERSION_MAJOR == 4 && ESP_IDF_VERSION_MINOR >= 4) || ESP_IDF_VERSION_MAJOR > 4
bool exists = LittleFS.exists(path); bool exists = LittleFS.exists(path);
#else
bool exists = LITTLEFS.exists(path);
#endif
#else
bool exists = LittleFS.exists(path);
#endif
if (!exists) if (!exists)
{ {
#if defined(DEBUG_ESPUI) #if defined(DEBUG_ESPUI)
@ -152,7 +223,15 @@ void deleteFile(const char* path)
} }
#endif #endif
#if defined(ESP32)
#if (ESP_IDF_VERSION_MAJOR == 4 && ESP_IDF_VERSION_MINOR >= 4) || ESP_IDF_VERSION_MAJOR > 4
bool didRemove = LittleFS.remove(path); bool didRemove = LittleFS.remove(path);
#else
bool didRemove = LITTLEFS.remove(path);
#endif
#else
bool didRemove = LittleFS.remove(path);
#endif
if (didRemove) if (didRemove)
{ {
#if defined(DEBUG_ESPUI) #if defined(DEBUG_ESPUI)
@ -182,7 +261,15 @@ void writeFile(const char* path, const char* data)
} }
#endif #endif
#if defined(ESP32)
#if (ESP_IDF_VERSION_MAJOR == 4 && ESP_IDF_VERSION_MINOR >= 4) || ESP_IDF_VERSION_MAJOR > 4
File file = LittleFS.open(path, FILE_WRITE); File file = LittleFS.open(path, FILE_WRITE);
#else
File file = LITTLEFS.open(path, FILE_WRITE);
#endif
#else
File file = LittleFS.open(path, FILE_WRITE);
#endif
if (!file) if (!file)
{ {
#if defined(DEBUG_ESPUI) #if defined(DEBUG_ESPUI)
@ -243,7 +330,7 @@ void writeFile(const char* path, const char* data)
// end LITTLEFS functions // end LITTLEFS functions
void ESPUIClass::prepareFileSystem() void ESPUIClass::prepareFileSystem(bool format)
{ {
// this function should only be used once // this function should only be used once
@ -255,19 +342,41 @@ void ESPUIClass::prepareFileSystem()
#endif #endif
#if defined(ESP32) #if defined(ESP32)
LittleFS.format(); #if (ESP_IDF_VERSION_MAJOR == 4 && ESP_IDF_VERSION_MINOR >= 4) || ESP_IDF_VERSION_MAJOR > 4
if(!LittleFS.begin(false)) //Test for an already formatted LittleFS by a mount failure
if (!LittleFS.begin(true)) #else
if(!LITTLEFS.begin(false)) //Test for an already formatted LittleFS by a mount failure
#endif
{
#if (ESP_IDF_VERSION_MAJOR == 4 && ESP_IDF_VERSION_MINOR >= 4) || ESP_IDF_VERSION_MAJOR > 4
if(!LittleFS.begin(true)) //Attempt to format LittleFS
#else
if(!LITTLEFS.begin(true)) //Attempt to format LittleFS
#endif
{ {
#if defined(DEBUG_ESPUI) #if defined(DEBUG_ESPUI)
if (verbosity) if (verbosity)
{ {
Serial.println(F("LittleFS Mount Failed")); Serial.println(F("LittleFS Format Failed"));
} }
#endif #endif
return; return;
} }
}
else if(format)
{
#if (ESP_IDF_VERSION_MAJOR == 4 && ESP_IDF_VERSION_MINOR >= 4) || ESP_IDF_VERSION_MAJOR > 4
LittleFS.format();
#else
LITTLEFS.format();
#endif
#if defined(DEBUG_ESPUI)
if (verbosity)
{
Serial.println(F("LittleFS Formatted"));
}
#endif
}
#if defined(DEBUG_ESPUI) #if defined(DEBUG_ESPUI)
if (verbosity) if (verbosity)
@ -278,13 +387,45 @@ void ESPUIClass::prepareFileSystem()
#endif #endif
#else #else
if (!LittleFS.begin()) //Test for an already formatted LittleFS by a mount failure
{
if(LittleFS.format()) //Attempt to format LittleFS
{
#if defined(DEBUG_ESPUI)
if (verbosity)
{
Serial.println(F("LittleFS Formatted"));
}
#endif
}
else
{
#if defined(DEBUG_ESPUI)
if (verbosity)
{
Serial.println(F("LittleFS Mount Failed"));
}
#endif
return;
}
}
else if(format)
{
LittleFS.format(); LittleFS.format();
LittleFS.begin(); #if defined(DEBUG_ESPUI)
if (verbosity)
{
Serial.println(F("LittleFS Formatted"));
}
#endif
}
#if defined(DEBUG_ESPUI) #if defined(DEBUG_ESPUI)
if (verbosity) if (verbosity)
{ {
Serial.println(F("LITTLEFS Mount ESP8266 Done")); listDir("/", 1);
Serial.println(F("LittleFS Mount ESP8266 Done"));
} }
#endif #endif
@ -309,6 +450,33 @@ void ESPUIClass::prepareFileSystem()
#endif #endif
// Now write // Now write
#ifdef ESP32
#if (ESP_IDF_VERSION_MAJOR == 4 && ESP_IDF_VERSION_MINOR >= 4) || ESP_IDF_VERSION_MAJOR > 4
writeFile("/index.htm", HTML_INDEX);
LittleFS.mkdir("/css");
writeFile("/css/style.css", CSS_STYLE);
writeFile("/css/normalize.css", CSS_NORMALIZE);
LittleFS.mkdir("/js");
writeFile("/js/zepto.min.js", JS_ZEPTO);
writeFile("/js/controls.js", JS_CONTROLS);
writeFile("/js/slider.js", JS_SLIDER);
writeFile("/js/graph.js", JS_GRAPH);
writeFile("/js/tabbedcontent.js", JS_TABBEDCONTENT);
#else
writeFile("/index.htm", HTML_INDEX);
LITTLEFS.mkdir("/css");
writeFile("/css/style.css", CSS_STYLE);
writeFile("/css/normalize.css", CSS_NORMALIZE);
LITTLEFS.mkdir("/js");
writeFile("/js/zepto.min.js", JS_ZEPTO);
writeFile("/js/controls.js", JS_CONTROLS);
writeFile("/js/slider.js", JS_SLIDER);
writeFile("/js/graph.js", JS_GRAPH);
writeFile("/js/tabbedcontent.js", JS_TABBEDCONTENT);
#endif
#else
writeFile("/index.htm", HTML_INDEX); writeFile("/index.htm", HTML_INDEX);
writeFile("/css/style.css", CSS_STYLE); writeFile("/css/style.css", CSS_STYLE);
@ -320,6 +488,7 @@ void ESPUIClass::prepareFileSystem()
writeFile("/js/graph.js", JS_GRAPH); writeFile("/js/graph.js", JS_GRAPH);
writeFile("/js/tabbedcontent.js", JS_TABBEDCONTENT); writeFile("/js/tabbedcontent.js", JS_TABBEDCONTENT);
#endif
#if defined(DEBUG_ESPUI) #if defined(DEBUG_ESPUI)
if (verbosity) if (verbosity)
@ -339,7 +508,16 @@ void ESPUIClass::prepareFileSystem()
#endif #endif
#if defined(ESP32)
#if (ESP_IDF_VERSION_MAJOR == 4 && ESP_IDF_VERSION_MINOR >= 4) || ESP_IDF_VERSION_MAJOR > 4
LittleFS.end(); LittleFS.end();
#else
LITTLEFS.end();
#endif
#else
LittleFS.end();
#endif
} }
// Handle Websockets Communication // Handle Websockets Communication
@ -970,7 +1148,15 @@ void ESPUIClass::beginLITTLEFS(const char* _title, const char* username, const c
server = new AsyncWebServer(port); server = new AsyncWebServer(port);
ws = new AsyncWebSocket("/ws"); ws = new AsyncWebSocket("/ws");
#if defined(ESP32)
#if (ESP_IDF_VERSION_MAJOR == 4 && ESP_IDF_VERSION_MINOR >= 4) || ESP_IDF_VERSION_MAJOR > 4
bool fsBegin = LittleFS.begin(); bool fsBegin = LittleFS.begin();
#else
bool fsBegin = LITTLEFS.begin();
#endif
#else
bool fsBegin = LittleFS.begin();
#endif
if (!fsBegin) if (!fsBegin)
{ {
#if defined(DEBUG_ESPUI) #if defined(DEBUG_ESPUI)
@ -991,7 +1177,15 @@ void ESPUIClass::beginLITTLEFS(const char* _title, const char* username, const c
} }
#endif #endif
#if defined(ESP32)
#if (ESP_IDF_VERSION_MAJOR == 4 && ESP_IDF_VERSION_MINOR >= 4) || ESP_IDF_VERSION_MAJOR > 4
bool indexExists = LittleFS.exists("/index.htm"); bool indexExists = LittleFS.exists("/index.htm");
#else
bool indexExists = LITTLEFS.exists("/index.htm");
#endif
#else
bool indexExists = LittleFS.exists("/index.htm");
#endif
if (!indexExists) if (!indexExists)
{ {
#if defined(DEBUG_ESPUI) #if defined(DEBUG_ESPUI)
@ -1017,11 +1211,27 @@ void ESPUIClass::beginLITTLEFS(const char* _title, const char* username, const c
{ {
ws->setAuthentication(basicAuthUsername, basicAuthPassword); ws->setAuthentication(basicAuthUsername, basicAuthPassword);
} }
#if defined(ESP32)
#if (ESP_IDF_VERSION_MAJOR == 4 && ESP_IDF_VERSION_MINOR >= 4) || ESP_IDF_VERSION_MAJOR > 4
server->serveStatic("/", LittleFS, "/").setDefaultFile("index.htm").setAuthentication(username, password); server->serveStatic("/", LittleFS, "/").setDefaultFile("index.htm").setAuthentication(username, password);
#else
server->serveStatic("/", LITTLEFS, "/").setDefaultFile("index.htm").setAuthentication(username, password);
#endif
#else
server->serveStatic("/", LittleFS, "/").setDefaultFile("index.htm").setAuthentication(username, password);
#endif
} }
else else
{ {
#if defined(ESP32)
#if (ESP_IDF_VERSION_MAJOR == 4 && ESP_IDF_VERSION_MINOR >= 4) || ESP_IDF_VERSION_MAJOR > 4
server->serveStatic("/", LittleFS, "/").setDefaultFile("index.htm"); server->serveStatic("/", LittleFS, "/").setDefaultFile("index.htm");
#else
server->serveStatic("/", LITTLEFS, "/").setDefaultFile("index.htm");
#endif
#else
server->serveStatic("/", LittleFS, "/").setDefaultFile("index.htm");
#endif
} }
// Heap for general Servertest // Heap for general Servertest

View File

@ -7,7 +7,15 @@
#include <Arduino.h> #include <Arduino.h>
#include <ArduinoJson.h> #include <ArduinoJson.h>
#include <stdlib_noniso.h> #include <stdlib_noniso.h>
#include <LittleFS.h> #ifdef ESP32
#if (ESP_IDF_VERSION_MAJOR == 4 && ESP_IDF_VERSION_MINOR >= 4) || ESP_IDF_VERSION_MAJOR > 4
#include <LittleFS.h>
#else
#include <LITTLEFS.h>
#endif
#else
#include <LittleFS.h>
#endif
#include <map> #include <map>
#include <ESPAsyncWebServer.h> #include <ESPAsyncWebServer.h>
@ -104,7 +112,7 @@ public:
void beginLITTLEFS(const char* _title, const char* username = nullptr, const char* password = nullptr, void beginLITTLEFS(const char* _title, const char* username = nullptr, const char* password = nullptr,
uint16_t port = 80); // Setup server and page in LITTLEFS mode uint16_t port = 80); // Setup server and page in LITTLEFS mode
void prepareFileSystem(); // Initially preps the filesystem and loads a lot of void prepareFileSystem(bool format = true); // Initially preps the filesystem and loads a lot of
// stuff into LITTLEFS // stuff into LITTLEFS
void list(); // Lists LITTLEFS directory void list(); // Lists LITTLEFS directory