1 #ifndef _ots_FSSRFirmware_h_
2 #define _ots_FSSRFirmware_h_
6 #include "otsdaq-components/DAQHardware/FirmwareSequence.h"
7 #include "otsdaq-components/DetectorConfiguration/ROCStream.h"
52 class FrontEndFirmwareBase;
58 unsigned int communicationFirmwareVersion = -1,
59 unsigned int version = -1);
63 std::string universalRead(
char* address);
64 std::string universalWrite(
char* address,
char* data);
70 uint32_t createRegisterFromValue(std::string& readBuffer, std::string& receivedValue);
73 std::string configureClocks(std::string source,
double frequency);
74 std::string resetDetector(
int channel = -1);
75 std::string enableTrigger(
void);
79 void resetDCM(std::string& buffer);
80 void alignReadOut(std::string& buffer,
unsigned int sensor,
unsigned int chip);
100 void makeMaskBuffer(std::string& buffer,
101 unsigned int channel,
103 void setFrequencyFromClockState(std::string& buffer,
double frequency);
104 bool isClockStateExternal(
void);
106 std::string readFromAddress(uint64_t address);
109 std::string resetBCO(
void);
110 std::string armBCOReset(
void);
111 std::string startStream(
bool channel0,
117 std::string stopStream(
void);
120 unsigned int channel,
122 const std::string& registerName);
124 unsigned int channel,
126 const std::string& registerName);
127 void makeMaskBuffer(std::string& buffer,
128 unsigned int channel,
130 const std::string& registerName);
132 void setCSRRegister(uint32_t total);
162 uint32_t stripCSRRegisterValue_;
163 void setPacketSizeStripCSR(uint32_t size);
164 void enableChannelsStripCSR(
bool channel0,
170 void setExternalBCOClockSourceStripCSR(std::string clockSource);
173 void armBCOResetCSR(
void);
174 void flushBuffersStripCSR(
void);
175 void resetTriggerCounterStripCSR(std::string& buffer);
176 void resetBCOCounterStripCSR(
void);
177 void enableTriggerStripCSR(
bool enable);
178 void sendTriggerDataStripCSR(
bool send);
179 void sendTriggerNumberStripCSR(
bool send);
180 void sendBCOStripCSR(
bool send);
181 void enableStreamStripCSR(
bool enable);
182 void resetDCMStripCSR(
bool clear);
183 uint32_t waitDCMResetStripCSR(
void);
184 std::string readCSRRegister(
void);
186 std::string readSCCSRRegister(
void);
188 uint32_t stripResetRegisterValue_;
190 void resetStripResetRegisterValue(
void) { stripResetRegisterValue_ = 0; }
192 void resetLink(
bool channel0,
198 void clearErrors(
bool channel0,
204 void clearFIFO(
bool channel0,
210 void resetChip(
bool channel0,
217 uint32_t stripBCODCMRegisterValue_;
218 void setFrequencyRatio(std::string& buffer,
int numerator,
int denominator);
220 void configureStripTriggerUnbiased(std::string& buffer);
221 void configureTriggerInputs(std::string& buffer);
224 uint32_t stripTriggerCSRRegisterValue_;
227 void BCOOffset(uint32_t offset);
228 void selectSpyFIFO(uint32_t input);
229 void halt(
bool halt);
231 std::string resetSlaveBCO(
void);
233 static const std::string PURDUE_FIRMWARE_NAME;
234 static const std::string OTS_FIRMWARE_NAME;
239 unsigned int version_;
240 const std::string communicationFirmwareType_;
void makeDACBuffer(std::string &buffer, unsigned int channel, const ROCStream &rocStream)