Modification de la configuration système et ajout des paramètres Cloud.
This commit is contained in:
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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>
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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:
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user