Skip to content

Commit

Permalink
Add a AudioFileSourceFS object
Browse files Browse the repository at this point in the history
Allow passing in SDFS, LittleFS, or SPIFFS to access files for the audio
playback.
  • Loading branch information
earlephilhower committed Apr 13, 2019
1 parent 22b52e0 commit 65220b8
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 27 deletions.
2 changes: 1 addition & 1 deletion keywords.txt
@@ -1,6 +1,6 @@
AudioFileSource KEYWORD1
AudioFileSourceSPIFFS KEYWORD1
AudioFileSourceFastROMFS KEYWORD1
AudioFileSourceFS KEYWORD1
AudioFileSourcePROGMEM KEYWORD1
AudioFileSourceHTTPStream KEYWORD1
AudioFileSourceICYStream KEYWORD1
Expand Down
31 changes: 14 additions & 17 deletions src/AudioFileSourceSPIFFS.cpp → src/AudioFileSourceFS.cpp
@@ -1,6 +1,6 @@
/*
AudioFileSourceSPIFFS
Input SPIFFS "file" to be used by AudioGenerator
AudioFileSourceFS
Input "file" to be used by AudioGenerator
Copyright (C) 2017 Earle F. Philhower, III
Expand All @@ -18,54 +18,51 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

#include "AudioFileSourceSPIFFS.h"
#include "AudioFileSourceFS.h"
#ifdef ESP32
#include "SPIFFS.h"
#endif

AudioFileSourceSPIFFS::AudioFileSourceSPIFFS()
{
}

AudioFileSourceSPIFFS::AudioFileSourceSPIFFS(const char *filename)
AudioFileSourceFS::AudioFileSourceFS(FS &fs, const char *filename)
{
filesystem = &fs;
open(filename);
}

bool AudioFileSourceSPIFFS::open(const char *filename)
bool AudioFileSourceFS::open(const char *filename)
{
SPIFFS.begin();
f = SPIFFS.open(filename, "r");
filesystem->begin();
f = filesystem->open(filename, "r");
return f;
}

AudioFileSourceSPIFFS::~AudioFileSourceSPIFFS()
AudioFileSourceFS::~AudioFileSourceFS()
{
if (f) f.close();
}

uint32_t AudioFileSourceSPIFFS::read(void *data, uint32_t len)
uint32_t AudioFileSourceFS::read(void *data, uint32_t len)
{
return f.read(reinterpret_cast<uint8_t*>(data), len);
}

bool AudioFileSourceSPIFFS::seek(int32_t pos, int dir)
bool AudioFileSourceFS::seek(int32_t pos, int dir)
{
return f.seek(pos, (dir==SEEK_SET)?SeekSet:(dir==SEEK_CUR)?SeekCur:SeekEnd);
}

bool AudioFileSourceSPIFFS::close()
bool AudioFileSourceFS::close()
{
f.close();
return true;
}

bool AudioFileSourceSPIFFS::isOpen()
bool AudioFileSourceFS::isOpen()
{
return f?true:false;
}

uint32_t AudioFileSourceSPIFFS::getSize()
uint32_t AudioFileSourceFS::getSize()
{
if (!f) return 0;
return f.size();
Expand Down
19 changes: 10 additions & 9 deletions src/AudioFileSourceSPIFFS.h → src/AudioFileSourceFS.h
@@ -1,6 +1,6 @@
/*
AudioFileSourceSPIFFS
Input SPIFFS "file" to be used by AudioGenerator
AudioFileSourceFS
Input Arduion "file" to be used by AudioGenerator
Copyright (C) 2017 Earle F. Philhower, III
Expand All @@ -18,20 +18,20 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

#ifndef _AUDIOFILESOURCESPIFFS_H
#define _AUDIOFILESOURCESPIFFS_H
#ifndef _AUDIOFILESOURCEFS_H
#define _AUDIOFILESOURCEFS_H

#include <Arduino.h>
#include <FS.h>

#include "AudioFileSource.h"

class AudioFileSourceSPIFFS : public AudioFileSource
class AudioFileSourceFS : public AudioFileSource
{
public:
AudioFileSourceSPIFFS();
AudioFileSourceSPIFFS(const char *filename);
virtual ~AudioFileSourceSPIFFS() override;
AudioFileSourceFS(FS &fs) { filesystem = &fs; }
AudioFileSourceFS(FS &fs, const char *filename);
virtual ~AudioFileSourceFS() override;

virtual bool open(const char *filename) override;
virtual uint32_t read(void *data, uint32_t len) override;
Expand All @@ -42,7 +42,8 @@ class AudioFileSourceSPIFFS : public AudioFileSource
virtual uint32_t getPos() override { if (!f) return 0; else return f.position(); };

private:
fs::File f;
FS *filesystem;
File f;
};


Expand Down

0 comments on commit 65220b8

Please sign in to comment.