8 #include "otsdaq-components/DetectorHardware/FSSRROCDefinitions.h"
9 #include "otsdaq/BitManipulator/BitManipulator.h"
14 #include "otsdaq/Macros/CoutMacros.h"
19 FSSRROCDefinitions::FSSRROCDefinitions() { ; }
22 FSSRROCDefinitions::~FSSRROCDefinitions(
void) {}
25 unsigned int FSSRROCDefinitions::getDACRegisterAddress(
const std::string& registerName)
27 if(registerName ==
"PulserData")
29 else if(registerName ==
"PulserControl")
31 else if(registerName ==
"IntegratorVbn")
33 else if(registerName ==
"ShaperVbp2")
35 else if(registerName ==
"ShaperVbp1")
37 else if(registerName ==
"BLRestorer")
39 else if(registerName ==
"VTn")
41 else if(registerName ==
"VTp0")
43 else if(registerName ==
"VTp1")
45 else if(registerName ==
"VTp2")
47 else if(registerName ==
"VTp3")
49 else if(registerName ==
"VTp4")
51 else if(registerName ==
"VTp5")
53 else if(registerName ==
"VTp6")
55 else if(registerName ==
"VTp7")
57 else if(registerName ==
"ActiveLines")
59 else if(registerName ==
"SendData")
61 else if(registerName ==
"RejectHits")
63 else if(registerName ==
"DigContrReg")
65 else if(registerName ==
"AqBCO")
68 else if(registerName ==
"Kill")
70 else if(registerName ==
"Inject")
74 std::cout << __COUT_HDR_FL__ <<
" Register Name not recognized!" << std::endl;
81 uint64_t FSSRROCDefinitions::makeDACWriteHeader(
int chipId,
82 const std::string& registerName)
84 return makeDACHeader(chipId, registerName, write);
88 uint64_t FSSRROCDefinitions::makeDACSetHeader(
int chipId,
const std::string& registerName)
90 return makeDACHeader(chipId, registerName, set);
94 uint64_t FSSRROCDefinitions::makeDACResetHeader(
int chipId,
95 const std::string& registerName)
97 return makeDACHeader(chipId, registerName, reset);
101 uint64_t FSSRROCDefinitions::makeDACReadHeader(
int chipId,
102 const std::string& registerName)
104 return makeDACHeader(chipId, registerName, read);
108 uint64_t FSSRROCDefinitions::makeDACHeader(
int chipId,
109 const std::string& registerName,
110 unsigned int instruction)
121 uint32_t command = 0x80000000;
122 uint32_t registerAddress = getDACRegisterAddress(registerName);
124 BitManipulator::insertBits(command, chipId, 0, 5);
126 BitManipulator::insertBits(command, registerAddress, 5, 5);
128 BitManipulator::insertBits(command, instruction, 10, 3);
132 unsigned int length = 3;
133 if(registerAddress < 16 || registerAddress < 27 || registerAddress < 30)
135 else if(registerAddress == 17 || registerAddress == 18)
137 else if(registerAddress == 16)
139 else if(registerAddress == 19 || registerAddress == 20)
142 BitManipulator::insertBits(command, length, 24, 7);
148 uint64_t FSSRROCDefinitions::makeDACWriteCommand(
int chipId,
149 const std::string& registerName,
150 unsigned int valueToWrite)
152 std::cout << __COUT_HDR_FL__ <<
"Working on Register " << registerName
153 <<
" Address: " << getDACRegisterAddress(registerName)
154 <<
" Value: " << valueToWrite << std::endl;
155 uint64_t command = 0;
156 if(registerName !=
"SendData" && registerName !=
"RejectHits")
158 command = makeDACWriteHeader(chipId, registerName);
159 BitManipulator::insertBits(
160 command, BitManipulator::reverseBits(valueToWrite, 0, 8), 13, 8);
162 else if(valueToWrite == 1)
163 command = makeDACSetHeader(chipId, registerName);
165 command = makeDACResetHeader(chipId, registerName);
173 uint64_t FSSRROCDefinitions::makeDACReadCommand(
int chipId,
174 const std::string& registerName)
176 return makeDACHeader(chipId, registerName, read);
180 std::string FSSRROCDefinitions::makeMaskWriteCommand(
int chipId,
181 const std::string& registerName,
182 std::string valueToWrite)
184 std::string command =
"0000000000000000000";
220 uint64_t FSSRROCDefinitions::makeMaskReadCommand(
int chipId,
221 const std::string& registerName)
227 uint64_t FSSRROCDefinitions::setSendData(
int chipId)
229 return makeDACWriteCommand(chipId,
"SendData", 1);
233 uint64_t FSSRROCDefinitions::resetSendData(
int chipId)
235 return makeDACWriteCommand(chipId,
"SendData", 0);
239 uint64_t FSSRROCDefinitions::setRejectHits(
int chipId)
241 return makeDACWriteCommand(chipId,
"RejectHits", 1);
245 uint64_t FSSRROCDefinitions::resetRejectHits(
int chipId)
247 return makeDACWriteCommand(chipId,
"RejectHits", 0);