diff --git a/slsReceiverSoftware/CMakeLists.txt b/slsReceiverSoftware/CMakeLists.txt index 543ff7467..50fd483ef 100755 --- a/slsReceiverSoftware/CMakeLists.txt +++ b/slsReceiverSoftware/CMakeLists.txt @@ -13,6 +13,7 @@ set(SOURCES src/Arping.cpp src/MasterAttributes.cpp src/MasterFileUtility.cpp + src/CommandLineOptions.cpp ) set(PUBLICHEADERS diff --git a/slsReceiverSoftware/src/CommandLineOptions.cpp b/slsReceiverSoftware/src/CommandLineOptions.cpp new file mode 100644 index 000000000..70606c73a --- /dev/null +++ b/slsReceiverSoftware/src/CommandLineOptions.cpp @@ -0,0 +1,192 @@ +// SPDX-License-Identifier: LGPL-3.0-or-other +// Copyright (C) 2021 Contributors to the SLS Detector Package + +#include "CommandLineOptions.h" +#include "sls/sls_detector_defs.h" +#include "sls/versionAPI.h" +#include "sls/ToString.h" +#include "sls/logger.h" + +ParsedOptions parseCommandLine(AppType app, int argc, char* argv[]) { + CommonOptions base; + base.port = DEFAULT_TCP_RX_PORTNO; + MultiReceiverOptions multi; + FrameSyncOptions frame; + + int opt; + int option_index = 0; + + static struct option common_opts[] = { + {"version", no_argument, nullptr, 'v'}, + {"port", required_argument, nullptr, 'p'}, + {"uid", required_argument, nullptr, 'u'}, + {"help", no_argument, nullptr, 'h'}, + {nullptr, 0, nullptr, 0} + }; + + static struct option single_opts[] = { + {"rx_tcpport", required_argument, nullptr, 't'}, + {nullptr, 0, nullptr, 0} + }; + + static struct option multi_opts[] = { + {"callback", no_argument, nullptr, 'c'}, + {"num-receivers", required_argument, nullptr, 'n'}, + {nullptr, 0, nullptr, 0} + }; + + static struct option frame_sync_opts[] = { + {"print-headers", no_argument, nullptr, 'c'}, + {"num-receivers", required_argument, nullptr, 'n'}, + {nullptr, 0, nullptr, 0} + }; + + std::vector