From 36d65381048d0c2b5ae55a68aa40594b617c427c Mon Sep 17 00:00:00 2001 From: Dhanya Maliakal Date: Mon, 26 Jan 2015 16:57:03 +0100 Subject: [PATCH 1/2] got rid of segmentation fault in update offfsets --- .../multiSlsDetector/multiSlsDetector.cpp | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp index 179215f7f..dbb522235 100644 --- a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp +++ b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp @@ -102,6 +102,9 @@ multiSlsDetector::multiSlsDetector(int id) : slsDetectorUtils(), shmId(-1) } id--; + for (int id=0; idalreadyExisting==0) { @@ -250,8 +253,8 @@ multiSlsDetector::multiSlsDetector(int id) : slsDetectorUtils(), shmId(-1) // setAngularConversionPointer(detectors[i]->getAngularConversionPointer(),detectors[i]->getNModsPointer(),detectors[i]->getNChans()*detectors[i]->getNChips(), i); } - for (int i=thisMultiDetector->numberOfDetectors; inumberOfDetectors; imaxNumberOfChannel[Y] = 0; //0th position - if (detectors[0]){ + if ((detectors[0]) && (thisMultiDetector->numberOfDetectors > 0)){ offsetX = thisMultiDetector->offsetX[0] = 0; offsetY = thisMultiDetector->offsetY[0] = 0; numX = thisMultiDetector->numberOfChannel[X] = detectors[0]->getTotalNumberOfChannels(X); @@ -774,7 +777,6 @@ int multiSlsDetector::removeSlsDetector(int pos) { return thisMultiDetector->numberOfDetectors; //j=pos; - for (j=mi; jmaxNumberOfChannels-=detectors[j]->getMaxNumberOfChannels(); delete detectors[j]; + detectors[j]=0; thisMultiDetector->numberOfDetectors--; - - + if (single) { for (int i=j+1; inumberOfDetectors+1; i++) { @@ -3943,11 +3945,11 @@ int multiSlsDetector::readConfigurationFile(string const fname){ //} } -#ifdef VERBOSE +#ifdef VERBOSE cout << endl; for (int ia=0; ia Date: Mon, 2 Feb 2015 16:31:28 +0100 Subject: [PATCH 2/2] get detector and receiver status bug fixed --- .../multiSlsDetector/multiSlsDetector.cpp | 15 ++++++++------- slsDetectorSoftware/slsDetector/slsDetector.cpp | 4 ++-- .../slsDetector/slsDetectorCommand.cpp | 2 +- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp index dbb522235..1ccad502e 100644 --- a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp +++ b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp @@ -1523,8 +1523,7 @@ int multiSlsDetector::startAndReadAllNoWait(){ */ slsDetectorDefs::runStatus multiSlsDetector::getRunStatus() { - runStatus s,s1; - + runStatus s = IDLE,s1 = IDLE; if (thisMultiDetector->masterPosition>=0) if (detectors[thisMultiDetector->masterPosition]){ s = detectors[thisMultiDetector->masterPosition]->getRunStatus(); @@ -4420,7 +4419,7 @@ int multiSlsDetector::stopReceiver(){ slsDetectorDefs::runStatus multiSlsDetector::startReceiverReadout(){ int i=0; - runStatus s,s1; + runStatus s = IDLE,s1 = IDLE; i=thisMultiDetector->masterPosition; if (thisMultiDetector->masterPosition>=0) { if (detectors[i]) { @@ -4437,18 +4436,20 @@ slsDetectorDefs::runStatus multiSlsDetector::startReceiverReadout(){ setErrorMask(getErrorMask()|(1<masterPosition>=0) if (detectors[thisMultiDetector->masterPosition]){ diff --git a/slsDetectorSoftware/slsDetector/slsDetector.cpp b/slsDetectorSoftware/slsDetector/slsDetector.cpp index 09586844e..4939b0482 100644 --- a/slsDetectorSoftware/slsDetector/slsDetector.cpp +++ b/slsDetectorSoftware/slsDetector/slsDetector.cpp @@ -3278,14 +3278,14 @@ slsDetectorDefs::runStatus slsDetector::getRunStatus(){ stopSocket->SendDataOnly(&fnum,sizeof(fnum)); stopSocket->ReceiveDataOnly(&ret,sizeof(ret)); - // cout << "________:::____________" << ret << endl; + //cout << "________:::____________" << ret << endl; if (ret==FAIL) { stopSocket->ReceiveDataOnly(mess,sizeof(mess)); std::cout<< "Detector returned error: " << mess << std::endl; } else { stopSocket->ReceiveDataOnly(&retval,sizeof(retval)); - // cout << "____________________" << retval << endl; + //cout << "____________________" << retval << endl; } stopSocket->Disconnect(); } diff --git a/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp b/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp index 7c1f36179..3fefc3a3c 100644 --- a/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp +++ b/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp @@ -1186,7 +1186,7 @@ string slsDetectorCommand::cmdStatus(int narg, char *args[], int action) { } else if (action==HELP_ACTION) { return helpStatus(narg,args,HELP_ACTION); } - runStatus s=myDet->getRunStatus(); + runStatus s=myDet->getRunStatus(); return myDet->runStatusType(s); }