From 320fdeb9d8355d3c361d5c6d60de8afc64501af9 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Wed, 30 Aug 2023 16:48:10 +1000 Subject: Use a service locator instead of passing around subsets of drivers between FSMs --- src/audio/include/audio_fsm.hpp | 14 ++------------ src/audio/include/fatfs_audio_input.hpp | 4 ++-- src/audio/include/i2s_audio_output.hpp | 7 ++++--- 3 files changed, 8 insertions(+), 17 deletions(-) (limited to 'src/audio/include') diff --git a/src/audio/include/audio_fsm.hpp b/src/audio/include/audio_fsm.hpp index cfa65551..1376feae 100644 --- a/src/audio/include/audio_fsm.hpp +++ b/src/audio/include/audio_fsm.hpp @@ -11,6 +11,7 @@ #include #include "audio_sink.hpp" +#include "service_locator.hpp" #include "tinyfsm.hpp" #include "audio_decoder.hpp" @@ -32,12 +33,6 @@ namespace audio { class AudioState : public tinyfsm::Fsm { public: - static auto Init(drivers::IGpios* gpio_expander, - std::weak_ptr, - std::shared_ptr, - drivers::Bluetooth* bluetooth, - TrackQueue* queue) -> bool; - virtual ~AudioState() {} virtual void entry() {} @@ -46,8 +41,6 @@ class AudioState : public tinyfsm::Fsm { /* Fallback event handler. Does nothing. */ void react(const tinyfsm::Event& ev) {} - void react(const system_fsm::StorageMounted&); - void react(const system_fsm::KeyUpChanged&); void react(const system_fsm::KeyDownChanged&); void react(const system_fsm::HasPhonesChanged&); @@ -65,16 +58,13 @@ class AudioState : public tinyfsm::Fsm { virtual void react(const internal::AudioPipelineIdle&) {} protected: - static drivers::IGpios* sIGpios; - static std::shared_ptr sDac; - static std::weak_ptr sDatabase; + static std::shared_ptr sServices; static std::shared_ptr sFileSource; static std::unique_ptr sDecoder; static std::shared_ptr sSampleConverter; static std::shared_ptr sOutput; - static TrackQueue* sTrackQueue; static std::optional sCurrentTrack; }; diff --git a/src/audio/include/fatfs_audio_input.hpp b/src/audio/include/fatfs_audio_input.hpp index da44d2ec..b67d29dc 100644 --- a/src/audio/include/fatfs_audio_input.hpp +++ b/src/audio/include/fatfs_audio_input.hpp @@ -30,7 +30,7 @@ namespace audio { */ class FatfsAudioInput : public IAudioSource { public: - explicit FatfsAudioInput(std::shared_ptr tag_parser); + explicit FatfsAudioInput(database::ITagParser& tag_parser); ~FatfsAudioInput(); /* @@ -53,7 +53,7 @@ class FatfsAudioInput : public IAudioSource { auto ContainerToStreamType(database::Container) -> std::optional; - std::shared_ptr tag_parser_; + database::ITagParser& tag_parser_; std::mutex new_stream_mutex_; std::shared_ptr new_stream_; diff --git a/src/audio/include/i2s_audio_output.hpp b/src/audio/include/i2s_audio_output.hpp index 0068916e..fa09deef 100644 --- a/src/audio/include/i2s_audio_output.hpp +++ b/src/audio/include/i2s_audio_output.hpp @@ -19,7 +19,8 @@ namespace audio { class I2SAudioOutput : public IAudioOutput { public: - I2SAudioOutput(drivers::IGpios* expander, std::weak_ptr dac); + I2SAudioOutput(drivers::IGpios& expander, + std::unique_ptr dac); ~I2SAudioOutput(); auto SetInUse(bool) -> void override; @@ -37,8 +38,8 @@ class I2SAudioOutput : public IAudioOutput { I2SAudioOutput& operator=(const I2SAudioOutput&) = delete; private: - drivers::IGpios* expander_; - std::shared_ptr dac_; + drivers::IGpios& expander_; + std::unique_ptr dac_; std::optional current_config_; int_fast8_t left_difference_; -- cgit v1.2.3