#include <DifReader.hh>
Inheritance diagram for DifReader:
Public Member Functions | |
DifReader (Run &aRun, FILE *aFile, ui32 firstEventId) | |
unsigned int | getBinData (const int nBytes) |
unsigned char * | getBinData (const int nBytes, unsigned char *data) |
unsigned int | getData (const int nBytes) |
unsigned char * | getData (const int nBytes, unsigned char *data) |
void | setDisplay () |
int | Error () |
void | display (const int inc=0) |
void | Level (const int l) |
int & | Level () |
Protected Types | |
typedef std::map< i32, i64 > | BcIdDifAbsOrgMap_t |
Protected Member Functions | |
unsigned char * | initGetBits (const int bufLen, const bool binaryFile) |
void | finishGetBits () |
unsigned int | getBit () |
unsigned int | getBits (const int nBits) |
int | seekSyncBits (unsigned int sync, const int nBits) |
int | getBitBufferData (void *buffer, const int len) |
void | putData (const unsigned int data, const int nBytes) |
void | putData (const unsigned char *buf, const int nBytes) |
void | putBinData (const unsigned char *buf, const int nBytes) |
const i64 | getbcIdAbsOrg (const i32 difId, const i64 bcIdAbs) |
Protected Attributes | |
int | fileError |
int | displayData |
int | level |
int | line |
std::ostringstream | dataBuf |
i64 | globalTime |
BcIdDifAbsOrgMap_t | bcIdDifAbsOrgMap |
Private Member Functions | |
unsigned char * | getBitData () |
Private Attributes | |
unsigned char * | bitBuffer |
int | bitBufCount |
int | bitByteIdx |
int | bitIdx |
bool | bitBinaryFile |
Definition at line 45 of file DifReader.hh.
typedef std::map<i32, i64> DifReader::BcIdDifAbsOrgMap_t [protected] |
Definition at line 94 of file DifReader.hh.
DifReader::DifReader | ( | Run & | aRun, | |
FILE * | aFile, | |||
ui32 | firstEventId | |||
) |
Definition at line 40 of file DifReader.cpp.
00040 : AcquisitionParser(aRun, aFile, firstEventId) 00041 { 00042 fileError = 0; 00043 displayData = (FILELog::ReportingLevel() >= logDEBUG) ? 1 : 0; 00044 level = 0; 00045 line = 0; 00046 bitBuffer = (unsigned char *)NULL; 00047 }; // DifReader
unsigned int DifReader::getBinData | ( | const int | nBytes | ) |
Definition at line 50 of file DifReader.cpp.
Referenced by DiracReader::getAcqData(), getBitData(), DiracReader::getConfigData(), and DiracReader::getNextEvent().
00050 { 00051 unsigned int result = 0; 00052 fileError = 0; 00053 for (int byte = 0; byte < nBytes; ++byte) { 00054 unsigned char data = 0; 00055 if (fread((void *)&data, sizeof(unsigned char), 1, inputFile) != 1) { 00056 //FILE_LOG(logERROR) << "getBinData : error " << errno << endl; 00057 fileError = EOF; 00058 return(0); 00059 } 00060 result = (result << 8) + data; 00061 } 00062 00063 putData(result, nBytes); 00064 return(result); 00065 }; // DifReader.getBinData
unsigned char * DifReader::getBinData | ( | const int | nBytes, | |
unsigned char * | data | |||
) |
Definition at line 69 of file DifReader.cpp.
00069 { 00070 unsigned int result = 0; 00071 fileError = 0; 00072 if (fread(buf, sizeof(unsigned char), nBytes, inputFile) != nBytes) { 00073 *buf = 0; 00074 FILE_LOG(logERROR) << "getBinData : error " << errno << endl; 00075 fileError = EOF; 00076 return(0); 00077 } 00078 buf[nBytes] = 0; 00079 putBinData(buf, nBytes); 00080 return(buf); 00081 }; // DifReader.getBinData
unsigned int DifReader::getData | ( | const int | nBytes | ) |
Definition at line 84 of file DifReader.cpp.
Referenced by MicrorocLabviewReader::getAcqData(), Hardroc2XdaqReader::getAcqData(), Hardroc2LabviewReader::getAcqData(), Hardroc1Reader::getAcqData(), DifSynchroReader::getAcqData(), MicrorocLabviewReader::getAnalogData(), getBitData(), MicrorocLabviewReader::getNextEvent(), Hardroc2XdaqReader::getNextEvent(), Hardroc2LabviewReader::getNextEvent(), Hardroc1Reader::getNextEvent(), DifSynchroReader::getNextEvent(), MicrorocLabviewReader::getScData(), Hardroc2XdaqReader::getScData(), Hardroc2LabviewReader::getScData(), Hardroc1Reader::getScData(), and DifSynchroReader::getScData().
00084 { 00085 unsigned int result = 0; 00086 fileError = 0; 00087 for (int byte = 0; byte < nBytes; ++byte) { 00088 int data = 0; 00089 if (fscanf(inputFile, "%2x", &data) != 1) { 00090 //FILE_LOG(logERROR) << "getData : error " << errno << endl; 00091 fileError = EOF; 00092 return 0; 00093 } 00094 if ( computeCrc ) { 00095 crc->compute(data) ; 00096 } 00097 result = (result << 8) + data; 00098 } 00099 00100 putData(result, nBytes); 00101 return(result); 00102 } // DifReader.getData
unsigned char * DifReader::getData | ( | const int | nBytes, | |
unsigned char * | data | |||
) |
Definition at line 105 of file DifReader.cpp.
00105 { 00106 unsigned char *bufStr = buf; 00107 fileError = 0; 00108 for (int byte = 0; byte < nBytes; ++byte) { 00109 int data = 0; 00110 if (fscanf(inputFile, "%2x", &data) != 1) { 00111 FILE_LOG(logERROR) << "getData : error " << errno << endl; 00112 *bufStr = 0; 00113 fileError = EOF; 00114 return(0); 00115 } 00116 *bufStr++ = data; 00117 00118 if ( computeCrc ) { 00119 crc->compute(data) ; 00120 } 00121 00122 } 00123 *bufStr = 0; 00124 putBinData(buf, nBytes); 00125 return(buf); 00126 } // DifReader.getData
unsigned char * DifReader::getBitData | ( | ) | [private] |
Definition at line 129 of file DifReader.cpp.
Referenced by initGetBits().
00129 { 00130 unsigned char *res; 00131 res = (bitBinaryFile) ? getBinData(bitBufCount, bitBuffer) 00132 : getData(bitBufCount, bitBuffer); 00133 display(); 00134 return(res); 00135 } // DifReader.getBitData
unsigned char * DifReader::initGetBits | ( | const int | bufLen, | |
const bool | binaryFile | |||
) | [protected] |
Definition at line 139 of file DifReader.cpp.
Referenced by MicrorocLabviewReader::getScData(), Hardroc2LabviewReader::getScData(), Hardroc1Reader::getScData(), and DifSynchroReader::getScData().
00139 { 00140 bitBuffer = (unsigned char*)malloc(bufLen + 1); 00141 if (!bitBuffer) { 00142 return 0; 00143 } 00144 bitIdx = 8; 00145 bitBufCount = bufLen; 00146 bitByteIdx = 0; 00147 bitBinaryFile = binaryFile; 00148 if (!getBitData()) { 00149 FILE_LOG(logERROR) << "InitGetBits : error " << errno << endl; 00150 return 0; 00151 } 00152 return bitBuffer; 00153 } // DifReader.initGetBits
void DifReader::finishGetBits | ( | ) | [protected] |
Definition at line 157 of file DifReader.cpp.
Referenced by MicrorocLabviewReader::getScData(), Hardroc2LabviewReader::getScData(), Hardroc1Reader::getScData(), and DifSynchroReader::getScData().
00157 { 00158 bitBufCount = 0; 00159 if (bitBuffer) 00160 free(bitBuffer); 00161 bitBuffer = NULL; 00162 } // DifReader.finishGetBits
unsigned int DifReader::getBit | ( | ) | [protected] |
Definition at line 167 of file DifReader.cpp.
Referenced by seekSyncBits().
00167 { 00168 unsigned int bit = (bitBuffer[bitByteIdx] & masks[bitIdx - 1]) >> (bitIdx - 1); 00169 bitIdx--; 00170 if (!bitIdx) { 00171 bitIdx = 8; 00172 bitByteIdx++; 00173 if (bitByteIdx == bitBufCount) { 00174 // getBitData(); 00175 bitByteIdx = 0; 00176 } 00177 } 00178 return bit; 00179 } // DifReader.getBit
unsigned int DifReader::getBits | ( | const int | nBits | ) | [protected] |
Definition at line 183 of file DifReader.cpp.
Referenced by MicrorocLabviewReader::getScData(), Hardroc2LabviewReader::getScData(), Hardroc1Reader::getScData(), DifSynchroReader::getScData(), and seekSyncBits().
00183 { 00184 unsigned int val = 0; 00185 int i = N; 00186 unsigned int j; 00187 00188 while (i) { 00189 j = (bitBuffer[bitByteIdx] & masks[bitIdx - 1]) >> (bitIdx - 1); 00190 bitIdx--; 00191 if (!bitIdx) { 00192 bitIdx = 8; 00193 bitByteIdx++; 00194 if (bitByteIdx == bitBufCount) { 00195 // FILE_LOG(logERROR) << "getBits : refill buffer i = " << i << ", bitByteIdx = " << bitByteIdx << ", bitBufCount = " << bitBufCount << endl; 00196 // getBitData(); 00197 bitByteIdx = 0; 00198 } 00199 } 00200 val = (val << 1) | j; 00201 i--; 00202 } 00203 return val; 00204 } // DifReader.getBits
int DifReader::seekSyncBits | ( | unsigned int | sync, | |
const int | nBits | |||
) | [protected] |
Definition at line 210 of file DifReader.cpp.
00210 { 00211 unsigned int val, val1; 00212 unsigned int maxi = 0xFFFFFFFF; 00213 00214 while (bitIdx != 8) { 00215 val = getBit(); 00216 // if () // error case 00217 // return 0; 00218 } 00219 00220 val = getBits(N); 00221 // if () // error case 00222 // return 0; 00223 00224 while ((val & maxi) != sync) { 00225 val <<= 8; 00226 val1 = getBits(8); 00227 // if () // error case 00228 // return 0; 00229 val |= val1; 00230 } 00231 return 1; 00232 } // DifReader.seekSyncBits
int DifReader::getBitBufferData | ( | void * | buffer, | |
const int | len | |||
) | [protected] |
Definition at line 235 of file DifReader.cpp.
00235 { 00236 if (len < bitByteIdx) { 00237 memcpy(buffer, bitBuffer, len); 00238 bitByteIdx -= len; 00239 memcpy(bitBuffer, bitBuffer + len, bitByteIdx); 00240 return len; 00241 } 00242 else { 00243 int lg = bitByteIdx; 00244 memcpy(buffer, bitBuffer, bitByteIdx); 00245 bitByteIdx = 0; 00246 return lg; 00247 } 00248 } // DifReader.getBitBufferData
void DifReader::setDisplay | ( | ) | [inline] |
int DifReader::Error | ( | ) | [inline] |
void DifReader::display | ( | const int | inc = 0 |
) |
Definition at line 288 of file DifReader.cpp.
Referenced by MicrorocXDaqReader::getAcqData(), MicrorocLabviewReader::getAcqData(), Hardroc2XdaqReader::getAcqData(), Hardroc2LabviewReader::getAcqData(), Hardroc1Reader::getAcqData(), DiracReader::getAcqData(), getBitData(), DiracReader::getConfigData(), MicrorocLabviewReader::getNextEvent(), Hardroc2XdaqReader::getNextEvent(), Hardroc2LabviewReader::getNextEvent(), Hardroc1Reader::getNextEvent(), DiracReader::getNextEvent(), DifSynchroReader::getNextEvent(), MicrorocLabviewReader::getScData(), Hardroc2XdaqReader::getScData(), Hardroc2LabviewReader::getScData(), Hardroc1Reader::getScData(), and DifSynchroReader::getScData().
00288 { 00289 line++; 00290 if (inc < 0) { 00291 level += inc; 00292 if (level < 0) level = 0; 00293 } 00294 if (dataBuf.str().length() != 0) { 00295 FILE_LOG(logDEBUG) << "----display-----: " << setfill(' ') << setw(level * 2) << "" << dataBuf.str() << endl; 00296 } 00297 if (inc > 0) 00298 level += inc; 00299 dataBuf.str(""); 00300 } // DifReader.display
void DifReader::Level | ( | const int | l | ) | [inline] |
int& DifReader::Level | ( | ) | [inline] |
Definition at line 80 of file DifReader.hh.
Referenced by MicrorocLabviewReader::getNextEvent(), Hardroc2XdaqReader::getNextEvent(), Hardroc2LabviewReader::getNextEvent(), Hardroc1Reader::getNextEvent(), MicrorocXDaqReader::getNextEvent(), DiracReader::getNextEvent(), and DifSynchroReader::getNextEvent().
00080 { return(level); };
void DifReader::putData | ( | const unsigned int | data, | |
const int | nBytes | |||
) | [protected] |
Definition at line 251 of file DifReader.cpp.
Referenced by getBinData(), MicrorocXDaqReader::getData(), and getData().
00251 { 00252 if (!displayData) 00253 return; 00254 dataBuf << hex << setw(nBytes * 2) << setfill('0') << result; 00255 if (nBytes > 1) 00256 dataBuf << " "; 00257 // display(); 00258 } // DifReader.putData
void DifReader::putData | ( | const unsigned char * | buf, | |
const int | nBytes | |||
) | [protected] |
Definition at line 261 of file DifReader.cpp.
00261 { 00262 if (!displayData) 00263 return; 00264 if (nBytes > 4) 00265 dataBuf << "("<< dec << nBytes << "):"; 00266 dataBuf << buf; 00267 if (nBytes > 1) 00268 dataBuf << " "; 00269 // display(); 00270 } // DifReader.putData
void DifReader::putBinData | ( | const unsigned char * | buf, | |
const int | nBytes | |||
) | [protected] |
Definition at line 273 of file DifReader.cpp.
Referenced by getBinData(), and getData().
00273 { 00274 if (!displayData) 00275 return; 00276 if (nBytes > 4) 00277 dataBuf << "(" << dec << nBytes << "):"; 00278 for (int byte = 0; byte < nBytes; byte++) { 00279 dataBuf << hex << setw(2) << setfill('0') << (int)(*buf); 00280 buf++; 00281 } 00282 if (nBytes > 1) 00283 dataBuf << " "; 00284 // display(); 00285 } // DifReader.putBinData
const i64 DifReader::getbcIdAbsOrg | ( | const i32 | difId, | |
const i64 | bcIdAbs | |||
) | [protected] |
Definition at line 303 of file DifReader.cpp.
Referenced by MicrorocXDaqReader::getAcqData(), MicrorocLabviewReader::getAcqData(), Hardroc2XdaqReader::getAcqData(), Hardroc2LabviewReader::getAcqData(), Hardroc1Reader::getAcqData(), and DiracReader::getAcqData().
00303 { 00304 BcIdDifAbsOrgMap_t::iterator it = bcIdDifAbsOrgMap.find(difId); 00305 if (it == bcIdDifAbsOrgMap.end()) { 00306 FILE_LOG(logDEBUG) << " set bc origin (dif 0x" << hex << difId << dec << ")=" << bcIdAbs << endl; 00307 bcIdDifAbsOrgMap[difId] = bcIdAbs; 00308 return(bcIdAbs); 00309 } 00310 return(it->second); 00311 } // DifReader.getbcIdAbsOrg
unsigned char* DifReader::bitBuffer [private] |
Definition at line 56 of file DifReader.hh.
Referenced by DifReader(), finishGetBits(), getBit(), getBitBufferData(), getBitData(), getBits(), and initGetBits().
int DifReader::bitBufCount [private] |
Definition at line 57 of file DifReader.hh.
Referenced by finishGetBits(), getBit(), getBitData(), getBits(), and initGetBits().
int DifReader::bitByteIdx [private] |
Definition at line 58 of file DifReader.hh.
Referenced by getBit(), getBitBufferData(), getBits(), and initGetBits().
int DifReader::bitIdx [private] |
Definition at line 59 of file DifReader.hh.
Referenced by getBit(), getBits(), initGetBits(), and seekSyncBits().
bool DifReader::bitBinaryFile [private] |
int DifReader::fileError [protected] |
Definition at line 80 of file DifReader.hh.
Referenced by DifReader(), Error(), MicrorocXDaqReader::getAcqData(), MicrorocLabviewReader::getAcqData(), Hardroc2XdaqReader::getAcqData(), Hardroc2LabviewReader::getAcqData(), Hardroc1Reader::getAcqData(), DifSynchroReader::getAcqData(), getBinData(), MicrorocXDaqReader::getData(), getData(), MicrorocLabviewReader::getNextEvent(), Hardroc2XdaqReader::getNextEvent(), Hardroc2LabviewReader::getNextEvent(), Hardroc1Reader::getNextEvent(), DiracReader::getNextEvent(), and DifSynchroReader::getNextEvent().
int DifReader::displayData [protected] |
Definition at line 85 of file DifReader.hh.
Referenced by DifReader(), putBinData(), putData(), and setDisplay().
int DifReader::level [protected] |
int DifReader::line [protected] |
Definition at line 87 of file DifReader.hh.
Referenced by DifReader(), display(), MicrorocXDaqReader::getAcqData(), MicrorocLabviewReader::getAnalogData(), MicrorocLabviewReader::getScData(), and MicrorocLabviewReader::MicrorocLabviewReader().
std::ostringstream DifReader::dataBuf [protected] |
i64 DifReader::globalTime [protected] |
Definition at line 93 of file DifReader.hh.
Referenced by MicrorocXDaqReader::getAcqData(), MicrorocLabviewReader::getAcqData(), Hardroc2XdaqReader::getAcqData(), Hardroc2LabviewReader::getAcqData(), Hardroc1Reader::getAcqData(), MicrorocLabviewReader::getNextEvent(), Hardroc2LabviewReader::getNextEvent(), Hardroc1Reader::getNextEvent(), MicrorocXDaqReader::getNextEvent(), DiracReader::getNextEvent(), DifSynchroReader::getNextEvent(), Hardroc1Reader::getScData(), MicrorocReader::newHit(), Hardroc2Reader::newHit(), Hardroc1Reader::newHit(), DiracReader::newHit(), MicrorocReader::reset(), Hardroc2Reader::reset(), and Hardroc1Reader::reset().
BcIdDifAbsOrgMap_t DifReader::bcIdDifAbsOrgMap [protected] |
Definition at line 95 of file DifReader.hh.
Referenced by getbcIdAbsOrg(), MicrorocLabviewReader::getNextEvent(), Hardroc2XdaqReader::getNextEvent(), Hardroc2LabviewReader::getNextEvent(), Hardroc1Reader::getNextEvent(), MicrorocXDaqReader::getNextEvent(), DiracReader::getNextEvent(), and DifSynchroReader::getNextEvent().