Merge branch 'developer' into jungfrauchange

This commit is contained in:
Dhanya Maliakal 2016-10-28 08:14:06 +02:00
commit 5cc17a77c7
13 changed files with 50 additions and 45 deletions

View File

@ -1679,7 +1679,10 @@ int Feb_Control_PrintCorrectedValues(){
int Feb_Control_GetLeftFPGATemp(){ int Feb_Control_GetLeftFPGATemp(){
unsigned int temperature=0; unsigned int temperature=0;
Feb_Interface_ReadRegister(Module_GetTopLeftAddress (&modules[1]),FEB_REG_STATUS, &temperature); if(Module_TopAddressIsValid(&modules[1]))
Feb_Interface_ReadRegister(Module_GetTopLeftAddress (&modules[1]),FEB_REG_STATUS, &temperature);
else
Feb_Interface_ReadRegister(Module_GetBottomLeftAddress (&modules[1]),FEB_REG_STATUS, &temperature);
temperature = temperature >> 16; temperature = temperature >> 16;
//division done in client to send int over network //division done in client to send int over network
return (int)temperature; return (int)temperature;
@ -1687,7 +1690,10 @@ int Feb_Control_GetLeftFPGATemp(){
int Feb_Control_GetRightFPGATemp(){ int Feb_Control_GetRightFPGATemp(){
unsigned int temperature=0; unsigned int temperature=0;
Feb_Interface_ReadRegister(Module_GetTopRightAddress (&modules[1]),FEB_REG_STATUS, &temperature); if(Module_TopAddressIsValid(&modules[1]))
Feb_Interface_ReadRegister(Module_GetTopRightAddress (&modules[1]),FEB_REG_STATUS, &temperature);
else
Feb_Interface_ReadRegister(Module_GetBottomRightAddress (&modules[1]),FEB_REG_STATUS, &temperature);
temperature = temperature >> 16; temperature = temperature >> 16;
//division done in client to send int over network //division done in client to send int over network
return (int)temperature; return (int)temperature;

View File

@ -858,25 +858,22 @@ enum runStatus getRunStatus(){
char *readFrame(int *ret, char *mess){ void readFrame(int *ret, char *mess){
//if(master){ if(!Feb_Control_WaitForFinishedFlag(5000))
if(!Feb_Control_WaitForFinishedFlag(5000)) cprintf(RED,"Error: Waiting for finished flag\n");
cprintf(RED,"Error: Waiting for finished flag\n"); cprintf(GREEN,"Acquisition finished***\n");
cprintf(GREEN,"Acquisition finished***\n");
if(eiger_storeinmem){ if(eiger_storeinmem){
printf("requesting images after storing in memory\n"); printf("requesting images after storing in memory\n");
if(startReadOut() == FAIL){ if(startReadOut() == FAIL){
cprintf(RED, "Could not read out images\n"); strcpy(mess,"Could not execute read image requests\n");
*ret = (int)FAIL; *ret = (int)FAIL;
return NULL; return;
}
} }
//usleep(1000000); }
printf("*****Done Waiting...\n"); printf("*****Done Waiting...\n");
//} *ret = (int)FINISHED;
*ret = (int)FINISHED; strcpy(mess,"acquisition successfully finished\n");
return NULL;
} }

View File

@ -16,7 +16,7 @@
#define FEB_PORT 43210 #define FEB_PORT 43210
#define BEB_PORT 43212 #define BEB_PORT 43212
#define REQUIRED_FIRMWARE_VERSION 14 #define REQUIRED_FIRMWARE_VERSION 16
#define FIRMWAREREV 0xcaba //temporary should be in firmware #define FIRMWAREREV 0xcaba //temporary should be in firmware

View File

@ -1759,7 +1759,7 @@ int64_t multiSlsDetector::setTimer(timerIndex index, int64_t t){
if (ret1==-100) if (ret1==-100)
ret1=ret; ret1=ret;
else if (ret!=ret1) else if (ret!=ret1)
ret1=FAIL; ret1=-1;
} }
} }
@ -4279,7 +4279,7 @@ int multiSlsDetector::readConfigurationFile(string const fname){
multiSlsDetectorClient *cmd; multiSlsDetectorClient *cmd;
// char ext[100]; // char ext[100];
setAcquiringFlag(false);
string ans; string ans;
string str; string str;
@ -5167,7 +5167,7 @@ void multiSlsDetector::startReceivingDataThread(){
//end of socket ("end") //end of socket ("end")
if (len < 1024*256 ) { if (len < 1024*256 ) {
if(len == 3){ if(len == 3){
//cprintf(RED,"Received end of acquisition for socket %d\n", ithread); //cprintf(RED,"%d Received end of acquisition\n", ithread);
singleframe[ithread] = NULL; singleframe[ithread] = NULL;
//break; //break;
}else{ }else{
@ -5253,10 +5253,9 @@ void multiSlsDetector::readFrameFromReceiver(){
dataThreadMask|=(1<<i); dataThreadMask|=(1<<i);
//construct complete image and send to callback //construct complete image and send to callback
while(true){ while(true){
memset(((char*)multiframe),0xFF,slsdatabytes*thisMultiDetector->numberOfDetectors); //reset frame memory //memset(((char*)multiframe),0xFF,slsdatabytes*thisMultiDetector->numberOfDetectors); //reset frame memory
//post all of them to start //post all of them to start
for(int ireadout=0; ireadout<numReadouts; ++ireadout){ for(int ireadout=0; ireadout<numReadouts; ++ireadout){
@ -5329,7 +5328,7 @@ void multiSlsDetector::readFrameFromReceiver(){
dataReady(thisData, currentFrameIndex, currentSubFrameIndex, pCallbackArg);//should be fnum and subfnum from json header dataReady(thisData, currentFrameIndex, currentSubFrameIndex, pCallbackArg);//should be fnum and subfnum from json header
delete thisData; delete thisData;
fdata = NULL; fdata = NULL;
//cout<<"Send frame #"<< currentFrameIndex << " to gui"<<endl; cout<<"Send frame #"<< currentFrameIndex << " to gui"<<endl;
} }
setCurrentProgress(currentAcquisitionIndex+1); setCurrentProgress(currentAcquisitionIndex+1);
} }

View File

@ -1739,7 +1739,7 @@ int slsDetector::setNumberOfModules(int n, dimension d){
int dr=thisDetector->dynamicRange; int dr=thisDetector->dynamicRange;
if (dr==24) if ((thisDetector->myDetectorType==MYTHEN) && (dr==24))
dr=32; dr=32;
thisDetector->dataBytes=thisDetector->nMod[X]*thisDetector->nMod[Y]*thisDetector->nChips*thisDetector->nChans*dr/8; thisDetector->dataBytes=thisDetector->nMod[X]*thisDetector->nMod[Y]*thisDetector->nChips*thisDetector->nChans*dr/8;
@ -4539,7 +4539,7 @@ int slsDetector::setDynamicRange(int n){
#ifdef VERBOSE #ifdef VERBOSE
std::cout<< "Setting dynamic range to "<< n << std::endl; std::cout<< "Setting dynamic range to "<< n << std::endl;
#endif #endif
if (n==24) if ((thisDetector->myDetectorType == MYTHEN) &&(n==24))
n=32; n=32;

View File

@ -448,7 +448,6 @@ int slsDetectorUtils::acquire(int delflag){
setFileIndex(fileIO::getFileIndex()); setFileIndex(fileIO::getFileIndex());
pthread_mutex_unlock(&mg); pthread_mutex_unlock(&mg);
if (measurement_finished){ if (measurement_finished){
pthread_mutex_lock(&mg); pthread_mutex_lock(&mg);
measurement_finished(im,*fileIndex,measFinished_p); measurement_finished(im,*fileIndex,measFinished_p);

View File

@ -497,6 +497,9 @@ void* postProcessing::processData(int delflag) {
cout<<flush; cout<<flush;
usleep(20000); //20ms need this else connecting error to receiver (too fast) usleep(20000); //20ms need this else connecting error to receiver (too fast)
if (checkJoinThread()){
break;
}
//get progress //get progress
if(setReceiverOnline() == ONLINE_FLAG){ if(setReceiverOnline() == ONLINE_FLAG){
pthread_mutex_lock(&mg); pthread_mutex_lock(&mg);

View File

@ -92,7 +92,7 @@ int startStateMachine();
int stopStateMachine(); int stopStateMachine();
int startReadOut(); int startReadOut();
enum runStatus getRunStatus(); enum runStatus getRunStatus();
char *readFrame(int *ret, char *mess); void readFrame(int *ret, char *mess);
int64_t setTimer(enum timerIndex ind, int64_t val); int64_t setTimer(enum timerIndex ind, int64_t val);

View File

@ -36,7 +36,6 @@ extern enum detectorSettings thisSettings;
//global variables for optimized readout //global variables for optimized readout
char mess[MAX_STR_LENGTH]; char mess[MAX_STR_LENGTH];
char *dataretval=NULL;
int dataret; int dataret;
//extern //extern
int dataBytes = 10; int dataBytes = 10;
@ -2527,9 +2526,8 @@ int start_and_read_all(int file_des) {
int read_frame(int file_des) { int read_frame(int file_des) {
dataret=OK;
int dataret1; int dataret1;
if (differentClients==1 && lockStatus==1) { if (differentClients==1 && lockStatus==1) {
dataret=FAIL; dataret=FAIL;
sprintf(mess,"Detector locked by %s\n",lastClientIP); sprintf(mess,"Detector locked by %s\n",lastClientIP);
@ -2538,25 +2536,28 @@ int read_frame(int file_des) {
dataret1 = dataret; dataret1 = dataret;
sendData(file_des,&dataret1,sizeof(dataret1),INT32); sendData(file_des,&dataret1,sizeof(dataret1),INT32);
sendData(file_des,mess,sizeof(mess),OTHER); sendData(file_des,mess,sizeof(mess),OTHER);
#ifdef VERBOSE
printf("dataret %d\n",dataret); printf("dataret %d\n",dataret);
#endif
return dataret; return dataret;
} }
#ifdef SLS_DETECTOR_FUNCTION_LIST #ifdef SLS_DETECTOR_FUNCTION_LIST
dataretval=readFrame(&dataret, mess); readFrame(&dataret, mess);
#endif #endif
if (differentClients)
//dataret could be swapped during sendData dataret=FORCE_UPDATE;
dataret1 = dataret; //dataret could be swapped during sendData
sendData(file_des,&dataret1,sizeof(dataret1),INT32); dataret1 = dataret;
if (dataret==FAIL) sendData(file_des,&dataret1,sizeof(dataret1),INT32);
sendData(file_des,mess,sizeof(mess),OTHER);//sizeof(mess));//sizeof(mess)); //always fail or finished
else if(dataret==OK){printf("shouldnt be sending anything but i am\n"); sendData(file_des,mess,sizeof(mess),OTHER);
sendData(file_des,dataretval,dataBytes,OTHER);} if(dataret == FAIL)
cprintf(RED,"%s\n",mess);
printf("dataret %d\n",dataret); else
return dataret; cprintf(GREEN,"%s",mess);
return dataret;
} }