mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-13 21:37:13 +02:00
Compare commits
27 Commits
Author | SHA1 | Date | |
---|---|---|---|
26c829d766 | |||
3fde5c5b55 | |||
3e5f546ebe | |||
56c504abbb | |||
4d6346e678 | |||
dc7e448759 | |||
befdcf7f36 | |||
02f5c472a8 | |||
75ed2cd2e4 | |||
3be045f9b6 | |||
8fae982802 | |||
128ec88b5f | |||
d5fc158330 | |||
864e6e4c81 | |||
343d96ff16 | |||
6a80bc5b54 | |||
b9275646ad | |||
9e2f2697c7 | |||
b6b0df62b6 | |||
0ba537e479 | |||
75ddf535dc | |||
b1de501bef | |||
0f3a63f101 | |||
3b4b2d707f | |||
f405aa1733 | |||
df0fdb7ecb | |||
91b7a87557 |
@ -561,6 +561,15 @@ int receiveModuleGeneral(int file_des, sls_detector_module* myMod, int receiveA
|
||||
myMod->chipregs=chipptr;
|
||||
myMod->chanregs=chanptr;
|
||||
|
||||
#ifdef EIGERD
|
||||
//feature to exclude sending of trimbtis, nchips=0,nchans=0 in that case
|
||||
if(myMod->nchip == 0 && myMod->nchan == 0) {
|
||||
receiveAll=0;
|
||||
nchipold=0;
|
||||
nchanold=0;
|
||||
}
|
||||
#endif
|
||||
|
||||
nChips=myMod->nchip;
|
||||
nchipdiff=nChips-nchipold;
|
||||
if (nchipold!=nChips) {
|
||||
@ -571,6 +580,7 @@ int receiveModuleGeneral(int file_des, sls_detector_module* myMod, int receiveA
|
||||
printf("received %d chips\n",nChips);
|
||||
#endif
|
||||
|
||||
|
||||
nChans=myMod->nchan;
|
||||
nchandiff=nChans-nchanold;
|
||||
if (nchanold!=nChans) {
|
||||
|
Binary file not shown.
@ -627,25 +627,30 @@ int setModule(sls_detector_module myMod, int delay){
|
||||
for(i=0;i<myMod.ndac;i++)
|
||||
setDAC((enum detDacIndex)i,myMod.dacs[i],myMod.module,0,retval);
|
||||
|
||||
//includ gap pixels
|
||||
unsigned int tt[263680];
|
||||
int iy,ichip,ix,ip=0,ich=0;
|
||||
for(iy=0;iy<256;iy++) {
|
||||
for (ichip=0; ichip<4; ichip++) {
|
||||
for(ix=0;ix<256;ix++) {
|
||||
tt[ip++]=myMod.chanregs[ich++];
|
||||
}
|
||||
if (ichip<3) {
|
||||
tt[ip++]=0;
|
||||
tt[ip++]=0;
|
||||
if(myMod.nchan==0 && myMod.nchip == 0)
|
||||
cprintf(BLUE,"Setting module without trimbits\n");
|
||||
else{
|
||||
cprintf(GREEN,"Setting module with trimbits\n");
|
||||
//includ gap pixels
|
||||
unsigned int tt[263680];
|
||||
int iy,ichip,ix,ip=0,ich=0;
|
||||
for(iy=0;iy<256;iy++) {
|
||||
for (ichip=0; ichip<4; ichip++) {
|
||||
for(ix=0;ix<256;ix++) {
|
||||
tt[ip++]=myMod.chanregs[ich++];
|
||||
}
|
||||
if (ichip<3) {
|
||||
tt[ip++]=0;
|
||||
tt[ip++]=0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//set trimbits
|
||||
if(!Feb_Control_SetTrimbits(Feb_Control_GetModuleNumber(),tt)){
|
||||
cprintf(BG_RED,"Could not set trimbits\n");
|
||||
return FAIL;
|
||||
//set trimbits
|
||||
if(!Feb_Control_SetTrimbits(Feb_Control_GetModuleNumber(),tt)){
|
||||
cprintf(BG_RED,"Could not set trimbits\n");
|
||||
return FAIL;
|
||||
}
|
||||
}
|
||||
|
||||
return thisSettings;
|
||||
@ -1126,11 +1131,13 @@ int copyModule(sls_detector_module *destMod, sls_detector_module *srcMod){
|
||||
|
||||
destMod->serialnumber=srcMod->serialnumber;
|
||||
}
|
||||
if ((srcMod->nchip)>(destMod->nchip)) {
|
||||
//no trimbit feature
|
||||
if (destMod->nchip && ((srcMod->nchip)>(destMod->nchip))) {
|
||||
printf("Number of chip of source is larger than number of chips of destination\n");
|
||||
return FAIL;
|
||||
}
|
||||
if ((srcMod->nchan)>(destMod->nchan)) {
|
||||
//no trimbit feature
|
||||
if (destMod->nchan && ((srcMod->nchan)>(destMod->nchan))) {
|
||||
printf("Number of channels of source is larger than number of channels of destination\n");
|
||||
return FAIL;
|
||||
}
|
||||
@ -1164,14 +1171,21 @@ int copyModule(sls_detector_module *destMod, sls_detector_module *srcMod){
|
||||
if (srcMod->offset>=0)
|
||||
destMod->offset=srcMod->offset;
|
||||
|
||||
for (ichip=0; ichip<(srcMod->nchip); ichip++) {
|
||||
if (*((srcMod->chipregs)+ichip)>=0)
|
||||
*((destMod->chipregs)+ichip)=*((srcMod->chipregs)+ichip);
|
||||
}
|
||||
for (ichan=0; ichan<(srcMod->nchan); ichan++) {
|
||||
if (*((srcMod->chanregs)+ichan)>=0)
|
||||
*((destMod->chanregs)+ichan)=*((srcMod->chanregs)+ichan);
|
||||
if((destMod->nchip!=0) || (destMod->nchan!=0)) {
|
||||
for (ichip=0; ichip<(srcMod->nchip); ichip++) {
|
||||
if (*((srcMod->chipregs)+ichip)>=0)
|
||||
*((destMod->chipregs)+ichip)=*((srcMod->chipregs)+ichip);
|
||||
}
|
||||
for (ichan=0; ichan<(srcMod->nchan); ichan++) {
|
||||
if (*((srcMod->chanregs)+ichan)>=0)
|
||||
*((destMod->chanregs)+ichan)=*((srcMod->chanregs)+ichan);
|
||||
}
|
||||
}
|
||||
#ifdef VERBOSE
|
||||
printf("Not Copying trimbits\n");
|
||||
#endif
|
||||
|
||||
|
||||
for (idac=0; idac<(srcMod->ndac); idac++) {
|
||||
if (*((srcMod->dacs)+idac)>=0)
|
||||
*((destMod->dacs)+idac)=*((srcMod->dacs)+idac);
|
||||
|
@ -1,9 +1,9 @@
|
||||
Path: slsDetectorsPackage/slsDetectorSoftware
|
||||
URL: origin git@git.psi.ch:sls_detectors_software/sls_detector_software.git
|
||||
Repository Root: origin git@git.psi.ch:sls_detectors_software/sls_detector_software.git
|
||||
Repsitory UUID: 7a0a1ee8734440dc4e1e638d6fec1eaa9d2404ae
|
||||
Revision: 1348
|
||||
Branch: 2.3.1
|
||||
Repsitory UUID: 41acb4c1ab89fe85b049c329adb539c3ad5b107a
|
||||
Revision: 1350
|
||||
Branch: 2.3.2
|
||||
Last Changed Author: Dhanya_Maliakal
|
||||
Last Changed Rev: 1348
|
||||
Last Changed Date: 2017-04-11 13:39:28 +0200
|
||||
Last Changed Rev: 1350
|
||||
Last Changed Date: 2017-04-19 10:17:30 +0200
|
||||
|
@ -1139,7 +1139,7 @@ int multiSlsDetector::getThresholdEnergy(int pos) {
|
||||
}
|
||||
|
||||
|
||||
int multiSlsDetector::setThresholdEnergy(int e_eV, int pos, detectorSettings isettings) {
|
||||
int multiSlsDetector::setThresholdEnergy(int e_eV, int pos, detectorSettings isettings, int tb) {
|
||||
|
||||
int posmin, posmax;
|
||||
int ret=-100;
|
||||
@ -1160,8 +1160,8 @@ int multiSlsDetector::setThresholdEnergy(int e_eV, int pos, detectorSettings ise
|
||||
for(int idet=posmin; idet<posmax; idet++){
|
||||
if(detectors[idet]){
|
||||
iret[idet]= new int(-1);
|
||||
Task* task = new Task(new func3_t<int,slsDetector,int,int,detectorSettings,int>(&slsDetector::setThresholdEnergy,
|
||||
detectors[idet],e_eV,-1,isettings,iret[idet]));
|
||||
Task* task = new Task(new func4_t<int,slsDetector,int,int,detectorSettings,int,int>(&slsDetector::setThresholdEnergy,
|
||||
detectors[idet],e_eV,-1,isettings,tb, iret[idet]));
|
||||
threadpool->add_task(task);
|
||||
}
|
||||
}
|
||||
@ -5159,25 +5159,27 @@ int multiSlsDetector::createReceivingDataSockets(const bool destroy){
|
||||
|
||||
int multiSlsDetector::getData(const int isocket, const bool masking, int* image, const int size, uint64_t &acqIndex, uint64_t &frameIndex, uint32_t &subframeIndex, string &filename){
|
||||
|
||||
zmq_msg_t message;
|
||||
zmq_msg_t header_message;
|
||||
|
||||
//scan header-------------------------------------------------------------------
|
||||
zmq_msg_init (&message);
|
||||
zmq_msg_init (&header_message);
|
||||
//cprintf(BLUE,"%d going to receive message\n", isocket);
|
||||
int len = zmq_msg_recv(&message, zmqsocket[isocket], 0);
|
||||
int len = zmq_msg_recv(&header_message, zmqsocket[isocket], 0);
|
||||
if (len == -1) {
|
||||
cprintf(BG_RED,"Could not read header for socket %d\n",isocket);
|
||||
zmq_msg_close(&message);
|
||||
zmq_msg_close(&header_message);
|
||||
cprintf(RED, "%d message null\n",isocket);
|
||||
return FAIL;
|
||||
}
|
||||
|
||||
|
||||
// error if you print it
|
||||
// cprintf(BLUE,"%d header len:%d value:%s\n",isocket, len, (char*)zmq_msg_data(&message));
|
||||
//cprintf(BLUE,"%d header %d\n",isocket,len);
|
||||
//cprintf(BLUE,"%d header len:%d value:%s\n",isocket, len, (char*)zmq_msg_data(&header_message));
|
||||
|
||||
rapidjson::Document d;
|
||||
d.Parse( (char*)zmq_msg_data(&message), zmq_msg_size(&message));
|
||||
rapidjson::ParseResult result = d.Parse( (char*)zmq_msg_data(&header_message), len);
|
||||
if (!result) {
|
||||
cprintf(RED,"%d Could not parse. len:%d: Message:%s \n", isocket, len, (char*)zmq_msg_data(&header_message) );
|
||||
}
|
||||
#ifdef VERYVERBOSE
|
||||
// htype is an array of strings
|
||||
rapidjson::Value::Array htype = d["htype"].GetArray();
|
||||
@ -5193,7 +5195,7 @@ int multiSlsDetector::getData(const int isocket, const bool masking, int* image,
|
||||
cout << isocket << "type: " << d["type"].GetString() << endl;
|
||||
|
||||
#endif
|
||||
if(d["acqIndex"].GetUint64()!= (long long unsigned int)-1){ //!isocket &&
|
||||
if(d["acqIndex"].GetUint64()!= (uint64_t)-1){ //!isocket &&
|
||||
acqIndex = d["acqIndex"].GetUint64();
|
||||
frameIndex = d["fIndex"].GetUint64();
|
||||
subframeIndex = -1;
|
||||
@ -5210,17 +5212,19 @@ int multiSlsDetector::getData(const int isocket, const bool masking, int* image,
|
||||
if(frameIndex == (long long unsigned int)-1) cprintf(RED,"multi frame index -1!!\n");
|
||||
}
|
||||
// close the message
|
||||
zmq_msg_close(&message);
|
||||
zmq_msg_close(&header_message);
|
||||
|
||||
|
||||
//scan data-------------------------------------------------------------------
|
||||
zmq_msg_init (&message);
|
||||
len = zmq_msg_recv(&message, zmqsocket[isocket], 0);
|
||||
//cprintf(BLUE,"%d data %d\n",isocket,len);
|
||||
zmq_msg_t data_message;
|
||||
zmq_msg_init (&data_message);
|
||||
len = zmq_msg_recv(&data_message, zmqsocket[isocket], 0);
|
||||
//cprintf(GREEN,"%d data %d\n",isocket,len);
|
||||
|
||||
//end of socket ("end")
|
||||
if(len == 3){
|
||||
//cprintf(RED,"%d Received end of acquisition\n", isocket);
|
||||
//end of socket ("end\0")
|
||||
if(len == 4){
|
||||
zmq_msg_close(&data_message); // close the message
|
||||
//cprintf(RED,"%d Received end of acquisition len:%d\n", isocket, len);
|
||||
return FAIL;
|
||||
}
|
||||
|
||||
@ -5232,8 +5236,8 @@ int multiSlsDetector::getData(const int isocket, const bool masking, int* image,
|
||||
//actual image
|
||||
else{
|
||||
//actual data
|
||||
//cprintf(BLUE,"%d actual dataaa\n",isocket);
|
||||
memcpy((char*)image,(char*)zmq_msg_data(&message),size);
|
||||
// cprintf(GREEN,"%d actual dataaa\n",isocket);
|
||||
memcpy((char*)image,(char*)zmq_msg_data(&data_message),size);
|
||||
|
||||
//jungfrau masking adcval
|
||||
if(masking){
|
||||
@ -5244,7 +5248,7 @@ int multiSlsDetector::getData(const int isocket, const bool masking, int* image,
|
||||
}
|
||||
}
|
||||
|
||||
zmq_msg_close(&message); // close the message
|
||||
zmq_msg_close(&data_message); // close the message
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
@ -453,9 +453,10 @@ class multiSlsDetector : public slsDetectorUtils {
|
||||
\param e_eV threshold in eV
|
||||
\param imod module number (-1 all)
|
||||
\param isettings ev. change settings
|
||||
\param tb 1 to include trimbits, 0 to exclude
|
||||
\returns current threshold value for imod in ev (-1 failed)
|
||||
*/
|
||||
int setThresholdEnergy(int e_eV, int imod=-1, detectorSettings isettings=GET_SETTINGS);
|
||||
int setThresholdEnergy(int e_eV, int imod=-1, detectorSettings isettings=GET_SETTINGS, int tb=1);
|
||||
|
||||
/**
|
||||
get detector settings
|
||||
|
@ -1,11 +1,11 @@
|
||||
//#define SVNPATH ""
|
||||
#define SVNURLLIB "git@git.psi.ch:sls_detectors_software/sls_detector_software.git"
|
||||
//#define SVNREPPATH ""
|
||||
#define SVNREPUUIDLIB "7a0a1ee8734440dc4e1e638d6fec1eaa9d2404ae"
|
||||
//#define SVNREV 0x1348
|
||||
#define SVNREPUUIDLIB "41acb4c1ab89fe85b049c329adb539c3ad5b107a"
|
||||
//#define SVNREV 0x1350
|
||||
//#define SVNKIND ""
|
||||
//#define SVNSCHED ""
|
||||
#define SVNAUTHLIB "Dhanya_Maliakal"
|
||||
#define SVNREVLIB 0x1348
|
||||
#define SVNDATELIB 0x20170411
|
||||
#define SVNREVLIB 0x1350
|
||||
#define SVNDATELIB 0x20170419
|
||||
//
|
||||
|
@ -2886,7 +2886,7 @@ int slsDetector::setModule(int reg, int imod){
|
||||
|
||||
};
|
||||
|
||||
int slsDetector::setModule(sls_detector_module module, int iodelay, int tau, int e_eV, int* gainval, int* offsetval){
|
||||
int slsDetector::setModule(sls_detector_module module, int iodelay, int tau, int e_eV, int* gainval, int* offsetval, int tb){
|
||||
|
||||
int fnum=F_SET_MODULE;
|
||||
int retval;
|
||||
@ -2903,6 +2903,11 @@ int slsDetector::setModule(sls_detector_module module, int iodelay, int tau, int
|
||||
if (thisDetector->onlineFlag==ONLINE_FLAG) {
|
||||
if (connectControl() == OK){
|
||||
controlSocket->SendDataOnly(&fnum,sizeof(fnum));
|
||||
//to exclude trimbits
|
||||
if(!tb) {
|
||||
module.nchan=0;
|
||||
module.nchip=0;
|
||||
}
|
||||
sendModule(&module);
|
||||
|
||||
//not included in module
|
||||
@ -2936,23 +2941,29 @@ int slsDetector::setModule(sls_detector_module module, int iodelay, int tau, int
|
||||
if (ret!=FAIL) {
|
||||
if (detectorModules) {
|
||||
if (imod>=0 && imod<thisDetector->nMod[X]*thisDetector->nMod[Y]) {
|
||||
(detectorModules+imod)->nchan=module.nchan;
|
||||
(detectorModules+imod)->nchip=module.nchip;
|
||||
if(tb) {
|
||||
(detectorModules+imod)->nchan=module.nchan;
|
||||
(detectorModules+imod)->nchip=module.nchip;
|
||||
}
|
||||
(detectorModules+imod)->ndac=module.ndac;
|
||||
(detectorModules+imod)->nadc=module.nadc;
|
||||
thisDetector->nChips=module.nchip;
|
||||
thisDetector->nChans=module.nchan/module.nchip;
|
||||
if(tb) {
|
||||
thisDetector->nChips=module.nchip;
|
||||
thisDetector->nChans=module.nchan/module.nchip;
|
||||
}
|
||||
thisDetector->nDacs=module.ndac;
|
||||
thisDetector->nAdcs=module.nadc;
|
||||
|
||||
if(thisDetector->myDetectorType != JUNGFRAU){
|
||||
for (int ichip=0; ichip<thisDetector->nChips; ichip++) {
|
||||
if (chipregs)
|
||||
chipregs[ichip+thisDetector->nChips*imod]=module.chipregs[ichip];
|
||||
if(tb) {
|
||||
for (int ichip=0; ichip<thisDetector->nChips; ichip++) {
|
||||
if (chipregs)
|
||||
chipregs[ichip+thisDetector->nChips*imod]=module.chipregs[ichip];
|
||||
|
||||
if (chanregs) {
|
||||
for (int i=0; i<thisDetector->nChans; i++) {
|
||||
chanregs[i+ichip*thisDetector->nChans+thisDetector->nChips*thisDetector->nChans*imod]=module.chanregs[ichip*thisDetector->nChans+i];
|
||||
if (chanregs) {
|
||||
for (int i=0; i<thisDetector->nChans; i++) {
|
||||
chanregs[i+ichip*thisDetector->nChans+thisDetector->nChips*thisDetector->nChans*imod]=module.chanregs[ichip*thisDetector->nChans+i];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -3182,11 +3193,11 @@ int slsDetector::getThresholdEnergy(int imod){
|
||||
return thisDetector->currentThresholdEV;
|
||||
};
|
||||
|
||||
int slsDetector::setThresholdEnergy(int e_eV, int imod, detectorSettings isettings){
|
||||
int slsDetector::setThresholdEnergy(int e_eV, int imod, detectorSettings isettings, int tb){
|
||||
|
||||
//currently only for eiger
|
||||
if (thisDetector->myDetectorType == EIGER) {
|
||||
setThresholdEnergyAndSettings(e_eV,isettings);
|
||||
setThresholdEnergyAndSettings(e_eV,isettings,tb);
|
||||
return thisDetector->currentThresholdEV;
|
||||
}
|
||||
|
||||
@ -3226,7 +3237,7 @@ int slsDetector::setThresholdEnergy(int e_eV, int imod, detectorSettings isetti
|
||||
|
||||
|
||||
|
||||
int slsDetector::setThresholdEnergyAndSettings(int e_eV, detectorSettings isettings) {
|
||||
int slsDetector::setThresholdEnergyAndSettings(int e_eV, detectorSettings isettings, int tb) {
|
||||
|
||||
//if settings provided, use that, else use the shared memory variable
|
||||
detectorSettings is = ((isettings != GET_SETTINGS) ? isettings: thisDetector->currentSettings);
|
||||
@ -3292,7 +3303,7 @@ int slsDetector::setThresholdEnergyAndSettings(int e_eV, detectorSettings isetti
|
||||
#endif
|
||||
//read the files
|
||||
myMod=createModule();
|
||||
if (NULL == readSettingsFile(settingsfname,thisDetector->myDetectorType, iodelay, tau, myMod)) {
|
||||
if (NULL == readSettingsFile(settingsfname,thisDetector->myDetectorType, iodelay, tau, myMod, tb)) {
|
||||
if(myMod)deleteModule(myMod);
|
||||
return FAIL;
|
||||
}
|
||||
@ -3327,13 +3338,13 @@ int slsDetector::setThresholdEnergyAndSettings(int e_eV, detectorSettings isetti
|
||||
int tau1 = -1; //not included in the module
|
||||
int iodelay2 = -1; //not included in the module
|
||||
int tau2 = -1; //not included in the module
|
||||
if (NULL == readSettingsFile(settingsfname1,thisDetector->myDetectorType, iodelay1, tau1, myMod1)) {
|
||||
if (NULL == readSettingsFile(settingsfname1,thisDetector->myDetectorType, iodelay1, tau1, myMod1, tb)) {
|
||||
setErrorMask((getErrorMask())|(SETTINGS_FILE_NOT_OPEN));
|
||||
deleteModule(myMod1);
|
||||
deleteModule(myMod2);
|
||||
return FAIL;
|
||||
}
|
||||
if (NULL == readSettingsFile(settingsfname2,thisDetector->myDetectorType, iodelay2, tau2, myMod2)) {
|
||||
if (NULL == readSettingsFile(settingsfname2,thisDetector->myDetectorType, iodelay2, tau2, myMod2, tb)) {
|
||||
setErrorMask((getErrorMask())|(SETTINGS_FILE_NOT_OPEN));
|
||||
deleteModule(myMod1);
|
||||
deleteModule(myMod2);
|
||||
@ -3349,7 +3360,7 @@ int slsDetector::setThresholdEnergyAndSettings(int e_eV, detectorSettings isetti
|
||||
iodelay = iodelay1;
|
||||
|
||||
//interpolate module
|
||||
myMod = interpolateTrim(thisDetector->myDetectorType, myMod1, myMod2, e_eV, trim1, trim2);
|
||||
myMod = interpolateTrim(thisDetector->myDetectorType, myMod1, myMod2, e_eV, trim1, trim2, tb);
|
||||
if (myMod == NULL) {
|
||||
printf("Could not interpolate, different dac values in files\n");
|
||||
setErrorMask((getErrorMask())|(SETTINGS_NOT_SET));
|
||||
@ -3365,7 +3376,7 @@ int slsDetector::setThresholdEnergyAndSettings(int e_eV, detectorSettings isetti
|
||||
|
||||
myMod->module=0;
|
||||
myMod->reg=thisDetector->currentSettings;
|
||||
setModule(*myMod, iodelay, tau, e_eV, 0, 0);
|
||||
setModule(*myMod, iodelay, tau, e_eV, 0, 0, tb);
|
||||
deleteModule(myMod);
|
||||
if (getSettings(-1) != is){
|
||||
printf( "Could not set settings in detector \n" );
|
||||
|
@ -953,10 +953,11 @@ class slsDetector : public slsDetectorUtils, public energyConversion {
|
||||
\param e_eV threashold in eV (detector specific)
|
||||
\param gainval pointer to extra gain values
|
||||
\param offsetval pointer to extra offset values
|
||||
\param tb 1 to include trimbits, 0 to exclude (used for eiger)
|
||||
\returns current register value
|
||||
\sa ::sls_detector_module
|
||||
*/
|
||||
int setModule(sls_detector_module module, int iodelay, int tau, int e_eV, int* gainval=0, int* offsetval=0);
|
||||
int setModule(sls_detector_module module, int iodelay, int tau, int e_eV, int* gainval=0, int* offsetval=0, int tb=1);
|
||||
//virtual int setModule(sls_detector_module module);
|
||||
|
||||
/**
|
||||
@ -987,17 +988,19 @@ class slsDetector : public slsDetectorUtils, public energyConversion {
|
||||
\param e_eV threshold in eV
|
||||
\param imod module number (-1 all)
|
||||
\param isettings ev. change settings
|
||||
\param tb 1 to include trimbits, 0 to exclude
|
||||
\returns current threshold value for imod in ev (-1 failed)
|
||||
*/
|
||||
int setThresholdEnergy(int e_eV, int imod=-1, detectorSettings isettings=GET_SETTINGS);
|
||||
int setThresholdEnergy(int e_eV, int imod=-1, detectorSettings isettings=GET_SETTINGS, int tb=1);
|
||||
|
||||
/**
|
||||
set threshold energy
|
||||
\param e_eV threshold in eV
|
||||
\param isettings ev. change settings
|
||||
\param tb 1 to include trimbits, 0 to exclude
|
||||
\returns OK if successful, else FAIL
|
||||
*/
|
||||
int setThresholdEnergyAndSettings(int e_eV, detectorSettings isettings);
|
||||
int setThresholdEnergyAndSettings(int e_eV, detectorSettings isettings, int tb=1);
|
||||
|
||||
/**
|
||||
get detector settings
|
||||
|
@ -210,7 +210,7 @@ class slsDetectorActions : public virtual slsDetectorBase
|
||||
/* *\/ */
|
||||
/* virtual detectorType getDetectorsType(int pos=-1)=0; */
|
||||
|
||||
virtual int setThresholdEnergy(int, int im=-1, detectorSettings isettings=GET_SETTINGS)=0;
|
||||
virtual int setThresholdEnergy(int, int im=-1, detectorSettings isettings=GET_SETTINGS, int tb=1)=0;
|
||||
virtual int setChannel(int64_t, int ich=-1, int ichip=-1, int imod=-1)=0;
|
||||
|
||||
|
||||
|
@ -429,7 +429,7 @@ class slsDetectorBase : public virtual slsDetectorDefs, public virtual errorDef
|
||||
virtual externalCommunicationMode setExternalCommunicationMode(externalCommunicationMode pol=GET_EXTERNAL_COMMUNICATION_MODE)=0;
|
||||
int setTimingMode(int i=-1){return slsDetectorUsers::getTimingMode( externalCommunicationType( setExternalCommunicationMode(externalCommunicationType( slsDetectorUsers::getTimingMode(i) ) ) ) );};
|
||||
|
||||
virtual int setThresholdEnergy(int e_eV, int imod, detectorSettings isettings=GET_SETTINGS)=0;
|
||||
virtual int setThresholdEnergy(int e_eV, int imod, detectorSettings isettings=GET_SETTINGS, int tb=1)=0;
|
||||
int setThresholdEnergy(int e_eV){return setThresholdEnergy(e_eV,-1);};
|
||||
|
||||
|
||||
|
@ -552,6 +552,10 @@ slsDetectorCommand::slsDetectorCommand(slsDetectorUtils *det) {
|
||||
descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdSettings;
|
||||
i++;
|
||||
|
||||
descrToFuncMap[i].m_pFuncName="thresholdnotb"; //
|
||||
descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdSettings;
|
||||
i++;
|
||||
|
||||
descrToFuncMap[i].m_pFuncName="trimbits"; //
|
||||
descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdSettings;
|
||||
i++;
|
||||
@ -3289,10 +3293,10 @@ string slsDetectorCommand::cmdSettings(int narg, char *args[], int action) {
|
||||
return myDet->getDetectorSettings(myDet->getSettings());
|
||||
} else if (cmd=="threshold") {
|
||||
if (action==PUT_ACTION) {
|
||||
detectorType type = myDet->getDetectorsType();
|
||||
if (!sscanf(args[1],"%d",&val)) {
|
||||
return string("invalid threshold value");
|
||||
}
|
||||
detectorType type = myDet->getDetectorsType();
|
||||
if (type != EIGER || (type == EIGER && narg<=2)) {
|
||||
myDet->setThresholdEnergy(val);
|
||||
} else {
|
||||
@ -3304,6 +3308,25 @@ string slsDetectorCommand::cmdSettings(int narg, char *args[], int action) {
|
||||
}
|
||||
sprintf(ans,"%d",myDet->getThresholdEnergy());
|
||||
return string(ans);
|
||||
} else if (cmd=="thresholdnotb") {
|
||||
if (action==PUT_ACTION) {
|
||||
if (!sscanf(args[1],"%d",&val)) {
|
||||
return string("invalid threshold value");
|
||||
}
|
||||
detectorType type = myDet->getDetectorsType();
|
||||
if (type != EIGER)
|
||||
return string("not implemented for this detector");
|
||||
if (narg<=2) {
|
||||
myDet->setThresholdEnergy(val, -1, GET_SETTINGS, 0);
|
||||
} else {
|
||||
detectorSettings sett= myDet->getDetectorSettings(string(args[2]));
|
||||
if(sett == -1)
|
||||
return string("invalid settings value");
|
||||
myDet->setThresholdEnergy(val, -1, sett, 0);
|
||||
}
|
||||
}
|
||||
sprintf(ans,"%d",myDet->getThresholdEnergy());
|
||||
return string(ans);
|
||||
} else if (cmd=="trimbits") {
|
||||
if (narg>=2) {
|
||||
string sval=string(args[1]);
|
||||
@ -3386,7 +3409,8 @@ string slsDetectorCommand::helpSettings(int narg, char *args[], int action) {
|
||||
if (action==PUT_ACTION || action==HELP_ACTION) {
|
||||
os << "settings s \n sets the settings of the detector - can be standard, fast, highgain, dynamicgain, lowgain, mediumgain, veryhighgain"
|
||||
"lownoise, dynamichg0,fixgain1,fixgain2,forceswitchg1, forceswitchg2"<< std::endl;
|
||||
os << "threshold eV\n sets the detector threshold in eV"<< std::endl;
|
||||
os << "threshold eV [sett]\n sets the detector threshold in eV. If sett is provided for eiger, uses settings sett"<< std::endl;
|
||||
os << "thresholdnotb eV [sett]\n sets the detector threshold in eV without loading trimbits. If sett is provided for eiger, uses settings sett"<< std::endl;
|
||||
os << "trimbits fname\n loads the trimfile fname to the detector. If no extension is specified, the serial number of each module will be attached."<< std::endl;
|
||||
os << "trim:mode fname\n trims the detector according to mode (can be noise, beam, improve, fix) and saves the resulting trimbits to file fname."<< std::endl;
|
||||
os << "trimval i \n sets all the trimbits to i" << std::endl;
|
||||
|
@ -421,7 +421,7 @@ class slsDetectorUtils : public slsDetectorActions, public postProcessing {
|
||||
// double* convertAngles(){return convertAngles(currentPosition);};
|
||||
// virtual double* convertAngles(double pos)=0;
|
||||
|
||||
virtual int setThresholdEnergy(int, int im=-1, detectorSettings isettings=GET_SETTINGS)=0;
|
||||
virtual int setThresholdEnergy(int, int im=-1, detectorSettings isettings=GET_SETTINGS, int tb=1)=0;
|
||||
virtual int setChannel(int64_t, int ich=-1, int ichip=-1, int imod=-1)=0;
|
||||
|
||||
virtual double getRateCorrectionTau()=0;
|
||||
|
@ -138,7 +138,7 @@ int energyConversion::writeCalibrationFile(string fname, int *gain, int *offset)
|
||||
|
||||
|
||||
|
||||
slsDetectorDefs::sls_detector_module* energyConversion::interpolateTrim(detectorType myDetectorType, sls_detector_module* a, sls_detector_module* b, const int energy, const int e1, const int e2){
|
||||
slsDetectorDefs::sls_detector_module* energyConversion::interpolateTrim(detectorType myDetectorType, sls_detector_module* a, sls_detector_module* b, const int energy, const int e1, const int e2, int tb){
|
||||
// only implemented for eiger currently (in terms of which dacs)
|
||||
if(myDetectorType != EIGER) {
|
||||
printf("Interpolation of Trim values not implemented for this detector!\n");
|
||||
@ -168,8 +168,10 @@ slsDetectorDefs::sls_detector_module* energyConversion::interpolateTrim(detector
|
||||
}
|
||||
|
||||
//Interpolate all trimbits
|
||||
for (int i = 0; i<myMod->nchan; i++)
|
||||
myMod->chanregs[i] = linearInterpolation(energy, e1, e2, a->chanregs[i], b->chanregs[i]);
|
||||
if(tb) {
|
||||
for (int i = 0; i<myMod->nchan; i++)
|
||||
myMod->chanregs[i] = linearInterpolation(energy, e1, e2, a->chanregs[i], b->chanregs[i]);
|
||||
}
|
||||
return myMod;
|
||||
}
|
||||
|
||||
@ -180,7 +182,7 @@ slsDetectorDefs::sls_detector_module* energyConversion::interpolateTrim(detector
|
||||
/* I/O */
|
||||
|
||||
|
||||
slsDetectorDefs::sls_detector_module* energyConversion::readSettingsFile(string fname, detectorType myDetectorType, int& iodelay, int& tau, sls_detector_module* myMod){
|
||||
slsDetectorDefs::sls_detector_module* energyConversion::readSettingsFile(string fname, detectorType myDetectorType, int& iodelay, int& tau, sls_detector_module* myMod, int tb){
|
||||
|
||||
|
||||
|
||||
@ -372,19 +374,21 @@ slsDetectorDefs::sls_detector_module* energyConversion::readSettingsFile(string
|
||||
infile.read((char*) myMod->dacs,sizeof(dacs_t)*(myMod->ndac));
|
||||
infile.read((char*)&iodelay,sizeof(iodelay));
|
||||
infile.read((char*)&tau,sizeof(tau));
|
||||
infile.read((char*) myMod->chanregs,sizeof(int)*(myMod->nchan));
|
||||
#ifdef VERBOSE
|
||||
for(int i=0;i<myMod->ndac;i++)
|
||||
printf( "dac %d:%d \n", i, myMod->dacs[i] );
|
||||
printf( "iodelay:%d \n", iodelay );
|
||||
printf( "tau:%d \n", tau );
|
||||
#endif
|
||||
if(infile.eof()){
|
||||
printf( "Error, could not load trimbits end of file reached: %s \n\n", myfname.c_str() );
|
||||
if (nflag)
|
||||
deleteModule(myMod);
|
||||
if(tb) {
|
||||
infile.read((char*) myMod->chanregs,sizeof(int)*(myMod->nchan));
|
||||
if(infile.eof()){
|
||||
printf( "Error, could not load trimbits end of file reached: %s \n\n", myfname.c_str() );
|
||||
if (nflag)
|
||||
deleteModule(myMod);
|
||||
|
||||
return NULL;
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
infile.close();
|
||||
strcpy(settingsFile,fname.c_str());
|
||||
|
@ -88,9 +88,10 @@ class energyConversion
|
||||
\param energy energy to trim at
|
||||
\param e1 reference trim value
|
||||
\param e2 reference trim value
|
||||
\param tb 1 to include trimbits, 0 to exclude (used for eiger)
|
||||
\returns the pointer to the module structure with interpolated values or NULL if error
|
||||
*/
|
||||
sls_detector_module* interpolateTrim(detectorType myDetectorType, sls_detector_module* a, sls_detector_module* b, const int energy, const int e1, const int e2);
|
||||
sls_detector_module* interpolateTrim(detectorType myDetectorType, sls_detector_module* a, sls_detector_module* b, const int energy, const int e1, const int e2, int tb=1);
|
||||
|
||||
|
||||
|
||||
@ -103,10 +104,11 @@ class energyConversion
|
||||
\param iodelay io delay (detector specific)
|
||||
\param tau tau (detector specific)
|
||||
\param myMod pointer to the module structure which has to be set. <BR> If it is NULL a new module structure will be created
|
||||
\param tb 1 to include trimbits, 0 to exclude (used for eiger)
|
||||
\returns the pointer to myMod or NULL if reading the file failed
|
||||
*/
|
||||
|
||||
sls_detector_module* readSettingsFile(string fname, detectorType myDetectorType, int& iodelay, int& tau, sls_detector_module* myMod=NULL);
|
||||
sls_detector_module* readSettingsFile(string fname, detectorType myDetectorType, int& iodelay, int& tau, sls_detector_module* myMod=NULL, int tb=1);
|
||||
|
||||
/**
|
||||
writes a trim/settings file
|
||||
|
@ -129,8 +129,8 @@ public:
|
||||
Task(func2_t <char*,slsDetector,networkParameter,string,string>* t): m1(0),m2(0),m3(0),m4(0),m5(0),m6(0),m7(0),m8(0),m9(0),m10(0),m11(t),m12(0),m13(0){};
|
||||
/* Return: void, Param: none */
|
||||
Task(func00_t <void,slsDetector>* t): m1(0),m2(0),m3(0),m4(0),m5(0),m6(0),m7(0),m8(0),m9(0),m10(0),m11(0),m12(t),m13(0){};
|
||||
/* Return: int, Param: int,int,detectorSettings */
|
||||
Task(func3_t <int,slsDetector,int,int,detectorSettings,int>* t): m1(0),m2(0),m3(0),m4(0),m5(0),m6(0),m7(0),m8(0),m9(0),m10(0),m11(0),m12(0),m13(t){};
|
||||
/* Return: int, Param: int,int,detectorSettings,int */
|
||||
Task(func4_t <int,slsDetector,int,int,detectorSettings,int,int>* t): m1(0),m2(0),m3(0),m4(0),m5(0),m6(0),m7(0),m8(0),m9(0),m10(0),m11(0),m12(0),m13(t){};
|
||||
|
||||
|
||||
|
||||
@ -178,7 +178,7 @@ private:
|
||||
/* Return: void, Param: none */
|
||||
func00_t <void,slsDetector>* m12;
|
||||
/* Return: int, Param: int,int,detectorSettings */
|
||||
func3_t <int,slsDetector,int,int,detectorSettings,int>* m13;
|
||||
func4_t <int,slsDetector,int,int,detectorSettings,int,int>* m13;
|
||||
};
|
||||
|
||||
|
||||
|
@ -1,9 +1,9 @@
|
||||
Path: slsDetectorsPackage/slsReceiverSoftware
|
||||
URL: origin git@git.psi.ch:sls_detectors_software/sls_receiver_software.git
|
||||
Repository Root: origin git@git.psi.ch:sls_detectors_software/sls_receiver_software.git
|
||||
Repsitory UUID: db080a125daed36a1fa85b00df7a239e22ae5130
|
||||
Revision: 521
|
||||
Branch: 2.3.1
|
||||
Repsitory UUID: 239415ea0db2b9cdccd9bce80f0c78216115ffea
|
||||
Revision: 527
|
||||
Branch: 2.3.2
|
||||
Last Changed Author: Dhanya_Maliakal
|
||||
Last Changed Rev: 521
|
||||
Last Changed Date: 2017-04-11 13:39:35 +0200
|
||||
Last Changed Rev: 527
|
||||
Last Changed Date: 2017-04-20 08:26:16 +0200
|
||||
|
@ -21,7 +21,7 @@
|
||||
#include "logger.h"
|
||||
|
||||
|
||||
class UDPInterface {
|
||||
class UDPInterface: public Logger {
|
||||
|
||||
|
||||
/* abstract class that defines the UDP interface of an sls detector data receiver.
|
||||
|
@ -832,6 +832,7 @@ private:
|
||||
pthread_mutex_t progressMutex;
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
@ -81,7 +81,7 @@ using namespace std;
|
||||
#define DEFAULT_BACKLOG 5
|
||||
#define DEFAULT_UDP_PORTNO 50001
|
||||
#define DEFAULT_GUI_PORTNO 65000
|
||||
#define DEFAULT_ZMQ_PORTNO 70001
|
||||
#define DEFAULT_ZMQ_PORTNO 40001
|
||||
|
||||
|
||||
|
||||
@ -111,8 +111,8 @@ enum communicationProtocol{
|
||||
total_sent(0),// sender (client): where to? ip
|
||||
header_packet_size(0)
|
||||
{
|
||||
memset(&serverAddress, 0, sizeof(serverAddress));
|
||||
memset(&clientAddress, 0, sizeof(clientAddress));
|
||||
memset(&serverAddress, 0,sizeof(serverAddress));
|
||||
memset(&clientAddress,0,sizeof(clientAddress));
|
||||
// strcpy(hostname,host_ip_or_name);
|
||||
|
||||
strcpy(lastClientIP,"none");
|
||||
|
@ -1,11 +1,11 @@
|
||||
//#define SVNPATH ""
|
||||
#define SVNURL "git@git.psi.ch:sls_detectors_software/sls_receiver_software.git"
|
||||
//#define SVNREPPATH ""
|
||||
#define SVNREPUUID "db080a125daed36a1fa85b00df7a239e22ae5130"
|
||||
//#define SVNREV 0x521
|
||||
#define SVNREPUUID "239415ea0db2b9cdccd9bce80f0c78216115ffea"
|
||||
//#define SVNREV 0x527
|
||||
//#define SVNKIND ""
|
||||
//#define SVNSCHED ""
|
||||
#define SVNAUTH "Dhanya_Maliakal"
|
||||
#define SVNREV 0x521
|
||||
#define SVNDATE 0x20170411
|
||||
#define SVNREV 0x527
|
||||
#define SVNDATE 0x20170420
|
||||
//
|
||||
|
@ -1,5 +1,6 @@
|
||||
//#ifndef __LOG_H__
|
||||
//#define __LOG_H__
|
||||
#ifndef __LOG_H__
|
||||
#define __LOG_H__
|
||||
|
||||
|
||||
#include <sstream>
|
||||
#include <string>
|
||||
@ -13,237 +14,76 @@
|
||||
#elif VERYVERBOSE
|
||||
#define FILELOG_MAX_LEVEL logDEBUG4
|
||||
#elif VERBOSE
|
||||
#define FILELOG_MAX_LEVEL logDEBUG
|
||||
#define FILELOG_MAX_LEVEL logDEBUG1
|
||||
#endif
|
||||
|
||||
#ifndef FILELOG_MAX_LEVEL
|
||||
#define FILELOG_MAX_LEVEL logINFO
|
||||
#endif
|
||||
|
||||
#define REPORT_LEVEL logDEBUG5
|
||||
|
||||
#define STRINGIFY(x) #x
|
||||
#define TOSTRING(x) STRINGIFY(x)
|
||||
#define MYCONCAT(x,y)
|
||||
#define __AT__ string(__FILE__) + string("::") + string(__func__) + string("(): ")
|
||||
#define __SHORT_FORM_OF_FILE__ \
|
||||
(strrchr(__FILE__,'/') \
|
||||
? strrchr(__FILE__,'/')+1 \
|
||||
: __FILE__ \
|
||||
)
|
||||
#define __SHORT_AT__ string(__SHORT_FORM_OF_FILE__) + string("::") + string(__func__) + string("(): ")
|
||||
|
||||
//":" TOSTRING(__LINE__)
|
||||
|
||||
/*
|
||||
void error(const char *location, const char *msg){
|
||||
printf("Error at %s: %s\n", location, msg);
|
||||
}
|
||||
*/
|
||||
|
||||
inline std::string NowTime();
|
||||
|
||||
enum TLogLevel {logERROR, logWARNING, logINFO, logDEBUG, logDEBUG1, logDEBUG2, logDEBUG3, logDEBUG4, logDEBUG5};
|
||||
|
||||
template <typename T> class Log{
|
||||
public:
|
||||
Log();
|
||||
virtual ~Log();
|
||||
std::ostringstream& Get(TLogLevel level = logINFO);
|
||||
static TLogLevel& ReportingLevel();
|
||||
static std::string ToString(TLogLevel level);
|
||||
static TLogLevel FromString(const std::string& level);
|
||||
protected:
|
||||
std::ostringstream os;
|
||||
TLogLevel lev;
|
||||
private:
|
||||
Log(const Log&);
|
||||
Log& operator =(const Log&);
|
||||
};
|
||||
|
||||
|
||||
class Output2FILE {
|
||||
public:
|
||||
static FILE*& Stream();
|
||||
static void Output(const std::string& msg);
|
||||
static void Output(const std::string& msg, TLogLevel level);
|
||||
};
|
||||
|
||||
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__)
|
||||
# if defined (BUILDING_FILELOG_DLL)
|
||||
# define FILELOG_DECLSPEC __declspec (dllexport)
|
||||
# elif defined (USING_FILELOG_DLL)
|
||||
# define FILELOG_DECLSPEC __declspec (dllimport)
|
||||
# else
|
||||
# define FILELOG_DECLSPEC
|
||||
# endif // BUILDING_DBSIMPLE_DLL
|
||||
#else
|
||||
# define FILELOG_DECLSPEC
|
||||
#endif // _WIN32
|
||||
|
||||
class FILELOG_DECLSPEC FILELog : public Log<Output2FILE> {};
|
||||
//typedef Log<Output2FILE> FILELog;
|
||||
|
||||
#ifdef REST
|
||||
#define FILE_LOG(level) \
|
||||
if (level > FILELOG_MAX_LEVEL) ; \
|
||||
else if (level > FILELog::ReportingLevel() || !Output2FILE::Stream()) ; \
|
||||
else FILELog().Get(level)
|
||||
#else
|
||||
#define FILE_LOG(level) \
|
||||
if (level > FILELOG_MAX_LEVEL) ; \
|
||||
else if (level > FILELog::ReportingLevel() || !Output2FILE::Stream()) ; \
|
||||
else FILELog().Get(level)
|
||||
#endif
|
||||
|
||||
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__)
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
|
||||
|
||||
inline std::string NowTime()
|
||||
|
||||
{
|
||||
const int MAX_LEN = 200;
|
||||
char buffer[MAX_LEN];
|
||||
if (GetTimeFormatA(LOCALE_USER_DEFAULT, 0, 0,
|
||||
"HH':'mm':'ss", buffer, MAX_LEN) == 0)
|
||||
return "Error in NowTime()";
|
||||
|
||||
char result[100] = {0};
|
||||
static DWORD first = GetTickCount();
|
||||
sprintf(result, "%s.%03ld", buffer, (long)(GetTickCount() - first) % 1000);
|
||||
return result;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
#include <sys/time.h>
|
||||
|
||||
inline std::string NowTime()
|
||||
{
|
||||
char buffer[11];
|
||||
const int buffer_len = sizeof(buffer);
|
||||
time_t t;
|
||||
time(&t);
|
||||
tm r = {0};
|
||||
strftime(buffer, buffer_len, "%X", localtime_r(&t, &r));
|
||||
buffer[buffer_len - 1] = 0;
|
||||
struct timeval tv;
|
||||
gettimeofday(&tv, 0);
|
||||
char result[100];
|
||||
const int result_len = sizeof(result);
|
||||
snprintf(result, result_len, "%s.%03ld", buffer, (long)tv.tv_usec / 1000);
|
||||
result[result_len - 1] = 0;
|
||||
return result;
|
||||
}
|
||||
|
||||
#endif //WIN32
|
||||
class Logger {
|
||||
public:
|
||||
Logger(){};
|
||||
|
||||
enum TLogLevel {logERROR, logWARNING, logINFO, logDEBUG1, logDEBUG2, logDEBUG3, logDEBUG4, logDEBUG5};
|
||||
|
||||
|
||||
template <typename T> Log<T>::Log():lev(logDEBUG){}
|
||||
static void FILE_LOG(TLogLevel level, char const* msg)
|
||||
{
|
||||
|
||||
template <typename T> std::ostringstream& Log<T>::Get(TLogLevel level)
|
||||
{
|
||||
lev = level;
|
||||
os << "- " << NowTime();
|
||||
os << " " << ToString(level) << ": ";
|
||||
if (level > logDEBUG)
|
||||
os << std::string(level - logDEBUG, '\t');
|
||||
return os;
|
||||
}
|
||||
if(level > FILELOG_MAX_LEVEL) return;
|
||||
|
||||
template <typename T> Log<T>::~Log()
|
||||
{
|
||||
os << std::endl;
|
||||
#ifdef REST
|
||||
T::Output( os.str());
|
||||
#else
|
||||
T::Output( os.str(),lev);
|
||||
#endif
|
||||
}
|
||||
|
||||
template <typename T> TLogLevel& Log<T>::ReportingLevel()
|
||||
{
|
||||
static TLogLevel reportingLevel = logDEBUG5;
|
||||
return reportingLevel;
|
||||
}
|
||||
|
||||
template <typename T> std::string Log<T>::ToString(TLogLevel level)
|
||||
{
|
||||
static const char* const buffer[] = {"ERROR", "WARNING", "INFO", "DEBUG", "DEBUG1", "DEBUG2", "DEBUG3", "DEBUG4","DEBUG5"};
|
||||
return buffer[level];
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
TLogLevel Log<T>::FromString(const std::string& level)
|
||||
{
|
||||
if (level == "DEBUG5")
|
||||
return logDEBUG5;
|
||||
if (level == "DEBUG4")
|
||||
return logDEBUG4;
|
||||
if (level == "DEBUG3")
|
||||
return logDEBUG3;
|
||||
if (level == "DEBUG2")
|
||||
return logDEBUG2;
|
||||
if (level == "DEBUG1")
|
||||
return logDEBUG1;
|
||||
if (level == "DEBUG")
|
||||
return logDEBUG;
|
||||
if (level == "INFO")
|
||||
return logINFO;
|
||||
if (level == "WARNING")
|
||||
return logWARNING;
|
||||
if (level == "ERROR")
|
||||
return logERROR;
|
||||
Log<T>().Get(logWARNING) << "Unknown logging level '" << level << "'. Using INFO level as default.";
|
||||
return logINFO;
|
||||
}
|
||||
char buffer[11];
|
||||
const int buffer_len = sizeof(buffer);
|
||||
time_t t;
|
||||
time(&t);
|
||||
tm r = {0};
|
||||
strftime(buffer, buffer_len, "%X", localtime_r(&t, &r));
|
||||
buffer[buffer_len - 1] = 0;
|
||||
struct timeval tv;
|
||||
gettimeofday(&tv, 0);
|
||||
char result[100];
|
||||
const int result_len = sizeof(result);
|
||||
snprintf(result, result_len, "%s.%03ld", buffer, (long)tv.tv_usec / 1000);
|
||||
result[result_len - 1] = 0;
|
||||
|
||||
|
||||
inline FILE*& Output2FILE::Stream()
|
||||
{
|
||||
static FILE* pStream = stderr;
|
||||
return pStream;
|
||||
}
|
||||
/*
|
||||
const char* const slevel[] = {"ERROR", "WARNING", "INFO", "DEBUG", "DEBUG1", "DEBUG2", "DEBUG3", "DEBUG4","DEBUG5"};
|
||||
ostringstream os;
|
||||
os << "- " << string(result);
|
||||
os << " " << string(slevel[level]) << ": ";
|
||||
// if (level > logDEBUG)
|
||||
// os << std::string(level - logDEBUG, '\t');
|
||||
os << msg;
|
||||
string smessage = os.str();
|
||||
|
||||
inline void Output2FILE::Output(const std::string& msg)
|
||||
{
|
||||
FILE* pStream = Stream();
|
||||
if (!pStream)
|
||||
return;
|
||||
fprintf(pStream, "%s", msg.c_str());
|
||||
fflush(pStream);
|
||||
}
|
||||
switch(level){
|
||||
case logERROR: cprintf(RED BOLD, "%s\n", smessage.c_str()); break;
|
||||
case logWARNING: cprintf(YELLOW BOLD, "%s\n", smessage.c_str()); break;
|
||||
case logINFO: cprintf(GRAY, "%s\n", smessage.c_str()); break;
|
||||
default: break;
|
||||
}
|
||||
*/
|
||||
|
||||
inline void Output2FILE::Output(const std::string& msg, TLogLevel level)
|
||||
{
|
||||
FILE* pStream = Stream();
|
||||
if (!pStream)
|
||||
return;
|
||||
bool out = true;
|
||||
switch(level){
|
||||
case logERROR: cprintf(RED BOLD,"%s",msg.c_str()); break;
|
||||
case logWARNING: cprintf(YELLOW BOLD,"%s",msg.c_str()); break;
|
||||
case logINFO: cprintf(GRAY,"%s",msg.c_str());break;
|
||||
// case logINFO: cprintf(DARKGRAY BOLD,"%s",msg.c_str());break;
|
||||
default: fprintf(pStream,"%s",msg.c_str()); out = false; break;
|
||||
}
|
||||
fflush(out ? stdout : pStream);
|
||||
}
|
||||
|
||||
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__)
|
||||
# if defined (BUILDING_FILELOG_DLL)
|
||||
# define FILELOG_DECLSPEC __declspec (dllexport)
|
||||
# elif defined (USING_FILELOG_DLL)
|
||||
# define FILELOG_DECLSPEC __declspec (dllimport)
|
||||
# else
|
||||
# define FILELOG_DECLSPEC
|
||||
# endif // BUILDING_DBSIMPLE_DLL
|
||||
#else
|
||||
# define FILELOG_DECLSPEC
|
||||
#endif // _WIN32
|
||||
switch(level){
|
||||
case logERROR: cprintf(RED BOLD, "- %s ERROR: %s \n", result, msg); break;
|
||||
case logWARNING: cprintf(YELLOW BOLD,"- %s WARNING: %s \n", result, msg); break;
|
||||
case logINFO: cprintf(GRAY, "- %s INFO: %s \n", result, msg); break;
|
||||
default: cprintf(GRAY, "- %s DEBUG: %s \n", result, msg); break;
|
||||
}
|
||||
|
||||
|
||||
fflush(stdout);
|
||||
}
|
||||
|
||||
//#endif //__LOG_H__
|
||||
};
|
||||
|
||||
|
||||
#endif //__LOG_H__
|
||||
|
@ -18,7 +18,7 @@
|
||||
*@short creates the UDP and TCP class objects
|
||||
*/
|
||||
|
||||
class slsReceiver : private virtual slsReceiverDefs {
|
||||
class slsReceiver : public Logger, private virtual slsReceiverDefs {
|
||||
|
||||
public:
|
||||
/**
|
||||
|
@ -17,7 +17,7 @@
|
||||
*@short interface between receiver and client
|
||||
*/
|
||||
|
||||
class slsReceiverTCPIPInterface : private virtual slsReceiverDefs {
|
||||
class slsReceiverTCPIPInterface : public Logger, private virtual slsReceiverDefs {
|
||||
|
||||
public:
|
||||
/**
|
||||
|
@ -19,7 +19,6 @@ using namespace std;
|
||||
* They access local cache of configuration or detector parameters *******
|
||||
*************************************************************************/
|
||||
UDPBaseImplementation::UDPBaseImplementation(){
|
||||
FILE_LOG(logDEBUG) << __AT__ << " starting";
|
||||
|
||||
initializeMembers();
|
||||
|
||||
@ -33,9 +32,7 @@ UDPBaseImplementation::UDPBaseImplementation(){
|
||||
}
|
||||
|
||||
void UDPBaseImplementation::initializeMembers(){
|
||||
FILE_LOG(logDEBUG) << __AT__ << " starting";
|
||||
|
||||
FILE_LOG(logDEBUG) << "Info: Initializing base members";
|
||||
//**detector parameters***
|
||||
myDetectorType = GENERIC;
|
||||
strcpy(detHostname,"");
|
||||
@ -93,7 +90,6 @@ UDPBaseImplementation::~UDPBaseImplementation(){}
|
||||
|
||||
/**initial parameters***/
|
||||
char *UDPBaseImplementation::getDetectorHostname() const{
|
||||
FILE_LOG(logDEBUG) << __AT__ << " starting";
|
||||
|
||||
//not initialized
|
||||
if(!strlen(detHostname))
|
||||
@ -106,7 +102,6 @@ char *UDPBaseImplementation::getDetectorHostname() const{
|
||||
}
|
||||
|
||||
int UDPBaseImplementation::getFlippedData(int axis) const{
|
||||
FILE_LOG(logDEBUG) << __AT__ << " starting";
|
||||
if(axis<0 || axis > 1) return -1;
|
||||
return flippedData[axis];
|
||||
}
|
||||
@ -114,7 +109,6 @@ int UDPBaseImplementation::getFlippedData(int axis) const{
|
||||
|
||||
/***file parameters***/
|
||||
char *UDPBaseImplementation::getFileName() const{
|
||||
FILE_LOG(logDEBUG) << __AT__ << " starting";
|
||||
|
||||
//not initialized
|
||||
if(!strlen(fileName))
|
||||
@ -127,7 +121,6 @@ char *UDPBaseImplementation::getFileName() const{
|
||||
}
|
||||
|
||||
char *UDPBaseImplementation::getFilePath() const{
|
||||
FILE_LOG(logDEBUG) << __AT__ << " starting";
|
||||
|
||||
//not initialized
|
||||
if(!strlen(filePath))
|
||||
@ -139,25 +132,24 @@ char *UDPBaseImplementation::getFilePath() const{
|
||||
return output;
|
||||
}
|
||||
|
||||
uint64_t UDPBaseImplementation::getFileIndex() const{ FILE_LOG(logDEBUG) << __AT__ << " starting"; return fileIndex;}
|
||||
uint64_t UDPBaseImplementation::getFileIndex() const{ return fileIndex;}
|
||||
|
||||
int UDPBaseImplementation::getScanTag() const{ FILE_LOG(logDEBUG) << __AT__ << " starting"; return scanTag;}
|
||||
int UDPBaseImplementation::getScanTag() const{ return scanTag;}
|
||||
|
||||
bool UDPBaseImplementation::getFrameIndexEnable() const{ FILE_LOG(logDEBUG) << __AT__ << " starting"; return frameIndexEnable;}
|
||||
bool UDPBaseImplementation::getFrameIndexEnable() const{ return frameIndexEnable;}
|
||||
|
||||
bool UDPBaseImplementation::getFileWriteEnable() const{ FILE_LOG(logDEBUG) << __AT__ << " starting"; return fileWriteEnable;}
|
||||
bool UDPBaseImplementation::getFileWriteEnable() const{ return fileWriteEnable;}
|
||||
|
||||
bool UDPBaseImplementation::getOverwriteEnable() const{ FILE_LOG(logDEBUG) << __AT__ << " starting"; return overwriteEnable;}
|
||||
bool UDPBaseImplementation::getOverwriteEnable() const{ return overwriteEnable;}
|
||||
|
||||
bool UDPBaseImplementation::getDataCompressionEnable() const{ FILE_LOG(logDEBUG) << __AT__ << " starting"; return dataCompressionEnable;}
|
||||
bool UDPBaseImplementation::getDataCompressionEnable() const{ return dataCompressionEnable;}
|
||||
|
||||
/***acquisition count parameters***/
|
||||
uint64_t UDPBaseImplementation::getTotalFramesCaught() const{ FILE_LOG(logDEBUG) << __AT__ << " starting"; return (totalPacketsCaught/packetsPerFrame);}
|
||||
uint64_t UDPBaseImplementation::getTotalFramesCaught() const{ return (totalPacketsCaught/packetsPerFrame);}
|
||||
|
||||
uint64_t UDPBaseImplementation::getFramesCaught() const{ FILE_LOG(logDEBUG) << __AT__ << " starting"; return (packetsCaught/packetsPerFrame);}
|
||||
uint64_t UDPBaseImplementation::getFramesCaught() const{ return (packetsCaught/packetsPerFrame);}
|
||||
|
||||
int64_t UDPBaseImplementation::getAcquisitionIndex() const{
|
||||
FILE_LOG(logDEBUG) << __AT__ << " starting";
|
||||
|
||||
if(!totalPacketsCaught)
|
||||
return -1;
|
||||
@ -166,12 +158,12 @@ int64_t UDPBaseImplementation::getAcquisitionIndex() const{
|
||||
|
||||
|
||||
/***connection parameters***/
|
||||
uint32_t UDPBaseImplementation::getUDPPortNumber() const{ FILE_LOG(logDEBUG) << __AT__ << " starting"; return udpPortNum[0];}
|
||||
uint32_t UDPBaseImplementation::getUDPPortNumber() const{ return udpPortNum[0];}
|
||||
|
||||
uint32_t UDPBaseImplementation::getUDPPortNumber2() const{ FILE_LOG(logDEBUG) << __AT__ << " starting"; return udpPortNum[1];}
|
||||
uint32_t UDPBaseImplementation::getUDPPortNumber2() const{ return udpPortNum[1];}
|
||||
|
||||
char *UDPBaseImplementation::getEthernetInterface() const{
|
||||
FILE_LOG(logDEBUG) << __AT__ << " starting";
|
||||
|
||||
|
||||
char* output = new char[MAX_STR_LENGTH]();
|
||||
strcpy(output,eth);
|
||||
@ -181,30 +173,30 @@ char *UDPBaseImplementation::getEthernetInterface() const{
|
||||
|
||||
|
||||
/***acquisition parameters***/
|
||||
int UDPBaseImplementation::getShortFrameEnable() const{ FILE_LOG(logDEBUG) << __AT__ << " starting"; return shortFrameEnable;}
|
||||
int UDPBaseImplementation::getShortFrameEnable() const{ return shortFrameEnable;}
|
||||
|
||||
uint32_t UDPBaseImplementation::getFrameToGuiFrequency() const{ FILE_LOG(logDEBUG) << __AT__ << " starting"; return frameToGuiFrequency;}
|
||||
uint32_t UDPBaseImplementation::getFrameToGuiFrequency() const{ return frameToGuiFrequency;}
|
||||
|
||||
uint32_t UDPBaseImplementation::getFrameToGuiTimer() const{ FILE_LOG(logDEBUG) << __AT__ << " starting"; return frameToGuiTimerinMS;}
|
||||
uint32_t UDPBaseImplementation::getFrameToGuiTimer() const{ return frameToGuiTimerinMS;}
|
||||
|
||||
uint32_t UDPBaseImplementation::getDataStreamEnable() const{ FILE_LOG(logDEBUG) << __AT__ << " starting"; return dataStreamEnable;}
|
||||
uint32_t UDPBaseImplementation::getDataStreamEnable() const{ return dataStreamEnable;}
|
||||
|
||||
uint64_t UDPBaseImplementation::getAcquisitionPeriod() const{ FILE_LOG(logDEBUG) << __AT__ << " starting"; return acquisitionPeriod;}
|
||||
uint64_t UDPBaseImplementation::getAcquisitionPeriod() const{ return acquisitionPeriod;}
|
||||
|
||||
uint64_t UDPBaseImplementation::getAcquisitionTime() const{ FILE_LOG(logDEBUG) << __AT__ << " starting"; return acquisitionTime;}
|
||||
uint64_t UDPBaseImplementation::getAcquisitionTime() const{ return acquisitionTime;}
|
||||
|
||||
uint64_t UDPBaseImplementation::getNumberOfFrames() const{ FILE_LOG(logDEBUG) << __AT__ << " starting"; return numberOfFrames;}
|
||||
uint64_t UDPBaseImplementation::getNumberOfFrames() const{ return numberOfFrames;}
|
||||
|
||||
uint32_t UDPBaseImplementation::getDynamicRange() const{ FILE_LOG(logDEBUG) << __AT__ << " starting"; return dynamicRange;}
|
||||
uint32_t UDPBaseImplementation::getDynamicRange() const{ return dynamicRange;}
|
||||
|
||||
bool UDPBaseImplementation::getTenGigaEnable() const{ FILE_LOG(logDEBUG) << __AT__ << " starting"; return tengigaEnable;}
|
||||
bool UDPBaseImplementation::getTenGigaEnable() const{ return tengigaEnable;}
|
||||
|
||||
uint32_t UDPBaseImplementation::getFifoDepth() const{ FILE_LOG(logDEBUG) << __AT__ << " starting"; return fifoDepth;}
|
||||
uint32_t UDPBaseImplementation::getFifoDepth() const{ return fifoDepth;}
|
||||
|
||||
/***receiver status***/
|
||||
slsReceiverDefs::runStatus UDPBaseImplementation::getStatus() const{ FILE_LOG(logDEBUG) << __AT__ << " starting"; return status;}
|
||||
slsReceiverDefs::runStatus UDPBaseImplementation::getStatus() const{ return status;}
|
||||
|
||||
int UDPBaseImplementation::getActivate() const{FILE_LOG(logDEBUG) << __AT__ << " starting"; return activated;}
|
||||
int UDPBaseImplementation::getActivate() const{ return activated;}
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
@ -214,29 +206,32 @@ int UDPBaseImplementation::getActivate() const{FILE_LOG(logDEBUG) << __AT__ << "
|
||||
|
||||
/**initial parameters***/
|
||||
void UDPBaseImplementation::configure(map<string, string> config_map){
|
||||
FILE_LOG(logWARNING) << __AT__ << " doing nothing...";
|
||||
FILE_LOG(logERROR) << __AT__ << " must be overridden by child classes";
|
||||
FILE_LOG(logERROR, " must be overridden by child classes");
|
||||
}
|
||||
|
||||
void UDPBaseImplementation::setFlippedData(int axis, int enable){
|
||||
FILE_LOG(logDEBUG) << __AT__ << " starting";
|
||||
|
||||
if(axis<0 || axis>1) return;
|
||||
flippedData[axis] = enable==0?0:1;
|
||||
FILE_LOG(logINFO) << "Flipped Data: " << flippedData[0] << " , " << flippedData[1];
|
||||
|
||||
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
|
||||
sprintf(cstreambuf, "Flipped Data: %d , %d ", flippedData[0], flippedData[1]);
|
||||
FILE_LOG(logINFO, cstreambuf);
|
||||
}
|
||||
|
||||
|
||||
/***file parameters***/
|
||||
void UDPBaseImplementation::setFileName(const char c[]){
|
||||
FILE_LOG(logDEBUG) << __AT__ << " starting";
|
||||
|
||||
if(strlen(c))
|
||||
strcpy(fileName, c);
|
||||
FILE_LOG(logINFO) << "File name:" << fileName;
|
||||
|
||||
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
|
||||
sprintf(cstreambuf, "File name: %s ", fileName);
|
||||
FILE_LOG(logINFO, cstreambuf);
|
||||
}
|
||||
|
||||
void UDPBaseImplementation::setFilePath(const char c[]){
|
||||
FILE_LOG(logDEBUG) << __AT__ << " starting";
|
||||
|
||||
if(strlen(c)){
|
||||
//check if filepath exists
|
||||
@ -245,55 +240,67 @@ void UDPBaseImplementation::setFilePath(const char c[]){
|
||||
strcpy(filePath,c);
|
||||
else{
|
||||
strcpy(filePath,"");
|
||||
FILE_LOG(logWARNING) << "FilePath does not exist:" << filePath;
|
||||
|
||||
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
|
||||
sprintf(cstreambuf, "FilePath does not exist: %s ", filePath);
|
||||
FILE_LOG(logWARNING, cstreambuf);
|
||||
}
|
||||
strcpy(filePath, c);
|
||||
}
|
||||
FILE_LOG(logDEBUG) << "Info: File path:" << filePath;
|
||||
/*{
|
||||
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
|
||||
sprintf(cstreambuf, "File path:: %s ", filePath);
|
||||
FILE_LOG(logDEBUG, cstreambuf);
|
||||
}*/
|
||||
}
|
||||
|
||||
void UDPBaseImplementation::setFileIndex(const uint64_t i){
|
||||
FILE_LOG(logDEBUG) << __AT__ << " starting";
|
||||
|
||||
fileIndex = i;
|
||||
FILE_LOG(logINFO) << "File Index:" << fileIndex;
|
||||
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
|
||||
sprintf(cstreambuf, "File Index: %lu ", fileIndex);
|
||||
FILE_LOG(logINFO, cstreambuf);
|
||||
}
|
||||
|
||||
//FIXME: needed?
|
||||
void UDPBaseImplementation::setScanTag(const int i){
|
||||
FILE_LOG(logDEBUG) << __AT__ << " starting";
|
||||
|
||||
scanTag = i;
|
||||
FILE_LOG(logINFO) << "Scan Tag:" << scanTag;
|
||||
|
||||
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
|
||||
sprintf(cstreambuf, "Scan Tag: %d ", scanTag);
|
||||
FILE_LOG(logINFO, cstreambuf);
|
||||
}
|
||||
|
||||
void UDPBaseImplementation::setFrameIndexEnable(const bool b){
|
||||
FILE_LOG(logDEBUG) << __AT__ << " starting";
|
||||
|
||||
frameIndexEnable = b;
|
||||
FILE_LOG(logINFO) << "Frame Index Enable: " << stringEnable(frameIndexEnable);
|
||||
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
|
||||
sprintf(cstreambuf, "Frame Index Enable: %s ", stringEnable(frameIndexEnable).c_str());
|
||||
FILE_LOG(logINFO, cstreambuf);
|
||||
}
|
||||
|
||||
void UDPBaseImplementation::setFileWriteEnable(const bool b){
|
||||
FILE_LOG(logDEBUG) << __AT__ << " starting";
|
||||
|
||||
fileWriteEnable = b;
|
||||
FILE_LOG(logINFO) << "File Write Enable: " << stringEnable(fileWriteEnable);
|
||||
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
|
||||
sprintf(cstreambuf, "File Write Enable: %s ", stringEnable(fileWriteEnable).c_str());
|
||||
FILE_LOG(logINFO, cstreambuf);
|
||||
}
|
||||
|
||||
void UDPBaseImplementation::setOverwriteEnable(const bool b){
|
||||
FILE_LOG(logDEBUG) << __AT__ << " starting";
|
||||
|
||||
overwriteEnable = b;
|
||||
FILE_LOG(logINFO) << "Overwrite Enable: " << stringEnable(overwriteEnable);
|
||||
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
|
||||
sprintf(cstreambuf, "Overwrite Enable: %s ", stringEnable(overwriteEnable).c_str());
|
||||
FILE_LOG(logINFO, cstreambuf);
|
||||
}
|
||||
|
||||
int UDPBaseImplementation::setDataCompressionEnable(const bool b){
|
||||
FILE_LOG(logDEBUG) << __AT__ << " starting";
|
||||
|
||||
dataCompressionEnable = b;
|
||||
FILE_LOG(logINFO) << "Data Compression : " << stringEnable(dataCompressionEnable);
|
||||
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
|
||||
sprintf(cstreambuf, "Data Compression: %s ", stringEnable(dataCompressionEnable).c_str());
|
||||
FILE_LOG(logINFO, cstreambuf);
|
||||
|
||||
//overridden methods might return FAIL
|
||||
return OK;
|
||||
@ -302,58 +309,65 @@ int UDPBaseImplementation::setDataCompressionEnable(const bool b){
|
||||
|
||||
/***connection parameters***/
|
||||
void UDPBaseImplementation::setUDPPortNumber(const uint32_t i){
|
||||
FILE_LOG(logDEBUG) << __AT__ << " starting";
|
||||
|
||||
udpPortNum[0] = i;
|
||||
FILE_LOG(logINFO) << "UDP Port Number[0]:" << udpPortNum[0];
|
||||
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
|
||||
sprintf(cstreambuf, "UDP Port Number[0]: %u ", udpPortNum[0]);
|
||||
FILE_LOG(logINFO, cstreambuf);
|
||||
}
|
||||
|
||||
void UDPBaseImplementation::setUDPPortNumber2(const uint32_t i){
|
||||
FILE_LOG(logDEBUG) << __AT__ << " starting";
|
||||
|
||||
udpPortNum[1] = i;
|
||||
FILE_LOG(logINFO) << "UDP Port Number[1]:" << udpPortNum[1];
|
||||
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
|
||||
sprintf(cstreambuf, "UDP Port Number[1]: %u ", udpPortNum[1]);
|
||||
FILE_LOG(logINFO, cstreambuf);
|
||||
}
|
||||
|
||||
void UDPBaseImplementation::setEthernetInterface(const char* c){
|
||||
FILE_LOG(logDEBUG) << __AT__ << " starting";
|
||||
|
||||
strcpy(eth, c);
|
||||
FILE_LOG(logINFO) << "Ethernet Interface: " << eth;
|
||||
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
|
||||
sprintf(cstreambuf, "Ethernet Interface: %s ", eth);
|
||||
FILE_LOG(logINFO, cstreambuf);
|
||||
}
|
||||
|
||||
|
||||
/***acquisition parameters***/
|
||||
void UDPBaseImplementation::setShortFrameEnable(const int i){
|
||||
FILE_LOG(logDEBUG) << __AT__ << " starting";
|
||||
|
||||
shortFrameEnable = i;
|
||||
FILE_LOG(logINFO) << "Short Frame Enable: " << stringEnable(shortFrameEnable);
|
||||
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
|
||||
sprintf(cstreambuf, "Short Frame Enable: %d ", shortFrameEnable);
|
||||
FILE_LOG(logINFO, cstreambuf);
|
||||
}
|
||||
|
||||
int UDPBaseImplementation::setFrameToGuiFrequency(const uint32_t freq){
|
||||
FILE_LOG(logDEBUG) << __AT__ << " starting";
|
||||
|
||||
frameToGuiFrequency = freq;
|
||||
FILE_LOG(logINFO) << "Frame To Gui Frequency:" << frameToGuiFrequency;
|
||||
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
|
||||
sprintf(cstreambuf, "Frame To Gui Frequency: %u ", frameToGuiFrequency);
|
||||
FILE_LOG(logINFO, cstreambuf);
|
||||
|
||||
//overrridden child classes might return FAIL
|
||||
return OK;
|
||||
}
|
||||
|
||||
void UDPBaseImplementation::setFrameToGuiTimer(const uint32_t time_in_ms){
|
||||
FILE_LOG(logDEBUG) << __AT__ << " starting";
|
||||
|
||||
frameToGuiTimerinMS = time_in_ms;
|
||||
FILE_LOG(logINFO) << "Frame To Gui Timer:" << frameToGuiTimerinMS;
|
||||
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
|
||||
sprintf(cstreambuf, "Frame To Gui Timer: %u ", frameToGuiTimerinMS);
|
||||
FILE_LOG(logINFO, cstreambuf);
|
||||
}
|
||||
|
||||
|
||||
uint32_t UDPBaseImplementation::setDataStreamEnable(const uint32_t enable){
|
||||
FILE_LOG(logDEBUG) << __AT__ << " starting";
|
||||
|
||||
dataStreamEnable = enable;
|
||||
FILE_LOG(logINFO) << "Streaming Data from Receiver:" << dataStreamEnable;
|
||||
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
|
||||
sprintf(cstreambuf, "Streaming Data from Receiver: %d ", dataStreamEnable);
|
||||
FILE_LOG(logINFO, cstreambuf);
|
||||
|
||||
//overrridden child classes might return FAIL
|
||||
return OK;
|
||||
@ -361,60 +375,66 @@ uint32_t UDPBaseImplementation::setDataStreamEnable(const uint32_t enable){
|
||||
|
||||
|
||||
int UDPBaseImplementation::setAcquisitionPeriod(const uint64_t i){
|
||||
FILE_LOG(logDEBUG) << __AT__ << " starting";
|
||||
|
||||
acquisitionPeriod = i;
|
||||
FILE_LOG(logINFO) << "Acquisition Period:" << (double)acquisitionPeriod/(1E9) << "s";
|
||||
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
|
||||
sprintf(cstreambuf, "Acquisition Period: %f s ", (double)acquisitionPeriod/(1E9));
|
||||
FILE_LOG(logINFO, cstreambuf);
|
||||
|
||||
//overrridden child classes might return FAIL
|
||||
return OK;
|
||||
}
|
||||
|
||||
int UDPBaseImplementation::setAcquisitionTime(const uint64_t i){
|
||||
FILE_LOG(logDEBUG) << __AT__ << " starting";
|
||||
|
||||
acquisitionTime = i;
|
||||
FILE_LOG(logINFO) << "Acquisition Time:" << (double)acquisitionTime/(1E9) << "s";
|
||||
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
|
||||
sprintf(cstreambuf, "Acquisition Time: %f s ", (double)acquisitionTime/(1E9));
|
||||
FILE_LOG(logINFO, cstreambuf);
|
||||
|
||||
//overrridden child classes might return FAIL
|
||||
return OK;
|
||||
}
|
||||
|
||||
int UDPBaseImplementation::setNumberOfFrames(const uint64_t i){
|
||||
FILE_LOG(logDEBUG) << __AT__ << " starting";
|
||||
|
||||
numberOfFrames = i;
|
||||
FILE_LOG(logINFO) << "Number of Frames:" << numberOfFrames;
|
||||
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
|
||||
sprintf(cstreambuf, "Number of Frames: %lu ", numberOfFrames);
|
||||
FILE_LOG(logINFO, cstreambuf);
|
||||
|
||||
//overrridden child classes might return FAIL
|
||||
return OK;
|
||||
}
|
||||
|
||||
int UDPBaseImplementation::setDynamicRange(const uint32_t i){
|
||||
FILE_LOG(logDEBUG) << __AT__ << " starting";
|
||||
|
||||
dynamicRange = i;
|
||||
FILE_LOG(logINFO) << "Dynamic Range:" << dynamicRange;
|
||||
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
|
||||
sprintf(cstreambuf, "Dynamic Range: %u ", dynamicRange);
|
||||
FILE_LOG(logINFO, cstreambuf);
|
||||
|
||||
//overrridden child classes might return FAIL
|
||||
return OK;
|
||||
}
|
||||
|
||||
int UDPBaseImplementation::setTenGigaEnable(const bool b){
|
||||
FILE_LOG(logDEBUG) << __AT__ << " starting";
|
||||
|
||||
tengigaEnable = b;
|
||||
FILE_LOG(logINFO) << "Ten Giga Enable: " << stringEnable(tengigaEnable);
|
||||
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
|
||||
sprintf(cstreambuf, "Ten Giga Enable: %s ", stringEnable(tengigaEnable).c_str());
|
||||
FILE_LOG(logINFO, cstreambuf);
|
||||
|
||||
//overridden functions might return FAIL
|
||||
return OK;
|
||||
}
|
||||
|
||||
int UDPBaseImplementation::setFifoDepth(const uint32_t i){
|
||||
FILE_LOG(logDEBUG) << __AT__ << " starting";
|
||||
|
||||
fifoDepth = i;
|
||||
FILE_LOG(logINFO) << "Fifo Depth: " << i;
|
||||
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
|
||||
sprintf(cstreambuf, "Fifo Depth: %u ", i);
|
||||
FILE_LOG(logINFO, cstreambuf);
|
||||
|
||||
//overridden functions might return FAIL
|
||||
return OK;
|
||||
@ -428,79 +448,88 @@ int UDPBaseImplementation::setFifoDepth(const uint32_t i){
|
||||
|
||||
/***initial functions***/
|
||||
int UDPBaseImplementation::setDetectorType(const detectorType d){
|
||||
FILE_LOG(logDEBUG) << __AT__ << " starting";
|
||||
|
||||
myDetectorType = d;
|
||||
//if eiger, set numberofListeningThreads = 2;
|
||||
FILE_LOG(logINFO) << "Detector Type:" << getDetectorType(d);
|
||||
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
|
||||
sprintf(cstreambuf, "Detector Type: %s ", getDetectorType(d).c_str());
|
||||
FILE_LOG(logINFO, cstreambuf);
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
void UDPBaseImplementation::initialize(const char *c){
|
||||
FILE_LOG(logDEBUG) << __AT__ << " starting";
|
||||
|
||||
if(strlen(c))
|
||||
strcpy(detHostname, c);
|
||||
FILE_LOG(logINFO) << "Detector Hostname:" << detHostname;
|
||||
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
|
||||
sprintf(cstreambuf, "Detector Hostname: %s ", detHostname);
|
||||
FILE_LOG(logINFO, cstreambuf);
|
||||
|
||||
}
|
||||
|
||||
|
||||
/***acquisition functions***/
|
||||
void UDPBaseImplementation::resetAcquisitionCount(){
|
||||
FILE_LOG(logDEBUG) << __AT__ << " starting";
|
||||
|
||||
|
||||
totalPacketsCaught = 0;
|
||||
FILE_LOG(logINFO) << "totalPacketsCaught:" << totalPacketsCaught;
|
||||
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
|
||||
sprintf(cstreambuf, "Total Packets Caught: %lu ", totalPacketsCaught);
|
||||
FILE_LOG(logINFO, cstreambuf);
|
||||
}
|
||||
|
||||
int UDPBaseImplementation::startReceiver(char *c){
|
||||
FILE_LOG(logWARNING) << __AT__ << " doing nothing...";
|
||||
FILE_LOG(logERROR) << __AT__ << " must be overridden by child classes";
|
||||
|
||||
FILE_LOG(logERROR, " must be overridden by child classes");
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
void UDPBaseImplementation::stopReceiver(){
|
||||
FILE_LOG(logWARNING) << __AT__ << " doing nothing...";
|
||||
FILE_LOG(logERROR) << __AT__ << " must be overridden by child classes";
|
||||
|
||||
FILE_LOG(logERROR, " must be overridden by child classes");
|
||||
}
|
||||
|
||||
void UDPBaseImplementation::startReadout(){
|
||||
FILE_LOG(logWARNING) << __AT__ << " doing nothing...";
|
||||
FILE_LOG(logERROR) << __AT__ << " must be overridden by child classes";
|
||||
|
||||
FILE_LOG(logERROR, " must be overridden by child classes");
|
||||
}
|
||||
|
||||
int UDPBaseImplementation::shutDownUDPSockets(){
|
||||
FILE_LOG(logWARNING) << __AT__ << " doing nothing...";
|
||||
FILE_LOG(logERROR) << __AT__ << " must be overridden by child classes";
|
||||
|
||||
FILE_LOG(logERROR, " must be overridden by child classes");
|
||||
|
||||
//overridden functions might return FAIL
|
||||
return OK;
|
||||
}
|
||||
|
||||
void UDPBaseImplementation::readFrame(int ithread, char* c,char** raw, int64_t &startAcquisitionIndex, int64_t &startFrameIndex){
|
||||
FILE_LOG(logWARNING) << __AT__ << " doing nothing...";
|
||||
FILE_LOG(logERROR) << __AT__ << " must be overridden by child classes";
|
||||
|
||||
FILE_LOG(logERROR, " must be overridden by child classes");
|
||||
}
|
||||
|
||||
|
||||
//FIXME: needed, isnt stopReceiver enough?
|
||||
void UDPBaseImplementation::abort(){
|
||||
FILE_LOG(logWARNING) << __AT__ << " doing nothing...";
|
||||
FILE_LOG(logERROR) << __AT__ << " must be overridden by child classes";
|
||||
|
||||
FILE_LOG(logERROR, " must be overridden by child classes");
|
||||
}
|
||||
|
||||
void UDPBaseImplementation::closeFile(int ithread){
|
||||
FILE_LOG(logWARNING) << __AT__ << " doing nothing...";
|
||||
FILE_LOG(logERROR) << __AT__ << " must be overridden by child classes";
|
||||
|
||||
FILE_LOG(logERROR, " must be overridden by child classes");
|
||||
}
|
||||
|
||||
|
||||
int UDPBaseImplementation::setActivate(int enable){
|
||||
FILE_LOG(logDEBUG) << __AT__ << " starting";
|
||||
|
||||
if(enable != -1){
|
||||
activated = enable;
|
||||
FILE_LOG(logINFO) << "Activation: " << stringEnable(activated);
|
||||
|
||||
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
|
||||
sprintf(cstreambuf, "Activation: %s ", stringEnable(activated).c_str());
|
||||
FILE_LOG(logINFO, cstreambuf);
|
||||
}
|
||||
|
||||
return activated;
|
||||
|
@ -22,18 +22,21 @@ using namespace std;
|
||||
|
||||
UDPInterface * UDPInterface::create(string receiver_type){
|
||||
|
||||
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
|
||||
sprintf(cstreambuf, "Starting %s ", receiver_type.c_str());
|
||||
|
||||
if (receiver_type == "standard"){
|
||||
FILE_LOG(logINFO) << "Starting " << receiver_type;
|
||||
FILE_LOG(logINFO, cstreambuf);
|
||||
return new UDPStandardImplementation();
|
||||
}
|
||||
#ifdef REST
|
||||
else if (receiver_type == "REST"){
|
||||
FILE_LOG(logINFO) << "Starting " << receiver_type;
|
||||
FILE_LOG(logINFO, cstreambuf);
|
||||
return new UDPRESTImplementation();
|
||||
}
|
||||
#endif
|
||||
else{
|
||||
FILE_LOG(logWARNING) << "[ERROR] UDP interface not supported, using standard implementation";
|
||||
FILE_LOG(logWARNING, "[ERROR] UDP interface not supported, using standard implementation");
|
||||
return new UDPBaseImplementation();
|
||||
}
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -104,7 +104,6 @@ int main(int argc, char *argv[]) {
|
||||
|
||||
//start tcp server thread
|
||||
if(receiver->start() == slsReceiverDefs::OK){
|
||||
FILE_LOG(logDEBUG1) << "DONE!" << endl;
|
||||
string str;
|
||||
cin>>str;
|
||||
//wait and look for an exit keyword
|
||||
|
@ -106,23 +106,32 @@ slsReceiver::slsReceiver(int argc, char *argv[], int &success){
|
||||
|
||||
if( !fname.empty() ){
|
||||
try{
|
||||
FILE_LOG(logINFO) << "config file name " << fname;
|
||||
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
|
||||
sprintf(cstreambuf, "config file name : %s ",fname.c_str());
|
||||
FILE_LOG(logDEBUG1, cstreambuf);
|
||||
|
||||
success = read_config_file(fname, &tcpip_port_no, &configuration_map);
|
||||
//VERBOSE_PRINT("Read configuration file of " + iline + " lines");
|
||||
}
|
||||
catch(...){
|
||||
FILE_LOG(logERROR) << "Error opening configuration file " << fname ;
|
||||
success = FAIL;
|
||||
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
|
||||
sprintf(cstreambuf, "Error opening configuration file : %s ",fname.c_str());
|
||||
FILE_LOG(logERROR, cstreambuf);
|
||||
|
||||
success = FAIL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if(success != OK){
|
||||
FILE_LOG(logERROR) << "Failed: see output above for more information " ;
|
||||
FILE_LOG(logERROR, "Failed: see output above for more information ");
|
||||
}
|
||||
|
||||
if (success==OK){
|
||||
FILE_LOG(logINFO) << "SLS Receiver starting " << udp_interface_type << " on port " << tcpip_port_no << endl;
|
||||
|
||||
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
|
||||
sprintf(cstreambuf, "SLS Receiver starting %s on port %d ",udp_interface_type.c_str(), tcpip_port_no);
|
||||
FILE_LOG(logDEBUG1, cstreambuf);
|
||||
#ifdef REST
|
||||
udp_interface = UDPInterface::create(udp_interface_type);
|
||||
udp_interface->configure(configuration_map);
|
||||
|
@ -28,17 +28,17 @@ slsReceiverTCPIPInterface::~slsReceiverTCPIPInterface() {
|
||||
}
|
||||
|
||||
slsReceiverTCPIPInterface::slsReceiverTCPIPInterface(int &success, UDPInterface* rbase, int pn):
|
||||
myDetectorType(GOTTHARD),
|
||||
receiverBase(rbase),
|
||||
ret(OK),
|
||||
lockStatus(0),
|
||||
shortFrame(-1),
|
||||
packetsPerFrame(GOTTHARD_PACKETS_PER_FRAME),
|
||||
dynamicrange(16),
|
||||
killTCPServerThread(0),
|
||||
tenGigaEnable(0),
|
||||
portNumber(DEFAULT_PORTNO+2),
|
||||
mySock(NULL){
|
||||
myDetectorType(GOTTHARD),
|
||||
receiverBase(rbase),
|
||||
ret(OK),
|
||||
lockStatus(0),
|
||||
shortFrame(-1),
|
||||
packetsPerFrame(GOTTHARD_PACKETS_PER_FRAME),
|
||||
dynamicrange(16),
|
||||
killTCPServerThread(0),
|
||||
tenGigaEnable(0),
|
||||
portNumber(DEFAULT_PORTNO+2),
|
||||
mySock(NULL){
|
||||
|
||||
strcpy(SET_RECEIVER_ERR_MESSAGE,"Receiver not set up. Please use rx_hostname first.\n");
|
||||
|
||||
@ -126,14 +126,17 @@ int slsReceiverTCPIPInterface::setPortNumber(int pn){
|
||||
|
||||
|
||||
int slsReceiverTCPIPInterface::start(){
|
||||
FILE_LOG(logDEBUG) << "Creating TCP Server Thread" << endl;
|
||||
|
||||
FILE_LOG(logDEBUG1, "Creating TCP Server Thread");
|
||||
|
||||
killTCPServerThread = 0;
|
||||
if(pthread_create(&TCPServer_thread, NULL,startTCPServerThread, (void*) this)){
|
||||
cout << "Could not create TCP Server thread" << endl;
|
||||
return FAIL;
|
||||
}
|
||||
//#ifdef VERYVERBOSE
|
||||
FILE_LOG(logDEBUG) << "TCP Server thread created successfully." << endl;
|
||||
FILE_LOG(logDEBUG1, "TCP Server thread created successfully.");
|
||||
|
||||
//#endif
|
||||
return OK;
|
||||
}
|
||||
@ -387,23 +390,27 @@ int slsReceiverTCPIPInterface::set_detector_type(){
|
||||
receiverBase->registerCallBackRawDataReady(rawDataReadyCallBack,pRawDataReady);
|
||||
}
|
||||
#endif
|
||||
myDetectorType = dr;
|
||||
ret=receiverBase->setDetectorType(myDetectorType);
|
||||
retval = myDetectorType;
|
||||
myDetectorType = dr;
|
||||
ret=receiverBase->setDetectorType(myDetectorType);
|
||||
retval = myDetectorType;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
//#ifdef VERYVERBOSE
|
||||
//#ifdef VERYVERBOSE
|
||||
if(ret!=FAIL)
|
||||
FILE_LOG(logDEBUG) << "detector type " << dr;
|
||||
{
|
||||
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
|
||||
sprintf(cstreambuf, "Detector Type %d ", (int)dr);
|
||||
FILE_LOG(logDEBUG1, cstreambuf);
|
||||
}
|
||||
else
|
||||
cprintf(RED, "%s\n", mess);
|
||||
//#endif
|
||||
//#endif
|
||||
#endif
|
||||
|
||||
if(ret==OK && mySock->differentClients){
|
||||
FILE_LOG(logDEBUG) << "Force update";
|
||||
FILE_LOG(logDEBUG1,"Force update" );
|
||||
ret=FORCE_UPDATE;
|
||||
}
|
||||
|
||||
@ -470,7 +477,7 @@ int slsReceiverTCPIPInterface::set_file_name() {
|
||||
|
||||
|
||||
if(ret==OK && mySock->differentClients){
|
||||
FILE_LOG(logDEBUG) << "Force update";
|
||||
FILE_LOG(logDEBUG1,"Force update" );
|
||||
ret=FORCE_UPDATE;
|
||||
}
|
||||
|
||||
@ -545,7 +552,7 @@ int slsReceiverTCPIPInterface::set_file_dir() {
|
||||
#endif
|
||||
|
||||
if(ret==OK && mySock->differentClients){
|
||||
FILE_LOG(logDEBUG) << "Force update";
|
||||
FILE_LOG(logDEBUG1,"Force update" );
|
||||
ret=FORCE_UPDATE;
|
||||
}
|
||||
|
||||
@ -617,7 +624,7 @@ int slsReceiverTCPIPInterface::set_file_index() {
|
||||
#endif
|
||||
|
||||
if(ret==OK && mySock->differentClients){
|
||||
FILE_LOG(logDEBUG) << "Force update";
|
||||
FILE_LOG(logDEBUG1,"Force update" );
|
||||
ret=FORCE_UPDATE;
|
||||
}
|
||||
|
||||
@ -695,7 +702,7 @@ int slsReceiverTCPIPInterface::set_frame_index() {
|
||||
#endif
|
||||
|
||||
if(ret==OK && mySock->differentClients){
|
||||
FILE_LOG(logDEBUG) << "Force update";
|
||||
FILE_LOG(logDEBUG1,"Force update" );
|
||||
ret=FORCE_UPDATE;
|
||||
}
|
||||
|
||||
@ -759,12 +766,16 @@ int slsReceiverTCPIPInterface::setup_udp(){
|
||||
receiverBase->setUDPPortNumber2(udpport2);
|
||||
//setup udpip
|
||||
//get ethernet interface or IP to listen to
|
||||
FILE_LOG(logINFO) << "Receiver UDP IP: " << args[0];
|
||||
{
|
||||
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
|
||||
sprintf(cstreambuf, "Receiver UDP IP: %s ",args[0]);
|
||||
FILE_LOG(logINFO, cstreambuf);
|
||||
}
|
||||
temp = genericSocket::ipToName(args[0]);
|
||||
if(temp=="none"){
|
||||
ret = FAIL;
|
||||
strcpy(mess, "Failed to get ethernet interface or IP\n");
|
||||
FILE_LOG(logERROR) << mess;
|
||||
FILE_LOG(logERROR, "Failed to get ethernet interface or IP ");
|
||||
}
|
||||
else{
|
||||
strcpy(eth,temp.c_str());
|
||||
@ -785,7 +796,10 @@ int slsReceiverTCPIPInterface::setup_udp(){
|
||||
}
|
||||
else{
|
||||
strcpy(retval,temp.c_str());
|
||||
FILE_LOG(logINFO) << "Reciever MAC Address: " << retval;
|
||||
|
||||
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
|
||||
sprintf(cstreambuf, "Reciever MAC Address: %s ",retval);
|
||||
FILE_LOG(logINFO, cstreambuf);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -793,14 +807,16 @@ int slsReceiverTCPIPInterface::setup_udp(){
|
||||
#endif
|
||||
|
||||
if(ret==OK && mySock->differentClients){
|
||||
FILE_LOG(logDEBUG) << "Force update";
|
||||
FILE_LOG(logDEBUG1,"Force update" );
|
||||
ret=FORCE_UPDATE;
|
||||
}
|
||||
|
||||
// send answer
|
||||
mySock->SendDataOnly(&ret,sizeof(ret));
|
||||
if(ret==FAIL){
|
||||
FILE_LOG(logERROR) << mess;
|
||||
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
|
||||
sprintf(cstreambuf, "%s ", mess);
|
||||
FILE_LOG(logERROR, cstreambuf);
|
||||
mySock->SendDataOnly(mess,sizeof(mess));
|
||||
}
|
||||
mySock->SendDataOnly(retval,MAX_STR_LENGTH);
|
||||
@ -849,7 +865,7 @@ int slsReceiverTCPIPInterface::start_receiver(){
|
||||
#endif
|
||||
|
||||
if(ret==OK && mySock->differentClients){
|
||||
FILE_LOG(logDEBUG) << "Force update";
|
||||
FILE_LOG(logDEBUG1,"Force update" );
|
||||
ret=FORCE_UPDATE;
|
||||
}
|
||||
|
||||
@ -897,7 +913,7 @@ int slsReceiverTCPIPInterface::stop_receiver(){
|
||||
#endif
|
||||
|
||||
if(ret==OK && mySock->differentClients){
|
||||
FILE_LOG(logDEBUG) << "Force update";
|
||||
FILE_LOG(logDEBUG1,"Force update" );
|
||||
ret=FORCE_UPDATE;
|
||||
}
|
||||
|
||||
@ -928,7 +944,7 @@ int slsReceiverTCPIPInterface::get_status(){
|
||||
#endif
|
||||
|
||||
if(ret==OK && mySock->differentClients){
|
||||
FILE_LOG(logDEBUG) << "Force update";
|
||||
FILE_LOG(logDEBUG1,"Force update" );
|
||||
ret=FORCE_UPDATE;
|
||||
}
|
||||
|
||||
@ -959,7 +975,7 @@ int slsReceiverTCPIPInterface::get_frames_caught(){
|
||||
}else retval=receiverBase->getTotalFramesCaught();
|
||||
#endif
|
||||
if(ret==OK && mySock->differentClients){
|
||||
FILE_LOG(logDEBUG) << "Force update";
|
||||
FILE_LOG(logDEBUG1,"Force update" );
|
||||
ret=FORCE_UPDATE;
|
||||
}
|
||||
|
||||
@ -991,7 +1007,7 @@ int slsReceiverTCPIPInterface::get_frame_index(){
|
||||
#endif
|
||||
|
||||
if(ret==OK && mySock->differentClients){
|
||||
FILE_LOG(logDEBUG) << "Force update";
|
||||
FILE_LOG(logDEBUG1,"Force update" );
|
||||
ret=FORCE_UPDATE;
|
||||
}
|
||||
|
||||
@ -1036,7 +1052,7 @@ int slsReceiverTCPIPInterface::reset_frames_caught(){
|
||||
#endif
|
||||
|
||||
if(ret==OK && mySock->differentClients){
|
||||
FILE_LOG(logDEBUG) << "Force update";
|
||||
FILE_LOG(logDEBUG1,"Force update" );
|
||||
ret=FORCE_UPDATE;
|
||||
}
|
||||
|
||||
@ -1105,7 +1121,7 @@ int slsReceiverTCPIPInterface::set_short_frame() {
|
||||
#endif
|
||||
|
||||
if(ret==OK && mySock->differentClients){
|
||||
FILE_LOG(logDEBUG) << "Force update";
|
||||
FILE_LOG(logDEBUG1,"Force update" );
|
||||
ret=FORCE_UPDATE;
|
||||
}
|
||||
|
||||
@ -1287,7 +1303,7 @@ int slsReceiverTCPIPInterface::moench_read_frame(){
|
||||
#endif
|
||||
|
||||
if(ret==OK && mySock->differentClients){
|
||||
FILE_LOG(logDEBUG) << "Force update";
|
||||
FILE_LOG(logDEBUG1,"Force update" );
|
||||
ret=FORCE_UPDATE;
|
||||
}
|
||||
|
||||
@ -1468,7 +1484,7 @@ int slsReceiverTCPIPInterface::gotthard_read_frame(){
|
||||
#endif
|
||||
|
||||
if(ret==OK && mySock->differentClients){
|
||||
FILE_LOG(logDEBUG) << "Force update";
|
||||
FILE_LOG(logDEBUG1,"Force update" );
|
||||
ret=FORCE_UPDATE;
|
||||
}
|
||||
|
||||
@ -1622,7 +1638,7 @@ int slsReceiverTCPIPInterface::propix_read_frame(){
|
||||
#endif
|
||||
|
||||
if(ret==OK && mySock->differentClients){
|
||||
FILE_LOG(logDEBUG) << "Force update";
|
||||
FILE_LOG(logDEBUG1,"Force update" );
|
||||
ret=FORCE_UPDATE;
|
||||
}
|
||||
|
||||
@ -1657,7 +1673,7 @@ int slsReceiverTCPIPInterface::propix_read_frame(){
|
||||
|
||||
int slsReceiverTCPIPInterface::eiger_read_frame(){
|
||||
ret=OK;
|
||||
/*
|
||||
/*
|
||||
char fName[MAX_STR_LENGTH]="";
|
||||
int acquisitionIndex = -1;
|
||||
int frameIndex= -1;
|
||||
@ -1889,7 +1905,7 @@ int slsReceiverTCPIPInterface::eiger_read_frame(){
|
||||
#endif
|
||||
|
||||
if(ret==OK && mySock->differentClients){
|
||||
FILE_LOG(logDEBUG) << "Force update";
|
||||
FILE_LOG(logDEBUG1,"Force update" );
|
||||
ret=FORCE_UPDATE;
|
||||
}
|
||||
|
||||
@ -1910,7 +1926,7 @@ int slsReceiverTCPIPInterface::eiger_read_frame(){
|
||||
delete [] retval;
|
||||
delete [] origVal;
|
||||
delete [] raw;
|
||||
*/
|
||||
*/
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -2052,7 +2068,7 @@ int slsReceiverTCPIPInterface::jungfrau_read_frame(){
|
||||
#endif
|
||||
|
||||
if(ret==OK && mySock->differentClients){
|
||||
FILE_LOG(logDEBUG) << "Force update";
|
||||
FILE_LOG(logDEBUG1,"Force update" );
|
||||
ret=FORCE_UPDATE;
|
||||
}
|
||||
|
||||
@ -2130,7 +2146,7 @@ int slsReceiverTCPIPInterface::set_read_frequency(){
|
||||
#endif
|
||||
|
||||
if(ret==OK && mySock->differentClients){
|
||||
FILE_LOG(logDEBUG) << "Force update";
|
||||
FILE_LOG(logDEBUG1,"Force update" );
|
||||
ret=FORCE_UPDATE;
|
||||
}
|
||||
|
||||
@ -2196,7 +2212,7 @@ int slsReceiverTCPIPInterface::set_read_receiver_timer(){
|
||||
#endif
|
||||
|
||||
if(ret==OK && mySock->differentClients){
|
||||
FILE_LOG(logDEBUG) << "Force update";
|
||||
FILE_LOG(logDEBUG1,"Force update" );
|
||||
ret=FORCE_UPDATE;
|
||||
}
|
||||
|
||||
@ -2259,7 +2275,7 @@ int slsReceiverTCPIPInterface::set_data_stream_enable(){
|
||||
#endif
|
||||
|
||||
if(ret==OK && mySock->differentClients){
|
||||
FILE_LOG(logDEBUG) << "Force update";
|
||||
FILE_LOG(logDEBUG1,"Force update" );
|
||||
ret=FORCE_UPDATE;
|
||||
}
|
||||
|
||||
@ -2319,7 +2335,7 @@ int slsReceiverTCPIPInterface::enable_file_write(){
|
||||
#endif
|
||||
|
||||
if(ret==OK && mySock->differentClients){
|
||||
FILE_LOG(logDEBUG) << "Force update";
|
||||
FILE_LOG(logDEBUG1,"Force update" );
|
||||
ret=FORCE_UPDATE;
|
||||
}
|
||||
|
||||
@ -2347,7 +2363,7 @@ int slsReceiverTCPIPInterface::get_id(){
|
||||
#endif
|
||||
|
||||
if(mySock->differentClients){
|
||||
FILE_LOG(logDEBUG) << "Force update";
|
||||
FILE_LOG(logDEBUG1,"Force update" );
|
||||
ret=FORCE_UPDATE;
|
||||
}
|
||||
|
||||
@ -2371,43 +2387,43 @@ int64_t slsReceiverTCPIPInterface::getReceiverVersion(){
|
||||
|
||||
|
||||
int slsReceiverTCPIPInterface::start_readout(){cprintf(BLUE,"In start readout!\n");
|
||||
ret=OK;
|
||||
enum runStatus retval;
|
||||
ret=OK;
|
||||
enum runStatus retval;
|
||||
|
||||
// execute action if the arguments correctly arrived
|
||||
// execute action if the arguments correctly arrived
|
||||
#ifdef SLS_RECEIVER_UDP_FUNCTIONS
|
||||
if (receiverBase == NULL){
|
||||
strcpy(mess,SET_RECEIVER_ERR_MESSAGE);
|
||||
ret=FAIL;
|
||||
}
|
||||
/*else if(receiverBase->getStatus()!= IDLE){
|
||||
if (receiverBase == NULL){
|
||||
strcpy(mess,SET_RECEIVER_ERR_MESSAGE);
|
||||
ret=FAIL;
|
||||
}
|
||||
/*else if(receiverBase->getStatus()!= IDLE){
|
||||
strcpy(mess,"Can not start receiver readout while receiver not idle\n");
|
||||
ret = FAIL;
|
||||
}*/
|
||||
else{
|
||||
receiverBase->startReadout();
|
||||
retval = receiverBase->getStatus();
|
||||
if((retval == TRANSMITTING) || (retval == RUN_FINISHED) || (retval == IDLE))
|
||||
ret = OK;
|
||||
else
|
||||
ret = FAIL;
|
||||
}
|
||||
else{
|
||||
receiverBase->startReadout();
|
||||
retval = receiverBase->getStatus();
|
||||
if((retval == TRANSMITTING) || (retval == RUN_FINISHED) || (retval == IDLE))
|
||||
ret = OK;
|
||||
else
|
||||
ret = FAIL;
|
||||
}
|
||||
#endif
|
||||
|
||||
if(ret==OK && mySock->differentClients){
|
||||
FILE_LOG(logDEBUG) << "Force update";
|
||||
ret=FORCE_UPDATE;
|
||||
}
|
||||
if(ret==OK && mySock->differentClients){
|
||||
FILE_LOG(logDEBUG1,"Force update" );
|
||||
ret=FORCE_UPDATE;
|
||||
}
|
||||
|
||||
// send answer
|
||||
mySock->SendDataOnly(&ret,sizeof(ret));
|
||||
if(ret==FAIL){
|
||||
cprintf(RED,"%s\n",mess);
|
||||
mySock->SendDataOnly(mess,sizeof(mess));
|
||||
}
|
||||
mySock->SendDataOnly(&retval,sizeof(retval));
|
||||
//return ok/fail
|
||||
return ret;
|
||||
// send answer
|
||||
mySock->SendDataOnly(&ret,sizeof(ret));
|
||||
if(ret==FAIL){
|
||||
cprintf(RED,"%s\n",mess);
|
||||
mySock->SendDataOnly(mess,sizeof(mess));
|
||||
}
|
||||
mySock->SendDataOnly(&retval,sizeof(retval));
|
||||
//return ok/fail
|
||||
return ret;
|
||||
|
||||
|
||||
}
|
||||
@ -2483,7 +2499,7 @@ int slsReceiverTCPIPInterface::set_timer() {
|
||||
#endif
|
||||
|
||||
if(ret==OK && mySock->differentClients){
|
||||
FILE_LOG(logDEBUG) << "Force update";
|
||||
FILE_LOG(logDEBUG1,"Force update" );
|
||||
ret=FORCE_UPDATE;
|
||||
}
|
||||
|
||||
@ -2555,7 +2571,7 @@ int slsReceiverTCPIPInterface::enable_compression() {
|
||||
#endif
|
||||
|
||||
if(ret==OK && mySock->differentClients){
|
||||
FILE_LOG(logDEBUG) << "Force update";
|
||||
FILE_LOG(logDEBUG1,"Force update" );
|
||||
ret=FORCE_UPDATE;
|
||||
}
|
||||
|
||||
@ -2621,7 +2637,7 @@ int slsReceiverTCPIPInterface::set_detector_hostname() {
|
||||
#endif
|
||||
|
||||
if(ret==OK && mySock->differentClients){
|
||||
FILE_LOG(logDEBUG) << "Force update";
|
||||
FILE_LOG(logDEBUG1,"Force update" );
|
||||
ret=FORCE_UPDATE;
|
||||
}
|
||||
|
||||
@ -2722,7 +2738,7 @@ int slsReceiverTCPIPInterface::set_dynamic_range() {
|
||||
#endif
|
||||
|
||||
if(ret==OK && mySock->differentClients){
|
||||
FILE_LOG(logDEBUG) << "Force update";
|
||||
FILE_LOG(logDEBUG1,"Force update" );
|
||||
ret=FORCE_UPDATE;
|
||||
}
|
||||
|
||||
@ -2790,7 +2806,7 @@ int slsReceiverTCPIPInterface::enable_overwrite() {
|
||||
#endif
|
||||
|
||||
if(ret==OK && mySock->differentClients){
|
||||
FILE_LOG(logDEBUG) << "Force update";
|
||||
FILE_LOG(logDEBUG1,"Force update" );
|
||||
ret=FORCE_UPDATE;
|
||||
}
|
||||
|
||||
@ -2860,7 +2876,7 @@ int slsReceiverTCPIPInterface::enable_tengiga() {
|
||||
#endif
|
||||
|
||||
if(ret==OK && mySock->differentClients){
|
||||
FILE_LOG(logDEBUG) << "Force update";
|
||||
FILE_LOG(logDEBUG1,"Force update" );
|
||||
ret=FORCE_UPDATE;
|
||||
}
|
||||
|
||||
@ -2932,7 +2948,7 @@ int slsReceiverTCPIPInterface::set_fifo_depth() {
|
||||
#endif
|
||||
|
||||
if(ret==OK && mySock->differentClients){
|
||||
FILE_LOG(logDEBUG) << "Force update";
|
||||
FILE_LOG(logDEBUG1,"Force update" );
|
||||
ret=FORCE_UPDATE;
|
||||
}
|
||||
|
||||
@ -3006,7 +3022,7 @@ int slsReceiverTCPIPInterface::set_activate() {
|
||||
|
||||
|
||||
if(ret==OK && mySock->differentClients){
|
||||
FILE_LOG(logDEBUG) << "Force update";
|
||||
FILE_LOG(logDEBUG1,"Force update" );
|
||||
ret=FORCE_UPDATE;
|
||||
}
|
||||
|
||||
@ -3070,7 +3086,7 @@ int slsReceiverTCPIPInterface::set_flipped_data(){
|
||||
#endif
|
||||
|
||||
if(ret==OK && mySock->differentClients){
|
||||
FILE_LOG(logDEBUG) << "Force update";
|
||||
FILE_LOG(logDEBUG1,"Force update" );
|
||||
ret=FORCE_UPDATE;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user