8 #if A2DP_LEGACY_I2S_SUPPORT
9 #include "driver/i2s.h"
12 #if A2DP_I2S_AUDIOTOOLS
13 #include "AudioTools.h"
24 virtual bool begin() = 0;
25 virtual size_t write(
const uint8_t *data,
size_t len) = 0;
26 virtual void end() = 0;
27 virtual void set_sample_rate(
int rate);
28 virtual void set_output_active(
bool active);
30 #if A2DP_I2S_AUDIOTOOLS
42 #if A2DP_LEGACY_I2S_SUPPORT
44 virtual void set_pin_config(i2s_pin_config_t pin_config) {}
46 virtual void set_i2s_port(i2s_port_t i2s_num) {}
49 virtual void set_i2s_config(i2s_config_t i2s_config) {}
53 virtual void set_bits_per_sample(
int bps) {}
55 #if ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 1, 1)
57 virtual esp_err_t i2s_mclk_pin_select(
const uint8_t pin) {
return ESP_FAIL; };
72 bool begin()
override;
73 size_t write(
const uint8_t *data,
size_t len)
override;
75 void set_sample_rate(
int rate)
override;
76 void set_output_active(
bool active)
override;
78 operator bool() {
return p_print !=
nullptr; }
80 #if A2DP_I2S_AUDIOTOOLS
85 p_audio_print = &output;
90 static AdapterAudioStreamToAudioOutput adapter(output);
92 p_audio_print = &adapter;
102 #if defined(ARDUINO) || defined(A2DP_I2S_AUDIOTOOLS)
103 Print *p_print =
nullptr;
106 #if A2DP_I2S_AUDIOTOOLS
107 AudioOutput *p_audio_print =
nullptr;
119 bool begin()
override;
120 size_t write(
const uint8_t *data,
size_t len)
override;
122 void set_sample_rate(
int rate)
override;
123 void set_output_active(
bool active)
override;
125 #if A2DP_LEGACY_I2S_SUPPORT
127 virtual void set_pin_config(i2s_pin_config_t pin_config) {
128 this->pin_config = pin_config;
131 virtual void set_i2s_port(i2s_port_t i2s_num) { i2s_port = i2s_num; }
134 virtual void set_i2s_config(i2s_config_t i2s_config) {
135 this->i2s_config = i2s_config;
140 virtual void set_bits_per_sample(
int bps) {
141 i2s_config.bits_per_sample = (i2s_bits_per_sample_t)bps;
144 #if ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 1, 1)
145 virtual esp_err_t i2s_mclk_pin_select(
const uint8_t pin);
149 i2s_config_t i2s_config;
150 i2s_pin_config_t pin_config;
151 i2s_channel_t i2s_channels = I2S_CHANNEL_STEREO;
152 i2s_port_t i2s_port = I2S_NUM_0;
168 rc = out_tools.begin();
170 rc = out_legacy.begin();
173 size_t write(
const uint8_t *data,
size_t len) {
176 result = out_tools.write(data, len);
178 result = out_legacy.write(data, len);
181 void end()
override {
187 void set_sample_rate(
int rate)
override {
189 out_tools.set_sample_rate(rate);
191 out_legacy.set_sample_rate(rate);
193 void set_output_active(
bool active)
override {
195 out_tools.set_output_active(active);
197 out_legacy.set_output_active(active);
200 #if A2DP_I2S_AUDIOTOOLS
212 #if A2DP_LEGACY_I2S_SUPPORT
214 virtual void set_pin_config(i2s_pin_config_t pin_config) {
215 out_legacy.set_pin_config(pin_config);
218 virtual void set_i2s_port(i2s_port_t i2s_num) {
219 out_legacy.set_i2s_port(i2s_num);
223 virtual void set_i2s_config(i2s_config_t i2s_config) {
224 out_legacy.set_i2s_config(i2s_config);
229 virtual void set_bits_per_sample(
int bps) {
230 out_legacy.set_bits_per_sample(bps);
233 #if ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 1, 1)
234 virtual esp_err_t i2s_mclk_pin_select(
const uint8_t pin) {
235 return out_legacy.i2s_mclk_pin_select(pin);
Default Output Class providing both the Legacy I2S and the AudioTools I2S functionality.
Definition: BluetoothOutput.h:162
void set_output(AudioStream &output)
Output AudioStream using AudioTools library.
Definition: BluetoothOutput.h:204
void set_output(AudioOutput &output)
Output AudioStream using AudioTools library.
Definition: BluetoothOutput.h:202
void set_output(Print &output)
Output to Arduino Print.
Definition: BluetoothOutput.h:209
Abstract Output Class.
Definition: BluetoothOutput.h:22
void set_output(AudioStream &output)
Not implemented.
Definition: BluetoothOutput.h:34
void set_output(AudioOutput &output)
Not implemented.
Definition: BluetoothOutput.h:32
void set_output(Print &output)
Not implemented.
Definition: BluetoothOutput.h:39
Legacy I2S Output Class.
Definition: BluetoothOutput.h:116