Files
Jungfraujoch/receiver/jfjoch_lxsocket_test.cpp

40 lines
1.2 KiB
C++

// Copyright (2019-2022) Paul Scherrer Institute
// SPDX-License-Identifier: GPL-3.0-or-later
#include "LinuxSocketDevice.h"
#include "../common/NetworkAddressConvert.h"
int main(int argc, char **argv) {
DiffractionExperiment experiment(DetectorGeometry(4));
experiment.Mode(DetectorMode::Raw);
experiment.ImagesPerTrigger(1000);
Logger logger("jfjoch_lxsocket_test");
logger.Verbose(true);
if (argc != 3) {
logger.Error("Usage ./jfjoch_lxsocket_test <IP> <UDP port>");
exit(EXIT_FAILURE);
}
uint32_t ipv4 = IPv4AddressFromStr(argv[1]);
uint16_t udp = std::strtol(argv[2], nullptr, 10);
try {
LinuxSocketDevice dev(ipv4, udp, 0, 4096);
logger.Info("Mac addr {}", dev.GetMACAddress());
dev.EnableLogging(&logger);
dev.StartAction(experiment);
dev.WaitForActionComplete();
logger.Info("Bytes received {}", dev.GetBytesReceived());
JFJochProtoBuf::AcquisitionDeviceStatistics statistics;
dev.SaveStatistics(experiment, statistics);
logger.Info("{} {}", statistics.efficiency(), statistics.packets_received_per_module(0));
} catch (std::exception &e) {
logger.ErrorException(e);
exit(EXIT_FAILURE);
}
}