summaryrefslogtreecommitdiff
path: root/src/drivers/i2s_audio_output.cpp
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2022-11-15 14:40:17 +1100
committerjacqueline <me@jacqueline.id.au>2022-11-15 14:40:17 +1100
commitaef2eb7566e7f8f6caf2481942ce67a31f007563 (patch)
tree12a039f2a9e60e35c523f0c2d328de4514438df3 /src/drivers/i2s_audio_output.cpp
parent530fd15e66a2c89c0dcd6edd1b2a318958c349a4 (diff)
downloadtangara-fw-aef2eb7566e7f8f6caf2481942ce67a31f007563.tar.gz
fix build
Diffstat (limited to 'src/drivers/i2s_audio_output.cpp')
-rw-r--r--src/drivers/i2s_audio_output.cpp33
1 files changed, 20 insertions, 13 deletions
diff --git a/src/drivers/i2s_audio_output.cpp b/src/drivers/i2s_audio_output.cpp
index 6b231f0e..8505895b 100644
--- a/src/drivers/i2s_audio_output.cpp
+++ b/src/drivers/i2s_audio_output.cpp
@@ -1,19 +1,24 @@
#include "i2s_audio_output.hpp"
+
#include <algorithm>
-#include "audio_output.hpp"
-#include "gpio-expander.hpp"
+
+#include "audio_element.h"
+#include "driver/i2s.h"
+#include "esp_err.h"
+#include "freertos/portmacro.h"
+#include "i2s_stream.h"
static const i2s_port_t kI2SPort = I2S_NUM_0;
+static const char* kTag = "I2SOUT";
namespace drivers {
-auto I2SAudioOutput::create(GpioExpander *expander)
+auto I2SAudioOutput::create(GpioExpander* expander)
-> cpp::result<std::unique_ptr<I2SAudioOutput>, Error> {
-
// First, we need to perform initial configuration of the DAC chip.
auto dac_result = drivers::AudioDac::create(expander);
if (dac_result.has_error()) {
- ESP_LOGE(TAG, "failed to init dac: %d", dac_result.error());
+ ESP_LOGE(kTag, "failed to init dac: %d", dac_result.error());
return cpp::fail(DAC_CONFIG);
}
std::unique_ptr<AudioDac> dac = std::move(dac_result.value());
@@ -54,7 +59,8 @@ auto I2SAudioOutput::create(GpioExpander *expander)
.need_expand = false,
.expand_src_bits = I2S_BITS_PER_SAMPLE_16BIT,
};
- i2s_stream_writer = i2s_stream_init(&i2s_stream_config);
+ audio_element_handle_t i2s_stream_writer =
+ i2s_stream_init(&i2s_stream_config);
if (i2s_stream_writer == NULL) {
return cpp::fail(Error::STREAM_INIT);
}
@@ -74,8 +80,10 @@ auto I2SAudioOutput::create(GpioExpander *expander)
return std::make_unique<I2SAudioOutput>(dac, i2s_stream_writer);
}
-I2SAudioOutput(std::unique<AudioDac> dac, audio_element_handle_t element) : IAudioOutput(element), dac_(dac) {}
-~I2SAudioOutput() {
+I2SAudioOutput::I2SAudioOutput(std::unique_ptr<AudioDac>& dac,
+ audio_element_handle_t element)
+ : IAudioOutput(element), dac_(std::move(dac)) {}
+I2SAudioOutput::~I2SAudioOutput() {
// TODO: power down the DAC.
}
@@ -83,10 +91,9 @@ auto I2SAudioOutput::SetVolume(uint8_t volume) -> void {
dac_->WriteVolume(255);
}
-auto I2SAudioOutput::Configure(audio_element_info_t info) -> void {
- audio_element_setinfo(element_, &music_info);
- i2s_stream_set_clk(element_, music_info.sample_rates,
- music_info.bits, music_info.channels);
+auto I2SAudioOutput::Configure(audio_element_info_t& info) -> void {
+ audio_element_setinfo(element_, &info);
+ i2s_stream_set_clk(element_, info.sample_rates, info.bits, info.channels);
}
-}
+} // namespace drivers