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/drivers/include/nvs.hpp | 6 ++++++ src/drivers/include/wm8523.hpp | 20 ++++++++++++++++++++ 2 files changed, 26 insertions(+) (limited to 'src/drivers/include') diff --git a/src/drivers/include/nvs.hpp b/src/drivers/include/nvs.hpp index bc88f88d..d7b3dfdd 100644 --- a/src/drivers/include/nvs.hpp +++ b/src/drivers/include/nvs.hpp @@ -37,6 +37,12 @@ class NvsStorage { auto ScreenBrightness() -> std::future; auto ScreenBrightness(uint_fast8_t) -> std::future; + auto AmpMaxVolume() -> std::future; + auto AmpMaxVolume(uint16_t) -> std::future; + + auto AmpCurrentVolume() -> std::future; + auto AmpCurrentVolume(uint16_t) -> std::future; + explicit NvsStorage(std::unique_ptr, nvs_handle_t); ~NvsStorage(); diff --git a/src/drivers/include/wm8523.hpp b/src/drivers/include/wm8523.hpp index 6dc2e56e..b13cf34b 100644 --- a/src/drivers/include/wm8523.hpp +++ b/src/drivers/include/wm8523.hpp @@ -5,12 +5,32 @@ */ #pragma once +#include #include #include namespace drivers { namespace wm8523 { +extern const uint16_t kAbsoluteMaxVolume; + +extern const uint16_t kAbsoluteMinVolume; + +extern const uint16_t kMaxVolumeBeforeClipping; + +extern const uint16_t kLineLevelReferenceVolume; + +extern const uint16_t kDefaultVolume; +extern const uint16_t kDefaultMaxVolume; + +constexpr auto VolumeToDb(uint16_t vol) -> int_fast8_t { + return (vol - kLineLevelReferenceVolume) / 4; +} + +constexpr auto DbToVolume(int_fast8_t db) -> uint16_t { + return (db * 4) + kLineLevelReferenceVolume; +} + enum class Register : uint8_t { kReset = 0, kRevision = 1, -- cgit v1.2.3