From f313f602ba1d6ee765c364e8aafc554838fade95 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Thu, 20 Mar 2025 13:33:04 +0100 Subject: [PATCH] multireceiverapp: changed from pointer to destruct properly (or could have used reset() before exit but kept this for consistency with slsReceiver and slsFrameSynchronizer, added --version/ -v for slsMultiReciever and slsFramesynchronizer (in 10, could be done properly, got rid of unnecessary break after an exit in multireceiverapp, removed outdated f: command line option in slsReceiver used previously for config files, updated version print out to print binary in slsReceiver version command --- .../src/FrameSynchronizerApp.cpp | 15 ++++- slsReceiverSoftware/src/MultiReceiverApp.cpp | 61 +++++++++++-------- slsReceiverSoftware/src/Receiver.cpp | 4 +- 3 files changed, 53 insertions(+), 27 deletions(-) diff --git a/slsReceiverSoftware/src/FrameSynchronizerApp.cpp b/slsReceiverSoftware/src/FrameSynchronizerApp.cpp index 790a30b7b..b4e08b32e 100644 --- a/slsReceiverSoftware/src/FrameSynchronizerApp.cpp +++ b/slsReceiverSoftware/src/FrameSynchronizerApp.cpp @@ -10,6 +10,7 @@ #include "sls/container_utils.h" #include "sls/logger.h" #include "sls/sls_detector_defs.h" +#include "sls/versionAPI.h" #include //SIGINT #include @@ -92,7 +93,9 @@ void cleanup() { std::string getHelpMessage() { std::ostringstream os; os << "\nUsage:\n" - "./slsFrameSynchronizer [start tcp port] [num recevers] [print " + << "./slsFrameSynchronizer --version or -v\n" + << "\t - Gets the slsFrameSynchronizer version\n\n" + << "./slsFrameSynchronizer [start tcp port] [num recevers] [print " "callback headers (optional)]\n" << "\t - tcp port has to be non-zero and 16 bit\n" << "\t - print callback headers option is 0 (disabled) by default\n"; @@ -505,6 +508,16 @@ void GetDataCallback(slsDetectorDefs::sls_receiver_header &header, */ int main(int argc, char *argv[]) { + // version + if (argc == 2) { + std::string sargv1 = std::string(argv[1]); + if (sargv1 == "--version" || sargv1 == "-v") { + std::cout << "slsFrameSynchronizer Version: " << APIRECEIVER + << std::endl; + exit(EXIT_SUCCESS); + } + } + /** - set default values */ int numReceivers = 1; uint16_t startTCPPort = DEFAULT_TCP_RX_PORTNO; diff --git a/slsReceiverSoftware/src/MultiReceiverApp.cpp b/slsReceiverSoftware/src/MultiReceiverApp.cpp index 061c9a441..8d2e1c2fc 100644 --- a/slsReceiverSoftware/src/MultiReceiverApp.cpp +++ b/slsReceiverSoftware/src/MultiReceiverApp.cpp @@ -7,6 +7,7 @@ #include "sls/container_utils.h" #include "sls/logger.h" #include "sls/sls_detector_defs.h" +#include "sls/versionAPI.h" #include //SIGINT #include @@ -159,6 +160,15 @@ void GetData(slsDetectorDefs::sls_receiver_header &header, */ int main(int argc, char *argv[]) { + // version + if (argc == 2) { + std::string sargv1 = std::string(argv[1]); + if (sargv1 == "--version" || sargv1 == "-v") { + std::cout << "SLS Receiver Version: " << APIRECEIVER << std::endl; + exit(EXIT_SUCCESS); + } + } + /** - set default values */ int numReceivers = 1; uint16_t startTCPPort = DEFAULT_TCP_RX_PORTNO; @@ -241,40 +251,43 @@ int main(int argc, char *argv[]) { else if (pid == 0) { cprintf(BLUE, "Child process %d [ Tid: %ld ]\n", i, (long)gettid()); - std::unique_ptr receiver = nullptr; try { - receiver = sls::make_unique(startTCPPort + i); + uint16_t port = startTCPPort + i; + sls::Receiver receiver(port); + + /** - register callbacks. remember to set file write enable + * to 0 (using the client) if we should not write files and you + * will write data using the callbacks */ + if (withCallback) { + + /** - Call back for start acquisition */ + cprintf(BLUE, "Registering StartAcq()\n"); + receiver.registerCallBackStartAcquisition(StartAcq, + nullptr); + + /** - Call back for acquisition finished */ + cprintf(BLUE, "Registering AcquisitionFinished()\n"); + receiver.registerCallBackAcquisitionFinished( + AcquisitionFinished, nullptr); + + /* - Call back for raw data */ + cprintf(BLUE, "Registering GetData() \n"); + receiver.registerCallBackRawDataReady(GetData, nullptr); + } + + /** - as long as no Ctrl+C */ + sem_wait(&semaphore); + sem_destroy(&semaphore); + } catch (...) { LOG(sls::logINFOBLUE) << "Exiting Child Process [ Tid: " << gettid() << " ]"; throw; } - /** - register callbacks. remember to set file write enable to 0 - * (using the client) if we should not write files and you will - * write data using the callbacks */ - if (withCallback) { - /** - Call back for start acquisition */ - cprintf(BLUE, "Registering StartAcq()\n"); - receiver->registerCallBackStartAcquisition(StartAcq, nullptr); - - /** - Call back for acquisition finished */ - cprintf(BLUE, "Registering AcquisitionFinished()\n"); - receiver->registerCallBackAcquisitionFinished( - AcquisitionFinished, nullptr); - - /* - Call back for raw data */ - cprintf(BLUE, "Registering GetData() \n"); - receiver->registerCallBackRawDataReady(GetData, nullptr); - } - - /** - as long as no Ctrl+C */ - sem_wait(&semaphore); - sem_destroy(&semaphore); cprintf(BLUE, "Exiting Child Process [ Tid: %ld ]\n", (long)gettid()); exit(EXIT_SUCCESS); - break; } } diff --git a/slsReceiverSoftware/src/Receiver.cpp b/slsReceiverSoftware/src/Receiver.cpp index d2d5593d5..41a729be8 100644 --- a/slsReceiverSoftware/src/Receiver.cpp +++ b/slsReceiverSoftware/src/Receiver.cpp @@ -62,7 +62,7 @@ Receiver::Receiver(int argc, char *argv[]) : tcpipInterface(nullptr) { "\t started with privileges. \n\n"; while (c != -1) { - c = getopt_long(argc, argv, "hvf:t:u:", long_options, &option_index); + c = getopt_long(argc, argv, "hvt:u:", long_options, &option_index); // Detect the end of the options. if (c == -1) @@ -87,7 +87,7 @@ Receiver::Receiver(int argc, char *argv[]) : tcpipInterface(nullptr) { break; case 'v': - std::cout << "SLS Receiver Version: " << APIRECEIVER << std::endl; + std::cout << "slsReceiver Version: " << APIRECEIVER << std::endl; LOG(logINFOBLUE) << "Exiting [ Tid: " << gettid() << " ]"; exit(EXIT_SUCCESS);