From 3deb528087c2f6fde82d5681e13b61a270c0a780 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Wed, 28 Jan 2026 13:42:54 +0100 Subject: [PATCH 1/2] xilinx tsamples test fixed for a value that a receiver can stomach for memory allocation (#1374) --- .../tests/Caller/test-Caller-chiptestboard.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/slsDetectorSoftware/tests/Caller/test-Caller-chiptestboard.cpp b/slsDetectorSoftware/tests/Caller/test-Caller-chiptestboard.cpp index e557363aa..795937ee1 100644 --- a/slsDetectorSoftware/tests/Caller/test-Caller-chiptestboard.cpp +++ b/slsDetectorSoftware/tests/Caller/test-Caller-chiptestboard.cpp @@ -934,8 +934,8 @@ TEST_CASE("tsamples", "[.cmdcall]") { } if (det_type == defs::XILINX_CHIPTESTBOARD) { std::ostringstream oss; - caller.call("tsamples", {"2147483647"}, -1, PUT, oss); - REQUIRE(oss.str() == "tsamples 2147483647\n"); + caller.call("tsamples", {"10000"}, -1, PUT, oss); + REQUIRE(oss.str() == "tsamples 10000\n"); } for (int i = 0; i != det.size(); ++i) { det.setNumberOfTransceiverSamples(prev_val[i], {i}); From 55ff22243712b07f72ad3fa443d6cffb681a95c1 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Wed, 28 Jan 2026 13:49:46 +0100 Subject: [PATCH 2/2] Dev/server/separate list header (#1373) * xilinx, ctb and eiger server: detangled list.h to its own detector file * detangled list.h from all the detectors servers --- .../bin/ctbDetectorServer_developer | Bin 329860 -> 330060 bytes .../slsDetectorFunctionList.h | 210 +++++ .../eigerDetectorServer/FebControl.c | 6 +- .../eigerDetectorServer/FebControl.h | 1 + .../bin/eigerDetectorServer_developer | Bin 448757 -> 448757 bytes .../slsDetectorFunctionList.h | 209 +++++ .../bin/gotthard2DetectorServer_developer | Bin 295944 -> 295944 bytes .../slsDetectorFunctionList.h | 213 +++++ .../bin/jungfrauDetectorServer_developer | Bin 315340 -> 315340 bytes .../slsDetectorFunctionList.h | 221 ++++++ .../bin/moenchDetectorServer_developer | Bin 296272 -> 296272 bytes .../slsDetectorFunctionList.h | 193 +++++ .../bin/mythen3DetectorServer_developer | Bin 305788 -> 305788 bytes .../slsDetectorFunctionList.h | 214 +++++ .../include/slsDetectorFunctionList.h | 742 ------------------ .../bin/xilinx_ctbDetectorServer_developer | Bin 305832 -> 305832 bytes .../slsDetectorFunctionList.h | 174 ++++ 17 files changed, 1439 insertions(+), 744 deletions(-) create mode 100644 slsDetectorServers/ctbDetectorServer/slsDetectorFunctionList.h create mode 100644 slsDetectorServers/eigerDetectorServer/slsDetectorFunctionList.h create mode 100644 slsDetectorServers/gotthard2DetectorServer/slsDetectorFunctionList.h create mode 100644 slsDetectorServers/jungfrauDetectorServer/slsDetectorFunctionList.h create mode 100644 slsDetectorServers/moenchDetectorServer/slsDetectorFunctionList.h create mode 100644 slsDetectorServers/mythen3DetectorServer/slsDetectorFunctionList.h delete mode 100644 slsDetectorServers/slsDetectorServer/include/slsDetectorFunctionList.h create mode 100644 slsDetectorServers/xilinx_ctbDetectorServer/slsDetectorFunctionList.h diff --git a/slsDetectorServers/ctbDetectorServer/bin/ctbDetectorServer_developer b/slsDetectorServers/ctbDetectorServer/bin/ctbDetectorServer_developer index 34fc895ae3da9ea0f6ccd20c56574a87f941d169..e1b0fb940076a28c6c1e5a5e4dd5adb455cfae86 100755 GIT binary patch delta 122532 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

@M;*7 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�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 delta 122491 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⪙e0pTZSf>LgX%EJo^Xgt_iRUV!_XWm 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 C%!UvE diff --git a/slsDetectorServers/ctbDetectorServer/slsDetectorFunctionList.h b/slsDetectorServers/ctbDetectorServer/slsDetectorFunctionList.h new file mode 100644 index 000000000..369e71119 --- /dev/null +++ b/slsDetectorServers/ctbDetectorServer/slsDetectorFunctionList.h @@ -0,0 +1,210 @@ +// SPDX-License-Identifier: LGPL-3.0-or-other +// Copyright (C) 2021 Contributors to the SLS Detector Package +#include "sls/sls_detector_defs.h" +#include "slsDetectorServer_defs.h" // DAC_INDEX, ADC_INDEX, also include RegisterDefs.h + +#include "AD9257.h" // commonServerFunctions.h, blackfin.h, ansi.h +#include "blackfin.h" +#include "programViaBlackfin.h" + +#include // FILE +#include +#include + +/**************************************************** +This functions are used by the slsDetectroServer_funcs interface. +Here are the definitions, but the actual implementation should be done for each +single detector. + +****************************************************/ + +enum interfaceType { OUTER, INNER }; +typedef struct udpStruct_s { + uint16_t srcport; + uint16_t srcport2; + uint16_t dstport; + uint16_t dstport2; + uint64_t srcmac; + uint64_t srcmac2; + uint64_t dstmac; + uint64_t dstmac2; + uint32_t srcip; + uint32_t srcip2; + uint32_t dstip; + uint32_t dstip2; +} udpStruct; +#define MAC_ADDRESS_SIZE 18 + +// basic tests +int isInitCheckDone(); +int getInitResult(char **mess); +void basictests(); +int checkType(); +int testFpga(); +int testBus(); + +// Ids +void getServerVersion(char *version); +u_int64_t getFirmwareVersion(); +u_int64_t getFirmwareAPIVersion(); +void getHardwareVersion(char *version); +u_int16_t getHardwareVersionNumber(); +u_int16_t getHardwareSerialNumber(); +int isHardwareVersion_1_0(); +u_int32_t getDetectorNumber(); +u_int64_t getDetectorMAC(); +u_int32_t getDetectorIP(); +int enableBlackfinAMCExternalAccessExtension(char *mess); + +// initialization +void initControlServer(); +void initStopServer(); + +// set up detector +void setupDetector(); +int updateDatabytesandAllocateRAM(); +void updateDataBytes(); + +// firmware functions (resets) +void cleanFifos(); +void resetCore(); +void resetPeripheral(); + +// parameters - dr, roi +int setDynamicRange(int dr); +int getDynamicRange(int *retval); + +int setADCEnableMask(uint32_t mask); +uint32_t getADCEnableMask(); +void setADCEnableMask_10G(uint32_t mask); +uint32_t getADCEnableMask_10G(); +int setTransceiverEnableMask(uint32_t mask); +uint32_t getTransceiverEnableMask(); +void setADCInvertRegister(uint32_t val); +uint32_t getADCInvertRegister(); + +int setExternalSamplingSource(int val); +int setExternalSampling(int val); + +// parameters - readout +int setReadoutMode(enum readoutMode mode); +int getReadoutMode(); + +// parameters - timer +int setNextFrameNumber(uint64_t value); +int getNextFrameNumber(uint64_t *value); +void setNumFrames(int64_t val); +int64_t getNumFrames(); +void setNumTriggers(int64_t val); +int64_t getNumTriggers(); +int setExpTime(int64_t val); +int64_t getExpTime(); +int setPeriod(int64_t val); +int64_t getPeriod(); +int setNumAnalogSamples(int val); +int getNumAnalogSamples(); +int setNumDigitalSamples(int val); +int getNumDigitalSamples(); +int setNumTransceiverSamples(int val); +int getNumTransceiverSamples(); + +int64_t getNumFramesLeft(); +int64_t getNumTriggersLeft(); +int setDelayAfterTrigger(int64_t val); +int64_t getDelayAfterTrigger(); +int64_t getDelayAfterTriggerLeft(); +int64_t getPeriodLeft(); +int64_t getFramesFromStart(); +int64_t getActualTime(); +int64_t getMeasurementTime(); + +// parameters - module, settings +enum detectorSettings getSettings(); + +// parameters - threshold +// parameters - dac, adc, hv + +void setDAC(enum DACINDEX ind, int val, int mV); +int getDAC(enum DACINDEX ind, int mV); +int getMaxDacSteps(); +int dacToVoltage(int dac); +int checkVLimitCompliant(int mV); +int checkVLimitDacCompliant(int dac); +int getVLimit(); +void setVLimit(int l); + +int isVchipValid(int val); +int getVchip(); +void setVchip(int val); +int getVChipToSet(enum DACINDEX ind, int val); +int getDACIndexFromADCIndex(enum ADCINDEX ind); +int getADCIndexFromDACIndex(enum DACINDEX ind); +int isPowerValid(enum DACINDEX ind, int val); +int getPower(); +void setPower(enum DACINDEX ind, int val); +void powerOff(); + +int getADC(enum ADCINDEX ind); +int getSlowADC(int ichan); +int getSlowADCTemperature(); +int setHighVoltage(int val); + +// parameters - timing, extsig + +void setTiming(enum timingMode arg); +enum timingMode getTiming(); + +// configure mac +int getNumberofUDPInterfaces(); +void calcChecksum(udp_header *udp); + +int configureMAC(); +int setDetectorPosition(int pos[]); +int *getDetectorPosition(); + +int enableTenGigabitEthernet(int val); + +// very detector specific + +// chip test board specific - configure frequency, phase, pll, +// flashing firmware +int setPhase(enum CLKINDEX ind, int val, int degrees); +int getPhase(enum CLKINDEX ind, int degrees); +int getMaxPhase(enum CLKINDEX ind); +int validatePhaseinDegrees(enum CLKINDEX ind, int val, int retval); +void configureSyncFrequency(enum CLKINDEX ind); +void setADCPipeline(int val); +int getADCPipeline(); +void setDBITPipeline(int val); +int getDBITPipeline(); +int setLEDEnable(int enable); +void setDigitalIODelay(uint64_t pinMask, int delay); + +int setFrequency(enum CLKINDEX ind, int val); +int getFrequency(enum CLKINDEX ind); + +// aquisition +int startStateMachine(); +#ifdef VIRTUAL +void *start_timer(void *arg); +#endif +int stopStateMachine(); +int startReadOut(); +enum runStatus getRunStatus(); +void waitForAcquisitionEnd(); +int validateUDPSocket(); +void readandSendUDPFrames(); +void unsetFifoReadStrobes(); +int readSample(int ns); +uint32_t checkDataInFifo(); +int checkFifoForEndOfAcquisition(); +int readFrameFromFifo(); +u_int32_t runBusy(); + +// common +int calculateDataBytes(); +int getTotalNumberOfChannels(); +void getNumberOfChannels(int *nchanx, int *nchany); +int getNumberOfChips(); +int getNumberOfDACs(); +int getNumberOfChannelsPerChip(); \ No newline at end of file diff --git a/slsDetectorServers/eigerDetectorServer/FebControl.c b/slsDetectorServers/eigerDetectorServer/FebControl.c index f0b96d487..85a89f2d9 100644 --- a/slsDetectorServers/eigerDetectorServer/FebControl.c +++ b/slsDetectorServers/eigerDetectorServer/FebControl.c @@ -4,6 +4,7 @@ #include "Beb.h" #include "FebRegisterDefs.h" #include "clogger.h" +#include "common.h" #include "sharedMemory.h" #include "slsDetectorServer_defs.h" @@ -403,12 +404,13 @@ int Feb_Control_ReceiveHighVoltage(unsigned int *value) { // normal if (Feb_Control_normal) { + int retval = 0; if (readParameterFromFile(NORMAL_HIGHVOLTAGE_INPUTPORT, "high voltage", - value) == FAIL) { + &retval) == FAIL) { LOG(logERROR, ("Could not get high voltage\n")); return 0; } - *value /= 10; + *value = retval / 10; LOG(logINFO, ("High Voltage: %d\n", (*value))); } diff --git a/slsDetectorServers/eigerDetectorServer/FebControl.h b/slsDetectorServers/eigerDetectorServer/FebControl.h index 63025554f..52908e79f 100644 --- a/slsDetectorServers/eigerDetectorServer/FebControl.h +++ b/slsDetectorServers/eigerDetectorServer/FebControl.h @@ -119,6 +119,7 @@ int Feb_Control_PrintCorrectedValues(); // adcs int Feb_Control_GetLeftFPGATemp(); int Feb_Control_GetRightFPGATemp(); +int Feb_Control_GetFPGAHardwareVersion(int *retval); int64_t Feb_Control_GetFrontLeftFirmwareVersion(); int64_t Feb_Control_GetFrontRightFirmwareVersion(); int64_t Feb_Control_GetMeasuredPeriod(); diff --git a/slsDetectorServers/eigerDetectorServer/bin/eigerDetectorServer_developer b/slsDetectorServers/eigerDetectorServer/bin/eigerDetectorServer_developer index 9ff6d5fa9a976e9a1c00c7bb2da4c9ce90a1592e..19a7c189b2b87a98df3139678751bd9fef0d4810 100755 GIT binary patch delta 63461 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%0D{MHlI+_S=Gu$0RbjoMHgoYlQ`8R;jZw*P8+M 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 delta 63427 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 diff --git a/slsDetectorServers/eigerDetectorServer/slsDetectorFunctionList.h b/slsDetectorServers/eigerDetectorServer/slsDetectorFunctionList.h new file mode 100644 index 000000000..426c8fd7f --- /dev/null +++ b/slsDetectorServers/eigerDetectorServer/slsDetectorFunctionList.h @@ -0,0 +1,209 @@ +// SPDX-License-Identifier: LGPL-3.0-or-other +// Copyright (C) 2021 Contributors to the SLS Detector Package +#include "sls/sls_detector_defs.h" +#include "slsDetectorServer_defs.h" // DAC_INDEX, ADC_INDEX, also include RegisterDefs.h + +#include // FILE +#include +#include + +/**************************************************** +This functions are used by the slsDetectroServer_funcs interface. +Here are the definitions, but the actual implementation should be done for each +single detector. + +****************************************************/ + +enum interfaceType { OUTER, INNER }; +typedef struct udpStruct_s { + uint16_t srcport; + uint16_t srcport2; + uint16_t dstport; + uint16_t dstport2; + uint64_t srcmac; + uint64_t srcmac2; + uint64_t dstmac; + uint64_t dstmac2; + uint32_t srcip; + uint32_t srcip2; + uint32_t dstip; + uint32_t dstip2; +} udpStruct; +#define MAC_ADDRESS_SIZE 18 + +// basic tests +int isInitCheckDone(); +int getInitResult(char **mess); +void basictests(); + +#if defined(VIRTUAL) +void setTestImageMode(int ival); +int getTestImageMode(); +#endif + +// Ids +void getServerVersion(char *version); +u_int64_t getFirmwareVersion(); +uint64_t getFrontEndFirmwareVersion(enum fpgaPosition fpgaPosition); +u_int64_t getFirmwareAPIVersion(); +void getHardwareVersion(char *version); +int getHardwareVersionNumber(); +int getModuleId(int *ret, char *mess); +int updateModuleId(); +u_int64_t getDetectorMAC(); +u_int32_t getDetectorIP(); + +// initialization +void initControlServer(); +void initStopServer(); +int updateModuleConfiguration(); +int getModuleConfiguration(int *m, int *t, int *n); +#ifdef VIRTUAL +void checkVirtual9MFlag(); +#endif + +// set up detector +#if !defined(VIRTUAL) +void setupFebBeb(); +#endif +int allocateDetectorStructureMemory(); +void setupDetector(); + +int resetToDefaultDacs(int hardReset); +int getDefaultDac(enum DACINDEX index, enum detectorSettings sett, int *retval); +int setDefaultDac(enum DACINDEX index, enum detectorSettings sett, int value); +int readConfigFile(); +int checkCommandLineConfiguration(); +void resetToHardwareSettings(); + +// advanced read/write reg +int writeRegister(uint32_t offset, uint32_t data, int validate); +int readRegister(uint32_t offset, uint32_t *retval); +int setBit(const uint32_t addr, const int nBit, int validate); +int clearBit(const uint32_t addr, const int nBit, int validate); +int getBit(const uint32_t addr, const int nBit, int *retval); + +// parameters - dr, roi +int setDynamicRange(int dr); +int getDynamicRange(int *retval); + +// parameters - readout +int setParallelMode(int mode); +int getParallelMode(); +int setOverFlowMode(int mode); +int getOverFlowMode(); + +// parameters - timer +int setNextFrameNumber(uint64_t value); +int getNextFrameNumber(uint64_t *value); +void setNumFrames(int64_t val); +int64_t getNumFrames(); +void setNumTriggers(int64_t val); +int64_t getNumTriggers(); +int setExpTime(int64_t val); +int64_t getExpTime(); +int setPeriod(int64_t val); +int64_t getPeriod(); +int setSubExpTime(int64_t val); +int64_t getSubExpTime(); +int setSubDeadTime(int64_t val); +int64_t getSubDeadTime(); +int64_t getMeasuredPeriod(); +int64_t getMeasuredSubPeriod(); + +// parameters - module, settings +void getModule(sls_detector_module *myMod); +int setModule(sls_detector_module myMod, char *mess); +int setTrimbits(int *chanregs, char *mess); +enum detectorSettings setSettings(enum detectorSettings sett); +enum detectorSettings getSettings(); + +// parameters - threshold +int getThresholdEnergy(); +int setThresholdEnergy(int ev); + +// parameters - dac, adc, hv +void setDAC(enum DACINDEX ind, int val, int mV); +int getDAC(enum DACINDEX ind, int mV); +int getMaxDacSteps(); + +int getADC(enum ADCINDEX ind); +int setHighVoltage(int val); + +// parameters - timing, extsig +int setMaster(enum MASTERINDEX m); +int setTop(enum TOPINDEX t); +int isTop(int *retval); +int isMaster(int *retval); + +void setTiming(enum timingMode arg); +enum timingMode getTiming(); + +// configure mac +int getNumberofUDPInterfaces(); +int getNumberofDestinations(int *retval); +int setNumberofDestinations(int value); +int configureMAC(); +int setDetectorPosition(int pos[]); +int *getDetectorPosition(); + +int setQuad(int value); +int getQuad(); +int setInterruptSubframe(int value); +int getInterruptSubframe(); +int setReadNRows(int value); +int getReadNRows(); +int enableTenGigabitEthernet(int val); + +// very detector specific + +// eiger specific - iodelay, pulse, rate, temp, activate, delay nw parameter +int setReadoutSpeed(int val); +int getReadoutSpeed(int *retval); +int setIODelay(int val); +int setCounterBit(int val); +int pulsePixel(int n, int x, int y); +int pulsePixelNMove(int n, int x, int y); +int pulseChip(int n); +int updateRateCorrection(char *mess); +int validateAndSetRateCorrection(int64_t tau_ns, char *mess); +int setRateCorrection(int64_t custom_tau_in_nsec); +int getRateCorrectionEnable(); +int getDefaultSettingsTau_in_nsec(); +void setDefaultSettingsTau_in_nsec(int t); +int64_t getCurrentTau(); +void setExternalGating(int enable[]); +int setAllTrimbits(int val); +int getAllTrimbits(); +int getBebFPGATemp(); +int setActivate(int enable); +int getActivate(int *retval); +int getDataStream(enum portPosition port, int *retval); +int setDataStream(enum portPosition port, int enable); + +int getTenGigaFlowControl(); +int setTenGigaFlowControl(int value); +int getTransmissionDelayFrame(); +int setTransmissionDelayFrame(int value); +int getTransmissionDelayLeft(); +int setTransmissionDelayLeft(int value); +int getTransmissionDelayRight(); +int setTransmissionDelayRight(int value); + +// aquisition +int startStateMachine(); +#ifdef VIRTUAL +void *start_timer(void *arg); +#endif +int stopStateMachine(); +int softwareTrigger(int block); +int startReadOut(); +enum runStatus getRunStatus(); +void waitForAcquisitionEnd(int *ret, char *mess); + +// common +int calculateDataBytes(); +int getTotalNumberOfChannels(); +int getNumberOfChips(); +int getNumberOfDACs(); +int getNumberOfChannelsPerChip(); \ No newline at end of file diff --git a/slsDetectorServers/gotthard2DetectorServer/bin/gotthard2DetectorServer_developer b/slsDetectorServers/gotthard2DetectorServer/bin/gotthard2DetectorServer_developer index 98bdbcde08814f97f811219e565da45f1e2874f7..2732f13a7a109218a8f1009f126b7e6bb4d79ff5 100755 GIT binary patch delta 51 zcmeC^5bEd<+Tiwp=L|zj&shmkrUL>kJk3E5+Jhc2ZV!6EWUbC>W?*P!(LRZtdHW=G Hma-ZE1zZw} delta 51 zcmeC^5bEd<+Tiwp=NvjKFvW7+Jhc2ZV!6EWUbC>YG7$#**=M#dHW=G Hma-ZE^lK6l diff --git a/slsDetectorServers/gotthard2DetectorServer/slsDetectorFunctionList.h b/slsDetectorServers/gotthard2DetectorServer/slsDetectorFunctionList.h new file mode 100644 index 000000000..598a4e251 --- /dev/null +++ b/slsDetectorServers/gotthard2DetectorServer/slsDetectorFunctionList.h @@ -0,0 +1,213 @@ +// SPDX-License-Identifier: LGPL-3.0-or-other +// Copyright (C) 2021 Contributors to the SLS Detector Package +#include "sls/sls_detector_defs.h" +#include "slsDetectorServer_defs.h" // DAC_INDEX, ADC_INDEX, also include RegisterDefs.h + +#include "nios.h" +#include "programViaNios.h" + +#include // FILE +#include +#include + +/**************************************************** +This functions are used by the slsDetectroServer_funcs interface. +Here are the definitions, but the actual implementation should be done for each +single detector. + +****************************************************/ + +enum interfaceType { OUTER, INNER }; +typedef struct udpStruct_s { + uint16_t srcport; + uint16_t srcport2; + uint16_t dstport; + uint16_t dstport2; + uint64_t srcmac; + uint64_t srcmac2; + uint64_t dstmac; + uint64_t dstmac2; + uint32_t srcip; + uint32_t srcip2; + uint32_t dstip; + uint32_t dstip2; +} udpStruct; +#define MAC_ADDRESS_SIZE 18 + +// basic tests +int isInitCheckDone(); +int getInitResult(char **mess); +void basictests(); +int checkType(); +int testFpga(); +int testBus(); + +// Ids +void getServerVersion(char *version); +u_int64_t getFirmwareVersion(); +u_int64_t getFirmwareAPIVersion(); +void getHardwareVersion(char *version); +u_int16_t getHardwareVersionNumber(); +int isHardwareVersion_1_0(); +u_int32_t getDetectorNumber(); +int getModuleId(int *ret, char *mess); +int updateModuleId(); +void setModuleId(int modid); +u_int64_t getDetectorMAC(); +u_int32_t getDetectorIP(); + +// initialization +void initControlServer(); +void initStopServer(); + +// set up detector +void setupDetector(); +int resetToDefaultDacs(int hardReset); +int getDefaultDac(enum DACINDEX index, enum detectorSettings sett, int *retval); +int setDefaultDac(enum DACINDEX index, enum detectorSettings sett, int value); +void setASICDefaults(); +int readConfigFile(); +int checkCommandLineConfiguration(); + +// firmware functions (resets) +void cleanFifos(); +void resetCore(); +void resetPeripheral(); + +// parameters - dr, roi +int setDynamicRange(int dr); +int getDynamicRange(int *retval); + +// parameters - readout +int setParallelMode(int mode); +int getParallelMode(); + +// parameters - timer +int setNextFrameNumber(uint64_t value); +int getNextFrameNumber(uint64_t *value); +void setNumFrames(int64_t val); +int64_t getNumFrames(); +void setNumTriggers(int64_t val); +int64_t getNumTriggers(); +int setExpTime(int64_t val); +int64_t getExpTime(); +int setPeriod(int64_t val); +int64_t getPeriod(); +void setNumBursts(int64_t val); +int64_t getNumBursts(); +int setBurstPeriod(int64_t val); +int64_t getBurstPeriod(); +int64_t getNumFramesLeft(); +int64_t getNumTriggersLeft(); +int setDelayAfterTrigger(int64_t val); +int64_t getDelayAfterTrigger(); +int64_t getDelayAfterTriggerLeft(); +int64_t getPeriodLeft(); +int64_t getNumBurstsLeft(); +int64_t getFramesFromStart(); +int64_t getActualTime(); +int64_t getMeasurementTime(); + +// parameters - module, settings +enum detectorSettings setSettings(enum detectorSettings sett); +enum detectorSettings getSettings(); + +// parameters - dac, adc, hv +int setOnChipDAC(enum ONCHIP_DACINDEX ind, int chipIndex, int val); +int getOnChipDAC(enum ONCHIP_DACINDEX ind, int chipIndex); +void setDAC(enum DACINDEX ind, int val, int mV); +int getDAC(enum DACINDEX ind, int mV); +int getMaxDacSteps(); + +int getADC(enum ADCINDEX ind, int *value); +int setHighVoltage(int val); +int getHighVoltage(int *retval); + +// parameters - timing, extsig +int setMaster(enum MASTERINDEX m); +int isMaster(int *retval); + +void updatingRegisters(); +int updateClockDivs(); +void setTiming(enum timingMode arg); +enum timingMode getTiming(); + +// configure mac +void setNumberofUDPInterfaces(int val); +int getNumberofUDPInterfaces(); +int getNumberofDestinations(int *retval); +int setNumberofDestinations(int value); +int getFirstUDPDestination(); +void setFirstUDPDestination(int value); +void calcChecksum(udp_header *udp); +int configureMAC(); +int setDetectorPosition(int pos[]); +int *getDetectorPosition(); + +// very detector specific +int checkDetectorType(char *mess); +int powerChip(int on, char *mess); +int getPowerChip(); +int isChipConfigured(); +int configureChip(char *mess); +void setDBITPipeline(int val); +int getDBITPipeline(); +int setPhase(enum CLKINDEX ind, int val, int degrees); +int getPhase(enum CLKINDEX ind, int degrees); +int getMaxPhase(enum CLKINDEX ind); +int validatePhaseinDegrees(enum CLKINDEX ind, int val, int retval); +// void setFrequency(enum CLKINDEX ind, int val); +int getFrequency(enum CLKINDEX ind); +int getVCOFrequency(enum CLKINDEX ind); +int setReadoutSpeed(int val); +int getReadoutSpeed(int *retval); +int getMaxClockDivider(); +int setClockDivider(enum CLKINDEX ind, int val); +int getClockDivider(enum CLKINDEX ind); +int setInjectChannel(int offset, int increment); +void getInjectedChannels(int *offset, int *increment); +int setVetoReference(int gainIndex, int value); +int setVetoPhoton(int chipIndex, int *gainIndices, int *values); +int configureASICVetoReference(int chipIndex, int *gainIndices, int *values); +int getVetoPhoton(int chipIndex, int *retvals, int *gainRetvals); +int setADCConfiguration(int chipIndex, int adcIndex, int value); +int getADCConfiguration(int chipIndex, int adcIndex); +int setBurstModeinFPGA(enum burstMode value); +int setBurstMode(enum burstMode burst); +int configureASICGlobalSettings(); +enum burstMode getBurstMode(); +int setCDSGain(int enable); +int getCDSGain(); +int setFilterResistor(int value); +int getFilterResistor(); +void setCurrentSource(int value); +int getCurrentSource(); +void setTimingSource(enum timingSourceType value); +enum timingSourceType getTimingSource(); +void setVeto(int enable); +int getVeto(); +void setVetoStream(int value); +int getVetoStream(); +enum vetoAlgorithm getVetoAlgorithm(enum streamingInterface interface); +void setVetoAlgorithm(enum vetoAlgorithm alg, + enum streamingInterface interface); + +int setBadChannels(int numChannels, int *channelList); +int *getBadChannels(int *numChannels); + +// aquisition +int startStateMachine(); +#ifdef VIRTUAL +void *start_timer(void *arg); +#endif +int stopStateMachine(); +enum runStatus getRunStatus(); +void waitForAcquisitionEnd(); +u_int32_t runBusy(); + +// common +int calculateDataBytes(); +int getTotalNumberOfChannels(); +int getNumberOfChips(); +int getNumberOfDACs(); +int getNumberOfChannelsPerChip(); \ No newline at end of file diff --git a/slsDetectorServers/jungfrauDetectorServer/bin/jungfrauDetectorServer_developer b/slsDetectorServers/jungfrauDetectorServer/bin/jungfrauDetectorServer_developer index bdcdb373ffc624d3fd12a04d23c39495d77720f1..a992aa229fe270bad374353708bcec8b89eada41 100755 GIT binary patch delta 59 zcmX>zU--;?;RzZnnU(K3rf+=DEYaxF>cZIS!nD~ L^L8d5mQ&3Dju;c3 delta 59 zcmX>zU--;?;RzZn83zoGPv7{SS)$RU)rGOug=wn`^IvUNQv*u_%k6GD%-iK5>~ // FILE +#include +#include + +/**************************************************** +This functions are used by the slsDetectroServer_funcs interface. +Here are the definitions, but the actual implementation should be done for each +single detector. + +****************************************************/ + +enum interfaceType { OUTER, INNER }; +typedef struct udpStruct_s { + uint16_t srcport; + uint16_t srcport2; + uint16_t dstport; + uint16_t dstport2; + uint64_t srcmac; + uint64_t srcmac2; + uint64_t dstmac; + uint64_t dstmac2; + uint32_t srcip; + uint32_t srcip2; + uint32_t dstip; + uint32_t dstip2; +} udpStruct; +#define MAC_ADDRESS_SIZE 18 + +// basic tests +int isInitCheckDone(); +int getInitResult(char **mess); +void basictests(); +int checkType(); +int testFpga(); +int testBus(); + +#if defined(VIRTUAL) +void setTestImageMode(int ival); +int getTestImageMode(); +#endif + +// Ids +void getServerVersion(char *version); +u_int64_t getFirmwareVersion(); +u_int64_t getFirmwareAPIVersion(); +void getHardwareVersion(char *version); +u_int16_t getHardwareVersionNumber(); +u_int16_t getHardwareSerialNumber(); +int isHardwareVersion_1_0(); +int getChipVersion(); +void setChipVersion(int version); +u_int32_t getDetectorNumber(); +int getModuleId(int *ret, char *mess); +int updateModuleId(); +void setModuleId(int modid); +u_int64_t getDetectorMAC(); +u_int32_t getDetectorIP(); + +// initialization +void initControlServer(); +void initStopServer(); + +// set up detector +void setupDetector(); +int resetToDefaultDacs(int hardReset); +int getDefaultDac(enum DACINDEX index, enum detectorSettings sett, int *retval); +int setDefaultDac(enum DACINDEX index, enum detectorSettings sett, int value); +int readConfigFile(); + +// firmware functions (resets) +void cleanFifos(); +void resetCore(); +void resetPeripheral(); + +// parameters - dr, roi +int setDynamicRange(int dr); +int getDynamicRange(int *retval); +void setADCInvertRegister(uint32_t val); +uint32_t getADCInvertRegister(); + +// parameters - timer +int selectStoragecellStart(int pos); +int getMaxStoragecellStart(); +int setNextFrameNumber(uint64_t value); +int getNextFrameNumber(uint64_t *value); +void setNumFrames(int64_t val); +int64_t getNumFrames(); +void setNumTriggers(int64_t val); +int64_t getNumTriggers(); +int setExpTime(int64_t val); +int64_t getExpTime(); +int setPeriod(int64_t val); +int64_t getPeriod(); +void setNumAdditionalStorageCells(int val); +int getNumAdditionalStorageCells(); +int setStorageCellDelay(int64_t val); +int64_t getStorageCellDelay(); +int64_t getNumFramesLeft(); +int64_t getNumTriggersLeft(); +int setDelayAfterTrigger(int64_t val); +int64_t getDelayAfterTrigger(); +int64_t getDelayAfterTriggerLeft(); +int64_t getPeriodLeft(); +int64_t getFramesFromStart(); +int64_t getActualTime(); +int64_t getMeasurementTime(); + +// parameters - module, settings +int setModule(sls_detector_module myMod, char *mess); +enum detectorSettings setSettings(enum detectorSettings sett); +enum detectorSettings getSettings(); +enum gainMode getGainMode(); +void setGainMode(enum gainMode mode); + +// parameters - dac, adc, hv +void setDAC(enum DACINDEX ind, int val, int mV); +int getDAC(enum DACINDEX ind, int mV); +int getMaxDacSteps(); +int getADC(enum ADCINDEX ind); +int setHighVoltage(int val); +int getHighVoltage(int *retval); + +// parameters - timing, extsig +int setMaster(enum MASTERINDEX m); +int isMaster(int *retval); +int getSynchronization(); +void setSynchronization(int enable); +void setTiming(enum timingMode arg); +enum timingMode getTiming(); + +// configure mac +void setNumberofUDPInterfaces(int val); +int getNumberofUDPInterfaces(); +int getNumberofDestinations(int *retval); +int setNumberofDestinations(int value); +int getFirstUDPDestination(); +void setFirstUDPDestination(int value); +void selectPrimaryInterface(int val); +int getPrimaryInterface(); +void setupHeader(int iRxEntry, enum interfaceType type, uint32_t destip, + uint64_t destmac, uint16_t destport, uint64_t sourcemac, + uint32_t sourceip, uint16_t sourceport); +void calcChecksum(udp_header *udp); + +int configureMAC(); +int setDetectorPosition(int pos[]); +int *getDetectorPosition(); + +// very detector specific + +int setReadNRows(int value); +int getReadNRows(); +void initReadoutConfiguration(); +int powerChip(int on); +int isChipConfigured(); +void configureChip(); +int autoCompDisable(int on); +int setComparatorDisableTime(int64_t val); +int64_t getComparatorDisableTime(); +void configureASICTimer(); +int setReadoutSpeed(int val); +int getReadoutSpeed(int *retval); +int setPhase(enum CLKINDEX ind, int val, int degrees); +int getPhase(enum CLKINDEX ind, int degrees); +int getMaxPhase(enum CLKINDEX ind); +int validatePhaseinDegrees(enum CLKINDEX ind, int val, int retval); +int setThresholdTemperature(int val); +int setTemperatureControl(int val); +int setTemperatureEvent(int val); +void alignDeserializer(); +int getFlipRows(); +void setFlipRows(int arg); +int setFilterResistor(int value); +int getFilterResistor(); +int getNumberOfFilterCells(); +void setNumberOfFilterCells(int iCell); +void disableCurrentSource(); +void enableCurrentSource(int fix, uint64_t select, int normal); +int getCurrentSource(); +int getFixCurrentSource(); +int getNormalCurrentSource(); +uint64_t getSelectCurrentSource(); +int getPedestalMode(); +void getPedestalParameters(uint8_t *frames, uint16_t *loops); +void setPedestalMode(int enable, uint8_t frames, uint16_t loops); +int setTimingInfoDecoder(enum timingInfoDecoder val); +int getTimingInfoDecoder(enum timingInfoDecoder *retval); +int getElectronCollectionMode(); +void setElectronCollectionMode(int enable); + +int getTenGigaFlowControl(); +int setTenGigaFlowControl(int value); +int getTransmissionDelayFrame(); +int setTransmissionDelayFrame(int value); + +// aquisition +int startStateMachine(); +#ifdef VIRTUAL +void *start_timer(void *arg); +#endif +int stopStateMachine(); +int softwareTrigger(int block); +enum runStatus getRunStatus(); +void waitForAcquisitionEnd(); +u_int32_t runBusy(); + +// common +int calculateDataBytes(); +int getTotalNumberOfChannels(); +int getNumberOfChips(); +int getNumberOfDACs(); +int getNumberOfChannelsPerChip(); \ No newline at end of file diff --git a/slsDetectorServers/moenchDetectorServer/bin/moenchDetectorServer_developer b/slsDetectorServers/moenchDetectorServer/bin/moenchDetectorServer_developer index dc962da2b0724a941a25393c1a39ea98ec313613..4b49971ca048f8dacf59a73a4050456cac254e28 100755 GIT binary patch delta 56 zcmcc6C3K-nXo3byX61X%>5S``B^q5?T^P5zFnRuCH8U_Yve-W9AJcs?2)n&ZlzDrZ ID9f#U07fbkj{pDw delta 56 zcmcc6C3K-nXo3by#sPzq(;3$>OEkK)x-f2aVe // FILE +#include +#include + +/**************************************************** +This functions are used by the slsDetectroServer_funcs interface. +Here are the definitions, but the actual implementation should be done for each +single detector. + +****************************************************/ + +enum interfaceType { OUTER, INNER }; +typedef struct udpStruct_s { + uint16_t srcport; + uint16_t srcport2; + uint16_t dstport; + uint16_t dstport2; + uint64_t srcmac; + uint64_t srcmac2; + uint64_t dstmac; + uint64_t dstmac2; + uint32_t srcip; + uint32_t srcip2; + uint32_t dstip; + uint32_t dstip2; +} udpStruct; +#define MAC_ADDRESS_SIZE 18 + +// basic tests +int isInitCheckDone(); +int getInitResult(char **mess); +void basictests(); +int checkType(); +int testFpga(); +int testBus(); + +#if defined(VIRTUAL) +void setTestImageMode(int ival); +int getTestImageMode(); +#endif + +// Ids +void getServerVersion(char *version); +u_int64_t getFirmwareVersion(); +u_int64_t getFirmwareAPIVersion(); +void getHardwareVersion(char *version); +u_int16_t getHardwareVersionNumber(); +u_int16_t getHardwareSerialNumber(); +int isHardwareVersion_1_0(); +u_int32_t getDetectorNumber(); +int getModuleId(int *ret, char *mess); +int updateModuleId(); +void setModuleId(int modid); +u_int64_t getDetectorMAC(); +u_int32_t getDetectorIP(); + +// initialization +void initControlServer(); +void initStopServer(); + +// set up detector +void setupDetector(); +int resetToDefaultDacs(int hardReset); +int getDefaultDac(enum DACINDEX index, enum detectorSettings sett, int *retval); +int setDefaultDac(enum DACINDEX index, enum detectorSettings sett, int value); + +// firmware functions (resets) +void cleanFifos(); +void resetCore(); +void resetPeripheral(); + +// parameters - dr, roi +int setDynamicRange(int dr); +int getDynamicRange(int *retval); +void setADCInvertRegister(uint32_t val); +uint32_t getADCInvertRegister(); + +// parameters - readout +int setParallelMode(int mode); +int getParallelMode(); + +// parameters - timer +int setNextFrameNumber(uint64_t value); +int getNextFrameNumber(uint64_t *value); +void setNumFrames(int64_t val); +int64_t getNumFrames(); +void setNumTriggers(int64_t val); +int64_t getNumTriggers(); +int setExpTime(int64_t val); +int64_t getExpTime(); +int setPeriod(int64_t val); +int64_t getPeriod(); +int64_t getNumFramesLeft(); +int64_t getNumTriggersLeft(); +int setDelayAfterTrigger(int64_t val); +int64_t getDelayAfterTrigger(); +int64_t getDelayAfterTriggerLeft(); +int64_t getPeriodLeft(); +int64_t getFramesFromStart(); +int64_t getActualTime(); +int64_t getMeasurementTime(); + +// parameters - module, settings +int setModule(sls_detector_module myMod, char *mess); +enum detectorSettings setSettings(enum detectorSettings sett); +enum detectorSettings getSettings(); + +// parameters - dac, adc, hv +void setDAC(enum DACINDEX ind, int val, int mV); +int getDAC(enum DACINDEX ind, int mV); +int getMaxDacSteps(); +int getADC(enum ADCINDEX ind); +int setHighVoltage(int val); + +// parameters - timing, extsig +int setMaster(enum MASTERINDEX m); +int isMaster(int *retval); +int getSynchronization(); +void setSynchronization(int enable); +void setTiming(enum timingMode arg); +enum timingMode getTiming(); + +// configure mac +void setNumberofUDPInterfaces(int val); +int getNumberofUDPInterfaces(); +int getNumberofDestinations(int *retval); +int setNumberofDestinations(int value); +int getFirstUDPDestination(); +void setFirstUDPDestination(int value); +void selectPrimaryInterface(int val); +int getPrimaryInterface(); +void setupHeader(int iRxEntry, enum interfaceType type, uint32_t destip, + uint64_t destmac, uint16_t destport, uint64_t sourcemac, + uint32_t sourceip, uint16_t sourceport); +void calcChecksum(udp_header *udp); +int configureMAC(); +int setDetectorPosition(int pos[]); +int *getDetectorPosition(); + +// very detector specific + +// jungfrau/moench specific - powerchip, autocompdisable, clockdiv, asictimer, +// clock, pll, flashing firmware +void setADCPipeline(int val); +int getADCPipeline(); +int setReadNRows(int value); +int getReadNRows(); +void initReadoutConfiguration(); +int powerChip(int on); +int setReadoutSpeed(int val); +int getReadoutSpeed(int *retval); +int setPhase(enum CLKINDEX ind, int val, int degrees); +int getPhase(enum CLKINDEX ind, int degrees); +int getMaxPhase(enum CLKINDEX ind); +int validatePhaseinDegrees(enum CLKINDEX ind, int val, int retval); +int setThresholdTemperature(int val); +int setTemperatureControl(int val); +int setTemperatureEvent(int val); +void alignDeserializer(); +int getFlipRows(); +void setFlipRows(int arg); + +int getTenGigaFlowControl(); +int setTenGigaFlowControl(int value); +int getTransmissionDelayFrame(); +int setTransmissionDelayFrame(int value); + +// aquisition +int startStateMachine(); +#ifdef VIRTUAL +void *start_timer(void *arg); +#endif +int stopStateMachine(); +int softwareTrigger(int block); +enum runStatus getRunStatus(); +void waitForAcquisitionEnd(); +u_int32_t runBusy(); + +// common +int calculateDataBytes(); +int getTotalNumberOfChannels(); +int getNumberOfChips(); +int getNumberOfDACs(); +int getNumberOfChannelsPerChip(); \ No newline at end of file diff --git a/slsDetectorServers/mythen3DetectorServer/bin/mythen3DetectorServer_developer b/slsDetectorServers/mythen3DetectorServer/bin/mythen3DetectorServer_developer index ffda96dac492d2ca4178225c269a6d8873158a07..e4f56bed22dc01a31af2408905c6f3954e705585 100755 GIT binary patch delta 52 zcmV-40L%aU)DryE60p9j4a@+9jLjGo0>BW249BW2jLd_}tB1?00k_Mm0{VglH843cGKb18 K1Gma91hRXuI2b$t diff --git a/slsDetectorServers/mythen3DetectorServer/slsDetectorFunctionList.h b/slsDetectorServers/mythen3DetectorServer/slsDetectorFunctionList.h new file mode 100644 index 000000000..1032fcc32 --- /dev/null +++ b/slsDetectorServers/mythen3DetectorServer/slsDetectorFunctionList.h @@ -0,0 +1,214 @@ +// SPDX-License-Identifier: LGPL-3.0-or-other +// Copyright (C) 2021 Contributors to the SLS Detector Package +#include "sls/sls_detector_defs.h" +#include "slsDetectorServer_defs.h" // DAC_INDEX, ADC_INDEX, also include RegisterDefs.h + +#include "mythen3.h" +#include "nios.h" +#include "programViaNios.h" + +#include // FILE +#include +#include + +/**************************************************** +This functions are used by the slsDetectroServer_funcs interface. +Here are the definitions, but the actual implementation should be done for each +single detector. + +****************************************************/ + +enum interfaceType { OUTER, INNER }; +typedef struct udpStruct_s { + uint16_t srcport; + uint16_t srcport2; + uint16_t dstport; + uint16_t dstport2; + uint64_t srcmac; + uint64_t srcmac2; + uint64_t dstmac; + uint64_t dstmac2; + uint32_t srcip; + uint32_t srcip2; + uint32_t dstip; + uint32_t dstip2; +} udpStruct; +#define MAC_ADDRESS_SIZE 18 + +// basic tests +int isInitCheckDone(); +int getInitResult(char **mess); +void basictests(); +int checkType(); +int testFpga(); +int testBus(); + +void setTestImageMode(int ival); +int getTestImageMode(); + +// Ids +void getServerVersion(char *version); +u_int64_t getFirmwareVersion(); +u_int64_t getFirmwareAPIVersion(); +void getHardwareVersion(char *version); +u_int16_t getHardwareVersionNumber(); +int isHardwareVersion_1_0(); +u_int32_t getDetectorNumber(); +int getModuleId(int *ret, char *mess); +int updateModuleId(); +void setModuleId(int modid); +u_int64_t getDetectorMAC(); +u_int32_t getDetectorIP(); + +// initialization +void initControlServer(); +void initStopServer(); + +// set up detector +int allocateDetectorStructureMemory(); +void setupDetector(); +int resetToDefaultDacs(int hardReset); +int getDefaultDac(enum DACINDEX index, enum detectorSettings sett, int *retval); +int setDefaultDac(enum DACINDEX index, enum detectorSettings sett, int value); +void setASICDefaults(); +void setADIFDefaults(); +int checkCommandLineConfiguration(); + +// firmware functions (resets) +void cleanFifos(); +void resetCore(); +void resetPeripheral(); + +// parameters - dr, roi +int setDynamicRange(int dr); +int getDynamicRange(int *retval); + +// parameters - readout +int setParallelMode(int mode); +int getParallelMode(); + +// parameters - timer +void setNumFrames(int64_t val); +int64_t getNumFrames(); +void setNumTriggers(int64_t val); +int64_t getNumTriggers(); +int setPeriod(int64_t val); +int64_t getPeriod(); +void setNumIntGates(int val); +void setNumGates(int val); +int getNumGates(); +void updateGatePeriod(); +int64_t getGatePeriod(); +int setExpTime(int gateIndex, int64_t val); +int64_t getExpTime(int gateIndex); +int setGateDelay(int gateIndex, int64_t val); +int64_t getGateDelay(int gateIndex); + +void setCounterMask(uint32_t arg); +void setCounterMaskWithUpdateFlag(uint32_t arg, int updateMaskFlag); +uint32_t getCounterMask(); +void updatePacketizing(); + +int64_t getNumFramesLeft(); +int64_t getNumTriggersLeft(); +int setDelayAfterTrigger(int64_t val); +int64_t getDelayAfterTrigger(); +int64_t getDelayAfterTriggerLeft(); +int64_t getPeriodLeft(); +int64_t getFramesFromStart(); +int64_t getActualTime(); +int64_t getMeasurementTime(); + +// parameters - module, settings +void getModule(sls_detector_module *myMod); +int setModule(sls_detector_module myMod, char *mess); +int setTrimbits(int *trimbits); +int setAllTrimbits(int val); +int getAllTrimbits(); +enum detectorSettings setSettings(enum detectorSettings sett); +enum detectorSettings getSettings(); + +// parameters - threshold +int getThresholdEnergy(int counterIndex); +void setThresholdEnergy(int counterIndex, int eV); + +// parameters - dac, adc, hv +void setDAC(enum DACINDEX ind, int val, int mV, int counterEnableCheck); +void setGeneralDAC(enum DACINDEX ind, int val, int mV); +void setVthDac(int index, int enable); +int getDAC(enum DACINDEX ind, int mV); +int getMaxDacSteps(); + +int getADC(enum ADCINDEX ind, int *value); +int setHighVoltage(int val); +int getHighVoltage(int *retval); + +// parameters - timing, extsig +int isMaster(int *retval); +void setTiming(enum timingMode arg); +enum timingMode getTiming(); +void setInitialExtSignals(); +int setChipStatusRegister(int csr); +int setGainCaps(int caps); +int setInterpolation(int enable); +int setPumpProbe(int enable); +int setDigitalPulsing(int enable); +int setAnalogPulsing(int enable); +int setNegativePolarity(int enable); +int setDACS(int *dacs); +void setExtSignal(int signalIndex, enum externalSignalFlag mode); +int getExtSignal(int signalIndex); + +// configure mac +int getNumberofUDPInterfaces(); +int getNumberofDestinations(int *retval); +int setNumberofDestinations(int value); +int getFirstUDPDestination(); +void setFirstUDPDestination(int value); +void calcChecksum(udp_header *udp); +int configureMAC(); +int setDetectorPosition(int pos[]); +int *getDetectorPosition(); +int enableTenGigabitEthernet(int val); + +// very detector specific +int checkDetectorType(char *mess); +int powerChip(int on); +int setPhase(enum CLKINDEX ind, int val, int degrees); +int getPhase(enum CLKINDEX ind, int degrees); +int getMaxPhase(enum CLKINDEX ind); +int validatePhaseinDegrees(enum CLKINDEX ind, int val, int retval); +// void setFrequency(enum CLKINDEX ind, int val); +int getFrequency(enum CLKINDEX ind); +int getVCOFrequency(enum CLKINDEX ind); +int getMaxClockDivider(); +int setClockDivider(enum CLKINDEX ind, int val); +int setClockDividerWithTimeUpdateOption(enum CLKINDEX ind, int val, + int timeUpdate); +int getClockDivider(enum CLKINDEX ind); +int setReadoutSpeed(int val); +int getReadoutSpeed(int *retval); +int setBadChannels(int numChannels, int *channelList); +int *getBadChannels(int *numChannels); + +int getTransmissionDelayFrame(); +int setTransmissionDelayFrame(int value); + +// aquisition +int startStateMachine(); +#ifdef VIRTUAL +void *start_timer(void *arg); +#endif +int stopStateMachine(); +int softwareTrigger(); +int startReadOut(); +enum runStatus getRunStatus(); +void waitForAcquisitionEnd(); +u_int32_t runBusy(); + +// common +int calculateDataBytes(); +int getTotalNumberOfChannels(); +int getNumberOfChips(); +int getNumberOfDACs(); +int getNumberOfChannelsPerChip(); \ No newline at end of file diff --git a/slsDetectorServers/slsDetectorServer/include/slsDetectorFunctionList.h b/slsDetectorServers/slsDetectorServer/include/slsDetectorFunctionList.h deleted file mode 100644 index 7114c7f4b..000000000 --- a/slsDetectorServers/slsDetectorServer/include/slsDetectorFunctionList.h +++ /dev/null @@ -1,742 +0,0 @@ -// SPDX-License-Identifier: LGPL-3.0-or-other -// Copyright (C) 2021 Contributors to the SLS Detector Package -#include "sls/sls_detector_defs.h" -#include "slsDetectorServer_defs.h" // DAC_INDEX, ADC_INDEX, also include RegisterDefs.h - -#if defined(JUNGFRAUD) || defined(MOENCHD) || defined(CHIPTESTBOARDD) -#include "AD9257.h" // commonServerFunctions.h, blackfin.h, ansi.h -#endif - -#if defined(MYTHEN3D) || defined(GOTTHARD2D) -#include "nios.h" -#include "programViaNios.h" -#elif defined(CHIPTESTBOARDD) || defined(JUNGFRAUD) || defined(MOENCHD) -#include "blackfin.h" -#include "programViaBlackfin.h" -#endif - -#ifdef ARMPROCESSOR -#include "arm64.h" -#include "programViaArm.h" -#endif - -#ifdef MYTHEN3D -#include "mythen3.h" -#endif - -#include // FILE -#include -#include - -/**************************************************** -This functions are used by the slsDetectroServer_funcs interface. -Here are the definitions, but the actual implementation should be done for each -single detector. - -****************************************************/ - -enum interfaceType { OUTER, INNER }; -typedef struct udpStruct_s { - uint16_t srcport; - uint16_t srcport2; - uint16_t dstport; - uint16_t dstport2; - uint64_t srcmac; - uint64_t srcmac2; - uint64_t dstmac; - uint64_t dstmac2; - uint32_t srcip; - uint32_t srcip2; - uint32_t dstip; - uint32_t dstip2; -} udpStruct; -#define MAC_ADDRESS_SIZE 18 - -// basic tests -int isInitCheckDone(); -int getInitResult(char **mess); -void basictests(); -#if !defined(EIGERD) -int checkType(); -int testFpga(); -#ifdef XILINX_CHIPTESTBOARDD -int testFixedFPGAPattern(); -#else -int testBus(); -#endif -#endif - -#if ((defined(EIGERD) || defined(JUNGFRAUD) || defined(MOENCHD)) && \ - defined(VIRTUAL)) -void setTestImageMode(int ival); -int getTestImageMode(); -#endif - -// Ids -void getServerVersion(char *version); -u_int64_t getFirmwareVersion(); -#ifdef EIGERD -uint64_t getFrontEndFirmwareVersion(enum fpgaPosition fpgaPosition); -#endif -u_int64_t getFirmwareAPIVersion(); -void getHardwareVersion(char *version); -#ifdef EIGERD -int getHardwareVersionNumber(); -#else -#ifndef XILINX_CHIPTESTBOARDD -u_int16_t getHardwareVersionNumber(); -#endif -#endif -#if defined(JUNGFRAUD) || defined(MOENCHD) || defined(CHIPTESTBOARDD) -u_int16_t getHardwareSerialNumber(); -#endif -#if defined(JUNGFRAUD) || defined(MOENCHD) || defined(GOTTHARD2D) || \ - defined(MYTHEN3D) -int isHardwareVersion_1_0(); -#endif -#if defined(JUNGFRAUD) -int getChipVersion(); -void setChipVersion(int version); -#endif -#ifndef EIGERD -u_int32_t getDetectorNumber(); -#endif - -#if defined(GOTTHARD2D) || defined(EIGERD) || defined(MYTHEN3D) || \ - defined(JUNGFRAUD) || defined(MOENCHD) -int getModuleId(int *ret, char *mess); -int updateModuleId(); -#ifndef EIGERD -void setModuleId(int modid); -#endif -#endif -u_int64_t getDetectorMAC(); -u_int32_t getDetectorIP(); - -#if defined(CHIPTESTBOARDD) -int enableBlackfinAMCExternalAccessExtension(char *mess); -#endif - -// initialization -void initControlServer(); -void initStopServer(); -#ifdef EIGERD -int updateModuleConfiguration(); -int getModuleConfiguration(int *m, int *t, int *n); -#ifdef VIRTUAL -void checkVirtual9MFlag(); -#endif -#endif - -// set up detector -#if defined(EIGERD) && !defined(VIRTUAL) -void setupFebBeb(); -#endif -#if defined(EIGERD) || defined(MYTHEN3D) -int allocateDetectorStructureMemory(); -#endif -void setupDetector(); -#if defined(CHIPTESTBOARDD) -int updateDatabytesandAllocateRAM(); -void updateDataBytes(); -#endif - -#if !defined(CHIPTESTBOARDD) && !defined(XILINX_CHIPTESTBOARDD) -int resetToDefaultDacs(int hardReset); -int getDefaultDac(enum DACINDEX index, enum detectorSettings sett, int *retval); -int setDefaultDac(enum DACINDEX index, enum detectorSettings sett, int value); -#endif -#if defined(MYTHEN3D) || defined(GOTTHARD2D) -void setASICDefaults(); -#endif -#ifdef MYTHEN3D -void setADIFDefaults(); -#endif -#if defined(GOTTHARD2D) || defined(EIGERD) || defined(JUNGFRAUD) -int readConfigFile(); -#endif -#if defined(GOTTHARD2D) || defined(EIGERD) || defined(MYTHEN3D) -int checkCommandLineConfiguration(); -#endif -#ifdef EIGERD -void resetToHardwareSettings(); -#endif - -// advanced read/write reg -#ifdef EIGERD -int writeRegister(uint32_t offset, uint32_t data, int validate); -int readRegister(uint32_t offset, uint32_t *retval); -int setBit(const uint32_t addr, const int nBit, int validate); -int clearBit(const uint32_t addr, const int nBit, int validate); -int getBit(const uint32_t addr, const int nBit, int *retval); -#endif - -// firmware functions (resets) -#if defined(XILINX_CHIPTESTBOARDD) -void cleanFifos(); -void resetFlow(); -int waitTransceiverReset(char *mess); -#ifdef VIRTUAL -void setTransceiverAlignment(int align); -#endif -int isTransceiverAligned(); -int waitTransceiverAligned(char *mess); -int configureTransceiver(char *mess); -int isChipConfigured(); -int powerChip(int on, char *mess); -int getPowerChip(); -int configureChip(char *mess); -int readConfigFile(char *mess, char *fileName, char *fileType); -int resetChip(char *mess); -#endif -#if defined(JUNGFRAUD) || defined(MOENCHD) || defined(CHIPTESTBOARDD) || \ - defined(MYTHEN3D) || defined(GOTTHARD2D) -void cleanFifos(); -void resetCore(); -void resetPeripheral(); -#endif - -// parameters - dr, roi -int setDynamicRange(int dr); -int getDynamicRange(int *retval); -#if defined(JUNGFRAUD) || defined(MOENCHD) -void setADCInvertRegister(uint32_t val); -uint32_t getADCInvertRegister(); -#endif -#if defined(CHIPTESTBOARDD) -int setADCEnableMask(uint32_t mask); -uint32_t getADCEnableMask(); -void setADCEnableMask_10G(uint32_t mask); -uint32_t getADCEnableMask_10G(); -int setTransceiverEnableMask(uint32_t mask); -uint32_t getTransceiverEnableMask(); -void setADCInvertRegister(uint32_t val); -uint32_t getADCInvertRegister(); -#endif -#ifdef XILINX_CHIPTESTBOARDD -void setADCEnableMask_10G(uint32_t mask); -uint32_t getADCEnableMask_10G(); -int setTransceiverEnableMask(uint32_t mask); -uint32_t getTransceiverEnableMask(); -#endif -#if defined(CHIPTESTBOARDD) -int setExternalSamplingSource(int val); -int setExternalSampling(int val); -#endif - -// parameters - readout -#if defined(EIGERD) || defined(MYTHEN3D) || defined(GOTTHARD2D) || \ - defined(MOENCHD) -int setParallelMode(int mode); -int getParallelMode(); -#endif -#ifdef EIGERD -int setOverFlowMode(int mode); -int getOverFlowMode(); -#endif -#if defined(CHIPTESTBOARDD) || defined(XILINX_CHIPTESTBOARDD) -int setReadoutMode(enum readoutMode mode); -int getReadoutMode(); -#endif - -// parameters - timer -#if defined(JUNGFRAUD) -int selectStoragecellStart(int pos); -int getMaxStoragecellStart(); -#endif -#if defined(JUNGFRAUD) || defined(MOENCHD) || defined(EIGERD) || \ - defined(CHIPTESTBOARDD) || defined(XILINX_CHIPTESTBOARDD) || \ - defined(GOTTHARD2D) -int setNextFrameNumber(uint64_t value); -int getNextFrameNumber(uint64_t *value); -#endif -void setNumFrames(int64_t val); -int64_t getNumFrames(); -void setNumTriggers(int64_t val); -int64_t getNumTriggers(); -#ifndef MYTHEN3D -int setExpTime(int64_t val); -int64_t getExpTime(); -#endif -int setPeriod(int64_t val); -int64_t getPeriod(); -#ifdef MYTHEN3D -void setNumIntGates(int val); -void setNumGates(int val); -int getNumGates(); -void updateGatePeriod(); -int64_t getGatePeriod(); -int setExpTime(int gateIndex, int64_t val); -int64_t getExpTime(int gateIndex); -int setGateDelay(int gateIndex, int64_t val); -int64_t getGateDelay(int gateIndex); -#endif -#ifdef GOTTHARD2D -void setNumBursts(int64_t val); -int64_t getNumBursts(); -int setBurstPeriod(int64_t val); -int64_t getBurstPeriod(); -#endif -#ifdef EIGERD -int setSubExpTime(int64_t val); -int64_t getSubExpTime(); -int setSubDeadTime(int64_t val); -int64_t getSubDeadTime(); -int64_t getMeasuredPeriod(); -int64_t getMeasuredSubPeriod(); -#endif -#if defined(JUNGFRAUD) -void setNumAdditionalStorageCells(int val); -int getNumAdditionalStorageCells(); -int setStorageCellDelay(int64_t val); -int64_t getStorageCellDelay(); -#endif -#if defined(CHIPTESTBOARDD) || defined(XILINX_CHIPTESTBOARDD) -int setNumAnalogSamples(int val); -int getNumAnalogSamples(); -int setNumDigitalSamples(int val); -int getNumDigitalSamples(); -int setNumTransceiverSamples(int val); -int getNumTransceiverSamples(); -#endif -#ifdef MYTHEN3D -void setCounterMask(uint32_t arg); -void setCounterMaskWithUpdateFlag(uint32_t arg, int updateMaskFlag); -uint32_t getCounterMask(); -void updatePacketizing(); -#endif - -#ifndef EIGERD -int64_t getNumFramesLeft(); -int64_t getNumTriggersLeft(); -#endif -#if defined(JUNGFRAUD) || defined(MOENCHD) || defined(CHIPTESTBOARDD) || \ - defined(MYTHEN3D) || defined(GOTTHARD2D) || defined(XILINX_CHIPTESTBOARDD) -int setDelayAfterTrigger(int64_t val); -int64_t getDelayAfterTrigger(); -int64_t getDelayAfterTriggerLeft(); -int64_t getPeriodLeft(); -#endif -#ifdef GOTTHARD2D -int64_t getNumBurstsLeft(); -#endif -#if defined(JUNGFRAUD) || defined(MOENCHD) || defined(CHIPTESTBOARDD) || \ - defined(MYTHEN3D) || defined(GOTTHARD2D) || defined(XILINX_CHIPTESTBOARDD) -int64_t getFramesFromStart(); -int64_t getActualTime(); -int64_t getMeasurementTime(); -#endif - -// parameters - module, settings -#if defined(MYTHEN3D) || defined(EIGERD) -void getModule(sls_detector_module *myMod); -#endif -#if (!defined(CHIPTESTBOARDD)) && (!defined(GOTTHARD2D)) -int setModule(sls_detector_module myMod, char *mess); -#endif - -#ifdef EIGERD -int setTrimbits(int *chanregs, char *mess); -#endif -#ifdef MYTHEN3D -int setTrimbits(int *trimbits); -int setAllTrimbits(int val); -int getAllTrimbits(); -#endif -#ifndef XILINX_CHIPTESTBOARDD -#ifndef CHIPTESTBOARDD -enum detectorSettings setSettings(enum detectorSettings sett); -#endif -enum detectorSettings getSettings(); -#endif -#if defined(JUNGFRAUD) -enum gainMode getGainMode(); -void setGainMode(enum gainMode mode); -#endif - -// parameters - threshold -#ifdef EIGERD -int getThresholdEnergy(); -int setThresholdEnergy(int ev); -#endif -#ifdef MYTHEN3D -int getThresholdEnergy(int counterIndex); -void setThresholdEnergy(int counterIndex, int eV); -#endif -// parameters - dac, adc, hv - -#ifdef GOTTHARD2D -int setOnChipDAC(enum ONCHIP_DACINDEX ind, int chipIndex, int val); -int getOnChipDAC(enum ONCHIP_DACINDEX ind, int chipIndex); -#endif -#ifdef MYTHEN3D -void setDAC(enum DACINDEX ind, int val, int mV, int counterEnableCheck); -void setGeneralDAC(enum DACINDEX ind, int val, int mV); -void setVthDac(int index, int enable); -#else -void setDAC(enum DACINDEX ind, int val, int mV); -#endif -int getDAC(enum DACINDEX ind, int mV); -int getMaxDacSteps(); -#if defined(CHIPTESTBOARDD) || defined(XILINX_CHIPTESTBOARDD) -int dacToVoltage(int dac); -int checkVLimitCompliant(int mV); -int checkVLimitDacCompliant(int dac); -int getVLimit(); -void setVLimit(int l); -#endif - -#ifdef CHIPTESTBOARDD -int isVchipValid(int val); -int getVchip(); -void setVchip(int val); -int getVChipToSet(enum DACINDEX ind, int val); -int getDACIndexFromADCIndex(enum ADCINDEX ind); -int getADCIndexFromDACIndex(enum DACINDEX ind); -int isPowerValid(enum DACINDEX ind, int val); -int getPower(); -void setPower(enum DACINDEX ind, int val); -void powerOff(); -#elif XILINX_CHIPTESTBOARDD -int getBitOffsetFromDACIndex(enum DACINDEX ind); -int isPowerValid(enum DACINDEX ind, int val); -int getPower(); -void setPower(enum DACINDEX ind, int val); -#endif - -#if defined(MYTHEN3D) || defined(GOTTHARD2D) || defined(XILINX_CHIPTESTBOARDD) -int getADC(enum ADCINDEX ind, int *value); -#else -int getADC(enum ADCINDEX ind); -#endif -#ifdef CHIPTESTBOARDD -int getSlowADC(int ichan); -int getSlowADCTemperature(); -#endif -#ifdef XILINX_CHIPTESTBOARDD -int getSlowADC(int ichan, int *retval); -int getTemperature(int *retval); -#else -int setHighVoltage(int val); -#if defined(MYTHEN3D) || defined(GOTTHARD2D) -int getHighVoltage(int *retval); -#endif -#endif - -// parameters - timing, extsig -#if defined(EIGERD) || defined(GOTTHARD2D) || defined(JUNGFRAUD) || \ - defined(MOENCHD) -int setMaster(enum MASTERINDEX m); -#endif -#ifdef EIGERD -int setTop(enum TOPINDEX t); -int isTop(int *retval); -#endif -#if defined(MYTHEN3D) || defined(EIGERD) || defined(GOTTHARD2D) || \ - defined(JUNGFRAUD) || defined(MOENCHD) -int isMaster(int *retval); -#endif - -#if defined(JUNGFRAUD) || defined(MOENCHD) -int getSynchronization(); -void setSynchronization(int enable); -#endif - -#ifdef GOTTHARD2D -void updatingRegisters(); -int updateClockDivs(); -#endif -void setTiming(enum timingMode arg); -enum timingMode getTiming(); -#ifdef MYTHEN3D -void setInitialExtSignals(); -int setChipStatusRegister(int csr); -int setGainCaps(int caps); -int setInterpolation(int enable); -int setPumpProbe(int enable); -int setDigitalPulsing(int enable); -int setAnalogPulsing(int enable); -int setNegativePolarity(int enable); -int setDACS(int *dacs); -#endif -#if defined(MYTHEN3D) -void setExtSignal(int signalIndex, enum externalSignalFlag mode); -int getExtSignal(int signalIndex); -#endif - -// configure mac -#if defined(JUNGFRAUD) || defined(MOENCHD) || defined(GOTTHARD2D) -void setNumberofUDPInterfaces(int val); -#endif -int getNumberofUDPInterfaces(); - -#if defined(JUNGFRAUD) || defined(MOENCHD) || defined(EIGERD) || \ - defined(MYTHEN3D) || defined(GOTTHARD2D) -int getNumberofDestinations(int *retval); -int setNumberofDestinations(int value); -#endif -#if defined(JUNGFRAUD) || defined(MOENCHD) || defined(MYTHEN3D) || \ - defined(GOTTHARD2D) -int getFirstUDPDestination(); -void setFirstUDPDestination(int value); -#endif -#if defined(JUNGFRAUD) || defined(MOENCHD) -void selectPrimaryInterface(int val); -int getPrimaryInterface(); -void setupHeader(int iRxEntry, enum interfaceType type, uint32_t destip, - uint64_t destmac, uint16_t destport, uint64_t sourcemac, - uint32_t sourceip, uint16_t sourceport); -#endif -#if defined(JUNGFRAUD) || defined(MOENCHD) || defined(GOTTHARD2D) || \ - defined(MYTHEN3D) || defined(CHIPTESTBOARDD) || \ - defined(XILINX_CHIPTESTBOARDD) -void calcChecksum(udp_header *udp); -#endif - -int configureMAC(); -int setDetectorPosition(int pos[]); -int *getDetectorPosition(); - -#ifdef EIGERD -int setQuad(int value); -int getQuad(); -int setInterruptSubframe(int value); -int getInterruptSubframe(); -int setReadNRows(int value); -int getReadNRows(); -#endif -#if defined(CHIPTESTBOARDD) || defined(EIGERD) || defined(MYTHEN3D) -int enableTenGigabitEthernet(int val); -#endif - -// very detector specific - -// chip test board specific - configure frequency, phase, pll, -// flashing firmware -#if defined(CHIPTESTBOARDD) -int setPhase(enum CLKINDEX ind, int val, int degrees); -int getPhase(enum CLKINDEX ind, int degrees); -int getMaxPhase(enum CLKINDEX ind); -int validatePhaseinDegrees(enum CLKINDEX ind, int val, int retval); -void configureSyncFrequency(enum CLKINDEX ind); -void setADCPipeline(int val); -int getADCPipeline(); -void setDBITPipeline(int val); -int getDBITPipeline(); -int setLEDEnable(int enable); -void setDigitalIODelay(uint64_t pinMask, int delay); -#endif - -#if defined(CHIPTESTBOARDD) || defined(XILINX_CHIPTESTBOARDD) -int setFrequency(enum CLKINDEX ind, int val); -int getFrequency(enum CLKINDEX ind); -#endif - -// jungfrau/moench specific - powerchip, autocompdisable, clockdiv, asictimer, -// clock, pll, flashing firmware -#if defined(MOENCHD) -void setADCPipeline(int val); -int getADCPipeline(); -#endif -#if defined(JUNGFRAUD) || defined(MOENCHD) -int setReadNRows(int value); -int getReadNRows(); -void initReadoutConfiguration(); -int powerChip(int on); -#ifndef MOENCHD -int isChipConfigured(); -void configureChip(); -int autoCompDisable(int on); -int setComparatorDisableTime(int64_t val); -int64_t getComparatorDisableTime(); -void configureASICTimer(); -#endif -int setReadoutSpeed(int val); -int getReadoutSpeed(int *retval); -int setPhase(enum CLKINDEX ind, int val, int degrees); -int getPhase(enum CLKINDEX ind, int degrees); -int getMaxPhase(enum CLKINDEX ind); -int validatePhaseinDegrees(enum CLKINDEX ind, int val, int retval); -int setThresholdTemperature(int val); -int setTemperatureControl(int val); -int setTemperatureEvent(int val); -void alignDeserializer(); -int getFlipRows(); -void setFlipRows(int arg); -#ifndef MOENCHD -int setFilterResistor(int value); -int getFilterResistor(); -int getNumberOfFilterCells(); -void setNumberOfFilterCells(int iCell); -void disableCurrentSource(); -void enableCurrentSource(int fix, uint64_t select, int normal); -int getCurrentSource(); -int getFixCurrentSource(); -int getNormalCurrentSource(); -uint64_t getSelectCurrentSource(); -int getPedestalMode(); -void getPedestalParameters(uint8_t *frames, uint16_t *loops); -void setPedestalMode(int enable, uint8_t frames, uint16_t loops); -int setTimingInfoDecoder(enum timingInfoDecoder val); -int getTimingInfoDecoder(enum timingInfoDecoder *retval); -int getElectronCollectionMode(); -void setElectronCollectionMode(int enable); -#endif - -// eiger specific - iodelay, pulse, rate, temp, activate, delay nw parameter -#elif EIGERD -int setReadoutSpeed(int val); -int getReadoutSpeed(int *retval); -int setIODelay(int val); -int setCounterBit(int val); -int pulsePixel(int n, int x, int y); -int pulsePixelNMove(int n, int x, int y); -int pulseChip(int n); -int updateRateCorrection(char *mess); -int validateAndSetRateCorrection(int64_t tau_ns, char *mess); -int setRateCorrection(int64_t custom_tau_in_nsec); -int getRateCorrectionEnable(); -int getDefaultSettingsTau_in_nsec(); -void setDefaultSettingsTau_in_nsec(int t); -int64_t getCurrentTau(); -void setExternalGating(int enable[]); -int setAllTrimbits(int val); -int getAllTrimbits(); -int getBebFPGATemp(); -int setActivate(int enable); -int getActivate(int *retval); -int getDataStream(enum portPosition port, int *retval); -int setDataStream(enum portPosition port, int enable); - -#elif MYTHEN3D -int checkDetectorType(char *mess); -int powerChip(int on); -int setPhase(enum CLKINDEX ind, int val, int degrees); -int getPhase(enum CLKINDEX ind, int degrees); -int getMaxPhase(enum CLKINDEX ind); -int validatePhaseinDegrees(enum CLKINDEX ind, int val, int retval); -// void setFrequency(enum CLKINDEX ind, int val); -int getFrequency(enum CLKINDEX ind); -int getVCOFrequency(enum CLKINDEX ind); -int getMaxClockDivider(); -int setClockDivider(enum CLKINDEX ind, int val); -int setClockDividerWithTimeUpdateOption(enum CLKINDEX ind, int val, - int timeUpdate); -int getClockDivider(enum CLKINDEX ind); -int setReadoutSpeed(int val); -int getReadoutSpeed(int *retval); -#elif GOTTHARD2D -int checkDetectorType(char *mess); -int powerChip(int on, char *mess); -int getPowerChip(); -int isChipConfigured(); -int configureChip(char *mess); -void setDBITPipeline(int val); -int getDBITPipeline(); -int setPhase(enum CLKINDEX ind, int val, int degrees); -int getPhase(enum CLKINDEX ind, int degrees); -int getMaxPhase(enum CLKINDEX ind); -int validatePhaseinDegrees(enum CLKINDEX ind, int val, int retval); -// void setFrequency(enum CLKINDEX ind, int val); -int getFrequency(enum CLKINDEX ind); -int getVCOFrequency(enum CLKINDEX ind); -int setReadoutSpeed(int val); -int getReadoutSpeed(int *retval); -int getMaxClockDivider(); -int setClockDivider(enum CLKINDEX ind, int val); -int getClockDivider(enum CLKINDEX ind); -int setInjectChannel(int offset, int increment); -void getInjectedChannels(int *offset, int *increment); -int setVetoReference(int gainIndex, int value); -int setVetoPhoton(int chipIndex, int *gainIndices, int *values); -int configureASICVetoReference(int chipIndex, int *gainIndices, int *values); -int getVetoPhoton(int chipIndex, int *retvals, int *gainRetvals); -int setADCConfiguration(int chipIndex, int adcIndex, int value); -int getADCConfiguration(int chipIndex, int adcIndex); -int setBurstModeinFPGA(enum burstMode value); -int setBurstMode(enum burstMode burst); -int configureASICGlobalSettings(); -enum burstMode getBurstMode(); -int setCDSGain(int enable); -int getCDSGain(); -int setFilterResistor(int value); -int getFilterResistor(); -void setCurrentSource(int value); -int getCurrentSource(); -void setTimingSource(enum timingSourceType value); -enum timingSourceType getTimingSource(); -void setVeto(int enable); -int getVeto(); -void setVetoStream(int value); -int getVetoStream(); -enum vetoAlgorithm getVetoAlgorithm(enum streamingInterface interface); -void setVetoAlgorithm(enum vetoAlgorithm alg, - enum streamingInterface interface); -#endif - -#if defined(GOTTHARD2D) || defined(MYTHEN3D) -int setBadChannels(int numChannels, int *channelList); -int *getBadChannels(int *numChannels); -#endif - -#if defined(JUNGFRAUD) || defined(MOENCHD) || defined(EIGERD) -int getTenGigaFlowControl(); -int setTenGigaFlowControl(int value); -#endif -#if defined(JUNGFRAUD) || defined(MOENCHD) || defined(EIGERD) || \ - defined(MYTHEN3D) -int getTransmissionDelayFrame(); -int setTransmissionDelayFrame(int value); -#endif -#ifdef EIGERD -int getTransmissionDelayLeft(); -int setTransmissionDelayLeft(int value); -int getTransmissionDelayRight(); -int setTransmissionDelayRight(int value); -#endif - -// aquisition -int startStateMachine(); -#ifdef VIRTUAL -void *start_timer(void *arg); -#endif -int stopStateMachine(); -#if defined(MYTHEN3D) || defined(XILINX_CHIPTESTBOARDD) -int softwareTrigger(); -#endif -#if defined(EIGERD) || defined(JUNGFRAUD) || defined(MOENCHD) -int softwareTrigger(int block); -#endif -#if defined(EIGERD) || defined(MYTHEN3D) || defined(CHIPTESTBOARDD) -int startReadOut(); -#endif -enum runStatus getRunStatus(); -#ifdef EIGERD -void waitForAcquisitionEnd(int *ret, char *mess); -#else -void waitForAcquisitionEnd(); -#endif -#if defined(CHIPTESTBOARDD) -int validateUDPSocket(); -void readandSendUDPFrames(); -void unsetFifoReadStrobes(); -int readSample(int ns); -uint32_t checkDataInFifo(); -int checkFifoForEndOfAcquisition(); -int readFrameFromFifo(); -#endif - -#if defined(JUNGFRAUD) || defined(MOENCHD) || defined(CHIPTESTBOARDD) || \ - defined(MYTHEN3D) || defined(GOTTHARD2D) || defined(XILINX_CHIPTESTBOARDD) -u_int32_t runBusy(); -#endif - -// common -int calculateDataBytes(); -int getTotalNumberOfChannels(); -#if defined(CHIPTESTBOARDD) || defined(XILINX_CHIPTESTBOARDD) -void getNumberOfChannels(int *nchanx, int *nchany); -#endif -int getNumberOfChips(); -int getNumberOfDACs(); -int getNumberOfChannelsPerChip(); \ No newline at end of file diff --git a/slsDetectorServers/xilinx_ctbDetectorServer/bin/xilinx_ctbDetectorServer_developer b/slsDetectorServers/xilinx_ctbDetectorServer/bin/xilinx_ctbDetectorServer_developer index b3a23d9f5a4fcd165a9da295a6f08086676980c8..d3c921dfeba4d78589624362d28a371de4eea199 100755 GIT binary patch delta 37 scmZ2+RcOUkp@tU5Elj>aj27Gdf|!;|Fj};K%VGjz=I!6IST@-M02t&B;s5{u delta 37 scmZ2+RcOUkp@tU5Elj>aj7Ho2f|!;|FdDUg%VGjz=I!6IST@-M02lxc)&Kwi diff --git a/slsDetectorServers/xilinx_ctbDetectorServer/slsDetectorFunctionList.h b/slsDetectorServers/xilinx_ctbDetectorServer/slsDetectorFunctionList.h new file mode 100644 index 000000000..1b584109f --- /dev/null +++ b/slsDetectorServers/xilinx_ctbDetectorServer/slsDetectorFunctionList.h @@ -0,0 +1,174 @@ +// SPDX-License-Identifier: LGPL-3.0-or-other +// Copyright (C) 2021 Contributors to the SLS Detector Package +#include "sls/sls_detector_defs.h" +#include "slsDetectorServer_defs.h" // DAC_INDEX, ADC_INDEX, also include RegisterDefs.h + +#include "arm64.h" +#include "programViaArm.h" + +#include // FILE +#include +#include + +/**************************************************** +This functions are used by the slsDetectroServer_funcs interface. +Here are the definitions, but the actual implementation should be done for each +single detector. + +****************************************************/ + +enum interfaceType { OUTER, INNER }; +typedef struct udpStruct_s { + uint16_t srcport; + uint16_t srcport2; + uint16_t dstport; + uint16_t dstport2; + uint64_t srcmac; + uint64_t srcmac2; + uint64_t dstmac; + uint64_t dstmac2; + uint32_t srcip; + uint32_t srcip2; + uint32_t dstip; + uint32_t dstip2; +} udpStruct; +#define MAC_ADDRESS_SIZE 18 + +// basic tests +int isInitCheckDone(); +int getInitResult(char **mess); +void basictests(); +int checkType(); +int testFpga(); +int testFixedFPGAPattern(); + +// Ids +void getServerVersion(char *version); +u_int64_t getFirmwareVersion(); +u_int64_t getFirmwareAPIVersion(); +void getHardwareVersion(char *version); +u_int32_t getDetectorNumber(); +u_int64_t getDetectorMAC(); +u_int32_t getDetectorIP(); + +// initialization +void initControlServer(); +void initStopServer(); + +// set up detector +void setupDetector(); + +// firmware functions (resets) +void cleanFifos(); +void resetFlow(); +int waitTransceiverReset(char *mess); +#ifdef VIRTUAL +void setTransceiverAlignment(int align); +#endif +int isTransceiverAligned(); +int waitTransceiverAligned(char *mess); +int configureTransceiver(char *mess); +int isChipConfigured(); +int powerChip(int on, char *mess); +int getPowerChip(); +int configureChip(char *mess); +int readConfigFile(char *mess, char *fileName, char *fileType); +int resetChip(char *mess); + +// parameters - dr, roi +int setDynamicRange(int dr); +int getDynamicRange(int *retval); +void setADCEnableMask_10G(uint32_t mask); +uint32_t getADCEnableMask_10G(); +int setTransceiverEnableMask(uint32_t mask); +uint32_t getTransceiverEnableMask(); + +// parameters - readout +int setReadoutMode(enum readoutMode mode); +int getReadoutMode(); + +// parameters - timer +int setNextFrameNumber(uint64_t value); +int getNextFrameNumber(uint64_t *value); +void setNumFrames(int64_t val); +int64_t getNumFrames(); +void setNumTriggers(int64_t val); +int64_t getNumTriggers(); +int setExpTime(int64_t val); +int64_t getExpTime(); +int setPeriod(int64_t val); +int64_t getPeriod(); +int setNumAnalogSamples(int val); +int getNumAnalogSamples(); +int setNumDigitalSamples(int val); +int getNumDigitalSamples(); +int setNumTransceiverSamples(int val); +int getNumTransceiverSamples(); + +int64_t getNumFramesLeft(); +int64_t getNumTriggersLeft(); +int setDelayAfterTrigger(int64_t val); +int64_t getDelayAfterTrigger(); +int64_t getDelayAfterTriggerLeft(); +int64_t getPeriodLeft(); +int64_t getFramesFromStart(); +int64_t getActualTime(); +int64_t getMeasurementTime(); + +// parameters - module, settings +int setModule(sls_detector_module myMod, char *mess); + +// parameters - dac, adc, hv +void setDAC(enum DACINDEX ind, int val, int mV); +int getDAC(enum DACINDEX ind, int mV); +int getMaxDacSteps(); +int dacToVoltage(int dac); +int checkVLimitCompliant(int mV); +int checkVLimitDacCompliant(int dac); +int getVLimit(); +void setVLimit(int l); +int getBitOffsetFromDACIndex(enum DACINDEX ind); +int isPowerValid(enum DACINDEX ind, int val); +int getPower(); +void setPower(enum DACINDEX ind, int val); +int getADC(enum ADCINDEX ind, int *value); +int getSlowADC(int ichan, int *retval); +int getTemperature(int *retval); +int setHighVoltage(int val); + +// parameters - timing, extsig +void setTiming(enum timingMode arg); +enum timingMode getTiming(); + +// configure mac +int getNumberofUDPInterfaces(); +void calcChecksum(udp_header *udp); +int configureMAC(); +int setDetectorPosition(int pos[]); +int *getDetectorPosition(); + +// very detector specific + +// chip test board specific - configure frequency, phase, pll, +// flashing firmware +int setFrequency(enum CLKINDEX ind, int val); +int getFrequency(enum CLKINDEX ind); + +// aquisition +int startStateMachine(); +#ifdef VIRTUAL +void *start_timer(void *arg); +#endif +int stopStateMachine(); +int softwareTrigger(); +enum runStatus getRunStatus(); +void waitForAcquisitionEnd(); +u_int32_t runBusy(); + +// common +int calculateDataBytes(); +int getTotalNumberOfChannels(); +void getNumberOfChannels(int *nchanx, int *nchany); +int getNumberOfChips(); +int getNumberOfDACs(); +int getNumberOfChannelsPerChip(); \ No newline at end of file