From 347a36b7c1f501e8cdc6459ed9c0d20975fdd86f Mon Sep 17 00:00:00 2001 From: Maliakal Dhanya Date: Mon, 6 Oct 2014 11:01:51 +0200 Subject: [PATCH] module acquisition works, edit getrunstatus, added a small code for master incomplete, adjusted server to look for element in position 1 instead of zero --- .../eigerDetectorServer/FebControl.c | 38 ++++++++++++------ .../eigerDetectorServer/Makefile | 2 +- .../bin/eigerDetectorServer | Bin 237404 -> 237463 bytes .../slsDetectorFunctionList.c | 28 ++++++++++--- .../multiSlsDetector/multiSlsDetector.cpp | 26 ++++-------- .../slsDetectorServer_funcs.c | 11 +++-- 6 files changed, 60 insertions(+), 45 deletions(-) diff --git a/slsDetectorSoftware/eigerDetectorServer/FebControl.c b/slsDetectorSoftware/eigerDetectorServer/FebControl.c index 69d7cfc0d..dd978d3ba 100644 --- a/slsDetectorSoftware/eigerDetectorServer/FebControl.c +++ b/slsDetectorSoftware/eigerDetectorServer/FebControl.c @@ -694,7 +694,7 @@ int Feb_Control_SendHighVoltage(unsigned int dst_num,float* value){ int Feb_Control_DecodeDACString(char* dac_str, unsigned int* module_index, int* top, int* bottom, unsigned int* dac_ch){ char* local_s = dac_str; char temp[50]; - *module_index = 0; + *module_index = 1; char* p1 = strstr(local_s,"mod");//size_t p1 = local_s.find("mod"); char* p2 = strstr(local_s,"::");//size_t p2 =local_s.find("::"); @@ -729,6 +729,15 @@ int Feb_Control_DecodeDACString(char* dac_str, unsigned int* module_index, int* strcpy(local_s,p1+8); *top=0; } +/* + if(Module_BottomAddressIsValid(&modules[*module_index])) + *top=0; + else + *bottom=0; +printf("*****************top %d bottom %d\n",*top,*bottom); +*/ + + *dac_ch = 0; if(!Feb_Control_GetDACNumber(local_s,dac_ch)){ printf("Error in dac_name: %s (%s)\n",dac_str,local_s); @@ -955,8 +964,8 @@ int Feb_Control_SetTrimbits(unsigned int module_num, unsigned int *trimbits){ } //end row loop - if(!Feb_Interface_WriteMemoryInLoops(Module_GetTopLeftAddress(&modules[0]),0,0,1024,trimbits_to_load_r)|| - !Feb_Interface_WriteMemoryInLoops(Module_GetTopRightAddress(&modules[0]),0,0,1024,trimbits_to_load_l)|| + if(!Feb_Interface_WriteMemoryInLoops(Module_GetTopLeftAddress(&modules[1]),0,0,1024,trimbits_to_load_r)|| + !Feb_Interface_WriteMemoryInLoops(Module_GetTopRightAddress(&modules[1]),0,0,1024,trimbits_to_load_l)|| //if(!Feb_Interface_WriteMemory(Module_GetTopLeftAddress(&modules[0]),0,0,1023,trimbits_to_load_r)|| // !Feb_Interface_WriteMemory(Module_GetTopRightAddress(&modules[0]),0,0,1023,trimbits_to_load_l)|| !Feb_Control_StartDAQOnlyNWaitForFinish(5000)){ @@ -982,11 +991,14 @@ unsigned int* Feb_Control_GetTrimbits(){ unsigned int Feb_Control_AddressToAll(){ if(moduleSize==0) return 0; - if(Module_BottomAddressIsValid(&modules[1])){//printf("************* bottom\n"); - return Module_GetBottomLeftAddress(&modules[1])|Module_GetBottomRightAddress(&modules[1]);} - //printf("************* top\n"); - return Module_GetTopLeftAddress(&modules[1])|Module_GetTopRightAddress(&modules[1]); + if(Module_BottomAddressIsValid(&modules[0])){ + //printf("************* bottom\n"); + return Module_GetBottomLeftAddress(&modules[0])|Module_GetBottomRightAddress(&modules[0]); + } + // printf("************* top\n"); + return Module_GetTopLeftAddress(&modules[0])|Module_GetTopRightAddress(&modules[0]); + } int Feb_Control_SetCommandRegister(unsigned int cmd){ @@ -1035,18 +1047,18 @@ int Feb_Control_AcquisitionInProgress(){ //printf("right:%d\n",Feb_Control_GetDAQStatusRegister(Module_GetTopRightAddress(&modules[1]),&status_reg_r)); //printf("left:%d\n",Feb_Control_GetDAQStatusRegister(Module_GetTopLeftAddress(&modules[1]),&status_reg_l)); - if(Module_BottomAddressIsValid(&modules[0])){ + if(Module_BottomAddressIsValid(&modules[1])){ //printf("************* bottom1\n"); if(!(Feb_Control_GetDAQStatusRegister(Module_GetBottomRightAddress(&modules[1]),&status_reg_r))) - return 0; + {printf("**idle\n");return 0;} }else{ //printf("************* top1\n"); if(!(Feb_Control_GetDAQStatusRegister(Module_GetTopRightAddress(&modules[1]),&status_reg_r))) - return 0; + {printf("**idle\n");return 0;} } - if(status_reg_r&DAQ_STATUS_DAQ_RUNNING) return 1; + if(status_reg_r&DAQ_STATUS_DAQ_RUNNING) {printf("******running\n");return 1;} /* if(!(GetDAQStatusRegister(modules[i]->Module_GetTopLeftAddress(),status_reg_r)&&GetDAQStatusRegister(modules[i]->Module_GetTopRightAddress(),status_reg_l))){ @@ -1057,7 +1069,7 @@ int Feb_Control_AcquisitionInProgress(){ } */ - return 0; //i.e. not running (status_reg_r|status_reg_l)&DAQ_STATUS_DAQ_RUNNING; + printf("**idle\n");return 0; //i.e. not running (status_reg_r|status_reg_l)&DAQ_STATUS_DAQ_RUNNING; } int Feb_Control_Reset(){ @@ -1370,7 +1382,7 @@ int Feb_Control_WriteNRead(char* message, int length, int max_length){ } */ -int Feb_Control_StartAcquisition(){ +int Feb_Control_StartAcquisition(){printf("****** starting acquisition********* \n"); static unsigned int reg_nums[20]; static unsigned int reg_vals[20]; diff --git a/slsDetectorSoftware/eigerDetectorServer/Makefile b/slsDetectorSoftware/eigerDetectorServer/Makefile index f11f09eb1..7920925cb 100755 --- a/slsDetectorSoftware/eigerDetectorServer/Makefile +++ b/slsDetectorSoftware/eigerDetectorServer/Makefile @@ -1,6 +1,6 @@ CC = powerpc-4xx-softfloat-gcc CCX = powerpc-4xx-softfloat-g++ -CFLAGS += -Wall -DDACS_INT -DEIGERD -DSLS_DETECTOR_FUNCTION_LIST -DDACS_INT -DSTOP_SERVER #-DVERBOSE #-DVIRTUAL -DPCCOMPILE +CFLAGS += -Wall -DDACS_INT -DEIGERD -DSLS_DETECTOR_FUNCTION_LIST -DDACS_INT #-DSTOP_SERVER #-DVERBOSE #-DVIRTUAL -DPCCOMPILE LDLIBS += -lm -lstdc++ PROGS = eigerDetectorServer diff --git a/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServer b/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServer index 54d45775dc1da4b3126d988c96924d661d39a2bf..2c2221578d7b7b7250d11e542627c95ad2e7e3d4 100755 GIT binary patch delta 39939 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 diff --git a/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c b/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c index 26b9a3046..2f6758ff3 100644 --- a/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c +++ b/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c @@ -53,7 +53,8 @@ int dst_requested[32] = {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,0,0,0 int default_dac_values[16] = {0,2000,2000,1250,700,1278,500,500,2000,500,500,550,550,100,1000,775}; - +enum masterFlags masterMode=NO_MASTER; +enum masterFlags trialMasterMode=NO_MASTER; int initDetector(){ int imod,i,n; @@ -128,9 +129,12 @@ int initDetector(){ setHighVolage(150,0); setIODelay(675,0); setTiming(AUTO_TIMING); + setMaster(GET_MASTER); int enable[2] = {0,1}; setExternalGating(enable);//disable external gating + if(getDetectorNumber() == 0xbeb031) + trialMasterMode = IS_MASTER; return 1; } @@ -453,8 +457,13 @@ enum detectorSettings setSettings(enum detectorSettings sett, int imod){ int startStateMachine(){ printf("Going to start acquisition\n"); - if(Feb_Control_StartAcquisition()){ + + if(trialMasterMode == IS_MASTER) + Feb_Control_StartAcquisition(); + + +printf("requesting images\n"); //RequestImages(); int ret_val = 0; dst_requested[0] = 1; @@ -471,15 +480,19 @@ int startStateMachine(){ return FAIL; else return OK; - } + return FAIL; } int stopStateMachine(){ printf("Going to stop acquisition\n"); - if(Feb_Control_StopAcquisition()) - return OK; + + if(trialMasterMode == IS_MASTER){ + if(Feb_Control_StopAcquisition()) + return OK; + }else return OK; + return FAIL; } @@ -885,7 +898,10 @@ void setExternalGating(int enable[]){ enum masterFlags setMaster(enum masterFlags arg){ - return NO_MASTER; + if(arg != GET_MASTER) + masterMode = arg; + + return arg; } diff --git a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp index 55cb1102a..3d99d8e6a 100644 --- a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp +++ b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp @@ -1198,15 +1198,6 @@ int multiSlsDetector::startAcquisition(){ int i=0; int ret=OK, ret1=OK; - if (detectors[0]) { - ret=detectors[0]->startAcquisition(); - if(detectors[0]->getErrorMask()) - setErrorMask(getErrorMask()|(1<numberOfDetectors; i++) { if (i!=thisMultiDetector->masterPosition) if (detectors[i]) { @@ -1226,7 +1217,7 @@ int multiSlsDetector::startAcquisition(){ if (ret!=OK) ret1=FAIL; } - }*/ + } return ret1; }; @@ -1474,7 +1465,7 @@ int* multiSlsDetector::startAndReadAll(){ if (detectors[id]) { detectors[id]->disconnectControl(); } - } + } } @@ -1515,6 +1506,7 @@ int multiSlsDetector::startAndReadAllNoWait(){ ret1=FAIL; } } + return ret1; } @@ -1536,20 +1528,16 @@ slsDetectorDefs::runStatus multiSlsDetector::getRunStatus() { return s; } - if (detectors[0]){ - s=detectors[0]->getRunStatus(); - if(detectors[0]->getErrorMask()) - setErrorMask(getErrorMask()|(1<<0)); - } - for (int i=1; inumberOfDetectors; i++) { s1=detectors[i]->getRunStatus(); if(detectors[i]->getErrorMask()) setErrorMask(getErrorMask()|(1<