mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-26 08:10:02 +02:00
implemented a trial error class
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorSoftware@434 951219d9-93cf-4727-9268-0efd64621fa3
This commit is contained in:
parent
3be74327f3
commit
a4206208c9
@ -11,7 +11,7 @@ DFLAGS= -DDACS_INT -DTHIS_PATH='"$(shell pwd)"'
|
|||||||
CC=g++
|
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 slsReceiverInterface/receiverInterface.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)
|
OBJS = $(SRC_CLNT:.cpp=.o)
|
||||||
|
|
||||||
|
@ -517,6 +517,13 @@ enum angleConversionParameter {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/** Error flags */
|
||||||
|
#define NUM_ERROR_FLAGS=32
|
||||||
|
#define CANNOT_CONNECT_TO_DETECTOR 0x80000000
|
||||||
|
#define CANNOT_CONNECT_TO_RECEIVER 0x40000000
|
||||||
|
#define COULD_NOT_CONFIGURE_MAC 0x00008000 //cant seem to get this error
|
||||||
|
|
||||||
|
|
||||||
//typedef struct {
|
//typedef struct {
|
||||||
//float center; /**< center of the module (channel at which the radius is perpendicular to the module surface) */
|
//float center; /**< center of the module (channel at which the radius is perpendicular to the module surface) */
|
||||||
//float ecenter; /**< error in the center determination */
|
//float ecenter; /**< error in the center determination */
|
||||||
|
@ -93,7 +93,7 @@ int multiSlsDetector::initSharedMemory(int id=0) {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
multiSlsDetector::multiSlsDetector(int id) : slsDetectorUtils(), shmId(-1)
|
multiSlsDetector::multiSlsDetector(int id) : slsDetectorUtils(), shmId(-1),errorMask(0)
|
||||||
{
|
{
|
||||||
while (shmId<0) {
|
while (shmId<0) {
|
||||||
shmId=initSharedMemory(id);
|
shmId=initSharedMemory(id);
|
||||||
@ -868,8 +868,11 @@ int multiSlsDetector::setOnline(int off) {
|
|||||||
if (off!=GET_ONLINE_FLAG) {
|
if (off!=GET_ONLINE_FLAG) {
|
||||||
thisMultiDetector->onlineFlag=off;
|
thisMultiDetector->onlineFlag=off;
|
||||||
for (int i=0; i<thisMultiDetector->numberOfDetectors; i++) {
|
for (int i=0; i<thisMultiDetector->numberOfDetectors; i++) {
|
||||||
if (detectors[i])
|
if (detectors[i]){
|
||||||
detectors[i]->setOnline(off);
|
detectors[i]->setOnline(off);
|
||||||
|
if(detectors[i]->getErrorMask())
|
||||||
|
setErrorMask(getErrorMask()|(1<<i));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return thisMultiDetector->onlineFlag;
|
return thisMultiDetector->onlineFlag;
|
||||||
@ -2527,7 +2530,9 @@ char* multiSlsDetector::setNetworkParameter(networkParameter p, string s){
|
|||||||
if (s.find('+')==string::npos) {
|
if (s.find('+')==string::npos) {
|
||||||
for (int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++) {
|
for (int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++) {
|
||||||
if (detectors[idet]) {
|
if (detectors[idet]) {
|
||||||
detectors[idet]->setNetworkParameter(p,s);
|
detectors[idet]->setNetworkParameter(p,s);
|
||||||
|
if(detectors[idet]->getErrorMask())
|
||||||
|
setErrorMask(getErrorMask()|(1<<idet));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -2724,6 +2729,8 @@ int multiSlsDetector::configureMAC(int adc) {
|
|||||||
for (int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++) {
|
for (int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++) {
|
||||||
if (detectors[idet]) {
|
if (detectors[idet]) {
|
||||||
ret1=detectors[idet]->configureMAC(adc);
|
ret1=detectors[idet]->configureMAC(adc);
|
||||||
|
if(detectors[idet]->getErrorMask())
|
||||||
|
setErrorMask(getErrorMask()|(1<<idet));
|
||||||
if (ret==-100)
|
if (ret==-100)
|
||||||
ret=ret1;
|
ret=ret1;
|
||||||
else if (ret!=ret1)
|
else if (ret!=ret1)
|
||||||
@ -3527,6 +3534,8 @@ int multiSlsDetector::setReceiverOnline(int off) {
|
|||||||
for (int i=0; i<thisMultiDetector->numberOfDetectors; i++)
|
for (int i=0; i<thisMultiDetector->numberOfDetectors; i++)
|
||||||
if (detectors[i]){
|
if (detectors[i]){
|
||||||
ret1=detectors[i]->setReceiverOnline(off);
|
ret1=detectors[i]->setReceiverOnline(off);
|
||||||
|
if(detectors[i]->getErrorMask())
|
||||||
|
setErrorMask(getErrorMask()|(1<<i));
|
||||||
if(ret==-100)
|
if(ret==-100)
|
||||||
ret=ret1;
|
ret=ret1;
|
||||||
else if (ret!=ret1)
|
else if (ret!=ret1)
|
||||||
|
@ -1128,6 +1128,24 @@ class multiSlsDetector : public slsDetectorUtils {
|
|||||||
|
|
||||||
|
|
||||||
int fillModuleMask(int *mM);
|
int fillModuleMask(int *mM);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
Sets multi error mask
|
||||||
|
@param multi error mask to be set to
|
||||||
|
/returns multi error mask
|
||||||
|
*/
|
||||||
|
int setErrorMask(int i=-1){errorMask=i;return getErrorMask();}
|
||||||
|
|
||||||
|
/**returns multi error mask */
|
||||||
|
int getErrorMask(){return errorMask;}
|
||||||
|
|
||||||
|
/**
|
||||||
|
clears error mask
|
||||||
|
/returns error mask
|
||||||
|
*/
|
||||||
|
int clearErrorMask(){errorMask=0;return errorMask;}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
|
|
||||||
@ -1140,7 +1158,8 @@ class multiSlsDetector : public slsDetectorUtils {
|
|||||||
/** Shared memory structure */
|
/** Shared memory structure */
|
||||||
sharedMultiSlsDetector *thisMultiDetector;
|
sharedMultiSlsDetector *thisMultiDetector;
|
||||||
|
|
||||||
|
/** Error Mask for each detector*/
|
||||||
|
int errorMask;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -35,6 +35,8 @@ class multiSlsDetectorCommand : public slsDetectorCommand {
|
|||||||
if (d) { \
|
if (d) { \
|
||||||
slsDetectorCommand *cmd=new slsDetectorCommand(d); \
|
slsDetectorCommand *cmd=new slsDetectorCommand(d); \
|
||||||
s=cmd->executeLine(narg, args, action); \
|
s=cmd->executeLine(narg, args, action); \
|
||||||
|
if(d->getErrorMask()) \
|
||||||
|
myDet->setErrorMask((myDet->getErrorMask())|(1<<id)); \
|
||||||
delete cmd;
|
delete cmd;
|
||||||
} else
|
} else
|
||||||
s=string("detector does no exist"); \
|
s=string("detector does no exist"); \
|
||||||
|
@ -126,7 +126,8 @@ slsDetector::slsDetector(int id,multiSlsDetector *p) :slsDetectorUtils(),
|
|||||||
adcs(NULL),
|
adcs(NULL),
|
||||||
chipregs(NULL),
|
chipregs(NULL),
|
||||||
chanregs(NULL),
|
chanregs(NULL),
|
||||||
thisReceiver(NULL)
|
thisReceiver(NULL),
|
||||||
|
errorMask(0)
|
||||||
|
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -176,7 +177,9 @@ slsDetector::slsDetector(detectorType type, int id,multiSlsDetector *p): slsDete
|
|||||||
adcs(NULL),
|
adcs(NULL),
|
||||||
chipregs(NULL),
|
chipregs(NULL),
|
||||||
chanregs(NULL),
|
chanregs(NULL),
|
||||||
thisReceiver(NULL)
|
thisReceiver(NULL),
|
||||||
|
errorMask(0)
|
||||||
|
|
||||||
{
|
{
|
||||||
while (shmId<0) {
|
while (shmId<0) {
|
||||||
/**Initlializes shared memory \sa initSharedMemory
|
/**Initlializes shared memory \sa initSharedMemory
|
||||||
@ -229,7 +232,9 @@ slsDetector::slsDetector(char *name, int id, int cport,multiSlsDetector *p) : sl
|
|||||||
adcs(NULL),
|
adcs(NULL),
|
||||||
chipregs(NULL),
|
chipregs(NULL),
|
||||||
chanregs(NULL),
|
chanregs(NULL),
|
||||||
thisReceiver(NULL)
|
thisReceiver(NULL),
|
||||||
|
errorMask(0)
|
||||||
|
|
||||||
|
|
||||||
{
|
{
|
||||||
detectorType type=(detectorType)getDetectorType(name, cport);
|
detectorType type=(detectorType)getDetectorType(name, cport);
|
||||||
@ -934,6 +939,10 @@ int slsDetector::setOnline(int off) {
|
|||||||
cout << "Detector connecting for the first time - updating!" << endl;
|
cout << "Detector connecting for the first time - updating!" << endl;
|
||||||
updateDetector();
|
updateDetector();
|
||||||
}
|
}
|
||||||
|
else if(thisDetector->onlineFlag==OFFLINE_FLAG){
|
||||||
|
std::cout << "cannot connect to detector" << endl;
|
||||||
|
setErrorMask((getErrorMask())|(CANNOT_CONNECT_TO_DETECTOR));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return thisDetector->onlineFlag;
|
return thisDetector->onlineFlag;
|
||||||
@ -4547,9 +4556,7 @@ char* slsDetector::setReceiver(string receiverIP){
|
|||||||
setFileIndex(fileIO::getFileIndex());
|
setFileIndex(fileIO::getFileIndex());
|
||||||
enableWriteToFile(parentDet->enableWriteToFileMask());
|
enableWriteToFile(parentDet->enableWriteToFileMask());
|
||||||
setUDPConnection();
|
setUDPConnection();
|
||||||
}else
|
}
|
||||||
std::cout << "cannot connect to receiver" << endl;
|
|
||||||
|
|
||||||
|
|
||||||
return thisDetector->receiver_hostname;
|
return thisDetector->receiver_hostname;
|
||||||
}
|
}
|
||||||
@ -4649,15 +4656,14 @@ int slsDetector::setUDPConnection(){
|
|||||||
updateReceiver();
|
updateReceiver();
|
||||||
|
|
||||||
//configure detector with udp details
|
//configure detector with udp details
|
||||||
if(configureMAC()!=OK){
|
if(configureMAC()==FAIL){
|
||||||
setReceiverOnline(OFFLINE_FLAG);
|
setReceiverOnline(OFFLINE_FLAG);
|
||||||
std::cout << "could not configure mac" << endl;
|
std::cout << "could not configure mac" << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}else{
|
}else
|
||||||
ret=FAIL;
|
ret=FAIL;
|
||||||
std::cout << "cannot connect to receiver" << endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -4685,6 +4691,7 @@ int slsDetector::configureMAC(int adc){
|
|||||||
strcpy(thisDetector->receiverUDPIP,inet_ntoa(*(struct in_addr*)he->h_addr));
|
strcpy(thisDetector->receiverUDPIP,inet_ntoa(*(struct in_addr*)he->h_addr));
|
||||||
else{
|
else{
|
||||||
std::cout << "no rx_udpip given and invalid receiver hostname" << endl;
|
std::cout << "no rx_udpip given and invalid receiver hostname" << endl;
|
||||||
|
setErrorMask((getErrorMask())|(COULD_NOT_CONFIGURE_MAC));
|
||||||
return FAIL;
|
return FAIL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -4703,6 +4710,7 @@ int slsDetector::configureMAC(int adc){
|
|||||||
for(i=0;i<2;i++){
|
for(i=0;i<2;i++){
|
||||||
if(!strcmp(arg[i],"none")){
|
if(!strcmp(arg[i],"none")){
|
||||||
std::cout<< "Configure MAC Error. IP/MAC Addresses not set"<< std::endl;
|
std::cout<< "Configure MAC Error. IP/MAC Addresses not set"<< std::endl;
|
||||||
|
setErrorMask((getErrorMask())|(COULD_NOT_CONFIGURE_MAC));
|
||||||
return FAIL;
|
return FAIL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -4767,17 +4775,18 @@ int slsDetector::configureMAC(int adc){
|
|||||||
if (ret==FAIL){
|
if (ret==FAIL){
|
||||||
controlSocket->ReceiveDataOnly(mess,sizeof(mess));
|
controlSocket->ReceiveDataOnly(mess,sizeof(mess));
|
||||||
std::cout<< "Detector returned error: " << mess << std::endl;
|
std::cout<< "Detector returned error: " << mess << std::endl;
|
||||||
|
setErrorMask((getErrorMask())|(COULD_NOT_CONFIGURE_MAC));
|
||||||
}
|
}
|
||||||
controlSocket->Disconnect();
|
controlSocket->Disconnect();
|
||||||
if (ret==FORCE_UPDATE)
|
if (ret==FORCE_UPDATE)
|
||||||
updateDetector();
|
updateDetector();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}else
|
}
|
||||||
std::cout << "cannot connect to detector" << endl;
|
|
||||||
|
|
||||||
if (ret==FAIL) {
|
if (ret==FAIL) {
|
||||||
std::cout<< "Configuring MAC failed " << std::endl;
|
std::cout<< "Configuring MAC failed " << std::endl;
|
||||||
|
setErrorMask((getErrorMask())|(COULD_NOT_CONFIGURE_MAC));
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -5440,8 +5449,10 @@ int slsDetector::setReceiverOnline(int off) {
|
|||||||
thisDetector->receiverOnlineFlag=off;
|
thisDetector->receiverOnlineFlag=off;
|
||||||
if (thisDetector->receiverOnlineFlag==ONLINE_FLAG){
|
if (thisDetector->receiverOnlineFlag==ONLINE_FLAG){
|
||||||
setReceiverTCPSocket();
|
setReceiverTCPSocket();
|
||||||
if(thisDetector->receiverOnlineFlag==OFFLINE_FLAG)
|
if(thisDetector->receiverOnlineFlag==OFFLINE_FLAG){
|
||||||
std::cout << "cannot connect to receiver" << endl;
|
std::cout << "cannot connect to receiver" << endl;
|
||||||
|
setErrorMask((getErrorMask())|(CANNOT_CONNECT_TO_RECEIVER));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -247,7 +247,6 @@ class slsDetector : public slsDetectorUtils, public energyConversion {
|
|||||||
/** online flag - is set if the receiver is connected, unset if socket connection is not possible */
|
/** online flag - is set if the receiver is connected, unset if socket connection is not possible */
|
||||||
int receiverOnlineFlag;
|
int receiverOnlineFlag;
|
||||||
|
|
||||||
|
|
||||||
} sharedSlsDetector;
|
} sharedSlsDetector;
|
||||||
|
|
||||||
|
|
||||||
@ -1515,6 +1514,25 @@ class slsDetector : public slsDetectorUtils, public energyConversion {
|
|||||||
|
|
||||||
|
|
||||||
int fillModuleMask(int *mM);
|
int fillModuleMask(int *mM);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
Sets error mask
|
||||||
|
@param error mask to be set to
|
||||||
|
/returns error mask
|
||||||
|
*/
|
||||||
|
int setErrorMask(int i=-1){errorMask=i;return errorMask;}
|
||||||
|
|
||||||
|
/**returns error mask */
|
||||||
|
int getErrorMask(){return errorMask;}
|
||||||
|
|
||||||
|
/**
|
||||||
|
clears error mask
|
||||||
|
/returns error mask
|
||||||
|
*/
|
||||||
|
int clearErrorMask(){errorMask=0;return errorMask;}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
|
|
||||||
@ -1555,11 +1573,8 @@ class slsDetector : public slsDetectorUtils, public energyConversion {
|
|||||||
socket for data acquisition
|
socket for data acquisition
|
||||||
*/
|
*/
|
||||||
MySocketTCP *dataSocket;
|
MySocketTCP *dataSocket;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** pointer to flat field coefficients */
|
/** pointer to flat field coefficients */
|
||||||
double *ffcoefficients;
|
double *ffcoefficients;
|
||||||
/** pointer to flat field coefficient errors */
|
/** pointer to flat field coefficient errors */
|
||||||
@ -1579,6 +1594,10 @@ class slsDetector : public slsDetectorUtils, public energyConversion {
|
|||||||
|
|
||||||
receiverInterface *thisReceiver;
|
receiverInterface *thisReceiver;
|
||||||
|
|
||||||
|
/** Error Mask*/
|
||||||
|
int errorMask;
|
||||||
|
|
||||||
|
|
||||||
/** Initializes the shared memory
|
/** Initializes the shared memory
|
||||||
\param type is needed to define the size of 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
|
\param id is the detector id needed to define the shared memory id
|
||||||
|
@ -472,6 +472,25 @@ class slsDetectorBase : public virtual slsDetectorDefs {
|
|||||||
*/
|
*/
|
||||||
virtual int* readFrameFromReceiver(char* fName, int &fIndex)=0;
|
virtual int* readFrameFromReceiver(char* fName, int &fIndex)=0;
|
||||||
|
|
||||||
|
|
||||||
|
/** Gets error mask
|
||||||
|
/returns error mask
|
||||||
|
*/
|
||||||
|
virtual int getErrorMask()=0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Sets error mask
|
||||||
|
@param error mask to be set to
|
||||||
|
/returns error mask
|
||||||
|
*/
|
||||||
|
virtual int setErrorMask(int i=-1)=0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
clears error mask
|
||||||
|
/returns error mask
|
||||||
|
*/
|
||||||
|
virtual int clearErrorMask()=0;
|
||||||
|
|
||||||
/** returns detector type string from detector type index
|
/** returns detector type string from detector type index
|
||||||
\param t string can be Mythen, Pilatus, Eiger, Gotthard, Agipd, Unknown
|
\param t string can be Mythen, Pilatus, Eiger, Gotthard, Agipd, Unknown
|
||||||
\returns MYTHEN, PILATUS, EIGER, GOTTHARD, AGIPD, GENERIC
|
\returns MYTHEN, PILATUS, EIGER, GOTTHARD, AGIPD, GENERIC
|
||||||
@ -663,5 +682,9 @@ class slsDetectorBase : public virtual slsDetectorDefs {
|
|||||||
default: return string("idle"); \
|
default: return string("idle"); \
|
||||||
}};
|
}};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -651,6 +651,7 @@ virtual int exitReceiver()=0;
|
|||||||
virtual int enableWriteToFile(int enable=-1)=0;
|
virtual int enableWriteToFile(int enable=-1)=0;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
|
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
|
|
||||||
#define GOODBYE -200
|
#define GOODBYE -200
|
||||||
#define BUFFER_SIZE 1286*2
|
#define BUFFER_SIZE 1286*2
|
||||||
|
#define SHORT_BUFFER_SIZE 518
|
||||||
#define DATABYTES 2560
|
#define DATABYTES 2560
|
||||||
#define FIFO_SIZE 25000
|
#define FIFO_SIZE 25000
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user