mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-22 03:40:04 +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) {
|
||||
cout<<"File Name:"<<fileName<<endl;
|
||||
//receiver
|
||||
|
||||
|
||||
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;
|
||||
for (int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++) {
|
||||
if (detectors[idet]) {
|
||||
retval=detectors[idet]->setupReceiver(fileName);
|
||||
retval=detectors[idet]->checkReceiverOnline();
|
||||
if(!retval.empty()){
|
||||
retval1.append(retval);
|
||||
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;
|
||||
|
||||
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];
|
||||
|
||||
|
||||
//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;};
|
||||
|
||||
/** 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
|
||||
@param status status of receiver
|
||||
@param index starting index of data file
|
||||
/** Starts the listening mode of receiver
|
||||
\returns OK or FAIL
|
||||
*/
|
||||
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
|
||||
*/
|
||||
runStatus startReceiver(string status="",int index=0);
|
||||
runStatus getReceiverStatus();
|
||||
|
||||
|
||||
protected:
|
||||
|
Loading…
x
Reference in New Issue
Block a user