diff --git a/slsReceiverSoftware/src/MultiReceiverApp.cpp b/slsReceiverSoftware/src/MultiReceiverApp.cpp index 1d0203d54..0ec42461c 100644 --- a/slsReceiverSoftware/src/MultiReceiverApp.cpp +++ b/slsReceiverSoftware/src/MultiReceiverApp.cpp @@ -38,11 +38,12 @@ void sigInterruptHandler(int p) { sem_post(&semaphore); } * prints usage of this example program */ std::string getHelpMessage() { - return std::string( - "\n\nUsage:\n" - "./slsMultiReceiver(detReceiver) [start_tcp_port (non-zero and 16 " - "bit)] [num_receivers] [optional: 1 for call back (print frame header " - "for debugging), 0 for none (default)]\n\n"); + std::ostringstream os; + os << "\nUsage:\n" + << "./slsMultiReceiver [start tcp port] [num recevers] [call back option (optional)]\n" + << "\t - tcp port has to be non-zero and 16 bit\n" + << "\t - call back option is 0 (disabled) by default, 1 prints frame header for debugging\n"; + return os.str(); } /** @@ -159,26 +160,37 @@ int main(int argc, char *argv[]) { /** - set default values */ int numReceivers = 1; - uint16_t startTCPPort = 1954; + uint16_t startTCPPort = DEFAULT_TCP_RX_PORTNO; int withCallback = 0; sem_init(&semaphore, 1, 0); /** - get number of receivers and start tcp port from command line * arguments */ - try { - if (argc == 3 || argc == 4) { - startTCPPort = sls::StringTo(argv[1]); - if (startTCPPort == 0) { - throw; - } - numReceivers = std::stoi(argv[2]); - if (argc == 4) { - withCallback = std::stoi(argv[3]); - } - } else - throw; - } catch (...) { - throw std::runtime_error(getHelpMessage()); + if (argc > 1) { + try { + if (argc == 3 || argc == 4) { + startTCPPort = sls::StringTo(argv[1]); + if (startTCPPort == 0) { + throw std::runtime_error("Invalid start tcp port"); + } + numReceivers = std::stoi(argv[2]); + if (numReceivers > 1024) { + cprintf(RED, "Did you mix up the order of the arguments?\n%s\n", getHelpMessage().c_str()); + return EXIT_FAILURE; + } + if (numReceivers == 0) { + cprintf(RED, "Invalid number of receivers.\n%s\n", getHelpMessage().c_str()); + return EXIT_FAILURE; + } + if (argc == 4) { + withCallback = std::stoi(argv[3]); + } + } else + throw std::runtime_error("Invalid number of arguments"); + } catch (const std::exception& e) { + cprintf(RED, "Error: %s\n%s\n", e.what(), getHelpMessage().c_str()); + return EXIT_FAILURE; + } } cprintf(BLUE, "Parent Process Created [ Tid: %ld ]\n", (long)gettid());