Merge branch 'developer' of git.psi.ch:sls_detectors_software/sls_detector_software into developer

This commit is contained in:
2017-06-26 13:03:08 +02:00
22 changed files with 380 additions and 237 deletions

View File

@ -144,7 +144,9 @@ int slsDetector::freeSharedMemory() {
perror("shmdt failed\n");
return FAIL;
}
#ifdef VERBOSE
printf("Shared memory %d detached\n", shmId);
#endif
// remove shared memory
if (shmctl(shmId, IPC_RMID, 0) == -1) {
perror("shmctl(IPC_RMID) failed\n");
@ -247,7 +249,9 @@ slsDetector::slsDetector(int pos, detectorType type, int id, multiSlsDetector *p
/**Initializes the detector stucture \sa initializeDetectorSize
*/
#ifdef VERBOSE
cout << "init det size"<< endl;
#endif
initializeDetectorSize(type);
@ -261,9 +265,11 @@ slsDetector::~slsDetector(){
if (shmdt(thisDetector) == -1) {
perror("shmdt failed\n");
printf("Could not detach shared memory %d\n", shmId);
} else
}
#ifdef VERBOSE
else
printf("Shared memory %d detached\n", shmId);
#endif
delete thisReceiver;
};
@ -539,14 +545,19 @@ int slsDetector::initializeDetectorSize(detectorType type) {
/** set receiver udp port for Eiger */
thisDetector->receiverUDPPort2=DEFAULT_UDP_PORTNO+1;
/** set receiver ip address/hostname */
memset(thisDetector->receiver_hostname,0,MAX_STR_LENGTH);
strcpy(thisDetector->receiver_hostname,"none");
/** set receiver udp ip address */
memset(thisDetector->receiverUDPIP,0,MAX_STR_LENGTH);
strcpy(thisDetector->receiverUDPIP,"none");
/** set receiver udp mac address */
memset(thisDetector->receiverUDPMAC,0,MAX_STR_LENGTH);
strcpy(thisDetector->receiverUDPMAC,"none");
/** set detector mac address */
memset(thisDetector->detectorMAC,0,MAX_STR_LENGTH);
strcpy(thisDetector->detectorMAC,DEFAULT_DET_MAC);
/** set detector ip address */
memset(thisDetector->detectorIP,0,MAX_STR_LENGTH);
strcpy(thisDetector->detectorIP,DEFAULT_DET_IP);
/** sets onlineFlag to OFFLINE_FLAG */
@ -5814,7 +5825,7 @@ int slsDetector::exitServer(){
};
char* slsDetector::setNetworkParameter(networkParameter index, string value) {
string slsDetector::setNetworkParameter(networkParameter index, string value) {
int i;
switch (index) {
@ -5855,7 +5866,7 @@ char* slsDetector::setNetworkParameter(networkParameter index, string value) {
char* slsDetector::getNetworkParameter(networkParameter index) {
string slsDetector::getNetworkParameter(networkParameter index) {
switch (index) {
case DETECTOR_MAC:
@ -5890,13 +5901,17 @@ char* slsDetector::getNetworkParameter(networkParameter index) {
}
char* slsDetector::setDetectorMAC(string detectorMAC){
string slsDetector::setDetectorMAC(string detectorMAC){
if(detectorMAC.length()==17){
if((detectorMAC[2]==':')&&(detectorMAC[5]==':')&&(detectorMAC[8]==':')&&
(detectorMAC[11]==':')&&(detectorMAC[14]==':')){
strcpy(thisDetector->detectorMAC,detectorMAC.c_str());
if(!strcmp(thisDetector->receiver_hostname,"none"))
#ifdef VERBOSE
std::cout << "Warning: Receiver hostname not set yet." << endl;
#else
;
#endif
else if(setUDPConnection()==FAIL)
std::cout<< "Warning: UDP connection set up failed" << std::endl;
}else{
@ -5909,12 +5924,12 @@ char* slsDetector::setDetectorMAC(string detectorMAC){
std::cout << "Warning: server MAC Address should be in xx:xx:xx:xx:xx:xx format" << std::endl;
}
return thisDetector->detectorMAC;
return string(thisDetector->detectorMAC);
};
char* slsDetector::setDetectorIP(string detectorIP){
string slsDetector::setDetectorIP(string detectorIP){
struct sockaddr_in sa;
//taking function arguments into consideration
if(detectorIP.length()){
@ -5923,7 +5938,11 @@ char* slsDetector::setDetectorIP(string detectorIP){
if(result!=0){
strcpy(thisDetector->detectorIP,detectorIP.c_str());
if(!strcmp(thisDetector->receiver_hostname,"none"))
#ifdef VERBOSE
std::cout << "Warning: Receiver hostname not set yet." << endl;
#else
;
#endif
else if(setUDPConnection()==FAIL)
std::cout<< "Warning: UDP connection set up failed" << std::endl;
}else{
@ -5932,12 +5951,12 @@ char* slsDetector::setDetectorIP(string detectorIP){
}
}
}
return thisDetector->detectorIP;
return string(thisDetector->detectorIP);
}
char* slsDetector::setReceiver(string receiverIP){
string slsDetector::setReceiver(string receiverIP){
if(getRunStatus()==RUNNING){
cprintf(RED,"Acquisition already running, Stopping it.\n");
stopAcquisition();
@ -6003,16 +6022,18 @@ char* slsDetector::setReceiver(string receiverIP){
setUDPConnection();
if(thisDetector->myDetectorType == EIGER)
enableTenGigabitEthernet(thisDetector->tenGigaEnable);
//datastreamenable
//fifodepth
}
}
return thisDetector->receiver_hostname;
return string(thisDetector->receiver_hostname);
}
char* slsDetector::setReceiverUDPIP(string udpip){
string slsDetector::setReceiverUDPIP(string udpip){
struct sockaddr_in sa;
//taking function arguments into consideration
if(udpip.length()){
@ -6023,21 +6044,26 @@ char* slsDetector::setReceiverUDPIP(string udpip){
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"))
if(!strcmp(thisDetector->receiver_hostname,"none")) {
#ifdef VERBOSE
std::cout << "Warning: Receiver hostname not set yet." << endl;
#else
;
#endif
}
else if(setUDPConnection()==FAIL){
std::cout<< "Warning: UDP connection set up failed" << std::endl;
}
}
}
}
return thisDetector->receiverUDPIP;
return string(thisDetector->receiverUDPIP);
}
char* slsDetector::setReceiverUDPMAC(string udpmac){
string slsDetector::setReceiverUDPMAC(string udpmac){
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;
@ -6047,7 +6073,11 @@ char* slsDetector::setReceiverUDPMAC(string udpmac){
(udpmac[11]==':')&&(udpmac[14]==':')){
strcpy(thisDetector->receiverUDPMAC,udpmac.c_str());
if(!strcmp(thisDetector->receiver_hostname,"none"))
#ifdef VERBOSE
std::cout << "Warning: Receiver hostname not set yet." << endl;
#else
;
#endif
else if(setUDPConnection()==FAIL){
std::cout<< "Warning: UDP connection set up failed" << std::endl;
}
@ -6058,7 +6088,7 @@ char* slsDetector::setReceiverUDPMAC(string udpmac){
}
return thisDetector->receiverUDPMAC;
return string(thisDetector->receiverUDPMAC);
}
@ -6066,7 +6096,11 @@ char* slsDetector::setReceiverUDPMAC(string udpmac){
int slsDetector::setReceiverUDPPort(int udpport){
thisDetector->receiverUDPPort = udpport;
if(!strcmp(thisDetector->receiver_hostname,"none"))
std::cout << "Warning: Receiver hostname not set yet." << endl;
#ifdef VERBOSE
std::cout << "Warning: Receiver hostname not set yet." << endl;
#else
;
#endif
else if(setUDPConnection()==FAIL){
std::cout<< "Warning: UDP connection set up failed" << std::endl;
}
@ -6076,7 +6110,11 @@ int slsDetector::setReceiverUDPPort(int udpport){
int slsDetector::setReceiverUDPPort2(int udpport){
thisDetector->receiverUDPPort2 = udpport;
if(!strcmp(thisDetector->receiver_hostname,"none"))
std::cout << "Warning: Receiver hostname not set yet." << endl;
#ifdef VERBOSE
std::cout << "Warning: Receiver hostname not set yet." << endl;
#else
;
#endif
else if(setUDPConnection()==FAIL){
std::cout<< "Warning: UDP connection set up failed" << std::endl;
}
@ -6084,9 +6122,8 @@ int slsDetector::setReceiverUDPPort2(int udpport){
}
char* slsDetector::setDetectorNetworkParameter(networkParameter index, int delay){
string slsDetector::setDetectorNetworkParameter(networkParameter index, int delay){
int fnum = F_SET_NETWORK_PARAMETER;
char* cretval = new char[MAX_STR_LENGTH];
int ret = FAIL;
int retval = -1;
char mess[MAX_STR_LENGTH]="";
@ -6115,9 +6152,10 @@ char* slsDetector::setDetectorNetworkParameter(networkParameter index, int delay
std::cout<< "Speed set to "<< retval << std::endl;
#endif
sprintf(cretval,"%d",retval);
return cretval;
ostringstream ss;
ss << retval;
string s = ss.str();
return s;
}
@ -6130,7 +6168,9 @@ int slsDetector::setUDPConnection(){
//called before set up
if(!strcmp(thisDetector->receiver_hostname,"none")){
std::cout << "Warning: Receiver hostname not set yet." << endl;
#ifdef VERBOSE
std::cout << "Warning: Receiver hostname not set yet." << endl;
#endif
return FAIL;
}
@ -6188,9 +6228,9 @@ int slsDetector::setUDPConnection(){
}
}else
ret=FAIL;
#ifdef VERBOSE
printReceiverConfiguration();
#endif
return ret;
}
@ -6610,12 +6650,10 @@ int slsDetector::printReceiverConfiguration(){
std::cout << "Receiver Hostname:\t" << getNetworkParameter(RECEIVER_HOSTNAME) << std::endl;
std::cout << "Receiver UDP IP:\t" << getNetworkParameter(RECEIVER_UDP_IP) << std::endl;
std::cout << "Receiver UDP MAC:\t" << getNetworkParameter(RECEIVER_UDP_MAC) << std::endl;
std::cout << "Receiver UDP Port:\t" << getNetworkParameter(RECEIVER_UDP_PORT) << std::endl;
if(thisDetector->myDetectorType == EIGER)
std::cout << "Receiver UDP Port2:\t" << getNetworkParameter(RECEIVER_UDP_PORT2) << std::endl;
if(thisDetector->myDetectorType == EIGER)
std::cout << "Receiver UDP Port2:\t" << getNetworkParameter(RECEIVER_UDP_PORT2) << std::endl;
std::cout << std::endl;
return OK;