diff --git a/firmware/application/audio.cpp b/firmware/application/audio.cpp index 958daad2cc136a5910d0308e75abb798b2b8294b..4ba23accf393dfb3cc3241b0a54b1c1f7d820543 100644 --- a/firmware/application/audio.cpp +++ b/firmware/application/audio.cpp @@ -26,6 +26,7 @@ using portapack::clock_manager; #include "portapack_hal.hpp" +#include "portapack_persistent_memory.hpp" #include "i2s.hpp" using namespace lpc43xx; @@ -153,6 +154,16 @@ void unmute() { audio_codec->headphone_enable(); } +void speaker_mute() { + i2s::i2s0::tx_mute(); + audio_codec->speaker_disable(); + } + + void speaker_unmute() { + i2s::i2s0::tx_unmute(); + audio_codec->speaker_enable(); + } + } /* namespace output */ namespace input { diff --git a/firmware/application/audio.hpp b/firmware/application/audio.hpp index 06e7c92a3ce4d092373492c13f8f8d7e42ac8204..b02e42aaee144a095ed2efc3ea8d0164768dccff 100644 --- a/firmware/application/audio.hpp +++ b/firmware/application/audio.hpp @@ -41,6 +41,9 @@ public: virtual bool reset() = 0; virtual void init() = 0; + virtual void speaker_enable() = 0; + virtual void speaker_disable() = 0; + virtual void headphone_enable() = 0; virtual void headphone_disable() = 0; virtual volume_range_t headphone_gain_range() const = 0; @@ -62,6 +65,9 @@ void stop(); void mute(); void unmute(); +void speaker_mute(); +void speaker_unmute(); + } /* namespace output */ namespace input { @@ -79,6 +85,14 @@ void set_volume(const volume_t volume); } /* namespace headphone */ +namespace speaker { + +volume_range_t volume_range(); + +void set_volume(const volume_t volume); + +} /* namespace speaker */ + namespace debug { size_t reg_count(); diff --git a/firmware/common/wm8731.hpp b/firmware/common/wm8731.hpp index 0d1b15b78410da57e05faab4ac81744ffda93a22..a5c8908b2d49ffaf8404f7b486b9a0acf8380520 100644 --- a/firmware/common/wm8731.hpp +++ b/firmware/common/wm8731.hpp @@ -341,6 +341,10 @@ public: headphone_mute(); } + void speaker_enable() {}; + void speaker_disable() {}; + + void microphone_enable() override { // TODO: Implement }