Compare commits

...

6 Commits
2.3.3 ... 2.3.4

17 changed files with 319 additions and 351 deletions

View File

@ -561,6 +561,15 @@ int receiveModuleGeneral(int file_des, sls_detector_module* myMod, int receiveA
myMod->chipregs=chipptr; myMod->chipregs=chipptr;
myMod->chanregs=chanptr; 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; nChips=myMod->nchip;
nchipdiff=nChips-nchipold; nchipdiff=nChips-nchipold;
if (nchipold!=nChips) { if (nchipold!=nChips) {
@ -571,6 +580,7 @@ int receiveModuleGeneral(int file_des, sls_detector_module* myMod, int receiveA
printf("received %d chips\n",nChips); printf("received %d chips\n",nChips);
#endif #endif
nChans=myMod->nchan; nChans=myMod->nchan;
nchandiff=nChans-nchanold; nchandiff=nChans-nchanold;
if (nchanold!=nChans) { if (nchanold!=nChans) {

View File

@ -627,25 +627,30 @@ int setModule(sls_detector_module myMod, int delay){
for(i=0;i<myMod.ndac;i++) for(i=0;i<myMod.ndac;i++)
setDAC((enum detDacIndex)i,myMod.dacs[i],myMod.module,0,retval); setDAC((enum detDacIndex)i,myMod.dacs[i],myMod.module,0,retval);
//includ gap pixels if(myMod.nchan==0 && myMod.nchip == 0)
unsigned int tt[263680]; cprintf(BLUE,"Setting module without trimbits\n");
int iy,ichip,ix,ip=0,ich=0; else{
for(iy=0;iy<256;iy++) { cprintf(GREEN,"Setting module with trimbits\n");
for (ichip=0; ichip<4; ichip++) { //includ gap pixels
for(ix=0;ix<256;ix++) { unsigned int tt[263680];
tt[ip++]=myMod.chanregs[ich++]; int iy,ichip,ix,ip=0,ich=0;
} for(iy=0;iy<256;iy++) {
if (ichip<3) { for (ichip=0; ichip<4; ichip++) {
tt[ip++]=0; for(ix=0;ix<256;ix++) {
tt[ip++]=0; tt[ip++]=myMod.chanregs[ich++];
}
if (ichip<3) {
tt[ip++]=0;
tt[ip++]=0;
}
} }
} }
}
//set trimbits //set trimbits
if(!Feb_Control_SetTrimbits(Feb_Control_GetModuleNumber(),tt)){ if(!Feb_Control_SetTrimbits(Feb_Control_GetModuleNumber(),tt)){
cprintf(BG_RED,"Could not set trimbits\n"); cprintf(BG_RED,"Could not set trimbits\n");
return FAIL; return FAIL;
}
} }
return thisSettings; return thisSettings;
@ -1126,11 +1131,13 @@ int copyModule(sls_detector_module *destMod, sls_detector_module *srcMod){
destMod->serialnumber=srcMod->serialnumber; 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"); printf("Number of chip of source is larger than number of chips of destination\n");
return FAIL; 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"); printf("Number of channels of source is larger than number of channels of destination\n");
return FAIL; return FAIL;
} }
@ -1164,14 +1171,21 @@ int copyModule(sls_detector_module *destMod, sls_detector_module *srcMod){
if (srcMod->offset>=0) if (srcMod->offset>=0)
destMod->offset=srcMod->offset; destMod->offset=srcMod->offset;
for (ichip=0; ichip<(srcMod->nchip); ichip++) { if((destMod->nchip!=0) || (destMod->nchan!=0)) {
if (*((srcMod->chipregs)+ichip)>=0) for (ichip=0; ichip<(srcMod->nchip); ichip++) {
*((destMod->chipregs)+ichip)=*((srcMod->chipregs)+ichip); if (*((srcMod->chipregs)+ichip)>=0)
} *((destMod->chipregs)+ichip)=*((srcMod->chipregs)+ichip);
for (ichan=0; ichan<(srcMod->nchan); ichan++) { }
if (*((srcMod->chanregs)+ichan)>=0) for (ichan=0; ichan<(srcMod->nchan); ichan++) {
*((destMod->chanregs)+ichan)=*((srcMod->chanregs)+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++) { for (idac=0; idac<(srcMod->ndac); idac++) {
if (*((srcMod->dacs)+idac)>=0) if (*((srcMod->dacs)+idac)>=0)
*((destMod->dacs)+idac)=*((srcMod->dacs)+idac); *((destMod->dacs)+idac)=*((srcMod->dacs)+idac);

View File

@ -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 posmin, posmax;
int ret=-100; int ret=-100;
@ -1160,8 +1160,8 @@ int multiSlsDetector::setThresholdEnergy(int e_eV, int pos, detectorSettings ise
for(int idet=posmin; idet<posmax; idet++){ for(int idet=posmin; idet<posmax; idet++){
if(detectors[idet]){ if(detectors[idet]){
iret[idet]= new int(-1); iret[idet]= new int(-1);
Task* task = new Task(new func3_t<int,slsDetector,int,int,detectorSettings,int>(&slsDetector::setThresholdEnergy, Task* task = new Task(new func4_t<int,slsDetector,int,int,detectorSettings,int,int>(&slsDetector::setThresholdEnergy,
detectors[idet],e_eV,-1,isettings,iret[idet])); detectors[idet],e_eV,-1,isettings,tb, iret[idet]));
threadpool->add_task(task); threadpool->add_task(task);
} }
} }
@ -5158,7 +5158,7 @@ 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){ 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){
bool data = true;
zmq_msg_t header_message; zmq_msg_t header_message;
//scan header------------------------------------------------------------------- //scan header-------------------------------------------------------------------
@ -5179,14 +5179,6 @@ int multiSlsDetector::getData(const int isocket, const bool masking, int* image,
rapidjson::ParseResult result = d.Parse( (char*)zmq_msg_data(&header_message), len); rapidjson::ParseResult result = d.Parse( (char*)zmq_msg_data(&header_message), len);
if (!result) { if (!result) {
cprintf(RED,"%d Could not parse. len:%d: Message:%s \n", isocket, len, (char*)zmq_msg_data(&header_message) ); cprintf(RED,"%d Could not parse. len:%d: Message:%s \n", isocket, len, (char*)zmq_msg_data(&header_message) );
fflush( stdout );
char* buf = (char*)zmq_msg_data(&header_message);
for(int i= 0;i < len; ++i) {
cprintf(RED,"%02x ",buf[i]);
}
printf("\n");
fflush( stdout );
} }
#ifdef VERYVERBOSE #ifdef VERYVERBOSE
// htype is an array of strings // htype is an array of strings
@ -5203,47 +5195,38 @@ int multiSlsDetector::getData(const int isocket, const bool masking, int* image,
cout << isocket << "type: " << d["type"].GetString() << endl; cout << isocket << "type: " << d["type"].GetString() << endl;
#endif #endif
int temp = d["data"].GetUint64(); if(d["acqIndex"].GetUint64()!= (uint64_t)-1){ //!isocket &&
data = temp?true:false;
if(data){ //!isocket &&
acqIndex = d["acqIndex"].GetUint64(); acqIndex = d["acqIndex"].GetUint64();
frameIndex = d["fIndex"].GetUint64(); frameIndex = d["fIndex"].GetUint64();
subframeIndex = -1; subframeIndex = -1;
if(d["bitmode"].GetInt()==32 && d["detType"].GetUint()== EIGER) { if(d["bitmode"].GetInt()==32 && d["detType"].GetUint()== EIGER) {
subframeIndex = d["expLength"].GetUint(); subframeIndex = d["expLength"].GetUint();
} }
filename.assign(d["fname"].GetString()); filename = d["fname"].GetString();
#ifdef VERYVERBOSE #ifdef VERYVERBOSE
cout << "Acquisition index: " << acqIndex << endl; cout << "Acquisition index: " << acqIndex << endl;
cout << "Frame index: " << frameIndex << endl; cout << "Frame index: " << frameIndex << endl;
cout << "Subframe index: " << subframeIndex << endl; cout << "Subframe index: " << subframeIndex << endl;
cout << "File name: " << filename << endl; cout << "File name: " << filename << endl;
#endif #endif
// if(frameIndex == (long long unsigned int)-1) cprintf(RED,"multi frame index -1!!\n"); if(frameIndex == (long long unsigned int)-1) cprintf(RED,"multi frame index -1!!\n");
} }
// close the message // close the message
zmq_msg_close(&header_message); zmq_msg_close(&header_message);
//end of acquisition
if(!data){
//cprintf(RED,"%d Received end of acquisition \n", isocket);
return FAIL;
}
//scan data------------------------------------------------------------------- //scan data-------------------------------------------------------------------
zmq_msg_t data_message; zmq_msg_t data_message;
zmq_msg_init (&data_message); zmq_msg_init (&data_message);
len = zmq_msg_recv(&data_message, zmqsocket[isocket], 0); len = zmq_msg_recv(&data_message, zmqsocket[isocket], 0);
//cprintf(GREEN,"%d data %d\n",isocket,len); fflush(stdout); //cprintf(GREEN,"%d data %d\n",isocket,len);
//end of socket ("end\0") //end of socket ("end\0")
/* if(len == 4){ if(len == 4){
zmq_msg_close(&data_message); // close the message zmq_msg_close(&data_message); // close the message
//cprintf(RED,"%d Received end of acquisition len:%d\n", isocket, len); //cprintf(RED,"%d Received end of acquisition len:%d\n", isocket, len);
return FAIL; return FAIL;
}*/ }
//crappy image //crappy image
if (len < size ) { if (len < size ) {
@ -5362,7 +5345,7 @@ void multiSlsDetector::readFrameFromReceiver(){
//get individual images //get individual images
if(FAIL == getData(isocket, jungfrau, image, expectedslssize, currentAcquisitionIndex,currentFrameIndex,currentSubFrameIndex,currentFileName)){ if(FAIL == getData(isocket, jungfrau, image, expectedslssize, currentAcquisitionIndex,currentFrameIndex,currentSubFrameIndex,currentFileName)){
dataThreadMask^=(1<<isocket); dataThreadMask^=(1<<isocket);
continue; continue;
} }

View File

@ -453,9 +453,10 @@ class multiSlsDetector : public slsDetectorUtils {
\param e_eV threshold in eV \param e_eV threshold in eV
\param imod module number (-1 all) \param imod module number (-1 all)
\param isettings ev. change settings \param isettings ev. change settings
\param tb 1 to include trimbits, 0 to exclude
\returns current threshold value for imod in ev (-1 failed) \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 get detector settings

View File

@ -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 fnum=F_SET_MODULE;
int retval; int retval;
@ -2903,6 +2903,11 @@ int slsDetector::setModule(sls_detector_module module, int iodelay, int tau, int
if (thisDetector->onlineFlag==ONLINE_FLAG) { if (thisDetector->onlineFlag==ONLINE_FLAG) {
if (connectControl() == OK){ if (connectControl() == OK){
controlSocket->SendDataOnly(&fnum,sizeof(fnum)); controlSocket->SendDataOnly(&fnum,sizeof(fnum));
//to exclude trimbits
if(!tb) {
module.nchan=0;
module.nchip=0;
}
sendModule(&module); sendModule(&module);
//not included in 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 (ret!=FAIL) {
if (detectorModules) { if (detectorModules) {
if (imod>=0 && imod<thisDetector->nMod[X]*thisDetector->nMod[Y]) { if (imod>=0 && imod<thisDetector->nMod[X]*thisDetector->nMod[Y]) {
(detectorModules+imod)->nchan=module.nchan; if(tb) {
(detectorModules+imod)->nchip=module.nchip; (detectorModules+imod)->nchan=module.nchan;
(detectorModules+imod)->nchip=module.nchip;
}
(detectorModules+imod)->ndac=module.ndac; (detectorModules+imod)->ndac=module.ndac;
(detectorModules+imod)->nadc=module.nadc; (detectorModules+imod)->nadc=module.nadc;
thisDetector->nChips=module.nchip; if(tb) {
thisDetector->nChans=module.nchan/module.nchip; thisDetector->nChips=module.nchip;
thisDetector->nChans=module.nchan/module.nchip;
}
thisDetector->nDacs=module.ndac; thisDetector->nDacs=module.ndac;
thisDetector->nAdcs=module.nadc; thisDetector->nAdcs=module.nadc;
if(thisDetector->myDetectorType != JUNGFRAU){ if(thisDetector->myDetectorType != JUNGFRAU){
for (int ichip=0; ichip<thisDetector->nChips; ichip++) { if(tb) {
if (chipregs) for (int ichip=0; ichip<thisDetector->nChips; ichip++) {
chipregs[ichip+thisDetector->nChips*imod]=module.chipregs[ichip]; if (chipregs)
chipregs[ichip+thisDetector->nChips*imod]=module.chipregs[ichip];
if (chanregs) { if (chanregs) {
for (int i=0; i<thisDetector->nChans; i++) { for (int i=0; i<thisDetector->nChans; i++) {
chanregs[i+ichip*thisDetector->nChans+thisDetector->nChips*thisDetector->nChans*imod]=module.chanregs[ichip*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; 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 //currently only for eiger
if (thisDetector->myDetectorType == EIGER) { if (thisDetector->myDetectorType == EIGER) {
setThresholdEnergyAndSettings(e_eV,isettings); setThresholdEnergyAndSettings(e_eV,isettings,tb);
return thisDetector->currentThresholdEV; 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 //if settings provided, use that, else use the shared memory variable
detectorSettings is = ((isettings != GET_SETTINGS) ? isettings: thisDetector->currentSettings); detectorSettings is = ((isettings != GET_SETTINGS) ? isettings: thisDetector->currentSettings);
@ -3292,7 +3303,7 @@ int slsDetector::setThresholdEnergyAndSettings(int e_eV, detectorSettings isetti
#endif #endif
//read the files //read the files
myMod=createModule(); 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); if(myMod)deleteModule(myMod);
return FAIL; return FAIL;
} }
@ -3327,13 +3338,13 @@ int slsDetector::setThresholdEnergyAndSettings(int e_eV, detectorSettings isetti
int tau1 = -1; //not included in the module int tau1 = -1; //not included in the module
int iodelay2 = -1; //not included in the module int iodelay2 = -1; //not included in the module
int tau2 = -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)); setErrorMask((getErrorMask())|(SETTINGS_FILE_NOT_OPEN));
deleteModule(myMod1); deleteModule(myMod1);
deleteModule(myMod2); deleteModule(myMod2);
return FAIL; 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)); setErrorMask((getErrorMask())|(SETTINGS_FILE_NOT_OPEN));
deleteModule(myMod1); deleteModule(myMod1);
deleteModule(myMod2); deleteModule(myMod2);
@ -3349,7 +3360,7 @@ int slsDetector::setThresholdEnergyAndSettings(int e_eV, detectorSettings isetti
iodelay = iodelay1; iodelay = iodelay1;
//interpolate module //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) { if (myMod == NULL) {
printf("Could not interpolate, different dac values in files\n"); printf("Could not interpolate, different dac values in files\n");
setErrorMask((getErrorMask())|(SETTINGS_NOT_SET)); setErrorMask((getErrorMask())|(SETTINGS_NOT_SET));
@ -3365,7 +3376,7 @@ int slsDetector::setThresholdEnergyAndSettings(int e_eV, detectorSettings isetti
myMod->module=0; myMod->module=0;
myMod->reg=thisDetector->currentSettings; myMod->reg=thisDetector->currentSettings;
setModule(*myMod, iodelay, tau, e_eV, 0, 0); setModule(*myMod, iodelay, tau, e_eV, 0, 0, tb);
deleteModule(myMod); deleteModule(myMod);
if (getSettings(-1) != is){ if (getSettings(-1) != is){
printf( "Could not set settings in detector \n" ); printf( "Could not set settings in detector \n" );

View File

@ -953,10 +953,11 @@ class slsDetector : public slsDetectorUtils, public energyConversion {
\param e_eV threashold in eV (detector specific) \param e_eV threashold in eV (detector specific)
\param gainval pointer to extra gain values \param gainval pointer to extra gain values
\param offsetval pointer to extra offset values \param offsetval pointer to extra offset values
\param tb 1 to include trimbits, 0 to exclude (used for eiger)
\returns current register value \returns current register value
\sa ::sls_detector_module \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); //virtual int setModule(sls_detector_module module);
/** /**
@ -987,17 +988,19 @@ class slsDetector : public slsDetectorUtils, public energyConversion {
\param e_eV threshold in eV \param e_eV threshold in eV
\param imod module number (-1 all) \param imod module number (-1 all)
\param isettings ev. change settings \param isettings ev. change settings
\param tb 1 to include trimbits, 0 to exclude
\returns current threshold value for imod in ev (-1 failed) \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 set threshold energy
\param e_eV threshold in eV \param e_eV threshold in eV
\param isettings ev. change settings \param isettings ev. change settings
\param tb 1 to include trimbits, 0 to exclude
\returns OK if successful, else FAIL \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 get detector settings

View File

@ -210,7 +210,7 @@ class slsDetectorActions : public virtual slsDetectorBase
/* *\/ */ /* *\/ */
/* virtual detectorType getDetectorsType(int pos=-1)=0; */ /* 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; virtual int setChannel(int64_t, int ich=-1, int ichip=-1, int imod=-1)=0;

View File

@ -429,7 +429,7 @@ class slsDetectorBase : public virtual slsDetectorDefs, public virtual errorDef
virtual externalCommunicationMode setExternalCommunicationMode(externalCommunicationMode pol=GET_EXTERNAL_COMMUNICATION_MODE)=0; virtual externalCommunicationMode setExternalCommunicationMode(externalCommunicationMode pol=GET_EXTERNAL_COMMUNICATION_MODE)=0;
int setTimingMode(int i=-1){return slsDetectorUsers::getTimingMode( externalCommunicationType( setExternalCommunicationMode(externalCommunicationType( slsDetectorUsers::getTimingMode(i) ) ) ) );}; 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);}; int setThresholdEnergy(int e_eV){return setThresholdEnergy(e_eV,-1);};

View File

@ -552,6 +552,10 @@ slsDetectorCommand::slsDetectorCommand(slsDetectorUtils *det) {
descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdSettings; descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdSettings;
i++; i++;
descrToFuncMap[i].m_pFuncName="thresholdnotb"; //
descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdSettings;
i++;
descrToFuncMap[i].m_pFuncName="trimbits"; // descrToFuncMap[i].m_pFuncName="trimbits"; //
descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdSettings; descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdSettings;
i++; i++;
@ -3289,10 +3293,10 @@ string slsDetectorCommand::cmdSettings(int narg, char *args[], int action) {
return myDet->getDetectorSettings(myDet->getSettings()); return myDet->getDetectorSettings(myDet->getSettings());
} else if (cmd=="threshold") { } else if (cmd=="threshold") {
if (action==PUT_ACTION) { if (action==PUT_ACTION) {
detectorType type = myDet->getDetectorsType();
if (!sscanf(args[1],"%d",&val)) { if (!sscanf(args[1],"%d",&val)) {
return string("invalid threshold value"); return string("invalid threshold value");
} }
detectorType type = myDet->getDetectorsType();
if (type != EIGER || (type == EIGER && narg<=2)) { if (type != EIGER || (type == EIGER && narg<=2)) {
myDet->setThresholdEnergy(val); myDet->setThresholdEnergy(val);
} else { } else {
@ -3304,6 +3308,25 @@ string slsDetectorCommand::cmdSettings(int narg, char *args[], int action) {
} }
sprintf(ans,"%d",myDet->getThresholdEnergy()); sprintf(ans,"%d",myDet->getThresholdEnergy());
return string(ans); 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") { } else if (cmd=="trimbits") {
if (narg>=2) { if (narg>=2) {
string sval=string(args[1]); 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) { 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" 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; "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 << "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 << "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; os << "trimval i \n sets all the trimbits to i" << std::endl;

View File

@ -421,7 +421,7 @@ class slsDetectorUtils : public slsDetectorActions, public postProcessing {
// double* convertAngles(){return convertAngles(currentPosition);}; // double* convertAngles(){return convertAngles(currentPosition);};
// virtual double* convertAngles(double pos)=0; // 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 int setChannel(int64_t, int ich=-1, int ichip=-1, int imod=-1)=0;
virtual double getRateCorrectionTau()=0; virtual double getRateCorrectionTau()=0;

View File

@ -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) // only implemented for eiger currently (in terms of which dacs)
if(myDetectorType != EIGER) { if(myDetectorType != EIGER) {
printf("Interpolation of Trim values not implemented for this detector!\n"); 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 //Interpolate all trimbits
for (int i = 0; i<myMod->nchan; i++) if(tb) {
myMod->chanregs[i] = linearInterpolation(energy, e1, e2, a->chanregs[i], b->chanregs[i]); for (int i = 0; i<myMod->nchan; i++)
myMod->chanregs[i] = linearInterpolation(energy, e1, e2, a->chanregs[i], b->chanregs[i]);
}
return myMod; return myMod;
} }
@ -180,7 +182,7 @@ slsDetectorDefs::sls_detector_module* energyConversion::interpolateTrim(detector
/* I/O */ /* 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*) myMod->dacs,sizeof(dacs_t)*(myMod->ndac));
infile.read((char*)&iodelay,sizeof(iodelay)); infile.read((char*)&iodelay,sizeof(iodelay));
infile.read((char*)&tau,sizeof(tau)); infile.read((char*)&tau,sizeof(tau));
infile.read((char*) myMod->chanregs,sizeof(int)*(myMod->nchan));
#ifdef VERBOSE #ifdef VERBOSE
for(int i=0;i<myMod->ndac;i++) for(int i=0;i<myMod->ndac;i++)
printf( "dac %d:%d \n", i, myMod->dacs[i] ); printf( "dac %d:%d \n", i, myMod->dacs[i] );
printf( "iodelay:%d \n", iodelay ); printf( "iodelay:%d \n", iodelay );
printf( "tau:%d \n", tau ); printf( "tau:%d \n", tau );
#endif #endif
if(infile.eof()){ if(tb) {
printf( "Error, could not load trimbits end of file reached: %s \n\n", myfname.c_str() ); infile.read((char*) myMod->chanregs,sizeof(int)*(myMod->nchan));
if (nflag) if(infile.eof()){
deleteModule(myMod); 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(); infile.close();
strcpy(settingsFile,fname.c_str()); strcpy(settingsFile,fname.c_str());

View File

@ -88,9 +88,10 @@ class energyConversion
\param energy energy to trim at \param energy energy to trim at
\param e1 reference trim value \param e1 reference trim value
\param e2 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 \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 iodelay io delay (detector specific)
\param tau tau (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 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 \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 writes a trim/settings file

View 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){}; 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 */ /* 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){}; 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 */ /* Return: int, Param: int,int,detectorSettings,int */
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){}; 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 */ /* Return: void, Param: none */
func00_t <void,slsDetector>* m12; func00_t <void,slsDetector>* m12;
/* Return: int, Param: int,int,detectorSettings */ /* 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;
}; };

View File

@ -100,6 +100,7 @@ enum communicationProtocol{
genericSocket(const char* const host_ip_or_name, unsigned short int const port_number, communicationProtocol p, int ps = DEFAULT_PACKET_SIZE) : genericSocket(const char* const host_ip_or_name, unsigned short int const port_number, communicationProtocol p, int ps = DEFAULT_PACKET_SIZE) :
// portno(port_number),
protocol(p), protocol(p),
is_a_server(0), is_a_server(0),
socketDescriptor(-1), socketDescriptor(-1),
@ -108,15 +109,11 @@ enum communicationProtocol{
nsending(0), nsending(0),
nsent(0), nsent(0),
total_sent(0),// sender (client): where to? ip total_sent(0),// sender (client): where to? ip
header_packet_size(0), header_packet_size(0)
portno(port_number)
{ {
memset(&serverAddress, 0,sizeof(serverAddress)); memset(&serverAddress, 0,sizeof(serverAddress));
memset(&clientAddress,0,sizeof(clientAddress)); memset(&clientAddress,0,sizeof(clientAddress));
// strcpy(hostname,host_ip_or_name); // strcpy(hostname,host_ip_or_name);
memset(lastClientIP, 0, INET_ADDRSTRLEN);
memset(thisClientIP, 0, INET_ADDRSTRLEN);
memset(dummyClientIP, 0, INET_ADDRSTRLEN);
strcpy(lastClientIP,"none"); strcpy(lastClientIP,"none");
strcpy(thisClientIP,"none1"); strcpy(thisClientIP,"none1");
@ -167,6 +164,7 @@ enum communicationProtocol{
*/ */
genericSocket(unsigned short int const port_number, communicationProtocol p, int ps = DEFAULT_PACKET_SIZE, const char *eth=NULL, int hsize=0): genericSocket(unsigned short int const port_number, communicationProtocol p, int ps = DEFAULT_PACKET_SIZE, const char *eth=NULL, int hsize=0):
//portno(port_number),
protocol(p), protocol(p),
is_a_server(1), is_a_server(1),
socketDescriptor(-1), socketDescriptor(-1),
@ -175,8 +173,7 @@ enum communicationProtocol{
nsending(0), nsending(0),
nsent(0), nsent(0),
total_sent(0), total_sent(0),
header_packet_size(hsize), header_packet_size(hsize)
portno(port_number)
{ {
memset(&serverAddress, 0, sizeof(serverAddress)); memset(&serverAddress, 0, sizeof(serverAddress));
@ -184,9 +181,7 @@ enum communicationProtocol{
/* // you can specify an IP address: */ /* // you can specify an IP address: */
/* // or you can let it automatically select one: */ /* // or you can let it automatically select one: */
/* myaddr.sin_addr.s_addr = INADDR_ANY; */ /* myaddr.sin_addr.s_addr = INADDR_ANY; */
memset(lastClientIP, 0, INET_ADDRSTRLEN);
memset(thisClientIP, 0, INET_ADDRSTRLEN);
memset(dummyClientIP, 0, INET_ADDRSTRLEN);
strcpy(lastClientIP,"none"); strcpy(lastClientIP,"none");
strcpy(thisClientIP,"none1"); strcpy(thisClientIP,"none1");
@ -615,7 +610,6 @@ enum communicationProtocol{
break; break;
case UDP: case UDP:
if (socketDescriptor<0) return -1; if (socketDescriptor<0) return -1;
//if length given, listens to length, else listens for packetsize till length is reached //if length given, listens to length, else listens for packetsize till length is reached
if(length){ if(length){
@ -638,30 +632,12 @@ enum communicationProtocol{
else{ else{
//normal //normal
nsending=packet_size; nsending=packet_size;
/* if(portno%2){
cprintf(BLUE,"%d total_sent set to zero:%d\n",portno, total_sent);fflush(stdout);
}else{
cprintf(GREEN,"%d total_sent set to zero:%d\n",portno, total_sent);fflush(stdout);
}*/
while(1){ while(1){
nsent = recvfrom(socketDescriptor,(char*)buf+total_sent,nsending, 0, (struct sockaddr *) &clientAddress, &clientAddress_length); nsent = recvfrom(socketDescriptor,(char*)buf+total_sent,nsending, 0, (struct sockaddr *) &clientAddress, &clientAddress_length);
/* if(portno%2){ if(nsent<=0 || nsent == packet_size)
cprintf(BLUE,"%d nsent:%d total_sent:%d\n", portno, nsent, total_sent);fflush(stdout);
}else{
cprintf(GREEN,"%d nsent:%d total_sent:%d\n", portno, nsent, total_sent);fflush(stdout);
}*/
if((nsent<=0) || (nsent == packet_size)) {
/* if(portno%2){
cprintf(BLUE,"%d breaking out of loop %d\n",portno, nsent);fflush(stdout);
}else{
cprintf(GREEN,"%d breaking out of loop %d\n",portno, nsent);fflush(stdout);
}*/
break; break;
} if(nsent != packet_size && nsent != header_packet_size)
if(nsent != packet_size && nsent != header_packet_size){ cprintf(RED,"Incomplete Packet size %d\n",nsent);
cprintf(RED,"%d Incomplete Packet size %d\n",portno, nsent);fflush(stdout);
}
} }
//nsent = 1040; //nsent = 1040;
total_sent+=nsent; total_sent+=nsent;
@ -673,13 +649,8 @@ enum communicationProtocol{
#ifdef VERY_VERBOSE #ifdef VERY_VERBOSE
cout << "sent "<< total_sent << " Bytes" << endl; cout << "sent "<< total_sent << " Bytes" << endl;
#endif #endif
/*if(protocol == UDP){
if(portno%2){
cprintf(BLUE,"%d exiting total sent %d\n",portno, total_sent);fflush(stdout);
}else{
cprintf(GREEN,"%d exiting total sent %d\n",portno, total_sent);fflush(stdout);
}
}*/
return total_sent; return total_sent;
@ -752,11 +723,11 @@ enum communicationProtocol{
private: private:
volatile int nsending;
volatile int nsent; int nsending;
volatile int total_sent; int nsent;
int total_sent;
int header_packet_size; int header_packet_size;
const int portno;
// pthread_mutex_t mp; // pthread_mutex_t mp;

View File

@ -35,7 +35,7 @@ void UDPBaseImplementation::initializeMembers(){
//**detector parameters*** //**detector parameters***
myDetectorType = GENERIC; myDetectorType = GENERIC;
memset(detHostname,0,MAX_STR_LENGTH); strcpy(detHostname,"");
packetsPerFrame = 0; packetsPerFrame = 0;
acquisitionPeriod = 0; acquisitionPeriod = 0;
acquisitionTime = 0; acquisitionTime = 0;
@ -51,15 +51,14 @@ void UDPBaseImplementation::initializeMembers(){
activated = true; activated = true;
//***connection parameters*** //***connection parameters***
memset(eth,0,MAX_STR_LENGTH); strcpy(eth,"");
for(int i=0;i<MAX_NUMBER_OF_LISTENING_THREADS;i++){ for(int i=0;i<MAX_NUMBER_OF_LISTENING_THREADS;i++){
udpPortNum[i] = DEFAULT_UDP_PORTNO + i; udpPortNum[i] = DEFAULT_UDP_PORTNO + i;
} }
//***file parameters*** //***file parameters***
memset(fileName,0,MAX_STR_LENGTH); strcpy(fileName,"run");
snprintf(fileName,MAX_STR_LENGTH,"run"); strcpy(filePath,"");
memset(filePath,0,MAX_STR_LENGTH);
fileIndex = 0; fileIndex = 0;
scanTag = 0; scanTag = 0;
frameIndexEnable = false; frameIndexEnable = false;
@ -97,8 +96,7 @@ char *UDPBaseImplementation::getDetectorHostname() const{
return NULL; return NULL;
char* output = new char[MAX_STR_LENGTH](); char* output = new char[MAX_STR_LENGTH]();
memset(output,0,MAX_STR_LENGTH); strcpy(output,detHostname);
snprintf(output,MAX_STR_LENGTH,detHostname);
//freed by calling function //freed by calling function
return output; return output;
} }
@ -117,8 +115,7 @@ char *UDPBaseImplementation::getFileName() const{
return NULL; return NULL;
char* output = new char[MAX_STR_LENGTH](); char* output = new char[MAX_STR_LENGTH]();
memset(output,0,MAX_STR_LENGTH); strcpy(output,fileName);
snprintf(output,MAX_STR_LENGTH,fileName);
//freed by calling function //freed by calling function
return output; return output;
} }
@ -130,8 +127,7 @@ char *UDPBaseImplementation::getFilePath() const{
return NULL; return NULL;
char* output = new char[MAX_STR_LENGTH](); char* output = new char[MAX_STR_LENGTH]();
memset(output,0,MAX_STR_LENGTH); strcpy(output,filePath);
snprintf(output,MAX_STR_LENGTH,filePath);
//freed by calling function //freed by calling function
return output; return output;
} }
@ -170,8 +166,7 @@ char *UDPBaseImplementation::getEthernetInterface() const{
char* output = new char[MAX_STR_LENGTH](); char* output = new char[MAX_STR_LENGTH]();
memset(output,0,MAX_STR_LENGTH); strcpy(output,eth);
snprintf(output,MAX_STR_LENGTH,eth);
//freed by calling function //freed by calling function
return output; return output;
} }
@ -220,7 +215,7 @@ void UDPBaseImplementation::setFlippedData(int axis, int enable){
flippedData[axis] = enable==0?0:1; flippedData[axis] = enable==0?0:1;
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Flipped Data: %d , %d ", flippedData[0], flippedData[1]); sprintf(cstreambuf, "Flipped Data: %d , %d ", flippedData[0], flippedData[1]);
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
} }
@ -228,13 +223,11 @@ void UDPBaseImplementation::setFlippedData(int axis, int enable){
/***file parameters***/ /***file parameters***/
void UDPBaseImplementation::setFileName(const char c[]){ void UDPBaseImplementation::setFileName(const char c[]){
if(strlen(c)){ if(strlen(c))
memset(fileName,0,MAX_STR_LENGTH); strcpy(fileName, c);
snprintf(fileName,MAX_STR_LENGTH,c);
}
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "File name: %s ", fileName); sprintf(cstreambuf, "File name: %s ", fileName);
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
} }
@ -243,20 +236,20 @@ void UDPBaseImplementation::setFilePath(const char c[]){
if(strlen(c)){ if(strlen(c)){
//check if filepath exists //check if filepath exists
struct stat st; struct stat st;
if(stat(c,&st) == 0){ if(stat(c,&st) == 0)
memset(filePath,0,MAX_STR_LENGTH); strcpy(filePath,c);
snprintf(filePath,MAX_STR_LENGTH,c); else{
}else{ strcpy(filePath,"");
memset(filePath,0,MAX_STR_LENGTH);
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "FilePath does not exist: %s ", filePath); sprintf(cstreambuf, "FilePath does not exist: %s ", filePath);
FILE_LOG(logWARNING, cstreambuf); FILE_LOG(logWARNING, cstreambuf);
} }
strcpy(filePath, c);
} }
/*{ /*{
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "File path:: %s ", filePath); sprintf(cstreambuf, "File path:: %s ", filePath);
FILE_LOG(logDEBUG, cstreambuf); FILE_LOG(logDEBUG, cstreambuf);
}*/ }*/
} }
@ -265,7 +258,7 @@ void UDPBaseImplementation::setFileIndex(const uint64_t i){
fileIndex = i; fileIndex = i;
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "File Index: %lu ", fileIndex); sprintf(cstreambuf, "File Index: %lu ", fileIndex);
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
} }
@ -274,7 +267,7 @@ void UDPBaseImplementation::setScanTag(const int i){
scanTag = i; scanTag = i;
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Scan Tag: %d ", scanTag); sprintf(cstreambuf, "Scan Tag: %d ", scanTag);
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
} }
@ -282,7 +275,7 @@ void UDPBaseImplementation::setFrameIndexEnable(const bool b){
frameIndexEnable = b; frameIndexEnable = b;
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Frame Index Enable: %s ", stringEnable(frameIndexEnable).c_str()); sprintf(cstreambuf, "Frame Index Enable: %s ", stringEnable(frameIndexEnable).c_str());
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
} }
@ -290,7 +283,7 @@ void UDPBaseImplementation::setFileWriteEnable(const bool b){
fileWriteEnable = b; fileWriteEnable = b;
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "File Write Enable: %s ", stringEnable(fileWriteEnable).c_str()); sprintf(cstreambuf, "File Write Enable: %s ", stringEnable(fileWriteEnable).c_str());
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
} }
@ -298,7 +291,7 @@ void UDPBaseImplementation::setOverwriteEnable(const bool b){
overwriteEnable = b; overwriteEnable = b;
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Overwrite Enable: %s ", stringEnable(overwriteEnable).c_str()); sprintf(cstreambuf, "Overwrite Enable: %s ", stringEnable(overwriteEnable).c_str());
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
} }
@ -306,7 +299,7 @@ int UDPBaseImplementation::setDataCompressionEnable(const bool b){
dataCompressionEnable = b; dataCompressionEnable = b;
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Data Compression: %s ", stringEnable(dataCompressionEnable).c_str()); sprintf(cstreambuf, "Data Compression: %s ", stringEnable(dataCompressionEnable).c_str());
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
//overridden methods might return FAIL //overridden methods might return FAIL
@ -319,7 +312,7 @@ void UDPBaseImplementation::setUDPPortNumber(const uint32_t i){
udpPortNum[0] = i; udpPortNum[0] = i;
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "UDP Port Number[0]: %u ", udpPortNum[0]); sprintf(cstreambuf, "UDP Port Number[0]: %u ", udpPortNum[0]);
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
} }
@ -327,15 +320,15 @@ void UDPBaseImplementation::setUDPPortNumber2(const uint32_t i){
udpPortNum[1] = i; udpPortNum[1] = i;
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "UDP Port Number[1]: %u ", udpPortNum[1]); sprintf(cstreambuf, "UDP Port Number[1]: %u ", udpPortNum[1]);
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
} }
void UDPBaseImplementation::setEthernetInterface(const char* c){ void UDPBaseImplementation::setEthernetInterface(const char* c){
memset(eth,0, MAX_STR_LENGTH);
snprintf(eth,MAX_STR_LENGTH, c); strcpy(eth, c);
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Ethernet Interface: %s ", eth); sprintf(cstreambuf, "Ethernet Interface: %s ", eth);
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
} }
@ -345,7 +338,7 @@ void UDPBaseImplementation::setShortFrameEnable(const int i){
shortFrameEnable = i; shortFrameEnable = i;
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Short Frame Enable: %d ", shortFrameEnable); sprintf(cstreambuf, "Short Frame Enable: %d ", shortFrameEnable);
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
} }
@ -353,7 +346,7 @@ int UDPBaseImplementation::setFrameToGuiFrequency(const uint32_t freq){
frameToGuiFrequency = freq; frameToGuiFrequency = freq;
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Frame To Gui Frequency: %u ", frameToGuiFrequency); sprintf(cstreambuf, "Frame To Gui Frequency: %u ", frameToGuiFrequency);
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
//overrridden child classes might return FAIL //overrridden child classes might return FAIL
@ -364,7 +357,7 @@ void UDPBaseImplementation::setFrameToGuiTimer(const uint32_t time_in_ms){
frameToGuiTimerinMS = time_in_ms; frameToGuiTimerinMS = time_in_ms;
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Frame To Gui Timer: %u ", frameToGuiTimerinMS); sprintf(cstreambuf, "Frame To Gui Timer: %u ", frameToGuiTimerinMS);
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
} }
@ -373,7 +366,7 @@ uint32_t UDPBaseImplementation::setDataStreamEnable(const uint32_t enable){
dataStreamEnable = enable; dataStreamEnable = enable;
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Streaming Data from Receiver: %d ", dataStreamEnable); sprintf(cstreambuf, "Streaming Data from Receiver: %d ", dataStreamEnable);
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
//overrridden child classes might return FAIL //overrridden child classes might return FAIL
@ -385,7 +378,7 @@ int UDPBaseImplementation::setAcquisitionPeriod(const uint64_t i){
acquisitionPeriod = i; acquisitionPeriod = i;
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Acquisition Period: %f s ", (double)acquisitionPeriod/(1E9)); sprintf(cstreambuf, "Acquisition Period: %f s ", (double)acquisitionPeriod/(1E9));
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
//overrridden child classes might return FAIL //overrridden child classes might return FAIL
@ -396,7 +389,7 @@ int UDPBaseImplementation::setAcquisitionTime(const uint64_t i){
acquisitionTime = i; acquisitionTime = i;
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Acquisition Time: %f s ", (double)acquisitionTime/(1E9)); sprintf(cstreambuf, "Acquisition Time: %f s ", (double)acquisitionTime/(1E9));
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
//overrridden child classes might return FAIL //overrridden child classes might return FAIL
@ -407,7 +400,7 @@ int UDPBaseImplementation::setNumberOfFrames(const uint64_t i){
numberOfFrames = i; numberOfFrames = i;
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Number of Frames: %lu ", numberOfFrames); sprintf(cstreambuf, "Number of Frames: %lu ", numberOfFrames);
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
//overrridden child classes might return FAIL //overrridden child classes might return FAIL
@ -418,7 +411,7 @@ int UDPBaseImplementation::setDynamicRange(const uint32_t i){
dynamicRange = i; dynamicRange = i;
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Dynamic Range: %u ", dynamicRange); sprintf(cstreambuf, "Dynamic Range: %u ", dynamicRange);
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
//overrridden child classes might return FAIL //overrridden child classes might return FAIL
@ -429,7 +422,7 @@ int UDPBaseImplementation::setTenGigaEnable(const bool b){
tengigaEnable = b; tengigaEnable = b;
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Ten Giga Enable: %s ", stringEnable(tengigaEnable).c_str()); sprintf(cstreambuf, "Ten Giga Enable: %s ", stringEnable(tengigaEnable).c_str());
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
//overridden functions might return FAIL //overridden functions might return FAIL
@ -440,7 +433,7 @@ int UDPBaseImplementation::setFifoDepth(const uint32_t i){
fifoDepth = i; fifoDepth = i;
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Fifo Depth: %u ", i); sprintf(cstreambuf, "Fifo Depth: %u ", i);
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
//overridden functions might return FAIL //overridden functions might return FAIL
@ -459,7 +452,7 @@ int UDPBaseImplementation::setDetectorType(const detectorType d){
myDetectorType = d; myDetectorType = d;
//if eiger, set numberofListeningThreads = 2; //if eiger, set numberofListeningThreads = 2;
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Detector Type: %s ", getDetectorType(d).c_str()); sprintf(cstreambuf, "Detector Type: %s ", getDetectorType(d).c_str());
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
return OK; return OK;
@ -467,12 +460,10 @@ int UDPBaseImplementation::setDetectorType(const detectorType d){
void UDPBaseImplementation::initialize(const char *c){ void UDPBaseImplementation::initialize(const char *c){
if(strlen(c)){ if(strlen(c))
memset(detHostname,0,MAX_STR_LENGTH); strcpy(detHostname, c);
snprintf(detHostname, MAX_STR_LENGTH, c);
}
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Detector Hostname: %s ", detHostname); sprintf(cstreambuf, "Detector Hostname: %s ", detHostname);
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
} }
@ -484,7 +475,7 @@ void UDPBaseImplementation::resetAcquisitionCount(){
totalPacketsCaught = 0; totalPacketsCaught = 0;
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Total Packets Caught: %lu ", totalPacketsCaught); sprintf(cstreambuf, "Total Packets Caught: %lu ", totalPacketsCaught);
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
} }
@ -537,7 +528,7 @@ int UDPBaseImplementation::setActivate(int enable){
activated = enable; activated = enable;
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Activation: %s ", stringEnable(activated).c_str()); sprintf(cstreambuf, "Activation: %s ", stringEnable(activated).c_str());
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
} }

View File

@ -146,9 +146,9 @@ void UDPStandardImplementation::initializeMembers(){
} }
#endif #endif
for(int i=0; i<MAX_NUMBER_OF_WRITER_THREADS; i++){ for(int i=0; i<MAX_NUMBER_OF_WRITER_THREADS; i++){
memset(completeFileName[i], 0, MAX_STR_LENGTH); strcpy(completeFileName[i],"");
memset(fileNamePerThread[i], 0, MAX_STR_LENGTH); strcpy(fileNamePerThread[i],"");
memset(fileHeader[i], 0, FILE_HEADER_SIZE); strcpy(fileHeader[i],"");
sfilefd[i] = 0; sfilefd[i] = 0;
} }
maxFramesPerFile = 0; maxFramesPerFile = 0;
@ -190,7 +190,7 @@ void UDPStandardImplementation::initializeMembers(){
//***receiver to GUI parameters*** //***receiver to GUI parameters***
for(int i=0; i<MAX_NUMBER_OF_WRITER_THREADS; i++){ for(int i=0; i<MAX_NUMBER_OF_WRITER_THREADS; i++){
latestData[i] = 0; latestData[i] = 0;
memset(guiFileName[i],0,MAX_STR_LENGTH); strcpy(guiFileName[i],"");
guiNumPackets[i] = 0; guiNumPackets[i] = 0;
frametoGuiCounter[i] = 0; frametoGuiCounter[i] = 0;
} }
@ -309,7 +309,7 @@ int UDPStandardImplementation::setupFifoStructure(){
} }
{ {
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Number of Frames per buffer: %d ",numberofJobsPerBuffer); sprintf(cstreambuf, "Number of Frames per buffer: %d ",numberofJobsPerBuffer);
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
} }
} }
@ -332,7 +332,7 @@ int UDPStandardImplementation::setupFifoStructure(){
{ {
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Total Fifo Size: %u ",fifoSize); sprintf(cstreambuf, "Total Fifo Size: %u ",fifoSize);
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
} }
@ -426,13 +426,10 @@ void UDPStandardImplementation::setFileName(const char c[]){
char oldfilename[MAX_STR_LENGTH]; char oldfilename[MAX_STR_LENGTH];
memset(oldfilename,0,MAX_STR_LENGTH); strcpy(oldfilename,fileName);
snprintf(oldfilename,MAX_STR_LENGTH, fileName);
if(strlen(c)){ if(strlen(c))
memset(fileName,0,MAX_STR_LENGTH); strcpy(fileName, c);
snprintf(fileName,MAX_STR_LENGTH, c);
}
if(strlen(fileName)){ if(strlen(fileName)){
int detindex = -1; int detindex = -1;
@ -448,7 +445,7 @@ void UDPStandardImplementation::setFileName(const char c[]){
} }
{ {
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "File name: %s ",fileName); sprintf(cstreambuf, "File name: %s ",fileName);
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
} }
} }
@ -491,7 +488,7 @@ int UDPStandardImplementation::setDataCompressionEnable(const bool b){
initializeFilter(); initializeFilter();
{ {
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Data Compression: %s ",stringEnable(dataCompressionEnable).c_str()); sprintf(cstreambuf, "Data Compression: %s ",stringEnable(dataCompressionEnable).c_str());
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
} }
return OK; return OK;
@ -542,7 +539,7 @@ void UDPStandardImplementation::setShortFrameEnable(const int i){
initializeFilter(); initializeFilter();
{ {
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Short Frame Enable: %d ", shortFrameEnable); sprintf(cstreambuf, "Short Frame Enable: %d ", shortFrameEnable);
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
} }
} }
@ -556,7 +553,7 @@ int UDPStandardImplementation::setFrameToGuiFrequency(const uint32_t freq){
return FAIL; return FAIL;
{ {
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Frame to Gui Frequency: %u ",frameToGuiFrequency); sprintf(cstreambuf, "Frame to Gui Frequency: %u ",frameToGuiFrequency);
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
} }
return OK; return OK;
@ -571,7 +568,7 @@ uint32_t UDPStandardImplementation::setDataStreamEnable(const uint32_t enable){
dataStreamEnable = enable; dataStreamEnable = enable;
{ {
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Data Send to Gui: %d ", dataStreamEnable); sprintf(cstreambuf, "Data Send to Gui: %d ", dataStreamEnable);
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
} }
@ -602,7 +599,7 @@ int UDPStandardImplementation::setAcquisitionPeriod(const uint64_t i){
{ {
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Acquisition Period: %f s", (double)acquisitionPeriod/(1E9)); sprintf(cstreambuf, "Acquisition Period: %f s", (double)acquisitionPeriod/(1E9));
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
} }
@ -623,7 +620,7 @@ int UDPStandardImplementation::setAcquisitionTime(const uint64_t i){
{ {
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Acquisition Period: %f s ", (double)acquisitionTime/(1E9)); sprintf(cstreambuf, "Acquisition Period: %f s ", (double)acquisitionTime/(1E9));
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
} }
@ -644,7 +641,7 @@ int UDPStandardImplementation::setNumberOfFrames(const uint64_t i){
{ {
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Number of Frames: %lu ", numberOfFrames); sprintf(cstreambuf, "Number of Frames: %lu ", numberOfFrames);
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
} }
@ -662,7 +659,7 @@ int UDPStandardImplementation::setDynamicRange(const uint32_t i){
{ {
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Setting Dynamic Range to %u ", i); sprintf(cstreambuf, "Setting Dynamic Range to %u ", i);
FILE_LOG(logDEBUG1, cstreambuf); FILE_LOG(logDEBUG1, cstreambuf);
} }
@ -686,7 +683,6 @@ int UDPStandardImplementation::setDynamicRange(const uint32_t i){
} }
for(int i=0;i<numberofWriterThreads;i++){ for(int i=0;i<numberofWriterThreads;i++){
latestData[i] = new char[bufferSize+sizeof(sls_detector_header)](); latestData[i] = new char[bufferSize+sizeof(sls_detector_header)]();
memset(latestData[i], 0, bufferSize+sizeof(sls_detector_header));
} }
//restructure fifo //restructure fifo
numberofJobsPerBuffer = -1; numberofJobsPerBuffer = -1;
@ -699,7 +695,7 @@ int UDPStandardImplementation::setDynamicRange(const uint32_t i){
{ {
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Dynamic Range: %u ", dynamicRange); sprintf(cstreambuf, "Dynamic Range: %u ", dynamicRange);
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
} }
return OK; return OK;
@ -711,7 +707,7 @@ int UDPStandardImplementation::setTenGigaEnable(const bool b){
{ {
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Setting Ten Giga to %s ", stringEnable(b).c_str()); sprintf(cstreambuf, "Setting Ten Giga to %s ", stringEnable(b).c_str());
FILE_LOG(logDEBUG1, cstreambuf); FILE_LOG(logDEBUG1, cstreambuf);
} }
@ -735,7 +731,7 @@ int UDPStandardImplementation::setTenGigaEnable(const bool b){
{ {
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "packetsPerFrame: %u\n" sprintf(cstreambuf, "packetsPerFrame: %u\n"
"onePacketSize: %d\n" "onePacketSize: %d\n"
"oneDataSize: %d\n" "oneDataSize: %d\n"
"bufferSize: %d ", "bufferSize: %d ",
@ -755,7 +751,6 @@ int UDPStandardImplementation::setTenGigaEnable(const bool b){
} }
for(int i=0;i<numberofWriterThreads;i++){ for(int i=0;i<numberofWriterThreads;i++){
latestData[i] = new char[bufferSize+sizeof(sls_detector_header)](); latestData[i] = new char[bufferSize+sizeof(sls_detector_header)]();
memset(latestData[i], 0, bufferSize+sizeof(sls_detector_header));
} }
//restructure fifo //restructure fifo
@ -768,7 +763,7 @@ int UDPStandardImplementation::setTenGigaEnable(const bool b){
{ {
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Ten Giga: %s ", stringEnable(tengigaEnable).c_str()); sprintf(cstreambuf, "Ten Giga: %s ", stringEnable(tengigaEnable).c_str());
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
} }
return OK; return OK;
@ -781,7 +776,7 @@ int UDPStandardImplementation::setFifoDepth(const uint32_t i){
if(i != fifoDepth){ if(i != fifoDepth){
{ {
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Fifo Depth: %u ", i); sprintf(cstreambuf, "Fifo Depth: %u ", i);
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
} }
fifoDepth = i; fifoDepth = i;
@ -819,11 +814,11 @@ int UDPStandardImplementation::setDetectorType(const detectorType d){
case EIGER: case EIGER:
case JUNGFRAUCTB: case JUNGFRAUCTB:
case JUNGFRAU: case JUNGFRAU:
snprintf(cstreambuf, MAX_STR_LENGTH, " ***** %s Receiver *** ", getDetectorType(d).c_str()); sprintf(cstreambuf, " ***** %s Receiver *** ", getDetectorType(d).c_str());
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
break; break;
default: default:
snprintf(cstreambuf, MAX_STR_LENGTH, "This is an unknown receiver type %d ", (int)d); sprintf(cstreambuf, "This is an unknown receiver type %d ", (int)d);
FILE_LOG(logERROR, cstreambuf); FILE_LOG(logERROR, cstreambuf);
return FAIL; return FAIL;
} }
@ -918,7 +913,7 @@ int UDPStandardImplementation::setDetectorType(const detectorType d){
excludeMissingPackets=true; excludeMissingPackets=true;
break; break;
default: default:
snprintf(cstreambuf, MAX_STR_LENGTH, "This is an unknown receiver type %d ", (int)d); sprintf(cstreambuf, "This is an unknown receiver type %d ", (int)d);
FILE_LOG(logERROR, cstreambuf); FILE_LOG(logERROR, cstreambuf);
return FAIL; return FAIL;
} }
@ -955,14 +950,10 @@ int UDPStandardImplementation::setDetectorType(const detectorType d){
if(latestData[i]) {delete[] latestData[i];latestData[i] = 0;} if(latestData[i]) {delete[] latestData[i];latestData[i] = 0;}
} }
for(int i=0; i<numberofWriterThreads; i++){ for(int i=0; i<numberofWriterThreads; i++){
if(excludeMissingPackets){ if(excludeMissingPackets)
latestData[i] = new char[bufferSize+sizeof(sls_detector_header)](); latestData[i] = new char[bufferSize+sizeof(sls_detector_header)]();
memset(latestData[i], 0, bufferSize+sizeof(sls_detector_header)); else
}
else{
latestData[i] = new char[bufferSize](); latestData[i] = new char[bufferSize]();
memset(latestData[i], 0, bufferSize);
}
} }
@ -973,7 +964,7 @@ int UDPStandardImplementation::setDetectorType(const detectorType d){
} }
{ {
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Detector type set to %s ", getDetectorType(d).c_str()); sprintf(cstreambuf, "Detector type set to %s ", getDetectorType(d).c_str());
FILE_LOG(logDEBUG1, cstreambuf); FILE_LOG(logDEBUG1, cstreambuf);
} }
return OK; return OK;
@ -1037,7 +1028,7 @@ int UDPStandardImplementation::startReceiver(char *c){
//reset gui variables //reset gui variables
frametoGuiCounter[i] = 0; frametoGuiCounter[i] = 0;
guiNumPackets[i] = 0; guiNumPackets[i] = 0;
memset(guiFileName[i],0,MAX_STR_LENGTH); strcpy(guiFileName[i],"");
} }
pthread_mutex_lock(&writeMutex); pthread_mutex_lock(&writeMutex);
@ -1056,16 +1047,16 @@ int UDPStandardImplementation::startReceiver(char *c){
{ {
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
if(myDetectorType != EIGER){ if(myDetectorType != EIGER){
snprintf(cstreambuf, MAX_STR_LENGTH, "Data Compression has been %s ", stringEnable(dataCompressionEnable).c_str()); sprintf(cstreambuf, "Data Compression has been %s ", stringEnable(dataCompressionEnable).c_str());
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
} }
snprintf(cstreambuf, MAX_STR_LENGTH, "Number of Jobs Per Buffer: %d\n" sprintf(cstreambuf, "Number of Jobs Per Buffer: %d\n"
"Max Frames Per File: %lu ", "Max Frames Per File: %lu ",
numberofJobsPerBuffer, maxFramesPerFile); numberofJobsPerBuffer, maxFramesPerFile);
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
if(frameToGuiFrequency) { if(frameToGuiFrequency) {
snprintf(cstreambuf, MAX_STR_LENGTH, "Frequency of frames sent to gui: %u ", frameToGuiFrequency); sprintf(cstreambuf, "Frequency of frames sent to gui: %u ", frameToGuiFrequency);
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
} else } else
FILE_LOG(logINFO, "Frequency of frames sent to gui: Random "); FILE_LOG(logINFO, "Frequency of frames sent to gui: Random ");
@ -1073,8 +1064,7 @@ int UDPStandardImplementation::startReceiver(char *c){
//create UDP sockets //create UDP sockets
if(createUDPSockets() == FAIL){ if(createUDPSockets() == FAIL){
memset(c, 0, MAX_STR_LENGTH); strcpy(c,"Could not create UDP Socket(s).");
snprintf(c,MAX_STR_LENGTH,"Could not create UDP Socket(s).");
FILE_LOG(logERROR,"Could not create UDP Socket(s). "); FILE_LOG(logERROR,"Could not create UDP Socket(s). ");
return FAIL; return FAIL;
} }
@ -1082,8 +1072,7 @@ int UDPStandardImplementation::startReceiver(char *c){
if(setupWriter() == FAIL){ if(setupWriter() == FAIL){
//stop udp socket //stop udp socket
shutDownUDPSockets(); shutDownUDPSockets();
memset(c, 0, MAX_STR_LENGTH); strcpy(c,"Could not create file");
snprintf(c,MAX_STR_LENGTH,"Could not create file");
FILE_LOG(logERROR, "Could not create file "); FILE_LOG(logERROR, "Could not create file ");
for(int i=0; i < numberofWriterThreads; i++) for(int i=0; i < numberofWriterThreads; i++)
@ -1092,9 +1081,8 @@ int UDPStandardImplementation::startReceiver(char *c){
} }
//For compression, just for gui purposes //For compression, just for gui purposes
if(dataCompressionEnable){ if(dataCompressionEnable)
memset(completeFileName[0],0,MAX_STR_LENGTH); sprintf(completeFileName[0], "%s/%s_fxxx_%lld_xx.root", filePath,fileNamePerThread[0],(long long int)fileIndex);
snprintf(completeFileName[0], MAX_STR_LENGTH, "%s/%s_fxxx_%lld_xx.root", filePath,fileNamePerThread[0],(long long int)fileIndex);}
//initialize semaphore to synchronize between writer and gui reader threads //initialize semaphore to synchronize between writer and gui reader threads
for(int i=0;i<numberofWriterThreads;i++){ for(int i=0;i<numberofWriterThreads;i++){
@ -1128,7 +1116,7 @@ int UDPStandardImplementation::startReceiver(char *c){
{ {
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Receiver Started\n" sprintf(cstreambuf, "Receiver Started\n"
"Status: %s ", runStatusType(status).c_str()); "Status: %s ", runStatusType(status).c_str());
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
} }
@ -1165,7 +1153,7 @@ void UDPStandardImplementation::stopReceiver(){
{ {
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Receiver Stopped\n" sprintf(cstreambuf, "Receiver Stopped\n"
"Status: %s ", runStatusType(status).c_str()); "Status: %s ", runStatusType(status).c_str());
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
} }
@ -1184,7 +1172,7 @@ int UDPStandardImplementation::shutDownUDPSockets(){
udpSocket[i]->ShutDownSocket(); udpSocket[i]->ShutDownSocket();
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Shut down UDP Sock %d ", i); sprintf(cstreambuf, "Shut down UDP Sock %d ", i);
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
delete udpSocket[i]; delete udpSocket[i];
@ -1279,7 +1267,7 @@ void UDPStandardImplementation::closeFile(int ithread){
if(!dataCompressionEnable){ if(!dataCompressionEnable){
if(sfilefd[ithread]){ if(sfilefd[ithread]){
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Going to close file: %d ", fileno(sfilefd[ithread])); sprintf(cstreambuf, "Going to close file: %d ", fileno(sfilefd[ithread]));
FILE_LOG(logDEBUG4, cstreambuf); FILE_LOG(logDEBUG4, cstreambuf);
fflush(sfilefd[ithread]); fflush(sfilefd[ithread]);
@ -1293,7 +1281,7 @@ void UDPStandardImplementation::closeFile(int ithread){
#if (defined(MYROOT1) && defined(ALLFILE_DEBUG)) || !defined(MYROOT1) #if (defined(MYROOT1) && defined(ALLFILE_DEBUG)) || !defined(MYROOT1)
if(sfilefd[0]){ if(sfilefd[0]){
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "sfilefd: %d ", fileno(sfilefd[0])); sprintf(cstreambuf, "sfilefd: %d ", fileno(sfilefd[0]));
FILE_LOG(logDEBUG4, cstreambuf); FILE_LOG(logDEBUG4, cstreambuf);
fclose(sfilefd[0]); fclose(sfilefd[0]);
@ -1336,7 +1324,7 @@ int UDPStandardImplementation::setActivate(int enable){
if(enable != -1){ if(enable != -1){
activated = enable; activated = enable;
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Activation: %s ", stringEnable(activated).c_str()); sprintf(cstreambuf, "Activation: %s ", stringEnable(activated).c_str());
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
} }
@ -1394,7 +1382,7 @@ int UDPStandardImplementation::createDataCallbackThreads(bool destroy){
currentThreadIndex = i; currentThreadIndex = i;
if(pthread_create(&dataCallbackThreads[i], NULL,startDataCallbackThread, (void*) this)){ if(pthread_create(&dataCallbackThreads[i], NULL,startDataCallbackThread, (void*) this)){
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Could not create data call back thread with index %d ", i); sprintf(cstreambuf, "Could not create data call back thread with index %d ", i);
FILE_LOG(logERROR, cstreambuf); FILE_LOG(logERROR, cstreambuf);
return FAIL; return FAIL;
} }
@ -1460,7 +1448,7 @@ int UDPStandardImplementation::createListeningThreads(bool destroy){
currentThreadIndex = i; currentThreadIndex = i;
if(pthread_create(&listeningThreads[i], NULL,startListeningThread, (void*) this)){ if(pthread_create(&listeningThreads[i], NULL,startListeningThread, (void*) this)){
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Could not create listening thread with index %d ", i); sprintf(cstreambuf, "Could not create listening thread with index %d ", i);
FILE_LOG(logERROR, cstreambuf); FILE_LOG(logERROR, cstreambuf);
return FAIL; return FAIL;
} }
@ -1526,7 +1514,7 @@ int UDPStandardImplementation::createWriterThreads(bool destroy){
currentThreadIndex = i; currentThreadIndex = i;
if(pthread_create(&writingThreads[i], NULL,startWritingThread, (void*) this)){ if(pthread_create(&writingThreads[i], NULL,startWritingThread, (void*) this)){
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Could not create writer thread with index %d ", i); sprintf(cstreambuf, "Could not create writer thread with index %d ", i);
FILE_LOG(logERROR, cstreambuf); FILE_LOG(logERROR, cstreambuf);
return FAIL; return FAIL;
} }
@ -1607,9 +1595,8 @@ int UDPStandardImplementation::createUDPSockets(){
//if eth is mistaken with ip address //if eth is mistaken with ip address
if (strchr(eth,'.') != NULL){ if (strchr(eth,'.') != NULL)
memset(eth,0,MAX_STR_LENGTH); strcpy(eth,"");
}
shutDownUDPSockets(); shutDownUDPSockets();
int headerpacketsize = 0; int headerpacketsize = 0;
@ -1627,7 +1614,7 @@ int UDPStandardImplementation::createUDPSockets(){
else{ else{
{ {
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Ethernet Interface: %s", eth); sprintf(cstreambuf, "Ethernet Interface: %s", eth);
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
} }
for(int i=0;i<numberofListeningThreads;i++) for(int i=0;i<numberofListeningThreads;i++)
@ -1641,7 +1628,7 @@ int UDPStandardImplementation::createUDPSockets(){
cout << "UDP port opened at port " << port[i] << endl; cout << "UDP port opened at port " << port[i] << endl;
}else{ }else{
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Could not create UDP socket on port %u error: %d ", port[i], iret); sprintf(cstreambuf, "Could not create UDP socket on port %u error: %d ", port[i], iret);
FILE_LOG(logERROR, cstreambuf); FILE_LOG(logERROR, cstreambuf);
shutDownUDPSockets(); shutDownUDPSockets();
return FAIL; return FAIL;
@ -1690,7 +1677,7 @@ int UDPStandardImplementation::setupWriter(){
{ {
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
for(int i=0; i<numberofWriterThreads; i++){ for(int i=0; i<numberofWriterThreads; i++){
snprintf(cstreambuf, MAX_STR_LENGTH, "%d Going to post 1st semaphore ",i); sprintf(cstreambuf, "%d Going to post 1st semaphore ",i);
FILE_LOG(logDEBUG4, cstreambuf); FILE_LOG(logDEBUG4, cstreambuf);
sem_post(&writerSemaphore[i]); sem_post(&writerSemaphore[i]);
@ -1723,15 +1710,14 @@ int UDPStandardImplementation::createNewFile(int ithread){
//create file name //create file name
memset(completeFileName[ithread],0,MAX_STR_LENGTH);
if(!frameIndexEnable) if(!frameIndexEnable)
snprintf(completeFileName[ithread], MAX_STR_LENGTH, "%s/%s_%lld.raw", filePath,fileNamePerThread[ithread],(long long int)fileIndex); sprintf(completeFileName[ithread], "%s/%s_%lld.raw", filePath,fileNamePerThread[ithread],(long long int)fileIndex);
else else
snprintf(completeFileName[ithread], MAX_STR_LENGTH, "%s/%s_f%012lld_%lld.raw", filePath,fileNamePerThread[ithread],(long long int)lastFrameNumberInFile[ithread]+1,(long long int)fileIndex); sprintf(completeFileName[ithread], "%s/%s_f%012lld_%lld.raw", filePath,fileNamePerThread[ithread],(long long int)lastFrameNumberInFile[ithread]+1,(long long int)fileIndex);
{ {
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "%s ", completeFileName[ithread]); sprintf(cstreambuf, "%s ", completeFileName[ithread]);
FILE_LOG(logDEBUG4, cstreambuf); FILE_LOG(logDEBUG4, cstreambuf);
} }
//filewrite enable & we allowed to create/close files //filewrite enable & we allowed to create/close files
@ -1754,7 +1740,7 @@ int UDPStandardImplementation::createNewFile(int ithread){
if(!overwriteEnable){ if(!overwriteEnable){
if (NULL == (sfilefd[ithread] = fopen((const char *) (completeFileName[ithread]), "wx"))){ if (NULL == (sfilefd[ithread] = fopen((const char *) (completeFileName[ithread]), "wx"))){
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Could not create/overwrite file %s ", completeFileName[ithread]); sprintf(cstreambuf, "Could not create/overwrite file %s ", completeFileName[ithread]);
FILE_LOG(logERROR, cstreambuf); FILE_LOG(logERROR, cstreambuf);
sfilefd[ithread] = 0; sfilefd[ithread] = 0;
@ -1762,7 +1748,7 @@ int UDPStandardImplementation::createNewFile(int ithread){
} }
}else if (NULL == (sfilefd[ithread] = fopen((const char *) (completeFileName[ithread]), "w"))){ }else if (NULL == (sfilefd[ithread] = fopen((const char *) (completeFileName[ithread]), "w"))){
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Could not create file %s ", completeFileName[ithread]); sprintf(cstreambuf, "Could not create file %s ", completeFileName[ithread]);
FILE_LOG(logERROR, cstreambuf); FILE_LOG(logERROR, cstreambuf);
sfilefd[ithread] = 0; sfilefd[ithread] = 0;
@ -1834,14 +1820,13 @@ int UDPStandardImplementation::createCompressionFile(int ithread, int iframe){
#ifdef MYROOT1 #ifdef MYROOT1
char temp[MAX_STR_LENGTH]; char temp[MAX_STR_LENGTH];
memset(temp,0,MAX_STR_LENGTH);
//create file name for gui purposes, and set up acquistion parameters //create file name for gui purposes, and set up acquistion parameters
snprintf(temp,MAX_STR_LENGTH, "%s/%s_fxxx_%d_%d.root", filePath,fileNamePerThread[ithread],fileIndex,ithread); sprintf(temp, "%s/%s_fxxx_%d_%d.root", filePath,fileNamePerThread[ithread],fileIndex,ithread);
//file //file
myFile[ithread] = new TFile(temp,"RECREATE");/** later return error if it exists */ myFile[ithread] = new TFile(temp,"RECREATE");/** later return error if it exists */
cprintf(GREEN,"Writing_Thread %d: Created Compression File: %s\n",ithread, temp); cprintf(GREEN,"Writing_Thread %d: Created Compression File: %s\n",ithread, temp);
//tree //tree
snprintf(temp, MAX_STR_LENGTH,"%s_fxxx_%d_%d",fileNamePerThread[ithread],fileIndex,ithread); sprintf(temp, "%s_fxxx_%d_%d",fileNamePerThread[ithread],fileIndex,ithread);
myTree[ithread]=singlePhotonDetectorObject[ithread]->initEventTree(temp, &iframe); myTree[ithread]=singlePhotonDetectorObject[ithread]->initEventTree(temp, &iframe);
//resets the pedestalSubtraction array and the commonModeSubtraction //resets the pedestalSubtraction array and the commonModeSubtraction
singlePhotonDetectorObject[ithread]->newDataSet(); singlePhotonDetectorObject[ithread]->newDataSet();
@ -1893,10 +1878,9 @@ void UDPStandardImplementation::startDataCallback(){
struct timespec begin,end; struct timespec begin,end;
// server address to bind // server address to bind
char hostName[100]; char hostName[100] = "tcp://*:";//"tcp://127.0.0.1:";
memset(hostName,0,100);
int portno = DEFAULT_ZMQ_PORTNO + (detID*numberofListeningThreads+ithread); int portno = DEFAULT_ZMQ_PORTNO + (detID*numberofListeningThreads+ithread);
snprintf(hostName,100,"tcp://*:%d",portno);//"tcp://127.0.0.1:"; sprintf(hostName,"%s%d",hostName,portno);
//socket details //socket details
void *context = zmq_ctx_new(); void *context = zmq_ctx_new();
@ -1909,7 +1893,7 @@ void UDPStandardImplementation::startDataCallback(){
// bind // bind
{ {
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Thread %d: ZMQ Server at %s ", ithread, hostName); sprintf(cstreambuf, "Thread %d: ZMQ Server at %s ", ithread, hostName);
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
} }
@ -1921,18 +1905,19 @@ void UDPStandardImplementation::startDataCallback(){
//infinite loop, exited only to change dynamic range, 10G parameters etc (then recreated again) //infinite loop, exited only to change dynamic range, 10G parameters etc (then recreated again)
while(true){ while(true){
int oneframesize = oneDataSize * packetsPerFrame;
char* buffer = new char[packetsPerFrame*oneDataSize]();
memset(buffer,0xFF,oneframesize);
bool randomSendNow = true; bool randomSendNow = true;
//header details //header details
const char *jsonFmt ="{" const char *jsonFmt ="{"
"\"jsonversion\":%u, " "\"jsonversion\":%u, "
"\"acqIndex\":%llu, " "\"acqIndex\":%llu, "
"\"fIndex\":%llu, " "\"fIndex\":%llu, "
"\"bitmode\":%d, " "\"bitmode\":%d, "
"\"shapex\": %d, " "\"shape\":[%d, %d], "
"\"shapey\": %d, " "\"fname\":\"%s\", "
"\"fname\":\"%s\", "
"\"data\": %d, "
"\"frameNumber\":%llu, " "\"frameNumber\":%llu, "
"\"expLength\":%u, " "\"expLength\":%u, "
@ -1947,14 +1932,15 @@ void UDPStandardImplementation::startDataCallback(){
"\"roundRNumber\":%u, " "\"roundRNumber\":%u, "
"\"detType\":%u, " "\"detType\":%u, "
"\"version\":%u" "\"version\":%u"
"}\n";
"}\n\0";
int npixelsx=0, npixelsy=0; int npixelsx=0, npixelsy=0;
switch(myDetectorType) { switch(myDetectorType) {
case JUNGFRAU: npixelsx = JFRAU_PIXELS_IN_ONE_ROW; npixelsy = JFRAU_PIXELS_IN_ONE_COL; break; case JUNGFRAU: npixelsx = JFRAU_PIXELS_IN_ONE_ROW; npixelsy = JFRAU_PIXELS_IN_ONE_COL; break;
case EIGER: npixelsx = EIGER_PIXELS_IN_ONE_ROW; npixelsy = EIGER_PIXELS_IN_ONE_COL; break; case EIGER: npixelsx = EIGER_PIXELS_IN_ONE_ROW; npixelsy = EIGER_PIXELS_IN_ONE_COL; break;
default:break; /* will not work for other detectors*/ default:break; /* will not work for other detectors*/
} }
uint64_t acquisitionIndex = -1;
uint64_t frameIndex = -1;
#ifdef DEBUG #ifdef DEBUG
int oldpnum = -1; int oldpnum = -1;
#endif #endif
@ -1977,22 +1963,19 @@ void UDPStandardImplementation::startDataCallback(){
cprintf(BLUE,"%d sending dummy\n"); cprintf(BLUE,"%d sending dummy\n");
#endif #endif
frameIndex = -1;
acquisitionIndex = -1;
{ {
char buf[MAX_STR_LENGTH]="";memset(buf,0xFF,1000); char buf[1000]="";memset(buf,0,1000);
int len = snprintf(buf,MAX_STR_LENGTH, jsonFmt, sprintf(buf,jsonFmt,
SLS_DETECTOR_JSON_HEADER_VERSION,0,0,0,0,0, "", 0, SLS_DETECTOR_JSON_HEADER_VERSION, acquisitionIndex, frameIndex, dynamicRange, npixelsx, npixelsy,completeFileName[ithread],
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
//cprintf(BLUE,"%d:Dummy:%s.\n",ithread, buf);fflush(stdout);
zmq_send_const(zmqsocket, buf, len, 0);//ZMQ_SNDMORE);
zmq_send(zmqsocket, buf,1000, 0);
} }
cprintf(BLUE,"%d dummy\n",ithread);
/* {
//send final data //send final data
char buf[MAX_STR_LENGTH]="";memset(buf,0xFF,0); zmq_send (zmqsocket, "end\n", 4, 0);
int len = snprintf(buf,MAX_STR_LENGTH,"%s","end\n");
zmq_send_const(zmqsocket, buf,len, 0);
}*/
pthread_mutex_lock(&statusMutex); pthread_mutex_lock(&statusMutex);
dataCallbackThreadsMask^=(1<<ithread); dataCallbackThreadsMask^=(1<<ithread);
pthread_mutex_unlock(&statusMutex); pthread_mutex_unlock(&statusMutex);
@ -2025,24 +2008,19 @@ void UDPStandardImplementation::startDataCallback(){
//update frame details //update frame details
sls_detector_header* header = (sls_detector_header*) (latestData[ithread]); sls_detector_header* header = (sls_detector_header*) (latestData[ithread]);
uint64_t fnum = header->frameNumber; uint64_t fnum = header->frameNumber;
uint64_t frameIndex = fnum - startFrameIndex; frameIndex = fnum - startFrameIndex;
uint64_t acquisitionIndex = fnum - startAcquisitionIndex; acquisitionIndex = fnum - startAcquisitionIndex;
{ {
char buf[MAX_STR_LENGTH]="";memset(buf,0xFF,1000); char buf[1000]="";memset(buf,0,1000);
int len = snprintf(buf,MAX_STR_LENGTH,jsonFmt, sprintf(buf,jsonFmt,
SLS_DETECTOR_JSON_HEADER_VERSION, acquisitionIndex, frameIndex, dynamicRange, npixelsx, npixelsy,completeFileName[ithread],1, SLS_DETECTOR_JSON_HEADER_VERSION, acquisitionIndex, frameIndex, dynamicRange, npixelsx, npixelsy,completeFileName[ithread],
// 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); header->frameNumber, header->expLength, header->packetNumber, header->bunchId, header->timestamp,
header->modId, header->xCoord, header->yCoord, header->zCoord, header->debug, header->roundRNumber, header->detType, header->version);
zmq_send(zmqsocket, buf,1000, 0);
header->frameNumber, header->expLength, header->packetNumber, header->bunchId, header->timestamp,
header->modId, header->xCoord, header->yCoord, header->zCoord, header->debug, header->roundRNumber, header->detType, header->version
);
//cprintf(BLUE,"%d:%s.\n",ithread, buf);fflush(stdout);
zmq_send_const(zmqsocket, buf,len, ZMQ_SNDMORE);
} }
//send data //send data
zmq_send_const(zmqsocket,(latestData[ithread]+sizeof(sls_detector_header)), bufferSize, 0); zmq_send(zmqsocket, (latestData[ithread]+sizeof(sls_detector_header)), bufferSize, 0);
//start clock after sending //start clock after sending
if(!frameToGuiFrequency){ if(!frameToGuiFrequency){
randomSendNow = false; randomSendNow = false;
@ -2061,6 +2039,8 @@ void UDPStandardImplementation::startDataCallback(){
}/*--end of loop for each buffer (inner loop)*/ }/*--end of loop for each buffer (inner loop)*/
//free resources
delete[] buffer;
//end of acquisition, wait for next acquisition/change of parameters //end of acquisition, wait for next acquisition/change of parameters
sem_wait(&dataCallbackSemaphore[ithread]); sem_wait(&dataCallbackSemaphore[ithread]);
@ -2108,7 +2088,6 @@ void UDPStandardImplementation::startListening(){
carryonBufferSize = 0; carryonBufferSize = 0;
if(tempBuffer){delete []tempBuffer;tempBuffer=0;} if(tempBuffer){delete []tempBuffer;tempBuffer=0;}
tempBuffer = new char[onePacketSize * (packetsPerFrame - 1)](); //store maximum of 1 packets less in a frame tempBuffer = new char[onePacketSize * (packetsPerFrame - 1)](); //store maximum of 1 packets less in a frame
memset(tempBuffer,0,onePacketSize * (packetsPerFrame - 1));
} }
/* inner loop - loop for each buffer */ /* inner loop - loop for each buffer */
@ -2123,7 +2102,7 @@ void UDPStandardImplementation::startListening(){
if(activated && !udpSocket[ithread]){ if(activated && !udpSocket[ithread]){
{ {
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Listening_Thread %d: UDP Socket not created or shut down earlier ", ithread); sprintf(cstreambuf, "Listening_Thread %d: UDP Socket not created or shut down earlier ", ithread);
FILE_LOG(logERROR, cstreambuf); FILE_LOG(logERROR, cstreambuf);
} }
stopListening(ithread,0); stopListening(ithread,0);
@ -2270,11 +2249,6 @@ int UDPStandardImplementation::prepareAndListenBufferCompleteFrames(int ithread)
//read first packet //read first packet
pnum = FIRSTPNUM; //first packet number to validate pnum = FIRSTPNUM; //first packet number to validate
if(status != TRANSMITTING) rc = udpSocket[ithread]->ReceiveDataOnly(buffer[ithread] + offset); if(status != TRANSMITTING) rc = udpSocket[ithread]->ReceiveDataOnly(buffer[ithread] + offset);
/*if(!ithread){
cprintf(BLUE,"%d first rc:%d\n",ithread, rc);fflush(stdout);
}else{
cprintf(GREEN,"%d first rc:%d\n",ithread, rc);fflush(stdout);
}*/
if(rc <= 0) return 0; if(rc <= 0) return 0;
if(getFrameandPacketNumber(ithread,buffer[ithread] + offset,fi,pi,si,bi) == FAIL){ if(getFrameandPacketNumber(ithread,buffer[ithread] + offset,fi,pi,si,bi) == FAIL){
pi = ALL_MASK_32; //got 0 from fpga pi = ALL_MASK_32; //got 0 from fpga
@ -2302,7 +2276,7 @@ int UDPStandardImplementation::prepareAndListenBufferCompleteFrames(int ithread)
if(!ithread) cout << "correct packet" << endl; if(!ithread) cout << "correct packet" << endl;
#endif #endif
//copy only data //copy only data
memmove(buffer[ithread] + offset,buffer[ithread] + offset + headerlength, oneDataSize); memcpy(buffer[ithread] + offset,buffer[ithread] + offset + headerlength, oneDataSize);
offset+=oneDataSize; offset+=oneDataSize;
//if complete frame //if complete frame
@ -2390,21 +2364,13 @@ int UDPStandardImplementation::prepareAndListenBufferCompleteFrames(int ithread)
header->detType = (uint8_t) myDetectorType; header->detType = (uint8_t) myDetectorType;
header->version = (uint8_t) SLS_DETECTOR_HEADER_VERSION; header->version = (uint8_t) SLS_DETECTOR_HEADER_VERSION;
//#ifdef VERBOSE #ifdef VERBOSE
//if(!ithread) if(!ithread)
/*if(!ithread) {
cprintf(BLUE, cprintf(BLUE,
"%d framenumber:%lu\tsubfnum:%u\tpnum:%u\tbunchid:%lu\txcoord:%u\tdettype:%u\tversion:%u\n", "framenumber:%lu\tsubfnum:%u\tpnum:%u\tbunchid:%lu\txcoord:%u\tdettype:%u\tversion:%u\n",
ithread, header->frameNumber, header->expLength, header->packetNumber, header->frameNumber, header->expLength, header->packetNumber,
header->bunchId, header->xCoord, header->detType, header->version);fflush(stdout); header->bunchId, header->xCoord, header->detType, header->version);
}else{ #endif
cprintf(GREEN,
"%d framenumber:%lu\tsubfnum:%u\tpnum:%u\tbunchid:%lu\txcoord:%u\tdettype:%u\tversion:%u\n",
ithread, header->frameNumber, header->expLength, header->packetNumber,
header->bunchId, header->xCoord, header->detType, header->version);fflush(stdout);
}*/
//#endif
//write packet count to buffer //write packet count to buffer
*((uint32_t*)(buffer[ithread])) = packetsPerFrame; *((uint32_t*)(buffer[ithread])) = packetsPerFrame;
@ -2467,7 +2433,7 @@ void UDPStandardImplementation::stopListening(int ithread, int numbytes){
//free empty buffer //free empty buffer
if(numbytes <= 0){ if(numbytes <= 0){
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Listening %d: End of Acquisition", ithread); sprintf(cstreambuf, "Listening %d: End of Acquisition", ithread);
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
while(!fifoFree[ithread]->push(buffer[ithread])); while(!fifoFree[ithread]->push(buffer[ithread]));
} }
@ -2504,7 +2470,7 @@ void UDPStandardImplementation::stopListening(int ithread, int numbytes){
//#ifdef DEBUG4 //#ifdef DEBUG4
{ {
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Listening Thread of %u got %d packets ", udpPortNum[ithread], totalListeningPacketCount[ithread]); sprintf(cstreambuf, "Listening Thread of %u got %d packets ", udpPortNum[ithread], totalListeningPacketCount[ithread]);
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
} }
//#endif //#endif
@ -2701,7 +2667,6 @@ void UDPStandardImplementation::waitWritingBufferForNextAcquisition(int ithread)
//create file //create file
if((1<<ithread)&createFileMask){ if((1<<ithread)&createFileMask){
memset(fileNamePerThread[ithread],0,MAX_STR_LENGTH);
//change the detector index in the file names //change the detector index in the file names
if(myDetectorType == EIGER){ if(myDetectorType == EIGER){
int detindex = -1; int detindex = -1;
@ -2711,15 +2676,15 @@ void UDPStandardImplementation::waitWritingBufferForNextAcquisition(int ithread)
if (uscore!=string::npos){ if (uscore!=string::npos){
if (sscanf(tempname.substr(uscore+1,tempname.size()-uscore-1).c_str(),"d%d",&detindex)) { if (sscanf(tempname.substr(uscore+1,tempname.size()-uscore-1).c_str(),"d%d",&detindex)) {
tempname=tempname.substr(0,uscore); tempname=tempname.substr(0,uscore);
snprintf(fileNamePerThread[ithread],MAX_STR_LENGTH,"%s_d%d",tempname.c_str(),detindex*2+ithread); sprintf(fileNamePerThread[ithread],"%s_d%d",tempname.c_str(),detindex*2+ithread);
} }
} }
//only one half module, so no detid //only one half module, so no detid
if(detindex == -1) if(detindex == -1)
snprintf(fileNamePerThread[ithread],MAX_STR_LENGTH,"%s_d%d",fileName,ithread); sprintf(fileNamePerThread[ithread],"%s_d%d",fileName,ithread);
}else }else
snprintf(fileNamePerThread[0],MAX_STR_LENGTH,fileName); strcpy(fileNamePerThread[0],fileName);
if(dataCompressionEnable){ if(dataCompressionEnable){
#ifdef MYROOT1 #ifdef MYROOT1
@ -2780,7 +2745,7 @@ void UDPStandardImplementation::stopWriting(int ithread, char* wbuffer){
{ {
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Writing %d: End of Acquisition ", ithread); sprintf(cstreambuf, "Writing %d: End of Acquisition ", ithread);
FILE_LOG(logINFO, cstreambuf); FILE_LOG(logINFO, cstreambuf);
} }
@ -2876,19 +2841,15 @@ void UDPStandardImplementation::stopWriting(int ithread, char* wbuffer){
//thread 0 waits for all threads to finish & print statistics //thread 0 waits for all threads to finish & print statistics
if(ithread == 0){ if(ithread == 0){
/* cprintf(BLUE,"Thread 0: Waiting for all writer threads\n");*/
//wait for all other threads //wait for all other threads
while(writerThreadsMask) while(writerThreadsMask)
usleep(5000); usleep(5000);
/*cprintf(BLUE,"Thread 0: Waiting for all listener threads\n");*/
//ensure listening threads done before updating status as it returns to client (from stopReceiver) //ensure listening threads done before updating status as it returns to client (from stopReceiver)
while(listeningThreadsMask) while(listeningThreadsMask)
usleep(5000); usleep(5000);
/*cprintf(BLUE,"Thread 0: Waiting for all datacallback threads\n");*/
//ensure datacallbacks threads are done //ensure datacallbacks threads are done
while(dataCallbackThreadsMask) while(dataCallbackThreadsMask)
usleep(5000); usleep(5000);
/*cprintf(BLUE,"Thread 0: Done, waiting for lock to say finished\n");*/
//update status //update status
pthread_mutex_lock(&statusMutex); pthread_mutex_lock(&statusMutex);
status = RUN_FINISHED; status = RUN_FINISHED;
@ -2937,7 +2898,6 @@ void UDPStandardImplementation::stopWriting(int ithread, char* wbuffer){
if (acquisitionFinishedCallBack) if (acquisitionFinishedCallBack)
acquisitionFinishedCallBack((totalPacketsCaught/(packetsPerFrame*numberofListeningThreads)), pAcquisitionFinished); acquisitionFinishedCallBack((totalPacketsCaught/(packetsPerFrame*numberofListeningThreads)), pAcquisitionFinished);
} }
/*cprintf(BLUE,"Thread %d: Done\n", ithread);*/
} }
@ -3247,8 +3207,7 @@ void UDPStandardImplementation::writeFileWithoutCompression(int ithread, char* w
void UDPStandardImplementation::updateFileHeader(int ithread){ void UDPStandardImplementation::updateFileHeader(int ithread){
//update file header //update file header
time_t t = time(0); time_t t = time(0);
memset(fileHeader[ithread],0,FILE_HEADER_SIZE); sprintf(fileHeader[ithread],
snprintf(fileHeader[ithread],FILE_HEADER_SIZE,
"\nHeader\t\t: %d bytes\n" "\nHeader\t\t: %d bytes\n"
"Top\t\t: %d\n" "Top\t\t: %d\n"
"Left\t\t: %d\n" "Left\t\t: %d\n"
@ -3320,8 +3279,7 @@ void UDPStandardImplementation::copyFrameToGui(int ithread, char* buffer, uint32
//copy date //copy date
guiNumPackets[ithread] = numpackets; guiNumPackets[ithread] = numpackets;
memset(guiFileName[ithread],0,MAX_STR_LENGTH); strcpy(guiFileName[ithread],completeFileName[ithread]);
snprintf(guiFileName[ithread],MAX_STR_LENGTH,completeFileName[ithread]);
if(excludeMissingPackets) //copy also the header if(excludeMissingPackets) //copy also the header
memcpy(latestData[ithread],buffer+ HEADER_SIZE_NUM_TOT_PACKETS, bufferSize + sizeof(sls_detector_header)); memcpy(latestData[ithread],buffer+ HEADER_SIZE_NUM_TOT_PACKETS, bufferSize + sizeof(sls_detector_header));
@ -3506,13 +3464,9 @@ int UDPStandardImplementation::getFrameandPacketNumber(int ithread, char* wbuffe
framenumber = 0; framenumber = 0;
char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH); char cstreambuf[MAX_STR_LENGTH]; memset(cstreambuf, 0, MAX_STR_LENGTH);
snprintf(cstreambuf, MAX_STR_LENGTH, "Fifo %d: Frame Number is zero from firmware. ", ithread); sprintf(cstreambuf, "Fifo %d: Frame Number is zero from firmware. ", ithread);
FILE_LOG(logERROR, cstreambuf);
e_header = (eiger_packet_header_t*) (wbuffer);
subframenumber = *( (uint32_t*) e_header->subFrameNumber);
snprintf(cstreambuf, MAX_STR_LENGTH, "Fifo %d: Frame Number is zero from firmware. subnum: %u, fnum:%u, pnum:%u ", ithread, subframenumber,
(uint32_t)(*( (uint64_t*) footer)),(*( (uint16_t*) footer->packetNumber))-1);
FILE_LOG(logERROR, cstreambuf); FILE_LOG(logERROR, cstreambuf);
return FAIL; return FAIL;
} }
packetnumber = (*( (uint16_t*) footer->packetNumber))-1; packetnumber = (*( (uint16_t*) footer->packetNumber))-1;