Skip to content

Commit 32e85af

Browse files
committed
Add global MQTT communication signals
1 parent 90017ee commit 32e85af

File tree

3 files changed

+28
-1
lines changed

3 files changed

+28
-1
lines changed

include/mqtt/mqtt.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ public slots:
2828

2929
void handleSettingsUpdate(settings::type type, const QJsonDocument& config);
3030

31+
void handleSignalMqttSubscribe(bool subscribe, QString topic);
32+
3133
private slots:
3234
void connected();
3335
void error(const QMQTT::ClientError error);

include/utils/GlobalSignals.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,4 +99,8 @@ class GlobalSignals : public QObject
9999
void SignalSetLut(MemoryBuffer<uint8_t>* lut);
100100

101101
void SignalLutRequest();
102+
103+
void SignalMqttSubscribe(bool subscribe, QString topic);
104+
105+
void SignalMqttReceived(QString topic, QString payload);
102106
};

sources/mqtt/mqtt.cpp

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#include <QHostInfo>
1010

1111
#include <api/HyperAPI.h>
12+
#include <utils/GlobalSignals.h>
1213

1314
// default param %1 is 'HyperHDR', do not edit templates here
1415
const static QString TEMPLATE_HYPERHDRAPI = QStringLiteral("%1/JsonAPI");
@@ -114,6 +115,8 @@ void mqtt::connected()
114115
{
115116
Debug(_log, "Connected");
116117

118+
connect(GlobalSignals::getInstance(), &GlobalSignals::SignalMqttSubscribe, this, &mqtt::handleSignalMqttSubscribe);
119+
117120
if (_retryTimer != nullptr)
118121
{
119122
Debug(_log, "Removing retry timer");
@@ -122,12 +125,26 @@ void mqtt::connected()
122125
_retryTimer = nullptr;
123126
}
124127

125-
if (_clientInstance != nullptr)
128+
if (_clientInstance != nullptr && !_disableApiAccess)
126129
{
127130
_clientInstance->subscribe(HYPERHDRAPI, 2);
128131
}
129132
}
130133

134+
void mqtt::handleSignalMqttSubscribe(bool subscribe, QString topic)
135+
{
136+
if (_clientInstance == nullptr)
137+
return;
138+
139+
if (subscribe)
140+
{
141+
_clientInstance->subscribe(topic, 2);
142+
}
143+
else
144+
{
145+
_clientInstance->unsubscribe(topic);
146+
}
147+
}
131148

132149
void mqtt::error(const QMQTT::ClientError error)
133150
{
@@ -307,4 +324,8 @@ void mqtt::received(const QMQTT::Message& message)
307324
}
308325
_clientInstance->publish(result);
309326
}
327+
else
328+
{
329+
emit GlobalSignals::getInstance()->SignalMqttReceived(topic, payload);
330+
}
310331
}

0 commit comments

Comments
 (0)