summaryrefslogtreecommitdiff
path: root/src/audio/i2s_audio_output.cpp
diff options
context:
space:
mode:
authorailurux <ailuruxx@gmail.com>2024-03-01 19:08:54 +1100
committerailurux <ailuruxx@gmail.com>2024-03-01 19:08:54 +1100
commit6586819171b635e3b17effb3bfab096da695a0e9 (patch)
tree9c803134aa2e138303a155644c99bfb7a9e0193b /src/audio/i2s_audio_output.cpp
parent5141c9f0bd62e575fff9e132c0ad6de089a18ece (diff)
downloadtangara-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.cpp14
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;