mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-21 19:30:03 +02:00
separated slsReceiverInterface from slsDetector
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorSoftware@313 951219d9-93cf-4727-9268-0efd64621fa3
This commit is contained in:
parent
b52f9a8569
commit
4dcad48ecb
@ -3,13 +3,12 @@ CFLAGS= -DC_ONLY -fPIC
|
||||
|
||||
DFLAGS= -DDACS_INT
|
||||
|
||||
INCLUDES= -IcommonFiles -IslsDetector -IMySocketTCP -IusersFunctions -ImultiSlsDetector -IslsDetectorUtils -IslsDetectorCommand -IslsDetectorAnalysis
|
||||
|
||||
INCLUDES= -IcommonFiles -IslsDetector -IMySocketTCP -IusersFunctions -ImultiSlsDetector -IslsDetectorUtils -IslsDetectorCommand -IslsDetectorAnalysis -IslsReceiverInterface
|
||||
#EPICSFLAGS=-D EPICS -I/usr/local/epics/base/include/ -I /usr/local/epics/base/include/os/Linux/ -L /usr/local/epics/base/lib/SL5-x86/ -Wl,-R/usr/local/epics/base/lib/SL5-x86 -lca -lCom
|
||||
CC=g++
|
||||
|
||||
|
||||
SRC_CLNT= slsDetectorAnalysis/fileIO.cpp MySocketTCP/MySocketTCP.cpp usersFunctions/usersFunctions.cpp slsDetector/slsDetectorUtils.cpp slsDetector/slsDetectorCommand.cpp slsDetectorAnalysis/angularConversion.cpp slsDetectorAnalysis/angularConversionStatic.cpp slsDetectorAnalysis/energyConversion.cpp slsDetector/slsDetectorActions.cpp slsDetectorAnalysis/postProcessing.cpp slsDetector/slsDetector.cpp multiSlsDetector/multiSlsDetector.cpp slsDetector/slsDetectorUsers.cpp slsDetectorAnalysis/postProcessingFuncs.cpp
|
||||
SRC_CLNT= slsDetectorAnalysis/fileIO.cpp MySocketTCP/MySocketTCP.cpp usersFunctions/usersFunctions.cpp slsDetector/slsDetectorUtils.cpp slsDetector/slsDetectorCommand.cpp slsDetectorAnalysis/angularConversion.cpp slsDetectorAnalysis/angularConversionStatic.cpp slsDetectorAnalysis/energyConversion.cpp slsDetector/slsDetectorActions.cpp slsDetectorAnalysis/postProcessing.cpp slsDetector/slsDetector.cpp multiSlsDetector/multiSlsDetector.cpp slsDetector/slsDetectorUsers.cpp slsDetectorAnalysis/postProcessingFuncs.cpp slsReceiverInterface/receiverInterface.cpp
|
||||
|
||||
OBJS = $(SRC_CLNT:.cpp=.o)
|
||||
|
||||
|
@ -354,7 +354,7 @@ int sendModule(int file_des, sls_detector_module *myMod) {
|
||||
#ifdef VERBOSE
|
||||
printf("dacs %d of size %d sent\n",myMod->module, ts);
|
||||
for (idac=0; idac< nDacs; idac++)
|
||||
printf("dac %d is %d\n",idac,myMod->dacs[idac]);
|
||||
printf("dac %d is %d\n",idac,(int)myMod->dacs[idac]);
|
||||
#endif
|
||||
ts+= sendDataOnly(file_des,myMod->adcs,sizeof(dacs_t)*nAdcs);
|
||||
#ifdef VERBOSE
|
||||
@ -482,7 +482,7 @@ int receiveModule(int file_des, sls_detector_module* myMod) {
|
||||
#ifdef VERBOSE
|
||||
printf("dacs received\n");
|
||||
for (id=0; id<nDacs; id++)
|
||||
printf("dac %d val %d\n",id, myMod->dacs[id]);
|
||||
printf("dac %d val %d\n",id, (int)myMod->dacs[id]);
|
||||
|
||||
|
||||
#endif
|
||||
|
@ -123,7 +123,8 @@ slsDetector::slsDetector(int id,multiSlsDetector *p) :slsDetectorUtils(),
|
||||
dacs(NULL),
|
||||
adcs(NULL),
|
||||
chipregs(NULL),
|
||||
chanregs(NULL)
|
||||
chanregs(NULL),
|
||||
thisReceiver(NULL)
|
||||
|
||||
|
||||
{
|
||||
@ -172,7 +173,8 @@ slsDetector::slsDetector(detectorType type, int id,multiSlsDetector *p): slsDete
|
||||
dacs(NULL),
|
||||
adcs(NULL),
|
||||
chipregs(NULL),
|
||||
chanregs(NULL)
|
||||
chanregs(NULL),
|
||||
thisReceiver(NULL)
|
||||
{
|
||||
while (shmId<0) {
|
||||
/**Initlializes shared memory \sa initSharedMemory
|
||||
@ -224,7 +226,8 @@ slsDetector::slsDetector(char *name, int id, int cport,multiSlsDetector *p) : sl
|
||||
dacs(NULL),
|
||||
adcs(NULL),
|
||||
chipregs(NULL),
|
||||
chanregs(NULL)
|
||||
chanregs(NULL),
|
||||
thisReceiver(NULL)
|
||||
|
||||
{
|
||||
detectorType type=(detectorType)getDetectorType(name, cport);
|
||||
@ -672,6 +675,7 @@ int slsDetector::initializeDetectorSize(detectorType type) {
|
||||
fileName=parentDet->fileName;
|
||||
fileIndex=parentDet->fileIndex;
|
||||
|
||||
thisReceiver = new receiverInterface(dataSocket);
|
||||
|
||||
// setAngularConversionPointer(thisDetector->angOff,&thisDetector->nMods, thisDetector->nChans*thisDetector->nChips);
|
||||
|
||||
@ -5284,18 +5288,21 @@ slsDetectorDefs::synchronizationMode slsDetector::setSynchronization(synchroniza
|
||||
|
||||
/*receiver*/
|
||||
int slsDetector::setReceiverOnline(int off) {
|
||||
if (off!=GET_ONLINE_FLAG) {
|
||||
if(strcmp(thisDetector->receiverIP,"none")){
|
||||
thisDetector->receiverOnlineFlag=off;
|
||||
if (thisDetector->receiverOnlineFlag==ONLINE_FLAG)
|
||||
setReceiverTCPSocket();
|
||||
}
|
||||
//Since flag becomes offline if receiver not online.
|
||||
//This ensures server to NOT send to receiver in the next command line comment
|
||||
if((off==ONLINE_FLAG)&&(thisDetector->receiverOnlineFlag!=ONLINE_FLAG))
|
||||
DetectorStopReceiver();
|
||||
}
|
||||
return thisDetector->receiverOnlineFlag;
|
||||
int prev = thisDetector->receiverOnlineFlag;
|
||||
if (off!=GET_ONLINE_FLAG) {
|
||||
if(strcmp(thisDetector->receiverIP,"none")){
|
||||
thisDetector->receiverOnlineFlag=off;
|
||||
if (thisDetector->receiverOnlineFlag==ONLINE_FLAG){
|
||||
setReceiverTCPSocket();
|
||||
if(thisDetector->receiverOnlineFlag==OFFLINE_FLAG)
|
||||
std::cout << "cannot connect to receiver" << endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
//To ensure detector knows, if receiver suddenly went down
|
||||
if((prev==ONLINE_FLAG)&&(thisDetector->receiverOnlineFlag==OFFLINE_FLAG))
|
||||
detectorSendToReceiver(false);
|
||||
return thisDetector->receiverOnlineFlag;
|
||||
}
|
||||
|
||||
|
||||
@ -5336,14 +5343,7 @@ string slsDetector::checkReceiverOnline() {
|
||||
|
||||
|
||||
|
||||
/*
|
||||
configure the socket communication and check that the receiver exists
|
||||
enum communicationProtocol{
|
||||
TCP,
|
||||
UDP
|
||||
}{};
|
||||
|
||||
*/
|
||||
|
||||
int slsDetector::setReceiverTCPSocket(string const name, int const data_port){
|
||||
|
||||
@ -5405,6 +5405,7 @@ int slsDetector::setReceiverTCPSocket(string const name, int const data_port){
|
||||
std::cout<< "offline!" << std::endl;
|
||||
#endif
|
||||
}
|
||||
thisReceiver->setSocket(dataSocket);
|
||||
return retval;
|
||||
};
|
||||
|
||||
@ -5414,11 +5415,10 @@ int slsDetector::setReceiverTCPSocket(string const name, int const data_port){
|
||||
|
||||
|
||||
string slsDetector::setFilePath(string s) {
|
||||
int fnum=F_SET_FILE_PATH;
|
||||
int fnum = F_SET_FILE_PATH;
|
||||
int ret = FAIL;
|
||||
char mess[100];
|
||||
char arg[MAX_STR_LENGTH];
|
||||
char retval[MAX_STR_LENGTH]="";
|
||||
char retval[MAX_STR_LENGTH] = "";
|
||||
struct stat st;
|
||||
|
||||
if(thisDetector->receiverOnlineFlag==OFFLINE_FLAG){
|
||||
@ -5430,30 +5430,17 @@ string slsDetector::setFilePath(string s) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
else if(setReceiverOnline(ONLINE_FLAG)==ONLINE_FLAG){
|
||||
strcpy(arg,s.c_str());
|
||||
#ifdef VERBOSE
|
||||
std::cout << "Sending file path to receiver " << arg << std::endl;
|
||||
#endif
|
||||
if (dataSocket) {
|
||||
if (dataSocket->Connect()>=0) {
|
||||
dataSocket->SendDataOnly(&fnum,sizeof(fnum));
|
||||
dataSocket->SendDataOnly(arg,MAX_STR_LENGTH);
|
||||
dataSocket->ReceiveDataOnly(&ret,sizeof(ret));
|
||||
if (ret==FAIL){
|
||||
dataSocket->ReceiveDataOnly(mess,sizeof(mess));
|
||||
std::cout<< "Receiver returned error: " << mess << std::endl;
|
||||
}
|
||||
dataSocket->ReceiveDataOnly(retval,MAX_STR_LENGTH);
|
||||
fileIO::setFilePath(s);
|
||||
}
|
||||
dataSocket->Disconnect();
|
||||
if (ret==FORCE_UPDATE)
|
||||
updateReceiver();
|
||||
}
|
||||
}else
|
||||
std::cout << "cannot connect to receiver" << endl;
|
||||
ret=thisReceiver->sendString(fnum,retval,arg);
|
||||
if(ret!=FAIL)
|
||||
fileIO::setFilePath(string(retval));
|
||||
if(ret==FORCE_UPDATE)
|
||||
updateReceiver();
|
||||
}
|
||||
|
||||
return fileIO::getFilePath();
|
||||
}
|
||||
@ -5463,7 +5450,6 @@ string slsDetector::setFilePath(string s) {
|
||||
string slsDetector::setFileName(string s) {
|
||||
int fnum=F_SET_FILE_NAME;
|
||||
int ret = FAIL;
|
||||
char mess[100];
|
||||
char arg[MAX_STR_LENGTH];
|
||||
char retval[MAX_STR_LENGTH]="";
|
||||
|
||||
@ -5474,33 +5460,21 @@ string slsDetector::setFileName(string s) {
|
||||
}
|
||||
|
||||
if(thisDetector->receiverOnlineFlag==ONLINE_FLAG){
|
||||
if(setReceiverOnline(ONLINE_FLAG)!=ONLINE_FLAG){
|
||||
if(setReceiverOnline(ONLINE_FLAG)==ONLINE_FLAG){
|
||||
strcpy(arg,s.c_str());
|
||||
#ifdef VERBOSE
|
||||
std::cout << "Sending file name to receiver " << arg << std::endl;
|
||||
#endif
|
||||
if (dataSocket) {
|
||||
if (dataSocket->Connect()>=0) {
|
||||
dataSocket->SendDataOnly(&fnum,sizeof(fnum));
|
||||
dataSocket->SendDataOnly(arg,MAX_STR_LENGTH);
|
||||
dataSocket->ReceiveDataOnly(&ret,sizeof(ret));
|
||||
if (ret==FAIL){
|
||||
dataSocket->ReceiveDataOnly(mess,sizeof(mess));
|
||||
std::cout<< "Receiver returned error: " << mess << std::endl;
|
||||
}
|
||||
dataSocket->ReceiveDataOnly(retval,MAX_STR_LENGTH);
|
||||
ret=thisReceiver->sendString(fnum,retval,arg);
|
||||
if(ret!=FAIL){
|
||||
#ifdef VERBOSE
|
||||
std::cout << "Complete file prefix from receiver: " << retval << std::endl;
|
||||
std::cout << "Complete file prefix from receiver: " << retval << std::endl;
|
||||
#endif
|
||||
fileIO::setFileName(parentDet->getNameFromReceiverFilePrefix(string(retval)));
|
||||
}
|
||||
dataSocket->Disconnect();
|
||||
if (ret==FORCE_UPDATE)
|
||||
updateReceiver();
|
||||
fileIO::setFileName(parentDet->getNameFromReceiverFilePrefix(string(retval)));
|
||||
}
|
||||
|
||||
}else
|
||||
std::cout << "cannot connect to receiver" << endl;
|
||||
if(ret==FORCE_UPDATE)
|
||||
updateReceiver();
|
||||
}
|
||||
}
|
||||
|
||||
return fileIO::getFileName();
|
||||
@ -5510,46 +5484,27 @@ string slsDetector::setFileName(string s) {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
int slsDetector::setFileIndex(int i) {
|
||||
int fnum=F_SET_FILE_INDEX;
|
||||
int ret = FAIL;
|
||||
int retval=-1;
|
||||
int arg = i;
|
||||
char mess[100];
|
||||
|
||||
if(thisDetector->receiverOnlineFlag==OFFLINE_FLAG){
|
||||
if(i>=0)
|
||||
fileIO::setFileIndex(i);
|
||||
}
|
||||
|
||||
|
||||
else if(setReceiverOnline(ONLINE_FLAG)==ONLINE_FLAG){
|
||||
#ifdef VERBOSE
|
||||
std::cout << "Sending file dir to receiver " << arg << std::endl;
|
||||
std::cout << "Sending file index to receiver " << arg << std::endl;
|
||||
#endif
|
||||
if (dataSocket) {
|
||||
if (dataSocket->Connect()>=0) {
|
||||
dataSocket->SendDataOnly(&fnum,sizeof(fnum));
|
||||
dataSocket->SendDataOnly(&arg,sizeof(arg));
|
||||
dataSocket->ReceiveDataOnly(&ret,sizeof(ret));
|
||||
if (ret==FAIL){
|
||||
dataSocket->ReceiveDataOnly(mess,sizeof(mess));
|
||||
std::cout<< "Receiver returned error: " << mess << std::endl;
|
||||
}
|
||||
dataSocket->ReceiveDataOnly(&retval,sizeof(retval));
|
||||
fileIO::setFileIndex(retval);
|
||||
}
|
||||
dataSocket->Disconnect();
|
||||
if (ret==FORCE_UPDATE)
|
||||
updateReceiver();
|
||||
}
|
||||
|
||||
}else
|
||||
std::cout << "cannot connect to receiver" << endl;
|
||||
ret=thisReceiver->sendInt(fnum,retval,arg);
|
||||
if(ret!=FAIL)
|
||||
fileIO::setFileIndex(retval);
|
||||
if(ret==FORCE_UPDATE)
|
||||
updateReceiver();
|
||||
}
|
||||
|
||||
return fileIO::getFileIndex();
|
||||
}
|
||||
@ -5560,55 +5515,49 @@ int slsDetector::setFileIndex(int i) {
|
||||
int slsDetector::startReceiver(){
|
||||
int fnum=F_START_RECEIVER;
|
||||
int ret = FAIL;
|
||||
char mess[100];
|
||||
|
||||
|
||||
if (setReceiverOnline(ONLINE_FLAG)==ONLINE_FLAG) {
|
||||
#ifdef VERBOSE
|
||||
std::cout << "Starting Receiver " << std::endl;
|
||||
#endif
|
||||
if (dataSocket) {
|
||||
if (dataSocket->Connect()>=0) {
|
||||
dataSocket->SendDataOnly(&fnum,sizeof(fnum));
|
||||
dataSocket->ReceiveDataOnly(&ret,sizeof(ret));
|
||||
if (ret==FAIL){
|
||||
dataSocket->ReceiveDataOnly(mess,sizeof(mess));
|
||||
std::cout<< "Receiver returned error: " << mess << std::endl;
|
||||
}
|
||||
dataSocket->Disconnect();
|
||||
if (ret==FORCE_UPDATE)
|
||||
ret=updateReceiver();
|
||||
}
|
||||
}
|
||||
}else
|
||||
std::cout << "cannot connect to receiver" << endl;
|
||||
|
||||
ret=thisReceiver->executeFunction(fnum);
|
||||
if(ret==FORCE_UPDATE)
|
||||
ret=updateReceiver();
|
||||
}
|
||||
|
||||
//configuremac for gotthard
|
||||
if(ret==OK)
|
||||
if(thisDetector->myDetectorType==GOTTHARD)
|
||||
ret=configureMAC();
|
||||
|
||||
if(ret==OK){
|
||||
if (thisDetector->onlineFlag==ONLINE_FLAG) {
|
||||
if(ret==OK)
|
||||
ret=detectorSendToReceiver(true);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
int slsDetector::stopReceiver(){
|
||||
int fnum=F_STOP_RECEIVER;
|
||||
int ret = FAIL;
|
||||
|
||||
detectorSendToReceiver(false);
|
||||
|
||||
if (setReceiverOnline(ONLINE_FLAG)==ONLINE_FLAG) {
|
||||
#ifdef VERBOSE
|
||||
std::cout << "Setting detector to send packets via receiver " << std::endl;
|
||||
std::cout << "Stopping Receiver " << std::endl;
|
||||
#endif
|
||||
if (controlSocket) {
|
||||
if (controlSocket->Connect()>=0) {
|
||||
controlSocket->SendDataOnly(&fnum,sizeof(fnum));
|
||||
controlSocket->ReceiveDataOnly(&ret,sizeof(ret));
|
||||
if (ret==FAIL){
|
||||
controlSocket->ReceiveDataOnly(mess,sizeof(mess));
|
||||
std::cout<< "Detector returned error: " << mess << std::endl;
|
||||
}
|
||||
controlSocket->Disconnect();
|
||||
if (ret==FORCE_UPDATE)
|
||||
ret=updateDetector();
|
||||
}
|
||||
}
|
||||
}else
|
||||
std::cout << "cannot connect to detector" << endl;
|
||||
ret=thisReceiver->executeFunction(fnum);
|
||||
if(ret==FORCE_UPDATE)
|
||||
ret=updateReceiver();
|
||||
}
|
||||
|
||||
//increment file index
|
||||
if(ret==OK){
|
||||
fileIO::setFileIndex(fileIO::getFileIndex()+1);
|
||||
setFileIndex(fileIO::getFileIndex());
|
||||
}
|
||||
|
||||
return ret;
|
||||
@ -5616,10 +5565,13 @@ int slsDetector::startReceiver(){
|
||||
|
||||
|
||||
|
||||
int slsDetector::DetectorStopReceiver(){
|
||||
int fnum=F_STOP_RECEIVER;
|
||||
int slsDetector::detectorSendToReceiver(bool set){
|
||||
int fnum;
|
||||
if(set) fnum=F_START_RECEIVER;
|
||||
else fnum=F_STOP_RECEIVER;
|
||||
int ret = FAIL;
|
||||
char mess[100];
|
||||
|
||||
if (thisDetector->onlineFlag==ONLINE_FLAG) {
|
||||
#ifdef VERBOSE
|
||||
std::cout << "Setting detector to send packets via client " << std::endl;
|
||||
@ -5645,42 +5597,6 @@ int slsDetector::DetectorStopReceiver(){
|
||||
|
||||
|
||||
|
||||
int slsDetector::stopReceiver(){
|
||||
int fnum=F_STOP_RECEIVER;
|
||||
int ret = FAIL;
|
||||
char mess[100];
|
||||
|
||||
DetectorStopReceiver();
|
||||
|
||||
if (setReceiverOnline(ONLINE_FLAG)==ONLINE_FLAG) {
|
||||
#ifdef VERBOSE
|
||||
std::cout << "Stopping Receiver " << std::endl;
|
||||
#endif
|
||||
if (dataSocket) {
|
||||
if (dataSocket->Connect()>=0) {
|
||||
dataSocket->SendDataOnly(&fnum,sizeof(fnum));
|
||||
dataSocket->ReceiveDataOnly(&ret,sizeof(ret));
|
||||
if (ret==FAIL){
|
||||
dataSocket->ReceiveDataOnly(mess,sizeof(mess));
|
||||
std::cout<< "Receiver returned error: " << mess << std::endl;
|
||||
}
|
||||
|
||||
dataSocket->Disconnect();
|
||||
if (ret==FORCE_UPDATE)
|
||||
ret=updateReceiver();
|
||||
}
|
||||
}
|
||||
}else
|
||||
std::cout << "cannot connect to receiver" << endl;
|
||||
|
||||
//increment file index
|
||||
if(ret==OK){
|
||||
fileIO::setFileIndex(fileIO::getFileIndex()+1);
|
||||
setFileIndex(fileIO::getFileIndex());
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -5688,31 +5604,21 @@ int slsDetector::stopReceiver(){
|
||||
slsDetectorDefs::runStatus slsDetector::getReceiverStatus(){
|
||||
int fnum=F_GET_RECEIVER_STATUS;
|
||||
int ret = FAIL;
|
||||
char mess[100];
|
||||
runStatus retval=ERROR;
|
||||
int retval=-1;
|
||||
runStatus s=ERROR;
|
||||
|
||||
if (setReceiverOnline(ONLINE_FLAG)==ONLINE_FLAG) {
|
||||
#ifdef VERBOSE
|
||||
std::cout << "Getting Receiver Status" << std::endl;
|
||||
#endif
|
||||
if (dataSocket) {
|
||||
if (dataSocket->Connect()>=0) {
|
||||
dataSocket->SendDataOnly(&fnum,sizeof(fnum));
|
||||
dataSocket->ReceiveDataOnly(&ret,sizeof(ret));
|
||||
if (ret==FAIL){
|
||||
dataSocket->ReceiveDataOnly(mess,sizeof(mess));
|
||||
std::cout<< "Receiver returned error: " << mess << std::endl;
|
||||
}else
|
||||
dataSocket->ReceiveDataOnly(&retval,sizeof(retval));
|
||||
ret=thisReceiver->getInt(fnum,retval);
|
||||
if(retval!=-1)
|
||||
s=(runStatus)retval;
|
||||
if(ret==FORCE_UPDATE)
|
||||
ret=updateReceiver();
|
||||
}
|
||||
|
||||
dataSocket->Disconnect();
|
||||
if (ret==FORCE_UPDATE)
|
||||
updateReceiver();
|
||||
}
|
||||
}
|
||||
}else
|
||||
std::cout << "cannot connect to receiver" << endl;
|
||||
return retval;
|
||||
return s;
|
||||
}
|
||||
|
||||
|
||||
@ -5721,30 +5627,17 @@ slsDetectorDefs::runStatus slsDetector::getReceiverStatus(){
|
||||
int slsDetector::getFramesCaughtByReciver(){
|
||||
int fnum=F_GET_FRAMES_CAUGHT;
|
||||
int ret = FAIL;
|
||||
char mess[100];
|
||||
int retval=-1;
|
||||
|
||||
if (setReceiverOnline(ONLINE_FLAG)==ONLINE_FLAG) {
|
||||
#ifdef VERBOSE
|
||||
std::cout << "Getting Frames Caught by Receiver " << std::endl;
|
||||
#endif
|
||||
if (dataSocket) {
|
||||
if (dataSocket->Connect()>=0) {
|
||||
dataSocket->SendDataOnly(&fnum,sizeof(fnum));
|
||||
dataSocket->ReceiveDataOnly(&ret,sizeof(ret));
|
||||
if (ret!=FAIL)
|
||||
dataSocket->ReceiveDataOnly(&retval,sizeof(retval));
|
||||
else{
|
||||
dataSocket->ReceiveDataOnly(mess,sizeof(mess));
|
||||
std::cout<< "Receiver returned error: " << mess << std::endl;
|
||||
}
|
||||
dataSocket->Disconnect();
|
||||
if (ret==FORCE_UPDATE)
|
||||
updateReceiver();
|
||||
}
|
||||
}
|
||||
}else
|
||||
std::cout << "cannot connect to receiver" << endl;
|
||||
ret=thisReceiver->getInt(fnum,retval);
|
||||
if(ret==FORCE_UPDATE)
|
||||
ret=updateReceiver();
|
||||
}
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
@ -5755,33 +5648,17 @@ int slsDetector::lockReceiver(int lock){
|
||||
int fnum=F_LOCK_RECEIVER;
|
||||
int ret = FAIL;
|
||||
int retval=-1;
|
||||
char mess[100];
|
||||
int arg= lock;
|
||||
int arg=lock;
|
||||
|
||||
|
||||
if(setReceiverOnline(ONLINE_FLAG)!=ONLINE_FLAG){
|
||||
#ifdef VERBOSE
|
||||
std::cout << "Locking or Unlocking Receiver " << std::endl;
|
||||
#endif
|
||||
if (dataSocket) {
|
||||
if (dataSocket->Connect()>=0) {
|
||||
dataSocket->SendDataOnly(&fnum,sizeof(fnum));
|
||||
dataSocket->SendDataOnly(&arg,sizeof(arg));
|
||||
dataSocket->ReceiveDataOnly(&ret,sizeof(ret));
|
||||
if (ret!=FAIL)
|
||||
dataSocket->ReceiveDataOnly(&retval,sizeof(retval));
|
||||
else{
|
||||
dataSocket->ReceiveDataOnly(mess,sizeof(mess));
|
||||
std::cout<< "Receiver returned error: " << mess << std::endl;
|
||||
}
|
||||
|
||||
dataSocket->Disconnect();
|
||||
if (ret==FORCE_UPDATE)
|
||||
updateReceiver();
|
||||
}
|
||||
}
|
||||
}else
|
||||
std::cout << "cannot connect to receiver" << endl;
|
||||
ret=thisReceiver->sendInt(fnum,retval,arg);
|
||||
if(ret==FORCE_UPDATE)
|
||||
updateReceiver();
|
||||
}
|
||||
|
||||
return retval;
|
||||
}
|
||||
@ -5795,30 +5672,15 @@ string slsDetector::getReceiverLastClientIP(){
|
||||
int fnum=F_GET_LAST_CLIENT_IP;
|
||||
int ret = FAIL;
|
||||
char retval[INET_ADDRSTRLEN]="";
|
||||
char mess[100];
|
||||
|
||||
if(setReceiverOnline(ONLINE_FLAG)!=ONLINE_FLAG){
|
||||
#ifdef VERBOSE
|
||||
std::cout << "Geting Last Client IP connected to Receiver " << std::endl;
|
||||
#endif
|
||||
if (dataSocket) {
|
||||
if (dataSocket->Connect()>=0) {
|
||||
dataSocket->SendDataOnly(&fnum,sizeof(fnum));
|
||||
dataSocket->ReceiveDataOnly(&ret,sizeof(ret));
|
||||
if (ret!=FAIL)
|
||||
dataSocket->ReceiveDataOnly(retval,sizeof(retval));
|
||||
else{
|
||||
dataSocket->ReceiveDataOnly(mess,sizeof(mess));
|
||||
std::cout<< "Receiver returned error: " << mess << std::endl;
|
||||
}
|
||||
|
||||
dataSocket->Disconnect();
|
||||
if (ret==FORCE_UPDATE)
|
||||
updateReceiver();
|
||||
}
|
||||
}
|
||||
}else
|
||||
std::cout << "cannot connect to receiver" << endl;
|
||||
ret=thisReceiver->getLastClientIP(fnum,retval);
|
||||
if(ret==FORCE_UPDATE)
|
||||
updateReceiver();
|
||||
}
|
||||
|
||||
return string(retval);
|
||||
}
|
||||
@ -5837,7 +5699,6 @@ int slsDetector::updateReceiverNoWait() {
|
||||
#ifdef VERBOSE
|
||||
cout << "Updating receiver last modified by " << lastClientIP << std::endl;
|
||||
#endif
|
||||
|
||||
n = dataSocket->ReceiveDataOnly(&ind,sizeof(ind));
|
||||
fileIO::setFileIndex(ind);
|
||||
n = dataSocket->ReceiveDataOnly(path,MAX_STR_LENGTH);
|
||||
|
@ -13,6 +13,8 @@
|
||||
|
||||
#include "angleConversionConstant.h";
|
||||
|
||||
#include "receiverInterface.h"
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
@ -1437,7 +1439,10 @@ class slsDetector : public slsDetectorUtils, public energyConversion {
|
||||
*/
|
||||
int stopReceiver();
|
||||
|
||||
int DetectorStopReceiver();
|
||||
/** Sets(false) or Resets(true) the CPU bit in detector
|
||||
\returns OK or FAIL
|
||||
*/
|
||||
int detectorSendToReceiver(bool set);
|
||||
|
||||
/** gets the status of the listening mode of receiver
|
||||
\returns status
|
||||
@ -1488,7 +1493,7 @@ class slsDetector : public slsDetectorUtils, public energyConversion {
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* parent multi detector
|
||||
* */
|
||||
|
||||
multiSlsDetector *parentDet;
|
||||
@ -1534,6 +1539,8 @@ class slsDetector : public slsDetectorUtils, public energyConversion {
|
||||
/** pointer to channal registers */
|
||||
int *chanregs;
|
||||
|
||||
receiverInterface *thisReceiver;
|
||||
|
||||
/** Initializes the shared memory
|
||||
\param type is needed to define the size of the shared memory
|
||||
\param id is the detector id needed to define the shared memory id
|
||||
|
@ -774,7 +774,7 @@ string slsDetectorCommand::cmdAcquire(int narg, char *args[], int action) {
|
||||
|
||||
|
||||
myDet->setOnline(ONLINE_FLAG);
|
||||
bool receiver=myDet->setReceiverOnline();
|
||||
bool receiver=(myDet->setReceiverOnline()==ONLINE_FLAG);
|
||||
|
||||
if(receiver)
|
||||
if(myDet->startReceiver()==OK)
|
||||
|
Loading…
x
Reference in New Issue
Block a user