hyperion.ng
hyperiond.h
1 #pragma once
2 
3 #include <QObject>
4 #include <QJsonObject>
5 
6 #ifdef ENABLE_DISPMANX
7  #include <grabber/DispmanxWrapper.h>
8 #else
9  typedef QObject DispmanxWrapper;
10 #endif
11 
12 #ifdef ENABLE_V4L2
13  #include <grabber/V4L2Wrapper.h>
14 #else
15  typedef QObject V4L2Wrapper;
16 #endif
17 
18 #ifdef ENABLE_FB
19  #include <grabber/FramebufferWrapper.h>
20 #else
21  typedef QObject FramebufferWrapper;
22 #endif
23 
24 #ifdef ENABLE_AMLOGIC
25  #include <grabber/AmlogicWrapper.h>
26 #else
27  typedef QObject AmlogicWrapper;
28 #endif
29 
30 #ifdef ENABLE_OSX
31  #include <grabber/OsxWrapper.h>
32 #else
33  typedef QObject OsxWrapper;
34 #endif
35 
36 #ifdef ENABLE_X11
37  #include <grabber/X11Wrapper.h>
38 #else
39  typedef QObject X11Wrapper;
40 #endif
41 
42 #ifdef ENABLE_QT
43  #include <grabber/QtWrapper.h>
44 #else
45  typedef QObject QtWrapper;
46 #endif
47 
48 #include <utils/Logger.h>
49 #include <utils/Image.h>
50 #include <utils/VideoMode.h>
51 
52 // settings management
53 #include <utils/settings.h>
54 
55 class Hyperion;
56 class SysTray;
57 class JsonServer;
58 class UDPListener;
60 class WebServer;
61 class SettingsManager;
62 class PythonInit;
63 class SSDPHandler;
64 class FlatBufferServer;
65 class ProtoServer;
66 
67 class HyperionDaemon : public QObject
68 {
69  Q_OBJECT
70 
71  friend SysTray;
72 
73 public:
74  HyperionDaemon(QString configFile, QString rootPath, QObject *parent, const bool& logLvlOverwrite );
75  ~HyperionDaemon();
76 
80  WebServer* getWebServerInstance() { return _webserver; };
81 
85  const VideoMode & getVideoMode() { return _currVideoMode; };
86 
90  const QJsonDocument getSetting(const settings::type& type);
91 
92  void startNetworkServices();
93 
94  static HyperionDaemon* getInstance() { return daemon; };
95  static HyperionDaemon* daemon;
96 
97 public slots:
98  void freeObjects();
99 
100 signals:
104  void settingsChanged(const settings::type& type, const QJsonDocument& data);
105 
109  void videoMode(const VideoMode& mode);
110 
111 private slots:
117  void handleSettingsUpdate(const settings::type& type, const QJsonDocument& config);
118 
123  void setVideoMode(const VideoMode& mode);
124 
125 private:
126  void createGrabberDispmanx();
127  void createGrabberAmlogic();
128  void createGrabberFramebuffer(const QJsonObject & grabberConfig);
129  void createGrabberOsx(const QJsonObject & grabberConfig);
130  void createGrabberX11(const QJsonObject & grabberConfig);
131  void createGrabberQt(const QJsonObject & grabberConfig);
132 
133  Logger* _log;
134  BonjourBrowserWrapper* _bonjourBrowserWrapper;
135  PythonInit* _pyInit;
136  WebServer* _webserver;
137  JsonServer* _jsonServer;
138  UDPListener* _udpListener;
139  V4L2Wrapper* _v4l2Grabber;
140  DispmanxWrapper* _dispmanx;
141  X11Wrapper* _x11Grabber;
142  AmlogicWrapper* _amlGrabber;
143  FramebufferWrapper* _fbGrabber;
144  OsxWrapper* _osxGrabber;
145  QtWrapper* _qtGrabber;
146  Hyperion* _hyperion;
147  SSDPHandler* _ssdp;
148  FlatBufferServer* _flatBufferServer;
149  ProtoServer* _protoServer;
150 
151  unsigned _grabber_width;
152  unsigned _grabber_height;
153  unsigned _grabber_frequency;
154  unsigned _grabber_cropLeft;
155  unsigned _grabber_cropRight;
156  unsigned _grabber_cropTop;
157  unsigned _grabber_cropBottom;
158  int _grabber_ge2d_mode;
159  QString _grabber_device;
160 
161  QString _prevType;
162 
163  VideoMode _currVideoMode;
164  SettingsManager* _settingsManager;
165 };
Definition: Logger.h:32
This class creates a TCP server which accepts connections wich can then send in Protocol Buffer encod...
Definition: ProtoServer.h:18
The main class of Hyperion.
Definition: Hyperion.h:57
Definition: V4L2Wrapper.h:6
Manage SSDP discovery.
Definition: SSDPHandler.h:19
This class creates a TCP server which accepts connections wich can then send in JSON encoded commands...
Definition: JsonServer.h:22
The DispmanxWrapper uses an instance of the DispmanxFrameGrabber to obtain ImageRgb&#39;s from the displa...
Definition: AmlogicWrapper.h:11
void videoMode(const VideoMode &mode)
After eval of setVideoMode this signal emits with a new one on change.
const VideoMode & getVideoMode()
Get the current videoMode.
Definition: hyperiond.h:85
The OsxWrapper uses an instance of the OsxFrameGrabber to obtain ImageRgb&#39;s from the displayed conten...
Definition: OsxWrapper.h:11
Definition: bonjourbrowserwrapper.h:13
const QJsonDocument getSetting(const settings::type &type)
get the settings
Definition: hyperiond.cpp:145
WebServer * getWebServerInstance()
Get webserver pointer (systray)
Definition: hyperiond.h:80
Definition: WebServer.h:18
Definition: systray.h:13
Definition: hyperiond.h:67
Manage the settings read write from/to config file, on settings changed will emit a signal to update ...
Definition: SettingsManager.h:14
The DispmanxWrapper uses an instance of the DispmanxFrameGrabber to obtain ImageRgb&#39;s from the displa...
Definition: DispmanxWrapper.h:12
The FramebufferWrapper uses an instance of the FramebufferFrameGrabber to obtain ImageRgb&#39;s from the ...
Definition: FramebufferWrapper.h:11
A TcpServer to receive images of different formats with Google Flatbuffer Images will be forwarded to...
Definition: FlatBufferServer.h:17
This class creates a UDP server which accepts connections from boblight clients.
Definition: UDPListener.h:25
The QtWrapper uses QtFramework API&#39;s to get a picture from system.
Definition: QtWrapper.h:9
Handle the PythonInit, module registers and DeInit.
Definition: PythonInit.h:6
void settingsChanged(const settings::type &type, const QJsonDocument &data)
PIPE settings events from Hyperion class to HyperionDaemon components.
The X11Wrapper uses an instance of the X11Grabber to obtain ImageRgb&#39;s from the displayed content...
Definition: X11Wrapper.h:16