Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/fs/fs_access.h
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ uint32_t getStaticPos(void);
uint32_t getCurrentOffset(void);
uint32_t readBytesFromAddr(uint8_t *buffer, uint32_t addr, uint32_t len);
bool getFileFromIdx(uint32_t idx, char *filename, char *filter);
uint32_t getFileCount(char *filter);

void WavToKeyboard(fs_id_t id, const char *dirname, void(*fileInd)(const char *filename, int offset, uint8_t note), int depth, int max_depth, uint8_t note);

Expand Down
43 changes: 43 additions & 0 deletions src/fs/fs_esp32.h
Original file line number Diff line number Diff line change
Expand Up @@ -322,6 +322,49 @@ static bool FS_SdCardInit(void)
}
#endif

static uint32_t getFileCountRecursive(File dir, char *filter)
{
uint32_t count = 0;

while (true)
{
File entry = dir.openNextFile();
if (!entry)
{
break;
}

if (entry.isDirectory())
{
count += getFileCountRecursive(entry, filter);
}
else
{
if (str_ends_with_ul(entry.name(), filter))
{
count++;
}
}

entry.close();
}

return count;
}

uint32_t getFileCount(char *filter)
{
File dir = LittleFS.open("/", "r");
if (!dir)
{
return 0;
}

uint32_t count = getFileCountRecursive(dir, filter);
dir.close();
return count;
}

void FS_Setup(void)
{
#ifdef SD_MMC_ENABLED
Expand Down
69 changes: 63 additions & 6 deletions src/fs/fs_rp2040.h
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,8 @@
*/
#define FST fs::FS

#define FILENAME_MAX_LEN 64

/*
* static function declarations
*/
Expand Down Expand Up @@ -169,7 +171,8 @@ uint32_t getFileFromIdx(File dir, int numTabs, uint32_t idx, char *filename, cha
{
if (idx == 0)
{
strcpy(filename, entry.name());
strncpy(filename, entry.name(), FILENAME_MAX_LEN - 1);
filename[FILENAME_MAX_LEN - 1] = '\0';
return idx;
}
idx -= 1;
Expand All @@ -184,18 +187,66 @@ uint32_t getFileFromIdx(File dir, int numTabs, uint32_t idx, char *filename, cha
bool getFileFromIdx(uint32_t idx, char *filename, char *filter)
{
File dir = LittleFS.open("/", "r");
char filename_clean[64];
char filename_clean[FILENAME_MAX_LEN - 1];

bool found = (getFileFromIdx(dir, 0, idx, filename_clean, filter) == 0);

if (found)
{
snprintf(filename, FILENAME_MAX_LEN, "/%s", filename_clean);
}

dir.close();
return found;
}

static uint32_t getFileCountRecursive(File dir, char *filter)
{
uint32_t count = 0;

while (true)
{
File entry = dir.openNextFile();
if (!entry)
{
break;
}

if (entry.isDirectory())
{
count += getFileCountRecursive(entry, filter);
}
else
{
if (str_ends_with_ul(entry.name(), filter))
{
count++;
}
}

entry.close();
}

return count;
}

uint32_t getFileCount(char *filter)
{
File dir = LittleFS.open("/", "r");
if (!dir)
{
return 0;
}

bool result = getFileFromIdx(dir, 0, idx, filename_clean, filter) == 0 ? true : false;
sprintf(filename, "/%s", filename_clean);
uint32_t count = getFileCountRecursive(dir, filter);
dir.close();
return result;
return count;
}

/*
* function definitions
*/
void FS_Setup(void)
void FS_Setup(bool listFiles)
{
if (!LittleFS.begin())
{
Expand All @@ -205,6 +256,7 @@ void FS_Setup(void)

Serial.printf("LittleFS Mount Successful!\n");

if (listFiles)
{
Serial.printf("List files ...\n\n");
File dir = LittleFS.open("/", "r");
Expand All @@ -213,6 +265,11 @@ void FS_Setup(void)
}
}

void FS_Setup(void)
{
FS_Setup(true);
}


#endif /* #ifdef ML_SYNTH_INLINE_DEFINITION */

Expand Down
Loading