otsdaq  v1_01_02
 All Classes Namespaces Functions
BCOData.cc
1 #include "otsdaq-core/DataDecoders/BCOData.h"
2 
3 #include <iostream>
4 
5 using namespace ots;
6 
7 
8 //========================================================================================================================
9 BCOData::BCOData(void)
10 {}
11 
12 //========================================================================================================================
13 BCOData::~BCOData(void)
14 {}
15 
16 //========================================================================================================================
17 bool BCOData::isBCOHigh(uint32_t data)
18 {
19  //int type = data & 0xf;
20  //int dataType = (data>>4) & 0xf;
21  //if(type==8 && dataType==2) return true;
22  if((data & 0xf)==8 && (data & 0xf0)==0x20) return true;
23  return false;
24 }
25 
26 //========================================================================================================================
27 bool BCOData::isBCOLow(uint32_t data)
28 {
29  //int type = data&0x0f;
30  //int dataType = (data>>4)&0x0f;
31  //if(type==8 && dataType==1) return true;
32  if((data & 0xf)==8 && (data & 0xf0)==0x10) return true;
33  return false;
34 }
35 
36 //========================================================================================================================
37 uint32_t BCOData::decodeBCOHigh(uint32_t data)
38 {
39  return (data >> 8) & 0xffffff;
40 }
41 
42 //========================================================================================================================
43 uint32_t BCOData::decodeBCOLow(uint32_t data)
44 {
45  return (data >> 8) & 0xffffff;
46 }
47 
48 //========================================================================================================================
49 uint64_t BCOData::mergeBCOHighAndLow(uint32_t bcoHigh, uint32_t bcoLow)
50 {
51  uint64_t bco = 0;
52  bco |= ((uint64_t)bcoHigh)<<24;
53  bco |= (uint64_t)bcoLow;
54  return bco;
55 }
56 //========================================================================================================================
57 void BCOData::insertBCOHigh(uint64_t& bco, uint32_t dataBCOHigh)
58 {
59  bco |= ((uint64_t)decodeBCOHigh(dataBCOHigh))<<24;
60 }
61 
62 //========================================================================================================================
63 void BCOData::insertBCOLow(uint64_t& bco, uint32_t dataBCOLow)
64 {
65  bco |= (uint64_t)decodeBCOLow(dataBCOLow);
66 }
67