Ajout du timeout MQTT

This commit is contained in:
2023-05-17 15:53:32 -04:00
parent 8156755771
commit ffd15d14aa
22 changed files with 5100 additions and 118 deletions
@@ -12,7 +12,8 @@ QDataStream &operator>>(QDataStream &in, CCloudParams &dest)
>> dest.mMQTTBrokerPassword
>> dest.mMQTTBrokerPort
>> dest.mMQTTBrokerUserName
>> dest.mMQTTTopicPrefix;
>> dest.mMQTTTopicPrefix
>> dest.mMQTTTransmitTimeout;
return in;
}
@@ -22,7 +23,8 @@ QDataStream &operator<<(QDataStream &out, const CCloudParams &source)
<< source.mMQTTBrokerPassword
<< source.mMQTTBrokerPort
<< source.mMQTTBrokerUserName
<< source.mMQTTTopicPrefix;
<< source.mMQTTTopicPrefix
<< source.mMQTTTransmitTimeout;
return out;
}
@@ -38,6 +40,7 @@ CCloudParams& CCloudParams::operator=(const CCloudParams *source)
this->mMQTTBrokerPort = source->mMQTTBrokerPort;
this->mMQTTBrokerUserName = source->mMQTTBrokerUserName;
this->mMQTTTopicPrefix = source->mMQTTTopicPrefix;
this->mMQTTTransmitTimeout = source->mMQTTTransmitTimeout;
return *this;
}
@@ -12,6 +12,7 @@ public:
QString mMQTTBrokerPassword;
QString mMQTTTopicPrefix;
quint32 mMQTTBrokerPort;
quint32 mMQTTTransmitTimeout;
CCloudParams &operator=(const CCloudParams *source);
};
@@ -4,6 +4,13 @@
CMQTTClientWrapper::CMQTTClientWrapper()
{
connect(&mMQTTClient,&QMqttClient::stateChanged,this,&CMQTTClientWrapper::StateChanged);
mMQTTRefreshTimer = new QTimer;
mMQTTRefreshTimer->setSingleShot(true);
}
CMQTTClientWrapper::~CMQTTClientWrapper()
{
delete mMQTTRefreshTimer;
}
int CMQTTClientWrapper::SetMQTTParams(CCloudParams *Params)
@@ -35,21 +42,29 @@ int CMQTTClientWrapper::DisconnectFromBroker()
return RET_OK;
}
int CMQTTClientWrapper::SendMQTTMessages(QList<CMQTTMessage> MessagesList)
int CMQTTClientWrapper::NewMQTTMessages(QList<CMQTTMessage> MessagesList)
{
if(mMQTTClient.state() != QMqttClient::Connected)
{
return RET_GENERAL_ERROR;
}
if(mMQTTRefreshTimer->remainingTime() > 0)
{
// qDebug("MQTT timer value: %d",mMQTTRefreshTimer->remainingTime());
return RET_OK;
}
if(MessagesList.isEmpty())
{
return RET_GENERAL_ERROR;
}
for(int i = 0; i < MessagesList.size(); i++)
{
qint32 res = mMQTTClient.publish(MessagesList.at(i).mMessageTopic,MessagesList.at(i).mMessagePayload.toLocal8Bit(),0,true);
}
mMQTTRefreshTimer->start(mMQTTParams.mMQTTTransmitTimeout);
qDebug("Sent %d MQTT messages",MessagesList.size());
return RET_OK;
@@ -76,3 +91,9 @@ void CMQTTClientWrapper::StateChanged()
}
}
}
int CMQTTClientWrapper::SendMQTTTestMessage()
{
mMQTTClient.publish(QString("Otarcik/Test"),QString("Test Payload").toLocal8Bit(),0,true);
qDebug("Sending MQTT test message");
}
@@ -13,12 +13,15 @@ class CMQTTClientWrapper : public QObject
Q_OBJECT
public:
CMQTTClientWrapper();
~CMQTTClientWrapper();
int SetMQTTParams(CCloudParams *Params);
int ConnectToBroker();
int SendMQTTMessages(QList<CMQTTMessage> MessagesList);
int NewMQTTMessages(QList<CMQTTMessage> MessagesList);
int DisconnectFromBroker();
int SendMQTTTestMessage();
QString mMQTTClientID;
QTimer *mMQTTRefreshTimer;
private:
QMqttClient mMQTTClient;