From 6ff8b5886ef91ed46dba08686900d519f6c9c62d Mon Sep 17 00:00:00 2001 From: jacqueline Date: Mon, 19 Jun 2023 08:51:34 +1000 Subject: Support playing tracks by track id --- src/audio/include/audio_events.hpp | 2 +- src/audio/include/audio_fsm.hpp | 11 ++++++++++- src/audio/include/fatfs_audio_input.hpp | 3 +++ 3 files changed, 14 insertions(+), 2 deletions(-) (limited to 'src/audio/include') diff --git a/src/audio/include/audio_events.hpp b/src/audio/include/audio_events.hpp index eebf5efe..60a0740c 100644 --- a/src/audio/include/audio_events.hpp +++ b/src/audio/include/audio_events.hpp @@ -21,9 +21,9 @@ struct PlayFile : tinyfsm::Event { struct PlayTrack : tinyfsm::Event { database::TrackId id; std::optional data; - std::optional tags; }; +struct InputFileOpened : tinyfsm::Event {}; struct InputFileFinished : tinyfsm::Event {}; struct AudioPipelineIdle : tinyfsm::Event {}; diff --git a/src/audio/include/audio_fsm.hpp b/src/audio/include/audio_fsm.hpp index 72654ab5..bd902706 100644 --- a/src/audio/include/audio_fsm.hpp +++ b/src/audio/include/audio_fsm.hpp @@ -38,10 +38,13 @@ class AudioState : public tinyfsm::Fsm { /* Fallback event handler. Does nothing. */ void react(const tinyfsm::Event& ev) {} + void react(const system_fsm::StorageMounted&); + virtual void react(const system_fsm::BootComplete&) {} virtual void react(const PlayTrack&) {} virtual void react(const PlayFile&) {} + virtual void react(const InputFileOpened&) {} virtual void react(const InputFileFinished&) {} virtual void react(const AudioPipelineIdle&) {} @@ -69,8 +72,10 @@ class Uninitialised : public AudioState { class Standby : public AudioState { public: - void react(const PlayTrack&) override {} + void react(const InputFileOpened&) override; + void react(const PlayTrack&) override; void react(const PlayFile&) override; + using AudioState::react; }; @@ -79,6 +84,10 @@ class Playback : public AudioState { void entry() override; void exit() override; + void react(const PlayTrack&) override; + void react(const PlayFile&) override; + + void react(const InputFileOpened&) override; void react(const InputFileFinished&) override; void react(const AudioPipelineIdle&) override; diff --git a/src/audio/include/fatfs_audio_input.hpp b/src/audio/include/fatfs_audio_input.hpp index f5a65d0d..ab392f54 100644 --- a/src/audio/include/fatfs_audio_input.hpp +++ b/src/audio/include/fatfs_audio_input.hpp @@ -7,6 +7,7 @@ #pragma once #include +#include #include #include #include @@ -33,6 +34,7 @@ class FatfsAudioInput : public IAudioElement { FatfsAudioInput(); ~FatfsAudioInput(); + auto OpenFile(std::future>&& path) -> void; auto OpenFile(const std::string& path) -> bool; auto NeedsToProcess() const -> bool override; @@ -47,6 +49,7 @@ class FatfsAudioInput : public IAudioElement { auto ContainerToStreamType(database::Encoding) -> std::optional; + std::optional>> pending_path_; FIL current_file_; bool is_file_open_; -- cgit v1.2.3