diff --git a/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServer_developer b/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServer_developer index b98c54446..3bc7e6f27 100755 Binary files a/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServer_developer and b/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServer_developer differ diff --git a/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c b/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c index 5475acbde..7e69314f4 100644 --- a/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c +++ b/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c @@ -548,22 +548,26 @@ int setModule(sls_detector_module myMod, int delay){ printf("Setting module with settings %d\n",myMod.reg); //#endif + //copy module locally (module number, serial number, gain offset, + //dacs (pointless), trimbit values(if needed) + if (detectorModules) + if (copyModule(detectorModules,&myMod) == FAIL) + return FAIL; + + // settings setSettings( (enum detectorSettings)myMod.reg,-1); + // iodelay if(setIODelay(delay, -1)!= delay){ cprintf(RED,"could not set iodelay %d\n",delay); return FAIL; } - //copy module locally - if (detectorModules) - copyModule(detectorModules,&myMod); - - //set dac values + // dacs for(i=0;idacs)+i)); + } //trimbits unsigned int* tt; @@ -620,9 +626,11 @@ int getModule(sls_detector_module *myMod){ } } - //copy to local copy as well - if (detectorModules) - copyModule(detectorModules,myMod); + //copy local module to myMod + if (detectorModules) { + if (copyModule(myMod, detectorModules) == FAIL) + return FAIL; + } else return FAIL; return OK; @@ -1309,8 +1317,9 @@ int copyModule(sls_detector_module *destMod, sls_detector_module *srcMod){ else printf("Not Copying trimbits\n"); #endif for (idac=0; idac<(srcMod->ndac); idac++) { - if (*((srcMod->dacs)+idac)>=0) + if (*((srcMod->dacs)+idac)>=0) { *((destMod->dacs)+idac)=*((srcMod->dacs)+idac); + } } for (iadc=0; iadc<(srcMod->nadc); iadc++) { if (*((srcMod->adcs)+iadc)>=0) diff --git a/slsDetectorSoftware/slsDetector/slsDetector.cpp b/slsDetectorSoftware/slsDetector/slsDetector.cpp index faa1a38bc..d61c605ce 100644 --- a/slsDetectorSoftware/slsDetector/slsDetector.cpp +++ b/slsDetectorSoftware/slsDetector/slsDetector.cpp @@ -3460,8 +3460,10 @@ slsDetectorDefs::sls_detector_module *slsDetector::getModule(int imod){ } if (dacs) { - for (int i=0; inDacs; ++i) + for (int i=0; inDacs; ++i) { dacs[i+imod*thisDetector->nDacs]=myMod->dacs[i]; + //cprintf(BLUE,"dac%d:%d\n",i, myMod->dacs[i]); + } } (detectorModules+imod)->gain=myMod->gain; (detectorModules+imod)->offset=myMod->offset;