From fdf6632356096eed29f65a5ed93ccdf65b83f21a Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Mon, 5 Jul 2021 15:20:34 +0200 Subject: [PATCH] wip --- slsDetectorServers/eigerDetectorServer/Beb.c | 13 +++++---- .../bin/eigerDetectorServer_developer | Bin 376931 -> 376931 bytes .../src/slsDetectorServer_funcs.c | 26 ++++++++++++++++-- slsDetectorSoftware/src/Module.cpp | 3 ++ slsReceiverSoftware/src/ClientInterface.cpp | 19 +++++++++++++ slsReceiverSoftware/src/ClientInterface.h | 2 ++ slsReceiverSoftware/src/DataProcessor.cpp | 12 +++++++- slsReceiverSoftware/src/DataProcessor.h | 4 ++- slsReceiverSoftware/src/Implementation.cpp | 26 ++++++++++++++---- slsReceiverSoftware/src/Implementation.h | 7 ++++- slsReceiverSoftware/src/Listener.cpp | 16 +++++++---- slsReceiverSoftware/src/Listener.h | 6 +++- slsSupportLib/include/sls/sls_detector_defs.h | 2 ++ .../include/sls/sls_detector_funcs.h | 3 +- slsSupportLib/include/sls/versionAPI.h | 2 +- slsSupportLib/src/ToString.cpp | 2 ++ 16 files changed, 119 insertions(+), 24 deletions(-) diff --git a/slsDetectorServers/eigerDetectorServer/Beb.c b/slsDetectorServers/eigerDetectorServer/Beb.c index 13901392d..b2bd86a28 100644 --- a/slsDetectorServers/eigerDetectorServer/Beb.c +++ b/slsDetectorServers/eigerDetectorServer/Beb.c @@ -479,19 +479,21 @@ int Beb_SetDataStream(int left, int enable) { (left ? XPAR_GPIO_LFT_STRM_DSBL_MSK : XPAR_GPIO_RGHT_STRM_DSBL_MSK); u_int32_t value = Beb_Read32(csp0base, reg); - LOG(logDEBUG, ("data streaming register value before:%d\n", value)); - if (enable) + LOG(logINFO, ("data streaming register value before:0x%x\n", value)); + // disabling in firmware + if (!enable) value |= mask; else value &= ~mask; + LOG(logINFO, ("Going to set data streaming register value:0x%x\n", value)); u_int32_t retval = Beb_Write32(csp0base, reg, value); - if (retval != value) { + /*if (retval != value) { LOG(logERROR, ("Could not %s %s fpga datastream. Wrote 0x%x, read 0x%x\n", (enable ? "enable" : "disable"), (left ? "left" : "right"), value, retval)); Beb_close(fd, csp0base); - } + }*/ } Beb_close(fd, csp0base); return 1; @@ -516,7 +518,8 @@ int Beb_GetDataStream(int left, int *retval) { (left ? XPAR_GPIO_LFT_STRM_DSBL_MSK : XPAR_GPIO_RGHT_STRM_DSBL_MSK); u_int32_t value = Beb_Read32(csp0base, reg); - *retval = (value & mask) ? 1 : 0; + // disabling in firmware + *retval = (value & mask) ? 0 : 1; } Beb_close(fd, csp0base); return 1; diff --git a/slsDetectorServers/eigerDetectorServer/bin/eigerDetectorServer_developer b/slsDetectorServers/eigerDetectorServer/bin/eigerDetectorServer_developer index d527282e96836b7f54c14adb4821f8ade016c4ac..96d9c38cd7714e1c27dfd0dbef3e97733558a847 100755 GIT binary patch delta 61135 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 X^A#9di~32v(@~G<9rnl)tcLtQcmNL` diff --git a/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c b/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c index 39918fbcc..c61fe6eea 100644 --- a/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c +++ b/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c @@ -7055,6 +7055,28 @@ int get_receiver_parameters(int file_des) { if (n < 0) return printSocketReadError(); + // data stream left +#ifdef EIGERD + i32 = 0; + getDataStream(1, &i32); +#else + i32 = 0; +#endif + n += sendData(file_des, &i32, sizeof(i32), INT32); + if (n < 0) + return printSocketReadError(); + + // data stream right +#ifdef EIGERD + i32 = 0; + getDataStream(0, &i32); +#else + i32 = 0; +#endif + n += sendData(file_des, &i32, sizeof(i32), INT32); + if (n < 0) + return printSocketReadError(); + // quad #ifdef EIGERD i32 = getQuad(); @@ -8300,7 +8322,7 @@ int set_datastream(int file_des) { if (ret == FAIL) { sprintf(mess, "Could not %s\n", msg); LOG(logERROR, (mess)); - } else { + } /*else { int retval = -1; ret = getDataStream(leftFpga, &retval); LOG(logDEBUG1, ("%s retval: %u\n", msg, retval)); @@ -8310,7 +8332,7 @@ int set_datastream(int file_des) { LOG(logERROR, (mess)); } validate(&ret, mess, enable, retval, msg, DEC); - } + }*/ } } #endif diff --git a/slsDetectorSoftware/src/Module.cpp b/slsDetectorSoftware/src/Module.cpp index 6fcf5c123..677374930 100644 --- a/slsDetectorSoftware/src/Module.cpp +++ b/slsDetectorSoftware/src/Module.cpp @@ -1516,6 +1516,9 @@ bool Module::getDataStream(const bool left) const { void Module::setDataStream(const bool left, const bool enable) { int args[]{static_cast(left), static_cast(enable)}; sendToDetector(F_SET_DATASTREAM, args, nullptr); + if (shm()->useReceiverFlag) { + sendToReceiver(F_RECEIVER_SET_DATASTREAM, args, nullptr); + } } // Jungfrau Specific diff --git a/slsReceiverSoftware/src/ClientInterface.cpp b/slsReceiverSoftware/src/ClientInterface.cpp index 8f644000e..c35209314 100644 --- a/slsReceiverSoftware/src/ClientInterface.cpp +++ b/slsReceiverSoftware/src/ClientInterface.cpp @@ -209,6 +209,8 @@ int ClientInterface::functionTable(){ flist[F_GET_RECEIVER_STREAMING_HWM] = &ClientInterface::get_streaming_hwm; flist[F_SET_RECEIVER_STREAMING_HWM] = &ClientInterface::set_streaming_hwm; flist[F_RECEIVER_SET_ALL_THRESHOLD] = &ClientInterface::set_all_threshold; + flist[F_RECEIVER_SET_DATASTREAM] = &ClientInterface::set_detector_datastream; + for (int i = NUM_DET_FUNCTIONS + 1; i < NUM_REC_FUNCTIONS ; i++) { LOG(logDEBUG1) << "function fnum: " << i << " (" << @@ -401,6 +403,8 @@ int ClientInterface::setup_receiver(Interface &socket) { impl()->setSubPeriod(std::chrono::nanoseconds(arg.subExpTimeNs) + std::chrono::nanoseconds(arg.subDeadTimeNs)); impl()->setActivate(static_cast(arg.activate)); + impl()->setDetectorDataStream(1, arg.dataStreamLeft); + impl()->setDetectorDataStream(0, arg.dataStreamRight); try { impl()->setQuad(arg.quad == 0 ? false : true); } catch (const RuntimeError &e) { @@ -1695,3 +1699,18 @@ int ClientInterface::set_all_threshold(Interface &socket) { impl()->setThresholdEnergy(eVs); return socket.Send(OK); } + +int ClientInterface::set_detector_datastream(Interface &socket) { + int args[2]{-1, -1}; + socket.Receive(args); + bool left = static_cast(args[0]); + bool enable = static_cast(args[1]); + LOG(logDEBUG1) << "Setting datstream " << (left ? "left" : "right") + << ") to " << sls::ToString(enable); + if (myDetectorType != EIGER) + functionNotImplemented(); + verifyIdle(socket); + impl()->setDetectorDataStream(left, enable); + return socket.Send(OK); +} + diff --git a/slsReceiverSoftware/src/ClientInterface.h b/slsReceiverSoftware/src/ClientInterface.h index fa3d3b683..64ed796c0 100644 --- a/slsReceiverSoftware/src/ClientInterface.h +++ b/slsReceiverSoftware/src/ClientInterface.h @@ -162,6 +162,8 @@ class ClientInterface : private virtual slsDetectorDefs { int get_streaming_hwm(sls::ServerInterface &socket); int set_streaming_hwm(sls::ServerInterface &socket); int set_all_threshold(sls::ServerInterface &socket); + int set_detector_datastream(sls::ServerInterface &socket); + Implementation *impl() { if (receiver != nullptr) { diff --git a/slsReceiverSoftware/src/DataProcessor.cpp b/slsReceiverSoftware/src/DataProcessor.cpp index 6b4c8467f..a506e02fb 100644 --- a/slsReceiverSoftware/src/DataProcessor.cpp +++ b/slsReceiverSoftware/src/DataProcessor.cpp @@ -151,7 +151,7 @@ void DataProcessor::CreateFirstFiles( const bool overWriteEnable, const bool silentMode, const int modulePos, const int numUnitsPerReadout, const uint32_t udpPortNumber, const uint32_t maxFramesPerFile, const uint64_t numImages, - const uint32_t dynamicRange) { + const uint32_t dynamicRange, const bool detectorDataStream) { if (dataFile_ == nullptr) { throw sls::RuntimeError("file object not contstructed"); } @@ -163,6 +163,16 @@ void DataProcessor::CreateFirstFiles( overWriteEnable, silentMode, attr); } + // deactivated with padding enabled, dont write file + if (!*activated_ && !*deactivatedPaddingEnable_) { + return; + } + + // deactivated port, dont write file + if (!detectorDataStream) { + return; + } + switch (dataFile_->GetFileFormat()) { #ifdef HDF5C case HDF5: diff --git a/slsReceiverSoftware/src/DataProcessor.h b/slsReceiverSoftware/src/DataProcessor.h index aca8eb6e1..c05af8784 100644 --- a/slsReceiverSoftware/src/DataProcessor.h +++ b/slsReceiverSoftware/src/DataProcessor.h @@ -60,7 +60,9 @@ class DataProcessor : private virtual slsDetectorDefs, public ThreadObject { const uint32_t udpPortNumber, const uint32_t maxFramesPerFile, const uint64_t numImages, - const uint32_t dynamicRange); + const uint32_t dynamicRange, + const bool detectorDataStream + ); #ifdef HDF5C uint32_t GetFilesInAcquisition() const; void CreateVirtualFile(const std::string filePath, diff --git a/slsReceiverSoftware/src/Implementation.cpp b/slsReceiverSoftware/src/Implementation.cpp index 1e6462e5a..436ea5644 100644 --- a/slsReceiverSoftware/src/Implementation.cpp +++ b/slsReceiverSoftware/src/Implementation.cpp @@ -167,7 +167,7 @@ void Implementation::setDetectorType(const detectorType d) { i, detType, fifo_ptr, &status, &udpPortNum[i], ð[i], &numberOfTotalFrames, &udpSocketBufferSize, &actualUDPSocketBufferSize, &framesPerFile, &frameDiscardMode, - &activated, &deactivatedPaddingEnable, &silentMode)); + &activated, &detectorDataStream[i], &deactivatedPaddingEnable, &silentMode)); dataProcessor.push_back(sls::make_unique( i, detType, fifo_ptr, &activated, &deactivatedPaddingEnable, &dataStreamEnable, &streamingFrequency, &streamingTimerInMs, @@ -610,6 +610,12 @@ void Implementation::stopReceiver() { if (!activated) { LOG(logINFORED) << "Deactivated Receiver"; } + if (!detectorDataStream[0]) { + LOG(logINFORED) << "Deactivated Left Port"; + } + if (!detectorDataStream[1]) { + LOG(logINFORED) << "Deactivated Right Port"; + } // callback if (acquisitionFinishedCallBack) { try { @@ -796,7 +802,7 @@ void Implementation::SetupWriter() { masterAttributes.get(), filePath, fileName, fileIndex, overwriteEnable, silentMode, modulePos, numThreads, udpPortNum[i], framesPerFile, numberOfTotalFrames, - dynamicRange); + dynamicRange, detectorDataStream[i]); } } catch (const sls::RuntimeError &e) { shutDownUDPSockets(); @@ -867,7 +873,7 @@ void Implementation::setNumberofUDPInterfaces(const int n) { i, detType, fifo_ptr, &status, &udpPortNum[i], ð[i], &numberOfTotalFrames, &udpSocketBufferSize, &actualUDPSocketBufferSize, &framesPerFile, - &frameDiscardMode, &activated, &deactivatedPaddingEnable, + &frameDiscardMode, &activated, &detectorDataStream[i], &deactivatedPaddingEnable, &silentMode)); listener[i]->SetGeneralData(generalData); @@ -1497,10 +1503,20 @@ void Implementation::setQuad(const bool b) { bool Implementation::getActivate() const { return activated; } -bool Implementation::setActivate(bool enable) { +void Implementation::setActivate(bool enable) { activated = enable; LOG(logINFO) << "Activation: " << (activated ? "enabled" : "disabled"); - return activated; +} + +bool Implementation::getDetectorDataStream(const bool leftPort) const { + int index = (leftPort ? 0 : 1); + return detectorDataStream[index]; +} + +void Implementation::setDetectorDataStream(const bool leftPort, const bool enable) { + int index = (leftPort ? 0 : 1); + detectorDataStream[index] = enable; + LOG(logINFO) << "Detector datastream (" << (leftPort ? "Left" : "Right") << " Port): " << sls::ToString(detectorDataStream[index]); } bool Implementation::getDeactivatedPadding() const { diff --git a/slsReceiverSoftware/src/Implementation.h b/slsReceiverSoftware/src/Implementation.h index fa54837d7..ac2a1cf10 100644 --- a/slsReceiverSoftware/src/Implementation.h +++ b/slsReceiverSoftware/src/Implementation.h @@ -210,7 +210,11 @@ class Implementation : private virtual slsDetectorDefs { bool getActivate() const; /** [Eiger] If deactivated, receiver will create dummy data if deactivated * padding is enabled (as it will receive nothing from detector) */ - bool setActivate(const bool enable); + void setActivate(const bool enable); + bool getDetectorDataStream(const bool leftPort) const; + /** [Eiger] If datastream is disabled, receiver will create dummy data if deactivated + * padding for that port is enabled (as it will receive nothing from detector) */ + void setDetectorDataStream(const bool leftPort, const bool enable); bool getDeactivatedPadding() const; /* [Eiger] */ void setDeactivatedPadding(const bool enable); @@ -346,6 +350,7 @@ class Implementation : private virtual slsDetectorDefs { int flippedDataX{0}; bool quadEnable{false}; bool activated{true}; + std::array detectorDataStream = {{true, true}}; bool deactivatedPaddingEnable{true}; int numLinesReadout{MAX_EIGER_ROWS_PER_READOUT}; int thresholdEnergyeV{-1}; diff --git a/slsReceiverSoftware/src/Listener.cpp b/slsReceiverSoftware/src/Listener.cpp index f1b1bcee1..9b0aaed55 100644 --- a/slsReceiverSoftware/src/Listener.cpp +++ b/slsReceiverSoftware/src/Listener.cpp @@ -22,11 +22,11 @@ const std::string Listener::TypeName = "Listener"; Listener::Listener(int ind, detectorType dtype, Fifo *f, std::atomic *s, uint32_t *portno, std::string *e, uint64_t *nf, int *us, int *as, uint32_t *fpf, - frameDiscardPolicy *fdp, bool *act, bool *depaden, bool *sm) + frameDiscardPolicy *fdp, bool *act, bool* detds, bool *depaden, bool *sm) : ThreadObject(ind, TypeName), fifo(f), myDetectorType(dtype), status(s), udpPortNumber(portno), eth(e), numImages(nf), udpSocketBufferSize(us), actualUDPSocketBufferSize(as), framesPerFile(fpf), frameDiscardMode(fdp), - activated(act), deactivatedPaddingEnable(depaden), silentMode(sm) { + activated(act), detectorDataStream(detds), deactivatedPaddingEnable(depaden), silentMode(sm) { LOG(logDEBUG) << "Listener " << ind << " created"; } @@ -94,7 +94,7 @@ void Listener::RecordFirstIndex(uint64_t fnum) { void Listener::SetGeneralData(GeneralData *g) { generalData = g; } void Listener::CreateUDPSockets() { - if (!(*activated)) { + if (!(*activated) || !(*detectorDataStream)) { return; } @@ -144,7 +144,7 @@ void Listener::CreateDummySocketForUDPSocketBufferSize(int s) { LOG(logINFO) << "Testing UDP Socket Buffer size " << s << " with test port " << *udpPortNumber; - if (!(*activated)) { + if (!(*activated) || !(*detectorDataStream)) { *actualUDPSocketBufferSize = (s * 2); return; } @@ -201,7 +201,7 @@ void Listener::ThreadExecution() { << std::hex << (void *)(buffer) << std::dec << ":" << buffer; // udpsocket doesnt exist - if (*activated && !udpSocketAlive && !carryOverFlag) { + if (*activated && *detectorDataStream && !udpSocketAlive && !carryOverFlag) { // LOG(logERROR) << "Listening_Thread " << index << ": UDP Socket not // created or shut down earlier"; (*((uint32_t *)buffer)) = 0; @@ -210,7 +210,7 @@ void Listener::ThreadExecution() { } // get data - if ((*status != TRANSMITTING && (!(*activated) || udpSocketAlive)) || + if ((*status != TRANSMITTING && (!(*activated) || !(*detectorDataStream) || udpSocketAlive)) || carryOverFlag) { rc = ListenToAnImage(buffer); } @@ -293,6 +293,10 @@ uint32_t Listener::ListenToAnImage(char *buf) { memset(buf, 0, fifohsize); new_header = (sls_receiver_header *)(buf + FIFO_HEADER_NUMBYTES); + // deactivated port (eiger) + if (!(*detectorDataStream)) { + return 0; + } // deactivated (eiger) if (!(*activated)) { // no padding diff --git a/slsReceiverSoftware/src/Listener.h b/slsReceiverSoftware/src/Listener.h index 5f6bdc46e..eff5800dc 100644 --- a/slsReceiverSoftware/src/Listener.h +++ b/slsReceiverSoftware/src/Listener.h @@ -37,12 +37,13 @@ class Listener : private virtual slsDetectorDefs, public ThreadObject { * @param fpf pointer to frames per file * @param fdp frame discard policy * @param act pointer to activated + * @param detds pointer to detector data stream * @param depaden pointer to deactivated padding enable * @param sm pointer to silent mode */ Listener(int ind, detectorType dtype, Fifo *f, std::atomic *s, uint32_t *portno, std::string *e, uint64_t *nf, int *us, int *as, - uint32_t *fpf, frameDiscardPolicy *fdp, bool *act, bool *depaden, + uint32_t *fpf, frameDiscardPolicy *fdp, bool *act, bool* detds, bool *depaden, bool *sm); /** @@ -187,6 +188,9 @@ class Listener : private virtual slsDetectorDefs, public ThreadObject { /** Activated/Deactivated */ bool *activated; + /** detector data stream */ + bool* detectorDataStream; + /** Deactivated padding enable */ bool *deactivatedPaddingEnable; diff --git a/slsSupportLib/include/sls/sls_detector_defs.h b/slsSupportLib/include/sls/sls_detector_defs.h index 28a6403a9..5b15b0630 100644 --- a/slsSupportLib/include/sls/sls_detector_defs.h +++ b/slsSupportLib/include/sls/sls_detector_defs.h @@ -459,6 +459,8 @@ typedef struct { int64_t subExpTimeNs{0}; int64_t subDeadTimeNs{0}; int activate{0}; + int dataStreamLeft{0}; + int dataStreamRight{0}; int quad{0}; int numLinesReadout{0}; int thresholdEnergyeV[3]{0, 0, 0}; diff --git a/slsSupportLib/include/sls/sls_detector_funcs.h b/slsSupportLib/include/sls/sls_detector_funcs.h index 061964010..e0f46f96a 100755 --- a/slsSupportLib/include/sls/sls_detector_funcs.h +++ b/slsSupportLib/include/sls/sls_detector_funcs.h @@ -330,6 +330,7 @@ enum detFuncs { F_GET_RECEIVER_STREAMING_HWM, F_SET_RECEIVER_STREAMING_HWM, F_RECEIVER_SET_ALL_THRESHOLD, + F_RECEIVER_SET_DATASTREAM, NUM_REC_FUNCTIONS }; @@ -658,7 +659,7 @@ const char* getFunctionNameFromEnum(enum detFuncs func) { case F_GET_RECEIVER_STREAMING_HWM: return "F_GET_RECEIVER_STREAMING_HWM"; case F_SET_RECEIVER_STREAMING_HWM: return "F_SET_RECEIVER_STREAMING_HWM"; case F_RECEIVER_SET_ALL_THRESHOLD: return "F_RECEIVER_SET_ALL_THRESHOLD"; - + case F_RECEIVER_SET_DATASTREAM: return "F_RECEIVER_SET_DATASTREAM"; case NUM_REC_FUNCTIONS: return "NUM_REC_FUNCTIONS"; default: return "Unknown Function"; diff --git a/slsSupportLib/include/sls/versionAPI.h b/slsSupportLib/include/sls/versionAPI.h index 2fcef8069..b8fc94ae9 100644 --- a/slsSupportLib/include/sls/versionAPI.h +++ b/slsSupportLib/include/sls/versionAPI.h @@ -10,4 +10,4 @@ #define APIMYTHEN3 0x210621 #define APIMOENCH 0x210621 -#define APIEIGER 0x210702 +#define APIEIGER 0x210705 diff --git a/slsSupportLib/src/ToString.cpp b/slsSupportLib/src/ToString.cpp index 3d5b92de5..8593d4fb8 100644 --- a/slsSupportLib/src/ToString.cpp +++ b/slsSupportLib/src/ToString.cpp @@ -52,6 +52,8 @@ std::string ToString(const slsDetectorDefs::rxParameters &r) { << "subDeadTime:" << ToString(std::chrono::nanoseconds(r.subDeadTimeNs)) << std::endl << "activate:" << r.activate << std::endl + << "leftDataStream:" << r.dataStreamLeft << std::endl + << "rightDataStream:" << r.dataStreamRight << std::endl << "quad:" << r.quad << std::endl << "numLinesReadout:" << r.numLinesReadout << std::endl << "thresholdEnergyeV:" << ToString(r.thresholdEnergyeV) << std::endl