From d5d6e3993cd67238ff245446e69e2f200c3fd0e5 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Mon, 4 Sep 2023 16:17:55 +1000 Subject: Support changing max volume, persisted to nvs --- src/audio/include/audio_events.hpp | 4 ++++ src/audio/include/audio_fsm.hpp | 2 ++ src/audio/include/i2s_audio_output.hpp | 4 ++++ 3 files changed, 10 insertions(+) (limited to 'src/audio/include') diff --git a/src/audio/include/audio_events.hpp b/src/audio/include/audio_events.hpp index 8ee8b057..7433d159 100644 --- a/src/audio/include/audio_events.hpp +++ b/src/audio/include/audio_events.hpp @@ -6,6 +6,7 @@ #pragma once +#include #include #include @@ -36,6 +37,9 @@ struct PlayFile : tinyfsm::Event { }; struct VolumeChanged : tinyfsm::Event {}; +struct ChangeMaxVolume : tinyfsm::Event { + uint16_t new_max; +}; struct TogglePlayPause : tinyfsm::Event {}; diff --git a/src/audio/include/audio_fsm.hpp b/src/audio/include/audio_fsm.hpp index 1376feae..46d3d338 100644 --- a/src/audio/include/audio_fsm.hpp +++ b/src/audio/include/audio_fsm.hpp @@ -44,6 +44,7 @@ class AudioState : public tinyfsm::Fsm { void react(const system_fsm::KeyUpChanged&); void react(const system_fsm::KeyDownChanged&); void react(const system_fsm::HasPhonesChanged&); + void react(const ChangeMaxVolume&); virtual void react(const system_fsm::BootComplete&) {} @@ -63,6 +64,7 @@ class AudioState : public tinyfsm::Fsm { static std::shared_ptr sFileSource; static std::unique_ptr sDecoder; static std::shared_ptr sSampleConverter; + static std::shared_ptr sI2SOutput; static std::shared_ptr sOutput; static std::optional sCurrentTrack; diff --git a/src/audio/include/i2s_audio_output.hpp b/src/audio/include/i2s_audio_output.hpp index fa09deef..17f6b71a 100644 --- a/src/audio/include/i2s_audio_output.hpp +++ b/src/audio/include/i2s_audio_output.hpp @@ -6,6 +6,7 @@ #pragma once +#include #include #include #include @@ -25,6 +26,9 @@ class I2SAudioOutput : public IAudioOutput { auto SetInUse(bool) -> void override; + auto SetMaxVolume(uint16_t) -> void; + auto SetVolumeDb(uint16_t) -> void; + auto SetVolumeImbalance(int_fast8_t balance) -> void override; auto SetVolume(uint_fast8_t percent) -> void override; auto GetVolume() -> uint_fast8_t override; -- cgit v1.2.3