#include "SystemConfig.h" #include "GeneralMessagesLogDispatcher.h" CSystemConfig::CSystemConfig() { } CSystemConfig::~CSystemConfig() { while(mCANDeviceConfigList.size() != 0) { delete mCANDeviceConfigList.takeAt(0); } } int CSystemConfig::LoadConfig() { 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,1,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,1,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) { // CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Fichier /Config/Station.cfg corrompu. Création d'une config vide"),true,1,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_WARNING_STATUS); ConfigFile->close(); // CreateEmptyConfig(); return RET_GENERAL_ERROR; } *InputStream >> FileVersion; //Load CAN devices configs int NbDevices; *InputStream >> NbDevices; for(int i = 0; i < NbDevices; i++) { CCANDeviceConfig *NewDeviceConfig = new CCANDeviceConfig; *InputStream >> *NewDeviceConfig; //DevicesList->append(new CCANDevice(NewDeviceConfig)); mCANDeviceConfigList.append(NewDeviceConfig); } //Load Cloud logging settings *InputStream >> mCloudLoggingParams; //Load general program settings *InputStream >> mGeneralSystemParams; //Load CAN Watchdog parameters *InputStream >> mCANWatchdogParams; ConfigFile->close(); delete ConfigFile; delete InputStream; CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Configuration système chargée avec succès!"),true,1,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_SUCCESS_STATUS); return RET_OK; } int CSystemConfig::SaveConfig() { 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,1,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,1,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 << mCANDeviceConfigList.size(); //Number of devices for(int i = 0; i < mCANDeviceConfigList.size(); i++) { *OutputStream << *mCANDeviceConfigList.at(i); //Add each device info to config file } //Save the Cloud logging settings *OutputStream << mCloudLoggingParams; //Save the general system parameters *OutputStream << mGeneralSystemParams; //Save the CAN Watchdog params *OutputStream << mCANWatchdogParams; ConfigFile->flush(); ConfigFile->close(); delete ConfigFile; delete OutputStream; CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Configuration système sauvegardée avec succès."),true,3,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_SUCCESS_STATUS); return RET_OK; } int CSystemConfig::CreateEmptyConfig() { } QList * CSystemConfig::GetCANDevicesConfigList() { return &mCANDeviceConfigList; } int CSystemConfig::SetCANDevicesConfigList(QList *DevicesConfigList) { if(DevicesConfigList == 0) return RET_GENERAL_ERROR; while(mCANDeviceConfigList.size() != 0) { delete mCANDeviceConfigList.takeAt(0); } for(int i = 0; i < DevicesConfigList->size(); i++) { CCANDeviceConfig *NewDeviceConfig = new CCANDeviceConfig(*DevicesConfigList->at(i)); mCANDeviceConfigList.append(NewDeviceConfig); } return RET_OK; } CCloudParams *CSystemConfig::GetCloudParams() { return &mCloudLoggingParams; } CCANWatchdogConfig *CSystemConfig::GetCANWatchdogConfig() { return &mCANWatchdogParams; } CGeneralSystemParams *CSystemConfig::GetGeneralSystemSettings() { return &mGeneralSystemParams; } int CSystemConfig::SetCANWatchdogConfig(CCANWatchdogConfig *Config) { if(Config == 0) return RET_GENERAL_ERROR; mCANWatchdogParams = *Config; } int CSystemConfig::SetCloudParams(CCloudParams *CloudParams) { if(CloudParams == 0) return RET_GENERAL_ERROR; mCloudLoggingParams = *CloudParams; return RET_OK; } int CSystemConfig::SetGeneralSystemParams(CGeneralSystemParams *GeneralParams) { if(GeneralParams == 0) return RET_GENERAL_ERROR; mGeneralSystemParams = *GeneralParams; return RET_OK; }