WIP, temp fix

This commit is contained in:
2020-04-21 12:35:08 +02:00
parent c408f9807a
commit b4c31327d6
3 changed files with 43 additions and 17 deletions

View File

@ -747,8 +747,7 @@ Result<std::string> Detector::getRxHostname(const int udpInterface, Positions po
} }
void Detector::setRxHostname(const int udpInterface, const std::string &hostname, Positions pos) { void Detector::setRxHostname(const int udpInterface, const std::string &hostname, Positions pos) {
int port = 0; pimpl->configureReceiver(udpInterface, pos, hostname);
pimpl->configureReceiver(udpInterface, pos, hostname, port);
} }
void Detector::setRxHostname(const int udpInterface, const std::string &hostname, const int port, void Detector::setRxHostname(const int udpInterface, const std::string &hostname, const int port,
@ -756,7 +755,7 @@ void Detector::setRxHostname(const int udpInterface, const std::string &hostname
if (module_id == -1 && size() > 1) { if (module_id == -1 && size() > 1) {
throw sls::RuntimeError("Cannot set same rx_tcpport and rx_hostname for multiple receivers"); throw sls::RuntimeError("Cannot set same rx_tcpport and rx_hostname for multiple receivers");
} }
pimpl->configureReceiver(udpInterface, {module_id}, hostname, port); pimpl->configureReceiver(udpInterface, module_id, hostname, port);
} }
Result<int> Detector::getRxPort(const int udpInterface, Positions pos) const { Result<int> Detector::getRxPort(const int udpInterface, Positions pos) const {

View File

@ -438,7 +438,7 @@ void DetectorImpl::removeReceivers(const int udpInterface) {
} }
void DetectorImpl::configureReceiver(const int udpInterface, Positions pos, void DetectorImpl::configureReceiver(const int udpInterface, Positions pos,
const std::string &hostname, const int port) { const std::string &hostname) {
if (Parallel(&Module::getRunStatus, pos).squash(defs::ERROR) == defs::RUNNING) { if (Parallel(&Module::getRunStatus, pos).squash(defs::ERROR) == defs::RUNNING) {
LOG(logWARNING) << "Acquisition already running, Stopping it."; LOG(logWARNING) << "Acquisition already running, Stopping it.";
@ -447,25 +447,50 @@ void DetectorImpl::configureReceiver(const int udpInterface, Positions pos,
if (!isReceiverInitialized(udpInterface)) { if (!isReceiverInitialized(udpInterface)) {
initReceiver(udpInterface); initReceiver(udpInterface);
} }
auto t = Parallel(&Module::getReceiverParameters, pos);
if (udpInterface == 1) { if (udpInterface == 1) {
if (port != 0) {
Parallel1(&Receiver::setTCPPort, pos, {}, port);
}
Parallel1(&Receiver::setHostname, pos, {}, hostname); Parallel1(&Receiver::setHostname, pos, {}, hostname);
auto t = Parallel(&Module::getReceiverParameters, pos).squash(); for (int iMod = 0; iMod < size(); ++iMod) {
auto m = Parallel1(&Receiver::configure, pos, {}, t).squash(); auto m = receivers[iMod][0]->configure(t[iMod]);
if (m != 0) { if (m != 0) {
Parallel(&Module::setDestinationUDPMAC, pos, m); detectors[iMod]->setDestinationUDPMAC(m);
}
} }
} else { } else {
if (port != 0) {
Parallel2(&Receiver::setTCPPort, pos, {}, port);
}
Parallel2(&Receiver::setHostname, pos, {}, hostname); Parallel2(&Receiver::setHostname, pos, {}, hostname);
auto t = Parallel(&Module::getReceiverParameters, pos).squash(); for (int iMod = 0; iMod < size(); ++iMod) {
auto m = Parallel2(&Receiver::configure, pos, {}, t).squash(); auto m = receivers2[iMod][0]->configure(t[iMod]);
if (m != 0) {
detectors[iMod]->setDestinationUDPMAC2(m);
}
}
}
}
void DetectorImpl::configureReceiver(const int udpInterface, int module_id,
const std::string &hostname, const int port) {
if (Parallel(&Module::getRunStatus, {}).squash(defs::ERROR) == defs::RUNNING) {
LOG(logWARNING) << "Acquisition already running, Stopping it.";
Parallel(&Module::stopAcquisition, {});
}
if (!isReceiverInitialized(udpInterface)) {
initReceiver(udpInterface);
}
auto t = detectors[module_id]->getReceiverParameters();
if (udpInterface == 1) {
receivers[module_id][0]->setTCPPort(port);
receivers[module_id][0]->setHostname(hostname);
auto m = receivers[module_id][0]->configure(t);
if (m != 0) { if (m != 0) {
Parallel(&Module::setDestinationUDPMAC2, pos, m); detectors[module_id]->setDestinationUDPMAC(m);
}
} else {
receivers2[module_id][0]->setTCPPort(port);
receivers2[module_id][0]->setHostname(hostname);
auto m = receivers2[module_id][0]->configure(t);
if (m != 0) {
detectors[module_id]->setDestinationUDPMAC2(m);
} }
} }
} }

View File

@ -664,6 +664,8 @@ class DetectorImpl : public virtual slsDetectorDefs {
bool isReceiverInitialized(const int udpInterface); bool isReceiverInitialized(const int udpInterface);
void removeReceivers(const int udpInterface); void removeReceivers(const int udpInterface);
void configureReceiver(const int udpInterface, Positions pos, void configureReceiver(const int udpInterface, Positions pos,
const std::string &hostname);
void configureReceiver(const int udpInterface, int module_id,
const std::string &hostname, const int port); const std::string &hostname, const int port);
/** Gets the total number of detectors */ /** Gets the total number of detectors */