diff --git a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp index 8db4925bd..6eea51ea3 100644 --- a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp +++ b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp @@ -1192,10 +1192,10 @@ int multiSlsDetector::setThresholdEnergy(int e_eV, int pos, detectorSettings ise ret=*iret[idet]; else if (ret<(*iret[idet]-200) || ret>(*iret[idet]+200)) ret=-1; + delete iret[idet]; }else ret=-1; if(detectors[idet]->getErrorMask()) setErrorMask(getErrorMask()|(1<getErrorMask()) setErrorMask(getErrorMask()|(1<getErrorMask()) setErrorMask(getErrorMask()|(1<getErrorMask()) setErrorMask(getErrorMask()|(1<numberOfDetectors; idet++) { if (detectors[idet]) { @@ -3348,9 +3348,11 @@ char* multiSlsDetector::getNetworkParameter(networkParameter p) { } } if (s1=="bad") - strcpy(ans,s0.c_str()); + ans=s0; + // strcpy(ans,s0.c_str()); else - strcpy(ans,s1.c_str()); + ans=s1; + // strcpy(ans,s1.c_str()); return ans; } @@ -3359,7 +3361,7 @@ char* multiSlsDetector::getNetworkParameter(networkParameter p) { sets the location of the calibration files \sa sharedSlsDetector */ -char* multiSlsDetector::setNetworkParameter(networkParameter p, string s){ +string multiSlsDetector::setNetworkParameter(networkParameter p, string s){ if (s.find('+')==string::npos) { @@ -3371,7 +3373,7 @@ char* multiSlsDetector::setNetworkParameter(networkParameter p, string s){ for(int idet=0; idetnumberOfDetectors; idet++){ if(detectors[idet]){ sret[idet]=new string("error"); - Task* task = new Task(new func2_t (&slsDetector::setNetworkParameter, + Task* task = new Task(new func2_t (&slsDetector::setNetworkParameter, detectors[idet],p,s,sret[idet])); threadpool->add_task(task); } @@ -3380,6 +3382,8 @@ char* multiSlsDetector::setNetworkParameter(networkParameter p, string s){ threadpool->wait_for_tasks_to_complete(); for(int idet=0; idetnumberOfDetectors; idet++){ if(detectors[idet]){ + if(sret[idet]!= NULL) + delete sret[idet]; //doing nothing with the return values if(detectors[idet]->getErrorMask()) setErrorMask(getErrorMask()|(1<getErrorMask()) setErrorMask(getErrorMask()|(1<getErrorMask()) setErrorMask(getErrorMask()|(1<getErrorMask()) setErrorMask(getErrorMask()|(1<getErrorMask()) setErrorMask(getErrorMask()|(1<getErrorMask()) setErrorMask(getErrorMask()|(1<getErrorMask()) setErrorMask(getErrorMask()|(1<getReceiver(), portnum); + zmqSocket[i] = new ZmqSocket(detectors[i/numSocketsPerDetector]->getReceiver().c_str(), portnum); if (zmqSocket[i]->IsError()) { cprintf(RED, "Error: Could not create Zmq socket on port %d\n", portnum); createReceivingDataSockets(true); @@ -5866,10 +5875,10 @@ int multiSlsDetector::pulsePixel(int n,int x,int y) { ret=*iret[idet]; else if (ret!=*iret[idet]) ret=-1; + delete iret[idet]; }else ret=-1; if(detectors[idet]->getErrorMask()) setErrorMask(getErrorMask()|(1<getErrorMask()) setErrorMask(getErrorMask()|(1<getErrorMask()) setErrorMask(getErrorMask()|(1<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 */ @@ -5813,7 +5818,7 @@ int slsDetector::exitServer(){ }; -char* slsDetector::setNetworkParameter(networkParameter index, string value) { +string slsDetector::setNetworkParameter(networkParameter index, string value) { int i; switch (index) { @@ -5854,7 +5859,7 @@ char* slsDetector::setNetworkParameter(networkParameter index, string value) { -char* slsDetector::getNetworkParameter(networkParameter index) { +string slsDetector::getNetworkParameter(networkParameter index) { switch (index) { case DETECTOR_MAC: @@ -5889,7 +5894,7 @@ 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]==':')){ @@ -5908,12 +5913,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()){ @@ -5931,12 +5936,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(); @@ -6002,16 +6007,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()){ @@ -6022,21 +6029,22 @@ 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")) { std::cout << "Warning: Receiver hostname not set yet." << endl; + } 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; @@ -6057,7 +6065,7 @@ char* slsDetector::setReceiverUDPMAC(string udpmac){ } - return thisDetector->receiverUDPMAC; + return string(thisDetector->receiverUDPMAC); } @@ -6083,9 +6091,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]=""; @@ -6114,9 +6121,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; } @@ -6609,12 +6617,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; diff --git a/slsDetectorSoftware/slsDetector/slsDetector.h b/slsDetectorSoftware/slsDetector/slsDetector.h index 951a70eb4..eca4863b5 100644 --- a/slsDetectorSoftware/slsDetector/slsDetector.h +++ b/slsDetectorSoftware/slsDetector/slsDetector.h @@ -444,7 +444,7 @@ class slsDetector : public slsDetectorUtils, public energyConversion { \returns parameter */ - char* setNetworkParameter(networkParameter index, string value); + string setNetworkParameter(networkParameter index, string value); /** gets the network parameters @@ -452,7 +452,7 @@ class slsDetector : public slsDetectorUtils, public energyConversion { \returns parameter */ - char* getNetworkParameter(networkParameter index); + string getNetworkParameter(networkParameter index); /* I/O */ @@ -1704,36 +1704,36 @@ class slsDetector : public slsDetectorUtils, public energyConversion { /** returns the detector MAC address\sa sharedSlsDetector */ - char* getDetectorMAC() {return thisDetector->detectorMAC;}; + string getDetectorMAC() {return string(thisDetector->detectorMAC);}; /** returns the detector IP address\sa sharedSlsDetector */ - char* getDetectorIP() {return thisDetector->detectorIP;}; + string getDetectorIP() {return string(thisDetector->detectorIP);}; /** returns the receiver IP address \sa sharedSlsDetector */ - char* getReceiver() {return thisDetector->receiver_hostname;}; + string getReceiver() {return string(thisDetector->receiver_hostname);}; /** returns the receiver UDP IP address \sa sharedSlsDetector */ - char* getReceiverUDPIP() {return thisDetector->receiverUDPIP;}; + string getReceiverUDPIP() {return string(thisDetector->receiverUDPIP);}; /** returns the receiver UDP MAC address \sa sharedSlsDetector */ - char* getReceiverUDPMAC() {return thisDetector->receiverUDPMAC;}; + string getReceiverUDPMAC() {return string(thisDetector->receiverUDPMAC);}; /** returns the receiver UDP IP address \sa sharedSlsDetector */ - char* getReceiverUDPPort() {char *c= new char[MAX_STR_LENGTH];sprintf(c,"%d",thisDetector->receiverUDPPort); return c;}; + string getReceiverUDPPort() {ostringstream ss; ss << thisDetector->receiverUDPPort; string s = ss.str(); return s;}; /** returns the receiver UDP2 for Eiger IP address \sa sharedSlsDetector */ - char* getReceiverUDPPort2() {char *c= new char[MAX_STR_LENGTH];sprintf(c,"%d",thisDetector->receiverUDPPort2); return c;}; + string getReceiverUDPPort2() {ostringstream ss; ss << thisDetector->receiverUDPPort2; string s = ss.str(); return s;}; /** validates the format of detector MAC address and sets it \sa sharedSlsDetector */ - char* setDetectorMAC(string detectorMAC); + string setDetectorMAC(string detectorMAC); /** validates the format of detector IP address and sets it \sa sharedSlsDetector */ - char* setDetectorIP(string detectorIP); + string setDetectorIP(string detectorIP); /** validates and sets the receiver IP address/hostname \sa sharedSlsDetector */ - char* setReceiver(string receiver); + string setReceiver(string receiver); /** validates the format of receiver udp ip and sets it \sa sharedSlsDetector */ - char* setReceiverUDPIP(string udpip); + string setReceiverUDPIP(string udpip); /** validates the format of receiver udp mac and sets it \sa sharedSlsDetector */ - char* setReceiverUDPMAC(string udpmac); + string setReceiverUDPMAC(string udpmac); /** sets the receiver udp port \sa sharedSlsDetector */ int setReceiverUDPPort(int udpport); /** sets the receiver udp port2 for Eiger \sa sharedSlsDetector */ int setReceiverUDPPort2(int udpport); /** sets the transmission delay for left or right port or for an entire frame*/ - char* setDetectorNetworkParameter(networkParameter index, int delay); + string setDetectorNetworkParameter(networkParameter index, int delay); /** Sets the read receiver frequency if data required from receiver randomly readRxrFrequency=0, diff --git a/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp b/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp index f0299ad1c..b6850500f 100644 --- a/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp +++ b/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp @@ -2930,7 +2930,6 @@ string slsDetectorCommand::cmdNetworkParameter(int narg, char *args[], int actio myDet->setNetworkParameter(t, args[1]); return myDet->getNetworkParameter(t); - } string slsDetectorCommand::helpNetworkParameter(int narg, char *args[], int action) { diff --git a/slsDetectorSoftware/slsDetector/slsDetectorUtils.h b/slsDetectorSoftware/slsDetector/slsDetectorUtils.h index 1309df04e..82b78032d 100644 --- a/slsDetectorSoftware/slsDetector/slsDetectorUtils.h +++ b/slsDetectorSoftware/slsDetector/slsDetectorUtils.h @@ -171,7 +171,7 @@ class slsDetectorUtils : public slsDetectorActions, public postProcessing { \returns parameter */ - virtual char *getNetworkParameter(networkParameter i)=0; + virtual string getNetworkParameter(networkParameter i)=0; /** sets the network parameters (implemented for gotthard) @@ -180,7 +180,7 @@ class slsDetectorUtils : public slsDetectorActions, public postProcessing { \returns parameter */ - virtual char *setNetworkParameter(networkParameter i, string s)=0; + virtual string setNetworkParameter(networkParameter i, string s)=0; /** changes/gets the port number diff --git a/slsDetectorSoftware/threadFiles/Task.h b/slsDetectorSoftware/threadFiles/Task.h index e90deb9c2..450946662 100644 --- a/slsDetectorSoftware/threadFiles/Task.h +++ b/slsDetectorSoftware/threadFiles/Task.h @@ -126,7 +126,7 @@ public: /* Return: int, Param: none */ Task(func0_t * t): m1(0),m2(0),m3(0),m4(0),m5(0),m6(0),m7(0),m8(0),m9(0),m10(t),m11(0),m12(0),m13(0){}; /* Return: char*, Param: networkParameter,string */ - Task(func2_t * t): m1(0),m2(0),m3(0),m4(0),m5(0),m6(0),m7(0),m8(0),m9(0),m10(0),m11(t),m12(0),m13(0){}; + Task(func2_t * t): m1(0),m2(0),m3(0),m4(0),m5(0),m6(0),m7(0),m8(0),m9(0),m10(0),m11(t),m12(0),m13(0){}; /* Return: void, Param: none */ Task(func00_t * t): m1(0),m2(0),m3(0),m4(0),m5(0),m6(0),m7(0),m8(0),m9(0),m10(0),m11(0),m12(t),m13(0){}; /* Return: int, Param: int,int,detectorSettings */ @@ -174,7 +174,7 @@ private: /* Return: int, Param: int */ func0_t * m10; /* Return: char*, Param: networkParameter,string */ - func2_t * m11; + func2_t * m11; /* Return: void, Param: none */ func00_t * m12; /* Return: int, Param: int,int,detectorSettings */