summaryrefslogtreecommitdiff
path: root/src/drivers/include
diff options
context:
space:
mode:
Diffstat (limited to 'src/drivers/include')
-rw-r--r--src/drivers/include/nvs.hpp6
-rw-r--r--src/drivers/include/wm8523.hpp20
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,