3
3
#include " AudioTools/AudioStreams.h"
4
4
#include " VS1053.h"
5
5
#include " AudioCodecs/CodecCopy.h"
6
+
6
7
namespace audio_tools {
7
8
8
9
/* *
@@ -22,7 +23,11 @@ class VS1053BaseStream : public AudioStreamX {
22
23
23
24
bool begin () {
24
25
LOGD (LOG_METHOD);
25
- p_vs1053 = new VS1053 (_cs_pin,_dcs_pin,_dreq_pin, _reset_pin);
26
+ if (_reset_pin!=-1 ){
27
+ pinMode (_reset_pin, OUTPUT);
28
+ digitalWrite (_reset_pin, HIGH);
29
+ }
30
+ p_vs1053 = new VS1053 (_cs_pin,_dcs_pin,_dreq_pin);
26
31
// initialize SPI
27
32
SPI.begin ();
28
33
@@ -81,6 +86,21 @@ class VS1053BaseStream : public AudioStreamX {
81
86
return static_cast <float >(p_vs1053->getBalance ())/100.0 ;
82
87
}
83
88
89
+
90
+ // / Write encoded (mp3, aac, wav etc) data
91
+ virtual size_t write (const uint8_t *buffer, size_t size) override {
92
+ if (p_vs1053==nullptr ) return 0 ;
93
+ p_vs1053->playChunk ((uint8_t *)buffer, size);
94
+ return size;
95
+ }
96
+
97
+ VS1053 &getVS1053 () {
98
+ LOGD (LOG_METHOD);
99
+ if (p_vs1053==nullptr ) begin ();
100
+ return *p_vs1053;
101
+ }
102
+
103
+ #if VS1053_EXT
84
104
// / Provides the treble amplitude value
85
105
float treble () {
86
106
LOGD (LOG_METHOD);
@@ -128,19 +148,7 @@ class VS1053BaseStream : public AudioStreamX {
128
148
p_vs1053->setBassFrequencyLimit (value);
129
149
}
130
150
}
131
-
132
- // / Write encoded (mp3, aac, wav etc) data
133
- virtual size_t write (const uint8_t *buffer, size_t size) override {
134
- if (p_vs1053==nullptr ) return 0 ;
135
- p_vs1053->playChunk ((uint8_t *)buffer, size);
136
- return size;
137
- }
138
-
139
- VS1053 &getVS1053 () {
140
- LOGD (LOG_METHOD);
141
- if (p_vs1053==nullptr ) begin ();
142
- return *p_vs1053;
143
- }
151
+ #endif
144
152
145
153
protected:
146
154
VS1053 *p_vs1053 = nullptr ;
@@ -267,6 +275,34 @@ class VS1053Stream : public AudioStreamX {
267
275
return p_driver->balance ();
268
276
}
269
277
278
+ // / Write audio data
279
+ virtual size_t write (const uint8_t *buffer, size_t size) override {
280
+ if (p_out==nullptr ) return 0 ;
281
+ return p_out->write (buffer, size);
282
+ }
283
+
284
+ // / returns the VS1053 object
285
+ VS1053 &getVS1053 () {
286
+ LOGD (LOG_METHOD);
287
+ return p_driver->getVS1053 ();
288
+ }
289
+
290
+ // / Defines an alternative encoder that will be used (e.g. MP3Encoder). It must be allocated on the heap!
291
+ bool setEncoder (AudioEncoder *enc){
292
+ LOGI (LOG_METHOD);
293
+ if (p_out!=nullptr ){
294
+ logError (" setEncoder" );
295
+ return false ;
296
+ }
297
+ if (p_encoder!=nullptr ){
298
+ delete p_encoder;
299
+ p_encoder = enc;
300
+ }
301
+ return true ;
302
+ }
303
+
304
+ #if VS1053_EXT
305
+
270
306
// / Provides the treble amplitude value
271
307
float treble () {
272
308
LOGD (LOG_METHOD);
@@ -325,32 +361,7 @@ class VS1053Stream : public AudioStreamX {
325
361
}
326
362
p_driver->setBassFrequencyLimit (value);
327
363
}
328
-
329
- // / Write audio data
330
- virtual size_t write (const uint8_t *buffer, size_t size) override {
331
- if (p_out==nullptr ) return 0 ;
332
- return p_out->write (buffer, size);
333
- }
334
-
335
- // / returns the VS1053 object
336
- VS1053 &getVS1053 () {
337
- LOGD (LOG_METHOD);
338
- return p_driver->getVS1053 ();
339
- }
340
-
341
- // / Defines an alternative encoder that will be used (e.g. MP3Encoder). It must be allocated on the heap!
342
- bool setEncoder (AudioEncoder *enc){
343
- LOGI (LOG_METHOD);
344
- if (p_out!=nullptr ){
345
- logError (" setEncoder" );
346
- return false ;
347
- }
348
- if (p_encoder!=nullptr ){
349
- delete p_encoder;
350
- p_encoder = enc;
351
- }
352
- return true ;
353
- }
364
+ #endif
354
365
355
366
protected:
356
367
VS1053Config cfg;
0 commit comments