mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-27 00:30:03 +02:00
receiver udp parameters should be sent to receiver everytime if rx_hostname is set
This commit is contained in:
parent
0511242846
commit
7440ee2255
@ -400,57 +400,67 @@ int multiSlsDetector::addSlsDetector(int id, int pos) {
|
|||||||
|
|
||||||
void multiSlsDetector::updateOffsets(){
|
void multiSlsDetector::updateOffsets(){
|
||||||
|
|
||||||
cout << endl << "Updating multi detector offsets" << endl;
|
cout << endl << "Updating Multi-Detector Offsets" << endl;
|
||||||
|
|
||||||
int offsetX=0, offsetY=0, numX=0, numY=0, maxX=0, maxY=0;
|
int offsetX=0, offsetY=0, numX=0, numY=0, maxX=0, maxY=0;
|
||||||
int maxChanX = thisMultiDetector->maxNumberOfChannelsPerDetector[X];
|
int maxChanX = thisMultiDetector->maxNumberOfChannelsPerDetector[X];
|
||||||
int maxChanY = thisMultiDetector->maxNumberOfChannelsPerDetector[Y];
|
int maxChanY = thisMultiDetector->maxNumberOfChannelsPerDetector[Y];
|
||||||
|
int prevChanX=0;
|
||||||
|
int prevChanY=0;
|
||||||
|
bool firstTime = true;
|
||||||
|
|
||||||
thisMultiDetector->numberOfChannel[X] = 0;
|
thisMultiDetector->numberOfChannel[X] = 0;
|
||||||
thisMultiDetector->maxNumberOfChannel[X] = 0;
|
|
||||||
thisMultiDetector->numberOfChannel[Y] = 0;
|
thisMultiDetector->numberOfChannel[Y] = 0;
|
||||||
|
thisMultiDetector->maxNumberOfChannel[X] = 0;
|
||||||
thisMultiDetector->maxNumberOfChannel[Y] = 0;
|
thisMultiDetector->maxNumberOfChannel[Y] = 0;
|
||||||
|
|
||||||
//0th position
|
|
||||||
if ((detectors[0]) && (thisMultiDetector->numberOfDetectors > 0)){
|
|
||||||
offsetX = thisMultiDetector->offsetX[0] = 0;
|
|
||||||
offsetY = thisMultiDetector->offsetY[0] = 0;
|
|
||||||
numX = thisMultiDetector->numberOfChannel[X] = detectors[0]->getTotalNumberOfChannels(X);
|
|
||||||
numY = thisMultiDetector->numberOfChannel[Y] = detectors[0]->getTotalNumberOfChannels(Y);
|
|
||||||
maxX = thisMultiDetector->maxNumberOfChannel[X] = detectors[0]->getMaxNumberOfChannels(X);
|
|
||||||
maxY = thisMultiDetector->maxNumberOfChannel[Y] = detectors[0]->getMaxNumberOfChannels(Y);
|
|
||||||
|
|
||||||
cout << "Detector at position 0: x offset:" << offsetX << " y offset:" << offsetY << endl;
|
for (int i=0; i<thisMultiDetector->numberOfDetectors; i++) {
|
||||||
}
|
|
||||||
|
|
||||||
for (int i=1; i<thisMultiDetector->numberOfDetectors; i++) {
|
|
||||||
if (detectors[i]) {
|
if (detectors[i]) {
|
||||||
//incrementing in y direction
|
|
||||||
if ((maxChanY == -1) || ((maxChanY > 0) && ((offsetY + detectors[i]->getMaxNumberOfChannels(Y)) < maxChanY))){
|
//incrementing in both direction
|
||||||
offsetY += detectors[i]->getMaxNumberOfChannels(Y);
|
if(firstTime){
|
||||||
maxY += detectors[i]->getMaxNumberOfChannels(Y);
|
//incrementing in both directions
|
||||||
|
firstTime = false;
|
||||||
|
if((maxChanX > 0) && ((offsetX + detectors[i]->getTotalNumberOfChannels(X)) > maxChanX))
|
||||||
|
cout<<"\nDetector[" << i << "] exceeds maximum channels allowed for complete detector set in X dimension!" << endl;
|
||||||
|
if ((maxChanY > 0) && ((offsetY + detectors[i]->getTotalNumberOfChannels(Y)) > maxChanY))
|
||||||
|
cout<<"\nDetector[" << i << "] exceeds maximum channels allowed for complete detector set in Y dimension!" << endl;
|
||||||
|
prevChanX = detectors[i]->getTotalNumberOfChannels(X);
|
||||||
|
prevChanY = detectors[i]->getTotalNumberOfChannels(Y);
|
||||||
|
numX += detectors[i]->getTotalNumberOfChannels(X);
|
||||||
numY += detectors[i]->getTotalNumberOfChannels(Y);
|
numY += detectors[i]->getTotalNumberOfChannels(Y);
|
||||||
|
maxX += detectors[i]->getMaxNumberOfChannels(X);
|
||||||
|
maxY += detectors[i]->getMaxNumberOfChannels(Y);
|
||||||
|
cout<<"incrementing in both direction"<<endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//incrementing in y direction
|
||||||
|
else if ((maxChanY == -1) || ((maxChanY > 0) && ((offsetY + prevChanY + detectors[i]->getTotalNumberOfChannels(Y)) <= maxChanY))){
|
||||||
|
offsetY += prevChanY;
|
||||||
|
prevChanY = detectors[i]->getTotalNumberOfChannels(Y);
|
||||||
|
numY += detectors[i]->getTotalNumberOfChannels(Y);
|
||||||
|
maxY += detectors[i]->getMaxNumberOfChannels(Y);
|
||||||
|
cout<<"incrementing in y direction"<<endl;
|
||||||
|
}
|
||||||
|
|
||||||
//incrementing in x direction
|
//incrementing in x direction
|
||||||
else{
|
else{
|
||||||
|
if((maxChanX > 0) && ((offsetX + prevChanX + detectors[i]->getTotalNumberOfChannels(X)) > maxChanX))
|
||||||
|
cout<<"\nDetector[" << i << "] exceeds maximum channels allowed for complete detector set in X dimension!" << endl;
|
||||||
offsetY = 0;
|
offsetY = 0;
|
||||||
numY = 0;
|
offsetX += prevChanX;
|
||||||
maxY = 0;
|
prevChanX = detectors[i]->getTotalNumberOfChannels(X);
|
||||||
thisMultiDetector->maxNumberOfChannel[Y] = 0;
|
|
||||||
if ((maxChanX == -1) || ((maxChanX > 0) && ((offsetX + detectors[i]->getMaxNumberOfChannels(X)) < maxChanX))){
|
|
||||||
offsetX += detectors[i]->getMaxNumberOfChannels(X);
|
|
||||||
numX += detectors[i]->getTotalNumberOfChannels(X);
|
numX += detectors[i]->getTotalNumberOfChannels(X);
|
||||||
maxX += detectors[i]->getMaxNumberOfChannels(X);
|
maxX += detectors[i]->getMaxNumberOfChannels(X);
|
||||||
}else{
|
cout<<"incrementing in x direction"<<endl;
|
||||||
offsetX += detectors[i]->getMaxNumberOfChannels(X);
|
|
||||||
numX += detectors[i]->getTotalNumberOfChannels(X);
|
|
||||||
maxX += detectors[i]->getMaxNumberOfChannels(X);
|
|
||||||
cout<<"Detector at position " << i << "exceeds maximum channels allowed for complete detector set in X dimension also!" << endl;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
thisMultiDetector->offsetX[i] = offsetX;
|
thisMultiDetector->offsetX[i] = offsetX;
|
||||||
thisMultiDetector->offsetY[i] = offsetY;
|
thisMultiDetector->offsetY[i] = offsetY;
|
||||||
cout << "Detector at position" << i << ": x offset:" << thisMultiDetector->offsetX[i] << " y offset:" << thisMultiDetector->offsetY[i] << endl;
|
cout << "Detector[" << i << "] has offsets (" << thisMultiDetector->offsetX[i] << ", " << thisMultiDetector->offsetY[i] << ")" << endl;
|
||||||
|
|
||||||
|
//offsetY has been reset sometimes and offsetX the first time, but remember the highest values
|
||||||
if(numX > thisMultiDetector->numberOfChannel[X])
|
if(numX > thisMultiDetector->numberOfChannel[X])
|
||||||
thisMultiDetector->numberOfChannel[X] = numX;
|
thisMultiDetector->numberOfChannel[X] = numX;
|
||||||
if(numY > thisMultiDetector->numberOfChannel[Y])
|
if(numY > thisMultiDetector->numberOfChannel[Y])
|
||||||
@ -462,7 +472,6 @@ void multiSlsDetector::updateOffsets(){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
cout << "Number of Channels in X direction:" << thisMultiDetector->numberOfChannel[X] << endl;
|
cout << "Number of Channels in X direction:" << thisMultiDetector->numberOfChannel[X] << endl;
|
||||||
cout << "Number of Channels in Y direction:" << thisMultiDetector->numberOfChannel[Y] << endl << endl;
|
cout << "Number of Channels in Y direction:" << thisMultiDetector->numberOfChannel[Y] << endl << endl;
|
||||||
}
|
}
|
||||||
|
@ -1678,6 +1678,10 @@ int slsDetector::setNumberOfModules(int n, dimension d){
|
|||||||
std::cout<< "nModX " << thisDetector->nMod[X] << " nModY " << thisDetector->nMod[Y] << " nChips " << thisDetector->nChips << " nChans " << thisDetector->nChans<< " dr " << dr << std::endl;
|
std::cout<< "nModX " << thisDetector->nMod[X] << " nModY " << thisDetector->nMod[Y] << " nChips " << thisDetector->nChips << " nChans " << thisDetector->nChans<< " dr " << dr << std::endl;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(n != GET_FLAG)
|
||||||
|
parentDet->updateOffsets();
|
||||||
|
|
||||||
return thisDetector->nMod[d];
|
return thisDetector->nMod[d];
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -5328,16 +5332,20 @@ char* slsDetector::getNetworkParameter(networkParameter index) {
|
|||||||
char* slsDetector::setDetectorMAC(string detectorMAC){
|
char* slsDetector::setDetectorMAC(string detectorMAC){
|
||||||
if(detectorMAC.length()==17){
|
if(detectorMAC.length()==17){
|
||||||
if((detectorMAC[2]==':')&&(detectorMAC[5]==':')&&(detectorMAC[8]==':')&&
|
if((detectorMAC[2]==':')&&(detectorMAC[5]==':')&&(detectorMAC[8]==':')&&
|
||||||
(detectorMAC[11]==':')&&(detectorMAC[14]==':'))
|
(detectorMAC[11]==':')&&(detectorMAC[14]==':')){
|
||||||
strcpy(thisDetector->detectorMAC,detectorMAC.c_str());
|
strcpy(thisDetector->detectorMAC,detectorMAC.c_str());
|
||||||
else{
|
if(!strcmp(thisDetector->receiver_hostname,"none"))
|
||||||
|
std::cout << "Warning: UDP Set up failed. Receiver hostname not set." << endl;
|
||||||
|
else if(setUDPConnection()==FAIL)
|
||||||
|
std::cout<< "Warning: UDP connection set up failed" << std::endl;
|
||||||
|
}else{
|
||||||
setErrorMask((getErrorMask())|(COULDNOT_SET_NETWORK_PARAMETER));
|
setErrorMask((getErrorMask())|(COULDNOT_SET_NETWORK_PARAMETER));
|
||||||
return("server MAC Address should be in xx:xx:xx:xx:xx:xx format");
|
std::cout << "Warning: server MAC Address should be in xx:xx:xx:xx:xx:xx format" << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
setErrorMask((getErrorMask())|(COULDNOT_SET_NETWORK_PARAMETER));
|
setErrorMask((getErrorMask())|(COULDNOT_SET_NETWORK_PARAMETER));
|
||||||
return("server MAC Address should be in xx:xx:xx:xx:xx:xx format");
|
std::cout << "Warning: server MAC Address should be in xx:xx:xx:xx:xx:xx format" << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
return thisDetector->detectorMAC;
|
return thisDetector->detectorMAC;
|
||||||
@ -5351,11 +5359,15 @@ char* slsDetector::setDetectorIP(string detectorIP){
|
|||||||
if(detectorIP.length()){
|
if(detectorIP.length()){
|
||||||
if(detectorIP.length()<16){
|
if(detectorIP.length()<16){
|
||||||
int result = inet_pton(AF_INET, detectorIP.c_str(), &(sa.sin_addr));
|
int result = inet_pton(AF_INET, detectorIP.c_str(), &(sa.sin_addr));
|
||||||
if(result!=0)
|
if(result!=0){
|
||||||
strcpy(thisDetector->detectorIP,detectorIP.c_str());
|
strcpy(thisDetector->detectorIP,detectorIP.c_str());
|
||||||
else{
|
if(!strcmp(thisDetector->receiver_hostname,"none"))
|
||||||
|
std::cout << "Warning: UDP Set up failed. Receiver hostname not set." << endl;
|
||||||
|
else if(setUDPConnection()==FAIL)
|
||||||
|
std::cout<< "Warning: UDP connection set up failed" << std::endl;
|
||||||
|
}else{
|
||||||
setErrorMask((getErrorMask())|(COULDNOT_SET_NETWORK_PARAMETER));
|
setErrorMask((getErrorMask())|(COULDNOT_SET_NETWORK_PARAMETER));
|
||||||
return ("Detector IP Address should be VALID and in xxx.xxx.xxx.xxx format");
|
std::cout << "Warning: Detector IP Address should be VALID and in xxx.xxx.xxx.xxx format" << std::endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -5409,8 +5421,6 @@ char* slsDetector::setReceiver(string receiverIP){
|
|||||||
setUDPConnection();
|
setUDPConnection();
|
||||||
if(thisDetector->myDetectorType == EIGER)
|
if(thisDetector->myDetectorType == EIGER)
|
||||||
enableTenGigabitEthernet(thisDetector->tenGigaEnable);
|
enableTenGigabitEthernet(thisDetector->tenGigaEnable);
|
||||||
|
|
||||||
printReceiverConfiguration();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5426,11 +5436,16 @@ char* slsDetector::setReceiverUDPIP(string udpip){
|
|||||||
if(udpip.length()){
|
if(udpip.length()){
|
||||||
if(udpip.length()<16){
|
if(udpip.length()<16){
|
||||||
int result = inet_pton(AF_INET, udpip.c_str(), &(sa.sin_addr));
|
int result = inet_pton(AF_INET, udpip.c_str(), &(sa.sin_addr));
|
||||||
if(result!=0)
|
if(result==0){
|
||||||
strcpy(thisDetector->receiverUDPIP,udpip.c_str());
|
|
||||||
else{
|
|
||||||
setErrorMask((getErrorMask())|(COULDNOT_SET_NETWORK_PARAMETER));
|
setErrorMask((getErrorMask())|(COULDNOT_SET_NETWORK_PARAMETER));
|
||||||
return ("Receiver UDP IP Address should be VALID and in xxx.xxx.xxx.xxx format");
|
std::cout << "Warning: Receiver UDP IP Address should be VALID and in xxx.xxx.xxx.xxx format" << std::endl;
|
||||||
|
}else{
|
||||||
|
strcpy(thisDetector->receiverUDPIP,udpip.c_str());
|
||||||
|
if(!strcmp(thisDetector->receiver_hostname,"none"))
|
||||||
|
std::cout << "Warning: UDP Set up failed. Receiver hostname not set." << endl;
|
||||||
|
else if(setUDPConnection()==FAIL){
|
||||||
|
std::cout<< "Warning: UDP connection set up failed" << std::endl;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -5441,19 +5456,25 @@ char* slsDetector::setReceiverUDPIP(string udpip){
|
|||||||
|
|
||||||
|
|
||||||
char* slsDetector::setReceiverUDPMAC(string udpmac){
|
char* slsDetector::setReceiverUDPMAC(string udpmac){
|
||||||
if(udpmac.length()==17){
|
if(udpmac.length()!=17){
|
||||||
|
setErrorMask((getErrorMask())|(COULDNOT_SET_NETWORK_PARAMETER));
|
||||||
|
std::cout << "Warning: receiver udp mac address should be in xx:xx:xx:xx:xx:xx format" << std::endl;
|
||||||
|
}
|
||||||
|
else{
|
||||||
if((udpmac[2]==':')&&(udpmac[5]==':')&&(udpmac[8]==':')&&
|
if((udpmac[2]==':')&&(udpmac[5]==':')&&(udpmac[8]==':')&&
|
||||||
(udpmac[11]==':')&&(udpmac[14]==':'))
|
(udpmac[11]==':')&&(udpmac[14]==':')){
|
||||||
strcpy(thisDetector->receiverUDPMAC,udpmac.c_str());
|
strcpy(thisDetector->receiverUDPMAC,udpmac.c_str());
|
||||||
else{
|
if(!strcmp(thisDetector->receiver_hostname,"none"))
|
||||||
|
std::cout << "Warning: UDP Set up failed. Receiver hostname not set." << endl;
|
||||||
|
else if(setUDPConnection()==FAIL){
|
||||||
|
std::cout<< "Warning: UDP connection set up failed" << std::endl;
|
||||||
|
}
|
||||||
|
}else{
|
||||||
setErrorMask((getErrorMask())|(COULDNOT_SET_NETWORK_PARAMETER));
|
setErrorMask((getErrorMask())|(COULDNOT_SET_NETWORK_PARAMETER));
|
||||||
return("receiver udp mac address should be in xx:xx:xx:xx:xx:xx format");
|
std::cout << "Warning: receiver udp mac address should be in xx:xx:xx:xx:xx:xx format" << std::endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else{
|
|
||||||
setErrorMask((getErrorMask())|(COULDNOT_SET_NETWORK_PARAMETER));
|
|
||||||
return("receiver udp mac address should be in xx:xx:xx:xx:xx:xx format");
|
|
||||||
}
|
|
||||||
|
|
||||||
return thisDetector->receiverUDPMAC;
|
return thisDetector->receiverUDPMAC;
|
||||||
}
|
}
|
||||||
@ -5462,11 +5483,21 @@ char* slsDetector::setReceiverUDPMAC(string udpmac){
|
|||||||
|
|
||||||
int slsDetector::setReceiverUDPPort(int udpport){
|
int slsDetector::setReceiverUDPPort(int udpport){
|
||||||
thisDetector->receiverUDPPort = udpport;
|
thisDetector->receiverUDPPort = udpport;
|
||||||
|
if(!strcmp(thisDetector->receiver_hostname,"none"))
|
||||||
|
std::cout << "Warning: UDP Set up failed. Receiver hostname not set." << endl;
|
||||||
|
else if(setUDPConnection()==FAIL){
|
||||||
|
std::cout<< "Warning: UDP connection set up failed" << std::endl;
|
||||||
|
}
|
||||||
return thisDetector->receiverUDPPort;
|
return thisDetector->receiverUDPPort;
|
||||||
}
|
}
|
||||||
|
|
||||||
int slsDetector::setReceiverUDPPort2(int udpport){
|
int slsDetector::setReceiverUDPPort2(int udpport){
|
||||||
thisDetector->receiverUDPPort2 = udpport;
|
thisDetector->receiverUDPPort2 = udpport;
|
||||||
|
if(!strcmp(thisDetector->receiver_hostname,"none"))
|
||||||
|
std::cout << "Warning: UDP Set up failed. Receiver hostname not set." << endl;
|
||||||
|
else if(setUDPConnection()==FAIL){
|
||||||
|
std::cout<< "Warning: UDP connection set up failed" << std::endl;
|
||||||
|
}
|
||||||
return thisDetector->receiverUDPPort2;
|
return thisDetector->receiverUDPPort2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5478,6 +5509,11 @@ int slsDetector::setUDPConnection(){
|
|||||||
char args[3][MAX_STR_LENGTH];
|
char args[3][MAX_STR_LENGTH];
|
||||||
char retval[MAX_STR_LENGTH]="";
|
char retval[MAX_STR_LENGTH]="";
|
||||||
|
|
||||||
|
//called before set up
|
||||||
|
if(!strcmp(thisDetector->receiver_hostname,"none")){
|
||||||
|
std::cout << "Warning: UDP Set up failed. Receiver hostname not set." << endl;
|
||||||
|
return FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
//if no udp ip given, use hostname
|
//if no udp ip given, use hostname
|
||||||
if(!strcmp(thisDetector->receiverUDPIP,"none")){
|
if(!strcmp(thisDetector->receiverUDPIP,"none")){
|
||||||
@ -5488,6 +5524,7 @@ int slsDetector::setUDPConnection(){
|
|||||||
else{
|
else{
|
||||||
struct hostent *he = gethostbyname(thisDetector->receiver_hostname);
|
struct hostent *he = gethostbyname(thisDetector->receiver_hostname);
|
||||||
if (he == NULL){
|
if (he == NULL){
|
||||||
|
cout<<"rx_hostname:"<<thisDetector->receiver_hostname<<endl;
|
||||||
std::cout << "no rx_udpip given and could not convert receiver hostname to ip" << endl;
|
std::cout << "no rx_udpip given and could not convert receiver hostname to ip" << endl;
|
||||||
return FAIL;
|
return FAIL;
|
||||||
}else
|
}else
|
||||||
@ -5532,6 +5569,7 @@ int slsDetector::setUDPConnection(){
|
|||||||
}else
|
}else
|
||||||
ret=FAIL;
|
ret=FAIL;
|
||||||
|
|
||||||
|
printReceiverConfiguration();
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user