From a0f697ce71aa72d2d856771f5f4f673a0a2d2414 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Tue, 28 May 2019 10:31:36 +0200 Subject: [PATCH] jungfrau feature change: outer is default and connects to bottom, inner is secondary but connects to top --- .../bin/jungfrauDetectorServer_developer | Bin 120584 -> 120820 bytes .../slsDetectorFunctionList.c | 40 ++++++++++++------ slsDetectorSoftware/src/slsDetector.cpp | 22 ++++------ .../src/slsDetectorCommand.cpp | 28 ++++++------ .../src/slsReceiverTCPIPInterface.cpp | 29 +++---------- slsSupportLib/include/versionAPI.h | 2 +- 6 files changed, 57 insertions(+), 64 deletions(-) diff --git a/slsDetectorServers/jungfrauDetectorServer/bin/jungfrauDetectorServer_developer b/slsDetectorServers/jungfrauDetectorServer/bin/jungfrauDetectorServer_developer index 565e857f338f5b9b2421888657b78e5d84159811..9c684a8a49f44a07c2e8c1637e3944d9200c632b 100755 GIT binary patch delta 37749 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%0DS0Z-xcu}|Tc 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 delta 37346 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 XV#2u^+A-#wx;c~1shc~FVZP#j6;ObG diff --git a/slsDetectorServers/jungfrauDetectorServer/slsDetectorFunctionList.c b/slsDetectorServers/jungfrauDetectorServer/slsDetectorFunctionList.c index 6922261ef..8934cb5a3 100755 --- a/slsDetectorServers/jungfrauDetectorServer/slsDetectorFunctionList.c +++ b/slsDetectorServers/jungfrauDetectorServer/slsDetectorFunctionList.c @@ -1005,16 +1005,16 @@ int getNumberofUDPInterfaces() { void selectPrimaryInterface(int val) { uint32_t addr = CONFIG_REG; - // inner (user input: 1) - if (val == 1) { - FILE_LOG(logINFOBLUE, ("Setting Primary Interface: 1 (Inner)\n")); - bus_w(addr, bus_r(addr) | CONFIG_INNR_PRIMRY_INTRFCE_MSK); - } - // outer (user input: 2) - else { - FILE_LOG(logINFOBLUE, ("Setting Primary Interface: 2 (Outer)\n")); + // inner (user input: 0) + if (val == 0) { + FILE_LOG(logINFOBLUE, ("Setting Primary Interface: 0 (Outer)\n")); bus_w(addr, bus_r(addr) &~ CONFIG_INNR_PRIMRY_INTRFCE_MSK); } + // outer (user input: 1) + else { + FILE_LOG(logINFOBLUE, ("Setting Secondary Interface: 1 (Inner)\n")); + bus_w(addr, bus_r(addr) | CONFIG_INNR_PRIMRY_INTRFCE_MSK); + } } void setupHeader(int iRxEntry, enum interfaceType type, uint32_t destip, uint64_t destmac, uint32_t destport, uint64_t sourcemac, uint32_t sourceip, uint32_t sourceport) { @@ -1104,7 +1104,7 @@ int configureMAC(int numInterfaces, int selInterface, FILE_LOG(logINFO, ("\t#Interfaces : %d\n", numInterfaces)); FILE_LOG(logINFO, ("\tInterface : %d\n\n", selInterface)); - FILE_LOG(logINFO, ("\tInner\n")); + FILE_LOG(logINFO, ("\tOuter %s\n", (numInterfaces == 2) ? "(Bottom)": "")); FILE_LOG(logINFO, ("\tSource IP : %d.%d.%d.%d \t\t(0x%08x)\n", (sourceip>>24)&0xff,(sourceip>>16)&0xff,(sourceip>>8)&0xff,(sourceip)&0xff, sourceip)); FILE_LOG(logINFO, ("\tSource MAC : %02x:%02x:%02x:%02x:%02x:%02x \t(0x%010llx)\n", @@ -1130,7 +1130,7 @@ int configureMAC(int numInterfaces, int selInterface, FILE_LOG(logINFO, ("\tDest. Port : %d \t\t\t(0x%08x)\n\n",udpport, udpport)); uint32_t sourceport2 = DEFAULT_TX_UDP_PORT + 1; - FILE_LOG(logINFO, ("\tOuter\n")); + FILE_LOG(logINFO, ("\tInner %s\n", (numInterfaces == 2) ? "(Top)": "Not used")); FILE_LOG(logINFO, ("\tSource IP2 : %d.%d.%d.%d \t\t(0x%08x)\n", (sourceip2>>24)&0xff,(sourceip2>>16)&0xff,(sourceip2>>8)&0xff,(sourceip2)&0xff, sourceip2)); FILE_LOG(logINFO, ("\tSource MAC2 : %02x:%02x:%02x:%02x:%02x:%02x \t(0x%010llx)\n", @@ -1157,10 +1157,22 @@ int configureMAC(int numInterfaces, int selInterface, // default one rxr entry (others not yet implemented in client yet) int iRxEntry = 0; - // top - setupHeader(iRxEntry, INNER, destip, destmac, udpport, sourcemac, sourceip, sourceport); - // bottom - setupHeader(iRxEntry, OUTER, destip2, destmac2, udpport2, sourcemac2, sourceip2, sourceport2); + + if (numInterfaces == 2) { + // bottom + setupHeader(iRxEntry, OUTER, destip, destmac, udpport, sourcemac, sourceip, sourceport); + // top + setupHeader(iRxEntry, INNER, destip2, destmac2, udpport2, sourcemac2, sourceip2, sourceport2); + } + // single interface + else { + // default + if (selInterface == 0) { + setupHeader(iRxEntry, OUTER, destip, destmac, udpport, sourcemac, sourceip, sourceport); + } else { + setupHeader(iRxEntry, INNER, destip, destmac, udpport, sourcemac, sourceip, sourceport); + } + } setNumberofUDPInterfaces(numInterfaces); selectPrimaryInterface(selInterface); diff --git a/slsDetectorSoftware/src/slsDetector.cpp b/slsDetectorSoftware/src/slsDetector.cpp index 58ebf45e1..7215bd856 100755 --- a/slsDetectorSoftware/src/slsDetector.cpp +++ b/slsDetectorSoftware/src/slsDetector.cpp @@ -338,7 +338,7 @@ void slsDetector::initializeDetectorStructure(detectorType type) { shm()->detectorIP2 = DEFAULT_DET_MAC2; shm()->numUDPInterfaces = 1; - shm()->selectedUDPInterface = 1; + shm()->selectedUDPInterface = 0; shm()->rxOnlineFlag = OFFLINE_FLAG; shm()->tenGigaEnable = 0; shm()->flippedData[X] = 0; @@ -2092,7 +2092,7 @@ int slsDetector::selectUDPInterface(int n) { if (shm()->myDetectorType != JUNGFRAU) { throw RuntimeError("Cannot select an interface for this detector"); } - shm()->selectedUDPInterface = (n > 1 ? 2 : 1); + shm()->selectedUDPInterface = (n == 0 ? 0 : 1); if (strcmp(shm()->rxHostname, "none") == 0) { FILE_LOG(logDEBUG1) << "Receiver hostname not set yet"; } else if (setUDPConnection() == FAIL) { @@ -2349,7 +2349,7 @@ int64_t slsDetector::getReceiverRealUDPSocketBufferSize() { int slsDetector::setUDPConnection() { int ret = FAIL; - char args[6][MAX_STR_LENGTH]{}; + char args[5][MAX_STR_LENGTH]{}; char retvals[2][MAX_STR_LENGTH]{}; FILE_LOG(logDEBUG1) << "Setting UDP Connection"; @@ -2366,9 +2366,8 @@ int slsDetector::setUDPConnection() { shm()->rxUDPIP = HostnameToIp(shm()->rxHostname); } } - // jungfrau 2 interfaces or (1 interface and 2nd interface), copy udpip if - // udpip2 empty - if (shm()->numUDPInterfaces == 2 || shm()->selectedUDPInterface == 2) { + // jungfrau 2 interfaces, copy udpip if udpip2 empty + if (shm()->numUDPInterfaces == 2) { if (shm()->rxUDPIP2 == 0) { shm()->rxUDPIP2 = shm()->rxUDPIP; } @@ -2376,15 +2375,12 @@ int slsDetector::setUDPConnection() { // copy arguments to args[][] snprintf(args[0], sizeof(args[0]), "%d", shm()->numUDPInterfaces); - snprintf(args[1], sizeof(args[1]), "%d", shm()->selectedUDPInterface); - sls::strcpy_safe(args[2], getReceiverUDPIP().str()); - sls::strcpy_safe(args[3], getReceiverUDPIP2().str()); - snprintf(args[4], sizeof(args[4]), "%d", shm()->rxUDPPort); - snprintf(args[5], sizeof(args[5]), "%d", shm()->rxUDPPort2); + sls::strcpy_safe(args[1], getReceiverUDPIP().str()); + sls::strcpy_safe(args[2], getReceiverUDPIP2().str()); + snprintf(args[3], sizeof(args[3]), "%d", shm()->rxUDPPort); + snprintf(args[4], sizeof(args[4]), "%d", shm()->rxUDPPort2); FILE_LOG(logDEBUG1) << "Receiver Number of UDP Interfaces: " << shm()->numUDPInterfaces; - FILE_LOG(logDEBUG1) << "Receiver Selected Interface: " - << shm()->selectedUDPInterface; FILE_LOG(logDEBUG1) << "Receiver udp ip address: " << shm()->rxUDPIP; FILE_LOG(logDEBUG1) << "Receiver udp ip address2: " << shm()->rxUDPIP2; FILE_LOG(logDEBUG1) << "Receiver udp port: " << shm()->rxUDPPort; diff --git a/slsDetectorSoftware/src/slsDetectorCommand.cpp b/slsDetectorSoftware/src/slsDetectorCommand.cpp index e19bfc67c..3303439f9 100755 --- a/slsDetectorSoftware/src/slsDetectorCommand.cpp +++ b/slsDetectorSoftware/src/slsDetectorCommand.cpp @@ -1581,7 +1581,7 @@ slsDetectorCommand::slsDetectorCommand(multiSlsDetector *det) { ++i; /*! \page network - - rx_udpip2 [ip] sets/gets the ip address of the second receiver UDP interface where the data from the bottom half module of the detector will be streamed to. Normally used for single detectors (Can be multi-detector). Used if different from eth0. JUNGFRAU only. \c Returns \c (string) + - rx_udpip2 [ip] sets/gets the ip address of the second receiver UDP interface where the data from the top half module of the detector will be streamed to. Normally used for single detectors (Can be multi-detector). Used if different from eth0. JUNGFRAU only. \c Returns \c (string) */ descrToFuncMap[i].m_pFuncName = "rx_udpip2"; descrToFuncMap[i].m_pFuncPtr = &slsDetectorCommand::cmdNetworkParameter; @@ -1595,7 +1595,7 @@ slsDetectorCommand::slsDetectorCommand(multiSlsDetector *det) { ++i; /*! \page network - - rx_udpmac2 [mac] sets/gets the mac address of the second receiver UDP interface where the data from the bottom half module of the detector will be streamed to. Normally used for single detectors (Can be multi-detector). JUNGFRAU only.\c Returns \c (string) + - rx_udpmac2 [mac] sets/gets the mac address of the second receiver UDP interface where the data from the top half module of the detector will be streamed to. Normally used for single detectors (Can be multi-detector). JUNGFRAU only.\c Returns \c (string) */ descrToFuncMap[i].m_pFuncName = "rx_udpmac2"; descrToFuncMap[i].m_pFuncPtr = &slsDetectorCommand::cmdNetworkParameter; @@ -1609,7 +1609,7 @@ slsDetectorCommand::slsDetectorCommand(multiSlsDetector *det) { ++i; /*! \page network - - rx_udpport2 [port] sets/gets the second port of the receiver UDP interface where the data from the second half of the detector will be streamed to. Use single-detector command. Used for EIGERand JUNGFRAU only. \c Returns \c (int) + - rx_udpport2 [port] sets/gets the second port of the receiver UDP interface where the data from the second half of the detector will be streamed to. Use single-detector command. For Eiger, it is the right half and for Jungfrau, it is the top half module. \c Returns \c (int) */ descrToFuncMap[i].m_pFuncName = "rx_udpport2"; descrToFuncMap[i].m_pFuncPtr = &slsDetectorCommand::cmdNetworkParameter; @@ -1637,35 +1637,35 @@ slsDetectorCommand::slsDetectorCommand(multiSlsDetector *det) { ++i; /*! \page network - - detectormac2 [mac] sets/gets the mac address of the second half of the detector UDP interface from where the bottom half module of the detector will stream data. Use single-detector command. Normally unused. JUNGFRAU only. \c Returns \c (string) + - detectormac2 [mac] sets/gets the mac address of the second half of the detector UDP interface from where the top half module of the detector will stream data. Use single-detector command. Normally unused. JUNGFRAU only. \c Returns \c (string) */ descrToFuncMap[i].m_pFuncName = "detectormac2"; descrToFuncMap[i].m_pFuncPtr = &slsDetectorCommand::cmdNetworkParameter; ++i; /*! \page network - - detectorip [ip] sets/gets the ip address of the detector UDP interface from where the bottom half of the detector will stream data. Use single-detector command. Keep in same subnet as rx_udpip (if rx_udpip specified). \c Returns \c (string) + - detectorip [ip] sets/gets the ip address of the detector UDP interface from where the detector will stream data. Use single-detector command. Keep in same subnet as rx_udpip (if rx_udpip specified). \c Returns \c (string) */ descrToFuncMap[i].m_pFuncName = "detectorip"; descrToFuncMap[i].m_pFuncPtr = &slsDetectorCommand::cmdNetworkParameter; ++i; /*! \page network - - detectorip2 [ip] sets/gets the ip address of the second half of the detector UDP interface from where the bottom half of the detector will stream data. Use single-detector command. Keep in same subnet as rx_udpip2 (if rx_udpip2 specified). JUNGFRAU only. \c Returns \c (string) + - detectorip2 [ip] sets/gets the ip address of the top half of the detector UDP interface from where the top half of the detector will stream data. Use single-detector command. Keep in same subnet as rx_udpip2 (if rx_udpip2 specified). JUNGFRAU only. \c Returns \c (string) */ descrToFuncMap[i].m_pFuncName = "detectorip2"; descrToFuncMap[i].m_pFuncPtr = &slsDetectorCommand::cmdNetworkParameter; ++i; /*! \page network - - numinterfaces [n] sets/gets the number of interfaces used to stream out from the detector. Options: 1, 2. JUNGFRAU only. \c Returns \c (int) + - numinterfaces [n] sets/gets the number of interfaces used to stream out from the detector. Options: 1(default), 2. JUNGFRAU only. \c Returns \c (int) */ descrToFuncMap[i].m_pFuncName = "numinterfaces"; descrToFuncMap[i].m_pFuncPtr = &slsDetectorCommand::cmdNetworkParameter; ++i; /*! \page network - - selinterface [n] sets/gets the 1st (inner) or the 2nd (outer) interface to use to stream data out of the detector. Options: 1, 2. Effective only when \c numinterfaces is 1. JUNGFRAU only. \c Returns \c (int) + - selinterface [n] sets/gets interface to use to stream data out of the detector. Options: 0 (outer, default), 1(inner). Effective only when \c numinterfaces is 1. JUNGFRAU only. \c Returns \c (int) */ descrToFuncMap[i].m_pFuncName = "selinterface"; descrToFuncMap[i].m_pFuncPtr = &slsDetectorCommand::cmdNetworkParameter; @@ -3063,9 +3063,9 @@ std::string slsDetectorCommand::helpNetworkParameter(int action) { os << "rx_udpmac mac \n sets receiver udp mac to mac" << std::endl; os << "rx_udpmac2 mac \n sets receiver udp mac of 2nd udp interface to mac. Jungfrau only." << std::endl; os << "rx_udpport port \n sets receiver udp port to port" << std::endl; - os << "rx_udpport2 port \n sets receiver udp port to port. For Eiger and Jungfrau, it is the second half module and for other detectors, same as rx_udpport" << std::endl; - os << "numinterfaces n \n sets the number of interfaces to n used to stream out from the detector. Options: 1, 2. JUNGFRAU only. " << std::endl; - os << "selinterface n \n sets the 1st (inner) or the 2nd (outer) interface to use to stream data out of the detector. Options: 1, 2. Effective only when numinterfaces is 1. JUNGFRAU only. " << std::endl; + os << "rx_udpport2 port \n sets receiver udp port to port. For Eiger, it is the right half and for Jungfrau, it is the top half module and for other detectors, same as rx_udpport" << std::endl; + os << "numinterfaces n \n sets the number of interfaces to n used to stream out from the detector. Options: 1 (default), 2. JUNGFRAU only. " << std::endl; + os << "selinterface n \n sets interface to use to stream data out of the detector. Options: 0 (outer, default), 1(inner). Effective only when numinterfaces is 1. JUNGFRAU only. " << std::endl; os << "txndelay_left port \n sets detector transmission delay of the left port" << std::endl; os << "txndelay_right port \n sets detector transmission delay of the right port" << std::endl; os << "txndelay_frame port \n sets detector transmission delay of the entire frame" << std::endl; @@ -3103,9 +3103,9 @@ std::string slsDetectorCommand::helpNetworkParameter(int action) { os << "rx_udpip \n gets receiver udp mac " << std::endl; os << "rx_udpip2 \n gets receiver udp mac of 2nd udp interface. Jungfrau only" << std::endl; os << "rx_udpport \n gets receiver udp port " << std::endl; - os << "rx_udpport2 \n gets receiver udp port of 2nd udp interface. For Eiger and Jungfrau, it is the second half module and for other detectors, same as rx_udpport" << std::endl; - os << "numinterfaces \n gets the number of interfaces to n used to stream out from the detector. Options: 1, 2. JUNGFRAU only. " << std::endl; - os << "selinterface \n gets the interface selected to use to stream data out of the detector. Options: 1, 2. Effective only when numinterfaces is 1. JUNGFRAU only. " << std::endl; + os << "rx_udpport2 \n gets receiver udp port of 2nd udp interface. For Eiger, it is the right half and for Jungfrau, it is the top half module and for other detectors, same as rx_udpport" << std::endl; + os << "numinterfaces \n gets the number of interfaces to n used to stream out from the detector. Options: 1 (default), 2. JUNGFRAU only. " << std::endl; + os << "selinterface \n gets interface to use to stream data out of the detector. Options: 0 (outer, default), 1(inner). Effective only when numinterfaces is 1. JUNGFRAU only. " << std::endl; os << "txndelay_left \n gets detector transmission delay of the left port" << std::endl; os << "txndelay_right \n gets detector transmission delay of the right port" << std::endl; os << "txndelay_frame \n gets detector transmission delay of the entire frame" << std::endl; diff --git a/slsReceiverSoftware/src/slsReceiverTCPIPInterface.cpp b/slsReceiverSoftware/src/slsReceiverTCPIPInterface.cpp index 24e5b31af..0c7701cb6 100755 --- a/slsReceiverSoftware/src/slsReceiverTCPIPInterface.cpp +++ b/slsReceiverSoftware/src/slsReceiverTCPIPInterface.cpp @@ -731,7 +731,7 @@ int slsReceiverTCPIPInterface::set_roi() { int slsReceiverTCPIPInterface::setup_udp(){ ret = OK; memset(mess, 0, sizeof(mess)); - char args[6][MAX_STR_LENGTH] = {{""}, {""}, {""}, {""}, {""}, {""}}; + char args[][MAX_STR_LENGTH] = {{""}, {""}, {""}, {""}, {""}}; char retvals[2][MAX_STR_LENGTH] = {{""}, {""}}; // get args, return if socket crashed, ret is fail if receiver is not null @@ -746,18 +746,10 @@ int slsReceiverTCPIPInterface::setup_udp(){ //setup interfaces count int numInterfaces = atoi(args[0]) > 1 ? 2 : 1; - int selInterface = atoi(args[1]) > 1 ? 2 : 1; - - char* ip1 = args[2]; - char* ip2 = args[3]; - uint32_t port1 = atoi(args[4]); - uint32_t port2 = atoi(args[5]); - - // using the 2nd interface only - if (myDetectorType == JUNGFRAU && numInterfaces == 1 && selInterface == 2) { - ip1 = ip2; - port1 = port2; - } + char* ip1 = args[1]; + char* ip2 = args[2]; + uint32_t port1 = atoi(args[3]); + uint32_t port2 = atoi(args[4]); // 1st interface receiver->setUDPPortNumber(port1); @@ -794,15 +786,8 @@ int slsReceiverTCPIPInterface::setup_udp(){ strcpy(mess,"failed to get mac adddress to listen to\n"); FILE_LOG(logERROR) << mess; } else { - // using the 2nd interface only - if (myDetectorType == JUNGFRAU && numInterfaces == 1 && selInterface == 2) { - strcpy(retvals[1],temp.c_str()); - FILE_LOG(logINFO) << "Receiver MAC Address: " << retvals[1]; - } - else { - strcpy(retvals[0],temp.c_str()); - FILE_LOG(logINFO) << "Receiver MAC Address: " << retvals[0]; - } + strcpy(retvals[0],temp.c_str()); + FILE_LOG(logINFO) << "Receiver MAC Address: " << retvals[0]; } } } diff --git a/slsSupportLib/include/versionAPI.h b/slsSupportLib/include/versionAPI.h index 63760ae97..fbaf24be5 100644 --- a/slsSupportLib/include/versionAPI.h +++ b/slsSupportLib/include/versionAPI.h @@ -7,5 +7,5 @@ #define APIGUI 0x190405 #define APIEIGER 0x190516 #define APICTB 0x190514 -#define APIJUNGFRAU 0x190527 +#define APIJUNGFRAU 0x190528