summaryrefslogtreecommitdiff
path: root/src/drivers/include/wm8523.hpp
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2023-09-04 16:17:55 +1000
committerjacqueline <me@jacqueline.id.au>2023-09-04 16:17:55 +1000
commitd5d6e3993cd67238ff245446e69e2f200c3fd0e5 (patch)
tree6245939ab341694363eac8bc24ab1b91b5140c6e /src/drivers/include/wm8523.hpp
parent6d831fa7a8c50e15424814fd2be1dd3951e06a4f (diff)
downloadtangara-fw-d5d6e3993cd67238ff245446e69e2f200c3fd0e5.tar.gz
Support changing max volume, persisted to nvs
Diffstat (limited to 'src/drivers/include/wm8523.hpp')
-rw-r--r--src/drivers/include/wm8523.hpp20
1 files changed, 20 insertions, 0 deletions
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,