← Documentation
ADS-IDAC Engine 5.0.0
KBScannedParameters.cpp
Go to the documentation of this file.
1// KBScannedParameters.cpp: implementation of the KBScannedParameters class.
2//
4
6#include "../Branch/BranchRecord.h"
7#include <boost/serialization/export.hpp>
8#include "../Global/SimulationContext.h"
9#include <boost/archive/binary_oarchive.hpp>
10#include <boost/archive/binary_iarchive.hpp>
11BOOST_CLASS_EXPORT_IMPLEMENT(KBScannedParameters)
12using namespace std;
13
14
16// Construction/Destruction
18
20 last_panel_scan_time = -1.0e6;
21 scan_periodicity = 10.0;
24}
25
28}
30 parameter_scan_list.clear();
31 component_scan_list.clear();
33 alarm_scan_list.clear();
34}
43 for (auto& src : _KBSP.parameter_scan_list) {
44 auto pt = make_shared<BranchExpectedParameterValue>();
45 pt->copyBranchExpectedParameterValue(*src);
46 parameter_scan_list.push_back(std::move(pt));
47 }
48 for (auto& src : _KBSP.component_scan_list) {
49 auto pt = make_shared<BranchExpectedComponentState>();
50 pt->copyBranchExpectedComponentState(*src);
51 component_scan_list.push_back(std::move(pt));
52 }
53 for (auto& src : _KBSP.support_system_scan_list) {
54 auto pt = make_shared<BranchExpectedSupportSystemState>();
55 pt->copyBranchExpectedSupportSystemState(*src);
56 support_system_scan_list.push_back(std::move(pt));
57 }
58 for (auto& src : _KBSP.alarm_scan_list) {
59 auto pt = make_shared<BranchExpectedAlarmState>();
60 pt->copyBranchExpectedAlarmState(*src);
61 alarm_scan_list.push_back(std::move(pt));
62 }
63}
79 int n = 0;
80 n = alarm_scan_list.size() +
81 component_scan_list.size() +
84 return n;
85}
87 string str;
88 int i, num, priority;
89 ifstream fin(_file_name.c_str(), ios::in);
90 if (!fin.is_open()) {
91 cout << "File: " << _file_name << " cound not be found" << endl;
92 ofstream fout("err messages.txt", ios::app);
93 fout << r5pars_.timesno << " File: " << _file_name << " cound not be found\n";
94 fout.close();
95 } else {
96 fin >> str >> scan_periodicity
97 >> str >> info_load_sensitivity
99 >> str >> priority_decay_time
100 >> str >> priority_limit
101 >> str >> relevance_limit;
102 // read parameter values for control panel scan
103 fin >> str >> num;
104 for (i = 0; i != num; i++) {
105 fin >> str >> priority;
106 this->addScannedParameter(str, priority);
107 }
108 // read component states for control panel scan
109 fin >> str >> num;
110 for (i = 0; i != num; i++) {
111 fin >> str >> priority;
112 this->addScannedComponent(str, priority);
113 }
114 // read component states for control panel scan
115 fin >> str >> num;
116 for (i = 0; i != num; i++) {
117 fin >> str >> priority;
118 this->addScannedSupportSystem(str, priority);
119 }
120 // read alarms for control panel scan
121 fin >> str >> num;
122 for (i = 0; i != num; i++) {
123 fin >> str >> priority;
124 this->addScannedAlarm(str, priority);
125 }
126 fin.close();
128 }
129}
131 fout << "Scanned_Parameters\n"
132 << " last_panel_scan_time " << last_panel_scan_time
133 << " scan_periodicity " << scan_periodicity
134 << " info_load_sensitivity " << info_load_sensitivity
135 << " system_criticality " << system_criticality_sensitivity
136 << " priority_decay_time " << priority_decay_time
137 << " priority_limit " << priority_limit
138 << " relevance_limit " << relevance_limit << "\n";
139 fout << " number_of_scanned_parameters " << this->parameter_scan_list.size() << "\n";
140 for (auto& elem : parameter_scan_list) { elem->saveBranchExpectedParameterValueToFile(fout); }
141 fout << " number_of_scanned_components " << this->component_scan_list.size() << "\n";
142 for (auto& elem : component_scan_list) { elem->saveBranchExpectedComponentStateToFile(fout); }
143 fout << " number_of_scanned_support_systems " << this->support_system_scan_list.size() << "\n";
144 for (auto& elem : support_system_scan_list) { elem->saveBranchExpectedSupportSystemStateToFile(fout); }
145 fout << " number_of_scanned_alarms " << this->alarm_scan_list.size() << "\n";
146 for (auto& elem : alarm_scan_list) { elem->saveBranchExpectedAlarmStateToFile(fout); }
147 fout << '\n';
148}
150 string str;
151 int i, num_items;
152 fin >> str;
153 if (str != "Scanned_Parameters") {
154 ofstream fout("err messages.txt", ios::app);
155 cout << "KBScannedParameters::retrieveInfoFromFile File retrieval error in previous function" << endl;
156 fout << r5pars_.timesno
157 << " KBScannedParameters::retrieveInfoFromFile File retrieval error in previous function\n";
158 fout.close();
159 r5pars_.sim_err = true;
160 g_sim.Branch_center.setTempESMessage("KBScannedParameters::retrieveInfoFromFile Prior error");
162 return;
163 }
164
165 fin >> str >> last_panel_scan_time
166 >> str >> scan_periodicity
167 >> str >> info_load_sensitivity
169 >> str >> priority_decay_time
170 >> str >> priority_limit
171 >> str >> relevance_limit;
172 fin >> str >> num_items;
173 for (i = 0; i != num_items; i++) {
174 auto pt = make_shared<BranchExpectedParameterValue>();
175 pt->retrieveBranchExpectedParameterValueFromFile(fin);
176 this->parameter_scan_list.push_back(std::move(pt));
177 }
178 fin >> str >> num_items;
179 for (i = 0; i != num_items; i++) {
180 auto pt = make_shared<BranchExpectedComponentState>();
181 pt->retrieveBranchExpectedComponentStateFromFile(fin);
182 this->component_scan_list.push_back(std::move(pt));
183 }
184 fin >> str >> num_items;
185 for (i = 0; i != num_items; i++) {
186 auto pt = make_shared<BranchExpectedSupportSystemState>();
187 pt->retrieveBranchExpectedSupportSystemStateFromFile(fin);
188 this->support_system_scan_list.push_back(std::move(pt));
189 }
190 fin >> str >> num_items;
191 for (i = 0; i != num_items; i++) {
192 auto pt = make_shared<BranchExpectedAlarmState>();
193 pt->retrieveBranchExpectedAlarmStateFromFile(fin);
194 this->alarm_scan_list.push_back(std::move(pt));
195 }
196}
197
199 auto parameter_itr = parameter_scan_list.begin();
200 bool found = false;
201 while (parameter_itr != parameter_scan_list.end() && !found) {
202 if ((*parameter_itr)->getInfoName() == _parameter_name) {
203 found = true;
204 } else {
205 parameter_itr++;
206 }
207 }
208 return found;
209}
210
211void KBScannedParameters::addScannedParameter(string _parameter_name, int _priority) {
212 bool found = false;
213 auto parameter_itr = parameter_scan_list.begin();
214 while (parameter_itr != parameter_scan_list.end() && !found) {
215 if ((*parameter_itr)->getInfoName() == _parameter_name) {
216 found = true;
217 (*parameter_itr)->setT_Minimum(r5pars_.timesno);
218 (*parameter_itr)->setDecision(_priority);
219 }
220 parameter_itr++;
221 }
222 if (!found) {
223 auto pt = make_shared<BranchExpectedParameterValue>();
224 pt->setDisplayName(_parameter_name);
225 pt->setInfoName(_parameter_name);
226 pt->setDecision(_priority);
227 pt->setT_Minimum(r5pars_.timesno);
228 parameter_scan_list.push_back(std::move(pt));
229 }
230}
231
232void KBScannedParameters::addScannedComponent(string _component_name, int _priority) {
233 bool found = false;
234 auto component_itr = component_scan_list.begin();
235 while (component_itr != component_scan_list.end() && !found) {
236 if ((*component_itr)->getInfoName() == _component_name) {
237 found = true;
238 (*component_itr)->setT_Minimum(r5pars_.timesno);
239 (*component_itr)->setDecision(_priority);
240 }
241 component_itr++;
242 }
243 if (!found) {
244 auto pt = make_shared<BranchExpectedComponentState>();
245 pt->setDisplayName(_component_name);
246 pt->setInfoName(_component_name);
247 pt->setDecision(_priority);
248 pt->setT_Minimum(r5pars_.timesno);
249 component_scan_list.push_back(std::move(pt));
250 }
251}
252
253void KBScannedParameters::addScannedSupportSystem(string _ss_name, int _priority) {
254 bool found = false;
255 auto ss_itr = support_system_scan_list.begin();
256 while (ss_itr != support_system_scan_list.end() && !found) {
257 if ((*ss_itr)->getInfoName() == _ss_name) {
258 found = true;
259 (*ss_itr)->setT_Minimum(r5pars_.timesno);
260 (*ss_itr)->setDecision(_priority);
261 }
262 ss_itr++;
263 }
264 if (!found) {
265 auto pt = make_shared<BranchExpectedSupportSystemState>();
266 pt->setDisplayName(_ss_name);
267 pt->setInfoName(_ss_name);
268 pt->setDecision(_priority);
269 pt->setT_Minimum(r5pars_.timesno);
270 support_system_scan_list.push_back(std::move(pt));
271 }
272}
273
274void KBScannedParameters::addScannedAlarm(string _alarm_name, int _priority) {
275 bool found = false;
276 auto alarm_itr = alarm_scan_list.begin();
277 while (alarm_itr != alarm_scan_list.end() && !found) {
278 if ((*alarm_itr)->getAlarmName() == _alarm_name) {
279 found = true;
280 (*alarm_itr)->setT_Minimum(r5pars_.timesno);
281 (*alarm_itr)->setDecision(_priority);
282 }
283 alarm_itr++;
284 }
285 if (!found) {
286 auto pt = make_shared<BranchExpectedAlarmState>();
287 pt->setInfoName(_alarm_name);
288 pt->setAlarmName(_alarm_name);
289 pt->setDecision(_priority);
290 alarm_scan_list.push_back(std::move(pt));
291 }
292}
293
295 bool found = false;
296 auto parameter_itr = this->parameter_scan_list.begin();
297 while (parameter_itr != this->parameter_scan_list.end() && !found) {
298 if ((*parameter_itr)->getDisplayName() == _parameter_name) {
299 found = true;
300 this->parameter_scan_list.erase(parameter_itr);
301 } else {
302 parameter_itr++;
303 }
304 }
305}
306
308 bool found = false;
309 auto comp_itr = this->component_scan_list.begin();
310 while (comp_itr != this->component_scan_list.end() && !found) {
311 if ((*comp_itr)->getDisplayName() == _component_name) {
312 found = true;
313 this->component_scan_list.erase(comp_itr);
314 } else {
315 comp_itr++;
316 }
317 }
318}
319
321 bool found = false;
322 auto ss_itr = this->support_system_scan_list.begin();
323 while (ss_itr != this->support_system_scan_list.end() && !found) {
324 if ((*ss_itr)->getDisplayName() == _ss_name) {
325 found = true;
326 this->support_system_scan_list.erase(ss_itr);
327 } else {
328 ss_itr++;
329 }
330 }
331}
332
334 bool found = false;
335 auto alarm_itr = this->alarm_scan_list.begin();
336 while (alarm_itr != this->alarm_scan_list.end() && !found) {
337 if ((*alarm_itr)->getAlarmName() == _alarm_name) {
338 found = true;
339 this->alarm_scan_list.erase(alarm_itr);
340 } else {
341 alarm_itr++;
342 }
343 }
344}
SimulationContext g_sim
Global simulation context: the single instance, defined in SimulationContext.cpp.
void setTempTypeOfConsequence(Consequence)
Stores the consequence of the end state the running sequence will get.
void setTempESMessage(std::string)
Stores the description of the end state the running sequence will get if it is terminated (set by mod...
void removeScannedParameter(std::string)
void removeScannedSupportSystem(std::string)
void setSystemCriticalitySensitivity(double)
void addScannedAlarm(std::string, int)
std::vector< std::shared_ptr< BranchExpectedParameterValue > > parameter_scan_list
void setPriorityDecayTime(double)
std::vector< std::shared_ptr< BranchExpectedSupportSystemState > > support_system_scan_list
void saveKBSCannedParameterToFile(std::ofstream &)
void readInfoFromFile(std::string)
bool checkIfParameterInQueue(std::string)
void addScannedParameter(std::string, int)
void addScannedSupportSystem(std::string, int)
void setInfoLoadSensitivity(double)
std::vector< std::shared_ptr< BranchExpectedAlarmState > > alarm_scan_list
double getSystemCriticalitySensitivity()
void removeScannedComponent(std::string)
void retrieveKBSCannedParameterFromFile(std::ifstream &)
void addScannedComponent(std::string, int)
std::vector< std::shared_ptr< BranchExpectedComponentState > > component_scan_list
void copyScannedParameters(KBScannedParameters &)
void setLastPanelScanTime(double)
void removeScannedAlarm(std::string)
struct @0 r5pars_
BranchRecord Branch_center
Dynamic event tree state.