YULTek/Otarcik_CAN/Sources/SystemConfig.cpp
2023-01-27 13:33:03 -05:00

127 lines
4.3 KiB
C++

#include "SystemConfig.h"
#include "GeneralMessagesLogDispatcher.h"
CSystemConfig::CSystemConfig()
{
}
int CSystemConfig::LoadConfig(QList<CCANDevice *> *DevicesList)
{
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;
}
QFile* ConfigFile = new QFile("./Config/Station.cfg");
if(ConfigFile)
{
if(ConfigFile->open(QIODevice::ReadOnly | QIODevice::Unbuffered) == false)
{
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;
}
}
else
{
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;
}
QDataStream * InputStream = new QDataStream(ConfigFile);
quint32 MagicNbr;// = 0xBAADCAFE;
quint32 FileVersion;
*InputStream >> MagicNbr;
if(MagicNbr != OTARCIK_CONFIG_FILE_MAGIC_NBR)
{
return RET_GENERAL_ERROR;
}
*InputStream >> FileVersion;
int NbDevices;
*InputStream >> NbDevices;
for(int i = 0; i < NbDevices; i++)
{
CCANDeviceConfig NewDeviceConfig;
*InputStream >> NewDeviceConfig;
DevicesList->append(new CCANDevice(NewDeviceConfig));
}
ConfigFile->close();
delete ConfigFile;
delete InputStream;
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Configuration système chargée avec succès!"),true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_SUCCESS_STATUS);
return RET_OK;
}
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");
if(ConfigFile)
{
if(ConfigFile->open(QIODevice::WriteOnly | QIODevice::Unbuffered) == false)
{
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;
}
}
else
{
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Échec de sauvegarde de la config système. Pointeur vers QFile invalide !!!"),true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS);
return RET_GENERAL_ERROR;
}
QDataStream * OutputStream = new QDataStream(ConfigFile);
quint32 MagicNbr = OTARCIK_CONFIG_FILE_MAGIC_NBR;
quint32 FileVersion = OTARCIK_CURRENT_CONFIG_FILE_VERSION;
//Setup the config file header
*OutputStream << MagicNbr;
*OutputStream << FileVersion;
//Save the CAN devices config info
*OutputStream << DevicesConfigList->size(); //Number of devices
for(int i = 0; i < DevicesConfigList->size(); i++)
{
*OutputStream << *DevicesConfigList->at(i); //Add each device info to config file
}
ConfigFile->flush();
ConfigFile->close();
delete ConfigFile;
delete OutputStream;
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Configuration système sauvegardée avec succès."),true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_SUCCESS_STATUS);
return RET_OK;
}
////////////Class CCANDeviceConfig implementation ////////////