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

Binary frame serializer for Hermes real-time streaming. More...

#include <FrameSerializer.hpp>

Public Member Functions

 FrameSerializer (const TelemetrySchema &schema)
 Construct serializer for a schema.
std::span< const std::byte > serialize (const Frame &frame)
 Serialize frame (time + dynamic signals) to binary.
std::span< const std::byte > serialize_statics (const Frame &frame)
 Serialize static signals only (for schema handshake).
void deserialize (std::span< const std::byte > data, Frame &frame)
 Deserialize binary to frame (time + dynamic signals).
void deserialize_statics (std::span< const std::byte > data, Frame &frame)
 Deserialize static signals.
size_t dynamic_size_bytes () const
 Get dynamic frame size in bytes (time + dynamic signals).
size_t static_size_bytes () const
 Get static frame size in bytes.
const TelemetrySchemaschema () const
 Get schema reference.

Detailed Description

Binary frame serializer for Hermes real-time streaming.

Serializes Frame data to a compact binary format suitable for lock-free buffer transfer and UDP streaming. Dynamic signals are serialized for every frame; static signals are sent once during schema negotiation.

Binary format (little-endian):

+------------------+------------------------+
| time (f64, 8B) | signal_0 ... signal_N |
+------------------+------------------------+
Definition Epoch.hpp:12

Example:

FrameSerializer serializer(schema);
Frame frame(schema);
frame.set_time(0.001);
frame.set("position", pos);
// For 60Hz UDP telemetry (dynamic signals only)
auto bytes = serializer.serialize(frame);
udp_socket.send(bytes.data(), bytes.size());
// For schema handshake (static signals only)
auto statics = serializer.serialize_statics(frame);
const TelemetrySchema & schema() const
Get schema reference.
Definition FrameSerializer.hpp:165
FrameSerializer(const TelemetrySchema &schema)
Construct serializer for a schema.
Definition FrameSerializer.hpp:60
Single timestep of telemetry data.
Definition Frame.hpp:39

Constructor & Destructor Documentation

◆ FrameSerializer()

vulcan::io::FrameSerializer::FrameSerializer ( const TelemetrySchema & schema)
inlineexplicit

Construct serializer for a schema.

Parameters
schemaTelemetry schema (must outlive serializer)

Member Function Documentation

◆ deserialize()

void vulcan::io::FrameSerializer::deserialize ( std::span< const std::byte > data,
Frame & frame )
inline

Deserialize binary to frame (time + dynamic signals).

Parameters
dataBinary data (from serialize())
frameTarget frame to populate

◆ deserialize_statics()

void vulcan::io::FrameSerializer::deserialize_statics ( std::span< const std::byte > data,
Frame & frame )
inline

Deserialize static signals.

Parameters
dataBinary data (from serialize_statics())
frameTarget frame to populate

◆ dynamic_size_bytes()

size_t vulcan::io::FrameSerializer::dynamic_size_bytes ( ) const
inline

Get dynamic frame size in bytes (time + dynamic signals).

◆ schema()

const TelemetrySchema & vulcan::io::FrameSerializer::schema ( ) const
inline

Get schema reference.

◆ serialize()

std::span< const std::byte > vulcan::io::FrameSerializer::serialize ( const Frame & frame)
inline

Serialize frame (time + dynamic signals) to binary.

Returns a span pointing to an internal buffer. The span is valid until the next call to serialize() or serialize_statics().

Parameters
frameSource frame
Returns
Span of serialized bytes (little-endian)

◆ serialize_statics()

std::span< const std::byte > vulcan::io::FrameSerializer::serialize_statics ( const Frame & frame)
inline

Serialize static signals only (for schema handshake).

Parameters
frameSource frame
Returns
Span of serialized bytes

◆ static_size_bytes()

size_t vulcan::io::FrameSerializer::static_size_bytes ( ) const
inline

Get static frame size in bytes.


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