Nix (Dev) 3.5.10
dev - 3.5.10 - 1af9301
Loading...
Searching...
No Matches
PmsManager.hpp
Go to the documentation of this file.
1#ifndef IV_SRC_MODEL_PMS_PMSMANAGER_HPP_
2#define IV_SRC_MODEL_PMS_PMSMANAGER_HPP_
3
4#include "core/types.hpp"
6#include "mimics/enums.hpp"
10#include "model/pms/Mode.hpp"
11
12#include <map>
13#include <memory>
14#include <set>
15
16namespace iv::model::pms
17{
18
20{
22 {
23 std::thread thread;
25 bool isRunningLocally {false};
26 std::mutex mutex;
27 };
28
29public:
30 PmsManager() = default;
31 ~PmsManager() = default;
32
33 void update(const PmsManager &other);
34 bool load(std::string_view pathPms);
35 bool save(std::string_view pathPms,
36 const std::optional<std::shared_ptr<std::vector<std::shared_ptr<iv::file::xml::File>>>> &savingFilesOut =
37 std::nullopt) const;
38
39 bool insertMainBar(const std::shared_ptr<MainBar> &mainBar);
40 bool insertBusTie(const std::shared_ptr<BusTie> &busTie);
41 bool insertGenerator(const std::shared_ptr<Generator> &generator);
42 bool insertMode(const std::shared_ptr<Mode> &mode);
43 bool insertTransition(const std::shared_ptr<Transition> &transition);
44 bool insertAction(const iv::types::pms::modeId &sourceModeId, const iv::types::pms::modeId &modeToReachId,
45 const std::shared_ptr<AbstractPmsAction> &action);
46
47 std::optional<iv::types::pms::elementId> createMainBar(const std::string &name);
48 std::optional<iv::types::pms::elementId> createBusTie(const std::string &name, iv::types::unitId lomId,
49 iv::types::pms::elementId leftMainBarId,
50 iv::types::pms::elementId rightMainBarId);
51 std::optional<iv::types::pms::elementId> createGenerator(const std::string &name, iv::types::unitId lomId,
53 iv::types::pms::elementId mainBarId, uint32_t ratedPower);
54 std::optional<iv::types::pms::modeId> createMode(const std::string &modeId,
55 iv::types::milliseconds feedbackTimeout);
56 bool createTransition(const iv::model::pms::Transition &newTransition);
57 bool createAction(const iv::types::pms::modeId &sourceModeId, const iv::types::pms::modeId &modeToReachId,
58 const std::shared_ptr<iv::model::pms::AbstractPmsAction> &newAction);
59
63 bool changeModeId(const iv::types::pms::modeId &oldModeId, const iv::types::pms::modeId &newModeId);
65 const iv::types::pms::modeId &oldModeToReachId,
66 const iv::types::pms::modeId &newModeToReachId);
67
68 bool replaceAction(const iv::types::pms::modeId &sourceModeId, const iv::types::pms::modeId &modeToReachId,
69 uint64_t actionIndex, const std::shared_ptr<iv::model::pms::AbstractPmsAction> &newAction);
70
75
79 bool eraseMode(const iv::types::pms::modeId &modeId);
80 bool eraseTransition(const iv::types::pms::modeId &sourceModeId, const iv::types::pms::modeId &modeToReachId);
81 bool eraseAction(const iv::types::pms::modeId &sourceModeId, const iv::types::pms::modeId &modeToReachId,
82 uint64_t actionIndex);
83
84 const std::map<iv::types::pms::elementId, std::shared_ptr<iv::model::pms::MainBar>> &mainBars();
85 const std::map<iv::types::pms::elementId, std::shared_ptr<iv::model::pms::BusTie>> &busTies();
86 const std::map<iv::types::pms::elementId, std::shared_ptr<iv::model::pms::Generator>> &generators();
87 const std::map<iv::types::pms::modeId, std::shared_ptr<iv::model::pms::Mode>> &modes();
88
89 [[nodiscard]] std::set<iv::types::pms::elementId> getBarsIds() const;
90
91 bool moveUpAction(const iv::types::pms::modeId &sourceModeId, const iv::types::pms::modeId &modeToReachId,
92 uint64_t actionIndex);
93 bool moveDownAction(const iv::types::pms::modeId &sourceModeId, const iv::types::pms::modeId &modeToReachId,
94 uint64_t actionIndex);
95
96 void manageErasedUnit(const iv::types::unitId &unitId);
97
98 [[nodiscard]] std::weak_ptr<iv::model::pms::Mode> getActivePmsMode() const;
99
110
116 static void setOperationModesMimicElementsState(const iv::types::pms::modeId &modeToReachId,
117 const iv::mimics::elements::eOperationModeState &newModeState) ;
118
123 void sendModeTransitionInfo(bool isRunning, const iv::types::pms::modeId &modeToReachId,
125
127 std::weak_ptr<iv::channels::AbstractChannel> m_channelTransitionFailureAlarm;
128
129private:
130 static void unlinkGeneratorChannels(const std::shared_ptr<iv::model::pms::Generator> &generator);
131 static bool channelsPmsToGenerator(const std::shared_ptr<iv::model::pms::Generator> &generator);
132
133 std::map<iv::types::pms::elementId, std::shared_ptr<iv::model::pms::MainBar>> m_mainBars;
134 std::map<iv::types::pms::elementId, std::shared_ptr<iv::model::pms::BusTie>> m_busTies;
135 std::map<iv::types::pms::elementId, std::shared_ptr<iv::model::pms::Generator>> m_generators;
136 std::map<iv::types::pms::modeId, std::shared_ptr<iv::model::pms::Mode>> m_modes;
137
138 struct Sections
139 {
140 static constexpr std::string_view mainBars {"MainBars"};
141 static constexpr std::string_view busTies {"BusTies"};
142 static constexpr std::string_view generators {"Generators"};
143 static constexpr std::string_view mainBar {"MainBar"};
144 static constexpr std::string_view busTie {"BusTie"};
145 static constexpr std::string_view generator {"Generator"};
146 static constexpr std::string_view modes {"Modes"};
147 static constexpr std::string_view mode {"Mode"};
148 };
149 struct Keys
150 {
151 static constexpr std::string_view failureChannel {"FailureChannel"};
152 };
154 {
155 static constexpr std::string channel {};
156 };
157};
158
159}// namespace iv::model::pms
160
161#endif//IV_SRC_MODEL_PMS_PMSMANAGER_HPP_
Definition PmsManager.hpp:20
bool updateBusTieLeftMainBar(iv::types::pms::elementId busTieId, iv::types::pms::elementId newLeftMainBarId)
Definition PmsManager.cpp:618
const std::map< iv::types::pms::elementId, std::shared_ptr< iv::model::pms::MainBar > > & mainBars()
Definition PmsManager.cpp:871
std::optional< iv::types::pms::elementId > createBusTie(const std::string &name, iv::types::unitId lomId, iv::types::pms::elementId leftMainBarId, iv::types::pms::elementId rightMainBarId)
Definition PmsManager.cpp:277
bool eraseTransition(const iv::types::pms::modeId &sourceModeId, const iv::types::pms::modeId &modeToReachId)
Definition PmsManager.cpp:828
bool replaceAction(const iv::types::pms::modeId &sourceModeId, const iv::types::pms::modeId &modeToReachId, uint64_t actionIndex, const std::shared_ptr< iv::model::pms::AbstractPmsAction > &newAction)
Replaces an action in a transition.
Definition PmsManager.cpp:592
bool changeMainBarId(iv::types::pms::elementId oldMainBarId, iv::types::pms::elementId newMainBarId)
Definition PmsManager.cpp:428
std::map< iv::types::pms::modeId, std::shared_ptr< iv::model::pms::Mode > > m_modes
Definition PmsManager.hpp:136
const std::map< iv::types::pms::elementId, std::shared_ptr< iv::model::pms::BusTie > > & busTies()
Definition PmsManager.cpp:876
bool insertGenerator(const std::shared_ptr< Generator > &generator)
Definition PmsManager.cpp:186
std::set< iv::types::pms::elementId > getBarsIds() const
Definition PmsManager.cpp:891
std::optional< iv::types::pms::modeId > createMode(const std::string &modeId, iv::types::milliseconds feedbackTimeout)
Definition PmsManager.cpp:364
bool moveDownAction(const iv::types::pms::modeId &sourceModeId, const iv::types::pms::modeId &modeToReachId, uint64_t actionIndex)
Definition PmsManager.cpp:1114
std::optional< iv::types::pms::elementId > createMainBar(const std::string &name)
Definition PmsManager.cpp:255
const std::map< iv::types::pms::modeId, std::shared_ptr< iv::model::pms::Mode > > & modes()
Definition PmsManager.cpp:886
bool createTransition(const iv::model::pms::Transition &newTransition)
Definition PmsManager.cpp:384
bool moveUpAction(const iv::types::pms::modeId &sourceModeId, const iv::types::pms::modeId &modeToReachId, uint64_t actionIndex)
Definition PmsManager.cpp:1089
bool changeModeId(const iv::types::pms::modeId &oldModeId, const iv::types::pms::modeId &newModeId)
Definition PmsManager.cpp:522
bool eraseMode(const iv::types::pms::modeId &modeId)
Definition PmsManager.cpp:817
std::weak_ptr< iv::channels::AbstractChannel > m_channelTransitionFailureAlarm
Definition PmsManager.hpp:127
bool changeGeneratorId(iv::types::pms::elementId oldGeneratorId, iv::types::pms::elementId newGeneratorId)
Definition PmsManager.cpp:493
bool changeBusTieId(iv::types::pms::elementId oldBusTieId, iv::types::pms::elementId newBusTieId)
Definition PmsManager.cpp:474
std::map< iv::types::pms::elementId, std::shared_ptr< iv::model::pms::BusTie > > m_busTies
Definition PmsManager.hpp:134
bool save(std::string_view pathPms, const std::optional< std::shared_ptr< std::vector< std::shared_ptr< iv::file::xml::File > > > > &savingFilesOut=std::nullopt) const
Definition PmsManager.cpp:83
bool eraseMainBar(iv::types::pms::elementId mainBarId)
Deletes a main bar, propagating its elimination to the bus ties and generators.
Definition PmsManager.cpp:736
bool createAction(const iv::types::pms::modeId &sourceModeId, const iv::types::pms::modeId &modeToReachId, const std::shared_ptr< iv::model::pms::AbstractPmsAction > &newAction)
Definition PmsManager.cpp:406
bool insertMode(const std::shared_ptr< Mode > &mode)
Definition PmsManager.cpp:205
bool insertTransition(const std::shared_ptr< Transition > &transition)
Definition PmsManager.cpp:217
void setAndSendChannelTransitionFailureToNormalValue() const
Set the channel transition failure to normal value and sends expeditiously the channel by redundancy.
Definition PmsManager.cpp:1229
static bool channelsPmsToGenerator(const std::shared_ptr< iv::model::pms::Generator > &generator)
Definition PmsManager.cpp:976
bool changeTransitionModeToReachId(const iv::types::pms::modeId &sourceModeId, const iv::types::pms::modeId &oldModeToReachId, const iv::types::pms::modeId &newModeToReachId)
Definition PmsManager.cpp:559
bool eraseBusTie(iv::types::pms::elementId busTieId)
Definition PmsManager.cpp:773
std::map< iv::types::pms::elementId, std::shared_ptr< iv::model::pms::Generator > > m_generators
Definition PmsManager.hpp:135
std::weak_ptr< iv::model::pms::Mode > getActivePmsMode() const
Obtiene el modo de PMS activo en este momento.
Definition PmsManager.cpp:1168
std::optional< iv::types::pms::elementId > createGenerator(const std::string &name, iv::types::unitId lomId, iv::model::pms::eGeneratorType type, iv::types::pms::elementId mainBarId, uint32_t ratedPower)
Definition PmsManager.cpp:312
bool updateBusTieRightMainBar(iv::types::pms::elementId busTieId, iv::types::pms::elementId newRightMainBarId)
Definition PmsManager.cpp:654
void manageErasedUnit(const iv::types::unitId &unitId)
Definition PmsManager.cpp:1144
bool updateGeneratorLomId(iv::types::pms::elementId generatorId, iv::types::unitId newLomId)
Definition PmsManager.cpp:716
void setAndSendChannelTransitionFailureToAlarmValue() const
Set the channel transition failure to alarm value and sends expeditiously the channel by redundancy.
Definition PmsManager.cpp:1188
static void unlinkGeneratorChannels(const std::shared_ptr< iv::model::pms::Generator > &generator)
Definition PmsManager.cpp:908
bool eraseAction(const iv::types::pms::modeId &sourceModeId, const iv::types::pms::modeId &modeToReachId, uint64_t actionIndex)
Definition PmsManager.cpp:845
bool insertBusTie(const std::shared_ptr< BusTie > &busTie)
Definition PmsManager.cpp:159
RunningModeTransition m_runningModeTransition
Definition PmsManager.hpp:126
std::map< iv::types::pms::elementId, std::shared_ptr< iv::model::pms::MainBar > > m_mainBars
Definition PmsManager.hpp:133
static void setOperationModesMimicElementsState(const iv::types::pms::modeId &modeToReachId, const iv::mimics::elements::eOperationModeState &newModeState)
Runs through all Operation Modes Mimic Elements matching the given modeId and sets their state.
Definition PmsManager.cpp:1270
bool insertAction(const iv::types::pms::modeId &sourceModeId, const iv::types::pms::modeId &modeToReachId, const std::shared_ptr< AbstractPmsAction > &action)
Definition PmsManager.cpp:235
void sendModeTransitionInfo(bool isRunning, const iv::types::pms::modeId &modeToReachId, const iv::mimics::elements::eOperationModeState &newModeState)
Send the mode transition information through redundancy.
Definition PmsManager.cpp:1295
bool updateGeneratorMainBar(iv::types::pms::elementId generatorId, iv::types::pms::elementId newMainBarId)
Definition PmsManager.cpp:691
bool insertMainBar(const std::shared_ptr< MainBar > &mainBar)
Definition PmsManager.cpp:146
const std::map< iv::types::pms::elementId, std::shared_ptr< iv::model::pms::Generator > > & generators()
Definition PmsManager.cpp:881
void update(const PmsManager &other)
Definition PmsManager.cpp:1139
bool eraseGenerator(iv::types::pms::elementId generatorId)
Definition PmsManager.cpp:798
bool load(std::string_view pathPms)
Definition PmsManager.cpp:15
Definition Transition.hpp:11
eOperationModeState
Definition enums.hpp:190
Definition AbstractPmsAction.cpp:9
eGeneratorType
Definition enums.hpp:8
uint16_t elementId
Definition types.hpp:96
std::string modeId
Definition types.hpp:97
uint16_t unitId
Definition types.hpp:77
uint64_t milliseconds
Definition types.hpp:22
Definition PmsManager.hpp:154
static constexpr std::string channel
Definition PmsManager.hpp:155
Definition PmsManager.hpp:150
static constexpr std::string_view failureChannel
Definition PmsManager.hpp:151
bool isRunning
Definition PmsManager.hpp:24
std::mutex mutex
Definition PmsManager.hpp:26
bool isRunningLocally
Definition PmsManager.hpp:25
std::thread thread
Definition PmsManager.hpp:23
Definition PmsManager.hpp:139
static constexpr std::string_view modes
Definition PmsManager.hpp:146
static constexpr std::string_view busTies
Definition PmsManager.hpp:141
static constexpr std::string_view generators
Definition PmsManager.hpp:142
static constexpr std::string_view mainBars
Definition PmsManager.hpp:140
static constexpr std::string_view mode
Definition PmsManager.hpp:147
static constexpr std::string_view busTie
Definition PmsManager.hpp:144
static constexpr std::string_view mainBar
Definition PmsManager.hpp:143
static constexpr std::string_view generator
Definition PmsManager.hpp:145