10 #define RAWHEADER_V0_H
14 #include <rawdata/switch_basf2_standalone.h>
162 FORMAT_VERSION__MASK = 0x0000FF00,
163 FORMAT_VERSION_SHIFT = 8
167 EXP_MASK = 0xFFC00000,
169 RUNNO_MASK = 0x003FFF00,
171 SUBRUNNO_MASK = 0x000000FF
175 RAWHEADER_NWORDS = 20
184 POS_TTCTIME_TRGTYPE = 4,
187 POS_TRUNC_MASK_DATATYPE = 7,
188 POS_OFFSET_1ST_FINESSE = 8,
189 POS_OFFSET_2ND_FINESSE = 9,
190 POS_OFFSET_3RD_FINESSE = 10,
191 POS_OFFSET_4TH_FINESSE = 11,
210 MAGIC_WORD_TERM_HEADER = 0x7fff0005
215 TTCTIME_MASK = 0x7FFFFFF0,
233 B2FATAL(
"m_buffer is NULL. Exiting...");
240 B2FATAL(
"m_buffer is NULL. Data is corrupted or header info has not yet filled. Exiting...");
241 }
else if (
m_buffer[ POS_TERM_HEADER ] != MAGIC_WORD_TERM_HEADER) {
242 B2FATAL(
"magic word is invalid(0x" << std::hex <<
m_buffer[ POS_TERM_HEADER ] <<
"," <<
m_buffer <<
" pos " << std::dec <<
244 <<
"). Data is corrupted or header info has not yet filled. Exiting...");
256 memset(
m_buffer, 0,
sizeof(
int)*RAWHEADER_NWORDS);
257 m_buffer[ POS_HDR_NWORDS ] = RAWHEADER_NWORDS;
264 m_buffer[ POS_TERM_HEADER ] = MAGIC_WORD_TERM_HEADER;
289 m_buffer[ POS_TRUNC_MASK_DATATYPE ] =
290 (data_type & 0x7FFFFFFF) | (
m_buffer[ POS_TRUNC_MASK_DATATYPE ] & 0x80000000);
296 m_buffer[ POS_TRUNC_MASK_DATATYPE ] = (trunc_mask << 31) | (
m_buffer[ POS_TRUNC_MASK_DATATYPE ] & 0x7FFFFFFF);
309 m_buffer[ POS_OFFSET_1ST_FINESSE ] = offset_1st_FINESSE;
315 m_buffer[ POS_OFFSET_2ND_FINESSE ] = offset_2nd_FINESSE;
321 m_buffer[ POS_OFFSET_3RD_FINESSE ] = offset_3rd_FINESSE;
327 m_buffer[ POS_OFFSET_4TH_FINESSE ] = offset_4th_FINESSE;
341 m_buffer[ POS_TTCTIME_TRGTYPE ] = word1;
350 memcpy(&(
m_buffer[ POS_EXP_RUN_NO ]), (
char*)exprun_buf,
sizeof(
int) * 1);
376 return (((
unsigned int)(
m_buffer[ POS_EXP_RUN_NO ]) & EXP_MASK)
384 return (((
unsigned int)(
m_buffer[ POS_EXP_RUN_NO ]) & RUNNO_MASK)
391 return (
m_buffer[ POS_EXP_RUN_NO ] & SUBRUNNO_MASK);
397 return ((
unsigned int)(
m_buffer[ POS_EXP_RUN_NO ]));
410 return (
unsigned int)(
m_buffer[ POS_NODE_ID ]);
416 return (
m_buffer[ POS_TRUNC_MASK_DATATYPE ] & 0x7FFFFFFF);
422 return (
m_buffer[ POS_TRUNC_MASK_DATATYPE ] >> 23) & 0x1;
428 return (
unsigned int)(
m_buffer[ POS_TRUNC_MASK_DATATYPE ]);
434 m_buffer[ POS_TRUNC_MASK_DATATYPE ] |= (int)error_bit_flag;
441 return m_buffer[ POS_OFFSET_1ST_FINESSE ];
447 return m_buffer[ POS_OFFSET_2ND_FINESSE ];
453 return m_buffer[ POS_OFFSET_3RD_FINESSE ];
459 return m_buffer[ POS_OFFSET_4TH_FINESSE ];
471 return (
unsigned int)(
m_buffer[ POS_TTCTIME_TRGTYPE ]);
490 return (
unsigned int)(
m_buffer[ POS_TTUTIME ]);
496 tv->tv_usec = (int)(((
double)
GetTTCtime()) / 127.216);