From 299f3cc48f683d3e6dec1efb4957fdb49b4de2c3 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Mon, 5 Feb 2024 11:02:45 +1100 Subject: Preserve the queue when going into standby --- src/audio/include/audio_events.hpp | 2 +- src/audio/include/audio_fsm.hpp | 12 ++++++++---- src/audio/include/track_queue.hpp | 3 +++ 3 files changed, 12 insertions(+), 5 deletions(-) (limited to 'src/audio/include') diff --git a/src/audio/include/audio_events.hpp b/src/audio/include/audio_events.hpp index b76d8c89..03584062 100644 --- a/src/audio/include/audio_events.hpp +++ b/src/audio/include/audio_events.hpp @@ -35,7 +35,7 @@ struct PlaybackUpdate : tinyfsm::Event { std::shared_ptr track; }; -struct PlaybackFinished : tinyfsm::Event {}; +struct PlaybackStopped : tinyfsm::Event {}; struct QueueUpdate : tinyfsm::Event { bool current_changed; diff --git a/src/audio/include/audio_fsm.hpp b/src/audio/include/audio_fsm.hpp index b8c505b0..884af8a8 100644 --- a/src/audio/include/audio_fsm.hpp +++ b/src/audio/include/audio_fsm.hpp @@ -52,12 +52,13 @@ class AudioState : public tinyfsm::Fsm { void react(const OutputModeChanged&); virtual void react(const system_fsm::BootComplete&) {} - void react(const system_fsm::KeyLockChanged&); + virtual void react(const system_fsm::KeyLockChanged&); + virtual void react(const system_fsm::StorageMounted&) {} virtual void react(const PlayFile&) {} virtual void react(const QueueUpdate&) {} virtual void react(const PlaybackUpdate&) {} - virtual void react(const TogglePlayPause&) {} + void react(const TogglePlayPause&); virtual void react(const internal::InputFileOpened&) {} virtual void react(const internal::InputFileClosed&) {} @@ -77,6 +78,9 @@ class AudioState : public tinyfsm::Fsm { static std::shared_ptr sOutput; static std::optional sCurrentTrack; + + auto readyToPlay() -> bool; + static bool sIsPlaybackAllowed; }; namespace states { @@ -92,7 +96,8 @@ class Standby : public AudioState { void react(const PlayFile&) override; void react(const internal::InputFileOpened&) override; void react(const QueueUpdate&) override; - void react(const TogglePlayPause&) override; + void react(const system_fsm::KeyLockChanged&) override; + void react(const system_fsm::StorageMounted&) override; using AudioState::react; }; @@ -107,7 +112,6 @@ class Playback : public AudioState { void react(const PlayFile&) override; void react(const QueueUpdate&) override; void react(const PlaybackUpdate&) override; - void react(const TogglePlayPause&) override; void react(const internal::InputFileOpened&) override; void react(const internal::InputFileClosed&) override; diff --git a/src/audio/include/track_queue.hpp b/src/audio/include/track_queue.hpp index 0ff72021..5b14fd4a 100644 --- a/src/audio/include/track_queue.hpp +++ b/src/audio/include/track_queue.hpp @@ -98,6 +98,9 @@ class TrackQueue { auto repeat(bool) -> void; auto repeat() const -> bool; + auto serialise() -> std::string; + auto deserialise(const std::string&) -> void; + // Cannot be copied or moved. TrackQueue(const TrackQueue&) = delete; TrackQueue& operator=(const TrackQueue&) = delete; -- cgit v1.2.3