ESPixelStick Firmware
Firmware for the ESPixelStick
Loading...
Searching...
No Matches
FPPDiscovery.h
Go to the documentation of this file.
1#pragma once
2/*
3* c_FPPDiscovery.h
4*
5* Project: ESPixelStick - An ESP8266 / ESP32 and E1.31 based pixel driver
6* Copyright (c) 2018, 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*/
20
21#include "ESPixelStick.h"
22#include "input/InputMgr.hpp"
24
25#ifdef ESP32
26# include <WiFi.h>
27# include <AsyncUDP.h>
28#elif defined (ESP8266)
29# include <ESPAsyncUDP.h>
30# include <ESP8266WiFi.h>
31# include <ESP8266WiFiMulti.h>
32#else
33# error Platform not supported
34#endif
35
36#include <ESPAsyncWebServer.h>
37
39{
40private:
41
42 AsyncUDP udp;
43 void ProcessReceivedUdpPacket (AsyncUDPPacket _packet);
44 void ProcessSyncPacket (uint8_t action, String filename, float seconds_elapsed);
45 void ProcessBlankPacket ();
46 bool PlayingFile ();
47
48 bool inFileUpload = false;
49 bool writeFailed = false;
50 bool hasBeenInitialized = false;
51 bool IsEnabled = false;
52 bool BlankOnStop = false;
53 bool StopInProgress = false;
54 bool FppSyncOverride = false;
57 IPAddress FppRemoteIp = IPAddress (uint32_t(0));
59 const IPAddress MulticastAddress = IPAddress (239, 70, 80, 80);
60
61 void GetStatusJSON (JsonObject& jsonResponse, bool advanced);
62 void BuildFseqResponse (String fname, c_FileMgr::FileId fseq, String & resp);
63 void StopPlaying ();
64 void StartPlaying (String & FileName, float SecondsElapsed);
66 void GetDriverName (String & Name) { Name = "FPPD"; }
67
69 {
71 uint32_t pktCommand;
81 uint32_t pktBlank;
82 uint32_t pktPing;
83 uint32_t pktPlugin;
84 uint32_t pktFPPCommand;
85 uint32_t pktHdrError;
86 uint32_t pktUnknown;
87 };
89
90# define SYNC_FILE_SEQ 0
91# define SYNC_FILE_MEDIA 1
92
93# define CTRL_PKT_CMD 0 // deprecated in favor of FPP Commands
94# define CTRL_PKT_SYNC 1
95# define CTRL_PKT_EVENT 2 // deprecated in favor of FPP Commands
96# define CTRL_PKT_BLANK 3
97# define CTRL_PKT_PING 4
98# define CTRL_PKT_PLUGIN 5
99# define CTRL_PKT_FPPCOMMAND 6
100
101#define FPP_DEBUG_ENABLED
103{
104 uint32_t ProcessFPPJson = 0;
105 uint32_t ProcessFPPDJson = 0;
106 uint32_t CmdGetFPPstatus = 0;
107 uint32_t CmdGetSysInfoJSON = 0;
108 uint32_t CmdGetHostname = 0;
109 uint32_t CmdGetConfig = 0;
110 uint32_t CmdNotFound = 0;
111};
113
114public:
116 virtual ~c_FPPDiscovery() {}
117
118 void begin ();
119
120 void ProcessFPPJson (AsyncWebServerRequest* request);
121 void ProcessFPPDJson (AsyncWebServerRequest* request);
122 void ProcessGET (AsyncWebServerRequest* request);
123 void ProcessPOST (AsyncWebServerRequest* request);
124 void ProcessFile (AsyncWebServerRequest* request, String filename, uint32_t index, uint8_t* data, uint32_t len, bool final, uint32_t contentLength = 0);
125 void ProcessBody (AsyncWebServerRequest* request, uint8_t* data, uint32_t len, uint32_t index, uint32_t total);
126 void sendPingPacket (IPAddress destination = IPAddress(255, 255, 255, 255));
127 void PlayFile (String & FileToPlay);
128 void Enable (void);
129 void Disable (void);
130 void GetStatus (JsonObject& jsonStatus);
131 void NetworkStateChanged (bool NewNetworkState);
132 void SetOperationalState (bool ActiveFlag);
133 bool SetConfig (JsonObject& jsonConfig);
134 void GetConfig (JsonObject& jsonConfig);
135
138 void GenerateFppSyncMsg (uint8_t Action, const String & FileName, uint32_t CurrentFrame, const float & ElpsedTime);
139 void GetSysInfoJSON (JsonObject& jsonResponse);
140 bool PlayingAfile () {return PlayingFile();}
141
142# define SYNC_PKT_START 0
143# define SYNC_PKT_STOP 1
144# define SYNC_PKT_SYNC 2
145# define SYNC_PKT_OPEN 3
146
147};
148
c_FPPDiscovery FPPDiscovery
Definition FPPDiscovery.cpp:1363
Definition FPPDiscovery.h:39
void ProcessReceivedUdpPacket(AsyncUDPPacket _packet)
Definition FPPDiscovery.cpp:217
bool inFileUpload
Definition FPPDiscovery.h:48
void begin()
Definition FPPDiscovery.cpp:50
IPAddress FppRemoteIp
Definition FPPDiscovery.h:57
void ProcessBody(AsyncWebServerRequest *request, uint8_t *data, uint32_t len, uint32_t index, uint32_t total)
Definition FPPDiscovery.cpp:909
void GetConfig(JsonObject &jsonConfig)
Definition FPPDiscovery.cpp:154
void ProcessPOST(AsyncWebServerRequest *request)
Definition FPPDiscovery.cpp:771
bool StopInProgress
Definition FPPDiscovery.h:53
void ProcessFile(AsyncWebServerRequest *request, String filename, uint32_t index, uint8_t *data, uint32_t len, bool final, uint32_t contentLength=0)
Definition FPPDiscovery.cpp:811
virtual ~c_FPPDiscovery()
Definition FPPDiscovery.h:116
void ProcessGET(AsyncWebServerRequest *request)
Definition FPPDiscovery.cpp:689
void ProcessSyncPacket(uint8_t action, String filename, float seconds_elapsed)
Definition FPPDiscovery.cpp:360
SystemDebugStats_t SystemDebugStats
Definition FPPDiscovery.h:112
AsyncUDP udp
Definition FPPDiscovery.h:42
void ProcessBlankPacket()
Definition FPPDiscovery.cpp:457
void StartPlaying(String &FileName, float SecondsElapsed)
Definition FPPDiscovery.cpp:1222
c_InputFPPRemote * InputFPPRemote
Definition FPPDiscovery.h:58
bool PlayingAfile()
Definition FPPDiscovery.h:140
void ProcessFPPDJson(AsyncWebServerRequest *request)
Definition FPPDiscovery.cpp:1180
void GetSysInfoJSON(JsonObject &jsonResponse)
Definition FPPDiscovery.cpp:967
bool FppSyncOverride
Definition FPPDiscovery.h:54
const IPAddress MulticastAddress
Definition FPPDiscovery.h:59
void GetStatus(JsonObject &jsonStatus)
Definition FPPDiscovery.cpp:167
void GenerateFppSyncMsg(uint8_t Action, const String &FileName, uint32_t CurrentFrame, const float &ElpsedTime)
Definition FPPDiscovery.cpp:1282
void GetDriverName(String &Name)
Definition FPPDiscovery.h:66
MultiSyncStats_t MultiSyncStats
Definition FPPDiscovery.h:88
bool IsEnabled
Definition FPPDiscovery.h:51
void ProcessFPPJson(AsyncWebServerRequest *request)
Definition FPPDiscovery.cpp:1078
void SetInputFPPRemotePlayFile(c_InputFPPRemote *value)
Definition FPPDiscovery.cpp:1324
bool SetConfig(JsonObject &jsonConfig)
Definition FPPDiscovery.cpp:1208
void NetworkStateChanged(bool NewNetworkState)
Definition FPPDiscovery.cpp:67
bool PlayingFile()
Definition FPPDiscovery.cpp:470
String ConfiguredFileToPlay
Definition FPPDiscovery.h:55
bool hasBeenInitialized
Definition FPPDiscovery.h:50
void Disable(void)
Definition FPPDiscovery.cpp:120
String UploadFileName
Definition FPPDiscovery.h:56
void ForgetInputFPPRemotePlayFile()
Definition FPPDiscovery.cpp:1335
void GetStatusJSON(JsonObject &jsonResponse, bool advanced)
Definition FPPDiscovery.cpp:1004
void PlayFile(String &FileToPlay)
bool BlankOnStop
Definition FPPDiscovery.h:52
void BuildFseqResponse(String fname, c_FileMgr::FileId fseq, String &resp)
Definition FPPDiscovery.cpp:557
bool writeFailed
Definition FPPDiscovery.h:49
void sendPingPacket(IPAddress destination=IPAddress(255, 255, 255, 255))
Definition FPPDiscovery.cpp:481
c_FPPDiscovery()
Definition FPPDiscovery.cpp:42
void SetOperationalState(bool ActiveFlag)
Definition FPPDiscovery.cpp:143
bool AllowedToPlayRemoteFile()
Definition FPPDiscovery.cpp:1346
void Enable(void)
Definition FPPDiscovery.cpp:132
void StopPlaying()
Definition FPPDiscovery.cpp:1265
uint32_t FileId
Definition FileMgr.hpp:50
Definition InputFPPRemote.h:26
char filename[250]
Definition fseq.h:7
float seconds_elapsed
Definition fseq.h:6
Definition FPPDiscovery.h:69
uint32_t pktSyncSeqStop
Definition FPPDiscovery.h:75
uint32_t pktFPPCommand
Definition FPPDiscovery.h:84
uint32_t pktSyncSeqSync
Definition FPPDiscovery.h:76
uint32_t pktSyncMedOpen
Definition FPPDiscovery.h:77
uint32_t pktSyncSeqOpen
Definition FPPDiscovery.h:73
uint32_t pktSyncMedStart
Definition FPPDiscovery.h:78
uint32_t pktLastCommand
Definition FPPDiscovery.h:72
uint32_t pktUnknown
Definition FPPDiscovery.h:86
time_t lastReceiveTime
Definition FPPDiscovery.h:70
uint32_t pktPlugin
Definition FPPDiscovery.h:83
uint32_t pktPing
Definition FPPDiscovery.h:82
uint32_t pktSyncMedStop
Definition FPPDiscovery.h:79
uint32_t pktSyncSeqStart
Definition FPPDiscovery.h:74
uint32_t pktHdrError
Definition FPPDiscovery.h:85
uint32_t pktCommand
Definition FPPDiscovery.h:71
uint32_t pktBlank
Definition FPPDiscovery.h:81
uint32_t pktSyncMedSync
Definition FPPDiscovery.h:80
Definition FPPDiscovery.h:103
uint32_t CmdGetHostname
Definition FPPDiscovery.h:108
uint32_t ProcessFPPDJson
Definition FPPDiscovery.h:105
uint32_t CmdNotFound
Definition FPPDiscovery.h:110
uint32_t CmdGetConfig
Definition FPPDiscovery.h:109
uint32_t CmdGetSysInfoJSON
Definition FPPDiscovery.h:107
uint32_t ProcessFPPJson
Definition FPPDiscovery.h:104
uint32_t CmdGetFPPstatus
Definition FPPDiscovery.h:106