CAN Config fonctionnel.

This commit is contained in:
2023-01-27 13:33:03 -05:00
parent d183780f1b
commit 251825f7d5
26 changed files with 2641 additions and 188 deletions
+44 -53
View File
@@ -1,32 +1,39 @@
#include "CANDevice.h"
#include "OtarcikCan.h"
CCANDevice::CCANDevice(QObject *parent)
{
Q_UNUSED(parent)
mMessageList.clear();
mMessagesListLoaded = false;
mCANAnalyzer.mDevicePtr = this;
mProgramPtr = 0;
mCANDeviceDatabaseFilename.clear();
mCANDeviceID = -1;
mCANDeviceBaudrate = -1;
mDeviceDescription.clear();
mDeviceName.clear();
mDevicePollPeriod = 0;
// mCANDeviceDatabaseFilename.clear();
// mCANDeviceID = -1;
// mCANDeviceBaudrate = -1;
// mDeviceDescription.clear();
// mDeviceName.clear();
// mDevicePollPeriod = 0;
}
CCANDevice::CCANDevice(CCANDevice &Other)
CCANDevice::CCANDevice(CCANDeviceConfig &SysConfig)
{
mMessageList.clear();
mMessagesListLoaded = false;
mCANAnalyzer.mDevicePtr = this;
mProgramPtr = 0;
mCANDeviceID = Other.mCANDeviceID;
mCANDeviceBaudrate = Other.mCANDeviceBaudrate;
mCANDeviceDatabaseFilename = Other.mCANDeviceDatabaseFilename;
mDeviceName = Other.mDeviceName;
mDeviceDescription = Other.mDeviceDescription;
mDeviceConfigInfo = SysConfig;
// mCANDeviceID = SysConfig.mCANDeviceID;
// mCANDeviceBaudrate = SysConfig.mCANDeviceBaudrate;
// mCANDeviceDatabaseFilename = SysConfig.mCANDeviceDatabaseFilename;
// mDeviceName = SysConfig.mDeviceName;
// mDeviceDescription = SysConfig.mDeviceDescription;
// mDevicePollPeriod = SysConfig.mDevicePollPeriod;
}
CCANDevice::~CCANDevice()
@@ -39,15 +46,15 @@ CCANDevice::~CCANDevice()
int CCANDevice::Init()
{
if(mCANDeviceID < 0 || mCANDeviceBaudrate < 0 || mDevicePollPeriod == 0 || mCANDeviceDatabaseFilename.isEmpty() || mDeviceName.isEmpty())
if(mDeviceConfigInfo.mCANDeviceID < 0 || mDeviceConfigInfo.mCANDeviceBaudrate < 0 || mDeviceConfigInfo.mDevicePollPeriod == 0 || mDeviceConfigInfo.mCANDeviceDatabaseFilename.isEmpty() || mDeviceConfigInfo.mDeviceName.isEmpty())
{
qDebug("CCANDevice: trying to initialize a CCANDevice with invalid parameters");
return RET_GENERAL_ERROR;
}
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Initialisation du dispositif [%1]").arg(mDeviceName));
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Initialisation du dispositif [%1]").arg(mDeviceConfigInfo.mDeviceName));
if(mCANDatabase.Init(mCANDeviceDatabaseFilename) == RET_OK)
if(mCANDatabase.Init(mDeviceConfigInfo.mCANDeviceDatabaseFilename) == RET_OK)
{
if(mCANDatabase.BuildMessageList(&mMessageList) == RET_OK)
{
@@ -59,24 +66,24 @@ int CCANDevice::Init()
mMessagesListLoaded = false;
}
}
if(mCANAnalyzer.Init(mCANDeviceID,mCANDeviceBaudrate,&mMessageList,mDevicePollPeriod) != RET_OK)
if(mCANAnalyzer.Init(mDeviceConfigInfo.mCANDeviceID,mDeviceConfigInfo.mCANDeviceBaudrate,&mMessageList,mDeviceConfigInfo.mDevicePollPeriod) != RET_OK)
{
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Le dispositif [%1] n'a pas pu s'initialiser").arg(mDeviceName),true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS);
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Le dispositif [%1] n'a pas pu s'initialiser").arg(mDeviceConfigInfo.mDeviceName),true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS);
return RET_GENERAL_ERROR;
}
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Dispositif [%1] initialisé avec succès!").arg(mDeviceName),true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_SUCCESS_STATUS);
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Dispositif [%1] initialisé avec succès!").arg(mDeviceConfigInfo.mDeviceName),true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_SUCCESS_STATUS);
return RET_OK;
}
int CCANDevice::Init(QString DatabaseFileName, TPCANHandle CANDeviceID, TPCANBaudrate CANDeviceBaudRate, QString DevDescription, QString DeviceName, unsigned int DevicePollPeriod)
{
mCANDeviceID = CANDeviceID;
mCANDeviceBaudrate = CANDeviceBaudRate;
mCANDeviceDatabaseFilename = DatabaseFileName;
mDeviceDescription = DevDescription;
mDeviceName = DeviceName;
mDevicePollPeriod = DevicePollPeriod;
mDeviceConfigInfo.mCANDeviceID = CANDeviceID;
mDeviceConfigInfo.mCANDeviceBaudrate = CANDeviceBaudRate;
mDeviceConfigInfo.mCANDeviceDatabaseFilename = DatabaseFileName;
mDeviceConfigInfo.mDeviceDescription = DevDescription;
mDeviceConfigInfo.mDeviceName = DeviceName;
mDeviceConfigInfo.mDevicePollPeriod = DevicePollPeriod;
Init();
@@ -85,7 +92,7 @@ int CCANDevice::Init(QString DatabaseFileName, TPCANHandle CANDeviceID, TPCANBau
int CCANDevice::NewMessageParsed()
{
mProgramPtr->UpdateCANViewerDataRequest(&mMessageList);
return mProgramPtr->UpdateCANViewerDataRequest(&mMessageList);
}
@@ -94,41 +101,25 @@ int CCANDevice::NewMessageParsed()
QDataStream &operator<<(QDataStream &out, const CCANDevice &source)
{
out << source.mCANDeviceID
<< source.mCANDeviceBaudrate
<< source.mCANDeviceDatabaseFilename
<< source.mDeviceDescription
<< source.mDeviceName
<< source.mDevicePollPeriod;
out << source.mDeviceConfigInfo;
return out;
}
QDataStream &operator>>(QDataStream &in, CCANDevice &dest)
{
in >> dest.mCANDeviceID
>> dest.mCANDeviceBaudrate
>> dest.mCANDeviceDatabaseFilename
>> dest.mDeviceDescription
>> dest.mDeviceName
>> dest.mDevicePollPeriod;
in >> dest.mDeviceConfigInfo;
return in;
}
//CAREFUL!!! OPERATOR = DOES NOT COPY THE MESSAGES, ONLY THE DEVICE DESCRIPTION !!//
CCANDevice& CCANDevice::operator=(const CCANDevice *source)
{
if(source == this)
{
return *this;
}
////CAREFUL!!! OPERATOR = DOES NOT COPY THE MESSAGES, ONLY THE DEVICE DESCRIPTION !!//
//CCANDevice& CCANDevice::operator=(const CCANDevice *source)
//{
// if(source == this)
// {
// return *this;
// }
this->mCANDeviceID = source->mCANDeviceID;
this->mCANDeviceBaudrate = source->mCANDeviceBaudrate;
this->mCANDeviceDatabaseFilename = source->mCANDeviceDatabaseFilename;
this->mDeviceDescription = source->mDeviceDescription;
this->mDeviceName = source->mDeviceName;
this->mDevicePollPeriod = source->mDevicePollPeriod;
// this->mDeviceConfigInfo = source->mDeviceConfigInfo;
return *this;
}
// return *this;
//}
+5 -9
View File
@@ -9,6 +9,7 @@
#include "CANDatabase.h"
#include <QList>
#include "PCANBasic.h"
#include "CANDeviceConfig.h"
class COtarcikCan;
@@ -17,28 +18,23 @@ class CCANDevice : public QObject
Q_OBJECT
public:
explicit CCANDevice(QObject *parent = 0);
CCANDevice(CCANDevice &Other);
CCANDevice(CCANDeviceConfig &SysConfig);
~CCANDevice();
int Init(QString DatabaseFileName, TPCANHandle CANDeviceID, TPCANBaudrate CANDeviceBaudRate, QString DevDescription, QString DeviceName, unsigned int DevicePollPeriod);
int Init();
public:
TPCANHandle mCANDeviceID;
TPCANBaudrate mCANDeviceBaudrate;
QString mCANDeviceDatabaseFilename;
QString mDeviceDescription;
QString mDeviceName;
COtarcikCan *mProgramPtr;
unsigned int mDevicePollPeriod;
CCANDeviceConfig mDeviceConfigInfo;
COtarcikCan *mProgramPtr;
bool mMessagesListLoaded;
CCANAnalyzer mCANAnalyzer; //The module that handles the USB puck and decodes the data
CCANDatabase mCANDatabase; //The device's database loaded from dbc file
QList<CCANMessage*> mMessageList;
CCANDevice &operator=(const CCANDevice *source);
// CCANDevice &operator=(const CCANDevice *source);
int NewMessageParsed();
+54
View File
@@ -0,0 +1,54 @@
#include "CANDeviceConfig.h"
CCANDeviceConfig::CCANDeviceConfig()
{
//Assign default values
mCANDeviceID = PCAN_USBBUS1;
mCANDeviceBaudrate = PCAN_BAUD_500K;
mCANDeviceDatabaseFilename = "./";
mDeviceDescription = "Description du module";
mDeviceName = "Nom du module";
mDevicePollPeriod = 200;
}
QDataStream &operator>>(QDataStream &in, CCANDeviceConfig &dest)
{
in >> dest.mCANDeviceID
>> dest.mCANDeviceBaudrate
>> dest.mCANDeviceDatabaseFilename
>> dest.mDeviceDescription
>> dest.mDeviceName
>> dest.mDevicePollPeriod;
return in;
}
QDataStream &operator<<(QDataStream &out, const CCANDeviceConfig &source)
{
out << source.mCANDeviceID
<< source.mCANDeviceBaudrate
<< source.mCANDeviceDatabaseFilename
<< source.mDeviceDescription
<< source.mDeviceName
<< source.mDevicePollPeriod;
return out;
}
CCANDeviceConfig& CCANDeviceConfig::operator=(const CCANDeviceConfig *source)
{
if(source == this)
{
return *this;
}
this->mCANDeviceID = source->mCANDeviceID;
this->mCANDeviceBaudrate = source->mCANDeviceBaudrate;
this->mCANDeviceDatabaseFilename = source->mCANDeviceDatabaseFilename;
this->mDeviceDescription = source->mDeviceDescription;
this->mDeviceName = source->mDeviceName;
this->mDevicePollPeriod = source->mDevicePollPeriod;
return *this;
}
+27
View File
@@ -0,0 +1,27 @@
#ifndef CANDEVICECONFIG_H
#define CANDEVICECONFIG_H
#include "PCANBasic.h"
#include <QDataStream>
#include <QString>
class CCANDeviceConfig
{
public:
CCANDeviceConfig();
TPCANHandle mCANDeviceID;
TPCANBaudrate mCANDeviceBaudrate;
QString mCANDeviceDatabaseFilename;
QString mDeviceDescription;
QString mDeviceName;
unsigned int mDevicePollPeriod;
CCANDeviceConfig &operator=(const CCANDeviceConfig *source);
};
QDataStream &operator<<(QDataStream &out, const CCANDeviceConfig &source);
QDataStream &operator>>(QDataStream &in, CCANDeviceConfig &dest);
#endif // CANDEVICECONFIG_H
@@ -1,6 +1,7 @@
#include "GeneralStatusPage.h"
#include "ui_GeneralStatusPage.h"
#include "QStringList"
#include <QScrollBar>
CGeneralStatusPage::CGeneralStatusPage(QWidget *parent) :
QWidget(parent),
@@ -8,6 +9,7 @@ CGeneralStatusPage::CGeneralStatusPage(QWidget *parent) :
{
ui->setupUi(this);
connect(ui->mClearGenMsgTxtBtn,&QPushButton::clicked,this,&CGeneralStatusPage::ClearGenMsgAreaBtnPressed);
}
CGeneralStatusPage::~CGeneralStatusPage()
@@ -43,6 +45,10 @@ int CGeneralStatusPage::AddGeneralMsgBoxLineEntry(QString LineTxt)
AddColoredLineToGenMsgBox(LineTxt);
}
ui->mGenMsgTextEdit->verticalScrollBar()->setValue(ui->mGenMsgTextEdit->verticalScrollBar()->maximum());
return RET_OK;
}
@@ -82,3 +88,9 @@ int CGeneralStatusPage::AddColoredLineToGenMsgBox(QString Line)
return RET_OK;
}
void CGeneralStatusPage::ClearGenMsgAreaBtnPressed()
{
mGenMsgListBoxTextLines.clear();
ui->mGenMsgTextEdit->clear();
}
@@ -38,6 +38,9 @@ private:
int AddColoredLineToGenMsgBox(QString Line);
public slots:
void ClearGenMsgAreaBtnPressed();
};
#endif // GENERALSTATUSPAGE_H
+17 -4
View File
@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>1456</width>
<height>492</height>
<height>527</height>
</rect>
</property>
<property name="windowTitle">
@@ -16,9 +16,9 @@
<widget class="QTextEdit" name="mGenMsgTextEdit">
<property name="geometry">
<rect>
<x>460</x>
<y>30</y>
<width>651</width>
<x>30</x>
<y>20</y>
<width>1141</width>
<height>451</height>
</rect>
</property>
@@ -34,6 +34,19 @@
<bool>true</bool>
</property>
</widget>
<widget class="QPushButton" name="mClearGenMsgTxtBtn">
<property name="geometry">
<rect>
<x>30</x>
<y>480</y>
<width>80</width>
<height>22</height>
</rect>
</property>
<property name="text">
<string>Nettoyer</string>
</property>
</widget>
</widget>
<resources/>
<connections/>
+114 -17
View File
@@ -2,9 +2,10 @@
#include "ui_ProgramSettingsPage.h"
#include "CANDevice.h"
#include "OtarcikCan.h"
#include <QFileDialog>
#include <QFileInfo>
#include "SystemConfig.h"
#include "OtarcikCan.h"
CProgramSettingsPage::CProgramSettingsPage(QWidget *parent) :
@@ -15,6 +16,7 @@ CProgramSettingsPage::CProgramSettingsPage(QWidget *parent) :
mProgramPtr = 0;
mDevicesList = 0;
mCurModifiedDevConfig = 0;
mDeviceChangeModeEnabled = false;
ui->mDBSignalDetailsTable->setColumnCount(10);
@@ -72,6 +74,8 @@ CProgramSettingsPage::CProgramSettingsPage(QWidget *parent) :
connect(ui->mModifyDevParamsBtn,&QPushButton::clicked,this,&CProgramSettingsPage::ModifyDeviceBtnPressed);
connect(ui->mCancelModifyParamsBtn,&QPushButton::clicked,this,&CProgramSettingsPage::CancelModifyDevBtnPressed);
connect(ui->mDatabaseFileSelectBtn,&QPushButton::clicked,this,&CProgramSettingsPage::SelectDBFileBtnPressed);
connect(ui->mAddDeviceBtn,&QPushButton::clicked,this,&CProgramSettingsPage::AddDeviceBtnPressed);
connect(ui->mDeleteDeviceBtn,&QPushButton::clicked,this,&CProgramSettingsPage::DeleteDeviceBtnPressed);
// connect(ui->mDBSignalDetailsTable,&QTableWidget::itemSelectionChanged,this,&CProgramSettingsPage::SignalSelectionChanged);
@@ -79,6 +83,11 @@ CProgramSettingsPage::CProgramSettingsPage(QWidget *parent) :
CProgramSettingsPage::~CProgramSettingsPage()
{
while(!mDeviceConfigList.isEmpty())
{
delete mDeviceConfigList.takeFirst();
}
delete ui;
}
@@ -99,7 +108,7 @@ int CProgramSettingsPage::SetDevicesList(QList<CCANDevice *> *DevicesList)
ui->mDevicesList->clear();
for(int i = 0; i < mDevicesList->size(); i++)
{
QString name = mDevicesList->at(i)->mDeviceName;
QString name = mDevicesList->at(i)->mDeviceConfigInfo.mDeviceName;
if(name.isEmpty())
{
name = QString("Device %1").arg(i+1);
@@ -133,20 +142,21 @@ int CProgramSettingsPage::UpdatePage()
if(Device != 0)
{
CCANDeviceConfig *DevConfigInfo = &Device->mDeviceConfigInfo;
//Update device name in the list (it might have just changed)
ui->mDevicesList->item(ui->mDevicesList->currentRow())->setText(Device->mDeviceName);
ui->mDevicesList->item(ui->mDevicesList->currentRow())->setText(DevConfigInfo->mDeviceName);
//update device information
ui->mDeviceNameEditBx->setPlainText(Device->mDeviceName);
ui->mCANBaudrateComboBx->setCurrentIndex(ui->mCANBaudrateComboBx->findData(Device->mCANDeviceBaudrate));
ui->mCANIDComboBx->setCurrentIndex(ui->mCANIDComboBx->findData(Device->mCANDeviceID));
ui->mDeviceDescriptionTxtEdit->setPlainText(Device->mDeviceDescription);
ui->mDeviceNameEditBx->setPlainText(DevConfigInfo->mDeviceName);
ui->mCANBaudrateComboBx->setCurrentIndex(ui->mCANBaudrateComboBx->findData(DevConfigInfo->mCANDeviceBaudrate));
ui->mCANIDComboBx->setCurrentIndex(ui->mCANIDComboBx->findData(DevConfigInfo->mCANDeviceID));
ui->mDeviceDescriptionTxtEdit->setPlainText(DevConfigInfo->mDeviceDescription);
QFileInfo FileInfo(Device->mCANDeviceDatabaseFilename);
QFileInfo FileInfo(DevConfigInfo->mCANDeviceDatabaseFilename);
ui->mDatabaseFileNameLbl->setText(FileInfo.fileName());
ui->mDatabaseFileNameLbl->setToolTip(Device->mCANDeviceDatabaseFilename);
ui->mDatabaseFileNameLbl->setToolTip(DevConfigInfo->mCANDeviceDatabaseFilename);
// ui->mDatabaseFileNameLbl->setText(QString("%1").arg(Device->mCANDeviceDatabaseFilename));
ui->mDevicePollPeriodSpinBx->setValue(Device->mDevicePollPeriod);
ui->mDevicePollPeriodSpinBx->setValue(DevConfigInfo->mDevicePollPeriod);
//update device database information
ui->mDBMessagesListWidget->clear();
ui->mDBSignalDetailsTable->clearContents();
@@ -173,7 +183,7 @@ int CProgramSettingsPage::UpdatePage()
return RET_OK;
}
int CProgramSettingsPage::UpdateMessageInformation()
@@ -302,6 +312,8 @@ int CProgramSettingsPage::UpdateMessageInformation()
}
ui->mDBSignalDetailsTable->resizeColumnsToContents();
}
return RET_OK;
}
void CProgramSettingsPage::DeviceSelectionChanged()
@@ -318,17 +330,34 @@ void CProgramSettingsPage::MessageSelectionChanged()
{
UpdateMessageInformation();
}
void CProgramSettingsPage::ModifyDeviceBtnPressed()
{
if(mDeviceChangeModeEnabled == false)
{
//Populate the devices config list with present devices
PopulateDevicesConfigList();
//Find the selected device index
int index = ui->mDevicesList->currentRow();
if(index >=0 && index < mDeviceConfigList.size())
{
mCurModifiedDevConfig = mDeviceConfigList.at(index);
}
}
ModifyDeviceConfig();
}
int CProgramSettingsPage::ModifyDeviceConfig()
{
if(mDeviceChangeModeEnabled)
{
//Save Data
int index = ui->mDevicesList->currentRow();
if(index >= 0 && index < mDevicesList->size())
if(mCurModifiedDevConfig != 0)
{
CCANDevice *ModifiedDevice = mDevicesList->at(index);
CCANDeviceConfig *ModifiedDevice = mCurModifiedDevConfig; //mDeviceConfigList.at(index);
ModifiedDevice->mCANDeviceBaudrate = ui->mCANBaudrateComboBx->currentData().toInt();
ModifiedDevice->mCANDeviceID = ui->mCANIDComboBx->currentData().toInt();
@@ -337,7 +366,7 @@ void CProgramSettingsPage::ModifyDeviceBtnPressed()
ModifiedDevice->mDeviceName = ui->mDeviceNameEditBx->toPlainText();
ModifiedDevice->mDevicePollPeriod = ui->mDevicePollPeriodSpinBx->value();
mProgramPtr->SaveSystemConfigRequest();
mProgramPtr->SaveSystemConfigRequest(&mDeviceConfigList);
}
@@ -352,12 +381,14 @@ void CProgramSettingsPage::ModifyDeviceBtnPressed()
ui->mCancelModifyParamsBtn->hide();
ui->mDeviceNameEditBx->setEnabled(false);
mDeviceChangeModeEnabled = false;
ui->mAddDeviceBtn->setEnabled(true);
}
else
{
//Modify data
ui->mDeviceDescriptionTxtEdit->setEnabled(true);
ui->mDatabaseFileSelectBtn->show();
@@ -368,9 +399,12 @@ void CProgramSettingsPage::ModifyDeviceBtnPressed()
ui->mModifyDevParamsBtn->setText("Sauvegarder");
ui->mCancelModifyParamsBtn->show();
ui->mDeviceNameEditBx->setEnabled(true);
ui->mAddDeviceBtn->setEnabled(true);
mDeviceChangeModeEnabled = true;
}
return RET_OK;
}
void CProgramSettingsPage::CancelModifyDevBtnPressed()
@@ -384,6 +418,7 @@ void CProgramSettingsPage::CancelModifyDevBtnPressed()
ui->mModifyDevParamsBtn->setText("Modifier");
ui->mCancelModifyParamsBtn->hide();
ui->mDeviceNameEditBx->setEnabled(false);
ui->mAddDeviceBtn->setEnabled(true);
mDeviceChangeModeEnabled = false;
UpdatePage();
@@ -404,3 +439,65 @@ void CProgramSettingsPage::SelectDBFileBtnPressed()
}
}
void CProgramSettingsPage::AddDeviceBtnPressed()
{
//Populate the devices config list with present devices
PopulateDevicesConfigList();
//add an empty config and enable modification
CCANDeviceConfig *NewDevConfig = new CCANDeviceConfig;
mDeviceConfigList.append(NewDevConfig);
//update device information
ui->mDeviceNameEditBx->setPlainText(NewDevConfig->mDeviceName);
ui->mCANBaudrateComboBx->setCurrentIndex(ui->mCANBaudrateComboBx->findData(NewDevConfig->mCANDeviceBaudrate));
ui->mCANIDComboBx->setCurrentIndex(ui->mCANIDComboBx->findData(NewDevConfig->mCANDeviceID));
ui->mDeviceDescriptionTxtEdit->setPlainText(NewDevConfig->mDeviceDescription);
ui->mDatabaseFileNameLbl->setText(NewDevConfig->mCANDeviceDatabaseFilename);
ui->mDatabaseFileNameLbl->setToolTip(NewDevConfig->mCANDeviceDatabaseFilename);
ui->mDevicePollPeriodSpinBx->setValue(NewDevConfig->mDevicePollPeriod);
//update device database information
ui->mDBMessagesListWidget->clear();
ui->mDBSignalDetailsTable->clearContents();
ui->mDBSignalDetailsTable->setRowCount(0);
mCurModifiedDevConfig = NewDevConfig;
ModifyDeviceConfig();
ui->mAddDeviceBtn->setEnabled(false);
}
void CProgramSettingsPage::DeleteDeviceBtnPressed()
{
//Populate the devices config list with present devices
PopulateDevicesConfigList();
//Find the selected device index
int index = ui->mDevicesList->currentRow();
if(index >=0 && index < mDeviceConfigList.size())
{
delete mDeviceConfigList.takeAt(index);
}
mProgramPtr->SaveSystemConfigRequest(&mDeviceConfigList);
}
int CProgramSettingsPage::PopulateDevicesConfigList()
{
while(!mDeviceConfigList.isEmpty())
{
delete mDeviceConfigList.takeFirst();
}
//Gather the actual data in the change buffer.
for(int device = 0; device < mDevicesList->size(); device++)
{
const CCANDevice *CurDevice = mDevicesList->at(device);
CCANDeviceConfig *DevConfig = new CCANDeviceConfig;
*DevConfig = CurDevice->mDeviceConfigInfo;
mDeviceConfigList.append(DevConfig);
}
return RET_OK;
}
+10 -1
View File
@@ -7,6 +7,7 @@ class CCANDevice;
class CCANMessage;
class CCANSignal;
class COtarcikCan;
class CCANDeviceConfig;
namespace Ui {
@@ -25,14 +26,19 @@ public:
int ClearDatabaseData();
int UpdatePage();
int UpdateMessageInformation();
int ModifyDeviceConfig();
COtarcikCan *mProgramPtr;
private:
Ui::CProgramSettingsPage *ui;
QList<CCANDevice *> *mDevicesList;
const QList<CCANDevice *> *mDevicesList;
QList<CCANDeviceConfig*> mDeviceConfigList;
bool mDeviceChangeModeEnabled;
CCANDeviceConfig* mCurModifiedDevConfig;
int PopulateDevicesConfigList();
public slots:
void DeviceSelectionChanged();
@@ -41,6 +47,9 @@ public slots:
void ModifyDeviceBtnPressed();
void CancelModifyDevBtnPressed();
void SelectDBFileBtnPressed();
void AddDeviceBtnPressed();
void DeleteDeviceBtnPressed();
};
#endif // PROGRAMSETTINGSPAGE_H
+27 -1
View File
@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>1475</width>
<height>604</height>
<height>693</height>
</rect>
</property>
<property name="windowTitle">
@@ -377,6 +377,32 @@
</property>
</widget>
</widget>
<widget class="QPushButton" name="mAddDeviceBtn">
<property name="geometry">
<rect>
<x>200</x>
<y>420</y>
<width>41</width>
<height>22</height>
</rect>
</property>
<property name="text">
<string>Ajouter</string>
</property>
</widget>
<widget class="QPushButton" name="mDeleteDeviceBtn">
<property name="geometry">
<rect>
<x>50</x>
<y>420</y>
<width>61</width>
<height>22</height>
</rect>
</property>
<property name="text">
<string>Supprimer</string>
</property>
</widget>
</widget>
<resources/>
<connections/>
+12 -5
View File
@@ -19,7 +19,7 @@
COtarcikCan::COtarcikCan(QObject *parent) : QObject(parent)
{
mMainWindow.mProgramSettingsPage->mProgramPtr = this;
}
COtarcikCan::~COtarcikCan()
@@ -36,8 +36,10 @@ COtarcikCan::~COtarcikCan()
int COtarcikCan::Start()
{
mMainWindow.show();
mMainWindow.mProgramSettingsPage->mProgramPtr = this;
mMainWindow.show();
CGeneralMessagesLogDispatcher::instance()->BindGuiPageHandle(mMainWindow.mGeneralStatusPage);
@@ -64,7 +66,7 @@ int COtarcikCan::Start()
// NewCANDevice->Init("IVT-S_all-variations_12082020.dbc",PCAN_USBBUS1,PCAN_BAUD_500K,"Puck CAN USB branchée sur le module Parker qui contrôle la patente", "Module Parker",1000);
// SaveSystemConfigRequest();
// mMainWindow.mProgramSettingsPage->SetDevicesList(&mCANDevicesList);
mMainWindow.mProgramSettingsPage->SetDevicesList(&mCANDevicesList);
// NewCANDevice = new CCANDevice();
// mCANDevicesList.append(NewCANDevice);
@@ -93,10 +95,10 @@ 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()
int COtarcikCan::SaveSystemConfigRequest(QList<CCANDeviceConfig *> *DevicesConfigList)
{
if(mSystemConfig.SaveConfig(&mCANDevicesList) == RET_OK)
if(mSystemConfig.SaveConfig(DevicesConfigList) == RET_OK)
{
// mMainWindow.mProgramSettingsPage->UpdatePage();
@@ -118,5 +120,10 @@ int COtarcikCan::SaveSystemConfigRequest()
mMainWindow.mProgramSettingsPage->SetDevicesList(&mCANDevicesList);
}
}
else
{
return RET_GENERAL_ERROR;
}
return RET_OK;
}
+1 -1
View File
@@ -25,7 +25,7 @@ public:
int UpdateCANViewerDataRequest(QList<CCANMessage *> *MsgList);
int SaveSystemConfigRequest();
int SaveSystemConfigRequest(QList<CCANDeviceConfig*> *DevicesConfigList);
private:
QList<CCANDevice*> mCANDevicesList;
+19 -11
View File
@@ -22,8 +22,6 @@ int CSystemConfig::LoadConfig(QList<CCANDevice *> *DevicesList)
{
if(ConfigFile->open(QIODevice::ReadOnly | QIODevice::Unbuffered) == false)
{
// LoadDefaultSettings(Settings);
// SaveSettings(Settings);
qDebug("CSystemConfig: Failed to open config file in config loading");
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Échec de sauvegarde de la config système. Impossible d'ouvrir le fichier /Config/Station.cfg"),true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS);
return RET_GENERAL_ERROR;
@@ -31,7 +29,6 @@ int CSystemConfig::LoadConfig(QList<CCANDevice *> *DevicesList)
}
else
{
// LoadDefaultSettings(Settings);
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Échec de sauvegarde de la config système. Pointeur vers QFile invalide !!!"),true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS);
qDebug("CSystemConfig: Invalid QFile pointer in config loading...");
return RET_GENERAL_ERROR;
@@ -46,7 +43,6 @@ int CSystemConfig::LoadConfig(QList<CCANDevice *> *DevicesList)
*InputStream >> MagicNbr;
if(MagicNbr != OTARCIK_CONFIG_FILE_MAGIC_NBR)
{
// LoadDefaultSettings(Settings);
return RET_GENERAL_ERROR;
}
@@ -56,9 +52,9 @@ int CSystemConfig::LoadConfig(QList<CCANDevice *> *DevicesList)
*InputStream >> NbDevices;
for(int i = 0; i < NbDevices; i++)
{
CCANDevice *NewDevice = new CCANDevice;
*InputStream >> *NewDevice;
DevicesList->append(NewDevice);
CCANDeviceConfig NewDeviceConfig;
*InputStream >> NewDeviceConfig;
DevicesList->append(new CCANDevice(NewDeviceConfig));
}
@@ -70,8 +66,13 @@ int CSystemConfig::LoadConfig(QList<CCANDevice *> *DevicesList)
return RET_OK;
}
int CSystemConfig::SaveConfig(QList<CCANDevice *> *DevicesList)
int CSystemConfig::SaveConfig(QList<CCANDeviceConfig *> *DevicesConfigList)
{
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");
@@ -100,10 +101,10 @@ int CSystemConfig::SaveConfig(QList<CCANDevice *> *DevicesList)
*OutputStream << FileVersion;
//Save the CAN devices config info
*OutputStream << DevicesList->size(); //Number of devices
for(int i = 0; i < DevicesList->size(); i++)
*OutputStream << DevicesConfigList->size(); //Number of devices
for(int i = 0; i < DevicesConfigList->size(); i++)
{
*OutputStream << *DevicesList->at(i); //Add each device info to config file
*OutputStream << *DevicesConfigList->at(i); //Add each device info to config file
}
ConfigFile->flush();
@@ -116,3 +117,10 @@ int CSystemConfig::SaveConfig(QList<CCANDevice *> *DevicesList)
return RET_OK;
}
////////////Class CCANDeviceConfig implementation ////////////
+5 -1
View File
@@ -5,9 +5,11 @@
#include <QList>
#include <QFile>
#include <QDataStream>
#include "CANDeviceConfig.h"
#define OTARCIK_CURRENT_CONFIG_FILE_VERSION 0x01
#define OTARCIK_CONFIG_FILE_MAGIC_NBR 0xDEADBEEF
//class CCANDeviceConfig;
class CSystemConfig
{
@@ -15,8 +17,10 @@ public:
CSystemConfig();
int LoadConfig(QList<CCANDevice*> *DevicesList);
int SaveConfig(QList<CCANDevice*> *DevicesList);
int SaveConfig(QList<CCANDeviceConfig*> *DevicesConfigList);
};
#endif // SYSTEMCONFIG_H