fixed segfault on loading trimbits

This commit is contained in:
Erik Frojdh 2019-03-18 18:10:50 +01:00
parent 43012e4f28
commit 38bf540c1a
3 changed files with 14 additions and 9 deletions

View File

@ -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

View File

@ -176,7 +176,7 @@ int64_t multiSlsDetector::getId(idMode mode, int detPos) {
return sls::minusOneIfDifferent(r);
}
std::vector<int64_t> multiSlsDetector::getDetectorNumber(){
std::vector<int64_t> 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();
}

View File

@ -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);