Added a new SDcard library test program
This commit is contained in:
parent
4cf3b36f8d
commit
e5ace8bc16
239
src/software_test/sdCardNewLib_test/sdCardNewLib_test.ino
Normal file
239
src/software_test/sdCardNewLib_test/sdCardNewLib_test.ino
Normal file
@ -0,0 +1,239 @@
|
||||
#include <SD.h>
|
||||
|
||||
/**
|
||||
* This sketch was written in order to test the modifications I did to the SD card library
|
||||
* as well as testing it's stability
|
||||
* Created by Anatole SCHRAMM-HENRY the 12/12/2020
|
||||
*
|
||||
* /!\ Do not forget to import the two reworked SD libraries in your Arduino librairies folder
|
||||
* /!\ Do not forget to create a /TEST folder at the root of your SD card
|
||||
*/
|
||||
|
||||
void listDir(const char *dir)
|
||||
{
|
||||
File parentDir = SD.open(dir);
|
||||
|
||||
if(parentDir)
|
||||
{
|
||||
Serial.printf("Directory opened\nListing files :\n");
|
||||
do
|
||||
{
|
||||
File subFiles = parentDir.openNextFile();
|
||||
|
||||
if(!subFiles)
|
||||
break;
|
||||
|
||||
time_t tt = subFiles.getCreationTime();
|
||||
tm *ct = localtime(&tt);
|
||||
|
||||
Serial.printf("- %s, %s, %d %s date : %d/%d/%d %d:%d:%d\n",subFiles.fullName(), subFiles.name(), subFiles.size(), subFiles.isDirectory() ? "Dir" : "File",
|
||||
ct->tm_mday,
|
||||
ct->tm_mon + 1,
|
||||
ct->tm_year + 1900,
|
||||
ct->tm_hour,
|
||||
ct->tm_min,
|
||||
ct->tm_sec);
|
||||
|
||||
subFiles.close();
|
||||
}while(1);
|
||||
|
||||
parentDir.close();
|
||||
}
|
||||
else
|
||||
{
|
||||
Serial.printf("Failed to list directory %s\n", dir);
|
||||
}
|
||||
}
|
||||
|
||||
void displayCardInfo()
|
||||
{
|
||||
FSInfo64 info;
|
||||
SD.info64(info);
|
||||
Serial.printf("Used space : %lu Bytes\n Total Space : %lu Bytes\n", info.usedBytes, info.totalBytes);
|
||||
}
|
||||
|
||||
void createDir(const char *dir)
|
||||
{
|
||||
if(SD.mkdir(dir))
|
||||
{
|
||||
Serial.println("Created new dir");
|
||||
}
|
||||
else
|
||||
{
|
||||
Serial.println("Failed to create new dir");
|
||||
}
|
||||
|
||||
if(SD.exists(dir))
|
||||
{
|
||||
Serial.printf("%s exists\n", dir);
|
||||
}
|
||||
else
|
||||
{
|
||||
Serial.printf("%s does not exist\n", dir);
|
||||
}
|
||||
}
|
||||
|
||||
void renameDir()
|
||||
{
|
||||
if(SD.rename("/TEST/createdDir","/TEST/renamedDir"))
|
||||
{
|
||||
Serial.println("Renamed createdDir to renamedDir");
|
||||
}
|
||||
else
|
||||
{
|
||||
Serial.println("Failed to rename createdDir to renamedDir");
|
||||
}
|
||||
}
|
||||
|
||||
void removeDir(const char *dir)
|
||||
{
|
||||
if(SD.rmdir(dir))
|
||||
{
|
||||
Serial.printf("Removed %s\n", dir);
|
||||
}
|
||||
else
|
||||
{
|
||||
Serial.printf("Failed to remove %s", dir);
|
||||
}
|
||||
}
|
||||
|
||||
void createFile()
|
||||
{
|
||||
File f = SD.open("/TEST/newFile.md", FILE_WRITE);
|
||||
if(f)
|
||||
{
|
||||
Serial.println("newFile created successfully");
|
||||
f.close();
|
||||
}
|
||||
else
|
||||
{
|
||||
Serial.println("Failed to create newFile");
|
||||
}
|
||||
}
|
||||
|
||||
void writeToFile()
|
||||
{
|
||||
File f = SD.open("/TEST/newFile.md", FILE_WRITE);
|
||||
if(f)
|
||||
{
|
||||
Serial.println("Writing to file");
|
||||
f.print("This is the content of the newly created md file\nI hope you like it !\n");
|
||||
f.close();
|
||||
}
|
||||
else
|
||||
{
|
||||
Serial.println("Failed to write to newFile");
|
||||
}
|
||||
}
|
||||
|
||||
void readFile()
|
||||
{
|
||||
File f = SD.open("/TEST/newFile.md", FILE_READ);
|
||||
if(f)
|
||||
{
|
||||
Serial.println("File content :\n#");
|
||||
while(f.available())
|
||||
{
|
||||
Serial.write(f.read());
|
||||
}
|
||||
f.close();
|
||||
Serial.println("#");
|
||||
}
|
||||
else
|
||||
{
|
||||
Serial.println("Failed to read from newFile");
|
||||
}
|
||||
}
|
||||
|
||||
void truncateFile()
|
||||
{
|
||||
File f = SD.open("/TEST/newFile.md", FILE_WRITE);
|
||||
if(f)
|
||||
{
|
||||
Serial.println("Truncating file");
|
||||
f.truncate(15);
|
||||
f.close();
|
||||
}
|
||||
else
|
||||
{
|
||||
Serial.println("Failed to truncate newFile");
|
||||
}
|
||||
}
|
||||
|
||||
void deleteFile()
|
||||
{
|
||||
if(SD.exists("/TEST/newFile.md"))
|
||||
{
|
||||
if(SD.remove("/TEST/newFile.md"))
|
||||
{
|
||||
Serial.printf("Deleted newFile.md");
|
||||
}
|
||||
else
|
||||
{
|
||||
Serial.printf("Failed to delete newFile.md");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Serial.printf("newFile.md does not exist");
|
||||
}
|
||||
}
|
||||
|
||||
void testSuite()
|
||||
{
|
||||
//displayCardInfo(); //Too slow ... 20 seconds at 80MHz on a 16GB card
|
||||
listDir("/TEST");
|
||||
createDir("/TEST/createdDir");
|
||||
listDir("/TEST");
|
||||
renameDir();
|
||||
listDir("/TEST");
|
||||
removeDir("/TEST/renamedDir");
|
||||
listDir("/TEST");
|
||||
createFile();
|
||||
listDir("/TEST");
|
||||
writeToFile();
|
||||
listDir("/TEST");
|
||||
readFile();
|
||||
truncateFile();
|
||||
readFile();
|
||||
listDir("/TEST");
|
||||
deleteFile();
|
||||
listDir("/TEST");
|
||||
|
||||
//We test that the creation of a dir at the root of the card work
|
||||
createDir("/ROOT_DIR");
|
||||
listDir("/");
|
||||
removeDir("/ROOT_DIR");
|
||||
Serial.println("-----------------End of session--------------------");
|
||||
}
|
||||
|
||||
//Sets the file creation or modification date and time
|
||||
time_t timestampCB()
|
||||
{
|
||||
return 1607774685;
|
||||
}
|
||||
|
||||
void setup()
|
||||
{
|
||||
Serial.begin(115200, SERIAL_8N1, SERIAL_TX_ONLY);
|
||||
Serial.println("Setup started");
|
||||
|
||||
if(SD.begin(2,SPI_FULL_SPEED))
|
||||
{
|
||||
Serial.println("SDCard mounted");
|
||||
SD.setTimeCallback(&(timestampCB));
|
||||
}
|
||||
else
|
||||
{
|
||||
Serial.println("SDCard failed");
|
||||
return;
|
||||
}
|
||||
Serial.println("Setup ended");
|
||||
}
|
||||
|
||||
void loop()
|
||||
{
|
||||
// nothing happens after setup finishes.
|
||||
testSuite();
|
||||
delay(5000);
|
||||
}
|
Loading…
Reference in New Issue
Block a user