Modification de la configuration système et ajout des paramètres Cloud.

This commit is contained in:
2023-02-17 16:30:47 -05:00
parent 74b6a23045
commit 3ec5677dca
30 changed files with 13461 additions and 348 deletions
@@ -9,8 +9,12 @@ CCANDeviceConfig::CCANDeviceConfig()
mDeviceDescription = "Description du module";
mDeviceName = "Nom du module";
mDevicePollPeriod = 200;
}
CCANDeviceConfig::CCANDeviceConfig(CCANDeviceConfig &Other)
{
//Assign default values
*this = Other;
}
@@ -9,6 +9,7 @@ class CCANDeviceConfig
{
public:
CCANDeviceConfig();
CCANDeviceConfig(CCANDeviceConfig &Other);
TPCANHandle mCANDeviceID;
TPCANBaudrate mCANDeviceBaudrate;
@@ -365,7 +365,7 @@ int CCANbusSettingsPage::ModifyDeviceConfig()
ModifiedDevice->mDeviceName = ui->mDeviceNameEditBx->toPlainText();
ModifiedDevice->mDevicePollPeriod = ui->mDevicePollPeriodSpinBx->value();
mProgramPtr->SaveSystemConfigRequest(&mDeviceConfigList);
mProgramPtr->SaveCANDevicesConfigRequest(&mDeviceConfigList);
}
@@ -478,7 +478,7 @@ void CCANbusSettingsPage::DeleteDeviceBtnPressed()
{
delete mDeviceConfigList.takeAt(index);
}
mProgramPtr->SaveSystemConfigRequest(&mDeviceConfigList);
mProgramPtr->SaveCANDevicesConfigRequest(&mDeviceConfigList);
}
+213 -8
View File
@@ -6,29 +6,234 @@
<rect>
<x>0</x>
<y>0</y>
<width>1142</width>
<height>460</height>
<width>1196</width>
<height>676</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<widget class="QLabel" name="label">
<widget class="QLabel" name="mCloudLogParamsLbl">
<property name="geometry">
<rect>
<x>500</x>
<x>20</x>
<y>20</y>
<width>191</width>
<height>16</height>
<width>181</width>
<height>31</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
<pointsize>14</pointsize>
</font>
</property>
<property name="text">
<string>Cloud Settings</string>
<string>Paramètres Cloud</string>
</property>
</widget>
<widget class="QGroupBox" name="groupBox">
<property name="geometry">
<rect>
<x>10</x>
<y>60</y>
<width>461</width>
<height>271</height>
</rect>
</property>
<property name="title">
<string>Broker MQTT</string>
</property>
<widget class="QLabel" name="mCloudMQTTHostNameLbl">
<property name="geometry">
<rect>
<x>10</x>
<y>21</y>
<width>71</width>
<height>20</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>HostName</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
<widget class="QLabel" name="mCloudMQTTPortLbl">
<property name="geometry">
<rect>
<x>-30</x>
<y>56</y>
<width>111</width>
<height>10</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Port</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
<widget class="QLabel" name="mCloudMQTTUsernameLbl">
<property name="geometry">
<rect>
<x>10</x>
<y>81</y>
<width>71</width>
<height>20</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Username</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
<widget class="QLabel" name="mCloudMQTTPasswordLbl">
<property name="geometry">
<rect>
<x>-30</x>
<y>111</y>
<width>111</width>
<height>16</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Password</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
<widget class="QLineEdit" name="mCloudMQTTHostNameEdit">
<property name="geometry">
<rect>
<x>90</x>
<y>20</y>
<width>321</width>
<height>20</height>
</rect>
</property>
</widget>
<widget class="QLineEdit" name="mCloudMQTTUserNameEdit">
<property name="geometry">
<rect>
<x>90</x>
<y>81</y>
<width>321</width>
<height>20</height>
</rect>
</property>
</widget>
<widget class="QSpinBox" name="mCloudMQTTPortSpinBx">
<property name="geometry">
<rect>
<x>90</x>
<y>51</y>
<width>111</width>
<height>22</height>
</rect>
</property>
<property name="maximum">
<number>65535</number>
</property>
<property name="value">
<number>1883</number>
</property>
</widget>
<widget class="QLineEdit" name="mCloudMQTTPasswordEdit">
<property name="geometry">
<rect>
<x>90</x>
<y>111</y>
<width>321</width>
<height>20</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="mCloudMQTTTopicPrefixLbl">
<property name="geometry">
<rect>
<x>10</x>
<y>160</y>
<width>71</width>
<height>20</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Topic Prefix</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
<widget class="QLineEdit" name="mCloudMQTTTopicPrefixEdit">
<property name="geometry">
<rect>
<x>90</x>
<y>160</y>
<width>321</width>
<height>20</height>
</rect>
</property>
</widget>
</widget>
<widget class="QLabel" name="mGeneralLogParamsLbl">
<property name="geometry">
<rect>
<x>20</x>
<y>370</y>
<width>181</width>
<height>31</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>14</pointsize>
</font>
</property>
<property name="text">
<string>Paramètres généraux</string>
</property>
</widget>
<widget class="QCheckBox" name="mSaveLocalLogFileChkBx">
<property name="geometry">
<rect>
<x>20</x>
<y>410</y>
<width>261</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>Sauvegarder fichier log local</string>
</property>
</widget>
</widget>
@@ -0,0 +1,14 @@
#include "StorageSettingsPage.h"
#include "ui_StorageSettingsPage.h"
CStorageSettingsPage::CStorageSettingsPage(QWidget *parent) :
QWidget(parent),
ui(new Ui::CStorageSettingsPage)
{
ui->setupUi(this);
}
CStorageSettingsPage::~CStorageSettingsPage()
{
delete ui;
}
@@ -0,0 +1,22 @@
#ifndef STORAGESETTINGSPAGE_H
#define STORAGESETTINGSPAGE_H
#include <QWidget>
namespace Ui {
class CStorageSettingsPage;
}
class CStorageSettingsPage : public QWidget
{
Q_OBJECT
public:
explicit CStorageSettingsPage(QWidget *parent = 0);
~CStorageSettingsPage();
private:
Ui::CStorageSettingsPage *ui;
};
#endif // STORAGESETTINGSPAGE_H
@@ -0,0 +1,22 @@
<?xml version='1.0'?>
<ui version="4.0">
<author/>
<comment/>
<exportmacro/>
<class>CStorageSettingsPage</class>
<widget name="CStorageSettingsPage" class="QWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>320</width>
<height>240</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
</widget>
<pixmapfunction/>
<connections/>
</ui>
+42 -23
View File
@@ -37,6 +37,7 @@ COtarcikCan::~COtarcikCan()
int COtarcikCan::Start()
{
mMainWindow.mCANbusSettingsPage->mProgramPtr = this;
mMainWindow.show();
@@ -47,13 +48,13 @@ int COtarcikCan::Start()
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Démarrage du logiciel OtarcikCAN"));
if(mSystemConfig.LoadConfig(&mCANDevicesList) == RET_OK)
if(mSystemConfig.LoadConfig() == RET_OK)
{
for(int i = 0; i < mCANDevicesList.size(); i++)
QList<CCANDeviceConfig*> *CANDeviceConfigList;
CANDeviceConfigList = mSystemConfig.GetCANDevicesConfigList();
if(CANDeviceConfigList != 0)
{
mCANDevicesList[i]->mProgramPtr = this;
mCANDevicesList.at(i)->Init();
PopulateCANDevicesList(CANDeviceConfigList);
}
@@ -95,30 +96,25 @@ int COtarcikCan::InitCANViewer(QList<CCANMessage *> *MsgList)
//The device configuration has been modified directly in the master list
//Just save it and refresh display.
int COtarcikCan::SaveSystemConfigRequest(QList<CCANDeviceConfig *> *DevicesConfigList)
int COtarcikCan::SaveCANDevicesConfigRequest(QList<CCANDeviceConfig *> *DevicesConfigList)
{
if(mSystemConfig.SaveConfig(DevicesConfigList) == RET_OK)
if(DevicesConfigList == 0)
{
// mMainWindow.mProgramSettingsPage->UpdatePage();
return RET_GENERAL_ERROR;
}
if(mSystemConfig.SetCANDevicesConfigList(DevicesConfigList) != RET_OK)
{
return RET_GENERAL_ERROR;
}
if(mSystemConfig.SaveConfig() == RET_OK)
{
//Config saving is successful. To apply changes we need to reload the devices.
//The easiest way is to delete everything and reload.
while(mCANDevicesList.size() != 0)
{
delete mCANDevicesList.takeFirst();
}
if(mSystemConfig.LoadConfig(&mCANDevicesList) == RET_OK)
{
for(int i = 0; i < mCANDevicesList.size(); i++)
{
mCANDevicesList[i]->mProgramPtr = this;
mCANDevicesList.at(i)->Init();
}
mMainWindow.mCANbusSettingsPage->SetDevicesList(&mCANDevicesList);
}
PopulateCANDevicesList(DevicesConfigList);
mMainWindow.mCANbusSettingsPage->SetDevicesList(&mCANDevicesList);
}
else
{
@@ -127,3 +123,26 @@ int COtarcikCan::SaveSystemConfigRequest(QList<CCANDeviceConfig *> *DevicesConfi
return RET_OK;
}
int COtarcikCan::PopulateCANDevicesList(QList<CCANDeviceConfig *> *CANDeviceConfigList)
{
if(CANDeviceConfigList == 0)
{
return RET_GENERAL_ERROR;
}
while(mCANDevicesList.size() != 0)
{
delete mCANDevicesList.takeFirst();
}
for(int i = 0; i < CANDeviceConfigList->size(); i++)
{
CCANDevice *NewDevice = new CCANDevice(*CANDeviceConfigList->at(i));
NewDevice->mProgramPtr = this;
NewDevice->Init();
mCANDevicesList.append(NewDevice);
}
return RET_OK;
}
+6 -1
View File
@@ -9,6 +9,9 @@
#include <QList>
#include "SystemConfig.h"
#include <QtMqtt/QtMqtt>
#include <QMqttClient>
class COtarcikCan : public QObject
{
Q_OBJECT
@@ -25,11 +28,13 @@ public:
int UpdateCANViewerDataRequest(QList<CCANMessage *> *MsgList);
int SaveSystemConfigRequest(QList<CCANDeviceConfig*> *DevicesConfigList);
int SaveCANDevicesConfigRequest(QList<CCANDeviceConfig*> *DevicesConfigList);
private:
QList<CCANDevice*> mCANDevicesList;
int PopulateCANDevicesList(QList<CCANDeviceConfig*> *DevicesConfigsList);
signals:
+45 -22
View File
@@ -1,21 +1,29 @@
#include "SystemConfig.h"
#include "GeneralMessagesLogDispatcher.h"
CSystemConfig::CSystemConfig()
CSystemConfig::CSystemConfig() :
mSaveLocalLogFile(false)
{
}
int CSystemConfig::LoadConfig(QList<CCANDevice *> *DevicesList)
CSystemConfig::~CSystemConfig()
{
while(mCANDeviceConfigList.size() != 0)
{
delete mCANDeviceConfigList.takeAt(0);
}
}
int CSystemConfig::LoadConfig()
{
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Chargement de la configuration système..."));
if(DevicesList == 0)
{
qDebug("CSystemConfig: Trying to load a config into an invalid devices list");
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Échec de sauvegarde de la config système. Pointeur vers liste de devices invalide!!!"),true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS);
return RET_GENERAL_ERROR;
}
// if(DevicesList == 0)
// {
// qDebug("CSystemConfig: Trying to load a config into an invalid devices list");
// CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Échec de sauvegarde de la config système. Pointeur vers liste de devices invalide!!!"),true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS);
// return RET_GENERAL_ERROR;
// }
QFile* ConfigFile = new QFile("./Config/Station.cfg");
if(ConfigFile)
@@ -52,9 +60,10 @@ int CSystemConfig::LoadConfig(QList<CCANDevice *> *DevicesList)
*InputStream >> NbDevices;
for(int i = 0; i < NbDevices; i++)
{
CCANDeviceConfig NewDeviceConfig;
*InputStream >> NewDeviceConfig;
DevicesList->append(new CCANDevice(NewDeviceConfig));
CCANDeviceConfig *NewDeviceConfig = new CCANDeviceConfig;
*InputStream >> *NewDeviceConfig;
//DevicesList->append(new CCANDevice(NewDeviceConfig));
mCANDeviceConfigList.append(NewDeviceConfig);
}
@@ -66,13 +75,8 @@ int CSystemConfig::LoadConfig(QList<CCANDevice *> *DevicesList)
return RET_OK;
}
int CSystemConfig::SaveConfig(QList<CCANDeviceConfig *> *DevicesConfigList)
int CSystemConfig::SaveConfig()
{
if(DevicesConfigList == 0)
{
qDebug("CSystemConfig: Trying to save an invalid config list pointer");
return RET_GENERAL_ERROR;
}
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Sauvegarde de la configuration système..."));
QFile *ConfigFile = new QFile("./Config/Station.cfg");
@@ -101,10 +105,10 @@ int CSystemConfig::SaveConfig(QList<CCANDeviceConfig *> *DevicesConfigList)
*OutputStream << FileVersion;
//Save the CAN devices config info
*OutputStream << DevicesConfigList->size(); //Number of devices
for(int i = 0; i < DevicesConfigList->size(); i++)
*OutputStream << mCANDeviceConfigList.size(); //Number of devices
for(int i = 0; i < mCANDeviceConfigList.size(); i++)
{
*OutputStream << *DevicesConfigList->at(i); //Add each device info to config file
*OutputStream << *mCANDeviceConfigList.at(i); //Add each device info to config file
}
ConfigFile->flush();
@@ -119,8 +123,27 @@ int CSystemConfig::SaveConfig(QList<CCANDeviceConfig *> *DevicesConfigList)
}
QList<CCANDeviceConfig*> * CSystemConfig::GetCANDevicesConfigList()
{
return &mCANDeviceConfigList;
}
int CSystemConfig::SetCANDevicesConfigList(QList<CCANDeviceConfig *> *DevicesConfigList)
{
if(DevicesConfigList == 0)
return RET_GENERAL_ERROR;
////////////Class CCANDeviceConfig implementation ////////////
while(mCANDeviceConfigList.size() != 0)
{
delete mCANDeviceConfigList.takeAt(0);
}
for(int i = 0; i < DevicesConfigList->size(); i++)
{
CCANDeviceConfig *NewDeviceConfig = new CCANDeviceConfig(*DevicesConfigList->at(i));
mCANDeviceConfigList.append(NewDeviceConfig);
}
return RET_OK;
}
+18 -3
View File
@@ -15,12 +15,27 @@ class CSystemConfig
{
public:
CSystemConfig();
~CSystemConfig();
int LoadConfig(/*QList<CCANDevice*> *DevicesList*/);
int SaveConfig(/*QList<CCANDeviceConfig*> *DevicesConfigList*/);
int SetCANDevicesConfigList(QList<CCANDeviceConfig*> *DevicesConfigList);
QList<CCANDeviceConfig*> *GetCANDevicesConfigList();
//Can devices configs
QList<CCANDeviceConfig*> mCANDeviceConfigList;
//Cloud interface config
//Misc general system settings
bool mSaveLocalLogFile;
int LoadConfig(QList<CCANDevice*> *DevicesList);
int SaveConfig(QList<CCANDeviceConfig*> *DevicesConfigList);
};
#endif // SYSTEMCONFIG_H