added a new function checkOnline to check individually if det is connected

git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorSoftware@243 951219d9-93cf-4727-9268-0efd64621fa3
This commit is contained in:
l_maliakal_d 2012-09-10 09:31:32 +00:00
parent 6902585e24
commit ef8455ced6
4 changed files with 57 additions and 5 deletions

View File

@ -884,6 +884,26 @@ int multiSlsDetector::setOnline(int off) {
}; };
int multiSlsDetector::checkOnline() {
int ret1=-100,ret;
for (int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++) {
if (detectors[idet]) {
ret=detectors[idet]->checkOnline();
cout<<"ret:"<<ret<<endl;
if (ret1==-100)
ret1=ret;
else if (ret!=ret1)
ret1=-1;
}
}
return ret1;
};
int multiSlsDetector::exists() { int multiSlsDetector::exists() {
return thisMultiDetector->alreadyExisting; return thisMultiDetector->alreadyExisting;
} }
@ -891,8 +911,6 @@ int multiSlsDetector::exists() {
// Initialization functions // Initialization functions
@ -1941,15 +1959,15 @@ double multiSlsDetector::getRateCorrectionTau(){
ret1=ret; ret1=ret;
else if (ret!=ret1) else if (ret!=ret1)
ret1=-1; ret1=-1;
} }
} }
} else { } else {
#ifdef VERBOSE #ifdef VERBOSE
std::cout<< "Rate correction is disabled " << std::endl; std::cout<< "Rate correction is disabled " << std::endl;
#endif #endif
ret1=0; ret1=0;
} }
return ret1; return ret1;
}; };

View File

@ -356,6 +356,13 @@ class multiSlsDetector : public slsDetectorUtils {
\returns online/offline status \returns online/offline status
*/ */
int setOnline(int const online=GET_ONLINE_FLAG); int setOnline(int const online=GET_ONLINE_FLAG);
/** checks if each of the detectors are online
\returns online/offline status and -1 if any of the detector's online status is different from the other
*/
int checkOnline();
/** /**
\returns 1 if the detector structure has already be initlialized with the given id and belongs to this multiDetector instance, 0 otherwise */ \returns 1 if the detector structure has already be initlialized with the given id and belongs to this multiDetector instance, 0 otherwise */
int exists(); int exists();

View File

@ -908,6 +908,31 @@ int slsDetector::setOnline(int off) {
int slsDetector::checkOnline() {
int retval=ONLINE_FLAG;
if(!controlSocket)
controlSocket= new MySocketTCP(thisDetector->hostname, thisDetector->controlPort);
if (controlSocket->Connect()<0) {
controlSocket->SetTimeOut(5);
thisDetector->onlineFlag=OFFLINE_FLAG;
delete controlSocket;
controlSocket=NULL;
retval=OFFLINE_FLAG;
#ifdef VERBOSE
std::cout<< "offline!" << std::endl;
#endif
} else {
thisDetector->onlineFlag=ONLINE_FLAG;
controlSocket->SetTimeOut(100);
controlSocket->Disconnect();
#ifdef VERBOSE
std::cout<< "online!" << std::endl;
#endif
}
return retval;
}
/* /*
configure the socket communication and check that the server exists configure the socket communication and check that the server exists

View File

@ -284,6 +284,8 @@ typedef struct sharedSlsDetector {
int setOnline(int const online=GET_ONLINE_FLAG); int setOnline(int const online=GET_ONLINE_FLAG);
int checkOnline();
/** returns if the detector already existed /** returns if the detector already existed
\returns 1 if the detector structure has already be initlialized, 0 otherwise */ \returns 1 if the detector structure has already be initlialized, 0 otherwise */
int exists() {return thisDetector->alreadyExisting;}; int exists() {return thisDetector->alreadyExisting;};