From 79c6f5310bee5929cc75787c1d595680acfc0f9a Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Fri, 12 Apr 2019 19:20:20 +0200 Subject: [PATCH] eiger server and client: cleaning up setting of dynamic range for eiger, where multi client takes care of checking rate correction in a separate call, tests included --- .gitignore | 1 + integrationTests/config.h | 4 +- .../test-integrationDectector.cpp | 56 +++++++++++++++++- ...refactor => eigerDetectorServer_developer} | Bin 288760 -> 285048 bytes .../slsDetectorServer_funcs.c | 27 --------- slsDetectorSoftware/include/slsDetector.h | 16 ++++- slsDetectorSoftware/src/multiSlsDetector.cpp | 54 ++++++++++------- slsDetectorSoftware/src/slsDetector.cpp | 23 ++++++- slsSupportLib/include/versionAPI.h | 4 +- 9 files changed, 127 insertions(+), 58 deletions(-) rename slsDetectorServers/eigerDetectorServer/bin/{eigerDetectorServer_refactor => eigerDetectorServer_developer} (56%) diff --git a/.gitignore b/.gitignore index fb8df8cb6..efbd9ce60 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,7 @@ bin/ build docs/ RELEASE.txt +Testing/ *.pyc diff --git a/integrationTests/config.h b/integrationTests/config.h index 37ebd8189..32fd25ea9 100644 --- a/integrationTests/config.h +++ b/integrationTests/config.h @@ -3,7 +3,7 @@ struct SingleDetectorConfig { slsDetectorDefs::detectorType type_enum = slsDetectorDefs::detectorType::EIGER; - const std::string hostname = "beb083"; + const std::string hostname = "beb031+beb032+"; const std::string type_string = "Eiger"; - const std::string my_ip = "129.129.205.242"; + const std::string my_ip = "129.129.205.171"; }; diff --git a/integrationTests/test-integrationDectector.cpp b/integrationTests/test-integrationDectector.cpp index 27c1f29e2..0e138f384 100755 --- a/integrationTests/test-integrationDectector.cpp +++ b/integrationTests/test-integrationDectector.cpp @@ -3,6 +3,7 @@ #include "ClientSocket.h" #include "logger.h" +#include "multiSlsDetector.h" #include "slsDetector.h" #include "sls_detector_defs.h" @@ -221,4 +222,57 @@ TEST_CASE("Excersise all possible set timer functions", "[.integration]") { // CHECK(rperiod == 0.1); // d.freeSharedMemory(); -// } \ No newline at end of file +// } + +TEST_CASE("Eiger Dynamic Range with effect on rate correction and clock divider", "[.integration]") { + SingleDetectorConfig c; + + int ratecorr = 125; + + // pick up multi detector from shm id 0 + multiSlsDetector m(0); + + // ensure eiger detector type, hostname and online + REQUIRE(m.getDetectorTypeAsEnum()==c.type_enum); + REQUIRE(m.getHostname()==c.hostname); + REQUIRE(m.setOnline(true)==slsDetectorDefs::ONLINE_FLAG); + + // starting state with rate correction off + CHECK(m.setRateCorrection(0) == 0); + + // dr 16: clk divider, no change for ratecorr + CHECK(m.setDynamicRange(16) == 16); + CHECK(m.setSpeed(slsDetectorDefs::CLOCK_DIVIDER) == 1); + CHECK(m.getRateCorrection() == 0); + + // dr 32: clk divider, no change for ratecorr + CHECK(m.setDynamicRange(32) == 32); + CHECK(m.setSpeed(slsDetectorDefs::CLOCK_DIVIDER) == 2); + CHECK(m.getRateCorrection() == 0); + + // other drs: no change for clk divider, no change for ratecorr + CHECK(m.setDynamicRange(8) == 8); + CHECK(m.setSpeed(slsDetectorDefs::CLOCK_DIVIDER) == 2); + CHECK(m.getRateCorrection() == 0); + CHECK(m.setDynamicRange(4) == 4); + CHECK(m.setSpeed(slsDetectorDefs::CLOCK_DIVIDER) == 2); + CHECK(m.getRateCorrection() == 0); + + // switching on rate correction with dr 16, 32 + m.setDynamicRange(16); + m.setRateCorrection(ratecorr); + CHECK(m.getRateCorrection() == ratecorr); + m.setDynamicRange(32); + CHECK(m.getRateCorrection() == ratecorr); + + // ratecorr fail with dr 4 or 8 + CHECK_THROWS_AS(m.setDynamicRange(8), sls::NonCriticalError); + CHECK(m.getRateCorrection()==0); + m.setDynamicRange(16); + m.setDynamicRange(16); + m.setRateCorrection(ratecorr); + m.setDynamicRange(16); + m.setRateCorrection(ratecorr); + CHECK_THROWS_AS(m.setDynamicRange(4), sls::NonCriticalError); + CHECK(m.getRateCorrection()==0); +} diff --git a/slsDetectorServers/eigerDetectorServer/bin/eigerDetectorServer_refactor b/slsDetectorServers/eigerDetectorServer/bin/eigerDetectorServer_developer similarity index 56% rename from slsDetectorServers/eigerDetectorServer/bin/eigerDetectorServer_refactor rename to slsDetectorServers/eigerDetectorServer/bin/eigerDetectorServer_developer index bba1d168cd28373a187fa6cd2dc5f37f378c32ac..9e81bfd77c0f098eaf58b4d48f5df53e227948e8 100755 GIT binary patch delta 61839 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 set dead time to t, if < 0 set deadtime to default dead time * for current settings @@ -1348,11 +1351,18 @@ class slsDetector : public virtual slsDetectorDefs{ int setRateCorrection(int64_t t = 0); /** - * Get rate correction Eiger) + * Get rate correction (Eiger) * @returns 0 if rate correction disabled, > 0 otherwise */ int64_t getRateCorrection(); + /** + * Update rate correction according to dynamic range (Eiger) + * If rate correction enabled and dr is 8 or 16, it will throw + * Otherwise update ratecorrection if enabled + */ + void updateRateCorrection(); + /** * Prints receiver configuration * @param level print level diff --git a/slsDetectorSoftware/src/multiSlsDetector.cpp b/slsDetectorSoftware/src/multiSlsDetector.cpp index 277ab1c0d..6eb43c94a 100755 --- a/slsDetectorSoftware/src/multiSlsDetector.cpp +++ b/slsDetectorSoftware/src/multiSlsDetector.cpp @@ -1264,36 +1264,46 @@ int multiSlsDetector::setDynamicRange(int dr, int detPos) { int prevGValue = multi_shm()->dataBytesInclGapPixels; multi_shm()->dataBytes = 0; multi_shm()->dataBytesInclGapPixels = 0; - multi_shm()->numberOfChannels = 0; for (auto &d : detectors) { multi_shm()->dataBytes += d->getDataBytes(); multi_shm()->dataBytesInclGapPixels += d->getDataBytesInclGapPixels(); - multi_shm()->numberOfChannels += d->getTotalNumberOfChannels(); } - // for usability - if (getDetectorTypeAsEnum() == EIGER) { - switch (dr) { - case 32: - FILE_LOG(logINFO) << "Setting Clock to Quarter Speed to cope with " - "Dynamic Range of 32"; - setSpeed(CLOCK_DIVIDER, 2); - break; - case 16: - FILE_LOG(logINFO) << "Setting Clock to Half Speed for Dynamic Range of 16"; - setSpeed(CLOCK_DIVIDER, 1); - break; - default: - break; + // if there was a change FIXME:add dr to sls shm and check that instead + if ((prevValue != multi_shm()->dataBytes) || + (prevGValue != multi_shm()->dataBytesInclGapPixels)) { + + updateOffsets(); + + // update speed, check ratecorrection + if (getDetectorTypeAsEnum() == EIGER) { + + // rate correction before speed for consistency + // (else exception at speed makes ratecorr inconsistent) + parallelCall(&slsDetector::updateRateCorrection); + + // speed(usability) + switch (dr) { + case 32: + FILE_LOG(logINFO) + << "Setting Clock to Quarter Speed to cope with " + "Dynamic Range of 32"; + setSpeed(CLOCK_DIVIDER, 2); + break; + case 16: + FILE_LOG(logINFO) + << "Setting Clock to Half Speed for Dynamic Range of 16"; + setSpeed(CLOCK_DIVIDER, 1); + break; + default: + break; + } } } - // update offsets if there was a change FIXME:add dr to sls shm and check - // that instead - if ((prevValue != multi_shm()->dataBytes) || - (prevGValue != multi_shm()->dataBytesInclGapPixels)) { - updateOffsets(); - } + + + return ret; } diff --git a/slsDetectorSoftware/src/slsDetector.cpp b/slsDetectorSoftware/src/slsDetector.cpp index 76ac1d4f2..10ee78da7 100755 --- a/slsDetectorSoftware/src/slsDetector.cpp +++ b/slsDetectorSoftware/src/slsDetector.cpp @@ -322,6 +322,7 @@ void slsDetector::initializeDetectorStructure(detectorType type) { detector_shm()->timerValue[SUBFRAME_ACQUISITION_TIME] = 0; detector_shm()->timerValue[STORAGE_CELL_NUMBER] = 0; detector_shm()->timerValue[SUBFRAME_DEADTIME] = 0; + detector_shm()->deadTime = 0; sls::strcpy_safe(detector_shm()->receiver_hostname, "none"); detector_shm()->receiverTCPPort = DEFAULT_PORTNO + 2; detector_shm()->receiverUDPPort = DEFAULT_UDP_PORTNO; @@ -1951,7 +1952,7 @@ int slsDetector::setDynamicRange(int n) { client.close(); ret = updateDetector(); } - } + } // only for eiger // setting dr consequences on databytes shm @@ -3810,6 +3811,7 @@ int slsDetector::setRateCorrection(int64_t t) { auto client = DetectorSocket(detector_shm()->hostname, detector_shm()->controlPort); ret = client.sendCommandThenRead(fnum, &arg, sizeof(arg), nullptr, 0); + detector_shm()->deadTime = t; } if (ret == FORCE_UPDATE) { ret = updateDetector(); @@ -3828,6 +3830,7 @@ int64_t slsDetector::getRateCorrection() { detector_shm()->controlPort); ret = client.sendCommandThenRead(fnum, nullptr, 0, &retval, sizeof(retval)); + detector_shm()->deadTime = retval; FILE_LOG(logDEBUG1) << "Rate correction: " << retval; } if (ret == FORCE_UPDATE) { @@ -3836,6 +3839,24 @@ int64_t slsDetector::getRateCorrection() { return retval; } +void slsDetector::updateRateCorrection() { + // rate correction is enabled + if (detector_shm()->deadTime != 0) { + switch (detector_shm()->dynamicRange) { + // rate correction is allowed + case 16: + case 32: + setRateCorrection(detector_shm()->deadTime); + break; + // not allowed + default: + setRateCorrection(0); + throw sls::NonCriticalError( + "Rate correction Deactivated, must be in 32 or 16 bit mode"); + } + } +} + void slsDetector::printReceiverConfiguration(TLogLevel level) { FILE_LOG(level) << "#Detector " << detId << ":\n Receiver Hostname:\t" << getReceiverHostname() diff --git a/slsSupportLib/include/versionAPI.h b/slsSupportLib/include/versionAPI.h index f21f00794..b9644b57a 100644 --- a/slsSupportLib/include/versionAPI.h +++ b/slsSupportLib/include/versionAPI.h @@ -2,9 +2,9 @@ #define GITBRANCH "refgui" #define APIGOTTHARD 0x190108 #define APIMOENCH 0x181108 -#define APIEIGER 0x190405 #define APIJUNGFRAU 0x190405 #define APILIB 0x190405 #define APIRECEIVER 0x190405 #define APIGUI 0x190405 -#define APICTB 0x190405 +#define APICTB 0x190412 +#define APIEIGER 0x190412