From 38bf540c1a6e7c1f37f0ad5c6598a4cb3184e314 Mon Sep 17 00:00:00 2001 From: Erik Frojdh Date: Mon, 18 Mar 2019 18:10:50 +0100 Subject: [PATCH] fixed segfault on loading trimbits --- .../simple-integration-tests/eiger/config_test.py | 2 +- .../multiSlsDetector/multiSlsDetector.cpp | 13 +++++++------ slsDetectorSoftware/slsDetector/slsDetector.cpp | 8 ++++++-- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/python/simple-integration-tests/eiger/config_test.py b/python/simple-integration-tests/eiger/config_test.py index bd19367de..690adbd06 100644 --- a/python/simple-integration-tests/eiger/config_test.py +++ b/python/simple-integration-tests/eiger/config_test.py @@ -6,7 +6,7 @@ Created on Tue Nov 14 16:49:07 2017 @author: l_frojdh """ -fw_version = 22 +fw_version = 23 detector_type = 'Eiger' known_hostnames = ['beb083', 'beb098'] image_size = (512,1024) #rows, cols diff --git a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp index f2230d98a..8a6a4e9db 100644 --- a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp +++ b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp @@ -176,7 +176,7 @@ int64_t multiSlsDetector::getId(idMode mode, int detPos) { return sls::minusOneIfDifferent(r); } -std::vector multiSlsDetector::getDetectorNumber(){ +std::vector multiSlsDetector::getDetectorNumber() { return parallelCall(&slsDetector::getId, slsDetectorDefs::DETECTOR_SERIAL_NUMBER); } @@ -849,7 +849,7 @@ multiSlsDetector::setSettings(detectorSettings isettings, int detPos) { return (detectorSettings)sls::minusOneIfDifferent(r); } -int multiSlsDetector::getThresholdEnergy(int detPos) { +int multiSlsDetector::getThresholdEnergy(int detPos){ // single if (detPos >= 0) { return detectors[detPos]->getThresholdEnergy(); @@ -863,16 +863,17 @@ 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); } // multi - auto r = - parallelCall(&slsDetector::setThresholdEnergy, e_eV, isettings, tb); + auto r = parallelCall(&slsDetector::setThresholdEnergy, e_eV, isettings, tb); if (sls::allEqualWithTol(r, 200)) { return r.front(); } diff --git a/slsDetectorSoftware/slsDetector/slsDetector.cpp b/slsDetectorSoftware/slsDetector/slsDetector.cpp index d2685c487..5b0dd2552 100644 --- a/slsDetectorSoftware/slsDetector/slsDetector.cpp +++ b/slsDetectorSoftware/slsDetector/slsDetector.cpp @@ -1339,7 +1339,7 @@ int slsDetector::setThresholdEnergyAndSettings(int e_eV, detectorSettings isetti FILE_LOG(logDEBUG1) << "Settings File is " << settingsfname; //read the files - myMod = createModule(); // readSettings also checks if create module is null + // myMod = createModule(); // readSettings also checks if create module is null if (nullptr == readSettingsFile(settingsfname, myMod, tb)) { if (myMod) { deleteModule(myMod); @@ -1392,7 +1392,10 @@ int slsDetector::setThresholdEnergyAndSettings(int e_eV, detectorSettings isetti deleteModule(myMod2); return FAIL; } - myMod->iodelay = myMod1->iodelay; + // myMod = createModule(); + // myMod->iodelay = myMod1->iodelay; + + //interpolate module myMod = interpolateTrim(myMod1, myMod2, e_eV, trim1, trim2, tb); @@ -1404,6 +1407,7 @@ int slsDetector::setThresholdEnergyAndSettings(int e_eV, detectorSettings isetti return FAIL; } //interpolate tau + myMod->iodelay = myMod1->iodelay; myMod->tau = linearInterpolation(e_eV, trim1, trim2, myMod1->tau, myMod2->tau); //printf("new tau:%d\n",tau);