Vulcan
Aerospace Engineering Utilities Built on Janus
Loading...
Searching...
No Matches
vulcan::io::TelemetrySchema Class Reference

Telemetry schema builder and container. More...

#include <TelemetrySchema.hpp>

Public Member Functions

 TelemetrySchema ()=default
TelemetrySchemaadd_double (const std::string &name, SignalLifecycle lifecycle=SignalLifecycle::Dynamic, const std::string &unit="")
 Add a double signal.
TelemetrySchemaadd_int32 (const std::string &name, SignalLifecycle lifecycle=SignalLifecycle::Dynamic, const std::string &semantic="")
 Add an int32 signal.
TelemetrySchemaadd_int64 (const std::string &name, SignalLifecycle lifecycle=SignalLifecycle::Dynamic)
 Add an int64 signal.
TelemetrySchemaadd_vec3 (const std::string &name, SignalLifecycle lifecycle=SignalLifecycle::Dynamic, const std::string &unit="")
 Add a 3-component vector (expands to name.x, name.y, name.z).
TelemetrySchemaadd_quat (const std::string &name, SignalLifecycle lifecycle=SignalLifecycle::Dynamic)
 Add a quaternion (expands to name.w, name.x, name.y, name.z).
const std::vector< SignalDescriptor > & signals () const
 Get all signals.
std::vector< SignalDescriptordynamic_signals () const
 Get only dynamic signals.
std::vector< SignalDescriptorstatic_signals () const
 Get only static signals.
const SignalDescriptorsignal (const std::string &name) const
 Get signal by name.
bool has_signal (const std::string &name) const
 Check if signal exists.
size_t offset (const std::string &name) const
 Get offset for signal.
size_t index (const std::string &name) const
 Get index for signal.
size_t frame_size_bytes () const
 Total frame size in bytes (all signals).
size_t dynamic_frame_size_bytes () const
 Dynamic signals frame size in bytes (for streaming).
size_t static_frame_size_bytes () const
 Static signals frame size in bytes.
size_t signal_count () const
 Number of signals.
std::vector< std::string > signal_names () const
 Get all signal names.
void validate () const
 Validate schema (throws on errors).
std::string to_json () const
 Serialize to JSON string.

Static Public Member Functions

static TelemetrySchema from_json (const std::string &json)
 Deserialize from JSON string (basic parser).

Detailed Description

Telemetry schema builder and container.

Defines the structure of telemetry frames with named scalar signals. All signals occupy 8-byte aligned slots for wire format compatibility.

Example:

schema.add_vec3("position", SignalLifecycle::Dynamic, "m");
schema.add_int32("gnc.phase", SignalLifecycle::Dynamic, "enum");
schema.add_double("mass.dry_mass", SignalLifecycle::Static, "kg");
// Resulting signals: position.x, position.y, position.z, gnc.phase,
mass.dry_mass
TelemetrySchema & add_int32(const std::string &name, SignalLifecycle lifecycle=SignalLifecycle::Dynamic, const std::string &semantic="")
Add an int32 signal.
Definition TelemetrySchema.hpp:72
TelemetrySchema & add_double(const std::string &name, SignalLifecycle lifecycle=SignalLifecycle::Dynamic, const std::string &unit="")
Add a double signal.
Definition TelemetrySchema.hpp:57
TelemetrySchema & add_vec3(const std::string &name, SignalLifecycle lifecycle=SignalLifecycle::Dynamic, const std::string &unit="")
Add a 3-component vector (expands to name.x, name.y, name.z).
Definition TelemetrySchema.hpp:104
@ Static
Constant after init, sent in schema handshake only.
Definition Signal.hpp:26
@ Dynamic
Updated each step, included in streaming telemetry.
Definition Signal.hpp:27
Definition MassProperties.hpp:12

Constructor & Destructor Documentation

◆ TelemetrySchema()

vulcan::io::TelemetrySchema::TelemetrySchema ( )
default

Member Function Documentation

◆ add_double()

