diff options
| author | jacqueline <me@jacqueline.id.au> | 2023-09-04 16:17:55 +1000 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2023-09-04 16:17:55 +1000 |
| commit | d5d6e3993cd67238ff245446e69e2f200c3fd0e5 (patch) | |
| tree | 6245939ab341694363eac8bc24ab1b91b5140c6e /src/audio/include | |
| parent | 6d831fa7a8c50e15424814fd2be1dd3951e06a4f (diff) | |
| download | tangara-fw-d5d6e3993cd67238ff245446e69e2f200c3fd0e5.tar.gz | |
Support changing max volume, persisted to nvs
Diffstat (limited to 'src/audio/include')
| -rw-r--r-- | src/audio/include/audio_events.hpp | 4 | ||||
| -rw-r--r-- | src/audio/include/audio_fsm.hpp | 2 | ||||
| -rw-r--r-- | src/audio/include/i2s_audio_output.hpp | 4 |
3 files changed, 10 insertions, 0 deletions
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 <stdint.h> #include <cstdint> #include <string> @@ -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<AudioState> { 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<AudioState> { static std::shared_ptr<FatfsAudioInput> sFileSource; static std::unique_ptr<Decoder> sDecoder; static std::shared_ptr<SampleConverter> sSampleConverter; + static std::shared_ptr<I2SAudioOutput> sI2SOutput; static std::shared_ptr<IAudioOutput> sOutput; static std::optional<database::TrackId> 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 <stdint.h> #include <cstdint> #include <memory> #include <vector> @@ -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; |
