From 453e61d5dc538e19e545075818e94a9508501c44 Mon Sep 17 00:00:00 2001 From: Daniel Plasa Date: Sun, 24 May 2020 18:58:42 +0200 Subject: rewrite/reworks to also use LittleFS since SPIFFS has become deprecated Also modifications to support also active mode and performance tunings with the use of dynamic buffers when transfering file data. --- examples/LittleFSSample/LittleFSSample.ino | 125 +++++++++++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 examples/LittleFSSample/LittleFSSample.ino (limited to 'examples/LittleFSSample/LittleFSSample.ino') diff --git a/examples/LittleFSSample/LittleFSSample.ino b/examples/LittleFSSample/LittleFSSample.ino new file mode 100644 index 0000000..b6bfdd6 --- /dev/null +++ b/examples/LittleFSSample/LittleFSSample.ino @@ -0,0 +1,125 @@ +/* + This is an example sketch to show the use of the espFTP server. + + Please replace + YOUR_SSID and YOUR_PASS + with your WiFi's values and compile. + + If you want to see debugging output of the FTP server, please + select select an Serial Port in the Arduino IDE menu Tools->Debug Port + + Send L via Serial Monitor, to display the contents of the FS + Send F via Serial Monitor, to fromat the FS + + This example is provided as Public Domain + Daniel Plasa + +*/ +#ifdef ESP8266 +#include +#include +#elif defined ESP32 +#include +#include +#endif + +#include + +const char *ssid PROGMEM = ""; +const char *password PROGMEM = ""; + +// tell the FtpServer to use LittleFS +FtpServer ftpSrv(LittleFS); + +void setup(void) +{ + Serial.begin(74880); + WiFi.begin(ssid, password); + + bool fsok = LittleFS.begin(); + Serial.printf_P(PSTR("FS init: %S\n"), fsok ? PSTR("ok") : PSTR("fail!")); + + // Wait for connection + while (WiFi.status() != WL_CONNECTED) + { + delay(500); + Serial.printf_P(PSTR(".")); + } + Serial.printf_P(PSTR("\nConnected to %S, IP address is %s\n"), ssid, WiFi.localIP().toString().c_str()); + + // setup the ftp server with username and password + // ports are defined in esFTP.h, default is + // 21 for the control connection + // 50009 for the data connection (passive mode by default) + ftpSrv.begin(F("ftp"), F("ftp")); //username, password for ftp. set ports in ESP8266FtpServer.h (default 21, 50009 for PASV) +} + +enum consoleaction +{ + show, + wait, + format, + list +}; +consoleaction action = show; + +void loop(void) +{ + // this is all you need + // make sure to call handleFTP() frequently + ftpSrv.handleFTP(); + + // + // Code below just to debug in Serial Monitor + // + if (action == show) + { + Serial.printf_P(PSTR("Enter 'F' to format, 'L' to list the contents of the FS\n")); + action = wait; + } + else if (action == wait) + { + if (Serial.available()) + { + char c = Serial.read(); + if (c == 'F') + action = format; + else if (c == 'L') + action = list; + else if (!(c == '\n' || c == '\r')) + action = show; + } + } + else if (action == format) + { + uint32_t startTime = millis(); + LittleFS.format(); + Serial.printf_P(PSTR("FS format done, took %lu ms!\n"), millis() - startTime); + action = show; + } + else if (action == list) + { + Serial.printf_P(PSTR("Listing contents...\n")); + uint16_t fileCount = listDir("", "/"); + Serial.printf_P(PSTR("%d files/dirs total\n"), fileCount); + action = show; + } +} + +uint16_t listDir(String indent, String path) +{ + uint16_t dirCount = 0; + Dir dir = LittleFS.openDir(path); + while (dir.next()) + { + ++dirCount; + if (dir.isDirectory()) + { + Serial.printf_P(PSTR("%s%s [Dir]\n"), indent.c_str(), dir.fileName().c_str()); + dirCount += listDir(indent + " ", path + dir.fileName() + "/"); + } + else + Serial.printf_P(PSTR("%s%-16s (%ld Bytes)\n"), indent.c_str(), dir.fileName().c_str(), (uint32_t)dir.fileSize()); + } + return dirCount; +} -- cgit v1.2.3