updated client and rxr, not tested

This commit is contained in:
2022-01-06 18:46:14 +01:00
parent 1e309b67ef
commit 79affe1ea4
7 changed files with 329 additions and 423 deletions

View File

@ -284,6 +284,8 @@ void DetectorImpl::addModule(const std::string &hostname) {
.tsquash("Inconsistent detector types.");
// for moench and ctb
modules[pos]->updateNumberOfChannels();
modules[pos]->getNumberofUDPInterfaces();
}
void DetectorImpl::updateDetectorSize() {
@ -402,31 +404,25 @@ int DetectorImpl::createReceivingDataSockets() {
}
LOG(logINFO) << "Going to create data sockets";
size_t numSockets = modules.size();
size_t numSocketsPerModule = 1;
if (shm()->detType == EIGER) {
numSocketsPerModule = 2;
size_t numUDPInterfaces =
Parallel(&Module::getNumberofUDPInterfacesFromShm, {}).squash(1);
// gotthard2 second interface is only for veto debugging (not in gui)
if (shm()->detType == GOTTHARD2) {
numUDPInterfaces = 1;
}
// gotthard2 second interface is only for veto debugging
else if (shm()->detType != GOTTHARD2) {
if (Parallel(&Module::getNumberofUDPInterfacesFromShm, {}).squash() ==
2) {
numSocketsPerModule = 2;
}
}
numSockets *= numSocketsPerModule;
size_t numSockets = modules.size() * numUDPInterfaces;
for (size_t iSocket = 0; iSocket < numSockets; ++iSocket) {
uint32_t portnum =
(modules[iSocket / numSocketsPerModule]->getClientStreamingPort());
portnum += (iSocket % numSocketsPerModule);
(modules[iSocket / numUDPInterfaces]->getClientStreamingPort());
portnum += (iSocket % numUDPInterfaces);
try {
zmqSocket.push_back(sls::make_unique<ZmqSocket>(
modules[iSocket / numSocketsPerModule]
->getClientStreamingIP()
.str()
.c_str(),
portnum));
zmqSocket.push_back(
sls::make_unique<ZmqSocket>(modules[iSocket / numUDPInterfaces]
->getClientStreamingIP()
.str()
.c_str(),
portnum));
// set high water mark
int hwm = shm()->zmqHwm;
if (hwm >= 0) {
@ -460,13 +456,19 @@ void DetectorImpl::readFrameFromReceiver() {
int nDetPixelsX = 0;
int nDetPixelsY = 0;
bool quadEnable = false;
// to flip image
bool eiger = false;
bool numInterfaces = 1;
// cannot pick up udp interfaces from zmq
int numInterfaces =
Parallel(&Module::getNumberofUDPInterfacesFromShm, {}).squash(1);
int module_ports[2] = {1, 1};
// gotthard2 second interface is veto debugging
if (shm()->detType != GOTTHARD2) {
numInterfaces = Parallel(&Module::getNumberofUDPInterfacesFromShm, {})
.squash(); // cannot pick up from zmq
}
if (shm()->detType == EIGER)
module_ports[1] = numInterfaces; // horz
else if (shm()->detType == JUNGFRAU)
module_ports[0] = numInterfaces; // vert
std::vector<bool> runningList(zmqSocket.size());
std::vector<bool> connectList(zmqSocket.size());
numZmqRunning = 0;
@ -543,9 +545,10 @@ void DetectorImpl::readFrameFromReceiver() {
nPixelsX = zHeader.npixelsx;
nPixelsY = zHeader.npixelsy;
// module shape
nX = zHeader.ndetx;
nY = zHeader.ndety;
nY *= numInterfaces;
nX = zHeader.ndetx *
module_ports[1]; // TODO: check if module_ports[1]
// needed
nY = zHeader.ndety * module_ports[0];
nDetPixelsX = nX * nPixelsX;
nDetPixelsY = nY * nPixelsY;
// det type