15 #include <boost/shared_ptr.hpp>
16 #include <boost/regex.hpp>
18 #include <xercesc/dom/DOM.hpp>
25 #include <carma/fault/DagMLExpr.h>
35 typedef boost::shared_ptr<DagMLNode> DagMLNodePtr;
38 typedef std::list<DagMLNodePtr> DagMLNodeList;
39 typedef std::map<std::string, DagMLNodePtr> DagMLNodeMap;
41 struct DagMLNodeUpdateInfo
45 const VariableMap &varmap;
46 const bool varmap_changed;
47 const DagMLNodeMap &gather_map;
48 const DagMLNodeMap &monitor_map;
52 const VariableMap &varmap,
53 const bool varmap_changed,
54 const DagMLNodeMap &gather_map,
55 const DagMLNodeMap &monitor_map);
69 EFFECT_DRIVE = (1 << 0),
70 EFFECT_MONITORDATA = (1 << 1),
71 EFFECT_OFFLINE = (1 << 2),
72 EFFECT_PHASELOCK = (1 << 3),
90 DagMLNode(xercesc::DOMElement *elem,
const enum NodeTypes type);
94 virtual std::string print()
const = 0;
97 virtual void update(
const DagMLNodeUpdateInfo &info) = 0;
100 virtual void check()
const = 0;
103 virtual const std::string& getName()
const;
106 virtual enum DagMLNode::NodeTypes getType()
const;
109 virtual void addChild(DagMLNodePtr child);
110 virtual const DagMLNodeList& getChildren()
const;
113 enum DagMLNode::NodeTypes node_type_;
117 DagMLNodeList children_;
124 class DagTopNode :
public DagMLNode
128 DagTopNode(xercesc::DOMElement *elem);
129 std::string print()
const;
130 void update(
const DagMLNodeUpdateInfo &info);
138 class DagMPNode :
public DagMLNode
142 DagMPNode(xercesc::DOMElement *elem);
143 std::string print()
const;
144 void update(
const DagMLNodeUpdateInfo &info);
148 bool isValid()
const;
151 enum DagMLNode::EffectBits getErrorBit()
const;
154 void setDisableAlarm(
bool disable);
155 bool getDisableAlarm()
const;
158 unsigned int getAlarmAfterFrames()
const;
161 carma::monitor::tagIDType getTagID()
const;
164 std::string getSound()
const;
167 unsigned int getAlarmPrefix()
const;
170 bool getSilent()
const;
175 unsigned int alarm_after_frames_;
176 enum DagMLNode::EffectBits bit_;
185 unsigned int prefix_;
198 class DagMPRefNode :
public DagMLNode
201 DagMPRefNode(xercesc::DOMElement *elem);
202 std::string print()
const;
203 void update(
const DagMLNodeUpdateInfo &info);
207 void addChild(DagMLNodePtr child);
210 DagMLNodePtr getTarget()
const;
213 DagMLNodePtr cached_target_;
214 bool update_success_;
221 class DagGatherNode :
public DagMLNode
224 DagGatherNode(xercesc::DOMElement *elem);
225 std::string print()
const;
226 void update(
const DagMLNodeUpdateInfo &info);
237 class DagGatherRefNode :
public DagMLNode
240 DagGatherRefNode(xercesc::DOMElement *elem);
241 std::string print()
const;
242 void update(
const DagMLNodeUpdateInfo &info);
246 void addChild(DagMLNodePtr child);
249 DagMLNodePtr getTarget()
const;
252 DagMLNodePtr cached_target_;
253 bool update_success_;
260 class DagBFOutputNode :
public DagMLNode
263 DagBFOutputNode(xercesc::DOMElement *elem);
264 std::string print()
const;
265 void update(
const DagMLNodeUpdateInfo &info);
268 unsigned int getAstroBandNumber()
const;
269 unsigned int getAstroInputNumber()
const;
272 void setOutputValue(uint32_t bitmask);
275 unsigned int astroband_;
276 unsigned int astroinput_;
286 class DagTransientNode :
public DagMLNode
290 ALARM_ENABLE_SUBARRAY,
291 CORRELATOR_NOISE_OFF,
294 DagTransientNode(xercesc::DOMElement *elem);
295 std::string print()
const;
296 void update(
const DagMLNodeUpdateInfo &info);
299 enum DagTransientNode::Conditions getCondition()
const;
300 int getSubarrayNumber()
const;
303 enum DagTransientNode::Conditions condition_;
304 std::string subarray_;
312 class DagIfNode :
public DagMLNode
315 DagIfNode(xercesc::DOMElement *elem);
316 std::string print()
const;
317 void update(
const DagMLNodeUpdateInfo &info);
321 bool isValid()
const;
324 bool allowPassThrough();
337 bool allow_pass_through_;
344 class DagVarmapScopeNode :
public DagMLNode
347 DagVarmapScopeNode(xercesc::DOMElement *elem);
348 std::string print()
const;
349 void update(
const DagMLNodeUpdateInfo &info);
353 bool isValid()
const;
359 void addToVariableMap(VariableMap &varmap,
bool &changed);
363 void setSubstitution(
const std::string &s);
380 class DagBadNode :
public DagMLNode
383 DagBadNode(xercesc::DOMElement *elem);
384 std::string print()
const;
385 void update(
const DagMLNodeUpdateInfo &info);
389 enum DagMLNode::EffectBits getErrorBit()
const;
392 enum DagMLNode::EffectBits bit_;
400 inline std::ostream&
operator<<(std::ostream &os,
const DagMLNode &node)
402 return os << node.print();
405 inline std::ostream&
operator<<(std::ostream &os,
const enum DagMLNode::EffectBits &bit)
410 case DagMLNode::EFFECT_NONE:
413 case DagMLNode::EFFECT_DRIVE:
416 case DagMLNode::EFFECT_MONITORDATA:
419 case DagMLNode::EFFECT_OFFLINE:
422 case DagMLNode::EFFECT_PHASELOCK:
std::ostream & operator<<(::std::ostream &os, const carma::dbms::Table &table)
Classes that provide the pecializations of monitor points and sense poiints for different datatypes...
Abstract base class for all monitor points.
The monitor system base class.
Abstract base class for a monitor point.
Byte value (unsigned char) monitor point.
Monitor system base class.
type definitions for monitor system