Nix (Dev) 3.5.10
dev - 3.5.10 - 1af9301
Loading...
Searching...
No Matches
mappers.hpp
Go to the documentation of this file.
1#ifndef IV_SRC_UI_PANELS_EDITOR_PMS_MAPPERS_HPP_
2#define IV_SRC_UI_PANELS_EDITOR_PMS_MAPPERS_HPP_
3
7#include "model/pms/Mode.hpp"
9
11{
12
13inline iv::panels::pms::MainBarData mapMainBar(const std::shared_ptr<iv::model::pms::MainBar> &mainBar)
14{
15 return {.mainBarId = mainBar->m_mainBarId, .name = mainBar->m_name};
16}
17
18inline iv::panels::pms::BusTieData mapBusTie(const std::shared_ptr<iv::model::pms::BusTie> &busTie)
19{
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};
25}
26
27inline iv::panels::pms::GeneratorData mapGenerator(const std::shared_ptr<iv::model::pms::Generator> &generator)
28{
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};
37}
38
40mapTransition(const std::shared_ptr<iv::model::pms::Transition> &transition)
41{
43 transitionData.modeToReachId = transition->m_modeToReach;
44 transitionData.sourceModeId = transition->m_sourceMode;
45
46 return transitionData;
47}
48
50{
52 transition.m_modeToReach = transitionData.modeToReachId;
53 transition.m_sourceMode = transitionData.sourceModeId;
54
55 return transition;
56}
57
58inline iv::panels::pms::pmsMode::ActionData mapAction(const std::shared_ptr<iv::model::pms::AbstractPmsAction> &action)
59{
61 actionData.type = action->m_actionType;
62 actionData.maxProcessTime = action->m_maxProcessTime;
63
64 switch (action->m_actionType)
65 {
67 {
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};
71 }
72 break;
73
75 {
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};
79 }
80 break;
81
83 {
84 const auto busTieCmdAction = std::dynamic_pointer_cast<iv::model::pms::BusTieCmdAction>(action);
85 actionData.busTieCmdActionData = {.busTieId = busTieCmdAction->m_busTie->m_busTieId,
86 .cmdType = busTieCmdAction->m_busTieCmdType};
87 }
88 break;
89
91 {
92 const auto customAction = std::dynamic_pointer_cast<iv::model::pms::CustomAction>(action);
93
94 auto customCmdChannel = customAction->m_cmdChannel.lock();
95 auto customFeedbackChannel = customAction->m_feedbackChannel.lock();
96
97 actionData.customActionData = {
98 .customCmdChannelId = customCmdChannel ? customCmdChannel->m_tag : iv::types::channelId {},
99 .customFeedbackChannelId =
100 customFeedbackChannel ? customFeedbackChannel->m_tag : iv::types::channelId {}};
101 }
102
103 default:
105 break;
106 }
107
108 return actionData;
109}
110
111inline std::shared_ptr<iv::model::pms::AbstractPmsAction>
113{
114 std::shared_ptr<iv::model::pms::AbstractPmsAction> action;
115
116 switch (actionData.type)
117 {
119 {
120 if (actionData.cmdActionData.has_value())
121 {
122 const auto cmdAction = std::make_shared<iv::model::pms::GenCmdAction>();
123 cmdAction->m_cmdType = actionData.cmdActionData->cmdType;
124
125 const auto controller = iv::appdiamar::Application::get()->getApplicationController().lock();
126 const auto generators = controller->pmsManager()->generators();
127
128 if (generators.contains(actionData.cmdActionData->generatorId))
129 {
130 cmdAction->m_generator = generators.at(actionData.cmdActionData->generatorId);
131 }
132
133 action = cmdAction;
134 }
135 }
136 break;
137
139 {
140 if (actionData.priorityActionData.has_value())
141 {
142 const auto priorityAction = std::make_shared<iv::model::pms::PriorityAction>();
143 priorityAction->m_value = actionData.priorityActionData->value;
144
145 const auto controller = iv::appdiamar::Application::get()->getApplicationController().lock();
146 const auto generators = controller->pmsManager()->generators();
147
148 if (generators.contains(actionData.priorityActionData->generatorId))
149 {
150 priorityAction->m_generator = generators.at(actionData.priorityActionData->generatorId);
151 }
152
153 action = priorityAction;
154 }
155 }
156 break;
157
159 {
160 if (actionData.busTieCmdActionData.has_value())
161 {
162 const auto busTieCmdAction = std::make_shared<iv::model::pms::BusTieCmdAction>();
163 busTieCmdAction->m_busTieCmdType = actionData.busTieCmdActionData->cmdType;
164
165 const auto controller = iv::appdiamar::Application::get()->getApplicationController().lock();
166 const auto busTies = controller->pmsManager()->busTies();
167
168 if (busTies.contains(actionData.busTieCmdActionData->busTieId))
169 {
170 busTieCmdAction->m_busTie = busTies.at(actionData.busTieCmdActionData->busTieId);
171 }
172
173 action = busTieCmdAction;
174 }
175 }
176 break;
177
179 {
180 if (actionData.customActionData.has_value())
181 {
182 const auto customAction = std::make_shared<iv::model::pms::CustomAction>();
183
184 const auto controller = iv::appdiamar::Application::get()->getApplicationController().lock();
185 const auto units = controller->units();
186
187 customAction->m_cmdChannel = units->getChannel(actionData.customActionData->customCmdChannelId);
188 customAction->m_feedbackChannel =
189 units->getChannel(actionData.customActionData->customFeedbackChannelId);
190
191 action = customAction;
192 }
193 }
194 break;
195
197 {
198 action = std::make_shared<iv::model::pms::SleepAction>();
199 }
200 break;
201
202 default:
204 break;
205 }
206 action->m_actionType = actionData.type;
207 action->m_maxProcessTime = actionData.maxProcessTime;
208
209 return action;
210}
211
212inline iv::panels::pms::pmsMode::ModeData mapMode(const std::shared_ptr<iv::model::pms::Mode> &mode)
213{
215 modeData.modeId = mode->m_modeId;
216 modeData.feedbackTimeout = mode->m_feedbackTimeout;
217 if (const auto sharedMode = mode->m_modeFeedbackChannel.lock(); sharedMode)
218 {
219 modeData.modeFeedbackChannelId = sharedMode->m_tag;
220 }
221
222 return modeData;
223}
224
225}// namespace iv::panels::pms::mappers
226
227#endif//IV_SRC_UI_PANELS_EDITOR_PMS_MAPPERS_HPP_
#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
iv::types::pms::modeId sourceModeId
Definition structs.hpp:88
iv::types::pms::modeId modeToReachId
Definition structs.hpp:87