1#ifndef IV_SRC_UI_PANELS_EDITOR_PMS_MAPPERS_HPP_
2#define IV_SRC_UI_PANELS_EDITOR_PMS_MAPPERS_HPP_
15 return {.mainBarId = mainBar->m_mainBarId, .name = mainBar->m_name};
20 return {.busTieId = busTie->m_busTieId,
21 .name = busTie->m_name,
22 .lomId = busTie->m_lomId,
23 .leftMainBarId = busTie->m_leftMainBarId,
24 .rightMainBarId = busTie->m_rightMainBarId};
29 return {.generatorId = generator->m_generatorId,
30 .breakerId = generator->m_breakerId,
31 .genBarId = generator->m_genBarId,
32 .name = generator->m_name,
33 .type = generator->m_genType,
34 .lomId = generator->m_lomId,
35 .mainBarId = generator->m_mainBarId,
36 .ratedPower = generator->m_ratedPower};
40mapTransition(
const std::shared_ptr<iv::model::pms::Transition> &transition)
46 return transitionData;
61 actionData.
type = action->m_actionType;
64 switch (action->m_actionType)
68 const auto cmdAction = std::dynamic_pointer_cast<iv::model::pms::GenCmdAction>(action);
69 actionData.
cmdActionData = {.generatorId = cmdAction->m_generator->m_generatorId,
70 .cmdType = cmdAction->m_cmdType};
76 const auto priorityAction = std::dynamic_pointer_cast<iv::model::pms::PriorityAction>(action);
77 actionData.
priorityActionData = {.generatorId = priorityAction->m_generator->m_generatorId,
78 .value = priorityAction->m_value};
84 const auto busTieCmdAction = std::dynamic_pointer_cast<iv::model::pms::BusTieCmdAction>(action);
86 .cmdType = busTieCmdAction->m_busTieCmdType};
92 const auto customAction = std::dynamic_pointer_cast<iv::model::pms::CustomAction>(action);
94 auto customCmdChannel = customAction->m_cmdChannel.lock();
95 auto customFeedbackChannel = customAction->m_feedbackChannel.lock();
99 .customFeedbackChannelId =
111inline std::shared_ptr<iv::model::pms::AbstractPmsAction>
114 std::shared_ptr<iv::model::pms::AbstractPmsAction> action;
116 switch (actionData.
type)
122 const auto cmdAction = std::make_shared<iv::model::pms::GenCmdAction>();
126 const auto generators = controller->pmsManager()->generators();
128 if (generators.contains(actionData.
cmdActionData->generatorId))
130 cmdAction->m_generator = generators.at(actionData.
cmdActionData->generatorId);
142 const auto priorityAction = std::make_shared<iv::model::pms::PriorityAction>();
146 const auto generators = controller->pmsManager()->generators();
150 priorityAction->m_generator = generators.at(actionData.
priorityActionData->generatorId);
153 action = priorityAction;
162 const auto busTieCmdAction = std::make_shared<iv::model::pms::BusTieCmdAction>();
166 const auto busTies = controller->pmsManager()->busTies();
173 action = busTieCmdAction;
182 const auto customAction = std::make_shared<iv::model::pms::CustomAction>();
185 const auto units = controller->units();
187 customAction->m_cmdChannel = units->getChannel(actionData.
customActionData->customCmdChannelId);
188 customAction->m_feedbackChannel =
191 action = customAction;
198 action = std::make_shared<iv::model::pms::SleepAction>();
206 action->m_actionType = actionData.
type;
215 modeData.
modeId = mode->m_modeId;
217 if (
const auto sharedMode = mode->m_modeFeedbackChannel.lock(); sharedMode)
#define IV_ASSERT_UNREACHABLE()
Definition assert.hpp:146
static std::unique_ptr< Application > & get()
Definition Application.cpp:20
Definition Transition.hpp:11
iv::types::pms::modeId m_modeToReach
Definition Transition.hpp:19
iv::types::pms::modeId m_sourceMode
Definition Transition.hpp:20
Definition mappers.hpp:11
iv::panels::pms::MainBarData mapMainBar(const std::shared_ptr< iv::model::pms::MainBar > &mainBar)
Definition mappers.hpp:13
iv::panels::pms::pmsMode::ModeData mapMode(const std::shared_ptr< iv::model::pms::Mode > &mode)
Definition mappers.hpp:212
iv::panels::pms::GeneratorData mapGenerator(const std::shared_ptr< iv::model::pms::Generator > &generator)
Definition mappers.hpp:27
iv::panels::pms::pmsMode::TransitionData mapTransition(const std::shared_ptr< iv::model::pms::Transition > &transition)
Definition mappers.hpp:40
iv::panels::pms::pmsMode::ActionData mapAction(const std::shared_ptr< iv::model::pms::AbstractPmsAction > &action)
Definition mappers.hpp:58
iv::panels::pms::BusTieData mapBusTie(const std::shared_ptr< iv::model::pms::BusTie > &busTie)
Definition mappers.hpp:18
iv::model::pms::Transition mapTransitionData(const iv::panels::pms::pmsMode::TransitionData &transitionData)
Definition mappers.hpp:49
std::shared_ptr< iv::model::pms::AbstractPmsAction > mapActionData(const iv::panels::pms::pmsMode::ActionData &actionData)
Definition mappers.hpp:112
std::string channelId
Definition types.hpp:66
Definition structs.hpp:19
Definition structs.hpp:29
Definition structs.hpp:13
Definition structs.hpp:69
std::optional< PriorityActionData > priorityActionData
Definition structs.hpp:74
std::optional< GenCmdActionData > cmdActionData
Definition structs.hpp:73
std::optional< BusTieCmdActionData > busTieCmdActionData
Definition structs.hpp:75
iv::types::milliseconds maxProcessTime
Definition structs.hpp:71
std::optional< CustomActionData > customActionData
Definition structs.hpp:76
iv::model::pms::ePmsActionType type
Definition structs.hpp:70
Definition structs.hpp:92
iv::types::pms::modeId modeId
Definition structs.hpp:93
iv::types::milliseconds feedbackTimeout
Definition structs.hpp:94
iv::types::channelId modeFeedbackChannelId
Definition structs.hpp:95
Definition structs.hpp:86
iv::types::pms::modeId sourceModeId
Definition structs.hpp:88
iv::types::pms::modeId modeToReachId
Definition structs.hpp:87