← Documentation
ADS-IDAC Engine 5.0.0
KBActionPackUnit.cpp
Go to the documentation of this file.
1// KBActionPackUnit.cpp: implementation of the KBActionPackUnit class.
2//
4
5#include "KBActionPackUnit.h"
6using namespace std;
7
9// Construction/Destruction
11
13{
14
15}
16
18{
19 action.clear();
24}
26 string str;
27 int i, n;
29 fin >> str >> n;
30 for(i = 0; i < n; i ++){
31 auto action_pt = make_unique<DecisionAction>();
32 action_pt->readInfoFromFile(fin);
33 action.push_back(std::move(action_pt));
34 }
35 fin >> str >> n;
36 for(i = 0; i < n; i ++){
37 auto expected_alarm_state_pt = make_unique<KBExpectedAlarmStateUnit>();
38 expected_alarm_state_pt->readInfoFromFile(fin);
39 expected_alarm_state.push_back(std::move(expected_alarm_state_pt));
40 }
41 fin >> str >> n;
42 for(i = 0; i < n; i ++){
43 auto expected_component_state_pt = make_unique<KBExpectedComponentStateUnit>();
44 expected_component_state_pt->readInfoFromFile(fin);
45 expected_component_state.push_back(std::move(expected_component_state_pt));
46 }
47 fin >> str >> n;
48 for(i = 0; i < n; i ++){
49 auto expected_parameter_value_pt = make_unique<KBExpectedParameterValueUnit>();
50 expected_parameter_value_pt->readInfoFromFile(fin);
51 expected_parameter_value.push_back(std::move(expected_parameter_value_pt));
52 }
53/* fin >> str >> n;
54 for(i = 0; i < n; i ++){
55 auto expected_parameter_trend_pt = make_unique<KBExpectedParameterTrendUnit>();
56 expected_parameter_trend_pt->readInfoFromFile(fin);
57 expected_parameter_trend.push_back(std::move(expected_parameter_trend_pt));
58 }*/
59}
60void KBActionPackUnit::checkForAction(string _action_name, double _action_value){
61 int n_return;
62 for(auto& a : action){
63 n_return = a->checkForMatch(_action_name, _action_value);
64 }
65}
66void KBActionPackUnit::checkForAlarmState(string _alarm_name, int _alarm_state){
67 int n_return;
68 for(auto& ea : expected_alarm_state){
69 n_return = ea->checkForMatch(_alarm_name, _alarm_state);
70 }
71}
72void KBActionPackUnit::checkForComponentState(string _comp_name, int _comp_state){
73 int n_return;
74 for(auto& ec : expected_component_state){
75 n_return = ec->checkForMatch(_comp_name, _comp_state);
76 }
77}
78void KBActionPackUnit::checkForParameterValue(string _par_name, double _par_value, int _operator){
79 int n_return;
80 for(auto& ep : expected_parameter_value){
81 n_return = ep->checkForMatch(_par_name, _par_value, _operator);
82 }
83};
84void KBActionPackUnit::checkForParameterTrend(string _par_name, int _par_trend){
85 int n_return;
86 for(auto& et : expected_parameter_trend){
87 n_return = et->checkForMatch(_par_name, _par_trend);
88 }
89};
91 this->copyKBElement(_ap);
92 this->copyStateOfActivation(_ap);
93 for(auto& src : _ap.action){
94 auto action_pt = make_unique<DecisionAction>();
95 action_pt->copyDecisionAction(*src);
96 action.push_back(std::move(action_pt));
97 }
98 for(auto& src : _ap.expected_alarm_state){
99 auto expected_alarm_state_pt = make_unique<KBExpectedAlarmStateUnit>();
100 expected_alarm_state_pt->copyKBExpectedAlarmStateUnit(*src);
101 expected_alarm_state.push_back(std::move(expected_alarm_state_pt));
102 }
103 for(auto& src : _ap.expected_component_state){
104 auto expected_component_state_pt = make_unique<KBExpectedComponentStateUnit>();
105 expected_component_state_pt->copyKBExpectedComponentStateUnit(*src);
106 expected_component_state.push_back(std::move(expected_component_state_pt));
107 }
108 for(auto& src : _ap.expected_parameter_value){
109 auto expected_parameter_value_pt = make_unique<KBExpectedParameterValueUnit>();
110 expected_parameter_value_pt->copyKBExpectedParameterValueUnit(*src);
111 expected_parameter_value.push_back(std::move(expected_parameter_value_pt));
112 }
113 for(auto& src : _ap.expected_parameter_trend){
114 auto expected_parameter_trend_pt = make_unique<KBExpectedParameterTrendUnit>();
115 expected_parameter_trend_pt->copyKBExpectedParameterTrendUnit(*src);
116 expected_parameter_trend.push_back(std::move(expected_parameter_trend_pt));
117 }
118};
120 bool activated = true;
122 activated = false;
123 }
124 else if(this->getStateOfActivation() == sim::State::Active){
125 }
126 else{
127 auto action_itr = action.begin();
128 while(action_itr != action.end() && activated){
129 if((*action_itr)->getStateOfActivation() != sim::State::Succeed) activated = false;
130 action_itr++;
131 }
132 auto expected_alarm_state_itr = expected_alarm_state.begin();
133 while(expected_alarm_state_itr != expected_alarm_state.end() && activated){
134 if((*expected_alarm_state_itr)->getStateOfExpectation() != sim::State::Succeed) activated = false;
135 expected_alarm_state_itr ++;
136 }
137 auto expected_component_state_itr = expected_component_state.begin();
138 while(expected_component_state_itr != expected_component_state.end() && activated){
139 if((*expected_component_state_itr)->getStateOfExpectation() != sim::State::Succeed) activated = false;
140 expected_component_state_itr++;
141 }
142 auto expected_parameter_value_itr = expected_parameter_value.begin();
143 while(expected_parameter_value_itr != expected_parameter_value.end() && activated){
144 if((*expected_parameter_value_itr)->getStateOfExpectation() != sim::State::Succeed) activated = false;
145 expected_parameter_value_itr++;
146 }
147 if(activated) this->setStateOfActivation(sim::State::Active);
148 }
149 return activated;
150};
void checkForParameterTrend(std::string, int)
void readInfoFromFile(std::ifstream &)
void checkForComponentState(std::string, int)
std::vector< std::unique_ptr< DecisionAction > > action
std::vector< std::unique_ptr< KBExpectedAlarmStateUnit > > expected_alarm_state
std::vector< std::unique_ptr< KBExpectedParameterValueUnit > > expected_parameter_value
void checkForAction(std::string, double)
void checkForAlarmState(std::string, int)
void copyKBActionPackUnit(KBActionPackUnit &)
std::vector< std::unique_ptr< KBExpectedParameterTrendUnit > > expected_parameter_trend
std::vector< std::unique_ptr< KBExpectedComponentStateUnit > > expected_component_state
void checkForParameterValue(std::string, double, int)
virtual ~KBActionPackUnit()
void readInfoFromFile(std::ifstream &)
Definition: KBElement.cpp:27
void copyKBElement(KBElement &)
Definition: KBElement.cpp:30
void setStateOfActivation(int)
void copyStateOfActivation(StateOfActivation &)
constexpr int Succeed
Definition: SimConstants.h:104
constexpr int Active
Definition: SimConstants.h:118