fprime/Ref/Main.cpp
Rob Bocchino da11b3a7c5
Improve warning flags in builds (#3319)
* Update fpp version

Add more warnings to FppTest

* Update fpp version

Add warnings to build

* Enable warnings in unit tests

Fix warnings

* Clean up test code

* Update fpp version

Remove workarounds in unit test builds

* Update fpp version

Fix warnings

* Revise DpManager tests

Remove conversion warnings

* Revise DpWriter tests

Remove conversion warnings

* Refactor Hash

Provide a size type to remove dependencies on NATIVE_INT_TYPE,
which is going away.

* Revise top-level CMakeLists.txt

* Fix warnings in Ref

* Fix warnings in Ref, RPI

* Revise warning flags

* Revise code to eliminate warnings

* Revise code to fix warnings

* Revise code to fix warnings

* Revise code to fix warnings

* Revise Serializable.cpp

* Revise Serializable.cpp

* Revise warning flags

* Fix warnings in test code

* Fix warnings

* Fix warnings

* Fix warnings and static analysis errors

* Fix warnings

* Fix warnings

* Fix warnings

* Fix warnings

* Fix warnings

* Turn off -Wshadow for unit tests

* Revise comments

* Fix warnings

* Fix warnings

* Fix warnings

* Fix warnings

* Fix warnings

* Fix warnings

* Fix warnings

* Fix warnings

* Fix warnings

* Enable -Wshadow for main ut builds

* Revise compile options

* Remove commented-out code

* Update STest

Eliminate warnings

* Fix warning

* Fix warnings

* Fix warning

* Fix warning

* Fix warning

* Revise comments

* Revise static cast expression

* Cast return type to void

* Remove unneeded cast

* Fix warnings that appear on the F Prime dev machine

* Fix more warnings

* Enable more warnings

* Update fpp version

* Remove commented-out compiler flags

* Enable warning flag in CmdDispatcher

* Disable -Wconversion in gtest

* Revise compiler warning flags

* Revise compiler options

* Revise compiler flags

* Revise compiler flags

* Revise compiler flags

* Revise compiler flags

* Revise Buffer

* Fix comments

* Fix warning flags

* Fix compiler warning flags

* Fix compiler warnings

* Fix compiler warning flags

* Fix compiler warnings

* Fix compiler warning flags

* Fix compiler warning flags

* Fix compiler warning flags

* Fix compiler warning flags

* Fix compiler warning flags

* Fix compiler warning flags

* Fix compiler warning flags

* Fix compiler warning flags

* Revise compiler warning flags

* Restore deleted test

* Fixing UT_TARGET collision

---------

Co-authored-by: Robert L Bocchino <bocchino@fprime-fsw-0.jpl.nasa.gov>
Co-authored-by: Michael D Starch <Michael.D.Starch@jpl.nasa.gov>
Co-authored-by: M Starch <LeStarch@googlemail.com>
2025-03-12 12:04:43 -07:00

100 lines
3.2 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// ======================================================================
// \title Main.cpp
// \author mstarch
// \brief main program for reference application. Intended for CLI-based systems (Linux, macOS)
//
// \copyright
// Copyright 2009-2022, by the California Institute of Technology.
// ALL RIGHTS RESERVED. United States Government Sponsorship
// acknowledged.
// ======================================================================
// Used to access topology functions
#include <Ref/Top/RefTopology.hpp>
// Used for signal handling shutdown
#include <signal.h>
// Used for command line argument processing
#include <getopt.h>
// Used for printf functions
#include <cstdlib>
// Used to get the Os::Console
#include <Os/Os.hpp>
/**
* \brief print commandline help message
*
* This will print a command line help message including the available command line arguments.
*
* @param app: name of application
*/
void print_usage(const char* app) {
(void)printf("Usage: ./%s [options]\n-a\thostname/IP address\n-p\tport_number\n", app);
}
/**
* \brief shutdown topology cycling on signal
*
* The reference topology allows for a simulated cycling of the rate groups. This simulated cycling needs to be stopped
* in order for the program to shutdown. This is done via handling signals such that it is performed via Ctrl-C
*
* @param signum
*/
static void signalHandler(int signum) {
Ref::stopSimulatedCycle();
}
/**
* \brief execute the program
*
* This F´ program is designed to run in standard environments (e.g. Linux/macOs running on a laptop). Thus it uses
* command line inputs to specify how to connect.
*
* @param argc: argument count supplied to program
* @param argv: argument values supplied to program
* @return: 0 on success, something else on failure
*/
int main(int argc, char* argv[]) {
Os::init();
U16 port_number = 0;
I32 option = 0;
char* hostname = nullptr;
// Loop while reading the getopt supplied options
while ((option = getopt(argc, argv, "hp:a:")) != -1) {
switch (option) {
// Handle the -a argument for address/hostname
case 'a':
hostname = optarg;
break;
// Handle the -p port number argument
case 'p':
port_number = static_cast<U16>(atoi(optarg));
break;
// Cascade intended: help output
case 'h':
// Cascade intended: help output
case '?':
// Default case: output help and exit
default:
print_usage(argv[0]);
return (option == 'h') ? 0 : 1;
}
}
// Object for communicating state to the reference topology
Ref::TopologyState inputs;
inputs.hostname = hostname;
inputs.port = port_number;
// Setup program shutdown via Ctrl-C
signal(SIGINT, signalHandler);
signal(SIGTERM, signalHandler);
(void)printf("Hit Ctrl-C to quit\n");
// Setup, cycle, and teardown topology
Ref::setupTopology(inputs);
Ref::startSimulatedCycle(Fw::TimeInterval(1, 0)); // Program loop cycling rate groups at 1Hz
Ref::teardownTopology(inputs);
(void)printf("Exiting...\n");
return 0;
}