From 5cb68d870e628b4ff2d7018449e1536ee2aba75c Mon Sep 17 00:00:00 2001 From: l_maliakal_d Date: Mon, 10 Sep 2012 15:15:43 +0000 Subject: [PATCH] checkOnline works properly now and calls tcpsocket if controlsocket not defined git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorSoftware@245 951219d9-93cf-4727-9268-0efd64621fa3 --- .../multiSlsDetector/multiSlsDetector.cpp | 17 ++++--- .../multiSlsDetector/multiSlsDetector.h | 2 +- .../slsDetector/slsDetector.cpp | 44 +++++++++++------- slsDetectorSoftware/slsDetector/slsDetector.h | 2 +- .../slsDetector/slsDetectorCommand.cpp | 26 ++++++++--- .../slsDetector/slsDetectorUtils.h | 6 +++ .../angularConversionStatic.o | Bin 12720 -> 11384 bytes 7 files changed, 62 insertions(+), 35 deletions(-) diff --git a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp index 3c25906a9..873359d87 100644 --- a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp +++ b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp @@ -885,19 +885,18 @@ int multiSlsDetector::setOnline(int off) { -int multiSlsDetector::checkOnline() { - int ret1=-100,ret; +string multiSlsDetector::checkOnline() { + string retval1 = "",retval; for (int idet=0; idetnumberOfDetectors; idet++) { if (detectors[idet]) { - ret=detectors[idet]->checkOnline(); - cout<<"ret:"<checkOnline(); + if(!retval.empty()){ + retval1.append(retval); + retval1.append("+"); + } } } - return ret1; + return retval1; }; diff --git a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.h b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.h index 3f0a78f2f..30b36a882 100644 --- a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.h +++ b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.h @@ -360,7 +360,7 @@ class multiSlsDetector : public slsDetectorUtils { /** 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(); + string checkOnline(); /** diff --git a/slsDetectorSoftware/slsDetector/slsDetector.cpp b/slsDetectorSoftware/slsDetector/slsDetector.cpp index 401745614..4470aa2f1 100644 --- a/slsDetectorSoftware/slsDetector/slsDetector.cpp +++ b/slsDetectorSoftware/slsDetector/slsDetector.cpp @@ -1,4 +1,3 @@ - #include "slsDetector.h" #include "usersFunctions.h" #include "slsDetectorCommand.h" @@ -908,26 +907,35 @@ 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; +string slsDetector::checkOnline() { + string retval = ""; + if(!controlSocket){ + //this already sets the online/offline flag + setTCPSocket(); + if(thisDetector->onlineFlag==OFFLINE_FLAG) + return string(thisDetector->hostname); + else + return string(""); + } + //still cannot connect to socket, controlSocket=0 + if(controlSocket){ + if (controlSocket->Connect()<0) { + controlSocket->SetTimeOut(5); + thisDetector->onlineFlag=OFFLINE_FLAG; + delete controlSocket; + controlSocket=NULL; + retval = thisDetector->hostname; #ifdef VERBOSE - std::cout<< "offline!" << std::endl; + std::cout<< "offline!" << std::endl; #endif - } else { - thisDetector->onlineFlag=ONLINE_FLAG; - controlSocket->SetTimeOut(100); - controlSocket->Disconnect(); + } else { + thisDetector->onlineFlag=ONLINE_FLAG; + controlSocket->SetTimeOut(100); + controlSocket->Disconnect(); #ifdef VERBOSE - std::cout<< "online!" << std::endl; + std::cout<< "online!" << std::endl; #endif + } } return retval; } @@ -970,7 +978,7 @@ int slsDetector::setTCPSocket(string const name, int const control_port, int con } } else strcpy(thisName,thisDetector->hostname); - + if (control_port>0) { #ifdef VERBOSE std::cout<< "setting control port" << std::endl; diff --git a/slsDetectorSoftware/slsDetector/slsDetector.h b/slsDetectorSoftware/slsDetector/slsDetector.h index a1702ea43..13a6208b4 100644 --- a/slsDetectorSoftware/slsDetector/slsDetector.h +++ b/slsDetectorSoftware/slsDetector/slsDetector.h @@ -284,7 +284,7 @@ typedef struct sharedSlsDetector { int setOnline(int const online=GET_ONLINE_FLAG); - int checkOnline(); + string checkOnline(); /** returns if the detector already existed \returns 1 if the detector structure has already be initlialized, 0 otherwise */ diff --git a/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp b/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp index 1353d7958..13eb391cb 100644 --- a/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp +++ b/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp @@ -183,6 +183,10 @@ slsDetectorCommand::slsDetectorCommand(slsDetectorUtils *det) { descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdOnline; i++; + descrToFuncMap[i].m_pFuncName="checkonline"; // + descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdOnline; + i++; + descrToFuncMap[i].m_pFuncName="enablefwrite"; // descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdEnablefwrite; i++; @@ -2233,13 +2237,23 @@ string slsDetectorCommand::cmdOnline(int narg, char *args[], int action) { } int ival; char ans[1000]; - if (action==PUT_ACTION) { - if (sscanf(args[1],"%d",&ival)) - myDet->setOnline(ival); - else - return string("Could not scan online mode ")+string(args[1]); + + if(cmd=="online"){ + if (action==PUT_ACTION) { + if (sscanf(args[1],"%d",&ival)) + myDet->setOnline(ival); + else + return string("Could not scan online mode ")+string(args[1]); + } + sprintf(ans,"%d",myDet->setOnline()); + }//"checkonline" + else{ + strcpy(ans,myDet->checkOnline().c_str()); + if(!strlen(ans)) + strcpy(ans,"All online"); + else + strcat(ans," :not online"); } - sprintf(ans,"%d",myDet->setOnline()); return ans; } diff --git a/slsDetectorSoftware/slsDetector/slsDetectorUtils.h b/slsDetectorSoftware/slsDetector/slsDetectorUtils.h index ead657c0d..c92940afb 100644 --- a/slsDetectorSoftware/slsDetector/slsDetectorUtils.h +++ b/slsDetectorSoftware/slsDetector/slsDetectorUtils.h @@ -194,6 +194,12 @@ class slsDetectorUtils : public slsDetectorActions, public postProcessing { virtual int64_t getId(idMode mode, int imod=0)=0; /** + checks if the detector(s) are online/offline + \returns hostname if offline + */ + virtual string checkOnline()=0; + + /** Digital test of the modules \param mode test mode \param imod module number for chip test or module firmware test diff --git a/slsDetectorSoftware/slsDetectorAnalysis/angularConversionStatic.o b/slsDetectorSoftware/slsDetectorAnalysis/angularConversionStatic.o index 7290b57ae5ea83a0b892c3356f77a8f8b53daf99..0bc7d3b3dc0482914539a8ee3ba66f0cf940a83c 100644 GIT binary patch delta 2998 zcmaKue{56N701uJ_Df9S*iK?4j$?vrJBC8SQV3nw(2Yj9K&2O7^*EpL@)j5;6N1Lmc;_gEr0n&UXAc&amwSa-0`zCzRv-*mlB+ z9IMZ^VmZ#ka8g!!{DX_L?@c}5qvm88@Mw0M9os;O&z!Ho8M7AbMTYI(M(Qmev=&CE zl*4Kqr2Y|azXKh%<#1T86is|Pab;p(dc1GOd&-)5)%~3TYkItU`qIw%@$Q*HYre^9 z@IE<)A(MUczb42SW4QRMX4oj@ z{br33+J%yFFs28!ca5>*mP|aIh{YDdCaK(%^o>bNB zTk?rf%GsACsij@Bl2AMoJVO^Q9(i7H&bHAkm z2haE-yrHy-`%7=)Go>3_SNd?CtIZ20ZHPQ=(xX?6ekTn%<7gi<#eU61z{m2F$r#JZ z!5Z@^MK?cdykpSEhO~d6;EpJhn=5MgyJhY}cUEm<9 z1aH*83w{my{r{u?5d02)yu3Q`Gqm2qus5OXt{bT(>5!R5aDS_is0gDu%OSEW(fw1f zb{7%dFV8oBzF*3Dq?oAx2IEu9o!sPKVcas@<*#$7OC@}~GE%T-1tlc9D)Z7$)9OIIg$AVlsm za?x4jcnEDDDo3;f%w9e;s`K=UJiRVY-vhk{`@Rz6%6LD_>p!X}K^>@?JvzWdaQ2c3 z@5s|Fd3sx(KANYW%hSJv&K9dIDC4*{J00E{&DC}ZFM9R@^7P?6eJW4?gWH#_RUZ`a zk!3Ztew2M2W64aXaYSy1Ms3=99NIn>{PwbEO#1+EclaA>q6v2YG*VW8v2AkL>QTy7*Ld>#)1F&2Tq%KC-WuzWMd-y}NsO zH0tN~mX{7EBzt}c< zSo=NNKdk*D+CQ%S7qtJ9__q+96ul-vG$oC7cw^zML}mf_MI3tJZA5E@_~JJUzeLmy z%A0lwZzp<4e7wM;!X}~vy8p2DkBG*E$3^4M$Z6qvl$$WImgu53{skH_qz2WXzKlZ! zif+`pL$gP?k?5f2&xLp5JPS7w{YhvM%?LLWeWJD71>J%VvJm}iz=Rkr+Ss83y0t#2 zHEaE%*1y*Jyw-ilhPn%1BF$HYcN2Xi+(J}>uedO*X=#3~2>Y*)fkR@n;@>kN-t2@B zTQMZOhv=+uD~eRuOmtZ&2Na)w*@{9Tw!#g{RxA}_D{93@>gz=#^=-l}M4g&@i&43% zjp(OhfG-QNpp5W7qBAAncB1p3v4m$D4mZ3k2L|#DAr8gcT2E{JPpzH!a!LPx0U5TG A00000 delta 4000 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 Xy9#_PBf9lUK1K3c$rnl9BKdy-oj8OD