00001 #include "RtmReadoutFormat/RtmData.h"
00002 #include "RtmReadoutFormat/RtmTraits.h"
00003
00004 #include "DaqReadoutFormat/ByteBuffer.h"
00005
00006 using DybDaq::RtmData;
00007
00008 RtmData::RtmData(const unsigned int rpcCFId,
00009 const bool transErr,
00010 const bool romAlmostFull,
00011 const bool rtmAlmostFull,
00012 const bool fullFlag,
00013 const bool validGPS,
00014 const bool validCLK,
00015 const bool usingUTC,
00016 const unsigned int second,
00017 const unsigned int nanoSecond,
00018 const unsigned int accumulation,
00019 const unsigned int triggerRot,
00020 const unsigned int triggerMap,
00021 const RtmTraits& traits)
00022 : RtmBuffer(new char[ traits.rtmSize() * kBytesInInt ], traits)
00023 {
00024 traits.initializeRtm( buffer() );
00025 setRpcCFId(rpcCFId);
00026 setTransErr(transErr);
00027 setRomAlmostFull(romAlmostFull);
00028 setRtmAlmostFull(rtmAlmostFull);
00029 setFullFlag(fullFlag);
00030 setValidGPS(validGPS);
00031 setValidCLK(validCLK);
00032 setUsingUTC(usingUTC);
00033 setSecond(second);
00034 setNanoSecond(nanoSecond);
00035 setAccumulation(accumulation);
00036 setTriggerRot(triggerRot);
00037 setTriggerMap(triggerMap);
00038 }
00039
00040 RtmData::RtmData(const ByteBuffer& byteBuffer, const RtmTraits& traits)
00041 : RtmBuffer(byteBuffer, traits)
00042 {
00043 byteBuffer.position( byteBuffer.position() + rtmTraits().rtmSize() * kBytesInInt );
00044 }
00045
00046 RtmData::~RtmData()
00047 {
00048 }
00049
00050 unsigned int RtmData::formatComponent() const {
00051 return RtmTraits::kData;
00052 }
00053
00054 unsigned int RtmData::rpcCFId() const {
00055 return readUnsignedInt(RtmTraits::kRpcCFId);
00056 }
00057
00058 bool RtmData::transErr() const {
00059 return readBool(RtmTraits::kTransErr);
00060 }
00061
00062 bool RtmData::romAlmostFull() const {
00063 return readBool(RtmTraits::kRomAlmostFull);
00064 }
00065
00066 bool RtmData::rtmAlmostFull() const {
00067 return readBool(RtmTraits::kRtmAlmostFull);
00068 }
00069
00070 bool RtmData::fullFlag() const {
00071 return readBool(RtmTraits::kFullFlag);
00072 }
00073
00074 bool RtmData::validGPS() const {
00075 return readBool(RtmTraits::kValidGPS);
00076 }
00077
00078 bool RtmData::validCLK() const {
00079 return readBool(RtmTraits::kValidCLK);
00080 }
00081
00082 bool RtmData::usingUTC() const {
00083 return readBool(RtmTraits::kUsingUTC);
00084 }
00085
00086 unsigned int RtmData::second() const {
00087 return readUnsignedInt(RtmTraits::kSecond);
00088 }
00089
00090 unsigned int RtmData::nanoSecond() const {
00091 return readUnsignedInt(RtmTraits::kNanoSecond);
00092 }
00093
00094 unsigned int RtmData::accumulation() const {
00095 return readUnsignedInt(RtmTraits::kAccumulation);
00096 }
00097
00098 unsigned int RtmData::triggerRot() const {
00099 return readUnsignedInt(RtmTraits::kTriggerRot);
00100 }
00101
00102 unsigned int RtmData::triggerMap() const {
00103 return readUnsignedInt(RtmTraits::kTriggerMap);
00104 }
00105
00106
00107 unsigned int RtmData::bufferSize() const {
00108 return rtmTraits().rtmSize();
00109 }
00110
00111
00112 void RtmData::setRpcCFId(const unsigned int rpcCFId) {
00113 writeField( rpcCFId, RtmTraits::kRpcCFId );
00114 }
00115
00116 void RtmData::setTransErr(const bool transErr) {
00117 writeField( transErr, RtmTraits::kTransErr);
00118 }
00119
00120 void RtmData::setRomAlmostFull(const bool romAlmostFull) {
00121 writeField( romAlmostFull, RtmTraits::kRomAlmostFull);
00122 }
00123
00124 void RtmData::setRtmAlmostFull(const bool rtmAlmostFull) {
00125 writeField( rtmAlmostFull, RtmTraits::kRtmAlmostFull);
00126 }
00127
00128 void RtmData::setFullFlag(const bool fullFlag) {
00129 writeField( fullFlag, RtmTraits::kFullFlag);
00130 }
00131
00132 void RtmData::setValidGPS(const bool validGPS) {
00133 writeField( validGPS, RtmTraits::kValidGPS);
00134 }
00135
00136 void RtmData::setValidCLK(const bool validCLK) {
00137 writeField( validCLK, RtmTraits::kValidCLK);
00138 }
00139
00140 void RtmData::setUsingUTC(const bool usingUTC) {
00141 writeField( usingUTC, RtmTraits::kUsingUTC);
00142 }
00143
00144 void RtmData::setSecond(const unsigned int second) {
00145 writeField( second, RtmTraits::kSecond);
00146 }
00147
00148 void RtmData::setNanoSecond(const unsigned int nanoSecond) {
00149 writeField( nanoSecond, RtmTraits::kNanoSecond);
00150 }
00151
00152 void RtmData::setAccumulation(const unsigned int accumulation) {
00153 writeField( accumulation, RtmTraits::kAccumulation);
00154 }
00155
00156 void RtmData::setTriggerRot(const unsigned int triggerRot) {
00157 writeField( triggerRot, RtmTraits::kTriggerRot);
00158 }
00159
00160 void RtmData::setTriggerMap(const unsigned int triggerMap) {
00161 writeField( triggerMap, RtmTraits::kTriggerMap);
00162 }