Unify time modification on SD and SPIFFS (#738)
* Add access to last write date time add example * rename cpp to ino orz * wrong copy -past * No comment orz * Add missing space
This commit is contained in:
		
							parent
							
								
									7141e3e29d
								
							
						
					
					
						commit
						adf513fc17
					
				| @ -32,6 +32,15 @@ size_t File::write(uint8_t c) | ||||
|     return _p->write(&c, 1); | ||||
| } | ||||
| 
 | ||||
| time_t File::getLastWrite() | ||||
| { | ||||
|     if (!_p) { | ||||
|         return 0; | ||||
|     } | ||||
| 
 | ||||
|     return _p->getLastWrite(); | ||||
| } | ||||
| 
 | ||||
| size_t File::write(const uint8_t *buf, size_t size) | ||||
| { | ||||
|     if (!_p) { | ||||
|  | ||||
| @ -70,6 +70,7 @@ public: | ||||
|     size_t size() const; | ||||
|     void close(); | ||||
|     operator bool() const; | ||||
|     time_t getLastWrite(); | ||||
|     const char* name() const; | ||||
| 
 | ||||
|     boolean isDirectory(void); | ||||
|  | ||||
| @ -37,6 +37,7 @@ public: | ||||
|     virtual size_t position() const = 0; | ||||
|     virtual size_t size() const = 0; | ||||
|     virtual void close() = 0; | ||||
|     virtual time_t getLastWrite() = 0; | ||||
|     virtual const char* name() const = 0; | ||||
|     virtual boolean isDirectory(void) = 0; | ||||
|     virtual FileImplPtr openNextFile(const char* mode) = 0; | ||||
|  | ||||
| @ -295,6 +295,11 @@ VFSFileImpl::operator bool() | ||||
|     return (_isDirectory && _d != NULL) || _f != NULL; | ||||
| } | ||||
| 
 | ||||
| time_t VFSFileImpl::getLastWrite() { | ||||
|     _getStat() ; | ||||
|     return _stat.st_mtime; | ||||
| } | ||||
| 
 | ||||
| void VFSFileImpl::_getStat() const | ||||
| { | ||||
|     if(!_path) { | ||||
|  | ||||
| @ -67,6 +67,7 @@ public: | ||||
|     size_t      size() const override; | ||||
|     void        close() override; | ||||
|     const char* name() const override; | ||||
|     time_t getLastWrite()  override; | ||||
|     boolean     isDirectory(void) override; | ||||
|     FileImplPtr openNextFile(const char* mode) override; | ||||
|     void        rewindDirectory(void) override; | ||||
|  | ||||
							
								
								
									
										213
									
								
								libraries/SD/examples/SD_time/SD_time.ino
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										213
									
								
								libraries/SD/examples/SD_time/SD_time.ino
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,213 @@ | ||||
| /*
 | ||||
|  * Connect the SD card to the following pins: | ||||
|  * | ||||
|  * SD Card | ESP32 | ||||
|  *    D2       - | ||||
|  *    D3       SS | ||||
|  *    CMD      MOSI | ||||
|  *    VSS      GND | ||||
|  *    VDD      3.3V | ||||
|  *    CLK      SCK | ||||
|  *    VSS      GND | ||||
|  *    D0       MISO | ||||
|  *    D1       - | ||||
|  */ | ||||
| 
 | ||||
| #include "FS.h" | ||||
| #include "SD.h" | ||||
| #include "SPI.h" | ||||
| #include <time.h>  | ||||
| #include <WiFi.h> | ||||
| 
 | ||||
| const char* ssid     = "your-ssid"; | ||||
| const char* password = "your-password"; | ||||
| 
 | ||||
| long timezone = 1;  | ||||
| byte daysavetime = 1; | ||||
| 
 | ||||
| void listDir(fs::FS &fs, const char * dirname, uint8_t levels){ | ||||
|     Serial.printf("Listing directory: %s\n", dirname); | ||||
| 
 | ||||
|     File root = fs.open(dirname); | ||||
|     if(!root){ | ||||
|         Serial.println("Failed to open directory"); | ||||
|         return; | ||||
|     } | ||||
|     if(!root.isDirectory()){ | ||||
|         Serial.println("Not a directory"); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     File file = root.openNextFile(); | ||||
|     while(file){ | ||||
|         if(file.isDirectory()){ | ||||
|             Serial.print("  DIR : "); | ||||
|             Serial.print (file.name()); | ||||
|             time_t t= file.getLastWrite(); | ||||
|             struct tm * tmstruct = localtime(&t); | ||||
|             Serial.printf("  LAST WRITE: %d-%02d-%02d %02d:%02d:%02d\n",(tmstruct->tm_year)+1900,( tmstruct->tm_mon)+1, tmstruct->tm_mday,tmstruct->tm_hour , tmstruct->tm_min, tmstruct->tm_sec); | ||||
|             if(levels){ | ||||
|                 listDir(fs, file.name(), levels -1); | ||||
|             } | ||||
|         } else { | ||||
|             Serial.print("  FILE: "); | ||||
|             Serial.print(file.name()); | ||||
|             Serial.print("  SIZE: "); | ||||
|             Serial.print(file.size()); | ||||
|             time_t t= file.getLastWrite(); | ||||
|             struct tm * tmstruct = localtime(&t); | ||||
|             Serial.printf("  LAST WRITE: %d-%02d-%02d %02d:%02d:%02d\n",(tmstruct->tm_year)+1900,( tmstruct->tm_mon)+1, tmstruct->tm_mday,tmstruct->tm_hour , tmstruct->tm_min, tmstruct->tm_sec); | ||||
|         } | ||||
|         file = root.openNextFile(); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void createDir(fs::FS &fs, const char * path){ | ||||
|     Serial.printf("Creating Dir: %s\n", path); | ||||
|     if(fs.mkdir(path)){ | ||||
|         Serial.println("Dir created"); | ||||
|     } else { | ||||
|         Serial.println("mkdir failed"); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void removeDir(fs::FS &fs, const char * path){ | ||||
|     Serial.printf("Removing Dir: %s\n", path); | ||||
|     if(fs.rmdir(path)){ | ||||
|         Serial.println("Dir removed"); | ||||
|     } else { | ||||
|         Serial.println("rmdir failed"); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void readFile(fs::FS &fs, const char * path){ | ||||
|     Serial.printf("Reading file: %s\n", path); | ||||
| 
 | ||||
|     File file = fs.open(path); | ||||
|     if(!file){ | ||||
|         Serial.println("Failed to open file for reading"); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     Serial.print("Read from file: "); | ||||
|     while(file.available()){ | ||||
|         Serial.write(file.read()); | ||||
|     } | ||||
|     file.close(); | ||||
| } | ||||
| 
 | ||||
| void writeFile(fs::FS &fs, const char * path, const char * message){ | ||||
|     Serial.printf("Writing file: %s\n", path); | ||||
| 
 | ||||
|     File file = fs.open(path, FILE_WRITE); | ||||
|     if(!file){ | ||||
|         Serial.println("Failed to open file for writing"); | ||||
|         return; | ||||
|     } | ||||
|     if(file.print(message)){ | ||||
|         Serial.println("File written"); | ||||
|     } else { | ||||
|         Serial.println("Write failed"); | ||||
|     } | ||||
|     file.close(); | ||||
| } | ||||
| 
 | ||||
| void appendFile(fs::FS &fs, const char * path, const char * message){ | ||||
|     Serial.printf("Appending to file: %s\n", path); | ||||
| 
 | ||||
|     File file = fs.open(path, FILE_APPEND); | ||||
|     if(!file){ | ||||
|         Serial.println("Failed to open file for appending"); | ||||
|         return; | ||||
|     } | ||||
|     if(file.print(message)){ | ||||
|         Serial.println("Message appended"); | ||||
|     } else { | ||||
|         Serial.println("Append failed"); | ||||
|     } | ||||
|     file.close(); | ||||
| } | ||||
| 
 | ||||
| void renameFile(fs::FS &fs, const char * path1, const char * path2){ | ||||
|     Serial.printf("Renaming file %s to %s\n", path1, path2); | ||||
|     if (fs.rename(path1, path2)) { | ||||
|         Serial.println("File renamed"); | ||||
|     } else { | ||||
|         Serial.println("Rename failed"); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void deleteFile(fs::FS &fs, const char * path){ | ||||
|     Serial.printf("Deleting file: %s\n", path); | ||||
|     if(fs.remove(path)){ | ||||
|         Serial.println("File deleted"); | ||||
|     } else { | ||||
|         Serial.println("Delete failed"); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void setup(){ | ||||
|     Serial.begin(115200); | ||||
|     // We start by connecting to a WiFi network
 | ||||
|     Serial.println(); | ||||
|     Serial.println(); | ||||
|     Serial.print("Connecting to "); | ||||
|     Serial.println(ssid); | ||||
| 
 | ||||
|     WiFi.begin(ssid, password); | ||||
| 
 | ||||
|     while (WiFi.status() != WL_CONNECTED) { | ||||
|         delay(500); | ||||
|         Serial.print("."); | ||||
|     } | ||||
|     Serial.println("WiFi connected"); | ||||
|     Serial.println("IP address: "); | ||||
|     Serial.println(WiFi.localIP()); | ||||
|     Serial.println("Contacting Time Server"); | ||||
| 	configTime(3600*timezone, daysavetime*3600, "time.nist.gov", "0.pool.ntp.org", "1.pool.ntp.org"); | ||||
| 	struct tm tmstruct ; | ||||
|     delay(2000); | ||||
|     tmstruct.tm_year = 0; | ||||
|     getLocalTime(&tmstruct, 5000); | ||||
| 	Serial.printf("\nNow is : %d-%02d-%02d %02d:%02d:%02d\n",(tmstruct.tm_year)+1900,( tmstruct.tm_mon)+1, tmstruct.tm_mday,tmstruct.tm_hour , tmstruct.tm_min, tmstruct.tm_sec); | ||||
|     Serial.println(""); | ||||
|      | ||||
|     if(!SD.begin()){ | ||||
|         Serial.println("Card Mount Failed"); | ||||
|         return; | ||||
|     } | ||||
|     uint8_t cardType = SD.cardType(); | ||||
| 
 | ||||
|     if(cardType == CARD_NONE){ | ||||
|         Serial.println("No SD card attached"); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     Serial.print("SD Card Type: "); | ||||
|     if(cardType == CARD_MMC){ | ||||
|         Serial.println("MMC"); | ||||
|     } else if(cardType == CARD_SD){ | ||||
|         Serial.println("SDSC"); | ||||
|     } else if(cardType == CARD_SDHC){ | ||||
|         Serial.println("SDHC"); | ||||
|     } else { | ||||
|         Serial.println("UNKNOWN"); | ||||
|     } | ||||
| 
 | ||||
|     uint64_t cardSize = SD.cardSize() / (1024 * 1024); | ||||
|     Serial.printf("SD Card Size: %lluMB\n", cardSize); | ||||
| 
 | ||||
|     listDir(SD, "/", 0); | ||||
|     removeDir(SD, "/mydir"); | ||||
|     createDir(SD, "/mydir"); | ||||
|     deleteFile(SD, "/hello.txt"); | ||||
|     writeFile(SD, "/hello.txt", "Hello "); | ||||
|     appendFile(SD, "/hello.txt", "World!\n"); | ||||
| 	listDir(SD, "/", 0); | ||||
| } | ||||
| 
 | ||||
| void loop(){ | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
							
								
								
									
										213
									
								
								libraries/SD_MMC/examples/SDMMC_time/SDMMC_time.ino
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										213
									
								
								libraries/SD_MMC/examples/SDMMC_time/SDMMC_time.ino
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,213 @@ | ||||
| /*
 | ||||
|  * Connect the SD card to the following pins: | ||||
|  * | ||||
|  * SD Card | ESP32 | ||||
|  *    D2       - | ||||
|  *    D3       SS | ||||
|  *    CMD      MOSI | ||||
|  *    VSS      GND | ||||
|  *    VDD      3.3V | ||||
|  *    CLK      SCK | ||||
|  *    VSS      GND | ||||
|  *    D0       MISO | ||||
|  *    D1       - | ||||
|  */ | ||||
| 
 | ||||
| #include "FS.h" | ||||
| #include "SD_MMC.h" | ||||
| #include "SPI.h" | ||||
| #include <time.h>  | ||||
| #include <WiFi.h> | ||||
| 
 | ||||
| const char* ssid     = "your-ssid"; | ||||
| const char* password = "your-password"; | ||||
| 
 | ||||
| long timezone = 1;  | ||||
| byte daysavetime = 1; | ||||
| 
 | ||||
| void listDir(fs::FS &fs, const char * dirname, uint8_t levels){ | ||||
|     Serial.printf("Listing directory: %s\n", dirname); | ||||
| 
 | ||||
|     File root = fs.open(dirname); | ||||
|     if(!root){ | ||||
|         Serial.println("Failed to open directory"); | ||||
|         return; | ||||
|     } | ||||
|     if(!root.isDirectory()){ | ||||
|         Serial.println("Not a directory"); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     File file = root.openNextFile(); | ||||
|     while(file){ | ||||
|         if(file.isDirectory()){ | ||||
|             Serial.print("  DIR : "); | ||||
|             Serial.print (file.name()); | ||||
|             time_t t= file.getLastWrite(); | ||||
|             struct tm * tmstruct = localtime(&t); | ||||
|             Serial.printf("  LAST WRITE: %d-%02d-%02d %02d:%02d:%02d\n",(tmstruct->tm_year)+1900,( tmstruct->tm_mon)+1, tmstruct->tm_mday,tmstruct->tm_hour , tmstruct->tm_min, tmstruct->tm_sec); | ||||
|             if(levels){ | ||||
|                 listDir(fs, file.name(), levels -1); | ||||
|             } | ||||
|         } else { | ||||
|             Serial.print("  FILE: "); | ||||
|             Serial.print(file.name()); | ||||
|             Serial.print("  SIZE: "); | ||||
|             Serial.print(file.size()); | ||||
|             time_t t= file.getLastWrite(); | ||||
|             struct tm * tmstruct = localtime(&t); | ||||
|             Serial.printf("  LAST WRITE: %d-%02d-%02d %02d:%02d:%02d\n",(tmstruct->tm_year)+1900,( tmstruct->tm_mon)+1, tmstruct->tm_mday,tmstruct->tm_hour , tmstruct->tm_min, tmstruct->tm_sec); | ||||
|         } | ||||
|         file = root.openNextFile(); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void createDir(fs::FS &fs, const char * path){ | ||||
|     Serial.printf("Creating Dir: %s\n", path); | ||||
|     if(fs.mkdir(path)){ | ||||
|         Serial.println("Dir created"); | ||||
|     } else { | ||||
|         Serial.println("mkdir failed"); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void removeDir(fs::FS &fs, const char * path){ | ||||
|     Serial.printf("Removing Dir: %s\n", path); | ||||
|     if(fs.rmdir(path)){ | ||||
|         Serial.println("Dir removed"); | ||||
|     } else { | ||||
|         Serial.println("rmdir failed"); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void readFile(fs::FS &fs, const char * path){ | ||||
|     Serial.printf("Reading file: %s\n", path); | ||||
| 
 | ||||
|     File file = fs.open(path); | ||||
|     if(!file){ | ||||
|         Serial.println("Failed to open file for reading"); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     Serial.print("Read from file: "); | ||||
|     while(file.available()){ | ||||
|         Serial.write(file.read()); | ||||
|     } | ||||
|     file.close(); | ||||
| } | ||||
| 
 | ||||
| void writeFile(fs::FS &fs, const char * path, const char * message){ | ||||
|     Serial.printf("Writing file: %s\n", path); | ||||
| 
 | ||||
|     File file = fs.open(path, FILE_WRITE); | ||||
|     if(!file){ | ||||
|         Serial.println("Failed to open file for writing"); | ||||
|         return; | ||||
|     } | ||||
|     if(file.print(message)){ | ||||
|         Serial.println("File written"); | ||||
|     } else { | ||||
|         Serial.println("Write failed"); | ||||
|     } | ||||
|     file.close(); | ||||
| } | ||||
| 
 | ||||
| void appendFile(fs::FS &fs, const char * path, const char * message){ | ||||
|     Serial.printf("Appending to file: %s\n", path); | ||||
| 
 | ||||
|     File file = fs.open(path, FILE_APPEND); | ||||
|     if(!file){ | ||||
|         Serial.println("Failed to open file for appending"); | ||||
|         return; | ||||
|     } | ||||
|     if(file.print(message)){ | ||||
|         Serial.println("Message appended"); | ||||
|     } else { | ||||
|         Serial.println("Append failed"); | ||||
|     } | ||||
|     file.close(); | ||||
| } | ||||
| 
 | ||||
| void renameFile(fs::FS &fs, const char * path1, const char * path2){ | ||||
|     Serial.printf("Renaming file %s to %s\n", path1, path2); | ||||
|     if (fs.rename(path1, path2)) { | ||||
|         Serial.println("File renamed"); | ||||
|     } else { | ||||
|         Serial.println("Rename failed"); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void deleteFile(fs::FS &fs, const char * path){ | ||||
|     Serial.printf("Deleting file: %s\n", path); | ||||
|     if(fs.remove(path)){ | ||||
|         Serial.println("File deleted"); | ||||
|     } else { | ||||
|         Serial.println("Delete failed"); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void setup(){ | ||||
|     Serial.begin(115200); | ||||
|     // We start by connecting to a WiFi network
 | ||||
|     Serial.println(); | ||||
|     Serial.println(); | ||||
|     Serial.print("Connecting to "); | ||||
|     Serial.println(ssid); | ||||
| 
 | ||||
|     WiFi.begin(ssid, password); | ||||
| 
 | ||||
|     while (WiFi.status() != WL_CONNECTED) { | ||||
|         delay(500); | ||||
|         Serial.print("."); | ||||
|     } | ||||
|     Serial.println("WiFi connected"); | ||||
|     Serial.println("IP address: "); | ||||
|     Serial.println(WiFi.localIP()); | ||||
|     Serial.println("Contacting Time Server"); | ||||
| 	configTime(3600*timezone, daysavetime*3600, "time.nist.gov", "0.pool.ntp.org", "1.pool.ntp.org"); | ||||
| 	struct tm tmstruct ; | ||||
|     delay(2000); | ||||
|     tmstruct.tm_year = 0; | ||||
|     getLocalTime(&tmstruct, 5000); | ||||
| 	Serial.printf("\nNow is : %d-%02d-%02d %02d:%02d:%02d\n",(tmstruct.tm_year)+1900,( tmstruct.tm_mon)+1, tmstruct.tm_mday,tmstruct.tm_hour , tmstruct.tm_min, tmstruct.tm_sec); | ||||
|     Serial.println(""); | ||||
|      | ||||
|     if(!SD_MMC.begin()){ | ||||
|         Serial.println("Card Mount Failed"); | ||||
|         return; | ||||
|     } | ||||
|     uint8_t cardType = SD_MMC.cardType(); | ||||
| 
 | ||||
|     if(cardType == CARD_NONE){ | ||||
|         Serial.println("No SD card attached"); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     Serial.print("SD Card Type: "); | ||||
|     if(cardType == CARD_MMC){ | ||||
|         Serial.println("MMC"); | ||||
|     } else if(cardType == CARD_SD){ | ||||
|         Serial.println("SDSC"); | ||||
|     } else if(cardType == CARD_SDHC){ | ||||
|         Serial.println("SDHC"); | ||||
|     } else { | ||||
|         Serial.println("UNKNOWN"); | ||||
|     } | ||||
| 
 | ||||
|     uint64_t cardSize = SD_MMC.cardSize() / (1024 * 1024); | ||||
|     Serial.printf("SD Card Size: %lluMB\n", cardSize); | ||||
| 
 | ||||
|     listDir(SD_MMC, "/", 0); | ||||
|     removeDir(SD_MMC, "/mydir"); | ||||
|     createDir(SD_MMC, "/mydir"); | ||||
|     deleteFile(SD_MMC, "/hello.txt"); | ||||
|     writeFile(SD_MMC, "/hello.txt", "Hello "); | ||||
|     appendFile(SD_MMC, "/hello.txt", "World!\n"); | ||||
| 	listDir(SD_MMC, "/", 0); | ||||
| } | ||||
| 
 | ||||
| void loop(){ | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
							
								
								
									
										177
									
								
								libraries/SPIFFS/examples/SPIFFS_time/SPIFFS_time.ino
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										177
									
								
								libraries/SPIFFS/examples/SPIFFS_time/SPIFFS_time.ino
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,177 @@ | ||||
| #include "FS.h" | ||||
| #include "SPIFFS.h" | ||||
| #include <time.h>  | ||||
| #include <WiFi.h> | ||||
| 
 | ||||
| const char* ssid     = "your-ssid"; | ||||
| const char* password = "your-password"; | ||||
| 
 | ||||
| long timezone = 1;  | ||||
| byte daysavetime = 1; | ||||
| 
 | ||||
| void listDir(fs::FS &fs, const char * dirname, uint8_t levels){ | ||||
|     Serial.printf("Listing directory: %s\n", dirname); | ||||
| 
 | ||||
|     File root = fs.open(dirname); | ||||
|     if(!root){ | ||||
|         Serial.println("Failed to open directory"); | ||||
|         return; | ||||
|     } | ||||
|     if(!root.isDirectory()){ | ||||
|         Serial.println("Not a directory"); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     File file = root.openNextFile(); | ||||
|     while(file){ | ||||
|         if(file.isDirectory()){ | ||||
|             Serial.print("  DIR : "); | ||||
|             Serial.print (file.name()); | ||||
|             time_t t= file.getLastWrite(); | ||||
|             struct tm * tmstruct = localtime(&t); | ||||
|             Serial.printf("  LAST WRITE: %d-%02d-%02d %02d:%02d:%02d\n",(tmstruct->tm_year)+1900,( tmstruct->tm_mon)+1, tmstruct->tm_mday,tmstruct->tm_hour , tmstruct->tm_min, tmstruct->tm_sec); | ||||
|             if(levels){ | ||||
|                 listDir(fs, file.name(), levels -1); | ||||
|             } | ||||
|         } else { | ||||
|             Serial.print("  FILE: "); | ||||
|             Serial.print(file.name()); | ||||
|             Serial.print("  SIZE: "); | ||||
|             Serial.print(file.size()); | ||||
|             time_t t= file.getLastWrite(); | ||||
|             struct tm * tmstruct = localtime(&t); | ||||
|             Serial.printf("  LAST WRITE: %d-%02d-%02d %02d:%02d:%02d\n",(tmstruct->tm_year)+1900,( tmstruct->tm_mon)+1, tmstruct->tm_mday,tmstruct->tm_hour , tmstruct->tm_min, tmstruct->tm_sec); | ||||
|         } | ||||
|         file = root.openNextFile(); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void createDir(fs::FS &fs, const char * path){ | ||||
|     Serial.printf("Creating Dir: %s\n", path); | ||||
|     if(fs.mkdir(path)){ | ||||
|         Serial.println("Dir created"); | ||||
|     } else { | ||||
|         Serial.println("mkdir failed"); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void removeDir(fs::FS &fs, const char * path){ | ||||
|     Serial.printf("Removing Dir: %s\n", path); | ||||
|     if(fs.rmdir(path)){ | ||||
|         Serial.println("Dir removed"); | ||||
|     } else { | ||||
|         Serial.println("rmdir failed"); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void readFile(fs::FS &fs, const char * path){ | ||||
|     Serial.printf("Reading file: %s\n", path); | ||||
| 
 | ||||
|     File file = fs.open(path); | ||||
|     if(!file){ | ||||
|         Serial.println("Failed to open file for reading"); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     Serial.print("Read from file: "); | ||||
|     while(file.available()){ | ||||
|         Serial.write(file.read()); | ||||
|     } | ||||
|     file.close(); | ||||
| } | ||||
| 
 | ||||
| void writeFile(fs::FS &fs, const char * path, const char * message){ | ||||
|     Serial.printf("Writing file: %s\n", path); | ||||
| 
 | ||||
|     File file = fs.open(path, FILE_WRITE); | ||||
|     if(!file){ | ||||
|         Serial.println("Failed to open file for writing"); | ||||
|         return; | ||||
|     } | ||||
|     if(file.print(message)){ | ||||
|         Serial.println("File written"); | ||||
|     } else { | ||||
|         Serial.println("Write failed"); | ||||
|     } | ||||
|     file.close(); | ||||
| } | ||||
| 
 | ||||
| void appendFile(fs::FS &fs, const char * path, const char * message){ | ||||
|     Serial.printf("Appending to file: %s\n", path); | ||||
| 
 | ||||
|     File file = fs.open(path, FILE_APPEND); | ||||
|     if(!file){ | ||||
|         Serial.println("Failed to open file for appending"); | ||||
|         return; | ||||
|     } | ||||
|     if(file.print(message)){ | ||||
|         Serial.println("Message appended"); | ||||
|     } else { | ||||
|         Serial.println("Append failed"); | ||||
|     } | ||||
|     file.close(); | ||||
| } | ||||
| 
 | ||||
| void renameFile(fs::FS &fs, const char * path1, const char * path2){ | ||||
|     Serial.printf("Renaming file %s to %s\n", path1, path2); | ||||
|     if (fs.rename(path1, path2)) { | ||||
|         Serial.println("File renamed"); | ||||
|     } else { | ||||
|         Serial.println("Rename failed"); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void deleteFile(fs::FS &fs, const char * path){ | ||||
|     Serial.printf("Deleting file: %s\n", path); | ||||
|     if(fs.remove(path)){ | ||||
|         Serial.println("File deleted"); | ||||
|     } else { | ||||
|         Serial.println("Delete failed"); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void setup(){ | ||||
|     Serial.begin(115200); | ||||
|     // We start by connecting to a WiFi network
 | ||||
|     Serial.println(); | ||||
|     Serial.println(); | ||||
|     Serial.print("Connecting to "); | ||||
|     Serial.println(ssid); | ||||
| 
 | ||||
|     WiFi.begin(ssid, password); | ||||
| 
 | ||||
|     while (WiFi.status() != WL_CONNECTED) { | ||||
|         delay(500); | ||||
|         Serial.print("."); | ||||
|     } | ||||
|     Serial.println("WiFi connected"); | ||||
|     Serial.println("IP address: "); | ||||
|     Serial.println(WiFi.localIP()); | ||||
|     Serial.println("Contacting Time Server"); | ||||
| 	configTime(3600*timezone, daysavetime*3600, "time.nist.gov", "0.pool.ntp.org", "1.pool.ntp.org"); | ||||
| 	struct tm tmstruct ; | ||||
|     delay(2000); | ||||
|     tmstruct.tm_year = 0; | ||||
|     getLocalTime(&tmstruct, 5000); | ||||
| 	Serial.printf("\nNow is : %d-%02d-%02d %02d:%02d:%02d\n",(tmstruct.tm_year)+1900,( tmstruct.tm_mon)+1, tmstruct.tm_mday,tmstruct.tm_hour , tmstruct.tm_min, tmstruct.tm_sec); | ||||
|     Serial.println(""); | ||||
|      | ||||
|     if(!SPIFFS.begin()){ | ||||
|         Serial.println("Card Mount Failed"); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     listDir(SPIFFS, "/", 0); | ||||
|     removeDir(SPIFFS, "/mydir"); | ||||
|     createDir(SPIFFS, "/mydir"); | ||||
|     deleteFile(SPIFFS, "/hello.txt"); | ||||
|     writeFile(SPIFFS, "/hello.txt", "Hello "); | ||||
|     appendFile(SPIFFS, "/hello.txt", "World!\n"); | ||||
| 	listDir(SPIFFS, "/", 0); | ||||
| } | ||||
| 
 | ||||
| void loop(){ | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user