arduino-audio-tools
Loading...
Searching...
No Matches
src
AudioTools
Disk
AudioSourceLittleFS.h
Go to the documentation of this file.
1
#pragma once
2
3
#include <LittleFS.h>
4
#include "AudioLogger.h"
5
#include "
AudioTools/Disk/AudioSource.h
"
6
#include "
AudioTools/Disk/SDDirect.h
"
7
8
namespace
audio_tools
{
9
17
class
AudioSourceLittleFS
:
public
AudioSource
{
18
public
:
20
AudioSourceLittleFS
(
const
char
*startFilePath =
"/"
,
const
char
*ext =
".mp3"
) {
21
start_path
= startFilePath;
22
exension
= ext;
23
}
24
25
virtual
bool
begin
()
override
{
26
TRACED
();
27
if
(!
is_sd_setup
) {
28
int
retry = 10;
29
while
(!LittleFS.begin()) {
30
LOGE
(
"LittleFS.begin failed"
);
31
delay
(500);
32
if
(--retry >= 0) {
33
return
false
;
34
}
35
}
36
is_sd_setup
=
true
;
37
}
38
idx
.begin(
start_path
,
exension
,
file_name_pattern
);
39
idx_pos
= 0;
40
return
is_sd_setup
;
41
}
42
43
void
end
() {
44
LittleFS.end();
45
is_sd_setup
=
false
;
46
}
47
48
virtual
Stream
*
nextStream
(
int
offset = 1)
override
{
49
LOGI
(
"nextStream: %d"
, offset);
50
return
selectStream
(
idx_pos
+ offset);
51
}
52
53
virtual
Stream
*
selectStream
(
int
index
)
override
{
54
LOGI
(
"selectStream: %d"
,
index
);
55
idx_pos
=
index
;
56
file_name
=
idx
[
index
];
57
if
(
file_name
==
nullptr
)
return
nullptr
;
58
LOGI
(
"Using file %s"
,
file_name
);
59
file
= LittleFS.open(
file_name
,
"r"
);
60
return
file
? &
file
:
nullptr
;
61
}
62
63
virtual
Stream
*
selectStream
(
const
char
*path)
override
{
64
file
.close();
65
file
= LittleFS.open(path,
"r"
);
66
file_name
=
file
.name();
67
LOGI
(
"-> selectStream: %s"
, path);
68
return
file
? &
file
:
nullptr
;
69
}
70
73
void
setFileFilter
(
const
char
*filter) {
file_name_pattern
= filter; }
74
76
int
index
() {
return
idx_pos
; }
77
79
const
char
*
toStr
() {
return
file_name
; }
80
81
// provides default setting go to the next
82
virtual
bool
isAutoNext
() {
return
true
; }
83
85
virtual
void
setPath
(
const
char
*p) {
start_path
= p; }
86
88
long
size
() {
return
idx
.size();}
89
90
protected
:
91
#ifdef RP2040_HOWER
92
SDDirect<FS,File>
idx
{LittleFS};
93
#else
94
SDDirect<fs::LittleFSFS,fs::File>
idx
{LittleFS};
95
#endif
96
File
file
;
97
size_t
idx_pos
= 0;
98
const
char
*
file_name
;
99
const
char
*
exension
=
nullptr
;
100
const
char
*
start_path
=
nullptr
;
101
const
char
*
file_name_pattern
=
"*"
;
102
bool
is_sd_setup
=
false
;
103
};
104
105
}
// 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::AudioSourceLittleFS::index
int index()
Provides the current index position.
Definition
AudioSourceLittleFS.h:76
audio_tools::AudioSourceLittleFS::exension
const char * exension
Definition
AudioSourceLittleFS.h:99
audio_tools::AudioSourceLittleFS::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
AudioSourceLittleFS.h:88
audio_tools::AudioSourceLittleFS::is_sd_setup
bool is_sd_setup
Definition
AudioSourceLittleFS.h:102
audio_tools::AudioSourceLittleFS::selectStream
virtual Stream * selectStream(int index) override
Definition
AudioSourceLittleFS.h:53
audio_tools::AudioSourceLittleFS::begin
virtual bool begin() override
Reset actual stream and move to root.
Definition
AudioSourceLittleFS.h:25
audio_tools::AudioSourceLittleFS::file
File file
Definition
AudioSourceLittleFS.h:96
audio_tools::AudioSourceLittleFS::idx_pos
size_t idx_pos
Definition
AudioSourceLittleFS.h:97
audio_tools::AudioSourceLittleFS::AudioSourceLittleFS
AudioSourceLittleFS(const char *startFilePath="/", const char *ext=".mp3")
Default constructor.
Definition
AudioSourceLittleFS.h:20
audio_tools::AudioSourceLittleFS::idx
SDDirect< fs::LittleFSFS, fs::File > idx
Definition
AudioSourceLittleFS.h:94
audio_tools::AudioSourceLittleFS::start_path
const char * start_path
Definition
AudioSourceLittleFS.h:100
audio_tools::AudioSourceLittleFS::toStr
const char * toStr()
provides the actual file name
Definition
AudioSourceLittleFS.h:79
audio_tools::AudioSourceLittleFS::file_name
const char * file_name
Definition
AudioSourceLittleFS.h:98
audio_tools::AudioSourceLittleFS::setPath
virtual void setPath(const char *p)
Allows to "correct" the start path if not defined in the constructor.
Definition
AudioSourceLittleFS.h:85
audio_tools::AudioSourceLittleFS::isAutoNext
virtual bool isAutoNext()
Returns default setting go to the next.
Definition
AudioSourceLittleFS.h:82
audio_tools::AudioSourceLittleFS::nextStream
virtual Stream * nextStream(int offset=1) override
Returns next audio stream.
Definition
AudioSourceLittleFS.h:48
audio_tools::AudioSourceLittleFS::end
void end()
Definition
AudioSourceLittleFS.h:43
audio_tools::AudioSourceLittleFS::setFileFilter
void setFileFilter(const char *filter)
Definition
AudioSourceLittleFS.h:73
audio_tools::AudioSourceLittleFS::file_name_pattern
const char * file_name_pattern
Definition
AudioSourceLittleFS.h:101
audio_tools::AudioSourceLittleFS::selectStream
virtual Stream * selectStream(const char *path) override
Returns audio stream by path: The index is not changed!
Definition
AudioSourceLittleFS.h:63
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