diff options
Diffstat (limited to 'src/drivers/include')
| -rw-r--r-- | src/drivers/include/nvs.hpp | 6 | ||||
| -rw-r--r-- | src/drivers/include/wm8523.hpp | 20 |
2 files changed, 26 insertions, 0 deletions
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<uint_fast8_t>; auto ScreenBrightness(uint_fast8_t) -> std::future<bool>; + auto AmpMaxVolume() -> std::future<uint16_t>; + auto AmpMaxVolume(uint16_t) -> std::future<bool>; + + auto AmpCurrentVolume() -> std::future<uint16_t>; + auto AmpCurrentVolume(uint16_t) -> std::future<bool>; + explicit NvsStorage(std::unique_ptr<tasks::Worker>, 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 <stdint.h> #include <cstdint> #include <optional> 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, |
