130 lines
3.8 KiB
C++
130 lines
3.8 KiB
C++
/*******************************************************************************
|
|
* *
|
|
* Gros Gin électronique *
|
|
* 2023 *
|
|
* *
|
|
* Project: Otarcik CAN *
|
|
* *
|
|
* *
|
|
* *
|
|
*******************************************************************************/
|
|
/*
|
|
Description:
|
|
This is our main program
|
|
|
|
*/
|
|
|
|
#include "OtarcikCan.h"
|
|
#include "PCANBasic.h"
|
|
|
|
COtarcikCan::COtarcikCan(QObject *parent) : QObject(parent)
|
|
{
|
|
|
|
}
|
|
|
|
COtarcikCan::~COtarcikCan()
|
|
{
|
|
|
|
while (!mCANDevicesList.isEmpty())
|
|
{
|
|
delete mCANDevicesList.takeFirst();
|
|
}
|
|
mCANDevicesList.clear();
|
|
|
|
|
|
}
|
|
|
|
int COtarcikCan::Start()
|
|
{
|
|
|
|
mMainWindow.mCANbusSettingsPage->mProgramPtr = this;
|
|
|
|
mMainWindow.show();
|
|
|
|
|
|
CGeneralMessagesLogDispatcher::instance()->BindGuiPageHandle(mMainWindow.mGeneralStatusPage);
|
|
CGeneralMessagesLogDispatcher::instance()->Init();
|
|
|
|
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Démarrage du logiciel OtarcikCAN"));
|
|
|
|
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);
|
|
}
|
|
// CCANDevice *NewCANDevice = new CCANDevice();
|
|
// mCANDevicesList.append(NewCANDevice);
|
|
// NewCANDevice->mProgramPtr = this;
|
|
|
|
// 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.mCANbusSettingsPage->SetDevicesList(&mCANDevicesList);
|
|
|
|
// NewCANDevice = new CCANDevice();
|
|
// mCANDevicesList.append(NewCANDevice);
|
|
// NewCANDevice->mProgramPtr = this;
|
|
|
|
// NewCANDevice->Init("mazda_3_2019.dbc",PCAN_USBBUS3,PCAN_BAUD_800K,"Puck CAN USB branchée sur une autre patente", "Module Cossin",200);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
}
|
|
|
|
int COtarcikCan::UpdateCANViewerDataRequest(QList<CCANMessage *> *MsgList)
|
|
{
|
|
return mMainWindow.mCANViewerPage->UpdateCANTable(MsgList);
|
|
}
|
|
|
|
int COtarcikCan::InitCANViewer(QList<CCANMessage *> *MsgList)
|
|
{
|
|
return mMainWindow.mCANViewerPage->InitCANTable(MsgList);
|
|
}
|
|
|
|
|
|
//The device configuration has been modified directly in the master list
|
|
//Just save it and refresh display.
|
|
int COtarcikCan::SaveSystemConfigRequest(QList<CCANDeviceConfig *> *DevicesConfigList)
|
|
{
|
|
|
|
if(mSystemConfig.SaveConfig(DevicesConfigList) == RET_OK)
|
|
{
|
|
// mMainWindow.mProgramSettingsPage->UpdatePage();
|
|
|
|
//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);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return RET_GENERAL_ERROR;
|
|
}
|
|
|
|
return RET_OK;
|
|
}
|