diff --git a/slsDetectorServers/jungfrauDetectorServer/bin/jungfrauDetectorServer_developer b/slsDetectorServers/jungfrauDetectorServer/bin/jungfrauDetectorServer_developer index c7f4d152d..8dfd1b5d2 100755 Binary files a/slsDetectorServers/jungfrauDetectorServer/bin/jungfrauDetectorServer_developer and b/slsDetectorServers/jungfrauDetectorServer/bin/jungfrauDetectorServer_developer differ diff --git a/slsDetectorServers/jungfrauDetectorServer/slsDetectorFunctionList.c b/slsDetectorServers/jungfrauDetectorServer/slsDetectorFunctionList.c index 3a67be07c..64e949bda 100644 --- a/slsDetectorServers/jungfrauDetectorServer/slsDetectorFunctionList.c +++ b/slsDetectorServers/jungfrauDetectorServer/slsDetectorFunctionList.c @@ -1331,6 +1331,16 @@ int getNumberofUDPInterfaces() { return ((bus_r(CONFIG_REG) & CONFIG_OPRTN_MDE_2_X_10GbE_MSK) ? 2 : 1); } +int getNumberofDestinations() { + return (((bus_r(CONTROL_REG) & CONTROL_RX_ADDTNL_ENDPTS_NUM_MSK) >> CONTROL_RX_ADDTNL_ENDPTS_NUM_OFST) + 1); +} + +void setNumberofDestinations(int value) { + LOG(logINFO, ("Setting number of entries to %d\n", value)); + --value; + bus_w(CONTROL_REG, bus_r(CONTROL_REG) | ((value << CONTROL_RX_ADDTNL_ENDPTS_NUM_OFST) & CONTROL_RX_ADDTNL_ENDPTS_NUM_MSK)); +} + void selectPrimaryInterface(int val) { uint32_t addr = CONFIG_REG; @@ -1522,7 +1532,7 @@ int configureMAC() { } } } - + setNumberofDestinations(numUdpDestinations); setNumberofUDPInterfaces(numInterfaces); selectPrimaryInterface(selInterface); diff --git a/slsDetectorServers/slsDetectorServer/include/slsDetectorFunctionList.h b/slsDetectorServers/slsDetectorServer/include/slsDetectorFunctionList.h index e793fbf35..f0b055760 100644 --- a/slsDetectorServers/slsDetectorServer/include/slsDetectorFunctionList.h +++ b/slsDetectorServers/slsDetectorServer/include/slsDetectorFunctionList.h @@ -386,6 +386,8 @@ void setNumberofUDPInterfaces(int val); int getNumberofUDPInterfaces(); #endif #ifdef JUNGFRAUD +int getNumberofDestinations(); +void setNumberofDestinations(int value); void selectPrimaryInterface(int val); int getPrimaryInterface(); void setupHeader(int iRxEntry, enum interfaceType type, uint32_t destip, diff --git a/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c b/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c index c54ba3802..4438cd761 100644 --- a/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c +++ b/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c @@ -9143,6 +9143,15 @@ int get_num_dest_list(int file_des) { functionNotImplemented(); #else retval = numUdpDestinations; +#ifdef JUNGFRAUD + if (getNumberofDestinations() != retval) { + ret = FAIL; + sprintf( + mess, + "Could not get number of udp destinations. (server reads %d, fpga reads %d).\n", getNumberofDestinations(), retval); + LOG(logERROR, (mess)); + } +#endif #endif LOG(logDEBUG1, ("numUdpDestinations retval: 0x%x\n", retval)); return Server_SendResult(file_des, INT32, &retval, sizeof(retval));