ESPixelStick Firmware
Firmware for the ESPixelStick
Loading...
Searching...
No Matches
InputFPPRemotePlayFile.hpp
Go to the documentation of this file.
1#pragma once
2/*
3* InputFPPRemotePlayFile.hpp
4*
5* Project: ESPixelStick - An ESP8266 / ESP32 and E1.31 based pixel driver
6* Copyright (c) 2021, 2025 Shelby Merrick
7* http://www.forkineye.com
8*
9* This program is provided free for you to use in any way that you wish,
10* subject to the laws and regulations where you are using it. Due diligence
11* is strongly suggested before using this code. Please give credit where due.
12*
13* The Author makes no warranty of any kind, express or implied, with regard
14* to this program or the documentation contained in this document. The
15* Author shall not be liable in any event for incidental or consequential
16* damages in connection with, or arising out of, the furnishing, performance
17* or use of these programs.
18*
19* PlayFile object used to parse and play an FSEQ File
20*/
21
22#include "ESPixelStick.h"
25#include "service/fseq.h"
26
27#ifdef ARDUINO_ARCH_ESP32
28#include <esp_task.h>
29#endif // def ARDUINO_ARCH_ESP32
30
32{
33public:
36
37 virtual void Start (String & FileName, float SecondsElapsed, uint32_t RemainingPlayCount);
38 virtual void Stop ();
39 virtual void Sync (String& FileName, float SecondsElapsed);
40 virtual bool Poll ();
41 virtual void GetStatus (JsonObject & jsonStatus);
42 virtual bool IsIdle () { return (pCurrentFsmState == &fsm_PlayFile_state_Idle_imp); }
43
44#ifdef ARDUINO_ARCH_ESP32
45 TaskHandle_t GetTaskHandle () { return TimerPollTaskHandle; }
46 volatile bool TimerPollInProgress = false;
47#endif // def ARDUINO_ARCH_ESP32
48
49private:
50#define ELAPSED_PLAY_TIMER_INTERVAL_MS 10
51
52 void ClearFileInfo ();
53
59 friend class fsm_PlayFile_state;
60
66
68
70 {
71 uint32_t SyncCount = 0;
72 uint32_t SyncAdjustmentCount = 0;
75
76 uint32_t PlayedFileCount = 0;
77
78#define MAX_NUM_SPARSE_RANGES 5
80
82 uint32_t CalculateFrameId (uint32_t ElapsedMS, int32_t SyncOffsetMS);
83 bool ParseFseqFile ();
84 uint64_t ReadFile(uint64_t DestinationIntensityId, uint64_t NumBytesToRead, uint64_t FileOffset);
85
86 String LastFailedPlayStatusMsg = emptyString;
87 String LastFailedFilename = emptyString;
88
89#ifdef ARDUINO_ARCH_ESP32
90 TaskHandle_t TimerPollTaskHandle = NULL;
91# define TimerPollHandlerTaskStack 3000
92// # define TimerPollHandlerTaskStack 6000
93#endif // def ARDUINO_ARCH_ESP32
94
95}; // c_InputFPPRemotePlayFile
#define MAX_NUM_SPARSE_RANGES
Definition InputFPPRemotePlayFile.hpp:78
Definition InputFPPRemotePlayFile.hpp:32
uint32_t PlayedFileCount
Definition InputFPPRemotePlayFile.hpp:76
void ClearFileInfo()
Definition InputFPPRemotePlayFile.cpp:442
virtual void Stop()
Definition InputFPPRemotePlayFile.cpp:72
virtual void GetStatus(JsonObject &jsonStatus)
Definition InputFPPRemotePlayFile.cpp:122
bool ParseFseqFile()
Definition InputFPPRemotePlayFile.cpp:237
virtual void Sync(String &FileName, float SecondsElapsed)
Definition InputFPPRemotePlayFile.cpp:85
fsm_PlayFile_state_Starting fsm_PlayFile_state_Starting_imp
Definition InputFPPRemotePlayFile.hpp:62
String LastFailedPlayStatusMsg
Definition InputFPPRemotePlayFile.hpp:86
void UpdateElapsedPlayTimeMS()
Definition InputFPPRemotePlayFile.cpp:175
c_InputFPPRemotePlayFile(c_InputMgr::e_InputChannelIds InputChannelId)
Definition InputFPPRemotePlayFile.cpp:27
fsm_PlayFile_state_Error fsm_PlayFile_state_Error_imp
Definition InputFPPRemotePlayFile.hpp:65
fsm_PlayFile_state_PlayingFile fsm_PlayFile_state_PlayingFile_imp
Definition InputFPPRemotePlayFile.hpp:63
String LastFailedFilename
Definition InputFPPRemotePlayFile.hpp:87
virtual bool IsIdle()
Definition InputFPPRemotePlayFile.hpp:42
fsm_PlayFile_state_Idle fsm_PlayFile_state_Idle_imp
Definition InputFPPRemotePlayFile.hpp:61
fsm_PlayFile_state * pCurrentFsmState
Definition InputFPPRemotePlayFile.hpp:67
struct c_InputFPPRemotePlayFile::SyncControl_t SyncControl
uint32_t CalculateFrameId(uint32_t ElapsedMS, int32_t SyncOffsetMS)
Definition InputFPPRemotePlayFile.cpp:194
FSEQParsedRangeEntry SparseRanges[MAX_NUM_SPARSE_RANGES]
Definition InputFPPRemotePlayFile.hpp:79
fsm_PlayFile_state_Stopping fsm_PlayFile_state_Stopping_imp
Definition InputFPPRemotePlayFile.hpp:64
uint64_t ReadFile(uint64_t DestinationIntensityId, uint64_t NumBytesToRead, uint64_t FileOffset)
Definition InputFPPRemotePlayFile.cpp:468
virtual bool Poll()
Definition InputFPPRemotePlayFile.cpp:104
virtual ~c_InputFPPRemotePlayFile()
Definition InputFPPRemotePlayFile.cpp:38
Definition InputFPPRemotePlayItem.hpp:26
int32_t SyncOffsetMS
Definition InputFPPRemotePlayItem.hpp:40
c_InputMgr::e_InputChannelIds InputChannelId
Definition InputFPPRemotePlayItem.hpp:41
e_InputChannelIds
Definition InputMgr.hpp:40
Definition InputFPPRemotePlayFileFsm.hpp:128
Definition InputFPPRemotePlayFileFsm.hpp:54
Definition InputFPPRemotePlayFileFsm.hpp:86
Definition InputFPPRemotePlayFileFsm.hpp:70
Definition InputFPPRemotePlayFileFsm.hpp:110
Definition InputFPPRemotePlayFileFsm.hpp:34
uint8_t Start[3]
Definition fseq.h:0
Definition fseq.h:92
Definition InputFPPRemotePlayFile.hpp:70
uint32_t SyncAdjustmentCount
Definition InputFPPRemotePlayFile.hpp:72
uint32_t SyncCount
Definition InputFPPRemotePlayFile.hpp:71
float LastRcvdElapsedSeconds
Definition InputFPPRemotePlayFile.hpp:73