Ajout du timeout MQTT
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user