diff options
| author | ailurux <ailuruxx@gmail.com> | 2024-03-01 19:08:54 +1100 |
|---|---|---|
| committer | ailurux <ailuruxx@gmail.com> | 2024-03-01 19:08:54 +1100 |
| commit | 6586819171b635e3b17effb3bfab096da695a0e9 (patch) | |
| tree | 9c803134aa2e138303a155644c99bfb7a9e0193b /src/audio/i2s_audio_output.cpp | |
| parent | 5141c9f0bd62e575fff9e132c0ad6de089a18ece (diff) | |
| download | tangara-fw-6586819171b635e3b17effb3bfab096da695a0e9.tar.gz | |
WIP Commit- Lua setters for volume, bluetooth todo
Diffstat (limited to 'src/audio/i2s_audio_output.cpp')
| -rw-r--r-- | src/audio/i2s_audio_output.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/audio/i2s_audio_output.cpp b/src/audio/i2s_audio_output.cpp index 4043574e..7739fa17 100644 --- a/src/audio/i2s_audio_output.cpp +++ b/src/audio/i2s_audio_output.cpp @@ -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; |
