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

Manages flight phase transitions. More...

#include <PhaseManager.hpp>

Public Member Functions

 PhaseManager ()=default
void Configure (const PhaseConfig &config)
 Configure phase manager with phase definitions and transitions.
void EvaluateTransitions (const SignalRegistry< Scalar > &registry)
 Evaluate transition conditions and potentially change phase.
int32_t CurrentPhase () const
 Get current phase value.
std::string CurrentPhaseName () const
 Get current phase name.
int32_t PreviousPhase () const
 Get previous phase value (before last EvaluateTransitions).
bool PhaseChangedThisStep () const
 Check if phase changed in last EvaluateTransitions call.
bool IsConfigured () const
 Check if phase manager is configured.
std::string GetPhaseSignalPath () const
 Get phase signal path for this entity.
const PhaseConfigGetConfig () const
 Get the phase configuration.
void Reset ()
 Reset to initial phase.
void SetPhase (const std::string &phase_name)
 Force set phase (for testing or initialization).
void SetPhaseValue (int32_t value)
 Force set phase by value (for testing or initialization).

Detailed Description

template<typename Scalar>
class icarus::PhaseManager< Scalar >

Manages flight phase transitions.

The PhaseManager tracks the current phase and evaluates transition conditions after each simulation step. It follows no-cascade semantics: at most one transition fires per step.

Example usage:

PhaseConfig config;
config.definitions = {{"GROUND", 0}, {"BOOST", 1}, {"COAST", 2}};
config.initial_phase = "GROUND";
config.transitions = {
{0, 1, "Propulsion.ignition == 1"},
{1, 2, "Propulsion.fuel_mass < 0.01"}
};
pm.Configure(config);
// After each Step():
pm.EvaluateTransitions(registry);
if (pm.PhaseChangedThisStep()) {
// Handle phase change
}
Configuration for phase management.
Definition PhaseManager.hpp:40
std::vector< PhaseTransition > transitions
Transition rules.
Definition PhaseManager.hpp:48
std::map< std::string, int32_t > definitions
Phase name to integer mapping (e.g., {"GROUND": 0, "BOOST": 1, ...}).
Definition PhaseManager.hpp:42
std::string initial_phase
Initial phase name.
Definition PhaseManager.hpp:45

Constructor & Destructor Documentation

◆ PhaseManager()

template<typename Scalar>
icarus::PhaseManager< Scalar >::PhaseManager ( )
default

Member Function Documentation

◆ Configure()

template<typename Scalar>
void icarus::PhaseManager< Scalar >::Configure ( const PhaseConfig & config)
inline

Configure phase manager with phase definitions and transitions.

Parameters
configPhase configuration
Exceptions
ConfigErrorif initial phase not found or transitions invalid

◆ CurrentPhase()

template<typename Scalar>
int32_t icarus::PhaseManager< Scalar >::CurrentPhase ( ) const
inlinenodiscard

Get current phase value.

◆ CurrentPhaseName()

template<typename Scalar>
std::string icarus::PhaseManager< Scalar >::CurrentPhaseName ( ) const
inlinenodiscard

Get current phase name.

◆ EvaluateTransitions()

template<typename Scalar>
void icarus::PhaseManager< Scalar >::EvaluateTransitions ( const SignalRegistry< Scalar > & registry)
inline

Evaluate transition conditions and potentially change phase.

Called after each Step(). Evaluates all applicable transitions in order and fires the first one whose condition is true. No-cascade: at most one transition per call.

Parameters
registrySignal registry for condition evaluation

◆ GetConfig()

template<typename Scalar>
const PhaseConfig & icarus::PhaseManager< Scalar >::GetConfig ( ) const
inlinenodiscard

Get the phase configuration.

◆ GetPhaseSignalPath()

template<typename Scalar>
std::string icarus::PhaseManager< Scalar >::GetPhaseSignalPath ( ) const
inlinenodiscard

Get phase signal path for this entity.

Returns
Full signal path (e.g., "Vehicle.phase")

◆ IsConfigured()

template<typename Scalar>
bool icarus::PhaseManager< Scalar >::IsConfigured ( ) const
inlinenodiscard

Check if phase manager is configured.

◆ PhaseChangedThisStep()

template<typename Scalar>
bool icarus::PhaseManager< Scalar >::PhaseChangedThisStep ( ) const
inlinenodiscard

Check if phase changed in last EvaluateTransitions call.

◆ PreviousPhase()

template<typename Scalar>
int32_t icarus::PhaseManager< Scalar >::PreviousPhase ( ) const
inlinenodiscard

Get previous phase value (before last EvaluateTransitions).

◆ Reset()

template<typename Scalar>
void icarus::PhaseManager< Scalar >::Reset ( )
inline

Reset to initial phase.

◆ SetPhase()

template<typename Scalar>
void icarus::PhaseManager< Scalar >::SetPhase ( const std::string & phase_name)
inline

Force set phase (for testing or initialization).

Parameters
phase_namePhase name to set
Exceptions
ConfigErrorif phase name not found

◆ SetPhaseValue()

template<typename Scalar>
void icarus::PhaseManager< Scalar >::SetPhaseValue ( int32_t value)
inline

Force set phase by value (for testing or initialization).


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