merge from 3.0.1 for server binaries (adcphase,server dates, temp control, settings file

This commit is contained in:
maliakal_d 2018-02-07 11:02:36 +01:00
commit 897cbac27d
31 changed files with 170 additions and 163 deletions

View File

@ -377,7 +377,7 @@ void qTabAdvanced::SetOutputFile(){
//gets the clean absolute path //gets the clean absolute path
dirPath = dir.absoluteFilePath(dirPath); dirPath = dir.absoluteFilePath(dirPath);
dirPath = dir.cleanPath(dirPath); dirPath = dir.cleanPath(dirPath);
QString trimdir = QString(myDet->getSettingsFile()).section('/',0,-2,QString::SectionIncludeLeadingSep); QString trimdir = QString::fromStdString(myDet->getSettingsFile()).section('/',0,-2,QString::SectionIncludeLeadingSep);
trimdir = dir.absoluteFilePath(trimdir); trimdir = dir.absoluteFilePath(trimdir);
trimdir = dir.cleanPath(trimdir); trimdir = dir.cleanPath(trimdir);
if(!dirPath.compare(trimdir)){ if(!dirPath.compare(trimdir)){

View File

@ -316,6 +316,8 @@ int receiveData(int file_des, void* buf,int length, intType itype){
int sendDataOnly(int file_des, void* buf,int length) { int sendDataOnly(int file_des, void* buf,int length) {
if (!length)
return 0;
int ret = write(file_des, buf, length); //value of -1 is other end socket crash as sigpipe is ignored int ret = write(file_des, buf, length); //value of -1 is other end socket crash as sigpipe is ignored
if (ret < 0) cprintf(BG_RED, "Error writing to socket. Possible socket crash\n"); if (ret < 0) cprintf(BG_RED, "Error writing to socket. Possible socket crash\n");
return ret; return ret;
@ -415,19 +417,14 @@ int sendModuleGeneral(int file_des, sls_detector_module *myMod, int sendAll) {
ts+=sendData(file_des,&(myMod->ndac),sizeof(myMod->ndac),INT32); ts+=sendData(file_des,&(myMod->ndac),sizeof(myMod->ndac),INT32);
ts+=sendData(file_des,&(myMod->nadc),sizeof(myMod->nadc),INT32); ts+=sendData(file_des,&(myMod->nadc),sizeof(myMod->nadc),INT32);
ts+=sendData(file_des,&(myMod->reg),sizeof(myMod->reg),INT32); ts+=sendData(file_des,&(myMod->reg),sizeof(myMod->reg),INT32);
ts+=sendData(file_des,myMod->dacs,sizeof(myMod->ndac),OTHER);
if(sendAll){
ts+=sendData(file_des,myMod->adcs,sizeof(myMod->nadc),OTHER);
}else{
uint32_t k = 0;
ts+=sendData(file_des,&k,sizeof(k),OTHER);
}
/*some detectors dont require sending all trimbits etc.*/ #ifdef MYTHEND
if(sendAll){ ts+=sendData(file_des,myMod->dacs,sizeof(myMod->ndac),OTHER);
ts+=sendData(file_des,myMod->adcs,sizeof(myMod->nadc),OTHER);
ts+=sendData(file_des,myMod->chipregs,sizeof(myMod->nchip),OTHER); ts+=sendData(file_des,myMod->chipregs,sizeof(myMod->nchip),OTHER);
ts+=sendData(file_des,myMod->chanregs,sizeof(myMod->nchan),OTHER); ts+=sendData(file_des,myMod->chanregs,sizeof(myMod->nchan),OTHER);
} }
#endif
ts+=sendData(file_des,&(myMod->gain), sizeof(myMod->gain),OTHER); ts+=sendData(file_des,&(myMod->gain), sizeof(myMod->gain),OTHER);
ts+=sendData(file_des,&(myMod->offset), sizeof(myMod->offset),OTHER); ts+=sendData(file_des,&(myMod->offset), sizeof(myMod->offset),OTHER);
@ -437,16 +434,11 @@ int sendModuleGeneral(int file_des, sls_detector_module *myMod, int sendAll) {
ts+= sendData(file_des,myMod->dacs,sizeof(dacs_t)*nDacs,INT32); ts+= sendData(file_des,myMod->dacs,sizeof(dacs_t)*nDacs,INT32);
#ifdef VERBOSE #ifdef VERBOSE
printf("dacs %d of size %d sent\n",myMod->module, ts); printf("dacs %d of size %d sent\n",myMod->module, ts);
int idac;
for (idac=0; idac< nDacs; idac++) for (idac=0; idac< nDacs; idac++)
printf("dac %d is %d\n",idac,(int)myMod->dacs[idac]); printf("dac %d is %d\n",idac,(int)myMod->dacs[idac]);
#endif #endif
if(sendAll)
ts+= sendData(file_des,myMod->adcs,sizeof(dacs_t)*nAdcs,INT32); ts+= sendData(file_des,myMod->adcs,sizeof(dacs_t)*nAdcs,INT32);
else {
uint32_t k = 0;
ts+= sendData(file_des,&k,sizeof(k),INT32);
}
#ifdef VERBOSE #ifdef VERBOSE
printf("adcs %d of size %d sent\n",myMod->module, ts); printf("adcs %d of size %d sent\n",myMod->module, ts);
#endif #endif
@ -547,18 +539,12 @@ int receiveModuleGeneral(int file_des, sls_detector_module* myMod, int receiveA
ts+=receiveData(file_des,&(myMod->ndac),sizeof(myMod->ndac),INT32); ts+=receiveData(file_des,&(myMod->ndac),sizeof(myMod->ndac),INT32);
ts+=receiveData(file_des,&(myMod->nadc),sizeof(myMod->nadc),INT32); ts+=receiveData(file_des,&(myMod->nadc),sizeof(myMod->nadc),INT32);
ts+=receiveData(file_des,&(myMod->reg),sizeof(myMod->reg),INT32); ts+=receiveData(file_des,&(myMod->reg),sizeof(myMod->reg),INT32);
#ifdef MYTHEND
ts+=receiveData(file_des,myMod->dacs,sizeof(myMod->ndac),INT32); ts+=receiveData(file_des,myMod->dacs,sizeof(myMod->ndac),INT32);
if(receiveAll){ // temporary fix
ts+=receiveData(file_des,myMod->adcs,sizeof(myMod->nadc),INT32); ts+=receiveData(file_des,myMod->adcs,sizeof(myMod->nadc),INT32);
}else {
uint32_t k;ts+=receiveData(file_des,&k,sizeof(k),INT32);//nadc is 0
}
/*some detectors dont require sending all trimbits etc.*/
if(receiveAll){
ts+=receiveData(file_des,myMod->chipregs,sizeof(myMod->nchip),INT32); ts+=receiveData(file_des,myMod->chipregs,sizeof(myMod->nchip),INT32);
ts+=receiveData(file_des,myMod->chanregs,sizeof(myMod->nchan),INT32); ts+=receiveData(file_des,myMod->chanregs,sizeof(myMod->nchan),INT32);
} #endif
ts+=receiveData(file_des,&(myMod->gain), sizeof(myMod->gain),OTHER); ts+=receiveData(file_des,&(myMod->gain), sizeof(myMod->gain),OTHER);
ts+=receiveData(file_des,&(myMod->offset), sizeof(myMod->offset),OTHER); ts+=receiveData(file_des,&(myMod->offset), sizeof(myMod->offset),OTHER);

View File

@ -1,9 +1,9 @@
Path: slsDetectorsPackage/slsDetectorSoftware/eigerDetectorServer Path: slsDetectorsPackage/slsDetectorSoftware/eigerDetectorServer
URL: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git URL: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git
Repository Root: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git Repository Root: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git
Repsitory UUID: 08fda2b6620353e69f4b654f8bf4c3ea4be60b1e Repsitory UUID: 3da6a6df6556312f7467407a8b5691bdc478424e
Revision: 317 Revision: 319
Branch: developer Branch: developer
Last Changed Author: Dhanya_Maliakal Last Changed Author: Dhanya_Thattil
Last Changed Rev: 3582 Last Changed Rev: 3597
Last Changed Date: 2018-02-05 11:53:29.000000002 +0100 ./FebRegisterDefs.h Last Changed Date: 2018-02-07 10:44:13.000000002 +0100 ./FebRegisterDefs.h

View File

@ -1,6 +1,6 @@
#define GITURL "git@github.com:slsdetectorgroup/slsDetectorPackage.git" #define GITURL "git@github.com:slsdetectorgroup/slsDetectorPackage.git"
#define GITREPUUID "08fda2b6620353e69f4b654f8bf4c3ea4be60b1e" #define GITREPUUID "3da6a6df6556312f7467407a8b5691bdc478424e"
#define GITAUTH "Dhanya_Maliakal" #define GITAUTH "Dhanya_Thattil"
#define GITREV 0x3582 #define GITREV 0x3597
#define GITDATE 0x20180205 #define GITDATE 0x20180207
#define GITBRANCH "developer" #define GITBRANCH "developer"

View File

@ -136,10 +136,7 @@ int64_t getDetectorId(enum idMode arg){
case SOFTWARE_FIRMWARE_API_VERSION: case SOFTWARE_FIRMWARE_API_VERSION:
return (int64_t)Beb_GetFirmwareSoftwareAPIVersion(); return (int64_t)Beb_GetFirmwareSoftwareAPIVersion();
case DETECTOR_SOFTWARE_VERSION: case DETECTOR_SOFTWARE_VERSION:
retval= GITREV; return (GITDATE & 0xFFFFFF);
retval= (retval <<32) | GITDATE;
//cprintf(BLUE,"git date:%x, git rev:%x\n",GITDATE,GITREV);
break;
default: default:
break; break;
} }

View File

@ -1,9 +1,9 @@
Path: slsDetectorsPackage/slsDetectorSoftware/gotthardDetectorServer Path: slsDetectorsPackage/slsDetectorSoftware/gotthardDetectorServer
URL: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git URL: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git
Repository Root: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git Repository Root: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git
Repsitory UUID: 0649626842512b772ab660c36dece505f3244aee Repsitory UUID: e6bd874a88493557fc5127d4a1686832299aaf06
Revision: 212 Revision: 217
Branch: 3.0.1 Branch: 3.0.1
Last Changed Author: Dhanya_Maliakal Last Changed Author: Dhanya_Thattil
Last Changed Rev: 3318 Last Changed Rev: 3346
Last Changed Date: 2017-12-19 17:45:11.000000002 +0100 ./server_funcs.c Last Changed Date: 2018-02-07 09:09:56.000000002 +0100 ./server_funcs.c

View File

@ -1,6 +1,6 @@
#define GITURL "git@github.com:slsdetectorgroup/slsDetectorPackage.git" #define GITURL "git@github.com:slsdetectorgroup/slsDetectorPackage.git"
#define GITREPUUID "0649626842512b772ab660c36dece505f3244aee" #define GITREPUUID "e6bd874a88493557fc5127d4a1686832299aaf06"
#define GITAUTH "Dhanya_Maliakal" #define GITAUTH "Dhanya_Thattil"
#define GITREV 0x3318 #define GITREV 0x3346
#define GITDATE 0x20171219 #define GITDATE 0x20180207
#define GITBRANCH "3.0.1" #define GITBRANCH "3.0.1"

View File

@ -588,13 +588,9 @@ int get_id(int file_des) {
retval=getDetectorNumber(); retval=getDetectorNumber();
break; break;
case DETECTOR_FIRMWARE_VERSION: case DETECTOR_FIRMWARE_VERSION:
retval=getFirmwareSVNVersion(); return (getFirmwareVersion() & 0xFFFFFF);
retval=(retval <<32) | getFirmwareVersion();
break;
case DETECTOR_SOFTWARE_VERSION: case DETECTOR_SOFTWARE_VERSION:
retval= GITREV; return (GITDATE & 0xFFFFFF);
retval= (retval <<32) | GITDATE;
break;
default: default:
printf("Required unknown id %d \n", arg); printf("Required unknown id %d \n", arg);
ret=FAIL; ret=FAIL;

View File

@ -1,9 +1,9 @@
Path: slsDetectorsPackage/slsDetectorSoftware/jctbDetectorServer Path: slsDetectorsPackage/slsDetectorSoftware/jctbDetectorServer
URL: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git URL: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git
Repository Root: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git Repository Root: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git
Repsitory UUID: 7602ffc5ac94c36e326a3bf939e85746e708c2ad Repsitory UUID: 3da6a6df6556312f7467407a8b5691bdc478424e
Revision: 19 Revision: 21
Branch: developer Branch: developer
Last Changed Author: Anna_Bergamaschi Last Changed Author: Dhanya_Thattil
Last Changed Rev: 3554 Last Changed Rev: 3597
Last Changed Date: 2017-12-15 10:38:26.000000002 +0100 ./firmware_funcs.c Last Changed Date: 2018-02-07 10:44:13.000000002 +0100 ./server_funcs.h

View File

@ -1,6 +1,6 @@
#define GITURL "git@github.com:slsdetectorgroup/slsDetectorPackage.git" #define GITURL "git@github.com:slsdetectorgroup/slsDetectorPackage.git"
#define GITREPUUID "7602ffc5ac94c36e326a3bf939e85746e708c2ad" #define GITREPUUID "3da6a6df6556312f7467407a8b5691bdc478424e"
#define GITAUTH "Anna_Bergamaschi" #define GITAUTH "Dhanya_Thattil"
#define GITREV 0x3554 #define GITREV 0x3597
#define GITDATE 0x20171215 #define GITDATE 0x20180207
#define GITBRANCH "developer" #define GITBRANCH "developer"

View File

@ -1,9 +1,9 @@
Path: slsDetectorsPackage/slsDetectorSoftware/jungfrauDetectorServer Path: slsDetectorsPackage/slsDetectorSoftware/jungfrauDetectorServer
URL: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git URL: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git
Repository Root: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git Repository Root: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git
Repsitory UUID: 08fda2b6620353e69f4b654f8bf4c3ea4be60b1e Repsitory UUID: 3da6a6df6556312f7467407a8b5691bdc478424e
Revision: 105 Revision: 119
Branch: developer Branch: developer
Last Changed Author: Dhanya_Maliakal Last Changed Author: Dhanya_Thattil
Last Changed Rev: 3582 Last Changed Rev: 3597
Last Changed Date: 2018-02-05 11:53:33.000000002 +0100 ./RegisterDefs.h Last Changed Date: 2018-02-07 10:44:06.000000002 +0100 ./RegisterDefs.h

View File

@ -1,6 +1,6 @@
#define GITURL "git@github.com:slsdetectorgroup/slsDetectorPackage.git" #define GITURL "git@github.com:slsdetectorgroup/slsDetectorPackage.git"
#define GITREPUUID "08fda2b6620353e69f4b654f8bf4c3ea4be60b1e" #define GITREPUUID "3da6a6df6556312f7467407a8b5691bdc478424e"
#define GITAUTH "Dhanya_Maliakal" #define GITAUTH "Dhanya_Thattil"
#define GITREV 0x3582 #define GITREV 0x3597
#define GITDATE 0x20180205 #define GITDATE 0x20180207
#define GITBRANCH "developer" #define GITBRANCH "developer"

View File

@ -1,9 +1,9 @@
Path: slsDetectorsPackage/slsDetectorSoftware/moenchDetectorServer Path: slsDetectorsPackage/slsDetectorSoftware/moenchDetectorServer
URL: origin git@git.psi.ch:sls_detectors_software/sls_detector_software.git URL: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git
Repository Root: origin git@git.psi.ch:sls_detectors_software/sls_detector_software.git Repository Root: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git
Repsitory UUID: 9f1b82c18ab0893d65bfadeb646b8ea244614632 Repsitory UUID: e6bd874a88493557fc5127d4a1686832299aaf06
Revision: 83 Revision: 85
Branch: developer Branch: 3.0.1
Last Changed Author: Dhanya_Maliakal Last Changed Author: Dhanya_Thattil
Last Changed Rev: 1443 Last Changed Rev: 3346
Last Changed Date: 2017-07-10 11:03:27.000000002 +0200 ./Makefile Last Changed Date: 2018-02-07 09:14:36.000000002 +0100 ./server_funcs.c

View File

@ -1,6 +1,6 @@
#define GITURL "git@git.psi.ch:sls_detectors_software/sls_detector_software.git" #define GITURL "git@github.com:slsdetectorgroup/slsDetectorPackage.git"
#define GITREPUUID "9f1b82c18ab0893d65bfadeb646b8ea244614632" #define GITREPUUID "e6bd874a88493557fc5127d4a1686832299aaf06"
#define GITAUTH "Dhanya_Maliakal" #define GITAUTH "Dhanya_Thattil"
#define GITREV 0x1443 #define GITREV 0x3346
#define GITDATE 0x20170710 #define GITDATE 0x20180207
#define GITBRANCH "blabla" #define GITBRANCH "3.0.1"

View File

@ -593,13 +593,9 @@ int get_id(int file_des) {
retval=getDetectorNumber(); retval=getDetectorNumber();
break; break;
case DETECTOR_FIRMWARE_VERSION: case DETECTOR_FIRMWARE_VERSION:
retval=getFirmwareSVNVersion(); return (getFirmwareVersion() & 0xFFFFFF);
retval=(retval <<32) | getFirmwareVersion();
break;
case DETECTOR_SOFTWARE_VERSION: case DETECTOR_SOFTWARE_VERSION:
retval= GITREV; return (GITDATE & 0xFFFFFF);
retval= (retval <<32) | GITDATE;
break;
default: default:
printf("Required unknown id %d \n", arg); printf("Required unknown id %d \n", arg);
ret=FAIL; ret=FAIL;

View File

@ -4105,7 +4105,7 @@ slsDetectorDefs::externalSignalFlag multiSlsDetector::setExternalSignalFlags(ext
const char * multiSlsDetector::getSettingsFile() { string multiSlsDetector::getSettingsFile() {
string s0="", s1="",s ; string s0="", s1="",s ;
@ -4126,9 +4126,9 @@ const char * multiSlsDetector::getSettingsFile() {
} }
} }
if (s1=="bad") if (s1=="bad")
return s0.c_str(); return s0;
else else
return s1.c_str(); return s1;
} }

View File

@ -532,7 +532,7 @@ class multiSlsDetector : public slsDetectorUtils {
int64_t getId(idMode mode, int imod=0); int64_t getId(idMode mode, int imod=0);
int digitalTest(digitalTestMode mode, int imod=0); int digitalTest(digitalTestMode mode, int imod=0);
int executeTrimming(trimMode mode, int par1, int par2, int imod=-1); int executeTrimming(trimMode mode, int par1, int par2, int imod=-1);
const char *getSettingsFile(); string getSettingsFile();
int decodeNMod(int i, int &idet, int &imod); int decodeNMod(int i, int &idet, int &imod);

View File

@ -1161,18 +1161,19 @@ int slsDetector::sendModule(sls_detector_module *myMod) {
ts+=controlSocket->SendDataOnly(&(myMod->ndac),sizeof(myMod->ndac)); ts+=controlSocket->SendDataOnly(&(myMod->ndac),sizeof(myMod->ndac));
ts+=controlSocket->SendDataOnly(&(myMod->nadc),sizeof(myMod->nadc)); ts+=controlSocket->SendDataOnly(&(myMod->nadc),sizeof(myMod->nadc));
ts+=controlSocket->SendDataOnly(&(myMod->reg),sizeof(myMod->reg)); ts+=controlSocket->SendDataOnly(&(myMod->reg),sizeof(myMod->reg));
// only for sending structures like in old mythen server
if (thisDetector->myDetectorType == MYTHEN) {
ts+=controlSocket->SendDataOnly(myMod->dacs,sizeof(myMod->ndac)); ts+=controlSocket->SendDataOnly(myMod->dacs,sizeof(myMod->ndac));
ts+=controlSocket->SendDataOnly(myMod->adcs,sizeof(myMod->nadc)); ts+=controlSocket->SendDataOnly(myMod->adcs,sizeof(myMod->nadc));
if(thisDetector->myDetectorType != JUNGFRAU){
ts+=controlSocket->SendDataOnly(myMod->chipregs,sizeof(myMod->nchip)); ts+=controlSocket->SendDataOnly(myMod->chipregs,sizeof(myMod->nchip));
ts+=controlSocket->SendDataOnly(myMod->chanregs,sizeof(myMod->nchan)); ts+=controlSocket->SendDataOnly(myMod->chanregs,sizeof(myMod->nchan));
} }
ts+=controlSocket->SendDataOnly(&(myMod->gain),sizeof(myMod->gain)); ts+=controlSocket->SendDataOnly(&(myMod->gain),sizeof(myMod->gain));
ts+=controlSocket->SendDataOnly(&(myMod->offset), sizeof(myMod->offset)); ts+=controlSocket->SendDataOnly(&(myMod->offset), sizeof(myMod->offset));
// actual data to the pointers
ts+=controlSocket->SendDataOnly(myMod->dacs,sizeof(dacs_t)*(myMod->ndac)); ts+=controlSocket->SendDataOnly(myMod->dacs,sizeof(dacs_t)*(myMod->ndac));
ts+=controlSocket->SendDataOnly(myMod->adcs,sizeof(dacs_t)*(myMod->nadc)); ts+=controlSocket->SendDataOnly(myMod->adcs,sizeof(dacs_t)*(myMod->nadc));
if(thisDetector->myDetectorType != JUNGFRAU){ if(thisDetector->myDetectorType != JUNGFRAU){
ts+=controlSocket->SendDataOnly(myMod->chipregs,sizeof(int)*(myMod->nchip)); ts+=controlSocket->SendDataOnly(myMod->chipregs,sizeof(int)*(myMod->nchip));
ts+=controlSocket->SendDataOnly(myMod->chanregs,sizeof(int)*(myMod->nchan)); ts+=controlSocket->SendDataOnly(myMod->chanregs,sizeof(int)*(myMod->nchan));
@ -1229,13 +1230,14 @@ int slsDetector::receiveModule(sls_detector_module* myMod) {
ts+=controlSocket->ReceiveDataOnly(&(myMod->ndac),sizeof(myMod->ndac)); ts+=controlSocket->ReceiveDataOnly(&(myMod->ndac),sizeof(myMod->ndac));
ts+=controlSocket->ReceiveDataOnly(&(myMod->nadc),sizeof(myMod->nadc)); ts+=controlSocket->ReceiveDataOnly(&(myMod->nadc),sizeof(myMod->nadc));
ts+=controlSocket->ReceiveDataOnly(&(myMod->reg),sizeof(myMod->reg)); ts+=controlSocket->ReceiveDataOnly(&(myMod->reg),sizeof(myMod->reg));
// only for sending structures like in old mythen server
if (thisDetector->myDetectorType == MYTHEN) {
ts+=controlSocket->ReceiveDataOnly(myMod->dacs,sizeof(myMod->ndac)); ts+=controlSocket->ReceiveDataOnly(myMod->dacs,sizeof(myMod->ndac));
ts+=controlSocket->ReceiveDataOnly(myMod->adcs,sizeof(myMod->nadc)); ts+=controlSocket->ReceiveDataOnly(myMod->adcs,sizeof(myMod->nadc));
if(thisDetector->myDetectorType != JUNGFRAU){
ts+=controlSocket->ReceiveDataOnly(myMod->chipregs,sizeof(myMod->nchip)); ts+=controlSocket->ReceiveDataOnly(myMod->chipregs,sizeof(myMod->nchip));
ts+=controlSocket->ReceiveDataOnly(myMod->chanregs,sizeof(myMod->nchan)); ts+=controlSocket->ReceiveDataOnly(myMod->chanregs,sizeof(myMod->nchan));
} }
ts+=controlSocket->ReceiveDataOnly(&(myMod->gain), sizeof(myMod->gain)); ts+=controlSocket->ReceiveDataOnly(&(myMod->gain), sizeof(myMod->gain));
ts+=controlSocket->ReceiveDataOnly(&(myMod->offset), sizeof(myMod->offset)); ts+=controlSocket->ReceiveDataOnly(&(myMod->offset), sizeof(myMod->offset));
@ -3951,11 +3953,11 @@ slsDetectorDefs::detectorSettings slsDetector::setSettings( detectorSettings ise
std::cout<< thisDetector->settingsDir<<endl<< thisDetector->calDir <<endl; std::cout<< thisDetector->settingsDir<<endl<< thisDetector->calDir <<endl;
#endif #endif
break; break;
case MOENCH: case MYTHEN:
case GOTTHARD: ostfn << thisDetector->settingsDir << ssettings <<"/noise.sn" << setfill('0') << setw(3) << hex << getId(MODULE_SERIAL_NUMBER, im) << setbase(10);
case PROPIX: oscfn << thisDetector->calDir << ssettings << "/calibration.sn" << setfill('0') << setw(3) << hex << getId(MODULE_SERIAL_NUMBER, im) << setbase(10);
case JUNGFRAU: break;
case JUNGFRAUCTB: default:
//settings is saved in myMod.reg //settings is saved in myMod.reg
myMod->reg=thisDetector->currentSettings; myMod->reg=thisDetector->currentSettings;
ostfn << thisDetector->settingsDir << ssettings <<"/settings.sn";// << setfill('0') << setw(3) << hex << getId(MODULE_SERIAL_NUMBER, im) << setbase(10); ostfn << thisDetector->settingsDir << ssettings <<"/settings.sn";// << setfill('0') << setw(3) << hex << getId(MODULE_SERIAL_NUMBER, im) << setbase(10);
@ -3964,9 +3966,6 @@ slsDetectorDefs::detectorSettings slsDetector::setSettings( detectorSettings ise
std::cout<< thisDetector->settingsDir<<endl<< thisDetector->calDir <<endl; std::cout<< thisDetector->settingsDir<<endl<< thisDetector->calDir <<endl;
#endif #endif
break; break;
default:
ostfn << thisDetector->settingsDir << ssettings <<"/noise.sn" << setfill('0') << setw(3) << hex << getId(MODULE_SERIAL_NUMBER, im) << setbase(10);
oscfn << thisDetector->calDir << ssettings << "/calibration.sn" << setfill('0') << setw(3) << hex << getId(MODULE_SERIAL_NUMBER, im) << setbase(10);
} }
@ -3979,17 +3978,13 @@ slsDetectorDefs::detectorSettings slsDetector::setSettings( detectorSettings ise
//if it didnt open, try default settings file //if it didnt open, try default settings file
ostringstream ostfn_default; ostringstream ostfn_default;
switch(thisDetector->myDetectorType){ switch(thisDetector->myDetectorType){
case MOENCH:
case GOTTHARD:
case PROPIX:
case JUNGFRAU:
case JUNGFRAUCTB:
ostfn_default << thisDetector->settingsDir << ssettings << ssettings << ".settings";
break;
case EIGER: case EIGER:
default: case MYTHEN:
ostfn_default << thisDetector->settingsDir << ssettings << ssettings << ".trim"; ostfn_default << thisDetector->settingsDir << ssettings << ssettings << ".trim";
break; break;
default:
ostfn_default << thisDetector->settingsDir << ssettings << ssettings << ".settings";
break;
} }
settingsfname=ostfn_default.str(); settingsfname=ostfn_default.str();
#ifdef VERBOSE #ifdef VERBOSE
@ -7791,15 +7786,21 @@ int slsDetector::loadSettingsFile(string fname, int imod) {
for (int im=mmin; im<mmax; ++im) { for (int im=mmin; im<mmax; ++im) {
ostringstream ostfn; ostringstream ostfn;
ostfn << fname; ostfn << fname;
if(thisDetector->myDetectorType != EIGER){ switch (thisDetector->myDetectorType) {
case MYTHEN:
if (fname.find(".sn")==string::npos && fname.find(".trim")==string::npos && fname.find(".settings")==string::npos) { if (fname.find(".sn")==string::npos && fname.find(".trim")==string::npos && fname.find(".settings")==string::npos) {
ostfn << ".sn" << setfill('0') << setw(3) << hex << getId(MODULE_SERIAL_NUMBER, im); ostfn << ".sn" << setfill('0') << setw(3) << hex << getId(MODULE_SERIAL_NUMBER, im);
fn=ostfn.str();
} }
}else if (fname.find(".sn")==string::npos && fname.find(".trim")==string::npos && fname.find(".settings")==string::npos) { break;
case EIGER:
if (fname.find(".sn")==string::npos && fname.find(".trim")==string::npos && fname.find(".settings")==string::npos) {
ostfn << ".sn" << setfill('0') << setw(3) << dec << getId(DETECTOR_SERIAL_NUMBER, im); ostfn << ".sn" << setfill('0') << setw(3) << dec << getId(DETECTOR_SERIAL_NUMBER, im);
fn=ostfn.str();
} }
break;
default:
break;
}
fn=ostfn.str();
myMod=readSettingsFile(fn, thisDetector->myDetectorType,iodelay, tau, myMod); myMod=readSettingsFile(fn, thisDetector->myDetectorType,iodelay, tau, myMod);
if (myMod) { if (myMod) {
@ -7829,18 +7830,27 @@ int slsDetector::saveSettingsFile(string fname, int imod) {
mmax=imod+1; mmax=imod+1;
} }
for (int im=mmin; im<mmax; ++im) { for (int im=mmin; im<mmax; ++im) {
string fn=fname;
ostringstream ostfn; ostringstream ostfn;
if(thisDetector->myDetectorType == EIGER){ ostfn << fname;
ostfn << fname << ".sn" << setfill('0') << setw(3) << dec << getId(DETECTOR_SERIAL_NUMBER); switch (thisDetector->myDetectorType) {
} else case MYTHEN:
ostfn << fname << ".sn" << setfill('0') << setw(3) << hex << getId(MODULE_SERIAL_NUMBER,im); ostfn << ".sn" << setfill('0') << setw(3) << hex << getId(MODULE_SERIAL_NUMBER,im);
break;
case EIGER:
ostfn << ".sn" << setfill('0') << setw(3) << dec << getId(DETECTOR_SERIAL_NUMBER);
break;
default:
break;
}
fn=ostfn.str();
if ((myMod=getModule(im))) { if ((myMod=getModule(im))) {
if(thisDetector->myDetectorType == EIGER){ if(thisDetector->myDetectorType == EIGER){
iodelay = (int)setDAC((dacs_t)-1,IO_DELAY,0,-1); iodelay = (int)setDAC((dacs_t)-1,IO_DELAY,0,-1);
tau = (int64_t)getRateCorrectionTau(); tau = (int64_t)getRateCorrectionTau();
} }
ret=writeSettingsFile(ostfn.str(), thisDetector->myDetectorType, *myMod, iodelay, tau); ret=writeSettingsFile(fn, thisDetector->myDetectorType, *myMod, iodelay, tau);
deleteModule(myMod); deleteModule(myMod);
} }
} }
@ -7923,15 +7933,23 @@ int slsDetector::loadCalibrationFile(string fname, int imod) {
mmax=imod+1; mmax=imod+1;
} }
for (int im=mmin; im<mmax; ++im) { for (int im=mmin; im<mmax; ++im) {
string fn=fname;
ostringstream ostfn; ostringstream ostfn;
ostfn << fname ; ostfn << fname ;
if(thisDetector->myDetectorType != EIGER){ switch (thisDetector->myDetectorType) {
case MYTHEN:
if (fname.find(".sn")==string::npos && fname.find(".cal")==string::npos) { if (fname.find(".sn")==string::npos && fname.find(".cal")==string::npos) {
ostfn << ".sn" << setfill('0') << setw(3) << hex << getId(MODULE_SERIAL_NUMBER, im); ostfn << ".sn" << setfill('0') << setw(3) << hex << getId(MODULE_SERIAL_NUMBER, im);
} }
}else if (fname.find(".sn")==string::npos && fname.find(".cal")==string::npos) { break;
case EIGER:
if (fname.find(".sn")==string::npos && fname.find(".cal")==string::npos) {
ostfn << "." << setfill('0') << setw(3) << dec << getId(DETECTOR_SERIAL_NUMBER); ostfn << "." << setfill('0') << setw(3) << dec << getId(DETECTOR_SERIAL_NUMBER);
} }
break;
default:
break;
}
fn=ostfn.str(); fn=ostfn.str();
if((myMod=getModule(im))){ if((myMod=getModule(im))){
//extra gain and offset //extra gain and offset
@ -7967,18 +7985,27 @@ int slsDetector::saveCalibrationFile(string fname, int imod) {
mmax=imod+1; mmax=imod+1;
} }
for (int im=mmin; im<mmax; ++im) { for (int im=mmin; im<mmax; ++im) {
string fn=fname;
ostringstream ostfn; ostringstream ostfn;
if(thisDetector->myDetectorType == EIGER) ostfn << fname;
ostfn << fname << ".sn" << setfill('0') << setw(3) << dec << getId(DETECTOR_SERIAL_NUMBER); switch (thisDetector->myDetectorType) {
else case MYTHEN:
ostfn << fname << ".sn" << setfill('0') << setw(3) << hex << getId(MODULE_SERIAL_NUMBER,im); ostfn << ".sn" << setfill('0') << setw(3) << hex << getId(MODULE_SERIAL_NUMBER,im);
break;
case EIGER:
ostfn << ".sn" << setfill('0') << setw(3) << dec << getId(DETECTOR_SERIAL_NUMBER);
break;
default:
break;
}
fn=ostfn.str();
if ((myMod=getModule(im))) { if ((myMod=getModule(im))) {
//extra gain and offset //extra gain and offset
if(thisDetector->nGain) if(thisDetector->nGain)
ret=writeCalibrationFile(ostfn.str(),gain, offset); ret=writeCalibrationFile(fn,gain, offset);
//normal gain and offset inside sls_detector_module //normal gain and offset inside sls_detector_module
else else
ret=writeCalibrationFile(ostfn.str(),myMod->gain, myMod->offset); ret=writeCalibrationFile(fn,myMod->gain, myMod->offset);
deleteModule(myMod); deleteModule(myMod);
}else }else

View File

@ -541,13 +541,13 @@ class slsDetector : public slsDetectorUtils, public energyConversion {
/** /**
returns currently the loaded trimfile/settingsfile name returns currently the loaded trimfile/settingsfile name
*/ */
const char *getSettingsFile(){\ string getSettingsFile(){\
string s(thisDetector->settingsFile); \ string s(thisDetector->settingsFile); \
if (s.length()>6) {\ if (s.length()>6) {\
if (s.substr(s.length()-6,3)==string(".sn") && s.substr(s.length()-3)!=string("xxx") ) \ if (s.substr(s.length()-6,3)==string(".sn") && s.substr(s.length()-3)!=string("xxx") ) \
return s.substr(0,s.length()-6).c_str(); \ return s.substr(0,s.length()-6); \
} \ } \
return thisDetector->settingsFile;\ return string(thisDetector->settingsFile);\
}; };

View File

@ -4633,7 +4633,7 @@ string slsDetectorCommand::cmdSettings(int narg, char *args[], int action) {
myDet->loadSettingsFile(sval,-1); myDet->loadSettingsFile(sval,-1);
} }
} }
return string(myDet->getSettingsFile()); return myDet->getSettingsFile();
} else if (cmd=="trim") { } else if (cmd=="trim") {
if (action==GET_ACTION) if (action==GET_ACTION)
return string("cannot get!"); return string("cannot get!");

View File

@ -295,7 +295,7 @@ class slsDetectorUtils : public slsDetectorActions, public postProcessing {
/** /**
returns currently the loaded trimfile/settingsfile name returns currently the loaded trimfile/settingsfile name
*/ */
virtual const char *getSettingsFile()=0; virtual string getSettingsFile()=0;
/** /**

View File

@ -3166,7 +3166,12 @@ int set_speed(int file_des) {
switch (arg) { switch (arg) {
#ifdef JUNGFRAUD #ifdef JUNGFRAUD
case ADC_PHASE: case ADC_PHASE:
adcPhase(val); retval = adcPhase(val);
if ((retval!=val) && (val>=0)) {
ret=FAIL;
sprintf(mess,"could not change set adc phase: should be %d but is %d \n", val, retval);
cprintf(RED, "Warning: %s", mess);
}
break; break;
#endif #endif
#ifdef MYTHEND #ifdef MYTHEND
@ -5290,7 +5295,6 @@ int threshold_temp(int file_des) {
sprintf(mess,"Function (Threshold Temp) is not implemented for this detector\n"); sprintf(mess,"Function (Threshold Temp) is not implemented for this detector\n");
cprintf(RED, "%s", mess); cprintf(RED, "%s", mess);
#else #else
int arg[2]={-1,-1}; int arg[2]={-1,-1};
int val=-1; int val=-1;
@ -5305,6 +5309,7 @@ int threshold_temp(int file_des) {
cprintf(RED, "Warning: %s", mess); cprintf(RED, "Warning: %s", mess);
} }
#ifdef SLS_DETECTOR_FUNCTION_LIST #ifdef SLS_DETECTOR_FUNCTION_LIST
if (ret==OK) { if (ret==OK) {
#ifdef VERBOSE #ifdef VERBOSE
@ -5361,6 +5366,7 @@ int temp_control(int file_des) {
val=arg[0]; val=arg[0];
//ignoring imod //ignoring imod
#ifdef SLS_DETECTOR_FUNCTION_LIST #ifdef SLS_DETECTOR_FUNCTION_LIST
if (ret==OK) { if (ret==OK) {
#ifdef VERBOSE #ifdef VERBOSE
@ -5372,7 +5378,6 @@ int temp_control(int file_des) {
#ifdef VERBOSE #ifdef VERBOSE
printf("Temperature control is %d\n", retval); printf("Temperature control is %d\n", retval);
#endif #endif
if (ret==OK && differentClients && val >= 0) if (ret==OK && differentClients && val >= 0)
ret=FORCE_UPDATE; ret=FORCE_UPDATE;
#endif #endif