diff options
author | Clyne Sullivan <tullivan99@gmail.com> | 2019-02-28 17:04:22 -0500 |
---|---|---|
committer | Clyne Sullivan <tullivan99@gmail.com> | 2019-02-28 17:04:22 -0500 |
commit | d6869d1ec4bd24cd2c3eafa534f0849b25ec5607 (patch) | |
tree | 79e54ed27b39c31864895535d11399708d5a45c0 /arduino/libraries/FileSystem/examples/Internal_ListFiles | |
parent | 614ee97bf3a2270c413527a7f35c54cbecd9e601 (diff) |
added basic code
Diffstat (limited to 'arduino/libraries/FileSystem/examples/Internal_ListFiles')
-rwxr-xr-x | arduino/libraries/FileSystem/examples/Internal_ListFiles/Internal_ListFiles.ino | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/arduino/libraries/FileSystem/examples/Internal_ListFiles/Internal_ListFiles.ino b/arduino/libraries/FileSystem/examples/Internal_ListFiles/Internal_ListFiles.ino new file mode 100755 index 0000000..15702bf --- /dev/null +++ b/arduino/libraries/FileSystem/examples/Internal_ListFiles/Internal_ListFiles.ino @@ -0,0 +1,117 @@ +/********************************************************************* + This is an example for our nRF52 based Bluefruit LE modules + + Pick one up today in the adafruit shop! + + Adafruit invests time and resources providing this open source code, + please support Adafruit and open-source hardware by purchasing + products from Adafruit! + + MIT license, check LICENSE for more information + All text above, and the splash screen below must be included in + any redistribution +*********************************************************************/ + +#include <bluefruit.h> +#include <Bluefruit_FileIO.h> + +/* This example print out Internal Flash contents up to + * MAX_LEVEL level of directories (including root) + * WARNING: This example uses recursive call to print out directory tree + * be extra careful, high number of MAX_LEVEL can cause memory overflow + */ +#define MAX_LEVEL 2 + +// the setup function runs once when you press reset or power the board +void setup() +{ + Serial.begin(115200); + while ( !Serial ) delay(10); // for nrf52840 with native usb + + Serial.println("InternalFS List Files Example"); + + // Initialize Internal File System + InternalFS.begin(); + + // Print whole directory tree of root whose level is 0 + printTreeDir("/", 0); + + // Print prompt + Serial.println(); + Serial.println("Enter anything to print directory tree (again):"); +} + +// the loop function runs over and over again forever +void loop() +{ + if ( Serial.available() ) + { + delay(10); // delay for all input arrived + while( Serial.available() ) Serial.read(); + + printTreeDir("/", 0); + + // Print prompt + Serial.println(); + Serial.println("Enter anything to print directory tree (again):"); + } +} + +/**************************************************************************/ +/*! + @brief Print out whole directory tree of an folder + until the level reach MAX_LEVEL + + @note Recursive call +*/ +/**************************************************************************/ +void printTreeDir(const char* cwd, uint8_t level) +{ + // Open the input folder + File dir(cwd, FILE_READ, InternalFS); + + // Print root + if (level == 0) Serial.println("root"); + + // File within folder + File item(InternalFS); + + // Loop through the directory + while( (item = dir.openNextFile(FILE_READ)) ) + { + // Indentation according to dir level + for(int i=0; i<level; i++) Serial.print("| "); + + Serial.print("|_ "); + Serial.print( item.name() ); + + if ( item.isDirectory() ) + { + Serial.println("/"); + + // ATTENTION recursive call to print sub folder with level+1 !!!!!!!! + // High number of MAX_LEVEL can cause memory overflow + if ( level < MAX_LEVEL ) + { + printTreeDir( item.path(), level+1 ); + } + }else + { + // Print file size starting from position 30 + int pos = level*3 + 3 + strlen(item.name()); + + // Print padding + for (int i=pos; i<30; i++) Serial.print(' '); + + // Print at least one extra space in case current position > 50 + Serial.print(' '); + + Serial.print( item.size() ); + Serial.println( " Bytes"); + } + + item.close(); + } + + dir.close(); +} |