14 #ifndef ALARM_FAULT_ACCUMULATOR_H
15 #define ALARM_FAULT_ACCUMULATOR_H
23 #include <boost/circular_buffer.hpp>
24 #include <boost/shared_ptr.hpp>
26 #include <carma/fault/DagMLNode.h>
32 struct AccumulatorInfo
35 unsigned int first_frame_bad;
36 unsigned int last_frame_bad;
37 unsigned int frames_bad;
38 bool seen_this_iteration;
41 AccumulatorInfo(DagMLNodePtr node);
44 typedef boost::shared_ptr<struct AccumulatorInfo> AccumulatorInfoPtr;
46 typedef std::map <uint32_t, AccumulatorInfoPtr> AccumulatorMap;
47 typedef std::list<AccumulatorInfoPtr> AccumulatorList;
48 typedef boost::circular_buffer<AccumulatorInfoPtr> AccumulatorCircBuf;
54 class AlarmFaultAccumulator
57 AlarmFaultAccumulator(
const unsigned int history_len);
59 void traversal_setup(
const unsigned int frame);
60 void traversal_addFault(DagMLNodePtr &node);
61 void traversal_cleanup();
63 bool isAlarm(
const DagMLNodePtr &node);
65 void getAlarms(DagMLNodeList &alarms);
66 void getAlarmHistory(AccumulatorList &list);
72 bool isAlarm(
const AccumulatorInfoPtr &info);
76 AccumulatorCircBuf circ_;
77 unsigned int current_frame_;