mirror of
https://github.com/nasa/fprime.git
synced 2025-12-10 17:47:10 -06:00
* Added led-blinker workflow for aarch64-linux platform * Update runner label * Added Tags to RPI self hosted workflows, sparse-checkout-cone-mode false * Add subtopologies to Svc/ restructing of Ref to include CDH subtopology * CDHCore Subtopology added under Svc and integrated into Ref * Health instance within CDHCore references CDHCoreConfig for queue size * Update metadata check-spelling run (push) for add-subtopologies Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com> on-behalf-of: @check-spelling <check-spelling-bot@check-spelling.dev> * Added AssertFatalAdapter Version PassiveTextLogger to Subtopology, config clarity improvements * Comms subtopology without cmdSeq created, integrated in Ref * Added cmdSeq to Comms Subtopology, integrated into Ref * Add FileHandling Subtopology, initial structure * Fixed Spelling, Flie -> File * Update metadata check-spelling run (push) for add-subtopologies Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com> on-behalf-of: @check-spelling <check-spelling-bot@check-spelling.dev> * Added working FileHandling, DataProducts subtopology, integrated into Ref * prmDb part of FileHandling, fatalHandler part of CDHCore * Update metadata check-spelling run (push) for add-subtopologies Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com> on-behalf-of: @check-spelling <check-spelling-bot@check-spelling.dev> * Update comment for clarity * Initial move to phasing components * Fixing Phasing: Adding initial Phasing for CDHCore, DataProducts, FileHandling * Renaming topologydefs.hpp, phasing fully working on all four subtopologies, needs cleaning up * Cleanup with Ports_ComPacketQueue, definition only in Comms.fpp now * Base project with all 4 subtopologies, integrated into Ref, and passing CI * Initial Commit with all Subtopologies in Svc/Subtopologies * Added posixtime back in to Ref Deployment (Accidentally Deleted) * Updates to match new subtopology structure, integrate CCSDS into Ref * Changes to CommCCSDS that go with last changes * Standardize subtopology structure and naming to PascalCase * Namespace fixe for ComFprime * CDHCore->Cdhcore for consistency * Rename CDHCore to CdhCore for consistency * Update metadata check-spelling run (pull_request_target) for add-subtopologies Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com> on-behalf-of: @check-spelling <check-spelling-bot@check-spelling.dev> * Reorder on teardown phases for Com Subtopolgies * Cpp check style fix * Fix: Add missing tearDownComponents cleanup for DataProducts dpBufferManager * Delete old comments, test using same mallocator for all subtopologies * fix: Deallocated DataProducts BufferMgr * Fix DataProducts subtopology memory cleanup * Fix: Dataproducts subtopology teardown order * Added tearDownComponents(state) * Consolidate all cleanup to teardowncomponents * Fix memory leaks: restore teardown phases * Removal of redundant teardowncomponents() * Revert "Removal of redundant teardowncomponents()" This reverts commit 29d4ff8242574f1afc1bb6aacdf5cfef4d79987d. * Fix formatting, remove commented out code * Swap hardcoded numbers to config constants in subtopologies * register_fprime_config() in config modules, isolated ComDriver into a separate config fpp file * Added explicit CMake Module Names and Depends between Subtopologies and their Configs * Fixed CCSDS case, more config constants * Added explicit depends for each subtopology config * added mallocator config, subtopology state structure * Update subtopology config names for clarity, fixes #3571 * Fix reference to dpBuffer config Constants --------- Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com> Co-authored-by: Moises Mata <moisesmata@users.noreply.github.com>
100 lines
3.2 KiB
C++
100 lines
3.2 KiB
C++
// ======================================================================
|
||
// \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::stopRateGroups();
|
||
}
|
||
|
||
/**
|
||
* \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.comCcsds.hostname = hostname;
|
||
inputs.comCcsds.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::startRateGroups(Fw::TimeInterval(1, 0)); // Program loop cycling rate groups at 1Hz
|
||
Ref::teardownTopology(inputs);
|
||
(void)printf("Exiting...\n");
|
||
return 0;
|
||
}
|