125 lines
4.8 KiB
C++
125 lines
4.8 KiB
C++
#include "SettingsHandler.h"
|
|
#include "../itc_pressure_optimizer.h"
|
|
#include "SettingsHandlerConfig.h"
|
|
#include <string>
|
|
|
|
using namespace SettingsHandlerConfig;
|
|
|
|
void SettingsHandler::pullEquipmentName() {
|
|
midas::odb o(this->path);
|
|
std::string equipmentName = o[SettingsHandlerConfig::EQUIPMENT_NAME];
|
|
Event event = {EventType::EQUIPMENT_NAME, equipmentName};
|
|
eventBus.publish(event);
|
|
}
|
|
|
|
void SettingsHandler::pullOutputPressureSPIndex() {
|
|
midas::odb o(this->path);
|
|
int outputPressureSPIndex =
|
|
o[SettingsHandlerConfig::OUTPUT_PRESSURE_SP_INDEX];
|
|
Event event = {EventType::OUTPUT_PRESSURE_SP_INDEX, outputPressureSPIndex};
|
|
eventBus.publish(event);
|
|
}
|
|
|
|
void SettingsHandler::pullInputSPIndex() {
|
|
midas::odb o(this->path);
|
|
int inputSPIndex = o[SettingsHandlerConfig::INPUT_SP_INDEX];
|
|
Event event = {EventType::INPUT_SP_INDEX, inputSPIndex};
|
|
eventBus.publish(event);
|
|
}
|
|
|
|
void SettingsHandler::pullInputTemperatureIndex() {
|
|
midas::odb o(this->path);
|
|
int temperatureIndex = o[SettingsHandlerConfig::INPUT_TEMPERATURE_INDEX];
|
|
Event event = {EventType::INPUT_TEMPERATURE_INDEX, temperatureIndex};
|
|
eventBus.publish(event);
|
|
}
|
|
|
|
void SettingsHandler::pullInputPowerIndex() {
|
|
midas::odb o(this->path);
|
|
int powerIndex = o[SettingsHandlerConfig::INPUT_POWER_INDEX];
|
|
Event event = {EventType::INPUT_POWER_INDEX, powerIndex};
|
|
eventBus.publish(event);
|
|
}
|
|
|
|
SettingsHandler::SettingsHandler(EventBus &eventBusReference,
|
|
std::string equipmentName)
|
|
: path(SettingsHandlerConfig::PATH_PREFIX + equipmentName +
|
|
SettingsHandlerConfig::PATH_SUFFIX),
|
|
eventBus(eventBusReference) {
|
|
eventBus.subscribe<itcPressureOptimizer::EquipmentInitEvent>(
|
|
[this](const itcPressureOptimizer::EquipmentInitEvent &e) {
|
|
this->init();
|
|
});
|
|
}
|
|
|
|
bool SettingsHandler::init() {
|
|
midas::odb o(this->path);
|
|
|
|
bool areKeysValids = true;
|
|
|
|
if (!midas::odb::exists(path + SettingsHandlerConfig::EQUIPMENT_NAME)) {
|
|
TMFE::Instance()->Msg(MERROR, __FUNCTION__,
|
|
"Key at %s%s doesn't exists", path.c_str(),
|
|
SettingsHandlerConfig::EQUIPMENT_NAME.c_str());
|
|
areKeysValids = false;
|
|
}
|
|
if (!midas::odb::exists(path +
|
|
SettingsHandlerConfig::OUTPUT_PRESSURE_SP_INDEX)) {
|
|
TMFE::Instance()->Msg(
|
|
MERROR, __FUNCTION__, "Key at %s%s doesn't exists", path.c_str(),
|
|
SettingsHandlerConfig::OUTPUT_PRESSURE_SP_INDEX.c_str());
|
|
areKeysValids = false;
|
|
}
|
|
if (!midas::odb::exists(path + SettingsHandlerConfig::INPUT_SP_INDEX)) {
|
|
TMFE::Instance()->Msg(MERROR, __FUNCTION__,
|
|
"Key at %s%s doesn't exists", path.c_str(),
|
|
SettingsHandlerConfig::INPUT_SP_INDEX.c_str());
|
|
areKeysValids = false;
|
|
}
|
|
if (!midas::odb::exists(path +
|
|
SettingsHandlerConfig::INPUT_TEMPERATURE_INDEX)) {
|
|
TMFE::Instance()->Msg(
|
|
MERROR, __FUNCTION__, "Key at %s%s doesn't exists", path.c_str(),
|
|
SettingsHandlerConfig::INPUT_TEMPERATURE_INDEX.c_str());
|
|
areKeysValids = false;
|
|
}
|
|
if (!midas::odb::exists(path + SettingsHandlerConfig::INPUT_POWER_INDEX)) {
|
|
TMFE::Instance()->Msg(MERROR, __FUNCTION__,
|
|
"Key at %s%s doesn't exists", path.c_str(),
|
|
SettingsHandlerConfig::INPUT_POWER_INDEX.c_str());
|
|
areKeysValids = false;
|
|
}
|
|
|
|
if (!areKeysValids) {
|
|
midas::odb o = {
|
|
{SettingsHandlerConfig::EQUIPMENT_NAME.c_str(),
|
|
{SettingsHandlerConfig::DEFAULT_EQUIPMENT_NAME.c_str()}},
|
|
{SettingsHandlerConfig::OUTPUT_PRESSURE_SP_INDEX.c_str(),
|
|
{SettingsHandlerConfig::DEFAULT_INDEX_VALUE}},
|
|
{SettingsHandlerConfig::INPUT_SP_INDEX.c_str(),
|
|
{SettingsHandlerConfig::DEFAULT_INDEX_VALUE}},
|
|
{SettingsHandlerConfig::INPUT_TEMPERATURE_INDEX.c_str(),
|
|
{SettingsHandlerConfig::DEFAULT_INDEX_VALUE}},
|
|
{SettingsHandlerConfig::INPUT_POWER_INDEX.c_str(),
|
|
{SettingsHandlerConfig::DEFAULT_INDEX_VALUE}},
|
|
{SettingsHandlerConfig::TIME_WINDOW.c_str(),
|
|
{SettingsHandlerConfig::DEFAULT_TIME_WINDOWS_SIZE}}};
|
|
|
|
TMFE::Instance()->Msg(
|
|
MERROR, __FUNCTION__,
|
|
"Some keys are missing at %s. Please fill the generated template.",
|
|
path.c_str());
|
|
|
|
o.connect(this->path);
|
|
throw std::runtime_error("SettinsHandler init failed - see MIDAS "
|
|
"console and take care of all the errors\n");
|
|
}
|
|
|
|
this->pullEquipmentName();
|
|
this->pullOutputPressureSPIndex();
|
|
this->pullInputSPIndex();
|
|
this->pullInputTemperatureIndex();
|
|
this->pullInputPowerIndex();
|
|
return true;
|
|
}
|