From f0b29cfecc8415380168ebbebfaaf6861d7c926e Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Mon, 14 Jan 2019 15:26:58 +0100 Subject: [PATCH] signatures fixed for setnetworkparameter --- .../multiSlsDetector/multiSlsDetector.cpp | 227 ++++++++++++----- .../multiSlsDetector/multiSlsDetector.h | 150 +++++------ .../slsDetector/slsDetector.cpp | 186 ++++++-------- slsDetectorSoftware/slsDetector/slsDetector.h | 235 ++++++++---------- 4 files changed, 433 insertions(+), 365 deletions(-) diff --git a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp index 882890c87..cc5725615 100644 --- a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp +++ b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp @@ -1582,58 +1582,6 @@ std::string multiSlsDetector::getNetworkParameter(networkParameter p, return sls::concatenateIfDifferent(r); } -int multiSlsDetector::setReceiverDataStreamingOutPort(int i, int detPos) { - if (i >= 0) { - std::string s = std::to_string(i); - int prev_streaming = enableDataStreamingFromReceiver(-1, detPos); - setNetworkParameter(RECEIVER_STREAMING_PORT, s, detPos); - if (prev_streaming) { - enableDataStreamingFromReceiver(0, detPos); - enableDataStreamingFromReceiver(1, detPos); - } - } - return stoi(getNetworkParameter(RECEIVER_STREAMING_PORT, detPos)); -} - -int multiSlsDetector::setClientDataStreamingInPort(int i, int detPos) { - if (i >= 0) { - std::string s = std::to_string(i); - int prev_streaming = enableDataStreamingToClient(); - setNetworkParameter(CLIENT_STREAMING_PORT, s, detPos); - if (prev_streaming) { - enableDataStreamingToClient(0); - enableDataStreamingToClient(1); - } - } - return stoi(getNetworkParameter(CLIENT_STREAMING_PORT, detPos)); -} - -std::string multiSlsDetector::setReceiverDataStreamingOutIP(const std::string& ip, - int detPos) { - if (ip.length()) { - int prev_streaming = enableDataStreamingFromReceiver(-1, detPos); - setNetworkParameter(RECEIVER_STREAMING_SRC_IP, ip, detPos); - if (prev_streaming) { - enableDataStreamingFromReceiver(0, detPos); - enableDataStreamingFromReceiver(1, detPos); - } - } - return getNetworkParameter(RECEIVER_STREAMING_SRC_IP, detPos); -} - -std::string multiSlsDetector::setClientDataStreamingInIP(const std::string& ip, - int detPos) { - if (ip.length()) { - int prev_streaming = enableDataStreamingToClient(-1); - setNetworkParameter(CLIENT_STREAMING_SRC_IP, ip, detPos); - if (prev_streaming) { - enableDataStreamingToClient(0); - enableDataStreamingToClient(1); - } - } - return getNetworkParameter(CLIENT_STREAMING_SRC_IP, detPos); -} - std::string multiSlsDetector::setDetectorMAC(const std::string& detectorMAC, int detPos) { // single if (detPos >= 0) @@ -1740,10 +1688,16 @@ std::string multiSlsDetector::getReceiverUDPMAC(int detPos) { } int multiSlsDetector::setReceiverUDPPort(int udpport, int detPos) { + // single + if (detPos >= 0) + return detectors[detPos]->setReceiverUDPPort(udpport); + // multi + auto r = parallelCall(&slsDetector::setReceiverUDPPort, udpport); + return sls::minusOneIfDifferent(r); } -std::string multiSlsDetector::getReceiverUDPPort(int detPos) { +int multiSlsDetector::getReceiverUDPPort(int detPos) { // single if (detPos >= 0) { return detectors[detPos]->getReceiverUDPPort(); @@ -1751,14 +1705,20 @@ std::string multiSlsDetector::getReceiverUDPPort(int detPos) { // multi auto r = serialCall(&slsDetector::getReceiverUDPPort); - return sls::concatenateIfDifferent(r); + return sls::minusOneIfDifferent(r); } int multiSlsDetector::setReceiverUDPPort2(int udpport, int detPos) { + // single + if (detPos >= 0) + return detectors[detPos]->setReceiverUDPPort2(udpport); + // multi + auto r = parallelCall(&slsDetector::setReceiverUDPPort2, udpport); + return sls::minusOneIfDifferent(r); } -std::string multiSlsDetector::getReceiverUDPPort2(int detPos) { +int multiSlsDetector::getReceiverUDPPort2(int detPos) { // single if (detPos >= 0) { return detectors[detPos]->getReceiverUDPPort2(); @@ -1766,6 +1726,151 @@ std::string multiSlsDetector::getReceiverUDPPort2(int detPos) { // multi auto r = serialCall(&slsDetector::getReceiverUDPPort2); + return sls::minusOneIfDifferent(r); +} + +void multiSlsDetector::setClientDataStreamingInPort(int i, int detPos) { + if (i >= 0) { + int prev_streaming = enableDataStreamingToClient(); + + // single + if (detPos >= 0) { + detectors[detPos]->setClientStreamingPort(i); + } + // multi + else { + // calculate ports individually + int firstPort = stoi(value); + int numSockets = (getDetectorsType() == EIGER) ? 2 : 1; + + for (size_t idet = 0; idet < detectors.size(); ++idet) { + auto port = std::to_string(firstPort + (idet * numSockets)); + detectors[idet]->setClientStreamingPort(port); + } + } + + if (prev_streaming) { + enableDataStreamingToClient(0); + enableDataStreamingToClient(1); + } + } +} + +int multiSlsDetector::getClientStreamingPort(int detPos) { + // single + if (detPos >= 0) { + return detectors[detPos]->getClientStreamingPort(); + } + + // multi + auto r = serialCall(&slsDetector::getClientStreamingPort); + return sls::minusOneIfDifferent(r); +} + +void multiSlsDetector::setReceiverDataStreamingOutPort(int i, int detPos) { + if (i >= 0) { + int prev_streaming = enableDataStreamingFromReceiver(-1, detPos); + + // single + if (detPos >= 0) { + detectors[detPos]->setReceiverDataStreamingOutPort(i); + } + // multi + else { + // calculate ports individually + int firstPort = stoi(value); + int numSockets = (getDetectorsType() == EIGER) ? 2 : 1; + + for (size_t idet = 0; idet < detectors.size(); ++idet) { + auto port = std::to_string(firstPort + (idet * numSockets)); + detectors[idet]->setReceiverDataStreamingOutPort(port); + } + } + + if (prev_streaming) { + enableDataStreamingFromReceiver(0, detPos); + enableDataStreamingFromReceiver(1, detPos); + } + } +} + +int multiSlsDetector::getReceiverStreamingPort(int detPos) { + // single + if (detPos >= 0) { + return detectors[detPos]->getReceiverStreamingPort(); + } + + // multi + auto r = serialCall(&slsDetector::getReceiverStreamingPort); + return sls::minusOneIfDifferent(r); +} + +void multiSlsDetector::setClientDataStreamingInIP(const std::string& ip, + int detPos) { + if (ip.length()) { + int prev_streaming = enableDataStreamingToClient(-1); + + // single + if (detPos >= 0) { + detectors[detPos]->setClientStreamingIP(ip); + } + // multi + else { + for (auto &d : detectors) { + d->setClientStreamingIP(ip); + } + } + + if (prev_streaming) { + enableDataStreamingToClient(0); + enableDataStreamingToClient(1); + } + } +} + +std::string multiSlsDetector::getClientStreamingIP(int detPos) { + // single + if (detPos >= 0) { + return detectors[detPos]->getClientStreamingIP(); + } + + // multi + auto r = serialCall(&slsDetector::getClientStreamingIP); + return sls::concatenateIfDifferent(r); +} + +std::string multiSlsDetector::setReceiverDataStreamingOutIP(const std::string& ip, + int detPos) { + if (ip.length()) { + int prev_streaming = enableDataStreamingFromReceiver(-1, detPos); + + // single + if (detPos >= 0) { + detectors[detPos]->setReceiverStreamingIP(ip); + } + // multi + else { + for (auto &d : detectors) { + d->setReceiverStreamingIP(ip); + } + } + + if (prev_streaming) { + enableDataStreamingFromReceiver(0, detPos); + enableDataStreamingFromReceiver(1, detPos); + } + } + return getNetworkParameter(RECEIVER_STREAMING_SRC_IP, detPos); +} + +std::string multiSlsDetector::getReceiverStreamingIP(int detPos) { + // single + if (detPos >= 0) { + return detectors[detPos]->getReceiverStreamingIP(); + } + + // multi + auto r = serialCall(&slsDetector::getReceiverStreamingIP); return sls::concatenateIfDifferent(r); } @@ -1800,17 +1905,17 @@ std::string multiSlsDetector::getAdditionalJsonHeader(int detPos) { return sls::concatenateIfDifferent(r); } -std::string multiSlsDetector::setReceiverUDPSocketBufferSize(int udpsockbufsize=-1, int detPos) { +int multiSlsDetector::setReceiverUDPSocketBufferSize(int udpsockbufsize=-1, int detPos) { // single if (detPos >= 0) return detectors[detPos]->setReceiverUDPSocketBufferSize(udpsockbufsize); // multi auto r = parallelCall(&slsDetector::setReceiverUDPSocketBufferSize, udpsockbufsize); - return sls::concatenateIfDifferent(r); + return sls::minusOneIfDifferent(r); } -std::string multiSlsDetector::getReceiverUDPSocketBufferSize(int detPos) { +int multiSlsDetector::getReceiverUDPSocketBufferSize(int detPos) { // single if (detPos >= 0) { return detectors[detPos]->getReceiverUDPSocketBufferSize(); @@ -1818,10 +1923,10 @@ std::string multiSlsDetector::getReceiverUDPSocketBufferSize(int detPos) { // multi auto r = serialCall(&slsDetector::getReceiverUDPSocketBufferSize); - return sls::concatenateIfDifferent(r); + return sls::minusOneIfDifferent(r); } -std::string multiSlsDetector::getReceiverRealUDPSocketBufferSize(int detPos) { +int multiSlsDetector::getReceiverRealUDPSocketBufferSize(int detPos) { // single if (detPos >= 0) { return detectors[detPos]->getReceiverRealUDPSocketBufferSize(); @@ -1829,7 +1934,7 @@ std::string multiSlsDetector::getReceiverRealUDPSocketBufferSize(int detPos) { // multi auto r = serialCall(&slsDetector::getReceiverRealUDPSocketBufferSize); - return sls::concatenateIfDifferent(r); + return sls::minusOneIfDifferent(r); } int multiSlsDetector::setFlowControl10G(int enable, int detPos) { diff --git a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.h b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.h index 0e71add3c..ff91f44c3 100644 --- a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.h +++ b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.h @@ -862,70 +862,6 @@ class multiSlsDetector : public virtual slsDetectorDefs, */ std::string getReceiverHostname(int detPos = -1); - /** - * Set network parameter - * @param p network parameter type - * @param s network parameter value - * @param detPos -1 for all detectors in list or specific detector position - * @returns network parameter value set (from getNetworkParameter) - */ - std::string setNetworkParameter(networkParameter parameter, - const std::string& value, int detPos = -1); - - /** - * Get network parameter - * @param p network parameter type - * @param detPos -1 for all detectors in list or specific detector position - * @returns network parameter value set (from getNetworkParameter) - */ - std::string getNetworkParameter(networkParameter p, int detPos = -1); - - /** - * (advanced users) - * Set/Get receiver streaming out ZMQ port and restarts receiver sockets - * @param i sets, -1 gets - * If detPos is -1(multi module), port calculated (increments) for all the - * individual detectors using i - * @param detPos -1 for all detectors in list or specific detector position - * @returns receiver streaming out ZMQ port (if multiple, of first receiver - * socket) - */ - int setReceiverDataStreamingOutPort(int i = -1, int detPos = -1); - - /** - * (advanced users) - * Set/Get client streaming in ZMQ port and restarts client sockets - * @param i sets, -1 gets - * If detPos is -1(multi module), port calculated (increments) for all the - * individual detectors using i - * @param detPos -1 for all detectors in list or specific detector position - * @returns receiver streaming out ZMQ port (if multiple, of first receiver - * socket) - */ - int setClientDataStreamingInPort(int i = -1, int detPos = -1); - - /** - * (advanced users) - * Set/Get receiver streaming out ZMQ IP and restarts receiver sockets - * @param i sets, empty string gets - * By default, it is the IP of receiver hostname - * @param detPos -1 for all detectors in list or specific detector position - * @returns receiver streaming out ZMQ IP - */ - std::string setReceiverDataStreamingOutIP(const std::string& ip = "", - int detPos = -1); - - /** - * (advanced users) - * Set/Get client streaming in ZMQ IP and restarts client sockets - * @param i sets, empty string gets - * By default, it is the IP of receiver hostname - * @param detPos -1 for all detectors in list or specific detector position - * @returns client streaming in ZMQ IP - */ - std::string setClientDataStreamingInIP(const std::string& ip = "", - int detPos = -1); - /** * Validates the format of the detector MAC address and sets it * @param detectorMAC detector MAC address @@ -964,14 +900,14 @@ class multiSlsDetector : public virtual slsDetectorDefs, * @param detPos -1 for all detectors in list or specific detector position * @returns the receiver IP address from shared memory */ - std::string setReceiverHostname(const std::string& receiver, int detPos = -1); + std::string setReceiver(const std::string& receiver, int detPos = -1); /** * Returns the receiver IP address * @param detPos -1 for all detectors in list or specific detector position * @returns the receiver IP address */ - std::string getReceiverHostname(int detPos = -1); + std::string getReceiver(int detPos = -1); /** * Validates the format of the receiver UDP IP address and sets it @@ -1017,7 +953,7 @@ class multiSlsDetector : public virtual slsDetectorDefs, * @param detPos -1 for all detectors in list or specific detector position * @returns the receiver UDP port */ - std::string getReceiverUDPPort(int detPos = -1); + int getReceiverUDPPort(int detPos = -1); /** * Sets the receiver UDP port 2 @@ -1032,7 +968,79 @@ class multiSlsDetector : public virtual slsDetectorDefs, * @param detPos -1 for all detectors in list or specific detector position * @returns the receiver UDP port 2 of same interface */ - std::string getReceiverUDPPort2(int detPos = -1); + int getReceiverUDPPort2(int detPos = -1); + + /** + * (advanced users) + * Set/Get client streaming in ZMQ port and restarts client sockets + * @param i sets, -1 gets + * If detPos is -1(multi module), port calculated (increments) for all the + * individual detectors using i + * @param detPos -1 for all detectors in list or specific detector position + */ + void setClientDataStreamingInPort(int i = -1, int detPos = -1); + + /** + * Returns the client zmq port + * If detPos is -1(multi module), port returns client streaming port of first module + * @param detPos -1 for all detectors in list or specific detector position + * @returns the client zmq port + */ + int getClientStreamingPort(int detPos = -1); + + /** + * (advanced users) + * Set/Get receiver streaming out ZMQ port and restarts receiver sockets + * @param i sets, -1 gets + * If detPos is -1(multi module), port calculated (increments) for all the + * individual detectors using i + * @param detPos -1 for all detectors in list or specific detector position + */ + void setReceiverDataStreamingOutPort(int i = -1, int detPos = -1); + + /** + * Returns the receiver zmq port + * If detPos is -1(multi module), port returns receiver streaming port of first module + * @param detPos -1 for all detectors in list or specific detector position + * @returns the receiver zmq port + */ + int getReceiverStreamingPort(int detPos = -1); + + /** + * (advanced users) + * Set/Get client streaming in ZMQ IP and restarts client sockets + * @param i sets, empty string gets + * By default, it is the IP of receiver hostname + * @param detPos -1 for all detectors in list or specific detector position + */ + void setClientDataStreamingInIP(const std::string& ip = "", + int detPos = -1); + + /** + * Returns the client zmq ip + * If detPos is -1(multi module), ip returns concatenation of all client streaming ip + * @param detPos -1 for all detectors in list or specific detector position + * @returns the client zmq ip + */ + std::string getClientStreamingIP(int detPos = -1); + + /** + * (advanced users) + * Set/Get receiver streaming out ZMQ IP and restarts receiver sockets + * @param i sets, empty string gets + * By default, it is the IP of receiver hostname + * @param detPos -1 for all detectors in list or specific detector position + */ + void setReceiverDataStreamingOutIP(const std::string& ip = "", + int detPos = -1); + + /** + * Returns the receiver zmq ip + * If detPos is -1(multi module), ip returns concatenation of all receiver streaming ip + * @param detPos -1 for all detectors in list or specific detector position + * @returns the receiver zmq ip + */ + std::string getReceiverStreamingIP(int detPos = -1); /** * Sets the transmission delay for left, right or entire frame @@ -1065,21 +1073,21 @@ class multiSlsDetector : public virtual slsDetectorDefs, * @param detPos -1 for all detectors in list or specific detector position * @returns receiver udp socket buffer size */ - std::string setReceiverUDPSocketBufferSize(int udpsockbufsize=-1, int detPos = -1); + int setReceiverUDPSocketBufferSize(int udpsockbufsize=-1, int detPos = -1); /** * Returns the receiver UDP socket buffer size * @param detPos -1 for all detectors in list or specific detector position * @returns the receiver UDP socket buffer size */ - std::string getReceiverUDPSocketBufferSize(int detPos = -1) ; + int getReceiverUDPSocketBufferSize(int detPos = -1) ; /** * Returns the receiver real UDP socket buffer size * @param detPos -1 for all detectors in list or specific detector position * @returns the receiver real UDP socket buffer size */ - std::string getReceiverRealUDPSocketBufferSize(int detPos = -1); + int getReceiverRealUDPSocketBufferSize(int detPos = -1); /** (users only) * Set 10GbE Flow Control (Eiger) diff --git a/slsDetectorSoftware/slsDetector/slsDetector.cpp b/slsDetectorSoftware/slsDetector/slsDetector.cpp index 474066edf..67ba1ef09 100644 --- a/slsDetectorSoftware/slsDetector/slsDetector.cpp +++ b/slsDetectorSoftware/slsDetector/slsDetector.cpp @@ -2751,95 +2751,6 @@ std::string slsDetector::getNetworkParameter(networkParameter index) { } - -std::string slsDetector::getDetectorMAC() { - return std::string(thisDetector->detectorMAC); -} - - -std::string slsDetector::getDetectorIP() { - return std::string(thisDetector->detectorIP); -} - - -std::string slsDetector::getReceiver() { - return std::string(thisDetector->receiver_hostname); -} - - -std::string slsDetector::getReceiverUDPIP() { - return std::string(thisDetector->receiverUDPIP); -} - - -std::string slsDetector::getReceiverUDPMAC() { - return std::string(thisDetector->receiverUDPMAC); -} - - -std::string slsDetector::getReceiverUDPPort() { - return std::to_string(thisDetector->receiverUDPPort); -} - - -std::string slsDetector::getReceiverUDPPort2() { - return std::to_string(thisDetector->receiverUDPPort2); -} - - -std::string slsDetector::getClientStreamingPort() { - return std::to_string(thisDetector->zmqport); -} - - -std::string slsDetector::getReceiverStreamingPort() { - return std::to_string(thisDetector->receiver_zmqport); -} - - -std::string slsDetector::getClientStreamingIP() { - return std::string(thisDetector->zmqip); -} - - -std::string slsDetector::getReceiverStreamingIP() { - return std::string(thisDetector->receiver_zmqip); -} - - -std::string slsDetector::getAdditionalJsonHeader() { - return std::string(thisDetector->receiver_additionalJsonHeader); -} - - -std::string slsDetector::getReceiverUDPSocketBufferSize() { - return setReceiverUDPSocketBufferSize(); -} - - -std::string slsDetector::getReceiverRealUDPSocketBufferSize() { - int fnum = F_RECEIVER_REAL_UDP_SOCK_BUF_SIZE; - int ret = FAIL; - int retval = -1; - FILE_LOG(logDEBUG1) << "Getting real UDP Socket Buffer size to receiver"; - - if (thisDetector->receiverOnlineFlag == ONLINE_FLAG && connectData() == OK) { - ret = thisReceiver->Client_Send(fnum, nullptr, 0, &retval, sizeof(retval)); - disconnectData(); - - // handle ret - if (ret == FAIL) { - setErrorMask((getErrorMask())|(COULDNOT_SET_NETWORK_PARAMETER)); - } else { - FILE_LOG(logDEBUG1) << "Real Receiver UDP Socket Buffer size: " << retval; - if (ret == FORCE_UPDATE) - ret = updateReceiver(); - } - } - return std::to_string(retval); -} - - std::string slsDetector::setDetectorMAC(const std::string& detectorMAC) { // invalid format @@ -2861,6 +2772,9 @@ std::string slsDetector::setDetectorMAC(const std::string& detectorMAC) { return std::string(thisDetector->detectorMAC); } +std::string slsDetector::getDetectorMAC() { + return std::string(thisDetector->detectorMAC); +} std::string slsDetector::setDetectorIP(const std::string& detectorIP) { struct sockaddr_in sa; @@ -2885,6 +2799,9 @@ std::string slsDetector::setDetectorIP(const std::string& detectorIP) { return std::string(thisDetector->detectorIP); } +std::string slsDetector::getDetectorIP() { + return std::string(thisDetector->detectorIP); +} std::string slsDetector::setReceiver(const std::string& receiverIP) { FILE_LOG(logDEBUG1) << "Setting up Receiver with " << receiverIP; @@ -2987,6 +2904,10 @@ std::string slsDetector::setReceiver(const std::string& receiverIP) { } +std::string slsDetector::getReceiver() { + return std::string(thisDetector->receiver_hostname); +} + std::string slsDetector::setReceiverUDPIP(const std::string& udpip) { struct sockaddr_in sa; if (udpip.length() && udpip.length() < 16) { @@ -3010,6 +2931,9 @@ std::string slsDetector::setReceiverUDPIP(const std::string& udpip) { return std::string(thisDetector->receiverUDPIP); } +std::string slsDetector::getReceiverUDPIP() { + return std::string(thisDetector->receiverUDPIP); +} std::string slsDetector::setReceiverUDPMAC(const std::string& udpmac) { // invalid format @@ -3031,6 +2955,9 @@ std::string slsDetector::setReceiverUDPMAC(const std::string& udpmac) { return std::string(thisDetector->receiverUDPMAC); } +std::string slsDetector::getReceiverUDPMAC() { + return std::string(thisDetector->receiverUDPMAC); +} int slsDetector::setReceiverUDPPort(int udpport) { thisDetector->receiverUDPPort = udpport; @@ -3043,6 +2970,9 @@ int slsDetector::setReceiverUDPPort(int udpport) { return thisDetector->receiverUDPPort; } +int slsDetector::getReceiverUDPPort() { + return thisDetector->receiverUDPPort; +} int slsDetector::setReceiverUDPPort2(int udpport) { thisDetector->receiverUDPPort2 = udpport; @@ -3055,14 +2985,20 @@ int slsDetector::setReceiverUDPPort2(int udpport) { return thisDetector->receiverUDPPort2; } +int slsDetector::getReceiverUDPPort2() { + return thisDetector->receiverUDPPort2; +} -std::string slsDetector::setClientStreamingPort(const std::string& port) { +int slsDetector::setClientStreamingPort(int port) { thisDetector->zmqport = stoi(port); return getClientStreamingPort(); } +int slsDetector::getClientStreamingPort() { + return thisDetector->zmqport; +} -std::string slsDetector::setReceiverStreamingPort(const std::string& port) { +int slsDetector::setReceiverStreamingPort(int port) { // copy now else it is lost if rx_hostname not set yet thisDetector->receiver_zmqport = stoi(port); @@ -3089,8 +3025,11 @@ std::string slsDetector::setReceiverStreamingPort(const std::string& port) { return getReceiverStreamingPort(); } +int slsDetector::getReceiverStreamingPort() { + return thisDetector->receiver_zmqport; +} -std::string slsDetector::setClientStreamingIP(const std::string& sourceIP) { +int slsDetector::setClientStreamingIP(int sourceIP) { struct addrinfo *result; // on failure to convert to a valid ip if (dataSocket->ConvertHostnameToInternetAddress(sourceIP.c_str(), &result)) { @@ -3104,6 +3043,9 @@ std::string slsDetector::setClientStreamingIP(const std::string& sourceIP) { return getClientStreamingIP(); } +int slsDetector::getClientStreamingIP() { + return thisDetector->zmqip; +} std::string slsDetector::setReceiverStreamingIP(std::string sourceIP) { int fnum = F_RECEIVER_STREAMING_SRC_IP; @@ -3162,6 +3104,33 @@ std::string slsDetector::setReceiverStreamingIP(std::string sourceIP) { return getReceiverStreamingIP(); } +std::string slsDetector::getReceiverStreamingIP() { + return std::string(thisDetector->receiver_zmqip); +} + + +std::string slsDetector::setDetectorNetworkParameter(networkParameter index, int delay) { + int fnum = F_SET_NETWORK_PARAMETER; + int ret = FAIL; + int args[2] = {(int)index, delay}; + int retval = -1; + FILE_LOG(logDEBUG1) << "Setting network parameter index " << index << " to " << delay; + + if (thisDetector->onlineFlag == ONLINE_FLAG && connectControl() == OK) { + ret = thisDetectorControl->Client_Send(fnum, args, sizeof(args), &retval, sizeof(retval)); + disconnectControl(); + + // handle ret + if (ret == FAIL) { + setErrorMask((getErrorMask())|(DETECTOR_NETWORK_PARAMETER)); + } else { + FILE_LOG(logDEBUG1) << "Network Parameter (" << index << "): " << retval; + if (ret == FORCE_UPDATE) + ret = updateDetector(); + } + } + return std::to_string(retval); +} std::string slsDetector::setAdditionalJsonHeader(const std::string& jsonheader) { int fnum = F_ADDITIONAL_JSON_HEADER; @@ -3189,8 +3158,12 @@ std::string slsDetector::setAdditionalJsonHeader(const std::string& jsonheader) return getAdditionalJsonHeader(); } +std::string slsDetector::getAdditionalJsonHeader() { + return std::string(thisDetector->receiver_additionalJsonHeader); +} -std::string slsDetector::setReceiverUDPSocketBufferSize(int udpsockbufsize) { + +int slsDetector::setReceiverUDPSocketBufferSize(int udpsockbufsize) { int fnum = F_RECEIVER_UDP_SOCK_BUF_SIZE; int ret = FAIL; int arg = udpsockbufsize; @@ -3210,31 +3183,34 @@ std::string slsDetector::setReceiverUDPSocketBufferSize(int udpsockbufsize) { ret = updateReceiver(); } } - return std::to_string(retval); + return retval; +} + +int slsDetector::getReceiverUDPSocketBufferSize() { + return setReceiverUDPSocketBufferSize(); } -std::string slsDetector::setDetectorNetworkParameter(networkParameter index, int delay) { - int fnum = F_SET_NETWORK_PARAMETER; +int slsDetector::getReceiverRealUDPSocketBufferSize() { + int fnum = F_RECEIVER_REAL_UDP_SOCK_BUF_SIZE; int ret = FAIL; - int args[2] = {(int)index, delay}; int retval = -1; - FILE_LOG(logDEBUG1) << "Setting network parameter index " << index << " to " << delay; + FILE_LOG(logDEBUG1) << "Getting real UDP Socket Buffer size to receiver"; - if (thisDetector->onlineFlag == ONLINE_FLAG && connectControl() == OK) { - ret = thisDetectorControl->Client_Send(fnum, args, sizeof(args), &retval, sizeof(retval)); - disconnectControl(); + if (thisDetector->receiverOnlineFlag == ONLINE_FLAG && connectData() == OK) { + ret = thisReceiver->Client_Send(fnum, nullptr, 0, &retval, sizeof(retval)); + disconnectData(); // handle ret if (ret == FAIL) { - setErrorMask((getErrorMask())|(DETECTOR_NETWORK_PARAMETER)); + setErrorMask((getErrorMask())|(COULDNOT_SET_NETWORK_PARAMETER)); } else { - FILE_LOG(logDEBUG1) << "Network Parameter (" << index << "): " << retval; + FILE_LOG(logDEBUG1) << "Real Receiver UDP Socket Buffer size: " << retval; if (ret == FORCE_UPDATE) - ret = updateDetector(); + ret = updateReceiver(); } } - return std::to_string(retval); + return retval; } diff --git a/slsDetectorSoftware/slsDetector/slsDetector.h b/slsDetectorSoftware/slsDetector/slsDetector.h index cbacbc1cf..efac8ab1f 100644 --- a/slsDetectorSoftware/slsDetector/slsDetector.h +++ b/slsDetectorSoftware/slsDetector/slsDetector.h @@ -859,19 +859,11 @@ public: uint32_t clearBit(uint32_t addr, int n); /** - * Set network parameter - * @param p network parameter type - * @param value network parameter value - * @returns network parameter value set (from getNetworkParameter) + * Validates the format of the detector MAC address and sets it \sa sharedSlsDetector + * @param detectorMAC detector MAC address + * @returns the detector MAC address */ - std::string setNetworkParameter(networkParameter index, const std::string& value); - - /** - * Get network parameter - * @param index network parameter type - * @returns network parameter value set (from getNetworkParameter) - */ - std::string getNetworkParameter(networkParameter index); + std::string setDetectorMAC(const std::string& detectorMAC); /** * Returns the detector MAC address\sa sharedSlsDetector @@ -879,73 +871,6 @@ public: */ std::string getDetectorMAC(); - /** - * Returns the detector IP address\sa sharedSlsDetector - * @returns the detector IP address - */ - std::string getDetectorIP(); - - /** - * Returns the receiver IP address\sa sharedSlsDetector - * @returns the receiver IP address - */ - std::string getReceiver(); - - /** - * Returns the receiver UDP IP address\sa sharedSlsDetector - * @returns the receiver UDP IP address - */ - std::string getReceiverUDPIP(); - - /** - * Returns the receiver UDP MAC address\sa sharedSlsDetector - * @returns the receiver UDP MAC address - */ - std::string getReceiverUDPMAC(); - - /** - * Returns the receiver UDP port\sa sharedSlsDetector - * @returns the receiver UDP port - */ - std::string getReceiverUDPPort(); - - /** - * Returns the receiver UDP port 2 of same interface\sa sharedSlsDetector - * @returns the receiver UDP port 2 of same interface - */ - std::string getReceiverUDPPort2(); - - /** - * Returns the client zmq port \sa sharedSlsDetector - * @returns the client zmq port - */ - std::string getClientStreamingPort(); - - /** - * Returns the receiver zmq port \sa sharedSlsDetector - * @returns the receiver zmq port - */ - std::string getReceiverStreamingPort(); - - /** - * Returns the client zmq ip \sa sharedSlsDetector - * @returns the client zmq ip, returns "none" if default setting and no custom ip set - */ - std::string getClientStreamingIP(); - - /** - * Returns the receiver zmq ip \sa sharedSlsDetector - * @returns the receiver zmq ip, returns "none" if default setting and no custom ip set - */ - std::string getReceiverStreamingIP(); - - /** - * Validates the format of the detector MAC address and sets it \sa sharedSlsDetector - * @param detectorMAC detector MAC address - * @returns the detector MAC address - */ - std::string setDetectorMAC(const std::string& detectorMAC); - /** * Validates the format of the detector IP address and sets it \sa sharedSlsDetector * @param detectorIP detector IP address @@ -953,6 +878,12 @@ public: */ std::string setDetectorIP(const std::string& detectorIP); + /** + * Returns the detector IP address\sa sharedSlsDetector + * @returns the detector IP address + */ + std::string getDetectorIP(); + /** * Validates and sets the receiver. * Also updates the receiver with all the shared memory parameters significant for the receiver @@ -962,6 +893,12 @@ public: */ std::string setReceiver(const std::string& receiver); + /** + * Returns the receiver IP address\sa sharedSlsDetector + * @returns the receiver IP address + */ + std::string getReceiver(); + /** * Validates the format of the receiver UDP IP address and sets it \sa sharedSlsDetector * @param udpip receiver UDP IP address @@ -969,6 +906,12 @@ public: */ std::string setReceiverUDPIP(const std::string& udpip); + /** + * Returns the receiver UDP IP address\sa sharedSlsDetector + * @returns the receiver UDP IP address + */ + std::string getReceiverUDPIP(); + /** * Validates the format of the receiver UDP MAC address and sets it \sa sharedSlsDetector * @param udpmac receiver UDP MAC address @@ -976,6 +919,12 @@ public: */ std::string setReceiverUDPMAC(const std::string& udpmac); + /** + * Returns the receiver UDP MAC address\sa sharedSlsDetector + * @returns the receiver UDP MAC address + */ + std::string getReceiverUDPMAC(); + /** * Sets the receiver UDP port\sa sharedSlsDetector * @param udpport receiver UDP port @@ -983,6 +932,12 @@ public: */ int setReceiverUDPPort(int udpport); + /** + * Returns the receiver UDP port\sa sharedSlsDetector + * @returns the receiver UDP port + */ + int getReceiverUDPPort(); + /** * Sets the receiver UDP port 2\sa sharedSlsDetector * @param udpport receiver UDP port 2 @@ -990,35 +945,100 @@ public: */ int setReceiverUDPPort2(int udpport); + /** + * Returns the receiver UDP port 2 of same interface\sa sharedSlsDetector + * @returns the receiver UDP port 2 of same interface + */ + int getReceiverUDPPort2(); + /** * Sets the client zmq port\sa sharedSlsDetector - * @param port client zmq port (includes "multi" at the end if it should - * calculate individual ports) + * @param port client zmq port + */ + void setClientStreamingPort(int port); + + /** + * Returns the client zmq port \sa sharedSlsDetector * @returns the client zmq port */ - std::string setClientStreamingPort(const std::string& port); + int getClientStreamingPort(); /** * Sets the receiver zmq port\sa sharedSlsDetector - * @param port receiver zmq port (includes "multi" at the end if it should - * calculate individual ports) + * @param port receiver zmq port + */ + void setReceiverStreamingPort(int port); + + /** + * Returns the receiver zmq port \sa sharedSlsDetector * @returns the receiver zmq port */ - std::string setReceiverStreamingPort(const std::string& port); + int getReceiverStreamingPort(); /** * Sets the client zmq ip\sa sharedSlsDetector * @param sourceIP client zmq ip + */ + void setClientStreamingIP(const std::string& sourceIP); + + /** + * Returns the client zmq ip \sa sharedSlsDetector * @returns the client zmq ip, returns "none" if default setting and no custom ip set */ - std::string setClientStreamingIP(const std::string& sourceIP); + std::string getClientStreamingIP(); /** * Sets the receiver zmq ip\sa sharedSlsDetector * @param sourceIP receiver zmq ip. If empty, uses rx_hostname + */ + void setReceiverStreamingIP(std::string sourceIP); + + /** + * Returns the receiver zmq ip \sa sharedSlsDetector * @returns the receiver zmq ip, returns "none" if default setting and no custom ip set */ - std::string setReceiverStreamingIP(std::string sourceIP); + std::string getReceiverStreamingIP(); + + /** + * Sets the transmission delay for left, right or entire frame + * (Eiger, Jungfrau(only entire frame)) + * @param index type of delay + * @param delay delay + * @returns transmission delay + */ + std::string setDetectorNetworkParameter(networkParameter index, int delay); + + /** + * Sets the additional json header\sa sharedSlsDetector + * @param jsonheader additional json header + * @returns additional json header, returns "none" if default setting and no custom ip set + */ + std::string setAdditionalJsonHeader(const std::string& jsonheader); + + /** + * Returns the additional json header \sa sharedSlsDetector + * @returns the additional json header, returns "none" if default setting and no custom ip set + */ + std::string getAdditionalJsonHeader(); + + /** + * Sets the receiver UDP socket buffer size + * @param udpsockbufsize additional json header + * @returns receiver udp socket buffer size + */ + int setReceiverUDPSocketBufferSize(int udpsockbufsize=-1); + + /** + * Returns the receiver UDP socket buffer size\sa sharedSlsDetector + * @returns the receiver UDP socket buffer size + */ + int getReceiverUDPSocketBufferSize() ; + + /** + * Returns the receiver real UDP socket buffer size\sa sharedSlsDetector + * @returns the receiver real UDP socket buffer size + */ + int getReceiverRealUDPSocketBufferSize(); /** * Execute a digital test (Gotthard, Mythen) @@ -1700,47 +1720,6 @@ private: */ int receiveModule(sls_detector_module* myMod); - /** - * Returns the additional json header \sa sharedSlsDetector - * @returns the additional json header, returns "none" if default setting and no custom ip set - */ - std::string getAdditionalJsonHeader(); - - /** - * Returns the receiver UDP socket buffer size\sa sharedSlsDetector - * @returns the receiver UDP socket buffer size - */ - std::string getReceiverUDPSocketBufferSize() ; - - /** - * Returns the receiver real UDP socket buffer size\sa sharedSlsDetector - * @returns the receiver real UDP socket buffer size - */ - std::string getReceiverRealUDPSocketBufferSize(); - - /** - * Sets the additional json header\sa sharedSlsDetector - * @param jsonheader additional json header - * @returns additional json header, returns "none" if default setting and no custom ip set - */ - std::string setAdditionalJsonHeader(const std::string& jsonheader); - - /** - * Sets the receiver UDP socket buffer size - * @param udpsockbufsize additional json header - * @returns receiver udp socket buffer size - */ - std::string setReceiverUDPSocketBufferSize(int udpsockbufsize=-1); - - /** - * Sets the transmission delay for left, right or entire frame - * (Eiger, Jungfrau(only entire frame)) - * @param index type of delay - * @param delay delay - * @returns transmission delay - */ - std::string setDetectorNetworkParameter(networkParameter index, int delay); - /** * Get MAC from the receiver using udpip and * set up UDP connection in detector