mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-22 14:38:14 +02:00
added receiver functions
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorSoftware@271 951219d9-93cf-4727-9268-0efd64621fa3
This commit is contained in:
parent
3232ce8dac
commit
11fe4522eb
@ -3555,12 +3555,27 @@ int multiSlsDetector::readDataFile(string fname, int *data) {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
string multiSlsDetector::setupReceiver(string fileName) {
|
//receiver
|
||||||
cout<<"File Name:"<<fileName<<endl;
|
|
||||||
|
|
||||||
|
int multiSlsDetector::setReceiverOnline(int off) {
|
||||||
|
if (off!=GET_ONLINE_FLAG) {
|
||||||
|
thisMultiDetector->receiverOnlineFlag=off;
|
||||||
|
for (int i=0; i<thisMultiDetector->numberOfDetectors+1; i++) {
|
||||||
|
if (detectors[i])
|
||||||
|
detectors[i]->setReceiverOnline(off);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return thisMultiDetector->onlineFlag;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
string multiSlsDetector::checkReceiverOnline() {
|
||||||
string retval1 = "",retval;
|
string retval1 = "",retval;
|
||||||
for (int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++) {
|
for (int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++) {
|
||||||
if (detectors[idet]) {
|
if (detectors[idet]) {
|
||||||
retval=detectors[idet]->setupReceiver(fileName);
|
retval=detectors[idet]->checkReceiverOnline();
|
||||||
if(!retval.empty()){
|
if(!retval.empty()){
|
||||||
retval1.append(retval);
|
retval1.append(retval);
|
||||||
retval1.append("+");
|
retval1.append("+");
|
||||||
@ -3571,20 +3586,129 @@ string multiSlsDetector::setupReceiver(string fileName) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
slsDetectorDefs::runStatus multiSlsDetector::startReceiver(string status,int index) {
|
|
||||||
/**master receiver or writer?*/
|
|
||||||
|
|
||||||
|
string multiSlsDetector::setReceiverFileName(string fileName) {
|
||||||
|
string ret="error", ret1;
|
||||||
|
|
||||||
|
for (int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++) {
|
||||||
|
if (detectors[idet]) {
|
||||||
|
ret1=detectors[idet]->setReceiverFileName(fileName);
|
||||||
|
if (ret1=="error")
|
||||||
|
ret=ret1;
|
||||||
|
else if (ret!=ret1)
|
||||||
|
ret="";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
string multiSlsDetector::setReceiverFileDir(string fileDir) {
|
||||||
|
string ret="error", ret1;
|
||||||
|
|
||||||
|
for (int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++) {
|
||||||
|
if (detectors[idet]) {
|
||||||
|
ret1=detectors[idet]->setReceiverFileDir(fileDir);
|
||||||
|
if (ret1=="error")
|
||||||
|
ret=ret1;
|
||||||
|
else if (ret!=ret1)
|
||||||
|
ret="";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int multiSlsDetector::setReceiverFileIndex(int fileIndex) {
|
||||||
|
int ret=-100, ret1;
|
||||||
|
|
||||||
|
for (int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++) {
|
||||||
|
if (detectors[idet]) {
|
||||||
|
ret1=detectors[idet]->setReceiverFileIndex(fileIndex);
|
||||||
|
if (ret1==-100)
|
||||||
|
ret=ret1;
|
||||||
|
else if (ret!=ret1)
|
||||||
|
ret=-1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int multiSlsDetector::startReceiver(){
|
||||||
|
int i=0;
|
||||||
|
int ret=OK, ret1=OK;
|
||||||
|
for (i=0; i<thisMultiDetector->numberOfDetectors; i++) {
|
||||||
|
if (i!=thisMultiDetector->masterPosition)
|
||||||
|
if (detectors[i]) {
|
||||||
|
ret=detectors[i]->startReceiver();
|
||||||
|
if (ret!=OK)
|
||||||
|
ret1=FAIL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
i=thisMultiDetector->masterPosition;
|
||||||
|
if (thisMultiDetector->masterPosition>=0) {
|
||||||
|
if (detectors[i]) {
|
||||||
|
ret=detectors[i]->startReceiver();
|
||||||
|
if (ret!=OK)
|
||||||
|
ret1=FAIL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int multiSlsDetector::stopReceiver(){
|
||||||
|
int i=0;
|
||||||
|
int ret=OK, ret1=OK;
|
||||||
|
|
||||||
|
i=thisMultiDetector->masterPosition;
|
||||||
|
if (thisMultiDetector->masterPosition>=0) {
|
||||||
|
if (detectors[i]) {
|
||||||
|
ret=detectors[i]->stopReceiver();
|
||||||
|
if (ret!=OK)
|
||||||
|
ret1=FAIL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (i=0; i<thisMultiDetector->numberOfDetectors; i++) {
|
||||||
|
if (detectors[i]) {
|
||||||
|
ret=detectors[i]->stopReceiver();
|
||||||
|
if (ret!=OK)
|
||||||
|
ret1=FAIL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
slsDetectorDefs::runStatus multiSlsDetector::getReceiverStatus(){
|
||||||
|
|
||||||
runStatus s,s1;
|
runStatus s,s1;
|
||||||
|
|
||||||
if(detectors[0]) s1 = detectors[0]->startReceiver(status,index);
|
if (thisMultiDetector->masterPosition>=0)
|
||||||
|
if (detectors[thisMultiDetector->masterPosition])
|
||||||
|
return detectors[thisMultiDetector->masterPosition]->getReceiverStatus();
|
||||||
|
|
||||||
|
|
||||||
|
if (detectors[0]) s=detectors[0]->getReceiverStatus();
|
||||||
|
|
||||||
|
for (int i=0; i<thisMultiDetector->numberOfDetectors; i++) {
|
||||||
|
s1=detectors[i]->getReceiverStatus();
|
||||||
|
if (s1==ERROR)
|
||||||
|
s=ERROR;
|
||||||
|
if (s1==IDLE && s!=IDLE)
|
||||||
|
s=ERROR;
|
||||||
|
|
||||||
for (int idet=1; idet<thisMultiDetector->numberOfDetectors; idet++) {
|
|
||||||
if (detectors[idet]) {
|
|
||||||
s=detectors[idet]->startReceiver(status,index);
|
|
||||||
if(s==ERROR)
|
|
||||||
s1=ERROR;
|
|
||||||
if(s==IDLE && s1!=IDLE)
|
|
||||||
s1=ERROR;
|
|
||||||
}
|
}
|
||||||
|
return s;
|
||||||
}
|
}
|
||||||
return s1;
|
|
||||||
}
|
|
||||||
|
@ -182,6 +182,9 @@ class multiSlsDetector : public slsDetectorUtils {
|
|||||||
int scanPrecision[MAX_SCAN_LEVELS];
|
int scanPrecision[MAX_SCAN_LEVELS];
|
||||||
|
|
||||||
|
|
||||||
|
//receiver
|
||||||
|
/** online receiver flag - is set if the receiver is connected, unset if socket connection is not possible */
|
||||||
|
int receiverOnlineFlag;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1002,19 +1005,58 @@ class multiSlsDetector : public slsDetectorUtils {
|
|||||||
|
|
||||||
slsDetector *getSlsDetector(int pos) {if (pos>=0 && pos< MAXDET) return detectors[pos]; return NULL;};
|
slsDetector *getSlsDetector(int pos) {if (pos>=0 && pos< MAXDET) return detectors[pos]; return NULL;};
|
||||||
|
|
||||||
/** Sets up the receiver
|
|
||||||
@param fileName file name
|
|
||||||
\returns receiver ip or none
|
|
||||||
|
|
||||||
|
//receiver
|
||||||
|
|
||||||
|
/**
|
||||||
|
calls setReceiverTCPSocket if online and sets the flag
|
||||||
*/
|
*/
|
||||||
string setupReceiver(string fileName="");
|
int setReceiverOnline(int const online=GET_ONLINE_FLAG);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Checks if the receiver is really online
|
||||||
|
*/
|
||||||
|
string checkReceiverOnline();
|
||||||
|
|
||||||
|
/**
|
||||||
|
Sets up the receiver file name
|
||||||
|
@param fileName file name
|
||||||
|
\returns file name
|
||||||
|
*/
|
||||||
|
string setReceiverFileName(string fileName="");
|
||||||
|
|
||||||
|
/**
|
||||||
|
Sets up the receiver file directory
|
||||||
|
@param fileName fileDir file directory
|
||||||
|
\returns file dir
|
||||||
|
*/
|
||||||
|
string setReceiverFileDir(string fileDir="");
|
||||||
|
|
||||||
|
/**
|
||||||
|
Sets up the receiver file index
|
||||||
|
@param fileIndex file index
|
||||||
|
\returns file index
|
||||||
|
*/
|
||||||
|
int setReceiverFileIndex(int fileIndex=-1);
|
||||||
|
|
||||||
|
|
||||||
/** Starts/Stops the receiver
|
/** Starts the listening mode of receiver
|
||||||
@param status status of receiver
|
\returns OK or FAIL
|
||||||
@param index starting index of data file
|
*/
|
||||||
|
int startReceiver();
|
||||||
|
|
||||||
|
/** Stops the listening mode of receiver
|
||||||
|
\returns OK or FAIL
|
||||||
|
*/
|
||||||
|
int stopReceiver();
|
||||||
|
|
||||||
|
/** gets the status of the listening mode of receiver
|
||||||
\returns status
|
\returns status
|
||||||
*/
|
*/
|
||||||
runStatus startReceiver(string status="",int index=0);
|
runStatus getReceiverStatus();
|
||||||
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user