Multi brokers MQTT semble fonctionner
This commit is contained in:
@@ -23,7 +23,7 @@ COtarcikCan::COtarcikCan(QObject *parent) : QObject(parent)
|
||||
{
|
||||
mGPTimer = new QTimer;
|
||||
connect(mGPTimer,SIGNAL(timeout()),this,SLOT(GPTimerExpired()));
|
||||
mCANBusMQTTClient.mProgramPtr = this;
|
||||
// mCANBusMQTTClient.mProgramPtr = this;
|
||||
mWatchdogTimer = new QTimer;
|
||||
connect(mWatchdogTimer,&QTimer::timeout,this,&COtarcikCan::WatchdogUpdateTimerExpired);
|
||||
mWatchdogTimer->setSingleShot(false);
|
||||
@@ -41,7 +41,14 @@ COtarcikCan::~COtarcikCan()
|
||||
}
|
||||
mCANDevicesList.clear();
|
||||
|
||||
mCANBusMQTTClient.DisconnectFromBroker();
|
||||
while(!mCANBusMQTTClientList.isEmpty())
|
||||
{
|
||||
|
||||
mCANBusMQTTClientList.first()->DisconnectFromBroker();
|
||||
delete mCANBusMQTTClientList.takeFirst();
|
||||
}
|
||||
|
||||
// mCANBusMQTTClient.DisconnectFromBroker();
|
||||
|
||||
|
||||
delete mGPTimer;
|
||||
@@ -84,12 +91,21 @@ int COtarcikCan::Start()
|
||||
|
||||
mCloudLoggingParamsList = mSystemConfig.GetCloudParams();
|
||||
mMainWindow.mDataLoggingSettingsPage->SetCloudParams(mCloudLoggingParamsList);
|
||||
mCANBusMQTTClient.SetMQTTParams(mCloudLoggingParamsList->at(0)); //TODO: Fix that
|
||||
mCANBusMQTTClient.SetCANDevicesList(&mCANDevicesList);
|
||||
for(int i = 0; i < mCloudLoggingParamsList->size(); i++)
|
||||
{
|
||||
CMQTTClientWrapper *NewMQTTWrapper = new CMQTTClientWrapper;
|
||||
NewMQTTWrapper->mProgramPtr = this;
|
||||
NewMQTTWrapper->SetMQTTParams(mCloudLoggingParamsList->at(i));
|
||||
NewMQTTWrapper->SetCANDevicesList(&mCANDevicesList);
|
||||
#ifdef ENABLE_CHIPSET_DRIVER
|
||||
mCANBusMQTTClient.SetCPUInterface(&mCPUInterface);
|
||||
NewMQTTWrapper->SetCPUInterface(&mCPUInterface);
|
||||
#endif
|
||||
mCANBusMQTTClient.SetMQTTServerPresenceCANBit(mSystemConfig.GetDeviceDetectionConfig()->mMQTTDetectionCANStatusBit);
|
||||
NewMQTTWrapper->SetMQTTServerPresenceCANBit(mSystemConfig.GetDeviceDetectionConfig()->mMQTTDetectionCANStatusBit);
|
||||
mCANBusMQTTClientList.append(NewMQTTWrapper);
|
||||
}
|
||||
// mCANBusMQTTClient.SetMQTTParams(mCloudLoggingParamsList->at(0)); //TODO: Fix that
|
||||
// mCANBusMQTTClient.SetCANDevicesList(&mCANDevicesList);
|
||||
|
||||
|
||||
mGeneralSystemParams = *mSystemConfig.GetGeneralSystemSettings();
|
||||
mMainWindow.mDataLoggingSettingsPage->SetGeneralSettingsParams(&mGeneralSystemParams);
|
||||
@@ -107,7 +123,8 @@ int COtarcikCan::Start()
|
||||
mInternetMonitor.Start(mSystemConfig.GetDeviceDetectionConfig()->mInternetDetectionCANStatusBit);
|
||||
mLANDevicesPresenceMonitor.Start(mSystemConfig.GetDeviceDetectionConfig()->GetLANDevicesConfigList());
|
||||
|
||||
mSystemConfig.mDeviceDetectionParams.SetCANPresenceMonitors(&mCANBusMQTTClient,&mLANDevicesPresenceMonitor,&mInternetMonitor);
|
||||
//mSystemConfig.mDeviceDetectionParams.SetCANPresenceMonitors(&mCANBusMQTTClient,&mLANDevicesPresenceMonitor,&mInternetMonitor); TODO: Add a bit for each MQTT client?
|
||||
mSystemConfig.mDeviceDetectionParams.SetCANPresenceMonitors(mCANBusMQTTClientList.at(0),&mLANDevicesPresenceMonitor,&mInternetMonitor);
|
||||
for(int i = 0; i < mCANDevicesList.size(); i++)
|
||||
{
|
||||
mCANDevicesList.at(i)->StartWatchdog(mSystemConfig.GetDeviceDetectionConfig());
|
||||
@@ -140,7 +157,11 @@ int COtarcikCan::Start()
|
||||
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Démarrage du logiciel OtarcikCAN"),"CPCANInterface");
|
||||
|
||||
// mCANBusMQTTClient.ConnectToBroker();
|
||||
mCANBusMQTTClient.StartMQTTClient();
|
||||
//mCANBusMQTTClient.StartMQTTClient();
|
||||
for(int i = 0; i < mCANBusMQTTClientList.size(); i++)
|
||||
{
|
||||
mCANBusMQTTClientList.at(i)->StartMQTTClient();
|
||||
}
|
||||
mMainWindow.mCANbusSettingsPage->SetDevicesList(&mCANDevicesList);
|
||||
|
||||
connect(&mInternetMonitor,&CInternetMonitor::InternetStateChanged,mMainWindow.mGeneralStatusPage,&CGeneralStatusPage::InternetStatusChanged);
|
||||
@@ -206,7 +227,7 @@ int COtarcikCan::PopulateCANDevicesList(QList<CCANDeviceConfig *> *CANDeviceConf
|
||||
|
||||
for(int i = 0; i < CANDeviceConfigList->size(); i++)
|
||||
{
|
||||
CCANDevice *NewDevice = new CCANDevice(*CANDeviceConfigList->at(i),&mCANBusMQTTClient,mSystemConfig.mCloudLoggingParamsList[0]->mMQTTTopicPrefix); //TODO fix the cloud
|
||||
CCANDevice *NewDevice = new CCANDevice(*CANDeviceConfigList->at(i),mSystemConfig.mCloudLoggingParamsList[0]->mMQTTTopicPrefix); //TODO fix the cloud
|
||||
NewDevice->mProgramPtr = this;
|
||||
NewDevice->Init();
|
||||
mCANDevicesList.append(NewDevice);
|
||||
@@ -227,7 +248,28 @@ int COtarcikCan::SaveCloudLoggingConfigRequest(QList<CCloudParams *> *CloudParam
|
||||
|
||||
mSystemConfig.SetCloudParamsList(CloudParams);
|
||||
mCloudLoggingParamsList = mSystemConfig.GetCloudParams();
|
||||
mCANBusMQTTClient.SetMQTTParams(mCloudLoggingParamsList->at(0)); //TODO: Fix
|
||||
|
||||
while(!mCANBusMQTTClientList.isEmpty())
|
||||
{
|
||||
mCANBusMQTTClientList.first()->DisconnectFromBroker();
|
||||
delete mCANBusMQTTClientList.takeFirst();
|
||||
}
|
||||
for(int i = 0; i < CloudParams->size(); i++)
|
||||
{
|
||||
CMQTTClientWrapper *NewMQTTWrapper = new CMQTTClientWrapper;
|
||||
NewMQTTWrapper->mProgramPtr = this;
|
||||
NewMQTTWrapper->SetMQTTParams(CloudParams->at(i));
|
||||
NewMQTTWrapper->SetCANDevicesList(&mCANDevicesList);
|
||||
#ifdef ENABLE_CHIPSET_DRIVER
|
||||
NewMQTTWrapper->SetCPUInterface(&mCPUInterface);
|
||||
#endif
|
||||
NewMQTTWrapper->SetMQTTServerPresenceCANBit(mSystemConfig.GetDeviceDetectionConfig()->mMQTTDetectionCANStatusBit);
|
||||
mCANBusMQTTClientList.append(NewMQTTWrapper);
|
||||
|
||||
NewMQTTWrapper->StartMQTTClient();
|
||||
}
|
||||
mSystemConfig.mDeviceDetectionParams.SetCANPresenceMonitors(mCANBusMQTTClientList.at(0),&mLANDevicesPresenceMonitor,&mInternetMonitor);
|
||||
//mCANBusMQTTClient.SetMQTTParams(mCloudLoggingParamsList->at(0)); //TODO: Fix
|
||||
|
||||
if(mSystemConfig.SaveConfig() == RET_OK)
|
||||
{
|
||||
@@ -284,7 +326,11 @@ int COtarcikCan::SaveDeviceDetectionSettingsRequest(CDeviceDetectionConfig *Devi
|
||||
mLANDevicesPresenceMonitor.Stop();
|
||||
mLANDevicesPresenceMonitor.Start(DeviceDetectconfig->GetLANDevicesConfigList());
|
||||
mInternetMonitor.UpdateCANReportingBit(DeviceDetectconfig->mInternetDetectionCANStatusBit);
|
||||
mCANBusMQTTClient.SetMQTTServerPresenceCANBit(DeviceDetectconfig->mMQTTDetectionCANStatusBit);
|
||||
for(int i = 0; i < mCANBusMQTTClientList.size(); i++)
|
||||
{
|
||||
mCANBusMQTTClientList.at(i)->SetMQTTServerPresenceCANBit(DeviceDetectconfig->mMQTTDetectionCANStatusBit);
|
||||
}
|
||||
// mCANBusMQTTClient.SetMQTTServerPresenceCANBit(DeviceDetectconfig->mMQTTDetectionCANStatusBit);
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
@@ -300,8 +346,18 @@ int COtarcikCan::SetCANConnectionStatusRequest(bool Connected)
|
||||
|
||||
int COtarcikCan::SetMQTTConnectionSatusRequest(bool Connected)
|
||||
{
|
||||
QString MQTTStates("Clients MQTT:\n");
|
||||
for(int i = 0; i < mCANBusMQTTClientList.size(); i++)
|
||||
{
|
||||
CMQTTClientWrapper *Wrapper = mCANBusMQTTClientList.at(i);
|
||||
MQTTStates.append(Wrapper->GetMQTTClientConnectionState());
|
||||
MQTTStates.append("\n");
|
||||
|
||||
}
|
||||
mMainWindow.mDataLoggingSettingsPage->SetMQTTPresenceStatus(Connected);
|
||||
return mMainWindow.mGeneralStatusPage->SetMQTTConnectionStatus(Connected);
|
||||
mMainWindow.mGeneralStatusPage->SetMQTTConnectionStatus(MQTTStates);
|
||||
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
int COtarcikCan::UpdateCANModuleStatusRequest(QString ModuleName, QString ModuleStatus, QString Buffer)
|
||||
@@ -350,7 +406,7 @@ void COtarcikCan::QuitApplicationRequest()
|
||||
|
||||
int COtarcikCan::ForceMQTTDisconnect(bool Disconnect)
|
||||
{
|
||||
mCANBusMQTTClient.ForceMQTTClientDisconnection(Disconnect);
|
||||
// mCANBusMQTTClient.ForceMQTTClientDisconnection(Disconnect);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user