hyperion.ng
FlatBufferConnection.h
1 #pragma once
2 
3 // Qt includes
4 #include <QString>
5 #include <QColor>
6 #include <QImage>
7 #include <QTcpSocket>
8 #include <QTimer>
9 #include <QMap>
10 
11 // hyperion util
12 #include <utils/Image.h>
13 #include <utils/ColorRgb.h>
14 #include <utils/VideoMode.h>
15 #include <utils/Logger.h>
16 
17 // flatbuffer FBS
18 #include "hyperion_reply_generated.h"
19 #include "hyperion_request_generated.h"
20 
24 class FlatBufferConnection : public QObject
25 {
26 
27  Q_OBJECT
28 
29 public:
35  FlatBufferConnection(const QString& origin, const QString & address, const int& priority, const bool& skipReply);
36 
41 
43  void setSkipReply(const bool& skip);
44 
50  void setRegister(const QString& origin, int priority);
51 
58  void setColor(const ColorRgb & color, int priority, int duration = 1);
59 
64  void clear(int priority);
65 
69  void clearAll();
70 
75  void sendMessage(const uint8_t* buffer, uint32_t size);
76 
77 public slots:
82  void setImage(const Image<ColorRgb> &image);
83 
84 private slots:
88  void connectToHost();
89 
93  void readData();
94 
95 signals:
96 
100  void setVideoMode(const VideoMode videoMode);
101 
102 private:
103 
109  bool parseReply(const hyperionnet::Reply *reply);
110 
111 private:
113  QTcpSocket _socket;
114 
115  QString _origin;
116  int _priority;
117 
119  QString _host;
120 
122  uint16_t _port;
123 
125  QByteArray _receiveBuffer;
126 
127  QTimer _timer;
128  QAbstractSocket::SocketState _prevSocketState;
129 
130  Logger * _log;
131  flatbuffers::FlatBufferBuilder _builder;
132 
133  bool _registered;
134 };
Definition: Logger.h:32
void setImage(const Image< ColorRgb > &image)
Set the leds according to the given image.
Definition: FlatBufferConnection.cpp:122
void setColor(const ColorRgb &color, int priority, int duration=1)
Set all leds to the specified color.
Definition: FlatBufferConnection.cpp:113
FlatBufferConnection(const QString &origin, const QString &address, const int &priority, const bool &skipReply)
Constructor.
Definition: FlatBufferConnection.cpp:10
Connection class to setup an connection to the hyperion server and execute commands.
Definition: FlatBufferConnection.h:24
void setVideoMode(const VideoMode videoMode)
emits when a new videoMode was requested from flatbuf client
void clear(int priority)
Clear the given priority channel.
Definition: FlatBufferConnection.cpp:133
void sendMessage(const uint8_t *buffer, uint32_t size)
Send a command message and receive its reply.
Definition: FlatBufferConnection.cpp:154
void setSkipReply(const bool &skip)
Do not read reply messages from Hyperion if set to true.
Definition: FlatBufferConnection.cpp:84
void setRegister(const QString &origin, int priority)
Register a new priority with given origin.
Definition: FlatBufferConnection.cpp:92
void clearAll()
Clear all priority channels.
Definition: FlatBufferConnection.cpp:142
~FlatBufferConnection()
Destructor.
Definition: FlatBufferConnection.cpp:46
Plain-Old-Data structure containing the red-green-blue color specification.
Definition: ColorRgb.h:13