diff options
| author | jacqueline <me@jacqueline.id.au> | 2023-06-07 13:19:45 +1000 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2023-06-07 13:19:45 +1000 |
| commit | 1f903accd95361735c841c87fdc6494ad3331b40 (patch) | |
| tree | 5b69bd0548c06a93852a576fa90a170fa303a15e /src/drivers/i2s_dac.cpp | |
| parent | 2a568846bd8f1c9e23e86e7570557eed6f18cf9f (diff) | |
| download | tangara-fw-1f903accd95361735c841c87fdc6494ad3331b40.tar.gz | |
Flesh out audio state machine for playback
Also fix mono playback
Diffstat (limited to 'src/drivers/i2s_dac.cpp')
| -rw-r--r-- | src/drivers/i2s_dac.cpp | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/drivers/i2s_dac.cpp b/src/drivers/i2s_dac.cpp index 68e92970..dbbb58f1 100644 --- a/src/drivers/i2s_dac.cpp +++ b/src/drivers/i2s_dac.cpp @@ -116,24 +116,30 @@ auto I2SDac::Stop() -> void { i2s_active_ = false; } -auto I2SDac::Reconfigure(BitsPerSample bps, SampleRate rate) -> void { +auto I2SDac::Reconfigure(Channels ch, BitsPerSample bps, SampleRate rate) + -> void { if (i2s_active_) { i2s_channel_disable(i2s_handle_); } - uint8_t bps_bits = 0; + switch (ch) { + case CHANNELS_MONO: + slot_config_.slot_mode = I2S_SLOT_MODE_MONO; + break; + case CHANNELS_STEREO: + slot_config_.slot_mode = I2S_SLOT_MODE_STEREO; + break; + } + switch (bps) { case BPS_16: slot_config_.data_bit_width = I2S_DATA_BIT_WIDTH_16BIT; - bps_bits = 0; break; case BPS_24: slot_config_.data_bit_width = I2S_DATA_BIT_WIDTH_24BIT; - bps_bits = 0b10; break; case BPS_32: slot_config_.data_bit_width = I2S_DATA_BIT_WIDTH_32BIT; - bps_bits = 0b11; break; } ESP_ERROR_CHECK(i2s_channel_reconfig_std_slot(i2s_handle_, &slot_config_)); |
