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
@@ -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++)
{
+2 -1
View File
@@ -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;
}
+41 -1
View File
@@ -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">
+14 -4
View File
@@ -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();
}
+2
View File
@@ -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 -4
View File
@@ -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();