CAN Config fonctionnel.
This commit is contained in:
@@ -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;
|
||||
//}
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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/>
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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/>
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ public:
|
||||
int UpdateCANViewerDataRequest(QList<CCANMessage *> *MsgList);
|
||||
|
||||
|
||||
int SaveSystemConfigRequest();
|
||||
int SaveSystemConfigRequest(QList<CCANDeviceConfig*> *DevicesConfigList);
|
||||
|
||||
private:
|
||||
QList<CCANDevice*> mCANDevicesList;
|
||||
|
||||
@@ -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,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
|
||||
|
||||
Reference in New Issue
Block a user