Skip to content

Commit 8639e2a

Browse files
committed
The a2dp example for vs1053 does not work
1 parent b8735d8 commit 8639e2a

File tree

3 files changed

+16
-76
lines changed

3 files changed

+16
-76
lines changed

examples/examples-vs1053/basic-a2dp-vs1053/basic-a2dp-vs1053.ino

Lines changed: 0 additions & 68 deletions
This file was deleted.

examples/sandbox/basic-a2dp-vs1053/basic-a2dp-vs1053.ino

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,21 +15,23 @@
1515

1616
BluetoothA2DPSink a2dp_sink;
1717
VS1053Stream out; // final output
18-
18+
bool active = false;
1919
// Write data to SPDIF in callback
2020
void read_data_stream(const uint8_t *data, uint32_t length) {
21-
out.write(data, length);
21+
if (active) out.write(data, length);
2222
}
2323

24-
// Start and Stop VS1053Stream to make sure that WAV header is generated
24+
// for esp_a2d_audio_state_t see https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/bluetooth/esp_a2dp.html#_CPPv421esp_a2d_audio_state_t
2525
void audio_state_changed(esp_a2d_audio_state_t state, void *ptr){
2626
Serial.println(a2dp_sink.to_str(state));
2727
switch(state){
2828
case ESP_A2D_AUDIO_STATE_STARTED:
2929
out.begin();
30+
active = true;
3031
break;
3132
case ESP_A2D_AUDIO_STATE_STOPPED:
3233
case ESP_A2D_AUDIO_STATE_REMOTE_SUSPEND:
34+
active = false;
3335
out.end();
3436
break;
3537
}
@@ -38,7 +40,7 @@ void audio_state_changed(esp_a2d_audio_state_t state, void *ptr){
3840

3941
void setup() {
4042
Serial.begin(115200);
41-
AudioLogger::instance().begin(Serial, AudioLogger::Warning);
43+
AudioLogger::instance().begin(Serial, AudioLogger::Info);
4244

4345
// register callbacks
4446
a2dp_sink.set_stream_reader(read_data_stream, false);
@@ -48,7 +50,7 @@ void setup() {
4850
a2dp_sink.set_auto_reconnect(false);
4951
a2dp_sink.start("a2dp-vs1053");
5052

51-
// setup output
53+
// setup VS1053
5254
auto cfg = out.defaultConfig();
5355
cfg.sample_rate = a2dp_sink.sample_rate();
5456
cfg.channels = 2;
@@ -60,6 +62,7 @@ void setup() {
6062
//cfg.reset_pin = VS1053_RESET;
6163

6264
out.begin(cfg);
65+
out.end();
6366
}
6467

65-
void loop() { delay(1000); }
68+
void loop() { delay(1000); }

src/AudioLibs/VS1053Stream.h

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class VS1053Config : public AudioBaseInfo {
2424
channels = 2;
2525
bits_per_sample = 16;
2626
}
27-
RxTxMode mode;
27+
RxTxMode mode = TX_MODE;
2828
/// set to false if it is a pcm stream
2929
uint8_t cs_pin = VS1053_CS;
3030
uint8_t dcs_pin = VS1053_DCS;
@@ -83,10 +83,14 @@ class VS1053Stream : public AudioStreamX {
8383
}
8484

8585
/// defines the default configuration that is used with the next begin()
86-
void setConfig(VS1053Config c){
86+
void setAudioInfo(VS1053Config c){
8787
cfg = c;
8888
}
8989

90+
void setAudioInfo(AudioBaseInfo c){
91+
cfg.copyFrom(c);
92+
}
93+
9094
/// Starts with the default config or restarts
9195
bool begin() {
9296
return begin(cfg);
@@ -102,6 +106,7 @@ class VS1053Stream : public AudioStreamX {
102106
}
103107
this->cfg = cfg;
104108
setAudioInfo(cfg);
109+
cfg.logInfo();
105110
LOGI("is_encoded_data: %s", cfg.is_encoded_data?"true":"false");
106111
LOGI("is_midi: %s", cfg.is_midi?"true":"false");
107112
LOGI("cs_pin: %d", cfg.cs_pin);

0 commit comments

Comments
 (0)