Ajout du timeout MQTT
This commit is contained in:
@@ -82,6 +82,8 @@ void CCANAnalyzer::CANTimerExpired()
|
||||
{
|
||||
QList<CCANMessage *> NewMessagesList = mCANDriverIF->ReadCANFullBuffer(mCANDeviceChannel);
|
||||
|
||||
qDebug("CAN Buffer size: %d",NewMessagesList.size());
|
||||
|
||||
|
||||
for(int i = 0 ; i < NewMessagesList.size(); i++)
|
||||
{
|
||||
|
||||
@@ -5,6 +5,7 @@ CCANDataLogger::CCANDataLogger():
|
||||
mTopicDeviceString("")
|
||||
{
|
||||
mMQTTCLient = 0;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -64,7 +65,7 @@ int CCANDataLogger::LogNewData(const QList<CCANMessage *> *MsgList)
|
||||
|
||||
if(mMQTTCLient != 0)
|
||||
{
|
||||
mMQTTCLient->SendMQTTMessages(mMQTTMsgList);
|
||||
mMQTTCLient->NewMQTTMessages(mMQTTMsgList);
|
||||
}
|
||||
return RET_OK;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -17,6 +17,7 @@ CLoggingSettingsPage::CLoggingSettingsPage(QWidget *parent) :
|
||||
ui->mCloudMQTTPortSpinBx->setEnabled(false);
|
||||
ui->mCloudMQTTTopicPrefixEdit->setEnabled(false);
|
||||
ui->mCloudMQTTUserNameEdit->setEnabled(false);
|
||||
ui->mCloudMQTTRefreshRateSpinBx->setEnabled(false);
|
||||
|
||||
|
||||
|
||||
@@ -53,6 +54,7 @@ void CLoggingSettingsPage::ModifyParamsBtnPressed()
|
||||
ui->mCloudMQTTPortSpinBx->setEnabled(true);
|
||||
ui->mCloudMQTTTopicPrefixEdit->setEnabled(true);
|
||||
ui->mCloudMQTTUserNameEdit->setEnabled(true);
|
||||
ui->mCloudMQTTRefreshRateSpinBx->setEnabled(true);
|
||||
ui->mChangeParamsBtn->setText("Appliquer");
|
||||
}
|
||||
else
|
||||
@@ -65,6 +67,7 @@ void CLoggingSettingsPage::ModifyParamsBtnPressed()
|
||||
ui->mCloudMQTTPortSpinBx->setEnabled(false);
|
||||
ui->mCloudMQTTTopicPrefixEdit->setEnabled(false);
|
||||
ui->mCloudMQTTUserNameEdit->setEnabled(false);
|
||||
ui->mCloudMQTTRefreshRateSpinBx->setEnabled(false);
|
||||
|
||||
|
||||
mCloudParams.mMQTTBrokerHostName = ui->mCloudMQTTHostNameEdit->text();
|
||||
@@ -72,6 +75,7 @@ void CLoggingSettingsPage::ModifyParamsBtnPressed()
|
||||
mCloudParams.mMQTTBrokerPort = (quint32)ui->mCloudMQTTPortSpinBx->value();
|
||||
mCloudParams.mMQTTTopicPrefix = ui->mCloudMQTTTopicPrefixEdit->text();
|
||||
mCloudParams.mMQTTBrokerUserName = ui->mCloudMQTTUserNameEdit->text();
|
||||
mCloudParams.mMQTTTransmitTimeout = (quint32)ui->mCloudMQTTRefreshRateSpinBx->value();
|
||||
|
||||
mProgramHandle->SaveCloudLoggingConfigRequest(&mCloudParams);
|
||||
|
||||
@@ -87,6 +91,7 @@ void CLoggingSettingsPage::CancelBtnPressed()
|
||||
ui->mCloudMQTTPortSpinBx->setEnabled(false);
|
||||
ui->mCloudMQTTTopicPrefixEdit->setEnabled(false);
|
||||
ui->mCloudMQTTUserNameEdit->setEnabled(false);
|
||||
ui->mCloudMQTTRefreshRateSpinBx->setEnabled(false);
|
||||
|
||||
UpdateConfigPage();
|
||||
}
|
||||
@@ -98,6 +103,7 @@ int CLoggingSettingsPage::UpdateConfigPage()
|
||||
ui->mCloudMQTTPortSpinBx->setValue(mCloudParams.mMQTTBrokerPort);
|
||||
ui->mCloudMQTTTopicPrefixEdit->setText(mCloudParams.mMQTTTopicPrefix);
|
||||
ui->mCloudMQTTUserNameEdit->setText(mCloudParams.mMQTTBrokerUserName);
|
||||
ui->mCloudMQTTRefreshRateSpinBx->setValue(mCloudParams.mMQTTTransmitTimeout);
|
||||
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
@@ -141,7 +141,7 @@
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>90</x>
|
||||
<y>81</y>
|
||||
<y>80</y>
|
||||
<width>321</width>
|
||||
<height>20</height>
|
||||
</rect>
|
||||
@@ -235,6 +235,46 @@
|
||||
</rect>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="mCloudMQTTRefreshRateLbl">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>220</y>
|
||||
<width>181</width>
|
||||
<height>20</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>10</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Taux de rafraichissement (ms):</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QSpinBox" name="mCloudMQTTRefreshRateSpinBx">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>200</x>
|
||||
<y>220</y>
|
||||
<width>101</width>
|
||||
<height>22</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>1000</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>500000</number>
|
||||
</property>
|
||||
<property name="singleStep">
|
||||
<number>1</number>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
<widget class="QLabel" name="mGeneralLogParamsLbl">
|
||||
<property name="geometry">
|
||||
|
||||
@@ -19,7 +19,8 @@
|
||||
|
||||
COtarcikCan::COtarcikCan(QObject *parent) : QObject(parent)
|
||||
{
|
||||
|
||||
mGPTimer = new QTimer;
|
||||
connect(mGPTimer,SIGNAL(timeout()),this,SLOT(GPTimerExpired()));
|
||||
}
|
||||
|
||||
COtarcikCan::~COtarcikCan()
|
||||
@@ -34,6 +35,9 @@ COtarcikCan::~COtarcikCan()
|
||||
mCANBusMQTTClient.DisconnectFromBroker();
|
||||
|
||||
|
||||
delete mGPTimer;
|
||||
|
||||
|
||||
}
|
||||
|
||||
int COtarcikCan::Start()
|
||||
@@ -67,6 +71,9 @@ int COtarcikCan::Start()
|
||||
|
||||
mCANBusMQTTClient.SetMQTTParams(&mCloudLoggingParams);
|
||||
mCANBusMQTTClient.ConnectToBroker();
|
||||
mGPTimer->setSingleShot(false);
|
||||
mGPTimer->start(5000);
|
||||
|
||||
|
||||
}
|
||||
// CCANDevice *NewCANDevice = new CCANDevice();
|
||||
@@ -86,9 +93,6 @@ int COtarcikCan::Start()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -166,6 +170,7 @@ int COtarcikCan::SaveCloudLoggingConfigRequest(CCloudParams *CloudParams)
|
||||
|
||||
mCloudLoggingParams = *CloudParams;
|
||||
mSystemConfig.SetCloudParams(&mCloudLoggingParams);
|
||||
mCANBusMQTTClient.SetMQTTParams(&mCloudLoggingParams);
|
||||
|
||||
if(mSystemConfig.SaveConfig() == RET_OK)
|
||||
{
|
||||
@@ -180,3 +185,8 @@ int COtarcikCan::SaveCloudLoggingConfigRequest(CCloudParams *CloudParams)
|
||||
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
void COtarcikCan::GPTimerExpired()
|
||||
{
|
||||
// mCANBusMQTTClient.SendMQTTTestMessage();
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ public:
|
||||
CMainWindow mMainWindow;
|
||||
CSystemConfig mSystemConfig;
|
||||
CMQTTClientWrapper mCANBusMQTTClient;
|
||||
QTimer *mGPTimer;
|
||||
|
||||
int Start();
|
||||
|
||||
@@ -41,6 +42,7 @@ private:
|
||||
signals:
|
||||
|
||||
public slots:
|
||||
void GPTimerExpired();
|
||||
};
|
||||
|
||||
#endif // OTARCIKCAN_H
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#include <QApplication>
|
||||
#include "OtarcikCan.h"
|
||||
#include "windows.h"
|
||||
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
@@ -8,10 +9,6 @@ int main(int argc, char *argv[])
|
||||
QApplication a(argc, argv);
|
||||
COtarcikCan OtarcikCanProgram; //Instanciate the program
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
OtarcikCanProgram.Start();
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user