1#ifndef IV_SRC_MODEL_PMS_PMSMANAGER_HPP_
2#define IV_SRC_MODEL_PMS_PMSMANAGER_HPP_
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 =
40 bool insertBusTie(
const std::shared_ptr<BusTie> &busTie);
42 bool insertMode(
const std::shared_ptr<Mode> &mode);
45 const std::shared_ptr<AbstractPmsAction> &action);
47 std::optional<iv::types::pms::elementId>
createMainBar(
const std::string &name);
54 std::optional<iv::types::pms::modeId>
createMode(
const std::string &modeId,
58 const std::shared_ptr<iv::model::pms::AbstractPmsAction> &newAction);
69 uint64_t actionIndex,
const std::shared_ptr<iv::model::pms::AbstractPmsAction> &newAction);
82 uint64_t actionIndex);
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();
89 [[nodiscard]] std::set<iv::types::pms::elementId>
getBarsIds()
const;
92 uint64_t actionIndex);
94 uint64_t actionIndex);
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;
140 static constexpr std::string_view
mainBars {
"MainBars"};
141 static constexpr std::string_view
busTies {
"BusTies"};
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"};
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
Definition PmsManager.hpp:22
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