Icarus
Vehicle Simulation as a Transformable Computational Graph, built on Vulcan and Janus
Loading...
Searching...
No Matches
icarus::signal::SignalRouter< Scalar > Class Template Reference

Centralized signal routing configuration. More...

#include <SignalRouter.hpp>

Public Member Functions

void AddRoute (const SignalRoute &route)
 Add a route.
void AddRoute (const std::string &input_path, const std::string &output_path, double gain=1.0)
 Add a route with parameters.
void ApplyRoutes (Backplane< Scalar > &bp)
 Apply all routes to the backplane.
std::vector< std::string > ValidateRoutes (const Backplane< Scalar > &bp) const
 Validate routes without applying.
std::vector< std::string > GetUnwiredInputs (const Backplane< Scalar > &bp) const
 Get unwired inputs after routing.
const std::vector< SignalRoute > & GetRoutes () const
 Get all routes for inspection.
void Clear ()
 Clear all routes.
std::size_t Size () const
 Get number of routes.

Detailed Description

template<typename Scalar>
class icarus::signal::SignalRouter< Scalar >

Centralized signal routing configuration.

Handles all signal wiring separately from component code. Components only declare ports; SignalRouter connects them.

Workflow:

  1. Components declare inputs/outputs during Provision
  2. Route file specifies all connections
  3. SignalRouter validates and applies routes after Provision

Example routes YAML:

routes:
- input: Rocket.EOM.total_force
output: Rocket.Forces.total_force
gain: 1.0
- input: Rocket.Gravity.position
output: Rocket.EOM.position

Member Function Documentation

◆ AddRoute() [1/2]

template<typename Scalar>
void icarus::signal::SignalRouter< Scalar >::AddRoute ( const SignalRoute & route)
inline

Add a route.

◆ AddRoute() [2/2]

template<typename Scalar>
void icarus::signal::SignalRouter< Scalar >::AddRoute ( const std::string & input_path,
const std::string & output_path,
double gain = 1.0 )
inline

Add a route with parameters.

◆ ApplyRoutes()

template<typename Scalar>
void icarus::signal::SignalRouter< Scalar >::ApplyRoutes ( Backplane< Scalar > & bp)
inline

Apply all routes to the backplane.

Called by Simulator after all components have declared their ports. Validates that all inputs and outputs exist before wiring.

Parameters
bpBackplane to wire
Exceptions
RoutingErrorif any signal is not found

◆ Clear()

template<typename Scalar>
void icarus::signal::SignalRouter< Scalar >::Clear ( )
inline

Clear all routes.

◆ GetRoutes()

template<typename Scalar>
const std::vector< SignalRoute > & icarus::signal::SignalRouter< Scalar >::GetRoutes ( ) const
inlinenodiscard

Get all routes for inspection.

◆ GetUnwiredInputs()

template<typename Scalar>
std::vector< std::string > icarus::signal::SignalRouter< Scalar >::GetUnwiredInputs ( const Backplane< Scalar > & bp) const
inlinenodiscard

Get unwired inputs after routing.

Useful for finding configuration issues.

Parameters
bpBackplane to check
Returns
List of input paths that have no route

◆ Size()

template<typename Scalar>
std::size_t icarus::signal::SignalRouter< Scalar >::Size ( ) const
inlinenodiscard

Get number of routes.

◆ ValidateRoutes()

template<typename Scalar>
std::vector< std::string > icarus::signal::SignalRouter< Scalar >::ValidateRoutes ( const Backplane< Scalar > & bp) const
inlinenodiscard

Validate routes without applying.

Parameters
bpBackplane to check against
Returns
List of errors (empty if valid)

The documentation for this class was generated from the following file: