summaryrefslogtreecommitdiff
path: root/src/audio/include
diff options
context:
space:
mode:
Diffstat (limited to 'src/audio/include')
-rw-r--r--src/audio/include/audio_events.hpp2
-rw-r--r--src/audio/include/audio_fsm.hpp12
-rw-r--r--src/audio/include/track_queue.hpp3
3 files changed, 12 insertions, 5 deletions
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> 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<AudioState> {
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<AudioState> {
static std::shared_ptr<IAudioOutput> sOutput;
static std::optional<database::TrackId> 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;