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 }