TelemetrySchema & vulcan::io::TelemetrySchema::add_double ( const std::string & name,
SignalLifecycle lifecycle = SignalLifecycle::Dynamic,
const std::string & unit = "" )
inline

Add a double signal.

Parameters
nameSignal name
lifecycleStatic or Dynamic
unitPhysical unit
Returns
Reference to this for chaining

◆ add_int32()

TelemetrySchema & vulcan::io::TelemetrySchema::add_int32 ( const std::string & name,
SignalLifecycle lifecycle = SignalLifecycle::Dynamic,
const std::string & semantic = "" )
inline

Add an int32 signal.

Parameters
nameSignal name
lifecycleStatic or Dynamic
semanticOptional semantic hint ("boolean", "enum")
Returns
Reference to this for chaining

◆ add_int64()

TelemetrySchema & vulcan::io::TelemetrySchema::add_int64 ( const std::string & name,
SignalLifecycle lifecycle = SignalLifecycle::Dynamic )
inline

Add an int64 signal.

Parameters
nameSignal name
lifecycleStatic or Dynamic
Returns
Reference to this for chaining

◆ add_quat()

TelemetrySchema & vulcan::io::TelemetrySchema::add_quat ( const std::string & name,
SignalLifecycle lifecycle = SignalLifecycle::Dynamic )
inline

Add a quaternion (expands to name.w, name.x, name.y, name.z).

Parameters
nameBase signal name
lifecycleStatic or Dynamic
Returns
Reference to this for chaining

◆ add_vec3()

TelemetrySchema & vulcan::io::TelemetrySchema::add_vec3 ( const std::string & name,
SignalLifecycle lifecycle = SignalLifecycle::Dynamic,
const std::string & unit = "" )
inline

Add a 3-component vector (expands to name.x, name.y, name.z).

Parameters
nameBase signal name
lifecycleStatic or Dynamic
unitPhysical unit
Returns
Reference to this for chaining

◆ dynamic_frame_size_bytes()

size_t vulcan::io::TelemetrySchema::dynamic_frame_size_bytes ( ) const
inline

Dynamic signals frame size in bytes (for streaming).

◆ dynamic_signals()

std::vector< SignalDescriptor > vulcan::io::TelemetrySchema::dynamic_signals ( ) const
inline

Get only dynamic signals.

◆ frame_size_bytes()

size_t vulcan::io::TelemetrySchema::frame_size_bytes ( ) const
inline

Total frame size in bytes (all signals).

◆ from_json()

TelemetrySchema vulcan::io::TelemetrySchema::from_json ( const std::string & json)
static

Deserialize from JSON string (basic parser).

◆ has_signal()

bool vulcan::io::TelemetrySchema::has_signal ( const std::string & name) const
inline

Check if signal exists.

◆ index()

size_t vulcan::io::TelemetrySchema::index ( const std::string & name) const
inline

Get index for signal.

◆ offset()

size_t vulcan::io::TelemetrySchema::offset ( const std::string & name) const
inline

Get offset for signal.

◆ signal()

const SignalDescriptor & vulcan::io::TelemetrySchema::signal ( const std::string & name) const
inline

Get signal by name.

◆ signal_count()

size_t vulcan::io::TelemetrySchema::signal_count ( ) const
inline

Number of signals.

◆ signal_names()

std::vector< std::string > vulcan::io::TelemetrySchema::signal_names ( ) const
inline

Get all signal names.

◆ signals()

const std::vector< SignalDescriptor > & vulcan::io::TelemetrySchema::signals ( ) const
inline

Get all signals.

◆ static_frame_size_bytes()

size_t vulcan::io::TelemetrySchema::static_frame_size_bytes ( ) const
inline

Static signals frame size in bytes.

◆ static_signals()

std::vector< SignalDescriptor > vulcan::io::TelemetrySchema::static_signals ( ) const
inline

Get only static signals.

◆ to_json()

std::string vulcan::io::TelemetrySchema::to_json ( ) const
inline

Serialize to JSON string.

◆ validate()

void vulcan::io::TelemetrySchema::validate ( ) const
inline

Validate schema (throws on errors).


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