WIP Commit- Lua setters for volume, bluetooth todo

custom
ailurux 1 year ago
parent 5141c9f0bd
commit 6586819171
  1. 19
      src/audio/audio_fsm.cpp
  2. 12
      src/audio/bt_audio_output.cpp
  3. 14
      src/audio/i2s_audio_output.cpp
  4. 3
      src/audio/include/audio_sink.hpp
  5. 2
      src/audio/include/bt_audio_output.hpp
  6. 2
      src/audio/include/i2s_audio_output.hpp

@ -98,7 +98,24 @@ void AudioState::react(const system_fsm::HasPhonesChanged& ev) {
}
void AudioState::react(const SetVolume& ev) {
// TODO.
if (ev.db.has_value()) {
if (sOutput->SetVolumeDb(ev.db.value())) {
commitVolume();
events::Ui().Dispatch(VolumeChanged{
.percent = sOutput->GetVolumePct(),
.db = sOutput->GetVolumeDb(),
});
}
} else if (ev.percent.has_value()) {
if (sOutput->SetVolumePct(ev.percent.value())) {
commitVolume();
events::Ui().Dispatch(VolumeChanged{
.percent = sOutput->GetVolumePct(),
.db = sOutput->GetVolumeDb(),
});
}
}
}
void AudioState::react(const SetVolumeLimit& ev) {

@ -57,10 +57,22 @@ auto BluetoothAudioOutput::GetVolumePct() -> uint_fast8_t {
return static_cast<uint_fast8_t>(static_cast<int>(volume_) * 100 / 0x7f);
}
auto BluetoothAudioOutput::SetVolumePct(uint_fast8_t val) -> bool {
// TODO
ESP_LOGE(kTag, "Not implemented");
return false;
}
auto BluetoothAudioOutput::GetVolumeDb() -> int_fast16_t {
return 0;
}
auto BluetoothAudioOutput::SetVolumeDb(int_fast16_t) -> bool {
// TODO
ESP_LOGE(kTag, "Not implemented");
return false;
}
auto BluetoothAudioOutput::AdjustVolumeUp() -> bool {
if (volume_ == 0x7f) {
return false;

@ -111,6 +111,15 @@ auto I2SAudioOutput::GetVolumePct() -> uint_fast8_t {
return (current_volume_ - kMinVolume) * 100 / (max_volume_ - kMinVolume);
}
auto I2SAudioOutput::SetVolumePct(uint_fast8_t val) -> bool {
if (val > 100) {
return false;
}
uint16_t vol = (val * (max_volume_ - kMinVolume))/100 + kMinVolume;
SetVolume(vol);
return true;
}
auto I2SAudioOutput::GetVolumeDb() -> int_fast16_t {
// Add two before dividing in order to round correctly.
return (static_cast<int>(current_volume_) -
@ -118,6 +127,11 @@ auto I2SAudioOutput::GetVolumeDb() -> int_fast16_t {
4;
}
auto I2SAudioOutput::SetVolumeDb(int_fast16_t val) -> bool {
SetVolume(val * 4 + static_cast<int>(drivers::wm8523::kLineLevelReferenceVolume) - 2);
return true;
}
auto I2SAudioOutput::AdjustVolumeUp() -> bool {
if (GetVolume() >= max_volume_) {
return false;

@ -52,6 +52,9 @@ class IAudioOutput {
virtual auto GetVolumePct() -> uint_fast8_t = 0;
virtual auto GetVolumeDb() -> int_fast16_t = 0;
virtual auto SetVolumePct(uint_fast8_t) -> bool = 0;
virtual auto SetVolumeDb(int_fast16_t) -> bool = 0;
virtual auto AdjustVolumeUp() -> bool = 0;
virtual auto AdjustVolumeDown() -> bool = 0;

@ -37,7 +37,9 @@ class BluetoothAudioOutput : public IAudioOutput {
auto GetVolume() -> uint16_t override;
auto GetVolumePct() -> uint_fast8_t override;
auto SetVolumePct(uint_fast8_t val) -> bool override;
auto GetVolumeDb() -> int_fast16_t override;
auto SetVolumeDb(int_fast16_t) -> bool override;
auto AdjustVolumeUp() -> bool override;
auto AdjustVolumeDown() -> bool override;

@ -35,7 +35,9 @@ class I2SAudioOutput : public IAudioOutput {
auto GetVolume() -> uint16_t override;
auto GetVolumePct() -> uint_fast8_t override;
auto SetVolumePct(uint_fast8_t val) -> bool override;
auto GetVolumeDb() -> int_fast16_t override;
auto SetVolumeDb(int_fast16_t) -> bool override;
auto AdjustVolumeUp() -> bool override;
auto AdjustVolumeDown() -> bool override;

Loading…
Cancel
Save