From 71b46730394979ea528d152dbe884cc35c368759 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Wed, 17 Jan 2024 11:48:40 +1100 Subject: all screens basically working, but bluetooth is rough --- src/audio/audio_fsm.cpp | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) (limited to 'src/audio/audio_fsm.cpp') diff --git a/src/audio/audio_fsm.cpp b/src/audio/audio_fsm.cpp index b903a171..560e655a 100644 --- a/src/audio/audio_fsm.cpp +++ b/src/audio/audio_fsm.cpp @@ -87,13 +87,14 @@ void AudioState::react(const SetVolume& ev) { } void AudioState::react(const SetVolumeLimit& ev) { - ESP_LOGI(kTag, "new max volume %i db", - (ev.new_limit - drivers::wm8523::kLineLevelReferenceVolume) / 4); - sI2SOutput->SetMaxVolume(ev.new_limit); - sServices->nvs().AmpMaxVolume(ev.new_limit); + uint16_t limit_in_dac_units = + drivers::wm8523::kLineLevelReferenceVolume + (ev.limit_db * 4); + + sI2SOutput->SetMaxVolume(limit_in_dac_units); + sServices->nvs().AmpMaxVolume(limit_in_dac_units); events::Ui().Dispatch(VolumeLimitChanged{ - .new_limit = ev.new_limit, + .new_limit_db = ev.limit_db, }); events::Ui().Dispatch(VolumeChanged{ .percent = sOutput->GetVolumePct(), @@ -167,6 +168,20 @@ void Uninitialised::react(const system_fsm::BootComplete& ev) { } sOutput->SetMode(IAudioOutput::Modes::kOnPaused); + events::Ui().Dispatch(VolumeLimitChanged{ + .new_limit_db = + (static_cast(nvs.AmpMaxVolume()) - + static_cast(drivers::wm8523::kLineLevelReferenceVolume)) / + 4, + }); + events::Ui().Dispatch(VolumeChanged{ + .percent = sOutput->GetVolumePct(), + .db = sOutput->GetVolumeDb(), + }); + events::Ui().Dispatch(VolumeBalanceChanged{ + .left_bias = nvs.AmpLeftBias(), + }); + sSampleConverter.reset(new SampleConverter()); sSampleConverter->SetOutput(sOutput); -- cgit v1.2.3