From 44bf4c52ed1c45145f5374f116aae06aa137c1f3 Mon Sep 17 00:00:00 2001 From: Dhanya Maliakal Date: Fri, 6 Oct 2017 13:48:06 +0200 Subject: [PATCH] changes for eiger server to return error if error --- .../eigerDetectorServer/FebControl.c | 39 ++++++++++++------ .../eigerDetectorServer/FebRegisterDefs.h | 3 ++ ...0.16.9 => eigerDetectorServerv3.0.0.16.10} | Bin 288747 -> 288747 bytes .../eigerDetectorServer/gitInfo.txt | 10 ++--- .../eigerDetectorServer/gitInfoEiger.h | 8 ++-- .../slsDetectorFunctionList.c | 20 +++++---- .../slsDetectorServer_defs.h | 4 ++ .../multiSlsDetector/multiSlsDetector.cpp | 5 ++- 8 files changed, 58 insertions(+), 31 deletions(-) rename slsDetectorSoftware/eigerDetectorServer/bin/{eigerDetectorServerv3.0.0.16.9 => eigerDetectorServerv3.0.0.16.10} (71%) diff --git a/slsDetectorSoftware/eigerDetectorServer/FebControl.c b/slsDetectorSoftware/eigerDetectorServer/FebControl.c index 300a92bc9..73496875e 100644 --- a/slsDetectorSoftware/eigerDetectorServer/FebControl.c +++ b/slsDetectorSoftware/eigerDetectorServer/FebControl.c @@ -1073,29 +1073,29 @@ int Feb_Control_AcquisitionInProgress(){ //deactivated should return end of acquisition if(!Feb_Control_activated) - return 0; + return STATUS_IDLE; int ind = Feb_Control_current_index; if(Module_BottomAddressIsValid(&modules[ind])){ if(!(Feb_Control_GetDAQStatusRegister(Module_GetBottomRightAddress(&modules[ind]),&status_reg_r))) - {cprintf(RED,"Error: Trouble reading Status register. bottom right address\n");return 0;} + {cprintf(RED,"Error: Trouble reading Status register. bottom right address\n");return STATUS_ERROR;} if(!(Feb_Control_GetDAQStatusRegister(Module_GetBottomLeftAddress(&modules[ind]),&status_reg_l))) - {cprintf(RED,"Error: Trouble reading Status register. bottom left address\n");return 0;} + {cprintf(RED,"Error: Trouble reading Status register. bottom left address\n");return STATUS_ERROR;} }else{ if(!(Feb_Control_GetDAQStatusRegister(Module_GetTopRightAddress(&modules[ind]),&status_reg_r))) - {cprintf(RED,"Error: Trouble reading Status register. top right address\n");return 0;} + {cprintf(RED,"Error: Trouble reading Status register. top right address\n");return STATUS_ERROR;} if(!(Feb_Control_GetDAQStatusRegister(Module_GetTopLeftAddress(&modules[ind]),&status_reg_l))) - {cprintf(RED,"Error: Trouble reading Status register. top left address\n");return 0;} + {cprintf(RED,"Error: Trouble reading Status register. top left address\n");return STATUS_ERROR;} } //running if((status_reg_r|status_reg_l)&DAQ_STATUS_DAQ_RUNNING) {/*printf("**runningggg\n");*/ - return 1; + return STATUS_RUNNING; } //idle - return 0; + return STATUS_IDLE; } @@ -1132,16 +1132,25 @@ int Feb_Control_AcquisitionStartedBit(){ int Feb_Control_WaitForFinishedFlag(int sleep_time_us){ int is_running = Feb_Control_AcquisitionInProgress(); - while(is_running){ + + int check_error = 0; + + // it will break out if it is idle or if check_error is more than 5 times + while(is_running != STATUS_IDLE){ usleep(sleep_time_us); is_running = Feb_Control_AcquisitionInProgress(); - } - if(is_running!=0){ - printf("\n\nWarning WaitForFinishedFlag comunication problem..\n\n"); - return 0; //communication problem + + // check error only 5 times (ensuring it is not something that happens sometimes) + if (is_running == STATUS_ERROR) { + if (check_error == 5) + break; + check_error++; + }// reset check_error for next time + else check_error = 0; + } - return 1; + return is_running; } @@ -1151,6 +1160,10 @@ int Feb_Control_WaitForStartedFlag(int sleep_time_us, int prev_flag){ if(!Feb_Control_activated) return 1; + //did not start + if(prev_flag == -1) + return 0; + int value = prev_flag; while(value == prev_flag){ usleep(sleep_time_us); diff --git a/slsDetectorSoftware/eigerDetectorServer/FebRegisterDefs.h b/slsDetectorSoftware/eigerDetectorServer/FebRegisterDefs.h index d7c8c012b..9c3bea8fa 100644 --- a/slsDetectorSoftware/eigerDetectorServer/FebRegisterDefs.h +++ b/slsDetectorSoftware/eigerDetectorServer/FebRegisterDefs.h @@ -197,4 +197,7 @@ + + + diff --git a/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServerv3.0.0.16.9 b/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServerv3.0.0.16.10 similarity index 71% rename from slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServerv3.0.0.16.9 rename to slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServerv3.0.0.16.10 index 6cbc0d41ada6b37ae04b8b20e6e790bcfe8d3c00..b01f232d9c4050acafd4d6563b924b6bbea517e9 100755 GIT binary patch delta 24214 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 Tk$1J-cUN1q%_GKmZs7j~im5je delta 23988 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 diff --git a/slsDetectorSoftware/eigerDetectorServer/gitInfo.txt b/slsDetectorSoftware/eigerDetectorServer/gitInfo.txt index f66bf01f0..1a4162f53 100644 --- a/slsDetectorSoftware/eigerDetectorServer/gitInfo.txt +++ b/slsDetectorSoftware/eigerDetectorServer/gitInfo.txt @@ -1,9 +1,9 @@ Path: slsDetectorsPackage/slsDetectorSoftware/eigerDetectorServer URL: origin git@git.psi.ch:sls_detectors_software/sls_detector_software.git Repository Root: origin git@git.psi.ch:sls_detectors_software/sls_detector_software.git -Repsitory UUID: 3c1eb747d1930d6d38030a5a607f72d3b58a7a21 -Revision: 301 -Branch: virtualclass +Repsitory UUID: 4c02a99589af6ae56ba5819da50f1e567057393a +Revision: 303 +Branch: 3.0.1 Last Changed Author: Dhanya_Maliakal -Last Changed Rev: 1549 -Last Changed Date: 2017-08-30 15:06:49.000000002 +0200 ./Makefile.virtual +Last Changed Rev: 1572 +Last Changed Date: 2017-10-06 13:01:24.000000002 +0200 ./FebRegisterDefs.h diff --git a/slsDetectorSoftware/eigerDetectorServer/gitInfoEiger.h b/slsDetectorSoftware/eigerDetectorServer/gitInfoEiger.h index 9f01077eb..67ef9f8fc 100644 --- a/slsDetectorSoftware/eigerDetectorServer/gitInfoEiger.h +++ b/slsDetectorSoftware/eigerDetectorServer/gitInfoEiger.h @@ -1,11 +1,11 @@ //#define SVNPATH "" #define SVNURL "git@git.psi.ch:sls_detectors_software/sls_detector_software.git" //#define SVNREPPATH "" -#define SVNREPUUID "3c1eb747d1930d6d38030a5a607f72d3b58a7a21" -//#define SVNREV 0x1549 +#define SVNREPUUID "4c02a99589af6ae56ba5819da50f1e567057393a" +//#define SVNREV 0x1572 //#define SVNKIND "" //#define SVNSCHED "" #define SVNAUTH "Dhanya_Maliakal" -#define SVNREV 0x1549 -#define SVNDATE 0x20170830 +#define SVNREV 0x1572 +#define SVNDATE 0x20171006 // diff --git a/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c b/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c index 44e15b469..1fe43e302 100644 --- a/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c +++ b/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c @@ -1139,8 +1139,8 @@ int startStateMachine(){ //wait for acquisition start if(ret == OK){ if(!Feb_Control_WaitForStartedFlag(5000, prev_flag)){ - cprintf(RED,"Error: Acquisition did no start or trouble reading register\n"); - ret = FAIL; + cprintf(RED,"Error: Acquisition did not start or trouble reading register\n"); + return FAIL; } cprintf(GREEN,"***Acquisition started\n"); } @@ -1187,16 +1187,19 @@ int startReadOut(){ enum runStatus getRunStatus(){ - //if(trialMasterMode == IS_MASTER){ + int i = Feb_Control_AcquisitionInProgress(); - if(i== 0){ + switch (i) { + case STATUS_ERROR: + printf("Status: ERROR reading status register\n"); + return ERROR; + case STATUS_IDLE: printf("Status: IDLE\n"); return IDLE; - }else{ + default: printf("Status: RUNNING...\n"); return RUNNING; } - //}else printf("***** not master*** \n"); return IDLE; } @@ -1204,8 +1207,11 @@ enum runStatus getRunStatus(){ void readFrame(int *ret, char *mess){ - if(!Feb_Control_WaitForFinishedFlag(5000)) + if(Feb_Control_WaitForFinishedFlag(5000) == STATUS_ERROR) { cprintf(RED,"Error: Waiting for finished flag\n"); + *ret = FAIL; + return; + } cprintf(GREEN,"Acquisition finished***\n"); if(eiger_storeinmem){ diff --git a/slsDetectorSoftware/eigerDetectorServer/slsDetectorServer_defs.h b/slsDetectorSoftware/eigerDetectorServer/slsDetectorServer_defs.h index 836c3aa9a..88c554f61 100644 --- a/slsDetectorSoftware/eigerDetectorServer/slsDetectorServer_defs.h +++ b/slsDetectorSoftware/eigerDetectorServer/slsDetectorServer_defs.h @@ -14,6 +14,10 @@ #define GOODBYE (-200) #define REQUIRED_FIRMWARE_VERSION (16) +#define STATUS_IDLE 0 +#define STATUS_RUNNING 1 +#define STATUS_ERROR 2 + /* Enums */ enum CLK_SPEED_INDEX {FULL_SPEED, HALF_SPEED, QUARTER_SPEED}; enum DACINDEX {SVP,VTR,VRF,VRS,SVN,VTGSTV,VCMP_LL,VCMP_LR,CAL,VCMP_RL,RXB_RB,RXB_LB,VCMP_RR,VCP,VCN,VIS,VTHRESHOLD}; diff --git a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp index 462ceeb2a..786d24c8b 100644 --- a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp +++ b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp @@ -1911,8 +1911,9 @@ slsDetectorDefs::runStatus multiSlsDetector::getRunStatus() { s1=detectors[i]->getRunStatus(); if(detectors[i]->getErrorMask()) setErrorMask(getErrorMask()|(1<