DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
wibmod
src
WIB1
WIB_FAKE_CD.cpp
Go to the documentation of this file.
1
#include "
wibmod/WIB1/WIB.hh
"
2
#include "
wibmod/WIB1/WIBException.hh
"
3
4
void
WIB::ConfigWIBFakeData
(
bool
enableFakeFEMB1,
bool
enableFakeFEMB2,
5
bool
enableFakeFEMB3,
bool
enableFakeFEMB4,
6
bool
counter) {
// counter==true: counter instead of COLDATA frame, else samples in COLDATA frame
7
8
if
(
DAQMode
==
FELIX
){
9
//Don't allow fake mode on only half of a FELIX link
10
if
((enableFakeFEMB1 ^ enableFakeFEMB2) || (enableFakeFEMB3 ^ enableFakeFEMB4)) {
11
BUException::WIB_FAKE_DATA_ON_HALF_FELIX_LINK e;
12
throw
e;
13
}
14
}
15
16
//Setup the FEMBs/Links
17
for
(
size_t
iFEMB = 1; iFEMB <=
FEMBCount
; iFEMB++){
18
for
(
size_t
iCDA = 1; iCDA <=
FEMBCDACount
; iCDA++){
19
SetFEMBFakeCOLDATAMode
(iFEMB, iCDA, counter);
20
}
21
}
22
23
for
(
size_t
iStream = 1; iStream <=
FEMBStreamCount
; iStream++){
24
SetFEMBStreamSource
(1, iStream, !enableFakeFEMB1);
25
SetFEMBStreamSource
(2, iStream, !enableFakeFEMB2);
26
SetFEMBStreamSource
(3, iStream, !enableFakeFEMB3);
27
SetFEMBStreamSource
(4, iStream, !enableFakeFEMB4);
28
}
29
30
uint64_t enableWord1 = 0;
31
uint64_t enableWord2 = 0;
32
uint64_t enableWord3 = 0;
33
uint64_t enableWord4 = 0;
34
if
(enableFakeFEMB1) enableWord1 = 0xF;
35
if
(enableFakeFEMB2) enableWord2 = 0xF;
36
if
(enableFakeFEMB3) enableWord3 = 0xF;
37
if
(enableFakeFEMB4) enableWord4 = 0xF;
38
SourceFEMB
(1,enableWord1);
39
SourceFEMB
(2,enableWord2);
40
SourceFEMB
(3,enableWord3);
41
SourceFEMB
(4,enableWord4);
42
}
43
44
uint8_t
WIB::GetFEMBStreamSource
(uint8_t iFEMB,uint8_t iStream){
45
CheckFEMBStreamInRange
(iStream);
46
std::string base =
"FEMB0.DAQ.FAKE_CD.RX_DATA_SOURCE"
;
47
base[4] =
GetFEMBChar
(iFEMB);
48
//Read the current settings
49
uint32_t data =
Read
(base);
50
return
(data >> (iStream -1))&0x1;
51
}
52
void
WIB::SetFEMBStreamSource
(uint8_t iFEMB,uint8_t iStream,
bool
real){
53
CheckFEMBStreamInRange
(iStream);
54
std::string base =
"FEMB0.DAQ.FAKE_CD.RX_DATA_SOURCE"
;
55
base[4] =
GetFEMBChar
(iFEMB);
56
//Read the current settings
57
uint32_t data =
Read
(base);
58
//update the mask
59
iStream--;
// iStream is 1-4, but we want bits 0 to 3
60
if
(real){
61
data &= ~(0x1<<iStream);
62
}
else
{
63
data |= 0x1<<iStream;
64
}
65
Write
(base,data);
66
}
67
68
void
WIB::SetFEMBFakeCOLDATAMode
(uint8_t iFEMB,uint8_t iCD,
bool
mode){
69
std::string base(
"FEMB0.DAQ.FAKE_CD.CD0."
);
70
base[4] =
GetFEMBChar
(iFEMB);
71
base[20] =
GetFEMBCDChar
(iCD);
72
73
//Set this COLDATA ASIC
74
Write
(base+
"FAKE_MODE"
,uint32_t(mode));
75
}
76
77
uint8_t
WIB::GetFEMBFakeCOLDATAMode
(uint8_t iFEMB,uint8_t iCD){
78
std::string base(
"FEMB0.DAQ.FAKE_CD.CD0."
);
79
base[4] =
GetFEMBChar
(iFEMB);
80
base[20] =
GetFEMBCDChar
(iCD);
81
82
return
Read
(base+
"FAKE_MODE"
);
83
}
WIBException.hh
WIB.hh
WIBBase::Read
uint32_t Read(uint16_t address)
Definition
WIBBase.cpp:119
WIBBase::Write
void Write(uint16_t address, uint32_t value)
Definition
WIBBase.cpp:132
WIB::CheckFEMBStreamInRange
bool CheckFEMBStreamInRange(uint8_t iStream)
Definition
WIB.cpp:585
WIB::FELIX
@ FELIX
Definition
WIB.hh:208
WIB::FEMBCDACount
uint8_t FEMBCDACount
Definition
WIB.hh:234
WIB::GetFEMBFakeCOLDATAMode
uint8_t GetFEMBFakeCOLDATAMode(uint8_t iFEMB, uint8_t iCD)
Definition
WIB_FAKE_CD.cpp:77
WIB::GetFEMBCDChar
char GetFEMBCDChar(uint8_t iCD)
Definition
WIB.cpp:603
WIB::FEMBStreamCount
uint8_t FEMBStreamCount
Definition
WIB.hh:233
WIB::SetFEMBStreamSource
void SetFEMBStreamSource(uint8_t iFEMB, uint8_t iStream, bool real=true)
Definition
WIB_FAKE_CD.cpp:52
WIB::GetFEMBStreamSource
uint8_t GetFEMBStreamSource(uint8_t iFEMB, uint8_t iStream)
Definition
WIB_FAKE_CD.cpp:44
WIB::DAQMode
WIB_DAQ_t DAQMode
Definition
WIB.hh:231
WIB::SourceFEMB
void SourceFEMB(uint64_t iDAQLink, uint64_t real)
Definition
WIB.cpp:626
WIB::SetFEMBFakeCOLDATAMode
void SetFEMBFakeCOLDATAMode(uint8_t iFEMB, uint8_t iCD, bool mode=0)
Definition
WIB_FAKE_CD.cpp:68
WIB::FEMBCount
uint8_t FEMBCount
Definition
WIB.hh:232
WIB::ConfigWIBFakeData
void ConfigWIBFakeData(bool enableFakeFEMB1, bool enableFakeFEMB2, bool enableFakeFEMB3, bool enableFakeFEMB4, bool counter)
Definition
WIB_FAKE_CD.cpp:4
WIB::GetFEMBChar
char GetFEMBChar(uint8_t iFEMB)
Definition
WIB.cpp:556
Generated on
for DUNE-DAQ by
1.17.0