Skip to content

File main.cpp

File List > examples > FileTable > main.cpp

Go to the documentation of this file

Source Code

#include "daisy_seed.h"

using namespace daisy;

static constexpr const size_t kMaxFiles = 32;

static DaisySeed                hw;
static SdmmcHandler             sdmmc;
static FatFSInterface           fsi;
static FileTable<kMaxFiles>     file_table;

int main(void)
{
    hw.Init(true);

    SdmmcHandler::Config sdcfg;
    sdcfg.Defaults();
    sdcfg.speed = SdmmcHandler::Speed::STANDARD;
    sdcfg.width = SdmmcHandler::BusWidth::BITS_1;
    sdmmc.Init(sdcfg);
    fsi.Init(FatFSInterface::Config::Media::MEDIA_SD);
    f_mount(&fsi.GetSDFileSystem(), "/", 1);

    file_table.Fill("/");

    file_table.WriteLog("file_table-all.txt");

    file_table.Clear();

    file_table.Fill("/", ".txt");
    file_table.WriteLog("file_table-text.txt");

    file_table.Clear();
    file_table.Fill("/", ".wav");
    file_table.WriteLog("file_table-wav.txt");

    size_t largest_size = 0;
    int slot = -1;
    for (size_t i = 0; i < file_table.GetNumFiles(); i++) {
      auto fsize = file_table.GetFileSize(i);
      if (fsize > largest_size)  {
        largest_size = fsize;
        slot = i;
      }
    }

    hw.StartLog(true);
    System::Delay(100);
    hw.PrintLine("File Info:");
    if (slot >= 0) {
      hw.PrintLine("The largest file at %d bytes is: %s",
                   file_table.GetFileSize(slot),
                   file_table.GetFileName(slot));
    } else {
      hw.PrintLine("No files found..");
    }

    while(1){}
}