mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-23 01:58:00 +02:00
10Gbe, some functions in gotthard and eiger servers including mv in dacs, mv in dacs, changing settings file
This commit is contained in:
@ -655,6 +655,7 @@ int slsDetector::initializeDetectorSize(detectorType type) {
|
||||
|
||||
thisDetector->actionMask=0;
|
||||
|
||||
thisDetector->tenGigaEnable=0;
|
||||
|
||||
for (int ia=0; ia<MAX_ACTIONS; ia++) {
|
||||
strcpy(thisDetector->actionScript[ia],"none");
|
||||
@ -2000,16 +2001,17 @@ int slsDetector::readRegister(int addr){
|
||||
}{};
|
||||
*/
|
||||
|
||||
dacs_t slsDetector::setDAC(dacs_t val, dacIndex index, int imod){
|
||||
dacs_t slsDetector::setDAC(dacs_t val, dacIndex index, int mV, int imod){
|
||||
|
||||
|
||||
dacs_t retval;
|
||||
dacs_t retval[2];
|
||||
int fnum=F_SET_DAC;
|
||||
int ret=FAIL;
|
||||
char mess[100];
|
||||
int arg[2];
|
||||
int arg[3];
|
||||
arg[0]=index;
|
||||
arg[1]=imod;
|
||||
arg[2]=mV;
|
||||
|
||||
#ifdef VERBOSE
|
||||
std::cout<< std::endl;
|
||||
@ -2022,16 +2024,16 @@ dacs_t slsDetector::setDAC(dacs_t val, dacIndex index, int imod){
|
||||
controlSocket->SendDataOnly(&val,sizeof(val));
|
||||
controlSocket->ReceiveDataOnly(&ret,sizeof(ret));
|
||||
if (ret!=FAIL) {
|
||||
controlSocket->ReceiveDataOnly(&retval,sizeof(retval));
|
||||
controlSocket->ReceiveDataOnly(retval,sizeof(retval));
|
||||
if (index < thisDetector->nDacs){
|
||||
|
||||
if (dacs) {
|
||||
if (imod>=0) {
|
||||
*(dacs+index+imod*thisDetector->nDacs)=retval;
|
||||
*(dacs+index+imod*thisDetector->nDacs)=retval[0];
|
||||
}
|
||||
else {
|
||||
for (imod=0; imod<thisDetector->nModsMax; imod++)
|
||||
*(dacs+index+imod*thisDetector->nDacs)=retval;
|
||||
*(dacs+index+imod*thisDetector->nDacs)=retval[0];
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -2046,12 +2048,15 @@ dacs_t slsDetector::setDAC(dacs_t val, dacIndex index, int imod){
|
||||
}
|
||||
}
|
||||
#ifdef VERBOSE
|
||||
std::cout<< "Dac set to "<< retval << std::endl;
|
||||
std::cout<< "Dac set to "<< retval[0] << " dac units (" << retval[1] << "mV)" << std::endl;
|
||||
#endif
|
||||
if (ret==FAIL) {
|
||||
std::cout<< "Set dac failed " << std::endl;
|
||||
}
|
||||
return retval;
|
||||
if(mV)
|
||||
return retval[1];
|
||||
|
||||
return retval[0];
|
||||
};
|
||||
|
||||
|
||||
@ -4930,6 +4935,7 @@ char* slsDetector::setReceiver(string receiverIP){
|
||||
std::cout << "frame period:" << thisDetector->timerValue[FRAME_PERIOD] << endl;
|
||||
std::cout << "frame number:" << thisDetector->timerValue[FRAME_NUMBER] << endl;
|
||||
std::cout << "dynamic range:" << thisDetector->dynamicRange << endl << endl;
|
||||
std::cout << "10GbE:" << thisDetector->tenGigaEnable << endl << endl;
|
||||
/** enable compresison, */
|
||||
#endif
|
||||
if(setDetectorType()!= GENERIC){
|
||||
@ -4950,6 +4956,8 @@ char* slsDetector::setReceiver(string receiverIP){
|
||||
setDynamicRange(thisDetector->dynamicRange);
|
||||
//set scan tag
|
||||
setUDPConnection();
|
||||
if(thisDetector->myDetectorType == EIGER)
|
||||
enableTenGigabitEthernet(thisDetector->tenGigaEnable);
|
||||
}
|
||||
}
|
||||
|
||||
@ -6707,20 +6715,22 @@ int slsDetector::enableTenGigabitEthernet(int i){
|
||||
if(ret!=FAIL){
|
||||
//must also configuremac
|
||||
if((i != -1)&&(retval == i))
|
||||
configureMAC();
|
||||
|
||||
ret = FAIL;
|
||||
retval=-1;
|
||||
if(setReceiverOnline(ONLINE_FLAG)==ONLINE_FLAG){
|
||||
#ifdef VERBOSE
|
||||
std::cout << "Enabling / Disabling 10Gbe in receiver: " << i << std::endl;
|
||||
#endif
|
||||
if (connectData() == OK)
|
||||
ret=thisReceiver->sendInt(fnum,retval,i);
|
||||
if(ret==FAIL)
|
||||
setErrorMask((getErrorMask())|(RECEIVER_TEN_GIGA));
|
||||
}
|
||||
if(configureMAC() != FAIL){
|
||||
ret = FAIL;
|
||||
retval=-1;
|
||||
if(setReceiverOnline(ONLINE_FLAG)==ONLINE_FLAG){
|
||||
#ifdef VERBOSE
|
||||
std::cout << "Enabling / Disabling 10Gbe in receiver: " << i << std::endl;
|
||||
#endif
|
||||
if (connectData() == OK)
|
||||
ret=thisReceiver->sendInt(fnum2,retval,i);
|
||||
if(ret==FAIL)
|
||||
setErrorMask((getErrorMask())|(RECEIVER_TEN_GIGA));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(ret != FAIL)
|
||||
thisDetector->tenGigaEnable=retval;
|
||||
return retval;
|
||||
}
|
||||
|
@ -251,6 +251,9 @@ class slsDetector : public slsDetectorUtils, public energyConversion {
|
||||
/** online flag - is set if the receiver is connected, unset if socket connection is not possible */
|
||||
int receiverOnlineFlag;
|
||||
|
||||
/** 10 Gbe enable*/
|
||||
int tenGigaEnable;
|
||||
|
||||
} sharedSlsDetector;
|
||||
|
||||
|
||||
@ -779,10 +782,11 @@ class slsDetector : public slsDetectorUtils, public energyConversion {
|
||||
set dacs value
|
||||
\param val value (in V)
|
||||
\param index DAC index
|
||||
\param mV 0 in dac units or 1 in mV
|
||||
\param imod module number (if -1 alla modules)
|
||||
\returns current DAC value
|
||||
*/
|
||||
dacs_t setDAC(dacs_t val, dacIndex index, int imod=-1);
|
||||
dacs_t setDAC(dacs_t val, dacIndex index , int mV, int imod=-1);
|
||||
|
||||
/**
|
||||
set dacs value
|
||||
|
@ -423,7 +423,7 @@ int slsDetectorActions::executeScan(int level, int istep) {
|
||||
setThresholdEnergy((int)currentScanVariable[level]); //energy scan
|
||||
break;
|
||||
case thresholdScan:
|
||||
setDAC((dacs_t)currentScanVariable[level],THRESHOLD); // threshold scan
|
||||
setDAC((dacs_t)currentScanVariable[level],THRESHOLD,0); // threshold scan
|
||||
break;
|
||||
case trimbitsScan:
|
||||
trimbit=(int)currentScanVariable[level];
|
||||
|
@ -188,13 +188,14 @@ class slsDetectorActions : public virtual slsDetectorBase
|
||||
|
||||
|
||||
/**
|
||||
set dacs value
|
||||
\param val value (in V)
|
||||
\param index DAC index
|
||||
\param imod module number (if -1 alla modules)
|
||||
\returns current DAC value
|
||||
set dacs value
|
||||
\param val value (in V)
|
||||
\param index DAC index
|
||||
\param mV 0 in dac units or 1 in mV
|
||||
\param imod module number (if -1 alla modules)
|
||||
\returns current DAC value
|
||||
*/
|
||||
virtual dacs_t setDAC(dacs_t val, dacIndex index , int imod=-1)=0;
|
||||
virtual dacs_t setDAC(dacs_t val, dacIndex index , int mV, int imod=-1)=0;
|
||||
|
||||
|
||||
virtual int setThresholdEnergy(int, int im=-1, detectorSettings isettings=GET_SETTINGS)=0;
|
||||
|
@ -3229,10 +3229,12 @@ string slsDetectorCommand::cmdDAC(int narg, char *args[], int action) {
|
||||
|
||||
if (action==HELP_ACTION)
|
||||
return helpDAC(narg, args, action);
|
||||
|
||||
|
||||
dacIndex dac;
|
||||
dacs_t val=-1;
|
||||
char answer[1000];
|
||||
int mode=0;
|
||||
|
||||
if (cmd=="vthreshold")
|
||||
dac=THRESHOLD;
|
||||
else if (cmd=="vcalibration")
|
||||
@ -3327,23 +3329,30 @@ string slsDetectorCommand::cmdDAC(int narg, char *args[], int action) {
|
||||
myDet->setOnline(ONLINE_FLAG);
|
||||
|
||||
if (action==PUT_ACTION) {
|
||||
|
||||
if(narg > 2)
|
||||
if(!strcasecmp(args[2],"mv"))
|
||||
mode = 1;
|
||||
#ifdef DACS_INT
|
||||
if (sscanf(args[1],"%d", &val))
|
||||
|
||||
if (sscanf(args[1],"%d", &val))
|
||||
#else
|
||||
if (sscanf(args[1],"%f", &val))
|
||||
if (sscanf(args[1],"%f", &val))
|
||||
#endif
|
||||
;
|
||||
else
|
||||
return string("cannot scan DAC value ")+string(args[1]);
|
||||
|
||||
myDet->setDAC(val,dac);
|
||||
myDet->setDAC(val,dac,mode);
|
||||
}
|
||||
|
||||
#ifdef DACS_INT
|
||||
sprintf(answer,"%d",myDet->setDAC(-1,dac));
|
||||
sprintf(answer,"%d",myDet->setDAC(-1,dac,mode));
|
||||
#else
|
||||
sprintf(answer,"%f",myDet->setDAC(-1,dac));
|
||||
sprintf(answer,"%f",myDet->setDAC(-1,dac,mode));
|
||||
#endif
|
||||
if(mode)
|
||||
strcat(answer,"mV");
|
||||
return string(answer);
|
||||
|
||||
}
|
||||
@ -3414,6 +3423,8 @@ string slsDetectorCommand::helpDAC(int narg, char *args[], int action) {
|
||||
os << "vcn" << "dacu\t sets vcn " << std::endl;
|
||||
os << "vis" << "dacu\t sets vis " << std::endl;
|
||||
|
||||
|
||||
os << "<dac name> mv <value> if you want in mV else <dac name> <value> in dac units " << std::endl;
|
||||
}
|
||||
|
||||
if (action==GET_ACTION || action==HELP_ACTION) {
|
||||
|
@ -237,7 +237,7 @@ void slsDetectorUtils::acquire(int delflag){
|
||||
aclog->addStep(getCurrentPosition(), getCurrentFileName());
|
||||
|
||||
if (eclog)
|
||||
eclog->addStep(setDAC(-1,THRESHOLD), getCurrentFileName());
|
||||
eclog->addStep(setDAC(-1,THRESHOLD,0), getCurrentFileName());
|
||||
|
||||
|
||||
if (*correctionMask&(1<< I0_NORMALIZATION)) {
|
||||
@ -773,45 +773,118 @@ int slsDetectorUtils::retrieveDetectorSetup(string const fname1, int level){
|
||||
int slsDetectorUtils::dumpDetectorSetup(string const fname, int level){
|
||||
|
||||
slsDetectorCommand *cmd;
|
||||
string names[100];
|
||||
int nvar=0;
|
||||
|
||||
switch (getDetectorsType()) {
|
||||
case EIGER:
|
||||
names[nvar++]="fname";
|
||||
names[nvar++]="index";
|
||||
names[nvar++]="flags";
|
||||
names[nvar++]="dr";
|
||||
names[nvar++]="settings";
|
||||
names[nvar++]="threshold";
|
||||
names[nvar++]="exptime";
|
||||
names[nvar++]="period";
|
||||
names[nvar++]="frames";
|
||||
names[nvar++]="cycles";
|
||||
names[nvar++]="timing";
|
||||
names[nvar++]="fineoff";
|
||||
names[nvar++]="startscript";
|
||||
names[nvar++]="startscriptpar";
|
||||
names[nvar++]="stopscript";
|
||||
names[nvar++]="stopscriptpar";
|
||||
names[nvar++]="scriptbefore";
|
||||
names[nvar++]="scriptbeforepar";
|
||||
names[nvar++]="scriptafter";
|
||||
names[nvar++]="scriptafterpar";
|
||||
names[nvar++]="scan0script";
|
||||
names[nvar++]="scan0par";
|
||||
names[nvar++]="scan0prec";
|
||||
names[nvar++]="scan0steps";
|
||||
names[nvar++]="scan1script";
|
||||
names[nvar++]="scan1par";
|
||||
names[nvar++]="scan1prec";
|
||||
names[nvar++]="scan1steps";
|
||||
names[nvar++]="ratecorr";
|
||||
names[nvar++]="flatfield";
|
||||
names[nvar++]="badchannels";
|
||||
break;
|
||||
case GOTTHARD:
|
||||
names[nvar++]="fname";
|
||||
names[nvar++]="index";
|
||||
names[nvar++]="flags";
|
||||
names[nvar++]="dr";
|
||||
names[nvar++]="settings";
|
||||
names[nvar++]="exptime";
|
||||
names[nvar++]="period";
|
||||
names[nvar++]="delay";
|
||||
names[nvar++]="gates";
|
||||
names[nvar++]="frames";
|
||||
names[nvar++]="cycles";
|
||||
names[nvar++]="timing";
|
||||
names[nvar++]="fineoff";
|
||||
names[nvar++]="startscript";
|
||||
names[nvar++]="startscriptpar";
|
||||
names[nvar++]="stopscript";
|
||||
names[nvar++]="stopscriptpar";
|
||||
names[nvar++]="scriptbefore";
|
||||
names[nvar++]="scriptbeforepar";
|
||||
names[nvar++]="scriptafter";
|
||||
names[nvar++]="scriptafterpar";
|
||||
names[nvar++]="scan0script";
|
||||
names[nvar++]="scan0par";
|
||||
names[nvar++]="scan0prec";
|
||||
names[nvar++]="scan0steps";
|
||||
names[nvar++]="scan1script";
|
||||
names[nvar++]="scan1par";
|
||||
names[nvar++]="scan1prec";
|
||||
names[nvar++]="scan1steps";
|
||||
names[nvar++]="ratecorr";
|
||||
names[nvar++]="flatfield";
|
||||
names[nvar++]="badchannels";
|
||||
break;
|
||||
case MYTHEN:
|
||||
names[nvar++]="fname";
|
||||
names[nvar++]="index";
|
||||
names[nvar++]="flags";
|
||||
names[nvar++]="dr";
|
||||
names[nvar++]="settings";
|
||||
names[nvar++]="threshold";
|
||||
names[nvar++]="exptime";
|
||||
names[nvar++]="period";
|
||||
names[nvar++]="delay";
|
||||
names[nvar++]="gates";
|
||||
names[nvar++]="frames";
|
||||
names[nvar++]="cycles";
|
||||
names[nvar++]="probes";
|
||||
names[nvar++]="timing";
|
||||
names[nvar++]="fineoff";
|
||||
names[nvar++]="startscript";
|
||||
names[nvar++]="startscriptpar";
|
||||
names[nvar++]="stopscript";
|
||||
names[nvar++]="stopscriptpar";
|
||||
names[nvar++]="scriptbefore";
|
||||
names[nvar++]="scriptbeforepar";
|
||||
names[nvar++]="scriptafter";
|
||||
names[nvar++]="scriptafterpar";
|
||||
names[nvar++]="scan0script";
|
||||
names[nvar++]="scan0par";
|
||||
names[nvar++]="scan0prec";
|
||||
names[nvar++]="scan0steps";
|
||||
names[nvar++]="scan1script";
|
||||
names[nvar++]="scan1par";
|
||||
names[nvar++]="scan1prec";
|
||||
names[nvar++]="scan1steps";
|
||||
names[nvar++]="ratecorr";
|
||||
names[nvar++]="flatfield";
|
||||
names[nvar++]="badchannels";
|
||||
names[nvar++]="trimbits";
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
|
||||
string names[]={
|
||||
"fname",\
|
||||
"index",\
|
||||
"flags",\
|
||||
"dr",\
|
||||
"settings",\
|
||||
"threshold",\
|
||||
"exptime",\
|
||||
"period",\
|
||||
"delay",\
|
||||
"gates",\
|
||||
"frames",\
|
||||
"cycles",\
|
||||
"probes",\
|
||||
"timing",\
|
||||
"fineoff",\
|
||||
"startscript",\
|
||||
"startscriptpar",\
|
||||
"stopscript",\
|
||||
"stopscriptpar",\
|
||||
"scriptbefore",\
|
||||
"scriptbeforepar",\
|
||||
"scriptafter",\
|
||||
"scriptafterpar",\
|
||||
"scan0script",\
|
||||
"scan0par",\
|
||||
"scan0prec",\
|
||||
"scan0steps",\
|
||||
"scan1script",\
|
||||
"scan1par",\
|
||||
"scan1prec",\
|
||||
"scan1steps",\
|
||||
"ratecorr",\
|
||||
"flatfield",\
|
||||
"badchannels",\
|
||||
"trimbits"
|
||||
};
|
||||
int nvar=35;
|
||||
|
||||
|
||||
|
||||
|
@ -496,10 +496,11 @@ class slsDetectorUtils : public slsDetectorActions, public postProcessing {
|
||||
set dacs value
|
||||
\param val value (in V)
|
||||
\param index DAC index
|
||||
\param mV 0 in dac units or 1 in mV
|
||||
\param imod module number (if -1 alla modules)
|
||||
\returns current DAC value
|
||||
*/
|
||||
virtual dacs_t setDAC(dacs_t val, dacIndex index , int imod=-1)=0;
|
||||
virtual dacs_t setDAC(dacs_t val, dacIndex index , int mV, int imod=-1)=0;
|
||||
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user