1 #ifndef SZA_UTIL_MONITORPOINT_H
2 #define SZA_UTIL_MONITORPOINT_H
18 #include "carma/szaarrayutils/szaregs.h"
22 #define MONITOR_CONDITION_HANDLER(fn) void (fn)(void* arg, bool satisfied, std::string message, std::string comment)
27 class ArrayMapDataFrameManager;
30 class RegMapDataFrameManager;
38 MonitorPoint(ArrayMapDataFrameManager* frame, ArrRegMap* regMap,
39 RegMapBlock* block, CoordRange* range=0);
40 MonitorPoint(ArrayMapDataFrameManager* frame, ArrRegMap* regMap,
42 MonitorPoint(ArrayMapDataFrameManager* frame, ArrRegMap* regMap,
43 RegMapBlock* block,
int index);
45 void setTo(ArrayMapDataFrameManager* frame, ArrRegMap* regMap,
46 RegMapBlock* block,
int index);
47 void setTo(ArrayMapDataFrameManager* frame, ArrRegMap* regMap,
48 RegMapBlock* block, CoordRange* range=0);
50 MonitorPoint(RegMapDataFrameManager* frame, RegMapBlock* block, CoordRange* range=0);
51 MonitorPoint(RegMapDataFrameManager* frame, RegMapBlock* block);
52 MonitorPoint(RegMapDataFrameManager* frame, RegMapBlock* block,
int index);
54 void setTo(RegMapDataFrameManager* frame, RegMapBlock* block,
int index);
55 void setTo(RegMapDataFrameManager* frame, RegMapBlock* block, CoordRange* range=0);
62 virtual ~MonitorPoint();
67 inline RegMapBlock* block() {
75 void writeReg(
bool isSim, type var, sza::util::CoordRange* range=0)
77 CoordRange* rng = range==0 ? &coordRange_ : range;
80 arrMapFm_->writeReg(regMap_, block_, var, rng);
82 regMapFm_->writeReg(block_, var, rng);
86 if(handlerCount_ > 0) {
93 checkHandlers(isSim, axisRange_);
95 AxisRange axisRange(block_->axes_, range);
96 checkHandlers(isSim, axisRange);
104 void writeDcReg(
bool isSim,
float f, sza::util::CoordRange* range=0);
109 template <
class type>
110 void readReg(type ptr, sza::util::CoordRange* range=0)
112 CoordRange* rng = range==0 ? &coordRange_ : range;
115 arrMapFm_->readReg(regMap_, block_, ptr, rng);
117 regMapFm_->readReg(block_, ptr, rng);
122 void registerConditionHandler(MONITOR_CONDITION_HANDLER(*handler),
126 MonitorCondition& condition,
128 CoordRange* coordRange=0);
134 struct ConditionHandler
136 MonitorCondition condition_;
137 MONITOR_CONDITION_HANDLER(*handler_);
139 std::string message_;
140 std::string comment_;
142 unsigned packetCount_;
143 unsigned stablePacketCount_;
144 unsigned giveUpPacketCount_;
148 ConditionHandler(
const ConditionHandler& handler);
149 ConditionHandler(ConditionHandler& handler);
150 void operator=(ConditionHandler& handler);
151 void operator=(
const ConditionHandler& handler);
152 bool operator==(
const ConditionHandler& handler);
153 void callHandler(
bool conditionWasMet);
154 bool checkCondition(
bool isSim, DataType& dataType);
157 std::string format(std::string& reg);
162 inline CoordRange coordRange() {
166 inline AxisRange axisRange() {
173 std::string format(std::string& reg);
197 CoordRange coordRange_;
201 AxisRange axisRange_;
205 ArrayMapDataFrameManager* arrMapFm_;
206 RegMapDataFrameManager* regMapFm_;
223 std::vector<std::list<ConditionHandler> > handlers_;
235 void checkHandlers(
bool isSim, AxisRange& range);
239 void updateHandlerCount(
int count);
247 #endif // End #ifndef SZA_UTIL_MONITORPOINT_H
Tagged: Tue Jun 22 22:32:16 UTC 2004.
Tagged: Wed Sep 1 03:59:25 UTC 2004.
Tagged: Sat Aug 14 13:12:19 UTC 2004.
Tagged: Sun Oct 24 17:05:09 PDT 2004.
Tagged: Tue Oct 5 13:18:11 PDT 2004.