8 #include "otsdaq-components/DetectorHardware/FSSRROCDefinitions.h"
9 #include "otsdaq-core/BitManipulator/BitManipulator.h"
11 #include "otsdaq-core/Macros/CoutMacros.h"
20 FSSRROCDefinitions::FSSRROCDefinitions()
24 FSSRROCDefinitions::~FSSRROCDefinitions (
void)
28 unsigned int FSSRROCDefinitions::getDACRegisterAddress(
const std::string& registerName)
30 if (registerName ==
"PulserData" )
return 1;
31 else if (registerName ==
"PulserControl")
return 2;
32 else if (registerName ==
"IntegratorVbn")
return 3;
33 else if (registerName ==
"ShaperVbp2" )
return 4;
34 else if (registerName ==
"ShaperVbp1" )
return 5;
35 else if (registerName ==
"BLRestorer" )
return 6;
36 else if (registerName ==
"VTn" )
return 7;
37 else if (registerName ==
"VTp0" )
return 8;
38 else if (registerName ==
"VTp1" )
return 9;
39 else if (registerName ==
"VTp2" )
return 10;
40 else if (registerName ==
"VTp3" )
return 11;
41 else if (registerName ==
"VTp4" )
return 12;
42 else if (registerName ==
"VTp5" )
return 13;
43 else if (registerName ==
"VTp6" )
return 14;
44 else if (registerName ==
"VTp7" )
return 15;
45 else if (registerName ==
"ActiveLines" )
return 16;
46 else if (registerName ==
"SendData" )
return 19;
47 else if (registerName ==
"RejectHits" )
return 20;
48 else if (registerName ==
"DigContrReg" )
return 27;
49 else if (registerName ==
"AqBCO" )
return 30;
51 else if (registerName ==
"Kill" )
return 17;
52 else if (registerName ==
"Inject" )
return 18;
55 std::cout << __COUT_HDR_FL__ <<
" Register Name not recognized!" << std::endl;
62 uint64_t FSSRROCDefinitions::makeDACWriteHeader(
int chipId,
const std::string& registerName)
64 return makeDACHeader(chipId, registerName, write);
68 uint64_t FSSRROCDefinitions::makeDACSetHeader(
int chipId,
const std::string& registerName)
70 return makeDACHeader(chipId, registerName, set);
74 uint64_t FSSRROCDefinitions::makeDACResetHeader(
int chipId,
const std::string& registerName)
76 return makeDACHeader(chipId, registerName, reset);
80 uint64_t FSSRROCDefinitions::makeDACReadHeader(
int chipId,
const std::string& registerName)
82 return makeDACHeader(chipId, registerName, read);
86 uint64_t FSSRROCDefinitions::makeDACHeader(
int chipId,
const std::string& registerName,
unsigned int instruction)
97 uint32_t command = 0x80000000;
98 uint32_t registerAddress = getDACRegisterAddress(registerName);
100 BitManipulator::insertBits(command,chipId,0,5);
102 BitManipulator::insertBits(command,registerAddress,5,5);
104 BitManipulator::insertBits(command,instruction,10,3);
108 unsigned int length = 3;
109 if ( registerAddress < 16 || registerAddress < 27 || registerAddress < 30)
111 else if ( registerAddress == 17 || registerAddress == 18 )
113 else if ( registerAddress == 16 )
115 else if ( registerAddress == 19 || registerAddress == 20 )
118 BitManipulator::insertBits(command,length,24,7);
124 uint64_t FSSRROCDefinitions::makeDACWriteCommand(
int chipId,
const std::string& registerName,
unsigned int valueToWrite)
126 std::cout << __COUT_HDR_FL__ <<
"Working on Register " << registerName <<
" Address: " << getDACRegisterAddress(registerName) <<
" Value: " << valueToWrite << std::endl;
127 uint64_t command = 0;
128 if (registerName !=
"SendData" && registerName !=
"RejectHits")
130 command = makeDACWriteHeader(chipId, registerName);
131 BitManipulator::insertBits(command,BitManipulator::reverseBits(valueToWrite,0,8),13,8);
134 if (valueToWrite == 1)
135 command = makeDACSetHeader(chipId, registerName);
137 command = makeDACResetHeader(chipId, registerName);
144 uint64_t FSSRROCDefinitions::makeDACReadCommand(
int chipId,
const std::string& registerName)
146 return makeDACHeader(chipId, registerName, read);
150 std::string FSSRROCDefinitions::makeMaskWriteCommand (
int chipId,
const std::string& registerName, std::string valueToWrite)
152 std::string command =
"0000000000000000000";
189 uint64_t FSSRROCDefinitions::makeMaskReadCommand (
int chipId,
const std::string& registerName)
195 uint64_t FSSRROCDefinitions::setSendData(
int chipId)
197 return makeDACWriteCommand(chipId,
"SendData", 1);
201 uint64_t FSSRROCDefinitions::resetSendData(
int chipId)
203 return makeDACWriteCommand(chipId,
"SendData", 0);
207 uint64_t FSSRROCDefinitions::setRejectHits(
int chipId)
209 return makeDACWriteCommand(chipId,
"RejectHits", 1);
213 uint64_t FSSRROCDefinitions::resetRejectHits(
int chipId)
215 return makeDACWriteCommand(chipId,
"RejectHits", 0);