ProtoBuffer, UDPListener ...

Protocol Buffer reimplemented to receive image data from third-party apps
The status of the component "UDPListener" is now displayed correctly in WebUI
Global signal names for WebUI added
This commit is contained in:
Paulchen-Panther
2019-02-17 15:26:11 +01:00
parent 777caafb24
commit 7ff9d7037b
38 changed files with 990 additions and 64 deletions

View File

@@ -17,6 +17,7 @@ target_link_libraries(hyperiond
jsonserver
udplistener
flatbufserver
protoserver
webserver
bonjour
ssdp

View File

@@ -26,9 +26,12 @@
#include <HyperionConfig.h> // Required to determine the cmake options
#include "hyperiond.h"
// FlatBufferServer
// Flatbuffer Server
#include <flatbufserver/FlatBufferServer.h>
// Protobuffer Server
#include <protoserver/ProtoServer.h>
// bonjour browser
#include <bonjour/bonjourbrowserwrapper.h>
@@ -145,6 +148,8 @@ void HyperionDaemon::freeObjects()
delete _jsonServer;
_flatBufferServer->thread()->quit();
_flatBufferServer->thread()->wait(1000);
_protoServer->thread()->quit();
_protoServer->thread()->wait(1000);
//ssdp before webserver
_ssdp->thread()->quit();
_ssdp->thread()->wait(1000);
@@ -166,17 +171,18 @@ void HyperionDaemon::freeObjects()
_v4l2Grabbers.clear();
_bonjourBrowserWrapper = nullptr;
_amlGrabber = nullptr;
_dispmanx = nullptr;
_fbGrabber = nullptr;
_osxGrabber = nullptr;
_qtGrabber = nullptr;
_flatBufferServer = nullptr;
_ssdp = nullptr;
_webserver = nullptr;
_jsonServer = nullptr;
_udpListener = nullptr;
_stats = nullptr;
_amlGrabber = nullptr;
_dispmanx = nullptr;
_fbGrabber = nullptr;
_osxGrabber = nullptr;
_qtGrabber = nullptr;
_flatBufferServer = nullptr;
_protoServer = nullptr;
_ssdp = nullptr;
_webserver = nullptr;
_jsonServer = nullptr;
_udpListener = nullptr;
_stats = nullptr;
}
void HyperionDaemon::startNetworkServices()
@@ -198,6 +204,16 @@ void HyperionDaemon::startNetworkServices()
connect(this, &HyperionDaemon::settingsChanged, _flatBufferServer, &FlatBufferServer::handleSettingsUpdate);
fbThread->start();
// Create Proto server in thread
_protoServer = new ProtoServer(getSetting(settings::PROTOSERVER));
QThread* pThread = new QThread(this);
_protoServer->moveToThread(pThread);
connect( pThread, &QThread::started, _protoServer, &ProtoServer::initServer );
connect( pThread, &QThread::finished, _protoServer, &QObject::deleteLater );
connect( pThread, &QThread::finished, pThread, &QObject::deleteLater );
connect(this, &HyperionDaemon::settingsChanged, _protoServer, &ProtoServer::handleSettingsUpdate);
pThread->start();
// Create UDP listener
_udpListener = new UDPListener(getSetting(settings::UDPLISTENER));
connect(this, &HyperionDaemon::settingsChanged, _udpListener, &UDPListener::handleSettingsUpdate);

View File

@@ -63,6 +63,7 @@ class SettingsManager;
class PythonInit;
class SSDPHandler;
class FlatBufferServer;
class ProtoServer;
class HyperionDaemon : public QObject
{
@@ -130,33 +131,34 @@ private:
void createGrabberX11(const QJsonObject & grabberConfig);
void createGrabberQt(const QJsonObject & grabberConfig);
Logger* _log;
BonjourBrowserWrapper* _bonjourBrowserWrapper;
PythonInit* _pyInit;
WebServer* _webserver;
JsonServer* _jsonServer;
UDPListener* _udpListener;
Logger* _log;
BonjourBrowserWrapper* _bonjourBrowserWrapper;
PythonInit* _pyInit;
WebServer* _webserver;
JsonServer* _jsonServer;
UDPListener* _udpListener;
std::vector<V4L2Wrapper*> _v4l2Grabbers;
DispmanxWrapper* _dispmanx;
X11Wrapper* _x11Grabber;
AmlogicWrapper* _amlGrabber;
FramebufferWrapper* _fbGrabber;
OsxWrapper* _osxGrabber;
QtWrapper* _qtGrabber;
Hyperion* _hyperion;
Stats* _stats;
SSDPHandler* _ssdp;
FlatBufferServer* _flatBufferServer;
DispmanxWrapper* _dispmanx;
X11Wrapper* _x11Grabber;
AmlogicWrapper* _amlGrabber;
FramebufferWrapper* _fbGrabber;
OsxWrapper* _osxGrabber;
QtWrapper* _qtGrabber;
Hyperion* _hyperion;
Stats* _stats;
SSDPHandler* _ssdp;
FlatBufferServer* _flatBufferServer;
ProtoServer* _protoServer;
unsigned _grabber_width;
unsigned _grabber_height;
unsigned _grabber_frequency;
unsigned _grabber_cropLeft;
unsigned _grabber_cropRight;
unsigned _grabber_cropTop;
unsigned _grabber_cropBottom;
int _grabber_ge2d_mode;
QString _grabber_device;
unsigned _grabber_width;
unsigned _grabber_height;
unsigned _grabber_frequency;
unsigned _grabber_cropLeft;
unsigned _grabber_cropRight;
unsigned _grabber_cropTop;
unsigned _grabber_cropBottom;
int _grabber_ge2d_mode;
QString _grabber_device;
QString _prevType;