dev: fixed invalid arguments to slsmultireceiver (#1040)

* wasnt showing error message for invalid arguments to slsmultireceiver

* allow 0 arguments to act like an slsReceiver with start tcp port 1954 and just 1 receiver
This commit is contained in:
maliakal_d 2024-11-21 10:40:03 +01:00 committed by GitHub
parent b3d9af29fc
commit c57e835a41
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

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