4 #include "carma/szaarrayutils/netbuf.h"
5 #include "carma/szaarrayutils/input.h"
6 #include "carma/szaarrayutils/output.h"
63 REG_RW = REG_R | REG_W,
91 REG_DEFAULT = REG_UINT,
99 REG_STRING = 0x200000,
101 REG_FIRST = 0x400000,
109 #define VME_A16_BASE 0x0
110 #define VME_A24D16_BASE 0x0
111 #define VME_A24D32_BASE 0x0
112 #define VME_A32_BASE 0x0
117 #define REG_NAME_LEN 100
123 typedef struct RegMapBlock RegMapBlock;
124 typedef struct RegMapBoard RegMapBoard;
125 typedef struct RegMap RegMap;
134 char name_[REG_NAME_LEN+1];
135 std::string* comment_;
137 RegAddrMode addr_mode_;
162 unsigned nBytePerEl_;
165 std::string* carmaUnits_;
166 std::vector<std::pair<std::string, std::string> >* carmaErrors_;
168 int carmaValidityBitIndex_;
178 RegMapBlock(RegMapBoard* parent,
void* tbrd,
void* tblk,
179 unsigned iBlock,
unsigned nper_brd_blocks);
195 unsigned nBytePerEl() {
208 return archivedOnly ? byteOffsetInArcRegMapOf(coord) :
209 byteOffsetInWholeRegMapOf(coord);
216 return (
int)(iArcSlot_ + elementOffsetOf(coord));
220 return iSlot_ + (int)elementOffsetOf(coord);
226 return archivedOnly ? slotOffsetInArcRegMapOf(coord) :
227 slotOffsetInWholeRegMapOf(coord);
254 bool isPreAveraged();
255 bool isPostAveraged();
263 void checkConsistency();
268 void checkType(
unsigned flags);
273 void checkIntegration(
unsigned flags);
278 void checkAttributes();
280 friend std::ostream& operator<<(std::ostream& os, RegMapBlock& block);
289 char name[REG_NAME_LEN+1];
290 std::string* comment_;
291 std::vector<RegMapBlock*> blocks;
292 std::map<std::string, RegMapBlock*> blockMap_;
314 int byteOffsetInRegMap(
bool archivedOnly) {
315 return archivedOnly ? iArcByte_ : iByte_;
320 int slotOffsetInRegMap(
bool archivedOnly) {
321 return archivedOnly ? iArcSlot_ : iSlot_;
326 unsigned nByte(
bool archivedOnly) {
327 return archivedOnly ? nArcByte_ : nByte_;
332 RegMapBoard(RegMap* parent,
void* vbrd,
unsigned iboard,
333 void* vper_brd_blocks=0,
unsigned nper_brd_blocks=0);
339 RegMapBlock* findRegMapBlock(std::string blockName);
343 std::vector<RegMapBlock*> matchRegMapBlock(std::string regExpStr);
344 std::vector<RegMapBlock*> matchRegMapBlock(std::vector<std::string>& blocks);
352 std::vector<RegMapBoard*> boards_;
353 std::map<std::string, RegMapBoard*> boardMap_;
364 RegMap(
void *regtmp,
bool old=
false,
bool addRegs=
true);
370 void privateConstructor(
void* regtmp,
bool addRegs=
true);
371 void privateConstructorOld(
void* regtmp);
376 int byteOffsetInArcRegMapOf(std::string board, std::string block,
378 int byteOffsetInWholeRegMapOf(std::string board, std::string block,
383 int byteOffsetInRegMapOf(
bool archivedOnly,
384 std::string board, std::string block,
386 return archivedOnly ? byteOffsetInArcRegMapOf(board, block, coord) :
387 byteOffsetInWholeRegMapOf(board, block, coord);
395 int byteOffsetInRegMapOf(
bool archivedOnly,
398 return archivedOnly ? byteOffsetInArcRegMapOf(blk, coord) :
399 byteOffsetInWholeRegMapOf(blk, coord);
402 unsigned nByte() {
return nByte_;};
403 unsigned nArcByte() {
return nArcByte_;};
407 int nByte(
bool archivedOnly) {
408 return archivedOnly ? nArcByte() : nByte();
413 RegMapBlock* findRegMapBlock(std::string board_name, std::string block_name,
423 RegMap* del_RegMap(RegMap* regmap);
429 RegMap *alias_RegMap(RegMap *regmap);
433 int equiv_RegMap(RegMap *regmap1, RegMap *regmap2);
435 RegMapBoard *find_RegMapBoard(RegMap *regmap, std::string board_name);
436 RegMapBlock *find_RegMapBoard_Block(RegMapBoard *board, std::string block_name);
437 RegMapBlock *find_RegMapBlock(RegMap *regmap, std::string board_name,
438 std::string block_name);
472 enum {REG_NASPECT = 8};
474 char *name_RegAspect(RegAspect aspect);
483 enum {REG_NINTEG = 4};
485 char *name_RegInteg(RegInteg integ);
531 unsigned nBytePerEl_;
534 sza::util::CoordRange* range_;
537 int find_RegMapReg(RegMap *regmap, std::string board_name, std::string block_name,
538 RegAspect facet,
unsigned index,
unsigned n,
541 int init_RegMapReg(RegMap *regmap,
unsigned board,
unsigned block,
542 unsigned index,
unsigned nreg, RegAspect aspect,
551 RegValidity input_RegMapReg(InputStream *stream,
int tell, RegMap *regmap,
552 RegInputMode mode,
int extend, RegMapReg *reg);
563 int output_RegMapReg(OutputStream *stream, RegMap *regmap, RegOutputMode mode,
566 void clr_RegMapReg(RegMapReg *reg);
573 int pack_int_string(
char *
string,
int ndata,
unsigned *data);
578 int unpack_int_string(
unsigned *data,
int ndata,
int size,
char *
string);
584 int unpack_double_string(
double *data,
int ndata,
int size,
char *
string);
Class for managing coordinate axes.
Tagged: Thu Jun 24 17:38:28 UTC 2004.
A class for specifying a coordinate in a multi-dimensional space.
Tagged: Thu Jun 24 17:19:46 UTC 2004.