diff --git a/.clang-format b/.clang-format index b6bcb71ce..1032b76aa 100644 --- a/.clang-format +++ b/.clang-format @@ -2,5 +2,5 @@ BasedOnStyle: LLVM IndentWidth: 4 UseTab: Never -ColumnLimit: 0 +ColumnLimit: 100 AlignConsecutiveAssignments: false \ No newline at end of file diff --git a/integrationTests/CMakeLists.txt b/integrationTests/CMakeLists.txt index 871f62327..10d53fad2 100644 --- a/integrationTests/CMakeLists.txt +++ b/integrationTests/CMakeLists.txt @@ -7,13 +7,13 @@ include_directories( ${PROJECT_SOURCE_DIR}/catch ) - if(SLS_USE_TESTS) set(TEST_SOURCES src/test-slsDetector.cpp src/test.cpp ) add_executable(detector_test ${TEST_SOURCES}) + target_link_libraries(detector_test slsDetectorShared slsSupportLib @@ -24,40 +24,16 @@ if(SLS_USE_TESTS) RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin ) add_executable(a src/a.cpp) + target_link_libraries(a slsDetectorShared slsSupportLib pthread rt ) - set_target_properties(a PROPERTIES - RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin - ) + set_target_properties(a PROPERTIES + RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin + ) endif() - - -#option(SLS_USE_TESTS "Determines whether to build tests." OFF) -# if(SLS_USE_TESTS) -# # Prepare "Catch" library for other executables -# set(CATCH_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/catch) -# add_library(Catch INTERFACE) -# target_include_directories(Catch INTERFACE ${CATCH_INCLUDE_DIR}) - -# # Make test executable -# add_executable(tests ${BASE_TEST_SOURCES}) -# target_link_libraries(tests Catch) - -# set_target_properties(tests PROPERTIES -# RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin -# ) - -# #enable_testing() -# #add_test(NAME CommandLineClient COMMAND tests) - -# endif() - - -# install(TARGETS sls_client DESTINATION bin) - diff --git a/slsDetectorSoftware/CMakeLists.txt b/slsDetectorSoftware/CMakeLists.txt index 120b3644e..c59b43184 100644 --- a/slsDetectorSoftware/CMakeLists.txt +++ b/slsDetectorSoftware/CMakeLists.txt @@ -1,9 +1,8 @@ set(SOURCES - multiSlsDetector/multiSlsDetector.cpp - # sharedMemory/SharedMemory.cpp - slsDetector/slsDetectorUsers.cpp - slsDetector/slsDetectorCommand.cpp - slsDetector/slsDetector.cpp + src/multiSlsDetector.cpp + src/slsDetectorUsers.cpp + src/slsDetectorCommand.cpp + src/slsDetector.cpp ) set(HEADERS @@ -14,9 +13,7 @@ add_library(slsDetectorShared SHARED ${HEADERS} ) target_include_directories(slsDetectorShared PUBLIC - "$" - "$" - "$" + "$" "$" ) @@ -26,11 +23,11 @@ target_link_libraries(slsDetectorShared PUBLIC ) set(PUBLICHEADERS - sharedMemory/SharedMemory.h - slsDetector/slsDetector.h - slsDetector/slsDetectorUsers.h - slsDetector/detectorData.h - multiSlsDetector/multiSlsDetector.h + include/SharedMemory.h + include/slsDetector.h + include/slsDetectorUsers.h + include/detectorData.h + include/multiSlsDetector.h ) set_target_properties(slsDetectorShared PROPERTIES LIBRARY_OUTPUT_NAME SlsDetector @@ -38,7 +35,67 @@ set_target_properties(slsDetectorShared PROPERTIES PUBLIC_HEADER "${PUBLICHEADERS}" ) -add_subdirectory(slsDetectorClient) +# add_subdirectory(slsDetectorClient) + +add_executable(sls_detector_get + src/sls_detector_client.cpp +) +target_link_libraries(sls_detector_get + slsDetectorShared + slsSupportLib + pthread + ${ZeroMQ_LIBRARIES} + rt +) +set_target_properties(sls_detector_get PROPERTIES + RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin + COMPILE_DEFINITIONS GET=1 +) + +add_executable(sls_detector_put + src/sls_detector_client.cpp +) +target_link_libraries(sls_detector_put + slsDetectorShared + pthread + ${ZeroMQ_LIBRARIES} + rt +) +set_target_properties(sls_detector_put PROPERTIES + RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin + COMPILE_DEFINITIONS PUT=1 +) + +add_executable(sls_detector_acquire + src/sls_detector_client.cpp +) +target_link_libraries(sls_detector_acquire + slsDetectorShared + pthread + ${ZeroMQ_LIBRARIES} + rt +) +set_target_properties(sls_detector_acquire PROPERTIES + RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin + COMPILE_DEFINITIONS READOUT=1 +) + +add_executable(sls_detector_help + src/sls_detector_client.cpp +) +target_link_libraries(sls_detector_help + slsDetectorShared + pthread + ${ZeroMQ_LIBRARIES} + rt +) +set_target_properties(sls_detector_help PROPERTIES + RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin + COMPILE_DEFINITIONS HELP=1 +) + +install(TARGETS sls_detector_put sls_detector_get sls_detector_acquire sls_detector_help DESTINATION bin) + if(DOXYGEN_FOUND) add_custom_target(doc diff --git a/slsDetectorSoftware/sharedMemory/SharedMemory.h b/slsDetectorSoftware/include/SharedMemory.h similarity index 100% rename from slsDetectorSoftware/sharedMemory/SharedMemory.h rename to slsDetectorSoftware/include/SharedMemory.h diff --git a/slsDetectorSoftware/slsDetector/detectorData.h b/slsDetectorSoftware/include/detectorData.h similarity index 100% rename from slsDetectorSoftware/slsDetector/detectorData.h rename to slsDetectorSoftware/include/detectorData.h diff --git a/slsDetectorSoftware/slsDetector/gitInfoLib.h b/slsDetectorSoftware/include/gitInfoLib.h similarity index 100% rename from slsDetectorSoftware/slsDetector/gitInfoLib.h rename to slsDetectorSoftware/include/gitInfoLib.h diff --git a/slsDetectorSoftware/slsDetector/gitInfoLibTmp.h b/slsDetectorSoftware/include/gitInfoLibTmp.h similarity index 100% rename from slsDetectorSoftware/slsDetector/gitInfoLibTmp.h rename to slsDetectorSoftware/include/gitInfoLibTmp.h diff --git a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.h b/slsDetectorSoftware/include/multiSlsDetector.h similarity index 100% rename from slsDetectorSoftware/multiSlsDetector/multiSlsDetector.h rename to slsDetectorSoftware/include/multiSlsDetector.h diff --git a/slsDetectorSoftware/multiSlsDetector/multiSlsDetectorClient.h b/slsDetectorSoftware/include/multiSlsDetectorClient.h similarity index 100% rename from slsDetectorSoftware/multiSlsDetector/multiSlsDetectorClient.h rename to slsDetectorSoftware/include/multiSlsDetectorClient.h diff --git a/slsDetectorSoftware/slsDetector/slsDetector.h b/slsDetectorSoftware/include/slsDetector.h similarity index 100% rename from slsDetectorSoftware/slsDetector/slsDetector.h rename to slsDetectorSoftware/include/slsDetector.h diff --git a/slsDetectorSoftware/slsDetector/slsDetectorCommand.h b/slsDetectorSoftware/include/slsDetectorCommand.h similarity index 100% rename from slsDetectorSoftware/slsDetector/slsDetectorCommand.h rename to slsDetectorSoftware/include/slsDetectorCommand.h diff --git a/slsDetectorSoftware/slsDetector/slsDetectorUsers.h b/slsDetectorSoftware/include/slsDetectorUsers.h similarity index 100% rename from slsDetectorSoftware/slsDetector/slsDetectorUsers.h rename to slsDetectorSoftware/include/slsDetectorUsers.h diff --git a/slsDetectorSoftware/slsDetectorClient/CMakeLists.txt b/slsDetectorSoftware/slsDetectorClient/CMakeLists.txt deleted file mode 100644 index 7cd78795f..000000000 --- a/slsDetectorSoftware/slsDetectorClient/CMakeLists.txt +++ /dev/null @@ -1,62 +0,0 @@ -set(SOURCES - sls_detector_client.cpp -) - -add_executable(sls_detector_get - ${SOURCES} -) -target_link_libraries(sls_detector_get - slsDetectorShared - slsSupportLib - pthread - ${ZeroMQ_LIBRARIES} - rt -) -set_target_properties(sls_detector_get PROPERTIES - RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin - COMPILE_DEFINITIONS GET=1 -) - -add_executable(sls_detector_put - ${SOURCES} -) -target_link_libraries(sls_detector_put - slsDetectorShared - pthread - ${ZeroMQ_LIBRARIES} - rt -) -set_target_properties(sls_detector_put PROPERTIES - RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin - COMPILE_DEFINITIONS PUT=1 -) - -add_executable(sls_detector_acquire - ${SOURCES} -) -target_link_libraries(sls_detector_acquire - slsDetectorShared - pthread - ${ZeroMQ_LIBRARIES} - rt -) -set_target_properties(sls_detector_acquire PROPERTIES - RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin - COMPILE_DEFINITIONS READOUT=1 -) - -add_executable(sls_detector_help - ${SOURCES} -) -target_link_libraries(sls_detector_help - slsDetectorShared - pthread - ${ZeroMQ_LIBRARIES} - rt -) -set_target_properties(sls_detector_help PROPERTIES - RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin - COMPILE_DEFINITIONS HELP=1 -) - -install(TARGETS sls_detector_put sls_detector_get sls_detector_acquire sls_detector_help DESTINATION bin) diff --git a/slsDetectorSoftware/slsDetectorClient/Makefile.x04sa b/slsDetectorSoftware/slsDetectorClient/Makefile.x04sa deleted file mode 100644 index bb800f7c1..000000000 --- a/slsDetectorSoftware/slsDetectorClient/Makefile.x04sa +++ /dev/null @@ -1,54 +0,0 @@ -CFLAGS= -DC_ONLY -FLAGS=-DVERBOSE -INCLUDES= -I../slsSupportLib/include -I../slsDetectorSoftware/slsDetector -I ../slsDetectorSoftware/MySocketTCP -I../slsDetectorSoftware/usersFunctions -I../slsDetectorSoftware/multiSlsDetector -I../slsDetectorSoftware/slsDetectorAnalysis -LIBS= -L../slsDetectorSoftware/ -LDFLAG= -lSlsDetector -pthread - -EPICSFLAGS=-DEPICS -I/usr/local/epics/base/include/ -I /usr/local/epics/base/include/os/Linux/ -L /usr/local/epics/base/lib/SL5-x86/ -Wl,-R/usr/local/epics/base/lib/SL5-x86 -lca -lCom - -BIN=bin - -SRC_CLNT=sls_detector_client.cpp - -clients: sls_detector_put sls_detector_get sls_detector_acquire sls_detector_help - -all: lib clients - -lib: - cd ../slsDetectorSoftware && $(MAKE) lib - - - -sls_detector_put: $(SRC_CLNT) - mkdir -p $(BIN) - $(CXX) -o $(BIN)/sls_detector_put $(SRC_CLNT) $(FLAGS) $(INCLUDES) -DPUT $(LIBS) $(LDFLAG) $(EPICSFLAGS) - -sls_detector_get: $(SRC_CLNT) - mkdir -p $(BIN) - $(CXX) -o $(BIN)/sls_detector_get $(SRC_CLNT) $(FLAGS) $(INCLUDES) -DGET $(LIBS) $(LDFLAG) $(EPICSFLAGS) - -sls_detector_acquire: $(SRC_CLNT) - mkdir -p $(BIN) - $(CXX) -o $(BIN)/sls_detector_acquire $(SRC_CLNT) $(FLAGS) $(INCLUDES) -DREADOUT $(LIBS) $(LDFLAG) $(EPICSFLAGS) - -sls_detector_help: $(SRC_CLNT) - mkdir -p $(BIN) - $(CXX) -o $(BIN)/sls_detector_help $(SRC_CLNT) $(FLAGS) $(INCLUDES) -DHELP $(LIBS) $(LDFLAG) $(EPICSFLAGS) - - -clean: - rm -rf $(BIN)/sls_detector_* - - - - - -install_sls_detector: all - $(shell test -d $(DESTDIR) || mkdir -p $(DESTDIR)) - cp -P $(BIN)/sls_detector_put $(DESTDIR) - cp -P $(BIN)/sls_detector_get $(DESTDIR) - cp -P $(BIN)/sls_detector_acquire $(DESTDIR) - cp -P $(BIN)/sls_detector_help $(DESTDIR) - - - diff --git a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp b/slsDetectorSoftware/src/multiSlsDetector.cpp similarity index 90% rename from slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp rename to slsDetectorSoftware/src/multiSlsDetector.cpp index 1b2df2c8b..c28ef5029 100644 --- a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp +++ b/slsDetectorSoftware/src/multiSlsDetector.cpp @@ -32,8 +32,7 @@ using sls::SharedMemory; using sls::SharedMemoryError; multiSlsDetector::multiSlsDetector(int multi_id, bool verify, bool update) - : multiId(multi_id), - multi_shm(multi_id, -1) { + : multiId(multi_id), multi_shm(multi_id, -1) { setupMultiDetector(verify, update); } @@ -70,12 +69,11 @@ std::vector multiSlsDetector::serialCall(RT (slsDetector::*somefunc)(CT...) } template -std::vector -multiSlsDetector::parallelCall(RT (slsDetector::*somefunc)(CT...), typename NonDeduced::type... Args) { +std::vector multiSlsDetector::parallelCall(RT (slsDetector::*somefunc)(CT...), + typename NonDeduced::type... Args) { std::vector> futures; for (auto &d : detectors) { - futures.push_back( - std::async(std::launch::async, somefunc, d.get(), Args...)); + futures.push_back(std::async(std::launch::async, somefunc, d.get(), Args...)); } std::vector result; result.reserve(detectors.size()); @@ -86,12 +84,11 @@ multiSlsDetector::parallelCall(RT (slsDetector::*somefunc)(CT...), typename NonD } template -std::vector -multiSlsDetector::parallelCall(RT (slsDetector::*somefunc)(CT...) const, typename NonDeduced::type... Args) const { +std::vector multiSlsDetector::parallelCall(RT (slsDetector::*somefunc)(CT...) const, + typename NonDeduced::type... Args) const { std::vector> futures; for (auto &d : detectors) { - futures.push_back( - std::async(std::launch::async, somefunc, d.get(), Args...)); + futures.push_back(std::async(std::launch::async, somefunc, d.get(), Args...)); } std::vector result; result.reserve(detectors.size()); @@ -101,8 +98,7 @@ multiSlsDetector::parallelCall(RT (slsDetector::*somefunc)(CT...) const, typenam return result; } -int multiSlsDetector::decodeNChannel(int offsetX, int offsetY, int &channelX, - int &channelY) { +int multiSlsDetector::decodeNChannel(int offsetX, int offsetY, int &channelX, int &channelY) { channelX = -1; channelY = -1; // loop over @@ -111,17 +107,14 @@ int multiSlsDetector::decodeNChannel(int offsetX, int offsetY, int &channelX, int y = detectors[i]->getDetectorOffset(Y); // check x offset range if ((offsetX >= x) && - (offsetX < - (x + detectors[i]->getTotalNumberOfChannelsInclGapPixels(X)))) { + (offsetX < (x + detectors[i]->getTotalNumberOfChannelsInclGapPixels(X)))) { if (offsetY == -1) { channelX = offsetX - x; return i; } else { // check y offset range if ((offsetY >= y) && - (offsetY < - (y + detectors[i]->getTotalNumberOfChannelsInclGapPixels( - Y)))) { + (offsetY < (y + detectors[i]->getTotalNumberOfChannelsInclGapPixels(Y)))) { channelX = offsetX - x; channelY = offsetY - y; return i; @@ -132,13 +125,9 @@ int multiSlsDetector::decodeNChannel(int offsetX, int offsetY, int &channelX, return -1; } -void multiSlsDetector::setAcquiringFlag(bool flag) { - multi_shm()->acquiringFlag = flag; -} +void multiSlsDetector::setAcquiringFlag(bool flag) { multi_shm()->acquiringFlag = flag; } -bool multiSlsDetector::getAcquiringFlag() const { - return multi_shm()->acquiringFlag; -} +bool multiSlsDetector::getAcquiringFlag() const { return multi_shm()->acquiringFlag; } bool multiSlsDetector::isAcquireReady() { if (multi_shm()->acquiringFlag) { @@ -245,8 +234,7 @@ std::string multiSlsDetector::getUserDetails() { sstream << d->getDetectorTypeAsString() << "+"; } - sstream << "\nPID: " << multi_shm()->lastPID - << "\nUser: " << multi_shm()->lastUser + sstream << "\nPID: " << multi_shm()->lastPID << "\nUser: " << multi_shm()->lastUser << "\nDate: " << multi_shm()->lastDate << std::endl; return sstream.str(); @@ -259,9 +247,11 @@ void multiSlsDetector::initSharedMemory(bool verify) { } else { multi_shm.OpenSharedMemory(); if (verify && multi_shm()->shmversion != MULTI_SHMVERSION) { - FILE_LOG(logERROR) << "Multi shared memory (" << multiId << ") version mismatch " - "(expected 0x" - << std::hex << MULTI_SHMVERSION << " but got 0x" << multi_shm()->shmversion << std::dec; + FILE_LOG(logERROR) << "Multi shared memory (" << multiId + << ") version mismatch " + "(expected 0x" + << std::hex << MULTI_SHMVERSION << " but got 0x" + << multi_shm()->shmversion << std::dec; throw SharedMemoryError("Shared memory version mismatch!"); } } @@ -299,8 +289,7 @@ void multiSlsDetector::initializeMembers(bool verify) { // get objects from single det shared memory (open) for (int i = 0; i < multi_shm()->numberOfDetectors; i++) { try { - detectors.push_back( - sls::make_unique(multiId, i, verify)); + detectors.push_back(sls::make_unique(multiId, i, verify)); } catch (...) { detectors.clear(); throw; @@ -390,8 +379,8 @@ void multiSlsDetector::addSlsDetector(const std::string &hostname) { for (auto &d : detectors) { if (d->getHostname() == hostname) { - FILE_LOG(logWARNING) << "Detector " << hostname - << "already part of the multiDetector!" << std::endl + FILE_LOG(logWARNING) << "Detector " << hostname << "already part of the multiDetector!" + << std::endl << "Remove it before adding it back in a new position!"; return; } @@ -403,10 +392,8 @@ void multiSlsDetector::addSlsDetector(const std::string &hostname) { detectors.push_back(sls::make_unique(type, multiId, pos, false)); multi_shm()->numberOfDetectors = detectors.size(); multi_shm()->dataBytes += detectors[pos]->getDataBytes(); - multi_shm()->dataBytesInclGapPixels += - detectors[pos]->getDataBytesInclGapPixels(); - multi_shm()->numberOfChannels += - detectors[pos]->getTotalNumberOfChannels(); + multi_shm()->dataBytesInclGapPixels += detectors[pos]->getDataBytesInclGapPixels(); + multi_shm()->numberOfChannels += detectors[pos]->getTotalNumberOfChannels(); detectors[pos]->setHostname(hostname); detectors[pos]->setOnline(true); @@ -434,9 +421,7 @@ std::string multiSlsDetector::getDetectorTypeAsString(int detPos) { return sls::concatenateIfDifferent(r); } -int multiSlsDetector::getNumberOfDetectors() const { - return detectors.size(); -} +int multiSlsDetector::getNumberOfDetectors() const { return detectors.size(); } int multiSlsDetector::getNumberOfDetectors(dimension d) const { return multi_shm()->numberOfDetector[d]; @@ -467,8 +452,7 @@ int multiSlsDetector::getTotalNumberOfChannels(dimension d, int detPos) { return multi_shm()->numberOfChannel[d]; } -int multiSlsDetector::getTotalNumberOfChannelsInclGapPixels(dimension d, - int detPos) { +int multiSlsDetector::getTotalNumberOfChannelsInclGapPixels(dimension d, int detPos) { // single if (detPos >= 0) { return detectors[detPos]->getTotalNumberOfChannelsInclGapPixels(d); @@ -517,7 +501,10 @@ void multiSlsDetector::updateOffsets() { multi_shm()->numberOfChannelInclGapPixels[Y] = 0; for (size_t idet = 0; idet < detectors.size(); ++idet) { - FILE_LOG(logDEBUG1) << "offsetX:" << offsetX << " prevChanX:" << prevChanX << " offsetY:" << offsetY << " prevChanY:" << prevChanY << " offsetX_gp:" << offsetX_gp << " prevChanX_gp:" << prevChanX_gp << " offsetY_gp:" << offsetY_gp << " prevChanY_gp:" << prevChanY_gp; + FILE_LOG(logDEBUG1) << "offsetX:" << offsetX << " prevChanX:" << prevChanX + << " offsetY:" << offsetY << " prevChanY:" << prevChanY + << " offsetX_gp:" << offsetX_gp << " prevChanX_gp:" << prevChanX_gp + << " offsetY_gp:" << offsetY_gp << " prevChanY_gp:" << prevChanY_gp; // incrementing in both direction if (firstTime) { @@ -537,16 +524,12 @@ void multiSlsDetector::updateOffsets() { } prevChanX = detectors[idet]->getTotalNumberOfChannels(X); prevChanY = detectors[idet]->getTotalNumberOfChannels(Y); - prevChanX_gp = - detectors[idet]->getTotalNumberOfChannelsInclGapPixels(X); - prevChanY_gp = - detectors[idet]->getTotalNumberOfChannelsInclGapPixels(Y); + prevChanX_gp = detectors[idet]->getTotalNumberOfChannelsInclGapPixels(X); + prevChanY_gp = detectors[idet]->getTotalNumberOfChannelsInclGapPixels(Y); numX += detectors[idet]->getTotalNumberOfChannels(X); numY += detectors[idet]->getTotalNumberOfChannels(Y); - numX_gp += - detectors[idet]->getTotalNumberOfChannelsInclGapPixels(X); - numY_gp += - detectors[idet]->getTotalNumberOfChannelsInclGapPixels(Y); + numX_gp += detectors[idet]->getTotalNumberOfChannelsInclGapPixels(X); + numY_gp += detectors[idet]->getTotalNumberOfChannelsInclGapPixels(Y); ++multi_shm()->numberOfDetector[X]; ++multi_shm()->numberOfDetector[Y]; FILE_LOG(logDEBUG1) << "incrementing in both direction"; @@ -555,16 +538,13 @@ void multiSlsDetector::updateOffsets() { // incrementing in y direction else if ((maxChanY == -1) || ((maxChanY > 0) && ((offsetY + prevChanY + - detectors[idet]->getTotalNumberOfChannels( - Y)) <= maxChanY))) { + detectors[idet]->getTotalNumberOfChannels(Y)) <= maxChanY))) { offsetY += prevChanY; offsetY_gp += prevChanY_gp; prevChanY = detectors[idet]->getTotalNumberOfChannels(Y); - prevChanY_gp = - detectors[idet]->getTotalNumberOfChannelsInclGapPixels(Y); + prevChanY_gp = detectors[idet]->getTotalNumberOfChannelsInclGapPixels(Y); numY += detectors[idet]->getTotalNumberOfChannels(Y); - numY_gp += - detectors[idet]->getTotalNumberOfChannelsInclGapPixels(Y); + numY_gp += detectors[idet]->getTotalNumberOfChannelsInclGapPixels(Y); // increment in y again only in the first column (else you double increment) if (multi_shm()->numberOfDetector[X] == 1) ++multi_shm()->numberOfDetector[Y]; @@ -574,8 +554,7 @@ void multiSlsDetector::updateOffsets() { // incrementing in x direction else { if ((maxChanX > 0) && - ((offsetX + prevChanX + - detectors[idet]->getTotalNumberOfChannels(X)) > maxChanX)) { + ((offsetX + prevChanX + detectors[idet]->getTotalNumberOfChannels(X)) > maxChanX)) { FILE_LOG(logDEBUG1) << "\nDetector[" << idet << "] exceeds maximum channels " "allowed for complete detector set in X dimension!"; @@ -583,31 +562,25 @@ void multiSlsDetector::updateOffsets() { offsetY = 0; offsetY_gp = 0; prevChanY = detectors[idet]->getTotalNumberOfChannels(Y); - prevChanY_gp = - detectors[idet]->getTotalNumberOfChannelsInclGapPixels(Y); + prevChanY_gp = detectors[idet]->getTotalNumberOfChannelsInclGapPixels(Y); numY = 0; // assuming symmetry with this statement. // whats on 1st column should be on 2nd column numY_gp = 0; offsetX += prevChanX; offsetX_gp += prevChanX_gp; prevChanX = detectors[idet]->getTotalNumberOfChannels(X); - prevChanX_gp = - detectors[idet]->getTotalNumberOfChannelsInclGapPixels(X); + prevChanX_gp = detectors[idet]->getTotalNumberOfChannelsInclGapPixels(X); numX += detectors[idet]->getTotalNumberOfChannels(X); - numX_gp += - detectors[idet]->getTotalNumberOfChannelsInclGapPixels(X); + numX_gp += detectors[idet]->getTotalNumberOfChannelsInclGapPixels(X); ++multi_shm()->numberOfDetector[X]; FILE_LOG(logDEBUG1) << "incrementing in x direction"; } - double bytesperchannel = - (double)detectors[idet]->getDataBytes() / - (double)(detectors[idet]->getTotalNumberOfChannels(X) * - detectors[idet]->getTotalNumberOfChannels(Y)); - detectors[idet]->setDetectorOffset( - X, (bytesperchannel >= 1.0) ? offsetX_gp : offsetX); - detectors[idet]->setDetectorOffset( - Y, (bytesperchannel >= 1.0) ? offsetY_gp : offsetY); + double bytesperchannel = (double)detectors[idet]->getDataBytes() / + (double)(detectors[idet]->getTotalNumberOfChannels(X) * + detectors[idet]->getTotalNumberOfChannels(Y)); + detectors[idet]->setDetectorOffset(X, (bytesperchannel >= 1.0) ? offsetX_gp : offsetX); + detectors[idet]->setDetectorOffset(Y, (bytesperchannel >= 1.0) ? offsetY_gp : offsetY); FILE_LOG(logDEBUG1) << "Detector[" << idet << "] has offsets (" << detectors[idet]->getDetectorOffset(X) << ", " @@ -627,15 +600,20 @@ void multiSlsDetector::updateOffsets() { multi_shm()->numberOfChannelInclGapPixels[Y] = numY_gp; } } - FILE_LOG(logDEBUG1) << "\n\tNumber of Channels in X direction:" << multi_shm()->numberOfChannel[X] << "\n\tNumber of Channels in Y direction:" << multi_shm()->numberOfChannel[Y] << "\n\tNumber of Channels in X direction with Gap Pixels:" << multi_shm()->numberOfChannelInclGapPixels[X] << "\n\tNumber of Channels in Y direction with Gap Pixels:" << multi_shm()->numberOfChannelInclGapPixels[Y]; + FILE_LOG(logDEBUG1) << "\n\tNumber of Channels in X direction:" + << multi_shm()->numberOfChannel[X] + << "\n\tNumber of Channels in Y direction:" + << multi_shm()->numberOfChannel[Y] + << "\n\tNumber of Channels in X direction with Gap Pixels:" + << multi_shm()->numberOfChannelInclGapPixels[X] + << "\n\tNumber of Channels in Y direction with Gap Pixels:" + << multi_shm()->numberOfChannelInclGapPixels[Y]; multi_shm()->numberOfChannels = - multi_shm()->numberOfChannel[0] * - multi_shm()->numberOfChannel[1]; + multi_shm()->numberOfChannel[0] * multi_shm()->numberOfChannel[1]; for (auto &d : detectors) { - d->updateMultiSize(multi_shm()->numberOfDetector[0], - multi_shm()->numberOfDetector[1]); + d->updateMultiSize(multi_shm()->numberOfDetector[0], multi_shm()->numberOfDetector[1]); } } @@ -753,9 +731,8 @@ int multiSlsDetector::readConfigurationFile(const std::string &fname) { } int multiSlsDetector::writeConfigurationFile(const std::string &fname) { - //TODO! make exception safe! - const std::vector names = {"detsizechan", "hostname", "outdir", - "threaded"}; + // TODO! make exception safe! + const std::vector names = {"detsizechan", "hostname", "outdir", "threaded"}; int ret = OK, ret1 = OK; std::ofstream outfile; @@ -773,15 +750,13 @@ int multiSlsDetector::writeConfigurationFile(const std::string &fname) { // complete size of detector FILE_LOG(logINFO) << "Command to write: " << iline << " " << names[iline]; strcpy(args[0], names[iline].c_str()); - outfile << names[iline] << " " << cmd.executeLine(1, args, GET_ACTION) - << std::endl; + outfile << names[iline] << " " << cmd.executeLine(1, args, GET_ACTION) << std::endl; ++iline; // hostname of the detectors FILE_LOG(logINFO) << "Command to write: " << iline << " " << names[iline]; strcpy(args[0], names[iline].c_str()); - outfile << names[iline] << " " << cmd.executeLine(1, args, GET_ACTION) - << std::endl; + outfile << names[iline] << " " << cmd.executeLine(1, args, GET_ACTION) << std::endl; ++iline; // single detector configuration @@ -798,8 +773,7 @@ int multiSlsDetector::writeConfigurationFile(const std::string &fname) { while (iline < names.size()) { FILE_LOG(logINFO) << "Command to write:" << iline << " " << names[iline]; strcpy(args[0], names[iline].c_str()); - outfile << names[iline] << " " - << cmd.executeLine(1, args, GET_ACTION) << std::endl; + outfile << names[iline] << " " << cmd.executeLine(1, args, GET_ACTION) << std::endl; ++iline; } outfile.close(); @@ -824,8 +798,8 @@ slsDetectorDefs::detectorSettings multiSlsDetector::getSettings(int detPos) { return (detectorSettings)sls::minusOneIfDifferent(r); } -slsDetectorDefs::detectorSettings -multiSlsDetector::setSettings(detectorSettings isettings, int detPos) { +slsDetectorDefs::detectorSettings multiSlsDetector::setSettings(detectorSettings isettings, + int detPos) { // single if (detPos >= 0) { return detectors[detPos]->setSettings(isettings); @@ -850,10 +824,7 @@ int multiSlsDetector::getThresholdEnergy(int detPos) { return -1; } -int multiSlsDetector::setThresholdEnergy(int e_eV, - detectorSettings isettings, - int tb, - int detPos) { +int multiSlsDetector::setThresholdEnergy(int e_eV, detectorSettings isettings, int tb, int detPos) { // single if (detPos >= 0) { return detectors[detPos]->setThresholdEnergy(e_eV, isettings, tb); @@ -878,8 +849,7 @@ std::string multiSlsDetector::getSettingsDir(int detPos) { return sls::concatenateIfDifferent(r); } -std::string multiSlsDetector::setSettingsDir(const std::string &directory, - int detPos) { +std::string multiSlsDetector::setSettingsDir(const std::string &directory, int detPos) { if (detPos >= 0) { return detectors[detPos]->setSettingsDir(directory); } @@ -1058,7 +1028,8 @@ int64_t multiSlsDetector::setTimer(timerIndex index, int64_t t, int detPos) { case CYCLES_NUMBER: case STORAGE_CELL_NUMBER: case MEASUREMENTS_NUMBER: - throw RuntimeError("Cannot set number of frames, cycles,storage cells or measurements individually."); + throw RuntimeError("Cannot set number of frames, cycles,storage cells or " + "measurements individually."); default: break; } @@ -1109,8 +1080,7 @@ double multiSlsDetector::setExposureTime(double t, bool inseconds, int detPos) { return ((1E-9) * (double)tms); } -double multiSlsDetector::setExposurePeriod(double t, bool inseconds, - int detPos) { +double multiSlsDetector::setExposurePeriod(double t, bool inseconds, int detPos) { if (!inseconds) { return setTimer(FRAME_PERIOD, (int64_t)t, detPos); } @@ -1127,8 +1097,7 @@ double multiSlsDetector::setExposurePeriod(double t, bool inseconds, return ((1E-9) * (double)tms); } -double multiSlsDetector::setDelayAfterTrigger(double t, bool inseconds, - int detPos) { +double multiSlsDetector::setDelayAfterTrigger(double t, bool inseconds, int detPos) { if (!inseconds) { return setTimer(DELAY_AFTER_TRIGGER, (int64_t)t, detPos); } @@ -1145,8 +1114,7 @@ double multiSlsDetector::setDelayAfterTrigger(double t, bool inseconds, return ((1E-9) * (double)tms); } -double multiSlsDetector::setSubFrameExposureTime(double t, bool inseconds, - int detPos) { +double multiSlsDetector::setSubFrameExposureTime(double t, bool inseconds, int detPos) { if (!inseconds) { return setTimer(SUBFRAME_ACQUISITION_TIME, (int64_t)t, detPos); } else { @@ -1163,8 +1131,7 @@ double multiSlsDetector::setSubFrameExposureTime(double t, bool inseconds, } } -double multiSlsDetector::setSubFrameExposureDeadTime(double t, bool inseconds, - int detPos) { +double multiSlsDetector::setSubFrameExposureDeadTime(double t, bool inseconds, int detPos) { if (!inseconds) { return setTimer(SUBFRAME_DEADTIME, (int64_t)t, detPos); } else { @@ -1261,8 +1228,7 @@ int multiSlsDetector::setDynamicRange(int dr, int detPos) { multi_shm()->numberOfChannels = 0; for (auto &d : detectors) { multi_shm()->dataBytes += d->getDataBytes(); - multi_shm()->dataBytesInclGapPixels += - d->getDataBytesInclGapPixels(); + multi_shm()->dataBytesInclGapPixels += d->getDataBytesInclGapPixels(); multi_shm()->numberOfChannels += d->getTotalNumberOfChannels(); } @@ -1275,8 +1241,7 @@ int multiSlsDetector::setDynamicRange(int dr, int detPos) { setSpeed(CLOCK_DIVIDER, 2); break; case 16: - FILE_LOG(logINFO) - << "Setting Clock to Half Speed for Dynamic Range of 16"; + FILE_LOG(logINFO) << "Setting Clock to Half Speed for Dynamic Range of 16"; setSpeed(CLOCK_DIVIDER, 1); break; default: @@ -1340,8 +1305,7 @@ int multiSlsDetector::getADC(dacIndex index, int detPos) { } slsDetectorDefs::externalCommunicationMode -multiSlsDetector::setExternalCommunicationMode(externalCommunicationMode pol, - int detPos) { +multiSlsDetector::setExternalCommunicationMode(externalCommunicationMode pol, int detPos) { // single if (detPos >= 0) { return detectors[detPos]->setExternalCommunicationMode(pol); @@ -1353,16 +1317,14 @@ multiSlsDetector::setExternalCommunicationMode(externalCommunicationMode pol, } slsDetectorDefs::externalSignalFlag -multiSlsDetector::setExternalSignalFlags(externalSignalFlag pol, - int signalindex, int detPos) { +multiSlsDetector::setExternalSignalFlags(externalSignalFlag pol, int signalindex, int detPos) { // single if (detPos >= 0) { return detectors[detPos]->setExternalSignalFlags(pol, signalindex); } // multi - auto r = - parallelCall(&slsDetector::setExternalSignalFlags, pol, signalindex); + auto r = parallelCall(&slsDetector::setExternalSignalFlags, pol, signalindex); return sls::minusOneIfDifferent(r); } @@ -1377,8 +1339,7 @@ int multiSlsDetector::setReadOutFlags(readOutFlags flag, int detPos) { return sls::minusOneIfDifferent(r); } -uint32_t multiSlsDetector::writeRegister(uint32_t addr, uint32_t val, - int detPos) { +uint32_t multiSlsDetector::writeRegister(uint32_t addr, uint32_t val, int detPos) { // single if (detPos >= 0) { return detectors[detPos]->writeRegister(addr, val); @@ -1392,9 +1353,8 @@ uint32_t multiSlsDetector::writeRegister(uint32_t addr, uint32_t val, // can't have different values std::ostringstream ss; - ss << "Error: Different Values for function writeRegister (write 0x" - << std::hex << val << " to addr 0x" << std::hex << addr - << std::dec << ")"; + ss << "Error: Different Values for function writeRegister (write 0x" << std::hex << val + << " to addr 0x" << std::hex << addr << std::dec << ")"; throw RuntimeError(ss.str()); } @@ -1412,8 +1372,8 @@ uint32_t multiSlsDetector::readRegister(uint32_t addr, int detPos) { // can't have different values std::ostringstream ss; - ss << "Error: Different Values for function readRegister (read from 0x" - << std::hex << addr << std::dec << ")"; + ss << "Error: Different Values for function readRegister (read from 0x" << std::hex << addr + << std::dec << ")"; throw RuntimeError(ss.str()); } @@ -1433,8 +1393,7 @@ uint32_t multiSlsDetector::setBit(uint32_t addr, int n, int detPos) { std::ostringstream ss; ss << "Error: Different Values for function setBit " "(set bit " - << n << " to addr 0x" << std::hex << addr << std::dec - << ")"; + << n << " to addr 0x" << std::hex << addr << std::dec << ")"; throw RuntimeError(ss.str()); } @@ -1452,8 +1411,8 @@ uint32_t multiSlsDetector::clearBit(uint32_t addr, int n, int detPos) { // can't have different values std::ostringstream ss; - ss << "Error: Different Values for function clearBit (clear bit " - << n << " to addr 0x" << std::hex << addr << std::dec << ")"; + ss << "Error: Different Values for function clearBit (clear bit " << n << " to addr 0x" + << std::hex << addr << std::dec << ")"; throw RuntimeError(ss.str()); } @@ -1687,8 +1646,7 @@ int multiSlsDetector::getReceiverStreamingPort(int detPos) { return sls::minusOneIfDifferent(r); } -void multiSlsDetector::setClientDataStreamingInIP(const std::string &ip, - int detPos) { +void multiSlsDetector::setClientDataStreamingInIP(const std::string &ip, int detPos) { if (ip.length()) { int prev_streaming = enableDataStreamingToClient(-1); @@ -1721,8 +1679,7 @@ std::string multiSlsDetector::getClientStreamingIP(int detPos) { return sls::concatenateIfDifferent(r); } -void multiSlsDetector::setReceiverDataStreamingOutIP(const std::string &ip, - int detPos) { +void multiSlsDetector::setReceiverDataStreamingOutIP(const std::string &ip, int detPos) { if (ip.length()) { int prev_streaming = enableDataStreamingFromReceiver(-1, detPos); @@ -1788,7 +1745,8 @@ std::string multiSlsDetector::getAdditionalJsonHeader(int detPos) { return sls::concatenateIfDifferent(r); } -std::string multiSlsDetector::setAdditionalJsonParameter(const std::string &key, const std::string &value, int detPos) { +std::string multiSlsDetector::setAdditionalJsonParameter(const std::string &key, + const std::string &value, int detPos) { // single if (detPos >= 0) { return detectors[detPos]->setAdditionalJsonParameter(key, value); @@ -1907,9 +1865,7 @@ int multiSlsDetector::digitalTest(digitalTestMode mode, int ival, int detPos) { return sls::minusOneIfDifferent(r); } -int multiSlsDetector::loadImageToDetector(imageType index, - const std::string &fname, - int detPos) { +int multiSlsDetector::loadImageToDetector(imageType index, const std::string &fname, int detPos) { // single if (detPos >= 0) { return detectors[detPos]->loadImageToDetector(index, fname); @@ -1921,21 +1877,20 @@ int multiSlsDetector::loadImageToDetector(imageType index, int nch = multi_shm()->numberOfChannels; short int imageVals[nch]; if (readDataFile(fname, imageVals, nch) < nch * (int)sizeof(short int)) { - throw RuntimeError("Could not open file or not enough data in file to load image to detector."); + throw RuntimeError( + "Could not open file or not enough data in file to load image to detector."); } // send image to all std::vector r; for (size_t idet = 0; idet < detectors.size(); ++idet) { r.push_back(detectors[idet]->sendImageToDetector( - index, - imageVals + idet * detectors[idet]->getTotalNumberOfChannels())); + index, imageVals + idet * detectors[idet]->getTotalNumberOfChannels())); } return sls::allEqualTo(r, static_cast(OK)) ? OK : FAIL; } -int multiSlsDetector::writeCounterBlockFile(const std::string &fname, - int startACQ, int detPos) { +int multiSlsDetector::writeCounterBlockFile(const std::string &fname, int startACQ, int detPos) { // single if (detPos >= 0) { return detectors[detPos]->writeCounterBlockFile(fname, startACQ); @@ -1949,14 +1904,12 @@ int multiSlsDetector::writeCounterBlockFile(const std::string &fname, std::vector r; for (size_t idet = 0; idet < detectors.size(); ++idet) { r.push_back(detectors[idet]->getCounterBlock( - imageVals + idet * detectors[idet]->getTotalNumberOfChannels(), - startACQ)); + imageVals + idet * detectors[idet]->getTotalNumberOfChannels(), startACQ)); } // write image if all ok if (sls::allEqualTo(r, static_cast(OK))) { - if (writeDataFile(fname, nch, imageVals) < - nch * (int)sizeof(short int)) { + if (writeDataFile(fname, nch, imageVals) < nch * (int)sizeof(short int)) { throw RuntimeError("Could not open file to write or did not write enough data" " in file to write counter block file from detector."); } @@ -2010,8 +1963,8 @@ int multiSlsDetector::setROI(int n, ROI roiLimits[], int detPos) { } // multi - int xmin = 0, xmax = 0, ymin = 0, ymax = 0, channelX = 0, channelY = 0, idet = 0, lastChannelX = 0, - lastChannelY = 0, index = 0, offsetX = 0, offsetY = 0; + int xmin = 0, xmax = 0, ymin = 0, ymax = 0, channelX = 0, channelY = 0, idet = 0, + lastChannelX = 0, lastChannelY = 0, index = 0, offsetX = 0, offsetY = 0; bool invalidroi = false; int ndet = detectors.size(); @@ -2029,8 +1982,8 @@ int multiSlsDetector::setROI(int n, ROI roiLimits[], int detPos) { verifyMinMaxROI(n, roiLimits); FILE_LOG(logDEBUG1) << "Setting ROI for " << n << "rois:"; for (int i = 0; i < n; ++i) { - FILE_LOG(logDEBUG1) << i << ":" << roiLimits[i].xmin << "\t" << roiLimits[i].xmax - << "\t" << roiLimits[i].ymin << "\t" << roiLimits[i].ymax; + FILE_LOG(logDEBUG1) << i << ":" << roiLimits[i].xmin << "\t" << roiLimits[i].xmax << "\t" + << roiLimits[i].ymin << "\t" << roiLimits[i].ymax; } // for each roi for (int i = 0; i < n; ++i) { @@ -2043,7 +1996,8 @@ int multiSlsDetector::setROI(int n, ROI roiLimits[], int detPos) { // check roi max values idet = decodeNChannel(xmax, ymax, channelX, channelY); FILE_LOG(logDEBUG1) << "Decoded Channel max vals: " << std::endl - << "det:" << idet << "\t" << xmax << "\t" << ymax << "\t" << channelX << "\t" << channelY; + << "det:" << idet << "\t" << xmax << "\t" << ymax << "\t" + << channelX << "\t" << channelY; if (idet == -1) { FILE_LOG(logERROR) << "invalid roi"; continue; @@ -2058,21 +2012,16 @@ int multiSlsDetector::setROI(int n, ROI roiLimits[], int detPos) { // get offset for each detector idet = decodeNChannel(xmin, ymin, channelX, channelY); FILE_LOG(logDEBUG1) << "Decoded Channel min vals: " << std::endl - << "det:" << idet << "\t" << xmin << "\t" << ymin << "\t" << channelX << "\t" << channelY; + << "det:" << idet << "\t" << xmin << "\t" << ymin << "\t" + << channelX << "\t" << channelY; if (idet < 0 || idet >= (int)detectors.size()) { FILE_LOG(logDEBUG1) << "invalid roi"; invalidroi = true; break; } // get last channel for each det in x and y dir - lastChannelX = - (detectors[idet]->getTotalNumberOfChannelsInclGapPixels( - X)) - - 1; - lastChannelY = - (detectors[idet]->getTotalNumberOfChannelsInclGapPixels( - Y)) - - 1; + lastChannelX = (detectors[idet]->getTotalNumberOfChannelsInclGapPixels(X)) - 1; + lastChannelY = (detectors[idet]->getTotalNumberOfChannelsInclGapPixels(Y)) - 1; offsetX = detectors[idet]->getDetectorOffset(X); offsetY = detectors[idet]->getDetectorOffset(Y); @@ -2166,8 +2115,8 @@ slsDetectorDefs::ROI *multiSlsDetector::getROI(int &n, int detPos) { FILE_LOG(logINFO) << "detector " << idet << ":"; } for (j = 0; j < index; ++j) { - FILE_LOG(logINFO) << temp[j].xmin << "\t" << temp[j].xmax << "\t" - << temp[j].ymin << "\t" << temp[j].ymax; + FILE_LOG(logINFO) << temp[j].xmin << "\t" << temp[j].xmax << "\t" << temp[j].ymin + << "\t" << temp[j].ymax; int x = detectors[idet]->getDetectorOffset(X); int y = detectors[idet]->getDetectorOffset(Y); roiLimits[n].xmin = temp[j].xmin + x; @@ -2285,8 +2234,8 @@ slsDetectorDefs::ROI *multiSlsDetector::getROI(int &n, int detPos) { FILE_LOG(logDEBUG1) << "\nxmin\txmax\tymin\tymax"; for (i = 0; i < n; ++i) { - FILE_LOG(logDEBUG1) << retval[i].xmin << "\t" << retval[i].xmax << "\t" - << retval[i].ymin << "\t" << retval[i].ymax; + FILE_LOG(logDEBUG1) << retval[i].xmin << "\t" << retval[i].xmax << "\t" << retval[i].ymin + << "\t" << retval[i].ymax; } return retval; } @@ -2360,7 +2309,8 @@ int multiSlsDetector::setAllTrimbits(int val, int detPos) { int multiSlsDetector::enableGapPixels(int val, int detPos) { if (getDetectorTypeAsEnum() != EIGER) { if (val >= 0) { - throw NotImplementedError("Function (enableGapPixels) not implemented for this detector"); + throw NotImplementedError( + "Function (enableGapPixels) not implemented for this detector"); } return 0; } @@ -2368,7 +2318,8 @@ int multiSlsDetector::enableGapPixels(int val, int detPos) { // single if (detPos >= 0) { if (val >= 0) { - throw RuntimeError("Function (enableGapPixels) must be called from a multi detector level."); + throw RuntimeError( + "Function (enableGapPixels) must be called from a multi detector level."); } return detectors[detPos]->enableGapPixels(val); } @@ -2711,8 +2662,7 @@ int multiSlsDetector::setReceiverFramesPerFile(int f, int detPos) { } slsDetectorDefs::frameDiscardPolicy -multiSlsDetector::setReceiverFramesDiscardPolicy(frameDiscardPolicy f, - int detPos) { +multiSlsDetector::setReceiverFramesDiscardPolicy(frameDiscardPolicy f, int detPos) { // single if (detPos >= 0) { return detectors[detPos]->setReceiverFramesDiscardPolicy(f); @@ -2745,8 +2695,7 @@ slsDetectorDefs::fileFormat multiSlsDetector::getFileFormat(int detPos) { return sls::minusOneIfDifferent(r); } -slsDetectorDefs::fileFormat multiSlsDetector::setFileFormat(fileFormat f, - int detPos) { +slsDetectorDefs::fileFormat multiSlsDetector::setFileFormat(fileFormat f, int detPos) { // single if (detPos >= 0) { return detectors[detPos]->setFileFormat(f); @@ -2902,13 +2851,14 @@ int multiSlsDetector::createReceivingDataSockets(const bool destroy) { numSockets *= numSocketsPerDetector; for (size_t iSocket = 0; iSocket < numSockets; ++iSocket) { - uint32_t portnum = (detectors[iSocket / numSocketsPerDetector] - ->getClientStreamingPort()); + uint32_t portnum = (detectors[iSocket / numSocketsPerDetector]->getClientStreamingPort()); portnum += (iSocket % numSocketsPerDetector); try { zmqSocket.push_back(sls::make_unique( - detectors[iSocket / numSocketsPerDetector]->getClientStreamingIP().c_str(), portnum)); - FILE_LOG(logINFO) << "Zmq Client[" << iSocket << "] at " << zmqSocket.back()->GetZmqServerAddress(); + detectors[iSocket / numSocketsPerDetector]->getClientStreamingIP().c_str(), + portnum)); + FILE_LOG(logINFO) << "Zmq Client[" << iSocket << "] at " + << zmqSocket.back()->GetZmqServerAddress(); } catch (...) { FILE_LOG(logERROR) << "Could not create Zmq socket on port " << portnum; createReceivingDataSockets(true); @@ -2923,10 +2873,8 @@ int multiSlsDetector::createReceivingDataSockets(const bool destroy) { void multiSlsDetector::readFrameFromReceiver() { - int nX = - multi_shm()->numberOfDetector[X]; // to copy data in multi module - int nY = multi_shm() - ->numberOfDetector[Y]; // for eiger, to reverse the data + int nX = multi_shm()->numberOfDetector[X]; // to copy data in multi module + int nY = multi_shm()->numberOfDetector[Y]; // for eiger, to reverse the data bool gappixelsenable = false; bool eiger = false; if (getDetectorTypeAsEnum() == EIGER) { @@ -2945,7 +2893,8 @@ void multiSlsDetector::readFrameFromReceiver() { } else { // to remember the list it connected to, to disconnect later connectList[i] = false; - FILE_LOG(logERROR) << "Could not connect to socket " << zmqSocket[i]->GetZmqServerAddress(); + FILE_LOG(logERROR) << "Could not connect to socket " + << zmqSocket[i]->GetZmqServerAddress(); runningList[i] = false; } } @@ -2960,10 +2909,8 @@ void multiSlsDetector::readFrameFromReceiver() { float bytesPerPixel = 0; // header info every header std::string currentFileName = ""; - uint64_t currentAcquisitionIndex = -1, currentFrameIndex = -1, - currentFileIndex = -1; - uint32_t currentSubFrameIndex = -1, coordX = -1, coordY = -1, - flippedDataX = -1; + uint64_t currentAcquisitionIndex = -1, currentFrameIndex = -1, currentFileIndex = -1; + uint32_t currentSubFrameIndex = -1, coordX = -1, coordY = -1, flippedDataX = -1; // wait for real time acquisition to start bool running = true; @@ -2988,8 +2935,8 @@ void multiSlsDetector::readFrameFromReceiver() { // HEADER { rapidjson::Document doc; - if (!zmqSocket[isocket]->ReceiveHeader( - isocket, doc, SLS_DETECTOR_JSON_HEADER_VERSION)) { + if (!zmqSocket[isocket]->ReceiveHeader(isocket, doc, + SLS_DETECTOR_JSON_HEADER_VERSION)) { // parse error, version error or end of acquisition for // socket runningList[isocket] = false; @@ -3012,9 +2959,13 @@ void multiSlsDetector::readFrameFromReceiver() { nPixelsX = doc["shape"][0].GetUint(); nPixelsY = doc["shape"][1].GetUint(); - FILE_LOG(logDEBUG1) << "One Time Header Info:" - "\n\tsize: " - << size << "\n\tmultisize: " << multisize << "\n\tdynamicRange: " << dynamicRange << "\n\tbytesPerPixel: " << bytesPerPixel << "\n\tnPixelsX: " << nPixelsX << "\n\tnPixelsY: " << nPixelsY; + FILE_LOG(logDEBUG1) + << "One Time Header Info:" + "\n\tsize: " + << size << "\n\tmultisize: " << multisize + << "\n\tdynamicRange: " << dynamicRange + << "\n\tbytesPerPixel: " << bytesPerPixel + << "\n\tnPixelsX: " << nPixelsX << "\n\tnPixelsY: " << nPixelsY; } // each time, parse rest of header currentFileName = doc["fname"].GetString(); @@ -3028,9 +2979,16 @@ void multiSlsDetector::readFrameFromReceiver() { coordY = (nY - 1) - coordY; } flippedDataX = doc["flippedDataX"].GetUint(); - FILE_LOG(logDEBUG1) << "Header Info:" - "\n\tcurrentFileName: " - << currentFileName << "\n\tcurrentAcquisitionIndex: " << currentAcquisitionIndex << "\n\tcurrentFrameIndex: " << currentFrameIndex << "\n\tcurrentFileIndex: " << currentFileIndex << "\n\tcurrentSubFrameIndex: " << currentSubFrameIndex << "\n\tcoordX: " << coordX << "\n\tcoordY: " << coordY << "\n\tflippedDataX: " << flippedDataX; + FILE_LOG(logDEBUG1) + << "Header Info:" + "\n\tcurrentFileName: " + << currentFileName + << "\n\tcurrentAcquisitionIndex: " << currentAcquisitionIndex + << "\n\tcurrentFrameIndex: " << currentFrameIndex + << "\n\tcurrentFileIndex: " << currentFileIndex + << "\n\tcurrentSubFrameIndex: " << currentSubFrameIndex + << "\n\tcoordX: " << coordX << "\n\tcoordY: " << coordY + << "\n\tflippedDataX: " << flippedDataX; } // DATA @@ -3045,23 +3003,20 @@ void multiSlsDetector::readFrameFromReceiver() { uint32_t rowoffset = nX * singledetrowoffset; FILE_LOG(logDEBUG1) << "Multi Image Info:" "\n\txoffset: " - << xoffset << "\n\tyoffset: " << yoffset << "\n\tsingledetrowoffset: " << singledetrowoffset << "\n\trowoffset: " << rowoffset; + << xoffset << "\n\tyoffset: " << yoffset + << "\n\tsingledetrowoffset: " << singledetrowoffset + << "\n\trowoffset: " << rowoffset; if (eiger && flippedDataX) { for (uint32_t i = 0; i < nPixelsY; ++i) { memcpy(((char *)multiframe) + - ((yoffset + (nPixelsY - 1 - i)) * - rowoffset) + - xoffset, - (char *)image + (i * singledetrowoffset), - singledetrowoffset); + ((yoffset + (nPixelsY - 1 - i)) * rowoffset) + xoffset, + (char *)image + (i * singledetrowoffset), singledetrowoffset); } } else { for (uint32_t i = 0; i < nPixelsY; ++i) { - memcpy(((char *)multiframe) + - ((yoffset + i) * rowoffset) + xoffset, - (char *)image + (i * singledetrowoffset), - singledetrowoffset); + memcpy(((char *)multiframe) + ((yoffset + i) * rowoffset) + xoffset, + (char *)image + (i * singledetrowoffset), singledetrowoffset); } } } @@ -3075,21 +3030,18 @@ void multiSlsDetector::readFrameFromReceiver() { int n = processImageWithGapPixels(multiframe, multigappixels); nPixelsX = multi_shm()->numberOfChannelInclGapPixels[X]; nPixelsY = multi_shm()->numberOfChannelInclGapPixels[Y]; - thisData = new detectorData(getCurrentProgress(), - currentFileName.c_str(), nPixelsX, - nPixelsY, multigappixels, n, - dynamicRange, currentFileIndex); + thisData = + new detectorData(getCurrentProgress(), currentFileName.c_str(), nPixelsX, + nPixelsY, multigappixels, n, dynamicRange, currentFileIndex); } // normal pixels else { - thisData = new detectorData(getCurrentProgress(), - currentFileName.c_str(), nPixelsX, - nPixelsY, multiframe, multisize, - dynamicRange, currentFileIndex); + thisData = new detectorData(getCurrentProgress(), currentFileName.c_str(), nPixelsX, + nPixelsY, multiframe, multisize, dynamicRange, + currentFileIndex); } dataReady(thisData, currentFrameIndex, - ((dynamicRange == 32) ? currentSubFrameIndex : -1), - pCallbackArg); + ((dynamicRange == 32) ? currentSubFrameIndex : -1), pCallbackArg); delete thisData; setCurrentProgress(currentAcquisitionIndex + 1); } @@ -3152,9 +3104,8 @@ int multiSlsDetector::processImageWithGapPixels(char *image, char *&gpImage) { // copying line by line src = image; dst = gpImage; - for (int row = 0; row < nychip; ++row) { // for each chip in a row - for (int ichipy = 0; ichipy < b1chipy; - ++ichipy) { // for each row in a chip + for (int row = 0; row < nychip; ++row) { // for each chip in a row + for (int ichipy = 0; ichipy < b1chipy; ++ichipy) { // for each row in a chip for (int col = 0; col < nxchip; ++col) { memcpy(dst, src, b1chipx); src += b1chipx; @@ -3173,9 +3124,8 @@ int multiSlsDetector::processImageWithGapPixels(char *image, char *&gpImage) { uint8_t temp, g1, g2; int mod; dst = gpImage; - for (int row = 0; row < nychip; ++row) { // for each chip in a row - for (int ichipy = 0; ichipy < b1chipy; - ++ichipy) { // for each row in a chip + for (int row = 0; row < nychip; ++row) { // for each chip in a row + for (int ichipy = 0; ichipy < b1chipy; ++ichipy) { // for each row in a chip for (int col = 0; col < nxchip; ++col) { dst += b1chipx; mod = (col + 1) % 4; @@ -3318,8 +3268,7 @@ int multiSlsDetector::enableDataStreamingFromReceiver(int enable, int detPos) { } // multi - auto r = - parallelCall(&slsDetector::enableDataStreamingFromReceiver, enable); + auto r = parallelCall(&slsDetector::enableDataStreamingFromReceiver, enable); return sls::minusOneIfDifferent(r); } @@ -3387,8 +3336,7 @@ uint64_t multiSlsDetector::setPatternWord(int addr, uint64_t word, int detPos) { return sls::minusOneIfDifferent(r); } -int multiSlsDetector::setPatternLoops(int level, int &start, int &stop, int &n, - int detPos) { +int multiSlsDetector::setPatternLoops(int level, int &start, int &stop, int &n, int detPos) { // single if (detPos >= 0) { return detectors[detPos]->setPatternLoops(level, start, stop, n); @@ -3448,7 +3396,6 @@ uint64_t multiSlsDetector::getPatternMask(int detPos) { } // should not have different values throw RuntimeError("multiSlsDetector::getPatternMask: Error: Different Values returned)"); - } int multiSlsDetector::setPatternBitMask(uint64_t mask, int detPos) { @@ -3494,8 +3441,7 @@ int multiSlsDetector::setDigitalIODelay(uint64_t pinMask, int delay, int detPos) return sls::allEqualTo(r, static_cast(OK)) ? OK : FAIL; } -int multiSlsDetector::retrieveDetectorSetup(const std::string &fname1, - int level) { +int multiSlsDetector::retrieveDetectorSetup(const std::string &fname1, int level) { int skip = 0; std::string fname; @@ -3527,8 +3473,7 @@ int multiSlsDetector::retrieveDetectorSetup(const std::string &fname1, iline++; FILE_LOG(logDEBUG1) << str; if (str.find('#') != std::string::npos) { - FILE_LOG(logDEBUG1) << "Line is a comment \n" - << str; + FILE_LOG(logDEBUG1) << "Line is a comment \n" << str; continue; } else { std::istringstream ssstr(str); @@ -3647,9 +3592,9 @@ int multiSlsDetector::dumpDetectorSetup(const std::string &fname, int level) { break; } - //Workaround to bo able to suplly ecexuteLine with char** + // Workaround to bo able to suplly ecexuteLine with char** const int n_arguments = 1; - char buffer[1000]; //TODO! this should not be hardcoded! + char buffer[1000]; // TODO! this should not be hardcoded! char *args[n_arguments] = {buffer}; std::string outfname; @@ -3665,9 +3610,8 @@ int multiSlsDetector::dumpDetectorSetup(const std::string &fname, int level) { if (outfile.is_open()) { auto cmd = slsDetectorCommand(this); for (auto &name : names) { - sls::strcpy_safe(buffer, name.c_str()); //this is... - outfile << name << " " << cmd.executeLine(n_arguments, args, GET_ACTION) - << std::endl; + sls::strcpy_safe(buffer, name.c_str()); // this is... + outfile << name << " " << cmd.executeLine(n_arguments, args, GET_ACTION) << std::endl; } outfile.close(); } else { @@ -3679,27 +3623,25 @@ int multiSlsDetector::dumpDetectorSetup(const std::string &fname, int level) { return OK; } -void multiSlsDetector::registerAcquisitionFinishedCallback( - int (*func)(double, int, void *), void *pArg) { +void multiSlsDetector::registerAcquisitionFinishedCallback(int (*func)(double, int, void *), + void *pArg) { acquisition_finished = func; acqFinished_p = pArg; } -void multiSlsDetector::registerMeasurementFinishedCallback(int (*func)(int, int, - void *), +void multiSlsDetector::registerMeasurementFinishedCallback(int (*func)(int, int, void *), void *pArg) { measurement_finished = func; measFinished_p = pArg; } -void multiSlsDetector::registerProgressCallback(int (*func)(double, void *), - void *pArg) { +void multiSlsDetector::registerProgressCallback(int (*func)(double, void *), void *pArg) { progress_call = func; pProgressCallArg = pArg; } -void multiSlsDetector::registerDataCallback( - int (*userCallback)(detectorData *, int, int, void *), void *pArg) { +void multiSlsDetector::registerDataCallback(int (*userCallback)(detectorData *, int, int, void *), + void *pArg) { dataReady = userCallback; pCallbackArg = pArg; if (setReceiverOnline() == slsDetectorDefs::ONLINE_FLAG) { @@ -3743,8 +3685,7 @@ void multiSlsDetector::incrementProgress() { std::lock_guard lock(mp); progressIndex++; std::cout << std::fixed << std::setprecision(2) << std::setw(6) - << 100. * ((double)progressIndex) / ((double)totalProgress) - << " \%"; + << 100. * ((double)progressIndex) / ((double)totalProgress) << " \%"; std::cout << '\r' << std::flush; } @@ -3752,8 +3693,7 @@ void multiSlsDetector::setCurrentProgress(int i) { std::lock_guard lock(mp); progressIndex = i; std::cout << std::fixed << std::setprecision(2) << std::setw(6) - << 100. * ((double)progressIndex) / ((double)totalProgress) - << " \%"; + << 100. * ((double)progressIndex) / ((double)totalProgress) << " \%"; std::cout << '\r' << std::flush; } @@ -3860,8 +3800,7 @@ int multiSlsDetector::acquire() { } if (acquisition_finished) { - acquisition_finished(getCurrentProgress(), getRunStatus(), - acqFinished_p); + acquisition_finished(getCurrentProgress(), getRunStatus(), acqFinished_p); } sem_destroy(&sem_newRTAcquisition); diff --git a/slsDetectorSoftware/slsDetector/slsDetector.cpp b/slsDetectorSoftware/src/slsDetector.cpp similarity index 85% rename from slsDetectorSoftware/slsDetector/slsDetector.cpp rename to slsDetectorSoftware/src/slsDetector.cpp index 663fa8b84..2edbccae8 100644 --- a/slsDetectorSoftware/slsDetector/slsDetector.cpp +++ b/slsDetectorSoftware/src/slsDetector.cpp @@ -36,10 +36,9 @@ using sls::SharedMemoryError; #define DEFAULT_HOSTNAME "localhost" slsDetector::slsDetector(detectorType type, int multi_id, int det_id, bool verify) - : detId(det_id), - detector_shm(multi_id, det_id) { + : detId(det_id), detector_shm(multi_id, det_id) { /* called from put hostname command, - * so sls shared memory will be created */ + * so sls shared memory will be created */ // ensure shared memory was not created before if (detector_shm.IsExisting()) { @@ -53,10 +52,9 @@ slsDetector::slsDetector(detectorType type, int multi_id, int det_id, bool verif } slsDetector::slsDetector(int multi_id, int det_id, bool verify) - : detId(det_id), - detector_shm(multi_id, det_id) { + : detId(det_id), detector_shm(multi_id, det_id) { /* called from multi constructor to populate structure, - * so sls shared memory will be opened, not created */ + * so sls shared memory will be opened, not created */ // getDetectorType From shm will check if it was already existing detectorType type = getDetectorTypeFromShm(multi_id, verify); @@ -66,7 +64,7 @@ slsDetector::slsDetector(int multi_id, int det_id, bool verify) slsDetector::~slsDetector() = default; int slsDetector::checkDetectorVersionCompatibility() { - //TODO! Verify that this works as intended when version don't match + // TODO! Verify that this works as intended when version don't match int fnum = F_CHECK_VERSION; int ret = FAIL; int64_t arg = 0; @@ -89,10 +87,11 @@ int slsDetector::checkDetectorVersionCompatibility() { arg = APIMOENCH; break; default: - throw NotImplementedError("Check version compatibility is not implemented for this detector"); + throw NotImplementedError( + "Check version compatibility is not implemented for this detector"); } - FILE_LOG(logDEBUG1) << "Checking version compatibility with detector with value " - << std::hex << arg << std::dec; + FILE_LOG(logDEBUG1) << "Checking version compatibility with detector with value " << std::hex + << arg << std::dec; // control server if (detector_shm()->onlineFlag == ONLINE_FLAG) { @@ -116,20 +115,21 @@ int slsDetector::checkDetectorVersionCompatibility() { } int slsDetector::checkReceiverVersionCompatibility() { - //TODO! Verify that this works as intended when version don't match + // TODO! Verify that this works as intended when version don't match int fnum = F_RECEIVER_CHECK_VERSION; int ret = FAIL; int64_t arg = APIRECEIVER; - FILE_LOG(logDEBUG1) << "Checking version compatibility with receiver with value " - << std::hex << arg << std::dec; + FILE_LOG(logDEBUG1) << "Checking version compatibility with receiver with value " << std::hex + << arg << std::dec; if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) { // in case it throws detector_shm()->receiverAPIVersion = 0; detector_shm()->receiverOnlineFlag = OFFLINE_FLAG; - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, &arg, sizeof(arg), nullptr, 0); // success @@ -144,7 +144,7 @@ int64_t slsDetector::getId(idMode mode) { int64_t retval = -1; FILE_LOG(logDEBUG1) << "Getting id type " << mode; - //These should not go to detector... + // These should not go to detector... assert(mode != THIS_SOFTWARE_VERSION); assert(mode != RECEIVER_VERSION); assert(mode != CLIENT_SOFTWARE_API_VERSION); @@ -170,8 +170,8 @@ int64_t slsDetector::getReceiverSoftwareVersion() const { FILE_LOG(logDEBUG1) << "Getting id type " << arg; if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) { int fnum = F_GET_RECEIVER_ID; - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, - detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, nullptr, 0, &retval, sizeof(retval)); } if (ret == FORCE_UPDATE) { @@ -198,13 +198,9 @@ void slsDetector::setHostname(const std::string &hostname) { updateDetector(); } -std::string slsDetector::getHostname() const { - return detector_shm()->hostname; -} +std::string slsDetector::getHostname() const { return detector_shm()->hostname; } -void slsDetector::initSharedMemory(detectorType type, - int multi_id, - bool verify) { +void slsDetector::initSharedMemory(detectorType type, int multi_id, bool verify) { detector_shm = SharedMemory(multi_id, detId); if (!detector_shm.IsExisting()) { @@ -214,8 +210,9 @@ void slsDetector::initSharedMemory(detectorType type, detector_shm.OpenSharedMemory(); if (verify && detector_shm()->shmversion != SLS_SHMVERSION) { std::ostringstream ss; - ss << "Single shared memory (" << multi_id << "-" << detId << ":) version mismatch (expected 0x" - << std::hex << SLS_SHMVERSION << " but got 0x" << detector_shm()->shmversion << ")" << std::dec; + ss << "Single shared memory (" << multi_id << "-" << detId + << ":) version mismatch (expected 0x" << std::hex << SLS_SHMVERSION << " but got 0x" + << detector_shm()->shmversion << ")" << std::dec; throw SharedMemoryError(ss.str()); } } @@ -328,10 +325,10 @@ void slsDetector::initializeDetectorStructure(detectorType type) { detector_shm()->tenGigaEnable = 0; detector_shm()->flippedData[X] = 0; detector_shm()->flippedData[Y] = 0; - detector_shm()->zmqport = DEFAULT_ZMQ_CL_PORTNO + - (detId * ((detector_shm()->myDetectorType == EIGER) ? 2 : 1)); - detector_shm()->receiver_zmqport = DEFAULT_ZMQ_RX_PORTNO + - (detId * ((detector_shm()->myDetectorType == EIGER) ? 2 : 1)); + detector_shm()->zmqport = + DEFAULT_ZMQ_CL_PORTNO + (detId * ((detector_shm()->myDetectorType == EIGER) ? 2 : 1)); + detector_shm()->receiver_zmqport = + DEFAULT_ZMQ_RX_PORTNO + (detId * ((detector_shm()->myDetectorType == EIGER) ? 2 : 1)); detector_shm()->receiver_upstream = false; detector_shm()->receiver_read_freq = 0; memset(detector_shm()->zmqip, 0, MAX_STR_LENGTH); @@ -389,8 +386,8 @@ void slsDetector::initializeDetectorStructure(detectorType type) { detector_shm()->nChips = detector_shm()->nChip[X] * detector_shm()->nChip[Y]; // calculating databytes - detector_shm()->dataBytes = detector_shm()->nChips * detector_shm()->nChans * - detector_shm()->dynamicRange / 8; + detector_shm()->dataBytes = + detector_shm()->nChips * detector_shm()->nChans * detector_shm()->dynamicRange / 8; detector_shm()->dataBytesInclGapPixels = (detector_shm()->nChip[X] * detector_shm()->nChan[X] + detector_shm()->gappixels * detector_shm()->nGappixels[X]) * @@ -399,7 +396,8 @@ void slsDetector::initializeDetectorStructure(detectorType type) { detector_shm()->dynamicRange / 8; // update #nchans and databytes, as it depends on #samples, roi, readoutflags (ctb only) - if (detector_shm()->myDetectorType == CHIPTESTBOARD || detector_shm()->myDetectorType == MOENCH) { + if (detector_shm()->myDetectorType == CHIPTESTBOARD || + detector_shm()->myDetectorType == MOENCH) { updateTotalNumberOfChannels(); } } @@ -504,7 +502,8 @@ int slsDetector::receiveModule(sls_detector_module *myMod, sls::ClientSocket &cl FILE_LOG(logDEBUG1) << "received dacs of size " << ts; if (detector_shm()->myDetectorType == EIGER) { ts += client.receiveData(myMod->chanregs, sizeof(int) * (myMod->nchan)); - FILE_LOG(logDEBUG1) << "nchans= " << detector_shm()->nChans << " nchips= " << detector_shm()->nChips + FILE_LOG(logDEBUG1) << "nchans= " << detector_shm()->nChans + << " nchips= " << detector_shm()->nChips << "mod - nchans= " << myMod->nchan << " nchips= " << myMod->nchip << "received chans of size " << ts; } @@ -514,18 +513,17 @@ int slsDetector::receiveModule(sls_detector_module *myMod, sls::ClientSocket &cl slsDetectorDefs::detectorType slsDetector::getDetectorTypeFromShm(int multi_id, bool verify) { if (!detector_shm.IsExisting()) { - throw SharedMemoryError("Shared memory " + detector_shm.GetName() + - "does not exist.\n Corrupted Multi Shared memory. Please free shared memory."); + throw SharedMemoryError( + "Shared memory " + detector_shm.GetName() + + "does not exist.\n Corrupted Multi Shared memory. Please free shared memory."); } detector_shm.OpenSharedMemory(); if (verify && detector_shm()->shmversion != SLS_SHMVERSION) { std::ostringstream ss; - ss << "Single shared memory (" - << multi_id << "-" << detId - << ":)version mismatch (expected 0x" - << std::hex << SLS_SHMVERSION - << " but got 0x" << detector_shm()->shmversion << ")" << std::dec; + ss << "Single shared memory (" << multi_id << "-" << detId + << ":)version mismatch (expected 0x" << std::hex << SLS_SHMVERSION << " but got 0x" + << detector_shm()->shmversion << ")" << std::dec; detector_shm.UnmapSharedMemory(); throw SharedMemoryError(ss.str()); } @@ -534,7 +532,8 @@ slsDetectorDefs::detectorType slsDetector::getDetectorTypeFromShm(int multi_id, } // static function -slsDetectorDefs::detectorType slsDetector::getTypeFromDetector(const std::string &hostname, int cport) { +slsDetectorDefs::detectorType slsDetector::getTypeFromDetector(const std::string &hostname, + int cport) { int fnum = F_GET_DETECTOR_TYPE; int ret = FAIL; detectorType retval = GENERIC; @@ -574,12 +573,14 @@ int slsDetector::setDetectorType(detectorType const type) { ret = FAIL; int arg = (int)detector_shm()->myDetectorType; retval = GENERIC; - FILE_LOG(logDEBUG1) << "Sending detector type to Receiver: " << (int)detector_shm()->myDetectorType; - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); + FILE_LOG(logDEBUG1) << "Sending detector type to Receiver: " + << (int)detector_shm()->myDetectorType; + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, &arg, sizeof(arg), &retval, sizeof(retval)); FILE_LOG(logDEBUG1) << "Receiver Type: " << retval; if (ret == FORCE_UPDATE) { - receiver.close(); //TODO! Should find a better solution + receiver.close(); // TODO! Should find a better solution ret = updateCachedReceiverVariables(); } } @@ -599,7 +600,8 @@ int slsDetector::getTotalNumberOfChannels() const { } void slsDetector::updateTotalNumberOfChannels() { - if (detector_shm()->myDetectorType == CHIPTESTBOARD || detector_shm()->myDetectorType == MOENCH) { + if (detector_shm()->myDetectorType == CHIPTESTBOARD || + detector_shm()->myDetectorType == MOENCH) { // default number of channels detector_shm()->nChan[X] = 32; @@ -608,23 +610,25 @@ void slsDetector::updateTotalNumberOfChannels() { if (detector_shm()->nROI > 0) { detector_shm()->nChan[X] = 0; for (int iroi = 0; iroi < detector_shm()->nROI; ++iroi) { - detector_shm()->nChan[X] += - (detector_shm()->roiLimits[iroi].xmax - - detector_shm()->roiLimits[iroi].xmin + 1); + detector_shm()->nChan[X] += (detector_shm()->roiLimits[iroi].xmax - + detector_shm()->roiLimits[iroi].xmin + 1); } } // add digital signals depending on readout flags if (detector_shm()->myDetectorType == CHIPTESTBOARD && - (detector_shm()->roFlags & DIGITAL_ONLY || detector_shm()->roFlags & ANALOG_AND_DIGITAL)) { + (detector_shm()->roFlags & DIGITAL_ONLY || + detector_shm()->roFlags & ANALOG_AND_DIGITAL)) { detector_shm()->nChan[X] += 4; } // recalculate derived parameters chans and databytes detector_shm()->nChans = detector_shm()->nChan[X]; detector_shm()->dataBytes = detector_shm()->nChans * detector_shm()->nChips * - (detector_shm()->dynamicRange / 8) * detector_shm()->timerValue[SAMPLES]; - FILE_LOG(logDEBUG1) << "Number of Channels:" << detector_shm()->nChans << " Databytes: " << detector_shm()->dataBytes; + (detector_shm()->dynamicRange / 8) * + detector_shm()->timerValue[SAMPLES]; + FILE_LOG(logDEBUG1) << "Number of Channels:" << detector_shm()->nChans + << " Databytes: " << detector_shm()->dataBytes; } } @@ -637,25 +641,15 @@ int slsDetector::getTotalNumberOfChannelsInclGapPixels(dimension d) const { detector_shm()->gappixels * detector_shm()->nGappixels[d]); } -int slsDetector::getNChans() const { - return detector_shm()->nChans; -} +int slsDetector::getNChans() const { return detector_shm()->nChans; } -int slsDetector::getNChans(dimension d) const { - return detector_shm()->nChan[d]; -} +int slsDetector::getNChans(dimension d) const { return detector_shm()->nChan[d]; } -int slsDetector::getNChips() const { - return detector_shm()->nChips; -} +int slsDetector::getNChips() const { return detector_shm()->nChips; } -int slsDetector::getNChips(dimension d) const { - return detector_shm()->nChip[d]; -} +int slsDetector::getNChips(dimension d) const { return detector_shm()->nChip[d]; } -int slsDetector::getDetectorOffset(dimension d) const { - return detector_shm()->offset[d]; -} +int slsDetector::getDetectorOffset(dimension d) const { return detector_shm()->offset[d]; } void slsDetector::setDetectorOffset(dimension d, int off) { if (off >= 0) { @@ -676,18 +670,18 @@ int slsDetector::setOnline(int value) { if (value == ONLINE_FLAG) { auto client = DetectorSocket(detector_shm()->hostname, detector_shm()->controlPort); - client.close(); + client.close(); detector_shm()->onlineFlag = ONLINE_FLAG; if (old_flag == OFFLINE_FLAG) { - // check version compatibility (first time) + // check version compatibility (first time) if ((detector_shm()->detectorControlAPIVersion == 0) || - (detector_shm()->detectorStopAPIVersion == 0)) { - checkDetectorVersionCompatibility(); + (detector_shm()->detectorStopAPIVersion == 0)) { + checkDetectorVersionCompatibility(); } - FILE_LOG(logINFO) << "Detector connecting - updating!"; + FILE_LOG(logINFO) << "Detector connecting - updating!"; updateDetector(); } } @@ -695,14 +689,12 @@ int slsDetector::setOnline(int value) { return detector_shm()->onlineFlag; } -int slsDetector::getOnlineFlag() const { - return detector_shm()->onlineFlag; -} +int slsDetector::getOnlineFlag() const { return detector_shm()->onlineFlag; } std::string slsDetector::checkOnline() { std::string retval; try { - //Need both control and stop socket to work! + // Need both control and stop socket to work! auto client = DetectorSocket(detector_shm()->hostname, detector_shm()->controlPort); auto stop = DetectorSocket(detector_shm()->hostname, detector_shm()->stopPort); detector_shm()->onlineFlag = ONLINE_FLAG; @@ -721,10 +713,9 @@ int slsDetector::setControlPort(int port_number) { if (port_number >= 0 && port_number != detector_shm()->controlPort) { if (detector_shm()->onlineFlag == ONLINE_FLAG) { - auto client = DetectorSocket(detector_shm()->hostname, - detector_shm()->controlPort); - ret = client.sendCommandThenRead(fnum, &port_number, sizeof(port_number), - &retval, sizeof(retval)); + auto client = DetectorSocket(detector_shm()->hostname, detector_shm()->controlPort); + ret = client.sendCommandThenRead(fnum, &port_number, sizeof(port_number), &retval, + sizeof(retval)); detector_shm()->controlPort = retval; FILE_LOG(logDEBUG1) << "Control port: " << retval; } else { @@ -746,9 +737,9 @@ int slsDetector::setStopPort(int port_number) { if (port_number >= 0 && port_number != detector_shm()->stopPort) { if (detector_shm()->onlineFlag == ONLINE_FLAG) { - auto stop = DetectorSocket(detector_shm()->hostname, - detector_shm()->stopPort); - ret = stop.sendCommandThenRead(fnum, &port_number, sizeof(port_number), &retval, sizeof(retval)); + auto stop = DetectorSocket(detector_shm()->hostname, detector_shm()->stopPort); + ret = stop.sendCommandThenRead(fnum, &port_number, sizeof(port_number), &retval, + sizeof(retval)); detector_shm()->stopPort = retval; FILE_LOG(logDEBUG1) << "Stop port: " << retval; } else { @@ -770,9 +761,10 @@ int slsDetector::setReceiverPort(int port_number) { if (port_number >= 0 && port_number != detector_shm()->receiverTCPPort) { if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) { - auto stop = ReceiverSocket(detector_shm()->receiver_hostname, - detector_shm()->receiverTCPPort); - ret = stop.sendCommandThenRead(fnum, &port_number, sizeof(port_number), &retval, sizeof(retval)); + auto stop = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); + ret = stop.sendCommandThenRead(fnum, &port_number, sizeof(port_number), &retval, + sizeof(retval)); detector_shm()->receiverTCPPort = retval; FILE_LOG(logDEBUG1) << "Receiver port: " << retval; @@ -786,17 +778,11 @@ int slsDetector::setReceiverPort(int port_number) { return detector_shm()->receiverTCPPort; } -int slsDetector::getReceiverPort() const { - return detector_shm()->receiverTCPPort; -} +int slsDetector::getReceiverPort() const { return detector_shm()->receiverTCPPort; } -int slsDetector::getControlPort() const { - return detector_shm()->controlPort; -} +int slsDetector::getControlPort() const { return detector_shm()->controlPort; } -int slsDetector::getStopPort() const { - return detector_shm()->stopPort; -} +int slsDetector::getStopPort() const { return detector_shm()->stopPort; } int slsDetector::lockServer(int lock) { int fnum = F_LOCK_SERVER; @@ -856,8 +842,7 @@ int slsDetector::execCommand(const std::string &cmd) { if (detector_shm()->onlineFlag == ONLINE_FLAG) { auto client = DetectorSocket(detector_shm()->hostname, detector_shm()->controlPort); ret = client.sendCommandThenRead(fnum, arg, sizeof(arg), retval, sizeof(retval)); - FILE_LOG(logINFO) << "Detector " << detId << " returned:\n" - << retval; + FILE_LOG(logINFO) << "Detector " << detId << " returned:\n" << retval; } return ret; } @@ -878,7 +863,8 @@ int slsDetector::updateDetectorNoWait(sls::ClientSocket &client) { detector_shm()->dataBytes = i32; // settings - if ((detector_shm()->myDetectorType != CHIPTESTBOARD) && (detector_shm()->myDetectorType != MOENCH)) { + if ((detector_shm()->myDetectorType != CHIPTESTBOARD) && + (detector_shm()->myDetectorType != MOENCH)) { n += client.receiveData(&i32, sizeof(i32)); detector_shm()->currentSettings = (detectorSettings)i32; } @@ -938,7 +924,8 @@ int slsDetector::updateDetectorNoWait(sls::ClientSocket &client) { } // samples - if (detector_shm()->myDetectorType == CHIPTESTBOARD || detector_shm()->myDetectorType == MOENCH) { + if (detector_shm()->myDetectorType == CHIPTESTBOARD || + detector_shm()->myDetectorType == MOENCH) { n += client.receiveData(&i64, sizeof(i64)); if (i64 >= 0) { detector_shm()->timerValue[SAMPLES] = i64; @@ -946,7 +933,8 @@ int slsDetector::updateDetectorNoWait(sls::ClientSocket &client) { } // roi - if (detector_shm()->myDetectorType == CHIPTESTBOARD || detector_shm()->myDetectorType == MOENCH || detector_shm()->myDetectorType == GOTTHARD) { + if (detector_shm()->myDetectorType == CHIPTESTBOARD || + detector_shm()->myDetectorType == MOENCH || detector_shm()->myDetectorType == GOTTHARD) { n += client.receiveData(&i32, sizeof(i32)); detector_shm()->nROI = i32; for (int i = 0; i < detector_shm()->nROI; ++i) { @@ -966,7 +954,8 @@ int slsDetector::updateDetectorNoWait(sls::ClientSocket &client) { } // update #nchans and databytes, as it depends on #samples, roi, readoutflags (ctb only) - if (detector_shm()->myDetectorType == CHIPTESTBOARD || detector_shm()->myDetectorType == MOENCH) { + if (detector_shm()->myDetectorType == CHIPTESTBOARD || + detector_shm()->myDetectorType == MOENCH) { updateTotalNumberOfChannels(); } @@ -1057,7 +1046,8 @@ int slsDetector::writeConfigurationFile(std::ofstream &outfile, multiSlsDetector names.emplace_back("vhighvoltage"); break; default: - throw RuntimeError("Write configuration file called with unknown detector: " + std::to_string(detector_shm()->myDetectorType)); + throw RuntimeError("Write configuration file called with unknown detector: " + + std::to_string(detector_shm()->myDetectorType)); } auto cmd = slsDetectorCommand(m); @@ -1179,7 +1169,8 @@ int slsDetector::setThresholdEnergy(int e_eV, detectorSettings isettings, int tb int slsDetector::setThresholdEnergyAndSettings(int e_eV, detectorSettings isettings, int tb) { // if settings provided, use that, else use the shared memory variable - detectorSettings is = ((isettings != GET_SETTINGS) ? isettings : detector_shm()->currentSettings); + detectorSettings is = + ((isettings != GET_SETTINGS) ? isettings : detector_shm()->currentSettings); std::string ssettings; switch (is) { case STANDARD: @@ -1208,14 +1199,13 @@ int slsDetector::setThresholdEnergyAndSettings(int e_eV, detectorSettings isetti throw RuntimeError(ss.str()); } - //verify e_eV exists in trimEneregies[] - if (!detector_shm()->nTrimEn || - (e_eV < detector_shm()->trimEnergies[0]) || + // verify e_eV exists in trimEneregies[] + if (!detector_shm()->nTrimEn || (e_eV < detector_shm()->trimEnergies[0]) || (e_eV > detector_shm()->trimEnergies[detector_shm()->nTrimEn - 1])) { throw RuntimeError("This energy " + std::to_string(e_eV) + " not defined for this module!"); } - //find if interpolation required + // find if interpolation required bool interpolate = true; for (int i = 0; i < detector_shm()->nTrimEn; ++i) { if (detector_shm()->trimEnergies[i] == e_eV) { @@ -1224,19 +1214,20 @@ int slsDetector::setThresholdEnergyAndSettings(int e_eV, detectorSettings isetti } } - //fill detector module structure + // fill detector module structure sls_detector_module *myMod = nullptr; - //normal + // normal if (!interpolate) { - //find their directory names + // find their directory names std::ostringstream ostfn; ostfn << detector_shm()->settingsDir << ssettings << "/" << e_eV << "eV" - << "/noise.sn" << std::setfill('0') << std::setw(3) << std::dec << getId(DETECTOR_SERIAL_NUMBER) << std::setbase(10); + << "/noise.sn" << std::setfill('0') << std::setw(3) << std::dec + << getId(DETECTOR_SERIAL_NUMBER) << std::setbase(10); std::string settingsfname = ostfn.str(); FILE_LOG(logDEBUG1) << "Settings File is " << settingsfname; - //read the files + // read the files // myMod = createModule(); // readSettings also checks if create module is null if (nullptr == readSettingsFile(settingsfname, myMod, tb)) { if (myMod) { @@ -1246,9 +1237,9 @@ int slsDetector::setThresholdEnergyAndSettings(int e_eV, detectorSettings isetti } } - //interpolate + // interpolate else { - //find the trim values + // find the trim values int trim1 = -1, trim2 = -1; for (int i = 0; i < detector_shm()->nTrimEn; ++i) { if (e_eV < detector_shm()->trimEnergies[i]) { @@ -1257,17 +1248,19 @@ int slsDetector::setThresholdEnergyAndSettings(int e_eV, detectorSettings isetti break; } } - //find their directory names + // find their directory names std::ostringstream ostfn; ostfn << detector_shm()->settingsDir << ssettings << "/" << trim1 << "eV" - << "/noise.sn" << std::setfill('0') << std::setw(3) << std::dec << getId(DETECTOR_SERIAL_NUMBER) << std::setbase(10); + << "/noise.sn" << std::setfill('0') << std::setw(3) << std::dec + << getId(DETECTOR_SERIAL_NUMBER) << std::setbase(10); std::string settingsfname1 = ostfn.str(); ostfn.str(""); ostfn.clear(); ostfn << detector_shm()->settingsDir << ssettings << "/" << trim2 << "eV" - << "/noise.sn" << std::setfill('0') << std::setw(3) << std::dec << getId(DETECTOR_SERIAL_NUMBER) << std::setbase(10); + << "/noise.sn" << std::setfill('0') << std::setw(3) << std::dec + << getId(DETECTOR_SERIAL_NUMBER) << std::setbase(10); std::string settingsfname2 = ostfn.str(); - //read the files + // read the files FILE_LOG(logDEBUG1) << "Settings Files are " << settingsfname1 << " and " << settingsfname2; sls_detector_module *myMod1 = createModule(); sls_detector_module *myMod2 = createModule(); @@ -1285,20 +1278,22 @@ int slsDetector::setThresholdEnergyAndSettings(int e_eV, detectorSettings isetti if (myMod1->iodelay != myMod2->iodelay) { deleteModule(myMod1); deleteModule(myMod2); - throw RuntimeError("setThresholdEnergyAndSettings: Iodelays do not match between files"); + throw RuntimeError( + "setThresholdEnergyAndSettings: Iodelays do not match between files"); } - //interpolate module + // interpolate module myMod = interpolateTrim(myMod1, myMod2, e_eV, trim1, trim2, tb); if (myMod == nullptr) { deleteModule(myMod1); deleteModule(myMod2); - throw RuntimeError("setThresholdEnergyAndSettings: Could not interpolate, different dac values in files"); + throw RuntimeError("setThresholdEnergyAndSettings: Could not interpolate, different " + "dac values in files"); } - //interpolate tau + // interpolate tau myMod->iodelay = myMod1->iodelay; myMod->tau = linearInterpolation(e_eV, trim1, trim2, myMod1->tau, myMod2->tau); - //printf("new tau:%d\n",tau); + // printf("new tau:%d\n",tau); deleteModule(myMod1); deleteModule(myMod2); @@ -1314,9 +1309,7 @@ int slsDetector::setThresholdEnergyAndSettings(int e_eV, detectorSettings isetti return OK; } -std::string slsDetector::getSettingsDir() { - return std::string(detector_shm()->settingsDir); -} +std::string slsDetector::getSettingsDir() { return std::string(detector_shm()->settingsDir); } std::string slsDetector::setSettingsDir(const std::string &dir) { sls::strcpy_safe(detector_shm()->settingsDir, dir.c_str()); @@ -1330,8 +1323,10 @@ int slsDetector::loadSettingsFile(const std::string &fname) { // find specific file if it has detid in file name (.snxxx) if (detector_shm()->myDetectorType == EIGER) { - if (fname.find(".sn") == std::string::npos && fname.find(".trim") == std::string::npos && fname.find(".settings") == std::string::npos) { - ostfn << ".sn" << std::setfill('0') << std::setw(3) << std::dec << getId(DETECTOR_SERIAL_NUMBER); + if (fname.find(".sn") == std::string::npos && fname.find(".trim") == std::string::npos && + fname.find(".settings") == std::string::npos) { + ostfn << ".sn" << std::setfill('0') << std::setw(3) << std::dec + << getId(DETECTOR_SERIAL_NUMBER); } } fn = ostfn.str(); @@ -1358,7 +1353,8 @@ int slsDetector::saveSettingsFile(const std::string &fname) { // find specific file if it has detid in file name (.snxxx) if (detector_shm()->myDetectorType == EIGER) { - ostfn << ".sn" << std::setfill('0') << std::setw(3) << std::dec << getId(DETECTOR_SERIAL_NUMBER); + ostfn << ".sn" << std::setfill('0') << std::setw(3) << std::dec + << getId(DETECTOR_SERIAL_NUMBER); } fn = ostfn.str(); @@ -1475,7 +1471,7 @@ int slsDetector::startAndReadAll() { if (detector_shm()->onlineFlag == ONLINE_FLAG) { auto client = DetectorSocket(detector_shm()->hostname, detector_shm()->controlPort); ret = client.sendCommandThenRead(fnum, nullptr, 0, nullptr, 0); - //TODO! how to we hande this? ret == FAIL --> detector_shm()->stoppedFlag = 1; + // TODO! how to we hande this? ret == FAIL --> detector_shm()->stoppedFlag = 1; FILE_LOG(logDEBUG1) << "Detector successfully finished acquisition"; } if (ret == FORCE_UPDATE) { @@ -1507,7 +1503,7 @@ int slsDetector::readAll() { if (detector_shm()->onlineFlag == ONLINE_FLAG) { auto client = DetectorSocket(detector_shm()->hostname, detector_shm()->controlPort); ret = client.sendCommandThenRead(fnum, nullptr, 0, nullptr, 0); - //TODO! how to we hande this? ret == FAIL --> detector_shm()->stoppedFlag = 1; + // TODO! how to we hande this? ret == FAIL --> detector_shm()->stoppedFlag = 1; FILE_LOG(logDEBUG1) << "Detector successfully finished reading all frames"; } if (ret == FORCE_UPDATE) { @@ -1528,17 +1524,19 @@ int slsDetector::configureMAC() { // if rx_udpip is none if (!(strcmp(detector_shm()->receiverUDPIP, "none"))) { - //hostname is an ip address + // hostname is an ip address if (strchr(detector_shm()->receiver_hostname, '.') != nullptr) { sls::strcpy_safe(detector_shm()->receiverUDPIP, detector_shm()->receiver_hostname); - //if hostname not ip, convert it to ip + // if hostname not ip, convert it to ip } else { struct addrinfo *result; - if (sls::ConvertHostnameToInternetAddress(detector_shm()->receiver_hostname, &result) == 0) { + if (sls::ConvertHostnameToInternetAddress(detector_shm()->receiver_hostname, &result) == + 0) { // on success memset(detector_shm()->receiverUDPIP, 0, MAX_STR_LENGTH); // on failure, back to none - if (sls::ConvertInternetAddresstoIpString(result, detector_shm()->receiverUDPIP, MAX_STR_LENGTH)) { + if (sls::ConvertInternetAddresstoIpString(result, detector_shm()->receiverUDPIP, + MAX_STR_LENGTH)) { sls::strcpy_safe(detector_shm()->receiverUDPIP, "none"); } } @@ -1567,18 +1565,17 @@ int slsDetector::configureMAC() { // col for horiz. udp ports pos[1] = (detId / max) * ((detector_shm()->myDetectorType == EIGER) ? 2 : 1); // pos[2] (z is reserved) - FILE_LOG(logDEBUG1) << "Detector [" << detId << "] - (" - << pos[0] << "," << pos[1] << ")"; + FILE_LOG(logDEBUG1) << "Detector [" << detId << "] - (" << pos[0] << "," << pos[1] << ")"; snprintf(args[6], array_size, "%x", pos[0]); snprintf(args[7], array_size, "%x", pos[1]); snprintf(args[8], array_size, "%x", pos[2]); } - //converting receiverUDPIP to string hex + // converting receiverUDPIP to string hex sls::strcpy_safe(args[0], sls::stringIpToHex(args[0]).c_str()); FILE_LOG(logDEBUG1) << "receiver udp ip:" << args[0] << "-"; - //MAC already in hex removing : + // MAC already in hex removing : sls::removeChar(args[1], ':'); FILE_LOG(logDEBUG1) << "receiver udp mac:" << args[1] << "-"; FILE_LOG(logDEBUG1) << "receiver udp port:" << args[2] << "-"; @@ -1586,7 +1583,7 @@ int slsDetector::configureMAC() { // MAC already in hex removing : sls::removeChar(args[3], ':'); FILE_LOG(logDEBUG1) << "detector udp mac:" << args[3] << "-"; - //converting detectorIP to string hex + // converting detectorIP to string hex sls::strcpy_safe(args[4], sls::stringIpToHex(args[4]).c_str()); FILE_LOG(logDEBUG1) << "detecotor udp ip:" << args[4] << "-"; @@ -1611,16 +1608,14 @@ int slsDetector::configureMAC() { (unsigned int)((idetectormac >> 16) & 0xFF), (unsigned int)((idetectormac >> 8) & 0xFF), (unsigned int)((idetectormac >> 0) & 0xFF)); - snprintf(retvals[1], sizeof(retvals[1]), "%d.%d.%d.%d", - (idetectorip >> 24) & 0xff, - (idetectorip >> 16) & 0xff, - (idetectorip >> 8) & 0xff, - (idetectorip)&0xff); + snprintf(retvals[1], sizeof(retvals[1]), "%d.%d.%d.%d", (idetectorip >> 24) & 0xff, + (idetectorip >> 16) & 0xff, (idetectorip >> 8) & 0xff, (idetectorip)&0xff); // update if different if (strcasecmp(retvals[0], detector_shm()->detectorMAC)) { // memset(detector_shm()->detectorMAC, 0, MAX_STR_LENGTH); sls::strcpy_safe(detector_shm()->detectorMAC, retvals[0]); - FILE_LOG(logINFO) << detId << ": Detector MAC updated to " << detector_shm()->detectorMAC; + FILE_LOG(logINFO) << detId << ": Detector MAC updated to " + << detector_shm()->detectorMAC; } if (strcasecmp(retvals[1], detector_shm()->detectorIP)) { // memset(detector_shm()->detectorIP, 0, MAX_STR_LENGTH); @@ -1658,8 +1653,8 @@ int64_t slsDetector::setTimer(timerIndex index, int64_t t) { FILE_LOG(logDEBUG1) << getTimerType(index) << ": " << retval; detector_shm()->timerValue[index] = retval; // update #nchans and databytes, as it depends on #samples, roi, readoutflags (ctb only) - if (index == SAMPLES && - (detector_shm()->myDetectorType == CHIPTESTBOARD || detector_shm()->myDetectorType == MOENCH)) { + if (index == SAMPLES && (detector_shm()->myDetectorType == CHIPTESTBOARD || + detector_shm()->myDetectorType == MOENCH)) { updateTotalNumberOfChannels(); } if (ret == FORCE_UPDATE) { @@ -1686,7 +1681,8 @@ int64_t slsDetector::setTimer(timerIndex index, int64_t t) { // send to reciever if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG && ret == OK) { - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); // char mess[MAX_STR_LENGTH]{}; switch (index) { case FRAME_NUMBER: @@ -1704,14 +1700,22 @@ int64_t slsDetector::setTimer(timerIndex index, int64_t t) { retval = -1; // rewrite args - if ((index == FRAME_NUMBER) || (index == CYCLES_NUMBER) || (index == STORAGE_CELL_NUMBER)) { + if ((index == FRAME_NUMBER) || (index == CYCLES_NUMBER) || + (index == STORAGE_CELL_NUMBER)) { args[1] = detector_shm()->timerValue[FRAME_NUMBER] * - ((detector_shm()->timerValue[CYCLES_NUMBER] > 0) ? (detector_shm()->timerValue[CYCLES_NUMBER]) : 1) * + ((detector_shm()->timerValue[CYCLES_NUMBER] > 0) + ? (detector_shm()->timerValue[CYCLES_NUMBER]) + : 1) * ((detector_shm()->timerValue[STORAGE_CELL_NUMBER] > 0) ? (detector_shm()->timerValue[STORAGE_CELL_NUMBER]) + 1 : 1); } - FILE_LOG(logDEBUG1) << "Sending " << (((index == FRAME_NUMBER) || (index == CYCLES_NUMBER) || (index == STORAGE_CELL_NUMBER)) ? "(#Frames) * (#cycles) * (#storage cells)" : getTimerType(index)) << " to receiver: " << args[1]; + FILE_LOG(logDEBUG1) << "Sending " + << (((index == FRAME_NUMBER) || (index == CYCLES_NUMBER) || + (index == STORAGE_CELL_NUMBER)) + ? "(#Frames) * (#cycles) * (#storage cells)" + : getTimerType(index)) + << " to receiver: " << args[1]; ret = receiver.sendCommandThenRead(fnum, args, sizeof(args), &retval, sizeof(retval)); if (ret == FORCE_UPDATE) { receiver.close(); @@ -1761,7 +1765,7 @@ int slsDetector::setSpeed(speedVariable sp, int value) { } int slsDetector::setDynamicRange(int n) { - //TODO! Properly handle fail + // TODO! Properly handle fail int fnum = F_SET_DYNAMIC_RANGE; int ret = FAIL; int retval = -1; @@ -1793,7 +1797,8 @@ int slsDetector::setDynamicRange(int n) { detector_shm()->gappixels * detector_shm()->nGappixels[Y]) * retval / 8; FILE_LOG(logDEBUG1) << "Data bytes " << detector_shm()->dataBytes; - FILE_LOG(logDEBUG1) << "Data bytes including gap pixels" << detector_shm()->dataBytesInclGapPixels; + FILE_LOG(logDEBUG1) << "Data bytes including gap pixels" + << detector_shm()->dataBytesInclGapPixels; } // send to receiver @@ -1803,7 +1808,8 @@ int slsDetector::setDynamicRange(int n) { n = detector_shm()->dynamicRange; retval = -1; FILE_LOG(logDEBUG1) << "Sending dynamic range to receiver: " << n; - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, &n, sizeof(n), &retval, sizeof(retval)); FILE_LOG(logDEBUG1) << "Receiver Dynamic range: " << retval; if (ret == FORCE_UPDATE) { @@ -1814,13 +1820,9 @@ int slsDetector::setDynamicRange(int n) { return detector_shm()->dynamicRange; } -int slsDetector::getDataBytes() { - return detector_shm()->dataBytes; -} +int slsDetector::getDataBytes() { return detector_shm()->dataBytes; } -int slsDetector::getDataBytesInclGapPixels() { - return detector_shm()->dataBytesInclGapPixels; -} +int slsDetector::getDataBytesInclGapPixels() { return detector_shm()->dataBytesInclGapPixels; } int slsDetector::setDAC(int val, dacIndex index, int mV) { int fnum = F_SET_DAC; @@ -1832,8 +1834,7 @@ int slsDetector::setDAC(int val, dacIndex index, int mV) { if (detector_shm()->onlineFlag == ONLINE_FLAG) { auto client = DetectorSocket(detector_shm()->hostname, detector_shm()->controlPort); ret = client.sendCommandThenRead(fnum, args, sizeof(args), &retval, sizeof(retval)); - FILE_LOG(logDEBUG1) << "Dac index " << index << ": " - << retval << (mV ? "mV" : "dac units"); + FILE_LOG(logDEBUG1) << "Dac index " << index << ": " << retval << (mV ? "mV" : "dac units"); } if (ret == FORCE_UPDATE) { ret = updateDetector(); @@ -1855,8 +1856,8 @@ int slsDetector::getADC(dacIndex index) { return retval; } -slsDetectorDefs::externalCommunicationMode slsDetector::setExternalCommunicationMode( - externalCommunicationMode pol) { +slsDetectorDefs::externalCommunicationMode +slsDetector::setExternalCommunicationMode(externalCommunicationMode pol) { int fnum = F_SET_EXTERNAL_COMMUNICATION_MODE; int ret = FAIL; int arg = (int)pol; @@ -1874,8 +1875,8 @@ slsDetectorDefs::externalCommunicationMode slsDetector::setExternalCommunication return retval; } -slsDetectorDefs::externalSignalFlag slsDetector::setExternalSignalFlags( - externalSignalFlag pol, int signalindex) { +slsDetectorDefs::externalSignalFlag slsDetector::setExternalSignalFlags(externalSignalFlag pol, + int signalindex) { int fnum = F_SET_EXTERNAL_SIGNAL_FLAG; int ret = FAIL; int args[2] = {signalindex, pol}; @@ -1923,7 +1924,8 @@ int slsDetector::setReadOutFlags(readOutFlags flag) { FILE_LOG(logDEBUG1) << "Setting receiver readout flags to " << arg; if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) { - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, &arg, sizeof(arg), &retval, sizeof(retval)); FILE_LOG(logDEBUG1) << "Receiver readout flag: " << retval; } @@ -1940,12 +1942,14 @@ uint32_t slsDetector::writeRegister(uint32_t addr, uint32_t val) { int ret = FAIL; uint32_t args[2] = {addr, val}; uint32_t retval = -1; - FILE_LOG(logDEBUG1) << "Writing to register 0x" << std::hex << addr << "data: 0x" << std::hex << val << std::dec; + FILE_LOG(logDEBUG1) << "Writing to register 0x" << std::hex << addr << "data: 0x" << std::hex + << val << std::dec; if (detector_shm()->onlineFlag == ONLINE_FLAG) { auto client = DetectorSocket(detector_shm()->hostname, detector_shm()->controlPort); ret = client.sendCommandThenRead(fnum, args, sizeof(args), &retval, sizeof(retval)); - FILE_LOG(logDEBUG1) << "Register 0x" << std::hex << addr << ": 0x" << std::hex << retval << std::dec; + FILE_LOG(logDEBUG1) << "Register 0x" << std::hex << addr << ": 0x" << std::hex << retval + << std::dec; } if (ret == FORCE_UPDATE) { ret = updateDetector(); @@ -1963,7 +1967,8 @@ uint32_t slsDetector::readRegister(uint32_t addr) { if (detector_shm()->onlineFlag == ONLINE_FLAG) { auto client = DetectorSocket(detector_shm()->hostname, detector_shm()->controlPort); ret = client.sendCommandThenRead(fnum, &arg, sizeof(arg), &retval, sizeof(retval)); - FILE_LOG(logDEBUG1) << "Register 0x" << std::hex << addr << ": 0x" << std::hex << retval << std::dec; + FILE_LOG(logDEBUG1) << "Register 0x" << std::hex << addr << ": 0x" << std::hex << retval + << std::dec; } if (ret == FORCE_UPDATE) { ret = updateDetector(); @@ -1991,9 +1996,8 @@ uint32_t slsDetector::clearBit(uint32_t addr, int n) { std::string slsDetector::setDetectorMAC(const std::string &detectorMAC) { // invalid format - if ((detectorMAC.length() != 17) || - (detectorMAC[2] != ':') || (detectorMAC[5] != ':') || (detectorMAC[8] != ':') || - (detectorMAC[11] != ':') || (detectorMAC[14] != ':')) { + if ((detectorMAC.length() != 17) || (detectorMAC[2] != ':') || (detectorMAC[5] != ':') || + (detectorMAC[8] != ':') || (detectorMAC[11] != ':') || (detectorMAC[14] != ':')) { throw RuntimeError("server MAC Address should be in xx:xx:xx:xx:xx:xx format"); } // valid format @@ -2008,16 +2012,15 @@ std::string slsDetector::setDetectorMAC(const std::string &detectorMAC) { return std::string(detector_shm()->detectorMAC); } -std::string slsDetector::getDetectorMAC() { - return std::string(detector_shm()->detectorMAC); -} +std::string slsDetector::getDetectorMAC() { return std::string(detector_shm()->detectorMAC); } std::string slsDetector::setDetectorIP(const std::string &detectorIP) { struct sockaddr_in sa; if (detectorIP.length() && detectorIP.length() < 16) { int result = inet_pton(AF_INET, detectorIP.c_str(), &(sa.sin_addr)); if (result == 0) { - throw RuntimeError("setDetectorIP: IP Address should be VALID and in xxx.xxx.xxx.xxx format"); + throw RuntimeError( + "setDetectorIP: IP Address should be VALID and in xxx.xxx.xxx.xxx format"); } else { sls::strcpy_safe(detector_shm()->detectorIP, detectorIP.c_str()); if (!strcmp(detector_shm()->receiver_hostname, "none")) { @@ -2030,9 +2033,7 @@ std::string slsDetector::setDetectorIP(const std::string &detectorIP) { return std::string(detector_shm()->detectorIP); } -std::string slsDetector::getDetectorIP() const { - return std::string(detector_shm()->detectorIP); -} +std::string slsDetector::getDetectorIP() const { return std::string(detector_shm()->detectorIP); } std::string slsDetector::setReceiverHostname(const std::string &receiverIP) { FILE_LOG(logDEBUG1) << "Setting up Receiver with " << receiverIP; @@ -2055,7 +2056,39 @@ std::string slsDetector::setReceiverHostname(const std::string &receiverIP) { sls::strcpy_safe(detector_shm()->receiver_hostname, receiverIP.c_str()); if (setReceiverOnline(ONLINE_FLAG) == ONLINE_FLAG) { - FILE_LOG(logDEBUG1) << "detector type:" << (slsDetectorDefs::detectorTypeToString(detector_shm()->myDetectorType)) << "\ndetector id:" << detId << "\ndetector hostname:" << detector_shm()->hostname << "\nfile path:" << detector_shm()->receiver_filePath << "\nfile name:" << detector_shm()->receiver_fileName << "\nfile index:" << detector_shm()->receiver_fileIndex << "\nfile format:" << detector_shm()->receiver_fileFormatType << "\nr_framesperfile:" << detector_shm()->receiver_framesPerFile << "\nr_discardpolicy:" << detector_shm()->receiver_frameDiscardMode << "\nr_padding:" << detector_shm()->receiver_framePadding << "\nwrite enable:" << detector_shm()->receiver_fileWriteEnable << "\noverwrite enable:" << detector_shm()->receiver_overWriteEnable << "\nframe index needed:" << ((detector_shm()->timerValue[FRAME_NUMBER] * detector_shm()->timerValue[CYCLES_NUMBER]) > 1) << "\nframe period:" << (detector_shm()->timerValue[FRAME_PERIOD]) << "\nframe number:" << (detector_shm()->timerValue[FRAME_NUMBER]) << "\nsub exp time:" << (detector_shm()->timerValue[SUBFRAME_ACQUISITION_TIME]) << "\nsub dead time:" << (detector_shm()->timerValue[SUBFRAME_DEADTIME]) << "\nsamples:" << (detector_shm()->timerValue[SAMPLES]) << "\ndynamic range:" << detector_shm()->dynamicRange << "\nflippeddatax:" << (detector_shm()->flippedData[X]) << "\nactivated: " << detector_shm()->activated << "\nreceiver deactivated padding: " << detector_shm()->receiver_deactivatedPaddingEnable << "\nsilent Mode:" << detector_shm()->receiver_silentMode << "\n10GbE:" << detector_shm()->tenGigaEnable << "\nGap pixels: " << detector_shm()->gappixels << "\nr_readfreq:" << detector_shm()->receiver_read_freq << "\nrx streaming port:" << detector_shm()->receiver_zmqport << "\nrx streaming source ip:" << detector_shm()->receiver_zmqip << "\nrx additional json header:" << detector_shm()->receiver_additionalJsonHeader << "\nrx_datastream:" << enableDataStreamingFromReceiver(-1) << std::endl; + FILE_LOG(logDEBUG1) + << "detector type:" + << (slsDetectorDefs::detectorTypeToString(detector_shm()->myDetectorType)) + << "\ndetector id:" << detId << "\ndetector hostname:" << detector_shm()->hostname + << "\nfile path:" << detector_shm()->receiver_filePath + << "\nfile name:" << detector_shm()->receiver_fileName + << "\nfile index:" << detector_shm()->receiver_fileIndex + << "\nfile format:" << detector_shm()->receiver_fileFormatType + << "\nr_framesperfile:" << detector_shm()->receiver_framesPerFile + << "\nr_discardpolicy:" << detector_shm()->receiver_frameDiscardMode + << "\nr_padding:" << detector_shm()->receiver_framePadding + << "\nwrite enable:" << detector_shm()->receiver_fileWriteEnable + << "\noverwrite enable:" << detector_shm()->receiver_overWriteEnable + << "\nframe index needed:" + << ((detector_shm()->timerValue[FRAME_NUMBER] * + detector_shm()->timerValue[CYCLES_NUMBER]) > 1) + << "\nframe period:" << (detector_shm()->timerValue[FRAME_PERIOD]) + << "\nframe number:" << (detector_shm()->timerValue[FRAME_NUMBER]) + << "\nsub exp time:" << (detector_shm()->timerValue[SUBFRAME_ACQUISITION_TIME]) + << "\nsub dead time:" << (detector_shm()->timerValue[SUBFRAME_DEADTIME]) + << "\nsamples:" << (detector_shm()->timerValue[SAMPLES]) + << "\ndynamic range:" << detector_shm()->dynamicRange + << "\nflippeddatax:" << (detector_shm()->flippedData[X]) + << "\nactivated: " << detector_shm()->activated << "\nreceiver deactivated padding: " + << detector_shm()->receiver_deactivatedPaddingEnable + << "\nsilent Mode:" << detector_shm()->receiver_silentMode + << "\n10GbE:" << detector_shm()->tenGigaEnable + << "\nGap pixels: " << detector_shm()->gappixels + << "\nr_readfreq:" << detector_shm()->receiver_read_freq + << "\nrx streaming port:" << detector_shm()->receiver_zmqport + << "\nrx streaming source ip:" << detector_shm()->receiver_zmqip + << "\nrx additional json header:" << detector_shm()->receiver_additionalJsonHeader + << "\nrx_datastream:" << enableDataStreamingFromReceiver(-1) << std::endl; if (setDetectorType(detector_shm()->myDetectorType) != GENERIC) { sendMultiDetectorSize(); @@ -2079,7 +2112,8 @@ std::string slsDetector::setReceiverHostname(const std::string &receiverIP) { switch (detector_shm()->myDetectorType) { case EIGER: - setTimer(SUBFRAME_ACQUISITION_TIME, detector_shm()->timerValue[SUBFRAME_ACQUISITION_TIME]); + setTimer(SUBFRAME_ACQUISITION_TIME, + detector_shm()->timerValue[SUBFRAME_ACQUISITION_TIME]); setTimer(SUBFRAME_DEADTIME, detector_shm()->timerValue[SUBFRAME_DEADTIME]); setDynamicRange(detector_shm()->dynamicRange); setFlippedData(X, -1); @@ -2112,7 +2146,9 @@ std::string slsDetector::setReceiverHostname(const std::string &receiverIP) { setReceiverStreamingIP(getReceiverStreamingIP()); setAdditionalJsonHeader(detector_shm()->receiver_additionalJsonHeader); enableDataStreamingFromReceiver(enableDataStreamingFromReceiver(-1)); - if (detector_shm()->myDetectorType == GOTTHARD || detector_shm()->myDetectorType == CHIPTESTBOARD || detector_shm()->myDetectorType == MOENCH) { + if (detector_shm()->myDetectorType == GOTTHARD || + detector_shm()->myDetectorType == CHIPTESTBOARD || + detector_shm()->myDetectorType == MOENCH) { sendROI(-1, nullptr); } } @@ -2129,7 +2165,8 @@ std::string slsDetector::setReceiverUDPIP(const std::string &udpip) { if (udpip.length() && udpip.length() < 16) { int result = inet_pton(AF_INET, udpip.c_str(), &(sa.sin_addr)); if (result == 0) { - throw ReceiverError("setReceiverUDPIP: UDP IP Address should be VALID and in xxx.xxx.xxx.xxx format"); + throw ReceiverError( + "setReceiverUDPIP: UDP IP Address should be VALID and in xxx.xxx.xxx.xxx format"); } else { sls::strcpy_safe(detector_shm()->receiverUDPIP, udpip.c_str()); if (!strcmp(detector_shm()->receiver_hostname, "none")) { @@ -2148,10 +2185,10 @@ std::string slsDetector::getReceiverUDPIP() const { std::string slsDetector::setReceiverUDPMAC(const std::string &udpmac) { // invalid format - if ((udpmac.length() != 17) || - (udpmac[2] != ':') || (udpmac[5] != ':') || (udpmac[8] != ':') || + if ((udpmac.length() != 17) || (udpmac[2] != ':') || (udpmac[5] != ':') || (udpmac[8] != ':') || (udpmac[11] != ':') || (udpmac[14] != ':')) { - throw ReceiverError("setReceiverUDPMAC: udp MAC Address should be in xx:xx:xx:xx:xx:xx format"); + throw ReceiverError( + "setReceiverUDPMAC: udp MAC Address should be in xx:xx:xx:xx:xx:xx format"); } // valid format else { @@ -2179,9 +2216,7 @@ int slsDetector::setReceiverUDPPort(int udpport) { return detector_shm()->receiverUDPPort; } -int slsDetector::getReceiverUDPPort() const { - return detector_shm()->receiverUDPPort; -} +int slsDetector::getReceiverUDPPort() const { return detector_shm()->receiverUDPPort; } int slsDetector::setReceiverUDPPort2(int udpport) { if (detector_shm()->myDetectorType != EIGER) { @@ -2196,17 +2231,11 @@ int slsDetector::setReceiverUDPPort2(int udpport) { return detector_shm()->receiverUDPPort2; } -int slsDetector::getReceiverUDPPort2() const { - return detector_shm()->receiverUDPPort2; -} +int slsDetector::getReceiverUDPPort2() const { return detector_shm()->receiverUDPPort2; } -void slsDetector::setClientStreamingPort(int port) { - detector_shm()->zmqport = port; -} +void slsDetector::setClientStreamingPort(int port) { detector_shm()->zmqport = port; } -int slsDetector::getClientStreamingPort() { - return detector_shm()->zmqport; -} +int slsDetector::getClientStreamingPort() { return detector_shm()->zmqport; } void slsDetector::setReceiverStreamingPort(int port) { // copy now else it is lost if rx_hostname not set yet @@ -2219,7 +2248,8 @@ void slsDetector::setReceiverStreamingPort(int port) { FILE_LOG(logDEBUG1) << "Sending receiver streaming port to receiver: " << arg; if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) { - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, &arg, sizeof(arg), &retval, sizeof(retval)); FILE_LOG(logDEBUG1) << "Receiver streaming port: " << retval; detector_shm()->receiver_zmqport = retval; @@ -2229,9 +2259,7 @@ void slsDetector::setReceiverStreamingPort(int port) { } } -int slsDetector::getReceiverStreamingPort() { - return detector_shm()->receiver_zmqport; -} +int slsDetector::getReceiverStreamingPort() { return detector_shm()->receiver_zmqport; } void slsDetector::setClientStreamingIP(const std::string &sourceIP) { struct addrinfo *result; @@ -2244,9 +2272,7 @@ void slsDetector::setClientStreamingIP(const std::string &sourceIP) { sls::ConvertInternetAddresstoIpString(result, detector_shm()->zmqip, MAX_STR_LENGTH); } -std::string slsDetector::getClientStreamingIP() { - return std::string(detector_shm()->zmqip); -} +std::string slsDetector::getClientStreamingIP() { return std::string(detector_shm()->zmqip); } void slsDetector::setReceiverStreamingIP(std::string sourceIP) { int fnum = F_RECEIVER_STREAMING_SRC_IP; @@ -2285,7 +2311,8 @@ void slsDetector::setReceiverStreamingIP(std::string sourceIP) { // send to receiver if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) { - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, args, sizeof(args), retvals, sizeof(retvals)); FILE_LOG(logDEBUG1) << "Receiver streaming port: " << retvals; memset(detector_shm()->receiver_zmqip, 0, MAX_STR_LENGTH); @@ -2330,7 +2357,8 @@ std::string slsDetector::setAdditionalJsonHeader(const std::string &jsonheader) if (detector_shm()->receiverOnlineFlag != ONLINE_FLAG) { sls::strcpy_safe(detector_shm()->receiver_additionalJsonHeader, jsonheader.c_str()); } else { - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, args, sizeof(args), retvals, sizeof(retvals)); FILE_LOG(logDEBUG1) << "Additional json header: " << retvals; memset(detector_shm()->receiver_additionalJsonHeader, 0, MAX_STR_LENGTH); @@ -2349,7 +2377,8 @@ std::string slsDetector::getAdditionalJsonHeader() { FILE_LOG(logDEBUG1) << "Getting additional json header "; if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) { - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, nullptr, 0, retvals, sizeof(retvals)); FILE_LOG(logDEBUG1) << "Additional json header: " << retvals; memset(detector_shm()->receiver_additionalJsonHeader, 0, MAX_STR_LENGTH); @@ -2361,18 +2390,22 @@ std::string slsDetector::getAdditionalJsonHeader() { return std::string(detector_shm()->receiver_additionalJsonHeader); } -std::string slsDetector::setAdditionalJsonParameter(const std::string &key, const std::string &value) { +std::string slsDetector::setAdditionalJsonParameter(const std::string &key, + const std::string &value) { // validation (value or key is empty) if (!key.length() || !value.length()) { throw("Could not set additional json header parameter as the key or value is empty"); } // validation (ignore if key or value has , : ") - if (key.find_first_of(",\":") != std::string::npos || value.find_first_of(",\":") != std::string::npos) { - throw RuntimeError("Could not set additional json header parameter as the key or value has illegal characters (,\":)"); + if (key.find_first_of(",\":") != std::string::npos || + value.find_first_of(",\":") != std::string::npos) { + throw RuntimeError("Could not set additional json header parameter as the key or value has " + "illegal characters (,\":)"); } - // create actual key to search for and actual value to put, (key has additional ':' as value could exist the same way) + // create actual key to search for and actual value to put, (key has additional ':' as value + // could exist the same way) std::string keyLiteral(std::string("\"") + key + std::string("\":")); std::string valueLiteral(value); // add quotations to value only if it is a string @@ -2444,7 +2477,8 @@ int64_t slsDetector::setReceiverUDPSocketBufferSize(int64_t udpsockbufsize) { FILE_LOG(logDEBUG1) << "Sending UDP Socket Buffer size to receiver: " << arg; if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) { - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, &arg, sizeof(arg), &retval, sizeof(retval)); FILE_LOG(logDEBUG1) << "Receiver UDP Socket Buffer size: " << retval; } @@ -2454,9 +2488,7 @@ int64_t slsDetector::setReceiverUDPSocketBufferSize(int64_t udpsockbufsize) { return retval; } -int64_t slsDetector::getReceiverUDPSocketBufferSize() { - return setReceiverUDPSocketBufferSize(); -} +int64_t slsDetector::getReceiverUDPSocketBufferSize() { return setReceiverUDPSocketBufferSize(); } int64_t slsDetector::getReceiverRealUDPSocketBufferSize() { int fnum = F_RECEIVER_REAL_UDP_SOCK_BUF_SIZE; @@ -2465,7 +2497,8 @@ int64_t slsDetector::getReceiverRealUDPSocketBufferSize() { FILE_LOG(logDEBUG1) << "Getting real UDP Socket Buffer size to receiver"; if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) { - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, nullptr, 0, &retval, sizeof(retval)); FILE_LOG(logDEBUG1) << "Real Receiver UDP Socket Buffer size: " << retval; } @@ -2495,17 +2528,19 @@ int slsDetector::setUDPConnection() { // if hostname not ip, convert it to ip } else { struct addrinfo *result; - if (sls::ConvertHostnameToInternetAddress(detector_shm()->receiver_hostname, &result) == 0) { + if (sls::ConvertHostnameToInternetAddress(detector_shm()->receiver_hostname, &result) == + 0) { // on success memset(detector_shm()->receiverUDPIP, 0, MAX_STR_LENGTH); // on failure, back to none - if (sls::ConvertInternetAddresstoIpString(result, detector_shm()->receiverUDPIP, MAX_STR_LENGTH)) { + if (sls::ConvertInternetAddresstoIpString(result, detector_shm()->receiverUDPIP, + MAX_STR_LENGTH)) { sls::strcpy_safe(detector_shm()->receiverUDPIP, "none"); } } } } - //copy arguments to args[][] + // copy arguments to args[][] sls::strcpy_safe(args[0], detector_shm()->receiverUDPIP); snprintf(args[1], sizeof(args[2]), "%d", detector_shm()->receiverUDPPort); snprintf(args[2], sizeof(args[2]), "%d", detector_shm()->receiverUDPPort2); @@ -2514,7 +2549,8 @@ int slsDetector::setUDPConnection() { FILE_LOG(logDEBUG1) << "Receiver udp port2: " << detector_shm()->receiverUDPPort2; if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) { - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, args, sizeof(args), retvals, sizeof(retvals)); FILE_LOG(logDEBUG1) << "Receiver UDP MAC returned : " << retvals; memset(detector_shm()->receiverUDPMAC, 0, MAX_STR_LENGTH); @@ -2523,9 +2559,9 @@ int slsDetector::setUDPConnection() { receiver.close(); ret = updateCachedReceiverVariables(); } - //configure detector with udp details + // configure detector with udp details if (configureMAC() == FAIL) { - setReceiverOnline(OFFLINE_FLAG); //FIXME: Needed?? + setReceiverOnline(OFFLINE_FLAG); // FIXME: Needed?? } } else { throw ReceiverError("setUDPConnection: Receiver is OFFLINE"); @@ -2581,7 +2617,8 @@ int slsDetector::sendImageToDetector(imageType index, int16_t imageVals[]) { if (ret == FAIL) { char mess[MAX_STR_LENGTH]{}; client.receiveData(mess, MAX_STR_LENGTH); - throw DetectorError("Detector " + std::to_string(detId) + " returned error: " + std::string(mess)); + throw DetectorError("Detector " + std::to_string(detId) + + " returned error: " + std::string(mess)); } } if (ret == FORCE_UPDATE) { @@ -2594,7 +2631,8 @@ int slsDetector::writeCounterBlockFile(const std::string &fname, int startACQ) { int ret = FAIL; int nChan = getTotalNumberOfChannels(); short int retvals[nChan]; - FILE_LOG(logDEBUG1) << "Reading Counter to " << fname << (startACQ ? " and Restarting Acquisition" : "\n"); + FILE_LOG(logDEBUG1) << "Reading Counter to " << fname + << (startACQ ? " and Restarting Acquisition" : "\n"); ret = getCounterBlock(retvals, startACQ); if (ret != FAIL) { @@ -2657,7 +2695,9 @@ int slsDetector::setCounterBit(int i) { int slsDetector::sendROIToProcessor() { std::ostringstream os; - os << "[" << detector_shm()->roiLimits[0].xmin << ", " << detector_shm()->roiLimits[0].xmax << ", " << detector_shm()->roiLimits[0].ymin << ", " << detector_shm()->roiLimits[0].ymax << "]"; + os << "[" << detector_shm()->roiLimits[0].xmin << ", " << detector_shm()->roiLimits[0].xmax + << ", " << detector_shm()->roiLimits[0].ymin << ", " << detector_shm()->roiLimits[0].ymax + << "]"; std::string sroi = os.str(); std::string result = setAdditionalJsonParameter("roi", sroi); if (result == sroi) @@ -2692,7 +2732,8 @@ int slsDetector::setROI(int n, ROI roiLimits[]) { sendROIToProcessor(); } // update #nchans and databytes, as it depends on #samples, roi, readoutflags (ctb only) - if (detector_shm()->myDetectorType == CHIPTESTBOARD || detector_shm()->myDetectorType == MOENCH) { + if (detector_shm()->myDetectorType == CHIPTESTBOARD || + detector_shm()->myDetectorType == MOENCH) { updateTotalNumberOfChannels(); } return ret; @@ -2701,20 +2742,20 @@ int slsDetector::setROI(int n, ROI roiLimits[]) { slsDetectorDefs::ROI *slsDetector::getROI(int &n) { sendROI(-1, nullptr); n = detector_shm()->nROI; - // moench - get json header(due to different clients, diff shm) (get roi is from detector: updated anyway) + // moench - get json header(due to different clients, diff shm) (get roi is from detector: + // updated anyway) if (detector_shm()->myDetectorType == MOENCH) { getAdditionalJsonHeader(); } // update #nchans and databytes, as it depends on #samples, roi, readoutflags (ctb only) - if (detector_shm()->myDetectorType == CHIPTESTBOARD || detector_shm()->myDetectorType == MOENCH) { + if (detector_shm()->myDetectorType == CHIPTESTBOARD || + detector_shm()->myDetectorType == MOENCH) { updateTotalNumberOfChannels(); } return detector_shm()->roiLimits; } -int slsDetector::getNRoi() { - return detector_shm()->nROI; -} +int slsDetector::getNRoi() { return detector_shm()->nROI; } int slsDetector::sendROI(int n, ROI roiLimits[]) { int fnum = F_SET_ROI; @@ -2744,7 +2785,8 @@ int slsDetector::sendROI(int n, ROI roiLimits[]) { if (ret == FAIL) { char mess[MAX_STR_LENGTH]{}; client.receiveData(mess, MAX_STR_LENGTH); - throw RuntimeError("Detector " + std::to_string(detId) + " returned error: " + std::string(mess)); + throw RuntimeError("Detector " + std::to_string(detId) + + " returned error: " + std::string(mess)); } else { client.receiveData(&nretval, sizeof(nretval)); int nrec = 0; @@ -2758,7 +2800,10 @@ int slsDetector::sendROI(int n, ROI roiLimits[]) { FILE_LOG(logDEBUG1) << "nRoi: " << nretval; for (int i = 0; i < nretval; ++i) { detector_shm()->roiLimits[i] = retval[i]; - FILE_LOG(logDEBUG1) << "ROI [" << i << "] (" << detector_shm()->roiLimits[i].xmin << "," << detector_shm()->roiLimits[i].xmax << "," << detector_shm()->roiLimits[i].ymin << "," << detector_shm()->roiLimits[i].ymax << ")"; + FILE_LOG(logDEBUG1) + << "ROI [" << i << "] (" << detector_shm()->roiLimits[i].xmin << "," + << detector_shm()->roiLimits[i].xmax << "," << detector_shm()->roiLimits[i].ymin + << "," << detector_shm()->roiLimits[i].ymax << ")"; } } } @@ -2778,7 +2823,8 @@ int slsDetector::sendROI(int n, ROI roiLimits[]) { arg = detector_shm()->roiLimits; FILE_LOG(logDEBUG1) << "Sending ROI to receiver: " << detector_shm()->nROI; - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); receiver.sendData(&fnum, sizeof(fnum)); receiver.sendData(&narg, sizeof(narg)); if (narg != -1) { @@ -2794,7 +2840,8 @@ int slsDetector::sendROI(int n, ROI roiLimits[]) { if (ret == FAIL) { char mess[MAX_STR_LENGTH]{}; receiver.receiveData(mess, MAX_STR_LENGTH); - throw ReceiverError("Receiver " + std::to_string(detId) + " returned error: " + std::string(mess)); + throw ReceiverError("Receiver " + std::to_string(detId) + + " returned error: " + std::string(mess)); } if (ret == FORCE_UPDATE) { ret = updateCachedReceiverVariables(); @@ -2807,7 +2854,8 @@ int slsDetector::writeAdcRegister(int addr, int val) { int fnum = F_WRITE_ADC_REG; int ret = FAIL; uint32_t args[2] = {(uint32_t)addr, (uint32_t)val}; - FILE_LOG(logDEBUG1) << "Writing to ADC register 0x" << std::hex << addr << "data: 0x" << std::hex << val << std::dec; + FILE_LOG(logDEBUG1) << "Writing to ADC register 0x" << std::hex << addr << "data: 0x" + << std::hex << val << std::dec; if (detector_shm()->onlineFlag == ONLINE_FLAG) { auto client = DetectorSocket(detector_shm()->hostname, detector_shm()->controlPort); @@ -2845,7 +2893,8 @@ int slsDetector::activate(int const enable) { retval = -1; FILE_LOG(logDEBUG1) << "Setting activate flag " << arg << " to receiver"; - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, &arg, sizeof(arg), &retval, sizeof(retval)); if (ret == FORCE_UPDATE) { receiver.close(); @@ -2863,7 +2912,8 @@ int slsDetector::setDeactivatedRxrPaddingMode(int padding) { FILE_LOG(logDEBUG1) << "Deactivated Receiver Padding Enable: " << arg; if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) { - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, &arg, sizeof(arg), &retval, sizeof(retval)); FILE_LOG(logDEBUG1) << "Deactivated Receiver Padding Enable:" << retval; detector_shm()->receiver_deactivatedPaddingEnable = retval; @@ -2874,9 +2924,7 @@ int slsDetector::setDeactivatedRxrPaddingMode(int padding) { return detector_shm()->receiver_deactivatedPaddingEnable; } -int slsDetector::getFlippedData(dimension d) const { - return detector_shm()->flippedData[d]; -} +int slsDetector::getFlippedData(dimension d) const { return detector_shm()->flippedData[d]; } int slsDetector::setFlippedData(dimension d, int value) { int fnum = F_SET_FLIPPED_DATA_RECEIVER; @@ -2896,7 +2944,8 @@ int slsDetector::setFlippedData(dimension d, int value) { args[1] = detector_shm()->flippedData[d]; FILE_LOG(logDEBUG1) << "Setting flipped data across axis " << d << " with value: " << value; if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) { - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, args, sizeof(args), &retval, sizeof(retval)); FILE_LOG(logDEBUG1) << "Flipped data:" << retval << " ret: " << ret; } @@ -2933,7 +2982,8 @@ int slsDetector::enableGapPixels(int val) { FILE_LOG(logDEBUG1) << "Sending gap pixels enable to receiver: " << arg; if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) { - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, &arg, sizeof(arg), &retval, sizeof(retval)); FILE_LOG(logDEBUG1) << "Gap pixels enable to receiver:" << retval; detector_shm()->gappixels = retval; @@ -2995,7 +3045,8 @@ int slsDetector::pulsePixelNMove(int n, int x, int y) { int fnum = F_PULSE_PIXEL_AND_MOVE; int ret = FAIL; int args[3] = {n, x, y}; - FILE_LOG(logDEBUG1) << "Pulsing pixel " << n << " number of times and move by delta (" << x << "," << y << ")"; + FILE_LOG(logDEBUG1) << "Pulsing pixel " << n << " number of times and move by delta (" << x + << "," << y << ")"; if (detector_shm()->onlineFlag == ONLINE_FLAG) { auto client = DetectorSocket(detector_shm()->hostname, detector_shm()->controlPort); @@ -3087,8 +3138,8 @@ int slsDetector::setStoragecellStart(int pos) { } int slsDetector::programFPGA(const std::string &fname) { - //TODO! make exception safe! - //now malloced memory can leak + // TODO! make exception safe! + // now malloced memory can leak // only jungfrau implemented (client processing, so check now) if (detector_shm()->myDetectorType != JUNGFRAU && detector_shm()->myDetectorType != CHIPTESTBOARD && @@ -3099,7 +3150,7 @@ int slsDetector::programFPGA(const std::string &fname) { size_t filesize = 0; char *fpgasrc = nullptr; - //check if it exists + // check if it exists { struct stat st; if (stat(fname.c_str(), &st)) { @@ -3111,7 +3162,8 @@ int slsDetector::programFPGA(const std::string &fname) { // open src FILE *src = fopen(fname.c_str(), "rb"); if (src == nullptr) { - throw RuntimeError("Program FPGA: Could not open source file for programming: " + fname); + throw RuntimeError("Program FPGA: Could not open source file for programming: " + + fname); } // create temp destination file @@ -3119,7 +3171,9 @@ int slsDetector::programFPGA(const std::string &fname) { int dst = mkstemp(destfname); // create temporary file and open it in r/w if (dst == -1) { fclose(src); - throw RuntimeError(std::string("Could not create destination file in /tmp for programming: ") + destfname); + throw RuntimeError( + std::string("Could not create destination file in /tmp for programming: ") + + destfname); } // convert src to dst rawbin @@ -3161,7 +3215,7 @@ int slsDetector::programFPGA(const std::string &fname) { } FILE_LOG(logDEBUG1) << "File has been converted to " << destfname; - //loading dst file to memory + // loading dst file to memory FILE *fp = fopen(destfname, "r"); if (fp == nullptr) { throw RuntimeError("Program FPGA: Could not open rawbin file"); @@ -3206,24 +3260,24 @@ int slsDetector::programFPGA(const std::string &fname) { if (ret == FAIL) { client.receiveData(mess, sizeof(mess)); free(fpgasrc); - throw RuntimeError("Detector " + std::to_string(detId) + " returned error: " + std::string(mess)); + throw RuntimeError("Detector " + std::to_string(detId) + + " returned error: " + std::string(mess)); } - //erasing flash + // erasing flash if (ret != FAIL) { FILE_LOG(logINFO) << "This can take awhile. Please be patient..."; FILE_LOG(logINFO) << "Erasing Flash:"; printf("%d%%\r", 0); std::cout << std::flush; - //erasing takes 65 seconds, printing here (otherwise need threads - //in server-unnecessary) + // erasing takes 65 seconds, printing here (otherwise need threads + // in server-unnecessary) const int ERASE_TIME = 65; int count = ERASE_TIME + 1; while (count > 0) { usleep(1 * 1000 * 1000); --count; - printf("%d%%\r", - (int)(((double)(ERASE_TIME - count) / ERASE_TIME) * 100)); + printf("%d%%\r", (int)(((double)(ERASE_TIME - count) / ERASE_TIME) * 100)); std::cout << std::flush; } printf("\n"); @@ -3232,17 +3286,18 @@ int slsDetector::programFPGA(const std::string &fname) { std::cout << std::flush; } - //sending program in parts of 2mb each + // sending program in parts of 2mb each size_t unitprogramsize = 0; int currentPointer = 0; size_t totalsize = filesize; while (ret != FAIL && (filesize > 0)) { - unitprogramsize = MAX_FPGAPROGRAMSIZE; //2mb - if (unitprogramsize > filesize) { //less than 2mb + unitprogramsize = MAX_FPGAPROGRAMSIZE; // 2mb + if (unitprogramsize > filesize) { // less than 2mb unitprogramsize = filesize; } - FILE_LOG(logDEBUG1) << "unitprogramsize:" << unitprogramsize << "\t filesize:" << filesize; + FILE_LOG(logDEBUG1) << "unitprogramsize:" << unitprogramsize + << "\t filesize:" << filesize; client.sendData(fpgasrc + currentPointer, unitprogramsize); client.receiveData(&ret, sizeof(ret)); @@ -3250,9 +3305,8 @@ int slsDetector::programFPGA(const std::string &fname) { filesize -= unitprogramsize; currentPointer += unitprogramsize; - //print progress - printf("%d%%\r", - (int)(((double)(totalsize - filesize) / totalsize) * 100)); + // print progress + printf("%d%%\r", (int)(((double)(totalsize - filesize) / totalsize) * 100)); std::cout << std::flush; } else { printf("\n"); @@ -3263,11 +3317,9 @@ int slsDetector::programFPGA(const std::string &fname) { } printf("\n"); - //check ending error - if ((ret == FAIL) && - (strstr(mess, "not implemented") == nullptr) && - (strstr(mess, "locked") == nullptr) && - (strstr(mess, "-update") == nullptr)) { + // check ending error + if ((ret == FAIL) && (strstr(mess, "not implemented") == nullptr) && + (strstr(mess, "locked") == nullptr) && (strstr(mess, "-update") == nullptr)) { client.receiveData(&ret, sizeof(ret)); if (ret == FAIL) { client.receiveData(mess, sizeof(mess)); @@ -3280,11 +3332,9 @@ int slsDetector::programFPGA(const std::string &fname) { updateDetector(); } - //remapping stop server - if ((ret == FAIL) && - (strstr(mess, "not implemented") == nullptr) && - (strstr(mess, "locked") == nullptr) && - (strstr(mess, "-update") == nullptr)) { + // remapping stop server + if ((ret == FAIL) && (strstr(mess, "not implemented") == nullptr) && + (strstr(mess, "locked") == nullptr) && (strstr(mess, "-update") == nullptr)) { fnum = F_RESET_FPGA; int stopret = FAIL; auto stop = DetectorSocket(detector_shm()->hostname, detector_shm()->stopPort); @@ -3358,7 +3408,7 @@ int slsDetector::getChanRegs(double *retval) { sls_detector_module *myMod = getModule(); if (myMod != nullptr) { - //the original array has 0 initialized + // the original array has 0 initialized if (myMod->chanregs) { for (int i = 0; i < n; ++i) { retval[i] = (double)(myMod->chanregs[i] & TRIMBITMASK); @@ -3374,7 +3424,7 @@ int slsDetector::setModule(sls_detector_module module, int tb) { int ret = FAIL; int retval = -1; FILE_LOG(logDEBUG1) << "Setting module with tb:" << tb; - //to exclude trimbits + // to exclude trimbits if (!tb) { module.nchan = 0; module.nchip = 0; @@ -3464,14 +3514,12 @@ int64_t slsDetector::getRateCorrection() { } void slsDetector::printReceiverConfiguration(TLogLevel level) { - FILE_LOG(level) << "#Detector " << detId - << ":\n Receiver Hostname:\t" << getReceiverHostname() + FILE_LOG(level) << "#Detector " << detId << ":\n Receiver Hostname:\t" << getReceiverHostname() << "\nDetector UDP IP (Source):\t\t" << getDetectorIP() - << "\nDetector UDP MAC:\t\t" << getDetectorMAC() - << "\nReceiver UDP IP:\t" << getReceiverUDPIP() - << "\nReceiver UDP MAC:\t" << getReceiverUDPMAC() - << "\nReceiver UDP Port:\t" << getReceiverUDPPort() - << "\nReceiver UDP Port2:\t" << getReceiverUDPPort2(); + << "\nDetector UDP MAC:\t\t" << getDetectorMAC() << "\nReceiver UDP IP:\t" + << getReceiverUDPIP() << "\nReceiver UDP MAC:\t" << getReceiverUDPMAC() + << "\nReceiver UDP Port:\t" << getReceiverUDPPort() << "\nReceiver UDP Port2:\t" + << getReceiverUDPPort2(); } int slsDetector::setReceiverOnline(int value) { @@ -3484,31 +3532,30 @@ int slsDetector::setReceiverOnline(int value) { // set online if (value == ONLINE_FLAG) { - - // connect and set offline flag - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); + + // connect and set offline flag + auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, + detector_shm()->receiverTCPPort); receiver.close(); - detector_shm()->receiverOnlineFlag = ONLINE_FLAG; + detector_shm()->receiverOnlineFlag = ONLINE_FLAG; // check for version compatibility if (detector_shm()->receiverAPIVersion == 0) { - checkReceiverVersionCompatibility(); + checkReceiverVersionCompatibility(); } - } - + } } } return detector_shm()->receiverOnlineFlag; } -int slsDetector::getReceiverOnline() const { - return detector_shm()->receiverOnlineFlag; -} +int slsDetector::getReceiverOnline() const { return detector_shm()->receiverOnlineFlag; } std::string slsDetector::checkReceiverOnline() { std::string retval; try { - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); detector_shm()->receiverOnlineFlag = ONLINE_FLAG; } catch (...) { detector_shm()->receiverOnlineFlag = OFFLINE_FLAG; @@ -3524,7 +3571,8 @@ int slsDetector::lockReceiver(int lock) { FILE_LOG(logDEBUG1) << "Setting receiver server lock to " << lock; if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) { - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, &lock, sizeof(lock), &retval, sizeof(retval)); FILE_LOG(logDEBUG1) << "Receiver Lock: " << retval; } @@ -3541,7 +3589,8 @@ std::string slsDetector::getReceiverLastClientIP() { FILE_LOG(logDEBUG1) << "Getting last client ip to receiver server"; if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) { - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, nullptr, 0, &retval, sizeof(retval)); FILE_LOG(logDEBUG1) << "Last client IP to receiver: " << retval; } @@ -3557,8 +3606,8 @@ int slsDetector::exitReceiver() { FILE_LOG(logDEBUG1) << "Sending exit command to receiver server"; if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) { - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, - detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, nullptr, 0, nullptr, 0); // no ret handling as ret never fail FILE_LOG(logINFO) << "Shutting down the receiver server"; @@ -3575,11 +3624,10 @@ int slsDetector::execReceiverCommand(const std::string &cmd) { FILE_LOG(logDEBUG1) << "Sending command to receiver: " << arg; if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) { - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, - detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, arg, sizeof(arg), retval, sizeof(retval)); - FILE_LOG(logINFO) << "Receiver " << detId << " returned:\n" - << retval; + FILE_LOG(logINFO) << "Receiver " << detId << " returned:\n" << retval; } return ret; } @@ -3590,12 +3638,12 @@ int slsDetector::updateCachedReceiverVariables() const { FILE_LOG(logDEBUG1) << "Sending update client to receiver server"; if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) { - auto receiver = sls::ClientSocket(true, - detector_shm()->receiver_hostname, + auto receiver = sls::ClientSocket(true, detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, nullptr, 0, nullptr, 0); if (ret == FAIL) { - std::string msg = "Could not update receiver: " + std::string(detector_shm()->receiver_hostname); + std::string msg = + "Could not update receiver: " + std::string(detector_shm()->receiver_hostname); throw RuntimeError(msg); } else { int n = 0, i32 = 0; @@ -3617,7 +3665,7 @@ int slsDetector::updateCachedReceiverVariables() const { n += receiver.receiveData(&i32, sizeof(i32)); detector_shm()->receiver_fileIndex = i32; - //file format + // file format n += receiver.receiveData(&i32, sizeof(i32)); detector_shm()->receiver_fileFormatType = (fileFormat)i32; @@ -3678,9 +3726,9 @@ int slsDetector::updateCachedReceiverVariables() const { detector_shm()->receiver_silentMode = i32; if (!n) { - throw RuntimeError("Could not update receiver: " + - std::string(detector_shm()->receiver_hostname) + - ", received 0 bytes\n"); + throw RuntimeError( + "Could not update receiver: " + std::string(detector_shm()->receiver_hostname) + + ", received 0 bytes\n"); } return OK; } @@ -3693,10 +3741,13 @@ void slsDetector::sendMultiDetectorSize() { int ret = FAIL; int args[2] = {detector_shm()->multiSize[0], detector_shm()->multiSize[1]}; int retval = -1; - FILE_LOG(logDEBUG1) << "Sending multi detector size to receiver: (" << detector_shm()->multiSize[0] << "," << detector_shm()->multiSize[1] << ")"; + FILE_LOG(logDEBUG1) << "Sending multi detector size to receiver: (" + << detector_shm()->multiSize[0] << "," << detector_shm()->multiSize[1] + << ")"; if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) { - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, args, sizeof(args), &retval, sizeof(retval)); FILE_LOG(logDEBUG1) << "Receiver multi size returned: " << retval; } @@ -3713,7 +3764,8 @@ void slsDetector::setDetectorId() { FILE_LOG(logDEBUG1) << "Sending detector pos id to receiver: " << detId; if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) { - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, &arg, sizeof(arg), &retval, sizeof(retval)); FILE_LOG(logDEBUG1) << "Receiver Position Id returned: " << retval; } @@ -3731,7 +3783,8 @@ void slsDetector::setDetectorHostname() { FILE_LOG(logDEBUG1) << "Sending detector hostname to receiver: " << args; if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) { - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, args, sizeof(args), retvals, sizeof(retvals)); FILE_LOG(logDEBUG1) << "Receiver set detector hostname: " << retvals; } @@ -3740,9 +3793,7 @@ void slsDetector::setDetectorHostname() { } } -std::string slsDetector::getFilePath() { - return detector_shm()->receiver_filePath; -} +std::string slsDetector::getFilePath() { return detector_shm()->receiver_filePath; } std::string slsDetector::setFilePath(const std::string &path) { if (!path.empty()) { @@ -3754,7 +3805,8 @@ std::string slsDetector::setFilePath(const std::string &path) { FILE_LOG(logDEBUG1) << "Sending file path to receiver: " << args; if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) { - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, args, sizeof(args), retvals, sizeof(retvals)); FILE_LOG(logDEBUG1) << "Receiver file path: " << retvals; sls::strcpy_safe(detector_shm()->receiver_filePath, retvals); @@ -3766,9 +3818,7 @@ std::string slsDetector::setFilePath(const std::string &path) { return detector_shm()->receiver_filePath; } -std::string slsDetector::getFileName() { - return detector_shm()->receiver_fileName; -} +std::string slsDetector::getFileName() { return detector_shm()->receiver_fileName; } std::string slsDetector::setFileName(const std::string &fname) { if (!fname.empty()) { @@ -3780,7 +3830,8 @@ std::string slsDetector::setFileName(const std::string &fname) { FILE_LOG(logDEBUG1) << "Sending file name to receiver: " << args; if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) { - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, args, sizeof(args), retvals, sizeof(retvals)); FILE_LOG(logDEBUG1) << "Receiver file name: " << retvals; sls::strcpy_safe(detector_shm()->receiver_fileName, retvals); @@ -3801,7 +3852,8 @@ int slsDetector::setReceiverFramesPerFile(int f) { FILE_LOG(logDEBUG1) << "Setting receiver frames per file to " << arg; if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) { - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, &arg, sizeof(arg), &retval, sizeof(retval)); FILE_LOG(logDEBUG1) << "Receiver frames per file: " << retval; detector_shm()->receiver_framesPerFile = retval; @@ -3813,14 +3865,16 @@ int slsDetector::setReceiverFramesPerFile(int f) { return detector_shm()->receiver_framesPerFile; } -slsDetectorDefs::frameDiscardPolicy slsDetector::setReceiverFramesDiscardPolicy(frameDiscardPolicy f) { +slsDetectorDefs::frameDiscardPolicy +slsDetector::setReceiverFramesDiscardPolicy(frameDiscardPolicy f) { int fnum = F_RECEIVER_DISCARD_POLICY; int ret = FAIL; int arg = static_cast(f); - auto retval = static_cast(-1); + auto retval = static_cast(-1); FILE_LOG(logDEBUG1) << "Setting receiver frames discard policy to " << arg; if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) { - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, &arg, sizeof(arg), &retval, sizeof(retval)); FILE_LOG(logDEBUG1) << "Receiver frames discard policy: " << retval; detector_shm()->receiver_frameDiscardMode = retval; @@ -3838,7 +3892,8 @@ int slsDetector::setReceiverPartialFramesPadding(int f) { int retval = -1; FILE_LOG(logDEBUG1) << "Setting receiver partial frames enable to " << arg; if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) { - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, &arg, sizeof(arg), &retval, sizeof(retval)); FILE_LOG(logDEBUG1) << "Receiver partial frames enable: " << retval; detector_shm()->receiver_framePadding = retval; @@ -3858,7 +3913,8 @@ slsDetectorDefs::fileFormat slsDetector::setFileFormat(fileFormat f) { FILE_LOG(logDEBUG1) << "Setting receiver file format to " << arg; if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) { - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, &arg, sizeof(arg), &retval, sizeof(retval)); FILE_LOG(logDEBUG1) << "Receiver file format: " << retval; detector_shm()->receiver_fileFormatType = retval; @@ -3874,9 +3930,7 @@ slsDetectorDefs::fileFormat slsDetector::getFileFormat() { return detector_shm()->receiver_fileFormatType; } -int slsDetector::getFileIndex() { - return detector_shm()->receiver_fileIndex; -} +int slsDetector::getFileIndex() { return detector_shm()->receiver_fileIndex; } int slsDetector::setFileIndex(int i) { if (i >= 0) { @@ -3886,7 +3940,8 @@ int slsDetector::setFileIndex(int i) { int retval = -1; FILE_LOG(logDEBUG1) << "Setting file index to " << arg; if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) { - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, &arg, sizeof(arg), &retval, sizeof(retval)); FILE_LOG(logDEBUG1) << "Receiver file index: " << retval; detector_shm()->receiver_fileIndex = retval; @@ -3911,7 +3966,8 @@ int slsDetector::startReceiver() { // char mess[MAX_STR_LENGTH]{}; FILE_LOG(logDEBUG1) << "Starting Receiver"; if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) { - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, nullptr, 0, nullptr, 0); } if (ret == FORCE_UPDATE) { @@ -3925,7 +3981,8 @@ int slsDetector::stopReceiver() { int ret = FAIL; FILE_LOG(logDEBUG1) << "Stopping Receiver"; if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) { - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, nullptr, 0, nullptr, 0); } if (ret == FORCE_UPDATE) { @@ -3941,12 +3998,13 @@ slsDetectorDefs::runStatus slsDetector::getReceiverStatus() { FILE_LOG(logDEBUG1) << "Getting Receiver Status"; if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) { - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, nullptr, 0, &retval, sizeof(retval)); FILE_LOG(logDEBUG1) << "Receiver Status: " << runStatusType(retval); } if (ret == FORCE_UPDATE) { - updateCachedReceiverVariables(); //Do we need to handle this ret? + updateCachedReceiverVariables(); // Do we need to handle this ret? } return retval; } @@ -3958,7 +4016,8 @@ int slsDetector::getFramesCaughtByReceiver() { FILE_LOG(logDEBUG1) << "Getting Frames Caught by Receiver"; if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) { - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, nullptr, 0, &retval, sizeof(retval)); FILE_LOG(logDEBUG1) << "Frames Caught by Receiver: " << retval; } @@ -3974,7 +4033,8 @@ int slsDetector::getReceiverCurrentFrameIndex() { int retval = -1; FILE_LOG(logDEBUG1) << "Getting Current Frame Index of Receiver"; if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) { - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, nullptr, 0, &retval, sizeof(retval)); FILE_LOG(logDEBUG1) << "Current Frame Index of Receiver: " << retval; } @@ -3990,7 +4050,8 @@ int slsDetector::resetFramesCaught() { FILE_LOG(logDEBUG1) << "Reset Frames Caught by Receiver"; if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) { - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, nullptr, 0, nullptr, 0); } if (ret == FORCE_UPDATE) { @@ -4007,7 +4068,8 @@ int slsDetector::enableWriteToFile(int enable) { int retval = -1; FILE_LOG(logDEBUG1) << "Sending enable file write to receiver: " << arg; if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) { - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, &arg, sizeof(arg), &retval, sizeof(retval)); FILE_LOG(logDEBUG1) << "Receiver file write enable: " << retval; detector_shm()->receiver_fileWriteEnable = retval; @@ -4028,7 +4090,8 @@ int slsDetector::overwriteFile(int enable) { FILE_LOG(logDEBUG1) << "Sending enable file overwrite to receiver: " << arg; if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) { - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, &arg, sizeof(arg), &retval, sizeof(retval)); FILE_LOG(logDEBUG1) << "Receiver file overwrite enable: " << retval; detector_shm()->receiver_overWriteEnable = retval; @@ -4049,7 +4112,8 @@ int slsDetector::setReceiverStreamingFrequency(int freq) { FILE_LOG(logDEBUG1) << "Sending read frequency to receiver: " << arg; if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) { - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, &arg, sizeof(arg), &retval, sizeof(retval)); FILE_LOG(logDEBUG1) << "Receiver read frequency: " << retval; detector_shm()->receiver_read_freq = retval; @@ -4069,7 +4133,8 @@ int slsDetector::setReceiverStreamingTimer(int time_in_ms) { FILE_LOG(logDEBUG1) << "Sending read timer to receiver: " << arg; if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) { - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, &arg, sizeof(arg), &retval, sizeof(retval)); FILE_LOG(logDEBUG1) << "Receiver read timer: " << retval; } @@ -4088,7 +4153,8 @@ int slsDetector::enableDataStreamingFromReceiver(int enable) { FILE_LOG(logDEBUG1) << "Sending Data Streaming to receiver: " << arg; if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) { - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, &arg, sizeof(arg), &retval, sizeof(retval)); FILE_LOG(logDEBUG1) << "Receiver Data Streaming: " << retval; detector_shm()->receiver_upstream = retval; @@ -4126,8 +4192,8 @@ int slsDetector::enableTenGigabitEthernet(int i) { arg = detector_shm()->tenGigaEnable; retval = -1; FILE_LOG(logDEBUG1) << "Sending 10Gbe enable to receiver: " << arg; - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, - detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, &arg, sizeof(arg), &retval, sizeof(retval)); FILE_LOG(logDEBUG1) << "Receiver 10Gbe enable: " << retval; if (ret == FORCE_UPDATE) { @@ -4146,7 +4212,8 @@ int slsDetector::setReceiverFifoDepth(int i) { FILE_LOG(logDEBUG1) << "Sending Receiver Fifo Depth: " << arg; if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) { - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, &arg, sizeof(arg), &retval, sizeof(retval)); FILE_LOG(logDEBUG1) << "Receiver Fifo Depth: " << retval; } @@ -4164,8 +4231,8 @@ int slsDetector::setReceiverSilentMode(int i) { FILE_LOG(logDEBUG1) << "Sending Receiver Silent Mode: " << arg; if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) { - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, - detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, &arg, sizeof(arg), &retval, sizeof(retval)); FILE_LOG(logDEBUG1) << "Receiver Data Streaming: " << retval; detector_shm()->receiver_silentMode = retval; @@ -4181,8 +4248,8 @@ int slsDetector::restreamStopFromReceiver() { int ret = FAIL; FILE_LOG(logDEBUG1) << "Restream stop dummy from Receiver via zmq"; if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) { - auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, - detector_shm()->receiverTCPPort); + auto receiver = + ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, nullptr, 0, nullptr, 0); } if (ret == FORCE_UPDATE) { @@ -4197,7 +4264,7 @@ int slsDetector::setPattern(const std::string &fname) { FILE *fd = fopen(fname.c_str(), "r"); if (fd != nullptr) { while (fread(&word, sizeof(word), 1, fd)) { - setPatternWord(addr, word); //TODO! (Erik) do we need to send pattern in 64bit chunks? + setPatternWord(addr, word); // TODO! (Erik) do we need to send pattern in 64bit chunks? ++addr; } fclose(fd); @@ -4213,8 +4280,8 @@ uint64_t slsDetector::setPatternWord(int addr, uint64_t word) { int mode = 0; // sets word uint64_t args[3] = {(uint64_t)mode, (uint64_t)addr, word}; uint64_t retval = -1; - FILE_LOG(logDEBUG1) << "Setting Pattern word, addr: 0x" << std::hex << addr - << ", word: 0x" << word << std::dec; + FILE_LOG(logDEBUG1) << "Setting Pattern word, addr: 0x" << std::hex << addr << ", word: 0x" + << word << std::dec; if (detector_shm()->onlineFlag == ONLINE_FLAG) { auto client = DetectorSocket(detector_shm()->hostname, detector_shm()->controlPort); ret = client.sendCommandThenRead(fnum, args, sizeof(args), &retval, sizeof(retval)); @@ -4230,15 +4297,17 @@ int slsDetector::setPatternLoops(int level, int &start, int &stop, int &n) { int fnum = F_SET_PATTERN; int ret = FAIL; int mode = 1; // sets loop - uint64_t args[5] = {(uint64_t)mode, (uint64_t)level, (uint64_t)start, (uint64_t)stop, (uint64_t)n}; + uint64_t args[5] = {(uint64_t)mode, (uint64_t)level, (uint64_t)start, (uint64_t)stop, + (uint64_t)n}; int retvals[3] = {0, 0, 0}; - FILE_LOG(logDEBUG1) << "Setting Pat Loops, level: " << level << ", start: " - << start << ", stop: " << stop << ", n: " << n; + FILE_LOG(logDEBUG1) << "Setting Pat Loops, level: " << level << ", start: " << start + << ", stop: " << stop << ", n: " << n; if (detector_shm()->onlineFlag == ONLINE_FLAG) { auto client = DetectorSocket(detector_shm()->hostname, detector_shm()->controlPort); ret = client.sendCommandThenRead(fnum, args, sizeof(args), retvals, sizeof(retvals)); - FILE_LOG(logDEBUG1) << "Set Pat Loops: " << retvals[0] << ", " << retvals[1] << ", " << retvals[2]; + FILE_LOG(logDEBUG1) << "Set Pat Loops: " << retvals[0] << ", " << retvals[1] << ", " + << retvals[2]; start = retvals[0]; stop = retvals[1]; n = retvals[2]; @@ -4274,7 +4343,7 @@ uint64_t slsDetector::setPatternWaitTime(uint64_t level, uint64_t t) { int fnum = F_SET_PATTERN; int ret = FAIL; uint64_t mode = 3; // sets loop - uint64_t retval = -1; //TODO! is this what we want? + uint64_t retval = -1; // TODO! is this what we want? std::array args{mode, level, t}; FILE_LOG(logDEBUG1) << "Setting Pat Wait Time, level: " << level << ", t: " << t; if (detector_shm()->onlineFlag == ONLINE_FLAG) { @@ -4387,37 +4456,41 @@ int slsDetector::setDigitalIODelay(uint64_t pinMask, int delay) { return ret; } -slsDetectorDefs::sls_detector_module *slsDetector::interpolateTrim( - sls_detector_module *a, sls_detector_module *b, - const int energy, const int e1, const int e2, int tb) { +slsDetectorDefs::sls_detector_module *slsDetector::interpolateTrim(sls_detector_module *a, + sls_detector_module *b, + const int energy, const int e1, + const int e2, int tb) { // only implemented for eiger currently (in terms of which dacs) if (detector_shm()->myDetectorType != EIGER) { - throw NotImplementedError("Interpolation of Trim values not implemented for this detector!"); + throw NotImplementedError( + "Interpolation of Trim values not implemented for this detector!"); } sls_detector_module *myMod = createModule(detector_shm()->myDetectorType); if (myMod == nullptr) { throw RuntimeError("Could not create module"); } - enum eiger_DacIndex { SVP, - VTR, - VRF, - VRS, - SVN, - VTGSTV, - VCMP_LL, - VCMP_LR, - CAL, - VCMP_RL, - RXB_RB, - RXB_LB, - VCMP_RR, - VCP, - VCN, - VIS }; + enum eiger_DacIndex { + SVP, + VTR, + VRF, + VRS, + SVN, + VTGSTV, + VCMP_LL, + VCMP_LR, + CAL, + VCMP_RL, + RXB_RB, + RXB_LB, + VCMP_RR, + VCP, + VCN, + VIS + }; - //Copy other dacs + // Copy other dacs int dacs_to_copy[] = {SVP, VTR, SVN, VTGSTV, RXB_RB, RXB_LB, VCN, VIS}; int num_dacs_to_copy = sizeof(dacs_to_copy) / sizeof(dacs_to_copy[0]); for (int i = 0; i < num_dacs_to_copy; ++i) { @@ -4428,38 +4501,40 @@ slsDetectorDefs::sls_detector_module *slsDetector::interpolateTrim( myMod->dacs[dacs_to_copy[i]] = a->dacs[dacs_to_copy[i]]; } - //Copy irrelevant dacs (without failing): CAL + // Copy irrelevant dacs (without failing): CAL if (a->dacs[CAL] != b->dacs[CAL]) { FILE_LOG(logWARNING) << "DAC CAL differs in both energies " "(" - << a->dacs[CAL] << "," << b->dacs[CAL] << ")!\n" - "Taking first: " + << a->dacs[CAL] << "," << b->dacs[CAL] + << ")!\n" + "Taking first: " << a->dacs[CAL]; } myMod->dacs[CAL] = a->dacs[CAL]; - //Interpolate vrf, vcmp, vcp + // Interpolate vrf, vcmp, vcp int dacs_to_interpolate[] = {VRF, VCMP_LL, VCMP_LR, VCMP_RL, VCMP_RR, VCP, VRS}; int num_dacs_to_interpolate = sizeof(dacs_to_interpolate) / sizeof(dacs_to_interpolate[0]); for (int i = 0; i < num_dacs_to_interpolate; ++i) { - myMod->dacs[dacs_to_interpolate[i]] = linearInterpolation(energy, e1, e2, - a->dacs[dacs_to_interpolate[i]], b->dacs[dacs_to_interpolate[i]]); + myMod->dacs[dacs_to_interpolate[i]] = linearInterpolation( + energy, e1, e2, a->dacs[dacs_to_interpolate[i]], b->dacs[dacs_to_interpolate[i]]); } - //Interpolate all trimbits + // Interpolate all trimbits if (tb) { for (int i = 0; i < myMod->nchan; ++i) { - myMod->chanregs[i] = linearInterpolation(energy, e1, e2, a->chanregs[i], b->chanregs[i]); + myMod->chanregs[i] = + linearInterpolation(energy, e1, e2, a->chanregs[i], b->chanregs[i]); } } return myMod; } -slsDetectorDefs::sls_detector_module *slsDetector::readSettingsFile(const std::string &fname, - sls_detector_module *myMod, int tb) { +slsDetectorDefs::sls_detector_module * +slsDetector::readSettingsFile(const std::string &fname, sls_detector_module *myMod, int tb) { FILE_LOG(logDEBUG1) << "Read settings file " << fname; - bool modCreated = false; //If we create a module it must be deleted, TODO! usre RAII + bool modCreated = false; // If we create a module it must be deleted, TODO! usre RAII if (myMod == nullptr) { myMod = createModule(detector_shm()->myDetectorType); if (myMod == nullptr) { @@ -4540,7 +4615,8 @@ slsDetectorDefs::sls_detector_module *slsDetector::readSettingsFile(const std::s deleteModule(myMod); } infile.close(); - throw RuntimeError("readSettingsFile: Could not load all values for settings for " + fname); + throw RuntimeError("readSettingsFile: Could not load all values for settings for " + + fname); } for (int i = 0; i < myMod->ndac; ++i) { FILE_LOG(logDEBUG1) << "dac " << i << ":" << myMod->dacs[i]; @@ -4586,7 +4662,8 @@ slsDetectorDefs::sls_detector_module *slsDetector::readSettingsFile(const std::s deleteModule(myMod); } infile.close(); - throw RuntimeError("Could read only " + std::to_string(idac) + " dacs. Expected " + std::to_string(names.size()) + " dacs"); + throw RuntimeError("Could read only " + std::to_string(idac) + " dacs. Expected " + + std::to_string(names.size()) + " dacs"); } } diff --git a/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp b/slsDetectorSoftware/src/slsDetectorCommand.cpp similarity index 100% rename from slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp rename to slsDetectorSoftware/src/slsDetectorCommand.cpp diff --git a/slsDetectorSoftware/slsDetector/slsDetectorUsers.cpp b/slsDetectorSoftware/src/slsDetectorUsers.cpp similarity index 100% rename from slsDetectorSoftware/slsDetector/slsDetectorUsers.cpp rename to slsDetectorSoftware/src/slsDetectorUsers.cpp diff --git a/slsDetectorSoftware/slsDetectorClient/sls_detector_client.cpp b/slsDetectorSoftware/src/sls_detector_client.cpp similarity index 100% rename from slsDetectorSoftware/slsDetectorClient/sls_detector_client.cpp rename to slsDetectorSoftware/src/sls_detector_client.cpp