10#pragma GCC diagnostic push
11#pragma GCC diagnostic ignored "-Wpedantic"
17#pragma GCC diagnostic pop
28 WIB(std::string
const & address, std::string
const & WIBAddressTable =
"WIB.adt", std::string
const & FEMBAddressTable =
"FEMB.adt",
bool fullStart=
true);
38 void InitializeDTS(uint8_t PDTSsource = 0,uint8_t clockSource = 0, uint32_t PDTSAlignment_timeout = 0 );
42 void ResetWIBAndCfgDTS(uint8_t localClock,uint8_t PDTS_TGRP, uint8_t PDTSsource = 0, uint32_t PDTSAlignment_timeout = 0);
43 void CheckedResetWIBAndCfgDTS(uint8_t localClock,uint8_t PDTS_TGRP, uint8_t PDTSsource = 0, uint32_t PDTSAlignment_timeout = 0);
44 void StartStreamToDAQ(
bool l1=
true,
bool l2=
true,
bool l3=
false,
bool l4=
false);
49 void FEMBPower(uint8_t iFEMB,
bool turnOn);
50 void SourceFEMB(uint64_t iDAQLink,uint64_t real);
57 void WriteQSFP(uint16_t address,uint32_t value,uint8_t byte_count);
58 uint32_t
ReadQSFP(uint16_t address,uint8_t byte_count);
61 void WriteDTS_CDS(uint16_t address,uint32_t value,uint8_t byte_count = 4,
bool ignore_error =
false);
62 uint32_t
ReadDTS_CDS(uint16_t address,uint8_t byte_count = 4);
66 void WriteDTS_SI5344(uint16_t address,uint32_t value,uint8_t byte_count = 4);
77 void WriteDAQ_SI5342(uint16_t address,uint32_t value,uint8_t byte_count = 4);
87 std::vector<uint128_t>
CaptureHistory(std::string
const & address,
size_t wordCount);
93 void WriteLocalFlash(uint16_t address,std::vector<uint32_t>
const & data);
98 void ReadFlash(std::string
const & fileName,uint8_t update_percentage = 101);
99 void WriteFlash(std::vector<uint32_t> data,uint8_t update_percentage = 101);
100 void ProgramFlash(std::string
const & fileName,uint8_t update_percentage = 101);
102 void CheckFlash(std::vector<uint32_t> data,uint8_t update_percentage = 101);
120 bool TryFEMBPhases(uint8_t iFEMB, std::vector<uint16_t> phases);
121 bool HuntFEMBPhase(uint8_t iFEMB, uint16_t clk_phase_data_start);
146 void ConfigFEMB(uint8_t iFEMB, std::vector<uint32_t> fe_config, std::vector<uint16_t> clk_phases,
147 uint8_t pls_mode=0, uint8_t pls_dac_val=0, uint8_t start_frame_mode_sel=1, uint8_t start_frame_swap=1);
157 void ConfigFEMBFakeData(uint8_t iFEMB, uint8_t fake_mode, uint32_t fake_word, uint8_t femb_number,
158 std::vector<uint32_t> fake_samples, uint8_t start_frame_mode_sel=1, uint8_t start_frame_swap=1);
159 void ConfigFEMBMode(uint8_t iFEMB, uint32_t pls_cs, uint32_t dac_sel, uint32_t fpga_dac, uint32_t asic_dac, uint32_t mon_cs);
177 uint16_t
SetupFEMBASICs(uint8_t iFEMB, uint8_t gain, uint8_t shape, uint8_t highBaseline,
178 bool highLeakage,
bool leakagex10,
bool acCoupling,
bool buffer,
bool useExtClock,
179 uint8_t internalDACControl, uint8_t internalDACValue);
193 uint16_t
SetupFEMBASICs(uint8_t iFEMB, std::vector<uint32_t> registerList);
197 bool enableFakeFEMB3,
bool enableFakeFEMB4,
unsigned __int128 uint128_t
bool TryFEMBPhases(uint8_t iFEMB, std::vector< uint16_t > phases)
uint32_t ReadDAQ_SI5342(uint16_t address, uint8_t byte_count=4)
void EraseFlash(bool print_updates=false)
bool CheckFEMBStreamInRange(uint8_t iStream)
bool ContinueOnFEMBRegReadError
uint32_t ReadDTS_SI5344(uint16_t address, uint8_t byte_count=4)
void ResetWIB(bool reset_udp=false)
void EnableDAQLink(uint8_t iDAQLink)
void LoadConfigDTS_SI5344(std::string const &fileName)
void ConfigFEMB(uint8_t iFEMB, std::vector< uint32_t > fe_config, std::vector< uint16_t > clk_phases, uint8_t pls_mode=0, uint8_t pls_dac_val=0, uint8_t start_frame_mode_sel=1, uint8_t start_frame_swap=1)
Setup FEMB in real or pulser data mode.
std::vector< uint32_t > CaptureHistory(std::string const &address)
uint8_t GetDTS_SI5344AddressPage(uint16_t address)
void CheckedResetWIBAndCfgDTS(uint8_t localClock, uint8_t PDTS_TGRP, uint8_t PDTSsource=0, uint32_t PDTSAlignment_timeout=0)
uint8_t GetFEMBFakeCOLDATAMode(uint8_t iFEMB, uint8_t iCD)
void SetContinueOnFEMBSyncError(bool enable)
bool ContinueOnFEMBSyncError
char GetFEMBCDChar(uint8_t iCD)
void ConfigFEMBMode(uint8_t iFEMB, uint32_t pls_cs, uint32_t dac_sel, uint32_t fpga_dac, uint32_t asic_dac, uint32_t mon_cs)
void InitializeDTS(uint8_t PDTSsource=0, uint8_t clockSource=0, uint32_t PDTSAlignment_timeout=0)
void WriteQSFP(uint16_t address, uint32_t value, uint8_t byte_count)
uint8_t GetDTS_SI5344Page()
void StopEventBuilder(uint8_t mask=0xF)
std::vector< data_8b10b_t > ReadOutCDLinkSpyBuffer()
void WriteFlash(std::vector< uint32_t > data, uint8_t update_percentage=101)
void SetupFEMBExtClock(uint8_t iFEMB)
Setup FEMB External Clock.
void SetDTS_SI5344Page(uint8_t page)
void ConfigFEMBFakeData(uint8_t iFEMB, uint8_t fake_mode, uint32_t fake_word, uint8_t femb_number, std::vector< uint32_t > fake_samples, uint8_t start_frame_mode_sel=1, uint8_t start_frame_swap=1)
Setup FEMB in fake data mode.
bool ContinueOnFEMBSPIError
void StartEventBuilder(uint8_t mask=0xF)
void ResetWIBAndCfgDTS(uint8_t localClock, uint8_t PDTS_TGRP, uint8_t PDTSsource=0, uint32_t PDTSAlignment_timeout=0)
char GetDAQLinkChar(uint8_t iDAQLink)
void WriteDTS_SI5344(uint16_t address, uint32_t value, uint8_t byte_count=4)
void EnableDAQLink_Lite(uint8_t iDAQLink, uint8_t enable)
uint8_t GetDAQ_SI5342Page()
void SetFEMBStreamSource(uint8_t iFEMB, uint8_t iStream, bool real=true)
void SelectSI5344(uint64_t input, bool enable)
uint8_t GetFEMBStreamSource(uint8_t iFEMB, uint8_t iStream)
uint32_t ReadLocalFlash(uint16_t address)
bool HuntFEMBPhase(uint8_t iFEMB, uint16_t clk_phase_data_start)
void SetContinueIfListOfFEMBClockPhasesDontSync(bool enable)
uint32_t ReadDTS_CDS(uint16_t address, uint8_t byte_count=4)
void ReadFlash(std::string const &fileName, uint8_t update_percentage=101)
void SelectSI5342(uint64_t input, bool enable)
void SetupInternalPulser(uint8_t iFEMB)
void FEMBPower(uint8_t iFEMB, bool turnOn)
uint8_t GetDAQ_SI5342AddressPage(uint16_t address)
WIB & operator=(const WIB &)
void WriteDAQ_SI5342(uint16_t address, uint32_t value, uint8_t byte_count=4)
float ConfigureDTSCDS(uint8_t source=0)
void PDTSInRunningState()
uint8_t GetEventBuilderDebugMode()
uint32_t ReadQSFP(uint16_t address, uint8_t byte_count)
uint16_t SetupASICPulserBits(uint8_t iFEMB)
void SourceFEMB(uint64_t iDAQLink, uint64_t real)
bool ContinueIfListOfFEMBClockPhasesDontSync
void SetFEMBFakeCOLDATAMode(uint8_t iFEMB, uint8_t iCD, bool mode=0)
void SetContinueOnFEMBSPIError(bool enable)
void ProgramFlash(std::string const &fileName, uint8_t update_percentage=101)
bool CheckFEMBCDInRange(uint8_t iCD)
bool CheckDAQLinkInRange(uint8_t iDAQLink)
void ConfigWIBFakeData(bool enableFakeFEMB1, bool enableFakeFEMB2, bool enableFakeFEMB3, bool enableFakeFEMB4, bool counter)
void LoadConfigDAQ_SI5342(std::string const &fileName)
void SetContinueOnFEMBRegReadError(bool enable)
void WriteLocalFlash(uint16_t address, uint32_t data)
char GetFEMBChar(uint8_t iFEMB)
void SetupFPGAPulser(uint8_t iFEMB, uint8_t dac_val)
void SetDAQ_SI5342Page(uint8_t page)
void CheckFlash(std::vector< uint32_t > data, uint8_t update_percentage=101)
void SetEventBuilderDebugMode(uint8_t mask=0xF)
void StartStreamToDAQ(bool l1=true, bool l2=true, bool l3=false, bool l4=false)
std::vector< data_8b10b_t > ReadDAQLinkSpyBuffer(uint8_t iDAQLink, uint8_t trigger_mode=0)
uint16_t SetupFEMBASICs(uint8_t iFEMB, uint8_t gain, uint8_t shape, uint8_t highBaseline, bool highLeakage, bool leakagex10, bool acCoupling, bool buffer, bool useExtClock, uint8_t internalDACControl, uint8_t internalDACValue)
Setup FEMB ASICs.
void WriteDTS_CDS(uint16_t address, uint32_t value, uint8_t byte_count=4, bool ignore_error=false)
void WriteFEMBPhase(uint8_t iFEMB, uint16_t clk_phase_data)
bool CheckFEMBInRange(uint8_t iFEMB)
data_8b10b_t(uint8_t _k, uint8_t _d)