KDEAmbi/hgx11net.cpp
Tobias J. Endres cd9a45c4f6 Feat: Add logging for outgoing JSON commands
Added a qDebug() statement in hgx11net::_sendCommand() to log the JSON
command string just before it is sent to the Hyperion server. This
will help in debugging why no results are appearing on the Hyperion
end, by confirming if commands are being sent and what their content is.
2025-08-14 02:47:38 +02:00

185 lines
4.6 KiB
C++

#include "hgx11net.h"
// public
hgx11net::hgx11net(QString host, ushort port, QString priority)
{
_sock_p = new QTcpSocket(this);
_sock_p->setReadBufferSize(1);
_host_m = host;
_port_m = port;
_priority_m = priority;
_connectHost();
}
hgx11net::~hgx11net()
{
clearLeds();
if (_sock_p->state() == QAbstractSocket::ConnectedState) {
while(_sock_p->waitForBytesWritten()) {}
_sock_p->disconnectFromHost();
}
delete _sock_p;
}
void hgx11net::clearLeds()
{
_cmd_m.clear();
_cmd_m.append("{\"command\": \"clearall\",\"priority\":").append(_priority_m.toUtf8()).append("}\n");
_sendCommand();
}
void hgx11net::setLedColor(quint8 R, quint8 G, quint8 B)
{
_cmd_m.clear();
_cmd_m.append("{\"color\":[");
_cmd_m.append(QString::number(R).toUtf8());
_cmd_m.append(",");
_cmd_m.append(QString::number(G).toUtf8());
_cmd_m.append(",");
_cmd_m.append(QString::number(B).toUtf8());
_cmd_m.append("],\"command\":\"color\",\"priority\":").append(_priority_m.toUtf8()).append("}\n");
_sendCommand();
}
void hgx11net::ledAdjustments(QString red, QString green, QString blue, QString temp, QString thres, QString trans)
{
_redAdjust_m = red;
_greenAdjust_m = green;
_blueAdjust_m = blue;
_temperature_m = temp;
_threshold_m = thres;
_transform_m = trans;
_ledAdjustments();
}
// private
bool hgx11net::_isConnected()
{
bool connected = (_sock_p->state() == QAbstractSocket::ConnectedState);
if (!connected) {
_sock_p->reset();
_connectHost();
connected = (_sock_p->state() == QAbstractSocket::ConnectedState);
_ledAdjustments();
}
return connected;
}
void hgx11net::_connectHost()
{
_sock_p->connectToHost(_host_m, _port_m);
if(!_sock_p->waitForConnected(5000)) {
qWarning() << "hxgfnet Error: " << _sock_p->errorString();
return;
}
}
void hgx11net::_sendCommand()
{
if (!_isConnected()) {
return;
}
qDebug() << "Sending command: " << _cmd_m;
_sock_p->write(_cmd_m);
while (_sock_p->bytesToWrite()) {
_sock_p->waitForBytesWritten();
}
}
void hgx11net::_ledAdjustments()
{
_colorAdjustmentType_m = 0;
if (_redAdjust_m != "") {
_colorAdjustmentType_m |= REDADJUST;
}
if (_greenAdjust_m != "") {
_colorAdjustmentType_m |= GREENADJUST;
}
if (_blueAdjust_m != "") {
_colorAdjustmentType_m |= BLUEADJUST;
}
_colorAdjustment();
_thresholdAdjustment();
_transformdAdjustment();
}
void hgx11net::_colorAdjustment()
{
if (!_colorAdjustmentType_m) {
return;
}
_cmd_m.clear();
_cmd_m.append("{\"adjustment\":{");
if (_colorAdjustmentType_m & REDADJUST) {
_cmd_m.append("\"redAdjust\":");
_cmd_m.append(_redAdjust_m.toUtf8());
_cmd_m.append(",");
}
if (_colorAdjustmentType_m & GREENADJUST) {
_cmd_m.append("\"greenAdjust\":");
_cmd_m.append(_greenAdjust_m.toUtf8());
_cmd_m.append(",");
}
if (_colorAdjustmentType_m & BLUEADJUST) {
_cmd_m.append("\"blueAdjust\":");
_cmd_m.append(_blueAdjust_m.toUtf8());
_cmd_m.append(",");
}
_cmd_m.chop(1); // remove trailing ,
_cmd_m.append("},\"command\":\"adjustment\",").append(_priority_m.toUtf8()).append("}\n");
_sendCommand();
}
void hgx11net::_thresholdAdjustment()
{
if (_threshold_m == "") {
return;
}
_cmd_m.clear();
_cmd_m.append("{\"command\":\"transform\",\"priority\":").append(_priority_m.toUtf8()).append(",\"transform\":{\"threshold\":");
_cmd_m.append(_threshold_m.toUtf8());
_cmd_m.append("}}\n");
_sendCommand();
}
void hgx11net::_transformdAdjustment()
{
if (_transform_m == "") {
return;
}
QStringList values = _transform_m.split(',');
_cmd_m.clear();
_cmd_m.append("{\"command\":\"transform\",\"priority\":").append(_priority_m.toUtf8()).append(",\"transform\":{\"luminanceGain\":");
_cmd_m.append(values.at(0).toUtf8());
_cmd_m.append(",\"luminanceMinimum\":");
_cmd_m.append(values.at(1).toUtf8());
_cmd_m.append(",\"saturationGain\":");
_cmd_m.append(values.at(2).toUtf8());
_cmd_m.append("}}\n");
_sendCommand();
}
void hgx11net::_temperatureAdjustment()
{
if (_temperature_m == "") {
return;
}
_cmd_m.clear();
_cmd_m.append("{\"command\":\"temperature\",\"priority\":");
_cmd_m.append(_temperature_m.toUtf8());
_cmd_m.append("}}\n");
_sendCommand();
}
// public slots
void hgx11net::sendImage(QString imgdata)
{
_cmd_m = imgCmdBuf;
_cmd_m.append(imgdata.toUtf8());
_cmd_m.append("\"}\n");
_sendCommand();
}