1 #ifndef _ots_FSSRFirmware_h_
2 #define _ots_FSSRFirmware_h_
7 #include "otsdaq-components/DAQHardware/FirmwareSequence.h"
8 #include "otsdaq-components/DetectorConfiguration/ROCStream.h"
47 class FrontEndFirmwareBase;
53 FSSRFirmwareBase (
const std::string& communicationFirmwareType,
unsigned int communicationFirmwareVersion = -1,
unsigned int version = -1);
57 std::string universalRead (
char* address);
58 std::string universalWrite (
char* address,
char* data);
61 uint32_t createRegisterFromValue (std::string& readBuffer, std::string& receivedValue);
64 std::string configureClocks (std::string source,
double frequency);
65 std::string resetDetector (
int channel=-1);
66 std::string enableTrigger (
void);
70 void resetDCM (std::string& buffer);
71 void alignReadOut (std::string& buffer,
unsigned int sensor,
unsigned int chip);
77 void makeDACBuffer (std::string& buffer,
unsigned int channel,
const ROCStream& rocStream);
78 void makeDACBuffer (std::vector<std::string>& buffer,
unsigned int channel,
const ROCStream& rocStream);
79 void makeMaskBuffer (std::string& buffer,
unsigned int channel,
const ROCStream& rocStream);
80 void setFrequencyFromClockState (std::string& buffer,
double frequency);
81 bool isClockStateExternal (
void);
83 std::string readFromAddress (uint64_t address);
86 std::string resetBCO (
void);
87 std::string armBCOReset (
void);
88 std::string startStream (
bool channel0,
bool channel1,
bool channel2,
bool channel3,
bool channel4,
bool channel5);
89 std::string stopStream (
void);
94 void makeMaskBuffer (std::string& buffer,
unsigned int channel,
const ROCStream& rocStream,
const std::string& registerName);
96 void setCSRRegister (uint32_t total);
126 uint32_t stripCSRRegisterValue_;
127 void setPacketSizeStripCSR (uint32_t size);
128 void enableChannelsStripCSR (
bool channel0,
bool channel1,
bool channel2,
bool channel3,
bool channel4,
bool channel5);
129 void setExternalBCOClockSourceStripCSR(std::string clockSource);
131 void armBCOResetCSR (
void);
132 void flushBuffersStripCSR (
void);
133 void resetTriggerCounterStripCSR (std::string& buffer);
134 void resetBCOCounterStripCSR (
void);
135 void enableTriggerStripCSR (
bool enable);
136 void sendTriggerDataStripCSR (
bool send);
137 void sendTriggerNumberStripCSR (
bool send);
138 void sendBCOStripCSR (
bool send);
139 void enableStreamStripCSR (
bool enable);
140 void resetDCMStripCSR (
bool clear);
141 uint32_t waitDCMResetStripCSR (
void);
142 std::string readCSRRegister (
void);
144 std::string readSCCSRRegister (
void);
146 uint32_t stripResetRegisterValue_;
148 void resetStripResetRegisterValue(
void)
150 stripResetRegisterValue_ = 0;
152 void resetDAC (
void);
153 void resetLink (
bool channel0,
bool channel1,
bool channel2,
bool channel3,
bool channel4,
bool channel5);
154 void clearErrors (
bool channel0,
bool channel1,
bool channel2,
bool channel3,
bool channel4,
bool channel5);
155 void clearFIFO (
bool channel0,
bool channel1,
bool channel2,
bool channel3,
bool channel4,
bool channel5);
156 void resetChip (
bool channel0,
bool channel1,
bool channel2,
bool channel3,
bool channel4,
bool channel5);
158 uint32_t stripBCODCMRegisterValue_;
159 void setFrequencyRatio (std::string& buffer,
int numerator,
int denominator);
161 void configureStripTriggerUnbiased (std::string& buffer);
162 void configureTriggerInputs (std::string& buffer);
165 uint32_t stripTriggerCSRRegisterValue_;
168 void BCOOffset (uint32_t offset);
169 void selectSpyFIFO (uint32_t input);
170 void halt (
bool halt);
173 std::string resetSlaveBCO(
void);
175 static const std::string PURDUE_FIRMWARE_NAME;
176 static const std::string OTS_FIRMWARE_NAME;
181 unsigned int version_;
182 const std::string communicationFirmwareType_;