00001 #include "otsdaq-core/DataDecoders/BCOData.h"
00002
00003 #include <iostream>
00004
00005 using namespace ots;
00006
00007
00008
00009 BCOData::BCOData(void)
00010 {}
00011
00012
00013 BCOData::~BCOData(void)
00014 {}
00015
00016
00017 bool BCOData::isBCOHigh(uint32_t data)
00018 {
00019
00020
00021
00022 if((data & 0xf)==8 && (data & 0xf0)==0x20) return true;
00023 return false;
00024 }
00025
00026
00027 bool BCOData::isBCOLow(uint32_t data)
00028 {
00029
00030
00031
00032 if((data & 0xf)==8 && (data & 0xf0)==0x10) return true;
00033 return false;
00034 }
00035
00036
00037 uint32_t BCOData::decodeBCOHigh(uint32_t data)
00038 {
00039 return (data >> 8) & 0xffffff;
00040 }
00041
00042
00043 uint32_t BCOData::decodeBCOLow(uint32_t data)
00044 {
00045 return (data >> 8) & 0xffffff;
00046 }
00047
00048
00049 uint64_t BCOData::mergeBCOHighAndLow(uint32_t bcoHigh, uint32_t bcoLow)
00050 {
00051 uint64_t bco = 0;
00052 bco |= ((uint64_t)bcoHigh)<<24;
00053 bco |= (uint64_t)bcoLow;
00054 return bco;
00055 }
00056
00057 void BCOData::insertBCOHigh(uint64_t& bco, uint32_t dataBCOHigh)
00058 {
00059 bco |= ((uint64_t)decodeBCOHigh(dataBCOHigh))<<24;
00060 }
00061
00062
00063 void BCOData::insertBCOLow(uint64_t& bco, uint32_t dataBCOLow)
00064 {
00065 bco |= (uint64_t)decodeBCOLow(dataBCOLow);
00066 }
00067