CARMA C++
FaultSystemMonitorInfo.h
1 /*
2  * Convenience class to hold fault system monitor information
3  *
4  * Copyright (c) 2010 Ira W. Snyder <iws@ovro.caltech.edu>
5  */
6 
7 #ifndef FAULT_SYSTEM_MONITOR_INFO_H
8 #define FAULT_SYSTEM_MONITOR_INFO_H
9 
10 #include <string>
11 
12 #include <carma/fault/Constants.h>
13 #include <carma/fault/FaultControl.h>
14 
15 #include <carma/util/TimedBenchmark.h>
16 using namespace carma::util;
17 
18 /*
19  * Monitor information for the blank/flag output
20  */
21 class BFManagerMonitorInfo
22 {
23  public:
24 
25  /* constructor */
26  BFManagerMonitorInfo();
27 
28  /* Basic Information */
29  TimedBenchmark updateLatency;
30  int faultCount;
31  int exceptionCount;
32 
33  /* Transients Monitor */
34  std::vector<bool> correlatorNoiseOn;
35 
36  /* Effect Preferences */
37  std::vector<enum carma::fault::EffectPreference> driveErrorPreference;
38  std::vector<enum carma::fault::EffectPreference> monitorErrorPreference;
39  std::vector<enum carma::fault::EffectPreference> offlineErrorPreference;
40  std::vector<enum carma::fault::EffectPreference> phaselockErrorPreference;
41 };
42 
43 inline BFManagerMonitorInfo::BFManagerMonitorInfo()
44  : faultCount(0)
45  , exceptionCount(0)
46  , correlatorNoiseOn(NUM_SUBARRAYS, false)
47  , driveErrorPreference(NUM_SUBARRAYS, carma::fault::PREF_BLANK)
48  , monitorErrorPreference(NUM_SUBARRAYS, carma::fault::PREF_BLANK)
49  , offlineErrorPreference(NUM_SUBARRAYS, carma::fault::PREF_BLANK)
50  , phaselockErrorPreference(NUM_SUBARRAYS, carma::fault::PREF_BLANK)
51 {
52  /* intentionally left empty */
53 }
54 
55 /*
56  * Monitor information for the alarm output
57  */
58 class AlarmManagerMonitorInfo
59 {
60  public:
61 
62  /* constructor */
63  AlarmManagerMonitorInfo();
64 
65  /* Basic Information */
66  TimedBenchmark updateLatency;
67  int faultCount;
68  int exceptionCount;
69 
70  /* Alarm Status */
71  bool noisyAlarmOn;
72  bool silentAlarmOn;
73 
74  /* Alarm Enable Status */
75  std::vector<bool> alarmEnable;
76 
77  /* Faults from the last evaluation */
78  DagMLNodeList faults;
79 };
80 
81 inline AlarmManagerMonitorInfo::AlarmManagerMonitorInfo()
82  : updateLatency()
83  , faultCount(0)
84  , exceptionCount(0)
85  , noisyAlarmOn(false)
86  , silentAlarmOn(false)
87  , alarmEnable(NUM_SUBARRAYS, true)
88 {
89  /* intentionally left empty */
90 }
91 
92 /*
93  * Monitor information for the entire fault system
94  */
95 class FaultSystemMonitorInfo
96 {
97  public:
98 
99  /* constructor */
100  FaultSystemMonitorInfo();
101 
102  /* misc monitor information */
103  int inputCmsFrameCount;
104  int updateCycleNo;
105  int droppedFrames;
106  int exceptionCount;
107 
108  float monSysFrameSize;
109 
110  std::string alarmFile;
111  std::string blankFlagFile;
112 
113  bool alarmConfigError;
114  bool blankFlagConfigError;
115  bool emailConfigError;
116 
117  /* various clock readings, in the order used */
118  TimedBenchmark monitorSyncLatency;
119  TimedBenchmark evaluationLatency;
120  TimedBenchmark totalLatency;
121 };
122 
123 inline FaultSystemMonitorInfo::FaultSystemMonitorInfo()
124  : inputCmsFrameCount(0)
125  , updateCycleNo(0)
126  , droppedFrames(0)
127  , exceptionCount(0)
128  , monSysFrameSize(0)
129  , alarmFile("unknown")
130  , blankFlagFile("unknown")
131  , alarmConfigError(false)
132  , blankFlagConfigError(false)
133  , emailConfigError(false)
134 {
135  /* intentionally left empty */
136 }
137 
138 #endif /* FAULT_SYSTEM_MONITOR_INFO_H */