127 lines
4.3 KiB
C++
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 ////////////
|
|
|