arduino-audio-tools
Loading...
Searching...
No Matches
AudioSourceSPIFFS.h
Go to the documentation of this file.
1#pragma once
2
3#include <SPIFFS.h>
4#include "AudioLogger.h"
7
8namespace audio_tools {
9
20public:
22 AudioSourceSPIFFS(const char *startFilePath = "/", const char *ext = ".mp3") {
24 exension = ext;
25 }
26
28 end();
29 }
30
31 virtual bool begin() override {
32 TRACED();
33 if (!is_sd_setup) {
34 int retry = 10;
35 while (!SPIFFS.begin()) {
36 LOGE("SPIFFS.begin failed");
37 delay(500);
38 if (--retry <= 0) {
39 return false;
40 }
41 }
42 is_sd_setup = true;
43 }
45 idx_pos = 0;
46 return is_sd_setup;
47 }
48
49 void end() {
50 file.close();
51 SPIFFS.end();
52 is_sd_setup = false;
53 }
54
55 virtual Stream *nextStream(int offset = 1) override {
56 LOGI("nextStream: %d", offset);
57 return selectStream(idx_pos + offset);
58 }
59
60 virtual Stream *selectStream(int index) override {
61 LOGI("selectStream: %d", index);
62 file.close();
63 idx_pos = index;
65 if (file_name==nullptr) return nullptr;
66 LOGI("Using file %s", file_name);
68 return file ? &file : nullptr;
69 }
70
71 virtual Stream *selectStream(const char *path) override {
72 file.close();
73 file = SPIFFS.open(path);
75 LOGI("-> selectStream: %s", path);
76 return file ? &file : nullptr;
77 }
78
81 void setFileFilter(const char *filter) { file_name_pattern = filter; }
82
84 int index() { return idx_pos; }
85
87 const char *toStr() { return file_name; }
88
89 // provides default setting go to the next
90 virtual bool isAutoNext() { return true; }
91
93 virtual void setPath(const char *p) { start_path = p; }
94
96 long size() { return idx.size();}
97
98protected:
101 size_t idx_pos = 0;
102 const char *file_name;
103 const char *exension = nullptr;
104 const char *start_path = nullptr;
105 const char *file_name_pattern = "*";
106 bool is_sd_setup = false;
107};
108
109} // namespace audio_tools
#define TRACED()
Definition AudioLoggerIDF.h:31
#define LOGI(...)
Definition AudioLoggerIDF.h:28
#define LOGE(...)
Definition AudioLoggerIDF.h:30
Definition Arduino.h:136
Abstract Audio Data Source for the AudioPlayer which is used by the Audio Players.
Definition AudioSource.h:17
ESP32 AudioSource for AudioPlayer using an the SPIFFS file system.
Definition AudioSourceSPIFFS.h:19
int index()
Provides the current index position.
Definition AudioSourceSPIFFS.h:84
AudioSourceSPIFFS(const char *startFilePath="/", const char *ext=".mp3")
Default constructor.
Definition AudioSourceSPIFFS.h:22
const char * exension
Definition AudioSourceSPIFFS.h:103
long size()
Provides the number of files (The max index is size()-1): WARNING this is very slow if you have a lot...
Definition AudioSourceSPIFFS.h:96
bool is_sd_setup
Definition AudioSourceSPIFFS.h:106
virtual Stream * selectStream(int index) override
Definition AudioSourceSPIFFS.h:60
virtual bool begin() override
Reset actual stream and move to root.
Definition AudioSourceSPIFFS.h:31
SDDirect< fs::SPIFFSFS, fs::File > idx
Definition AudioSourceSPIFFS.h:99
File file
Definition AudioSourceSPIFFS.h:100
size_t idx_pos
Definition AudioSourceSPIFFS.h:101
virtual ~AudioSourceSPIFFS()
Definition AudioSourceSPIFFS.h:27
const char * start_path
Definition AudioSourceSPIFFS.h:104
const char * toStr()
provides the actual file name
Definition AudioSourceSPIFFS.h:87
const char * file_name
Definition AudioSourceSPIFFS.h:102
virtual void setPath(const char *p)
Allows to "correct" the start path if not defined in the constructor.
Definition AudioSourceSPIFFS.h:93
virtual bool isAutoNext()
Returns default setting go to the next.
Definition AudioSourceSPIFFS.h:90
virtual Stream * nextStream(int offset=1) override
Returns next audio stream.
Definition AudioSourceSPIFFS.h:55
void end()
Definition AudioSourceSPIFFS.h:49
void setFileFilter(const char *filter)
Definition AudioSourceSPIFFS.h:81
const char * file_name_pattern
Definition AudioSourceSPIFFS.h:105
virtual Stream * selectStream(const char *path) override
Returns audio stream by path: The index is not changed!
Definition AudioSourceSPIFFS.h:71
We access the files directy with an index. The index is determined by a recurseve tree walk thru the ...
Definition SDDirect.h:22
long size()
Provides the number of files.
Definition SDDirect.h:50
void begin(const char *startDir, const char *extension, const char *file_name_pattern)
Definition SDDirect.h:26
Arduino File API for Zephyr.
Definition ZephyrFile.h:23
void close()
Definition ZephyrFile.h:67
const char * name() const
Definition ZephyrFile.h:200
bool open(const char *file_path, fs_mode_t mode=FS_O_READ)
Definition ZephyrFile.h:44
Generic Implementation of sound input and output for desktop environments using portaudio.
Definition AudioCodecsBase.h:10
void delay(uint32_t ms)
Definition Arduino.h:255
size_t writeData(Print *p_out, T *data, int samples, int maxSamples=512)
Definition AudioTypes.h:508