9 #ifndef RAWHEADER_LATEST_H
10 #define RAWHEADER_LATEST_H
14 #include <rawdata/switch_basf2_standalone.h>
166 MAGIC_WORD = 0x7F7F0000,
167 MAGIC_MASK = 0xFFFF0000,
169 FORMAT_VERSION__MASK = 0x0000FF00,
170 FORMAT_VERSION_SHIFT = 8
174 EXP_MASK = 0xFFC00000,
176 RUNNO_MASK = 0x003FFF00,
178 SUBRUNNO_MASK = 0x000000FF
182 RAWHEADER_NWORDS = 12
186 HDR_NWORDS_MASK = 0x000000FF
192 POS_VERSION_HDRNWORDS = 1,
195 POS_TTCTIME_TRGTYPE = 4,
198 POS_TRUNC_MASK_DATATYPE = 7,
199 POS_OFFSET_1ST_FINESSE = 8,
200 POS_OFFSET_2ND_FINESSE = 9,
201 POS_OFFSET_3RD_FINESSE = 10,
202 POS_OFFSET_4TH_FINESSE = 11,
222 TTCTIME_MASK = 0x7FFFFFF0,
230 B2LINK_PACKET_CRC_ERROR = 0x1,
231 B2LINK_EVENT_CRC_ERROR = 0x2
247 B2FATAL(
"m_buffer is NULL. Exiting...");
254 B2FATAL(
"m_buffer is NULL. Data is corrupted or header info has not yet filled. Exiting...");
277 m_buffer[ POS_NODE_ID ] = (int)node_id;
283 m_buffer[ POS_TRUNC_MASK_DATATYPE ] =
284 (data_type & 0x7FFFFFFF) | (
m_buffer[ POS_TRUNC_MASK_DATATYPE ] & 0x80000000);
290 m_buffer[ POS_TRUNC_MASK_DATATYPE ] = (trunc_mask << 31) | (
m_buffer[ POS_TRUNC_MASK_DATATYPE ] & 0x7FFFFFFF);
303 m_buffer[ POS_OFFSET_1ST_FINESSE ] = offset_1st_FINESSE;
309 m_buffer[ POS_OFFSET_2ND_FINESSE ] = offset_2nd_FINESSE;
315 m_buffer[ POS_OFFSET_3RD_FINESSE ] = offset_3rd_FINESSE;
321 m_buffer[ POS_OFFSET_4TH_FINESSE ] = offset_4th_FINESSE;
335 m_buffer[ POS_TTCTIME_TRGTYPE ] = word1;
344 memcpy(&(
m_buffer[ POS_EXP_RUN_NO ]), (
char*)exprun_buf,
sizeof(
int) * 1);
364 return RAWHEADER_NWORDS;
370 return (((
unsigned int)(
m_buffer[ POS_EXP_RUN_NO ]) & EXP_MASK)
378 return (((
unsigned int)(
m_buffer[ POS_EXP_RUN_NO ]) & RUNNO_MASK)
385 return (
m_buffer[ POS_EXP_RUN_NO ] & SUBRUNNO_MASK);
391 return ((
unsigned int)(
m_buffer[ POS_EXP_RUN_NO ]));
404 return (
unsigned int)
m_buffer[ POS_NODE_ID ];
410 return (
m_buffer[ POS_TRUNC_MASK_DATATYPE ] & 0x7FFFFFFF);
416 return (
m_buffer[ POS_TRUNC_MASK_DATATYPE ] >> 23) & 0x1;
422 return (
unsigned int)(
m_buffer[ POS_TRUNC_MASK_DATATYPE ]);
428 m_buffer[ POS_TRUNC_MASK_DATATYPE ] |= (int)error_bit_flag;
436 if ((temp_err_flag & B2LINK_PACKET_CRC_ERROR) == 0) {
446 if ((temp_err_flag & B2LINK_EVENT_CRC_ERROR) == 0) {
455 return m_buffer[ POS_OFFSET_1ST_FINESSE ];
461 return m_buffer[ POS_OFFSET_2ND_FINESSE ];
467 return m_buffer[ POS_OFFSET_3RD_FINESSE ];
473 return m_buffer[ POS_OFFSET_4TH_FINESSE ];
485 return (
unsigned int)(
m_buffer[ POS_TTCTIME_TRGTYPE ]);
503 return (
unsigned int)(
m_buffer[ POS_TTUTIME ]);
509 tv->tv_usec = (int)(((
double)
GetTTCtime()) / 127.216);