KDEAmbi/hgx11net.cpp
2019-06-22 22:34:40 -04:00

87 lines
1.8 KiB
C++

#include "hgx11net.h"
// public
hgx11net::hgx11net(const char *host, ushort port)
{
_sock_p = new QTcpSocket(this);
connect(_sock_p, SIGNAL(disconnected()), this, SLOT(_disconnected()));
_host_m = host;
_port_m = port;
this->_connectHost();
}
hgx11net::~hgx11net()
{
clearLeds();
_sock_p->disconnectFromHost();
}
void hgx11net::clearLeds()
{
if (!_isConnected()) {
return;
}
_sock_p->write("{\"command\": \"clearall\"}\n");
}
void hgx11net::setLedColor(quint8 R, quint8 G, quint8 B)
{
if (!_isConnected()) {
return;
}
_cmd_m.clear();
_cmd_m.append("{\"color\":[");
_cmd_m.append(QString::number(R));
_cmd_m.append(",");
_cmd_m.append(QString::number(G));
_cmd_m.append(",");
_cmd_m.append(QString::number(B));
_cmd_m.append("],\"command\":\"color\",\"priority\":100}}\n");
_sock_p->write(_cmd_m);
}
// private
bool hgx11net::_isConnected()
{
return (_sock_p->state() == QAbstractSocket::ConnectedState);
}
void hgx11net::_connectHost()
{
_sock_p->connectToHost(_host_m, _port_m);
if(!_sock_p->waitForConnected(5000)) {
qWarning() << "hxgfnet Error: " << _sock_p->errorString();
return;
}
}
// public slots
void hgx11net::sendImage(QByteArray *imgdata)
{
if (!_isConnected()) {
return;
}
_cmd_m.clear();
_cmd_m.append("{\"command\":\"image\",\"imagedata\":\"");
_cmd_m.append(imgdata->toBase64());
_cmd_m.append("\",\"imageheight\":");
_cmd_m.append(imgHeight);
_cmd_m.append(",\"imagewidth\":");
_cmd_m.append(imgWidth);
_cmd_m.append(",\"priority\":100}\n");
_sock_p->write(_cmd_m);
}
// private slots
void hgx11net::_disconnected()
{
while (!_isConnected()) {
_connectHost();
}
}