Icarus
Vehicle Simulation as a Transformable Computational Graph, built on Vulcan and Janus
Loading...
Searching...
No Matches
icarus::SignalDescriptor Struct Reference

Descriptor for a signal on the backplane. More...

#include <Signal.hpp>

Public Member Functions

constexpr size_t size_bytes () const
 Get padded size in bytes (always 8 for wire format alignment, matching Vulcan).

Public Attributes

std::string name
 Full path: "Falcon9.Propulsion.Thrust".
SignalType type
 Data type (Double, Int32, Int64).
SignalLifecycle lifecycle
 Static or Dynamic.
std::string unit
 Physical unit: "N", "m/s", "rad".
std::string semantic
 Optional semantic hint: "boolean", "enum".
std::string description
 Human-readable description.
std::string owner_component
 Component that registered this signal.
void * data_ptr = nullptr
 Pointer to storage (for pointer-bind pattern).
SignalKind kind = SignalKind::Output
 Signal classification.
std::string wired_to
 For inputs: source signal name.
double min_value = -std::numeric_limits<double>::infinity()
double max_value = std::numeric_limits<double>::infinity()
bool is_optimizable = true
 False for Config kind.
bool is_integrable = false
 True for state values that need integration.
std::string derivative_signal
 For states: name of paired derivative signal.
std::string integrated_signal
 For derivatives: name of paired value signal.

Detailed Description

Descriptor for a signal on the backplane.

Extends Vulcan's SignalDescriptor concept with Icarus-specific fields:

  • owner_component: For collision detection during registration
  • data_ptr: For pointer-bind pattern (zero-overhead hot path)
  • description: Human-readable documentation
  • min_value/max_value: Value bounds for validation
  • is_integrable: Flag for signals requiring integration
  • kind: Interface classification (Output/Input/Parameter/Config)

Compatible with Vulcan's telemetry system while adding simulation features.

Member Function Documentation

◆ size_bytes()

size_t icarus::SignalDescriptor::size_bytes ( ) const
inlinenodiscardconstexpr

Get padded size in bytes (always 8 for wire format alignment, matching Vulcan).

Member Data Documentation

◆ data_ptr

void* icarus::SignalDescriptor::data_ptr = nullptr

Pointer to storage (for pointer-bind pattern).

◆ derivative_signal

std::string icarus::SignalDescriptor::derivative_signal

For states: name of paired derivative signal.

◆ description

std::string icarus::SignalDescriptor::description

Human-readable description.

◆ integrated_signal

std::string icarus::SignalDescriptor::integrated_signal

For derivatives: name of paired value signal.

◆ is_integrable

bool icarus::SignalDescriptor::is_integrable = false

True for state values that need integration.

◆ is_optimizable

bool icarus::SignalDescriptor::is_optimizable = true

False for Config kind.

◆ kind

SignalKind icarus::SignalDescriptor::kind = SignalKind::Output

Signal classification.

◆ lifecycle

SignalLifecycle icarus::SignalDescriptor::lifecycle

Static or Dynamic.

◆ max_value

double icarus::SignalDescriptor::max_value = std::numeric_limits<double>::infinity()

◆ min_value

double icarus::SignalDescriptor::min_value = -std::numeric_limits<double>::infinity()

◆ name

std::string icarus::SignalDescriptor::name

Full path: "Falcon9.Propulsion.Thrust".

◆ owner_component

std::string icarus::SignalDescriptor::owner_component

Component that registered this signal.

◆ semantic

std::string icarus::SignalDescriptor::semantic

Optional semantic hint: "boolean", "enum".

◆ type

SignalType icarus::SignalDescriptor::type

Data type (Double, Int32, Int64).

◆ unit

std::string icarus::SignalDescriptor::unit

Physical unit: "N", "m/s", "rad".

◆ wired_to

std::string icarus::SignalDescriptor::wired_to

For inputs: source signal name.


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