arduino-audio-tools
Loading...
Searching...
No Matches
src
AudioTools
Disk
AudioSourceSPIFFS.h
Go to the documentation of this file.
1
#pragma once
2
3
#include <SPIFFS.h>
4
#include "AudioLogger.h"
5
#include "
AudioTools/Disk/AudioSource.h
"
6
#include "
AudioTools/Disk/SDDirect.h
"
7
8
namespace
audio_tools
{
9
19
class
AudioSourceSPIFFS
:
public
AudioSource
{
20
public
:
22
AudioSourceSPIFFS
(
const
char
*startFilePath =
"/"
,
const
char
*ext =
".mp3"
) {
23
start_path
= startFilePath;
24
exension
= ext;
25
}
26
27
virtual
~AudioSourceSPIFFS
() {
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
}
44
idx
.begin(
start_path
,
exension
,
file_name_pattern
);
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
;
64
file_name
=
idx
[
index
];
65
if
(
file_name
==
nullptr
)
return
nullptr
;
66
LOGI
(
"Using file %s"
,
file_name
);
67
file
= SPIFFS.open(
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);
74
file_name
=
file
.name();
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
98
protected
:
99
SDDirect<fs::SPIFFSFS,fs::File>
idx
{SPIFFS};
100
File
file
;
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
AudioSource.h
TRACED
#define TRACED()
LOGI
#define LOGI(...)
LOGE
#define LOGE(...)
SDDirect.h
audio_tools::AudioSource
Abstract Audio Data Source for the AudioPlayer which is used by the Audio Players.
Definition
AudioSource.h:17
audio_tools::AudioSourceSPIFFS::index
int index()
Provides the current index position.
Definition
AudioSourceSPIFFS.h:84
audio_tools::AudioSourceSPIFFS::AudioSourceSPIFFS
AudioSourceSPIFFS(const char *startFilePath="/", const char *ext=".mp3")
Default constructor.
Definition
AudioSourceSPIFFS.h:22
audio_tools::AudioSourceSPIFFS::exension
const char * exension
Definition
AudioSourceSPIFFS.h:103
audio_tools::AudioSourceSPIFFS::size
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
audio_tools::AudioSourceSPIFFS::is_sd_setup
bool is_sd_setup
Definition
AudioSourceSPIFFS.h:106
audio_tools::AudioSourceSPIFFS::selectStream
virtual Stream * selectStream(int index) override
Definition
AudioSourceSPIFFS.h:60
audio_tools::AudioSourceSPIFFS::begin
virtual bool begin() override
Reset actual stream and move to root.
Definition
AudioSourceSPIFFS.h:31
audio_tools::AudioSourceSPIFFS::idx
SDDirect< fs::SPIFFSFS, fs::File > idx
Definition
AudioSourceSPIFFS.h:99
audio_tools::AudioSourceSPIFFS::file
File file
Definition
AudioSourceSPIFFS.h:100
audio_tools::AudioSourceSPIFFS::idx_pos
size_t idx_pos
Definition
AudioSourceSPIFFS.h:101
audio_tools::AudioSourceSPIFFS::~AudioSourceSPIFFS
virtual ~AudioSourceSPIFFS()
Definition
AudioSourceSPIFFS.h:27
audio_tools::AudioSourceSPIFFS::start_path
const char * start_path
Definition
AudioSourceSPIFFS.h:104
audio_tools::AudioSourceSPIFFS::toStr
const char * toStr()
provides the actual file name
Definition
AudioSourceSPIFFS.h:87
audio_tools::AudioSourceSPIFFS::file_name
const char * file_name
Definition
AudioSourceSPIFFS.h:102
audio_tools::AudioSourceSPIFFS::setPath
virtual void setPath(const char *p)
Allows to "correct" the start path if not defined in the constructor.
Definition
AudioSourceSPIFFS.h:93
audio_tools::AudioSourceSPIFFS::isAutoNext
virtual bool isAutoNext()
Returns default setting go to the next.
Definition
AudioSourceSPIFFS.h:90
audio_tools::AudioSourceSPIFFS::nextStream
virtual Stream * nextStream(int offset=1) override
Returns next audio stream.
Definition
AudioSourceSPIFFS.h:55
audio_tools::AudioSourceSPIFFS::end
void end()
Definition
AudioSourceSPIFFS.h:49
audio_tools::AudioSourceSPIFFS::setFileFilter
void setFileFilter(const char *filter)
Definition
AudioSourceSPIFFS.h:81
audio_tools::AudioSourceSPIFFS::file_name_pattern
const char * file_name_pattern
Definition
AudioSourceSPIFFS.h:105
audio_tools::AudioSourceSPIFFS::selectStream
virtual Stream * selectStream(const char *path) override
Returns audio stream by path: The index is not changed!
Definition
AudioSourceSPIFFS.h:71
audio_tools::SDDirect
We access the files directy with an index. The index is determined by a recurseve tree walk thru the ...
Definition
SDDirect.h:22
audio_tools::Stream
Definition
CodecOpusOgg.h:137
audio_tools
Generic Implementation of sound input and output for desktop environments using portaudio.
Definition
LMSEchoCancellationStream.h:6
audio_tools::File
ZephyrFile File
Definition
ZephyrFile.h:235
audio_tools::delay
void delay(uint32_t ms)
Definition
Arduino.h:259
Generated by
1.15.0