1 #ifndef monitor_stream_h
2 #define monitor_stream_h
6 #include "carma/szaarrayutils/arraymap.h"
7 #include "carma/szaarrayutils/regset.h"
8 #include "carma/szaarrayutils/regcal.h"
9 #include "carma/szaarrayutils/regdata.h"
28 #define MS_READ_FRAME(fn) \
29 sza::array::MsReadState (fn)(sza::array::MonitorStream *ms, int dowait)
35 #define MS_SEND_MSG(fn) \
36 sza::array::MsSendState (fn)(sza::array::MonitorStream *ms, int dowait)
45 #define MS_QUEUE_REGSET(fn) \
46 sza::array::MsSendState (fn)(sza::array::MonitorStream *ms)
55 #define MS_QUEUE_INTERVAL(fn) \
56 sza::array::MsSendState (fn)(sza::array::MonitorStream *ms)
66 #define MS_QUEUE_REWIND(fn) \
67 sza::array::MsSendState (fn)(sza::array::MonitorStream *ms)
76 #define MS_SELECT_FD(fn) int (fn)(sza::array::MonitorStream *ms)
82 #define MS_DESTRUCTOR(fn) void *(fn)(void *context)
87 #define MS_ARRAYMAP(fn) ArrayMap *(fn)(sza::array::MonitorStream *ms)
92 #define MS_REGMAP(fn) RegMap *(fn)(sza::array::MonitorStream *ms)
190 typedef struct MonitorStream {
193 MS_DESTRUCTOR(*del_fn);
195 MS_READ_FRAME(*read_fn);
197 MS_SEND_MSG(*send_fn);
200 MS_QUEUE_REGSET(*regset_fn);
203 MS_QUEUE_INTERVAL(*interval_fn);
206 MS_QUEUE_REWIND(*rewind_fn);
208 MS_SELECT_FD(*fd_fn);
209 MS_ARRAYMAP(*arraymap_fn);
221 sza::util::RegisterSet* prepRegSet;
225 sza::util::RegisterSet* regSet;
229 sza::util::RegCal* regCal;
351 sza::array::MonitorStream *new_NetMonitorStream(
char *host);
367 sza::array::MonitorStream *new_FileMonitorStream(
char *dir,
double ta,
double tb);
375 sza::array::MonitorStream *del_MonitorStream(sza::array::MonitorStream *ms);
391 sza::array::MsReadState ms_read_frame(sza::array::MonitorStream *ms,
int dowait);
392 sza::array::MsReadState ms_count_frame(sza::array::MonitorStream *ms,
int dowait);
407 int ms_get_float(sza::array::MonitorStream *ms, sza::util::RegDescription* desc,
408 float *data, sza::util::CoordRange* range=0);
409 int ms_get_double(sza::array::MonitorStream *ms, sza::util::RegDescription* desc,
410 double* data, sza::util::CoordRange* range=0);
411 int ms_get_uint(sza::array::MonitorStream *ms, sza::util::RegDescription* desc,
412 unsigned* data, sza::util::CoordRange* range=0);
413 int ms_get_int(sza::array::MonitorStream *ms, sza::util::RegDescription* desc,
414 int* data, sza::util::CoordRange* range=0);
415 int ms_get_uchar(sza::array::MonitorStream *ms, sza::util::RegDescription* desc,
416 unsigned char* data, sza::util::CoordRange* range=0);
417 int ms_get_char(sza::array::MonitorStream *ms, sza::util::RegDescription* desc,
418 char* data, sza::util::CoordRange* range=0);
419 int ms_get_ulong(sza::array::MonitorStream *ms, sza::util::RegDescription* desc,
420 unsigned long* data, sza::util::CoordRange* range=0);
421 int ms_get_long(sza::array::MonitorStream *ms, sza::util::RegDescription* desc,
422 long* data, sza::util::CoordRange* range=0);
424 int ms_get_date(sza::array::MonitorStream *ms, sza::util::RegDescription* desc,
425 sza::util::RegDate::Data* data, sza::util::CoordRange* range=0);
427 int ms_get_complex_float(sza::array::MonitorStream *ms,
428 sza::util::RegDescription* desc,
429 sza::util::Complex<float>::Data* data,
430 sza::util::CoordRange* range=0);
433 int ms_get_float(sza::array::MonitorStream *ms, sza::util::RegDescription* desc,
436 int ms_get_double(sza::array::MonitorStream *ms, sza::util::RegDescription* desc,
439 int ms_get_uint(sza::array::MonitorStream *ms, sza::util::RegDescription* desc,
442 int ms_get_int(sza::array::MonitorStream *ms, sza::util::RegDescription* desc,
445 int ms_get_uchar(sza::array::MonitorStream *ms, sza::util::RegDescription* desc,
448 int ms_get_char(sza::array::MonitorStream *ms, sza::util::RegDescription* desc,
451 int ms_get_ulong(sza::array::MonitorStream *ms, sza::util::RegDescription* desc,
454 int ms_get_long(sza::array::MonitorStream *ms, sza::util::RegDescription* desc,
457 int ms_get_date(sza::array::MonitorStream *ms, sza::util::RegDescription* desc,
460 int ms_get_complex_float(sza::array::MonitorStream *ms, sza::util::RegDescription* desc,
474 int ms_get_string(sza::array::MonitorStream *ms, sza::util::RegDescription *reg,
unsigned nc,
char *
string);
483 sza::array::MsSendState ms_send_msg(sza::array::MonitorStream *ms,
int dowait);
496 sza::array::MsSendState ms_queue_regset(sza::array::MonitorStream *ms);
506 sza::array::MsSendState ms_queue_interval(sza::array::MonitorStream *ms,
unsigned interval);
514 sza::array::MsSendState ms_queue_rewind(sza::array::MonitorStream *ms);
519 int ms_can_be_rewound(sza::array::MonitorStream *ms);
531 int ms_select_fd(sza::array::MonitorStream *ms);
544 int ms_load_cal_file(sza::array::MonitorStream *ms,
char *dir,
char *name);
550 int ms_load_cal_stream(sza::array::MonitorStream *ms, InputStream *stream);
556 int ms_reset_cal(sza::array::MonitorStream *ms);
563 struct MonitorSelection {
568 std::string regMapStr_;
569 std::string boardStr_;
570 std::string blockStr_;
574 sza::util::CoordRange* range_;
581 void initialize(
int id, std::string regMapName, std::string boardName,
582 std::string blockName, sza::util::CoordRange* range);
586 MonitorSelection(
int id, std::string regMapName, std::string boardName,
587 std::string blockName, sza::util::CoordRange* range=0);
591 MonitorSelection(
const MonitorSelection& selection);
643 sza::array::MsSendState ms_select_regs(sza::array::MonitorStream *ms,
644 bool dowait,
bool pedantic,
645 std::vector<MonitorSelection>& selections,
646 std::vector<sza::util::RegDescription>& regs);
657 ArrayMap *ms_ArrayMap(sza::array::MonitorStream *ms);
664 ArrayMap *ms_ArrayMap(sza::array::MonitorStream *ms);
682 RegRawData *ms_RegRawData(sza::array::MonitorStream *ms);
689 sza::util::RegisterSet* ms_RegSet(sza::array::MonitorStream *ms);
695 unsigned ms_get_interval(sza::array::MonitorStream *ms);
715 sza::util::RegisterSet *ms_prep_RegSet(sza::array::MonitorStream *ms);
729 sza::array::MonitorStream *new_MonitorStream(
bool archivedOnly);
738 int open_MonitorStream(sza::array::MonitorStream *ms,
void *context, MS_DESTRUCTOR(*del_fn),
739 MS_READ_FRAME(*read_fn), MS_SEND_MSG(*send_fn),
740 MS_QUEUE_REGSET(*regset_fn),
741 MS_QUEUE_INTERVAL(*interval_fn),
742 MS_QUEUE_REWIND(*rewind_fn),
743 MS_SELECT_FD(*fd_fn),
744 MS_ARRAYMAP(*arraymap_fn),
752 void *ms_SourceContext(sza::array::MonitorStream *ms);
760 void close_MonitorStream(sza::array::MonitorStream *ms);
Tagged: Fri Oct 1 22:25:34 UTC 2004.
The following structure contains a double precision array having the same dimension as an archive fra...
Tagged: Tue Oct 12 09:13:47 PDT 2004.
Tagged: Wed Oct 6 11:00:37 PDT 2004.
A class for iterating over slot ranges specified in a CoordRange object.
Tagged: Tue Oct 12 10:25:49 PDT 2004.