lanyard.flight.VehicleState.1.0

Consolidated vehicle state, published by the flight controller at 50 Hz.

Full name lanyard.flight.VehicleState
Version 1.0
Kind Message
Fixed port ID 6210
Least supported transport CAN FD

Wire layout

Section Extent (bytes) Max serialized (bytes)
Message 128 49

A sealed type reports its extent as its exact serialized size; a delimited type reports the declared @extent, which bounds what a reader must be prepared to receive.

Definition

# Consolidated vehicle state, published by the flight controller at 50
# Hz.
#
# LEAST SUPPORTED TRANSPORT: CAN FD.
#
# WHY DELIMITED: this is the definition most likely to acquire new
# fields as the airframe evolves, and it is consumed by a wide
# population of nodes that are updated on their own schedules. The
# @extent below reserves wire space so that a future minor version may
# append fields; a reader built against 1.0 will decode the fields it
# knows and skip the rest instead of failing.
#
# Compare EscStatus.1.0, which makes the opposite trade: sealed,
# minimal, and frozen forever.
#
# See VehicleState.1.1 for a non-breaking extension of this definition,
# and VehicleState.2.0 for a breaking one.

uavcan.time.SynchronizedTimestamp.1.0 timestamp
# The network-synchronized moment this state estimate is valid for.
# Reusing the standard timestamp type rather than declaring a local
# uint64 is what allows a receiver to correlate this message with
# samples from any other node on the bus without knowing anything about
# this vendor's definitions.

lanyard.flight.FlightMode.1.0 mode
# The active flight mode.

uavcan.si.unit.angle.Quaternion.1.0 orientation_ned
# Vehicle attitude as a unit quaternion in the North-East-Down reference
# frame. Quaternions are used rather than Euler angles because they do
# not gimbal-lock at +/-90 degrees of pitch, which a vehicle with any
# aerobatic envelope will reach.

uavcan.si.unit.angular_velocity.Vector3.1.0 angular_velocity
# Body-frame roll, pitch, and yaw rates in radians per second.

uavcan.si.unit.velocity.Vector3.1.0 velocity_ned
# Velocity over ground in the North-East-Down frame, in meters per
# second.

bool armed
# True when the propulsion system is energized and will respond to
# throttle commands.

void7
# Padding to a byte boundary.

@extent 128 * 8
# Roughly 50 bytes are in use; the remainder is the growth budget for
# future 1.x minor versions.

Generated code

Declaration excerpts only -- the serialization bodies are omitted for length. Build the showroom target for the complete output in every language and profile.

C

/* Consolidated vehicle state, published by the flight controller at 50 */
/* Hz. */
/*  */
/* LEAST SUPPORTED TRANSPORT: CAN FD. */
/*  */
/* WHY DELIMITED: this is the definition most likely to acquire new */
/* fields as the airframe evolves, and it is consumed by a wide */
/* population of nodes that are updated on their own schedules. The */
/* @extent below reserves wire space so that a future minor version may */
/* append fields; a reader built against 1.0 will decode the fields it */
/* knows and skip the rest instead of failing. */
/*  */
/* Compare EscStatus.1.0, which makes the opposite trade: sealed, */
/* minimal, and frozen forever. */
/*  */
/* See VehicleState.1.1 for a non-breaking extension of this definition, */
/* and VehicleState.2.0 for a breaking one. */
typedef struct lanyard__flight__VehicleState {
  /* The network-synchronized moment this state estimate is valid for. */
  /* Reusing the standard timestamp type rather than declaring a local */
  /* uint64 is what allows a receiver to correlate this message with */
  /* samples from any other node on the bus without knowing anything about */
  /* this vendor's definitions. */
  uavcan__time__SynchronizedTimestamp timestamp;
  /* The active flight mode. */
  lanyard__flight__FlightMode mode;
  /* Vehicle attitude as a unit quaternion in the North-East-Down reference */
  /* frame. Quaternions are used rather than Euler angles because they do */
  /* not gimbal-lock at +/-90 degrees of pitch, which a vehicle with any */
  /* aerobatic envelope will reach. */
  uavcan__si__unit__angle__Quaternion orientation_ned;
  /* Body-frame roll, pitch, and yaw rates in radians per second. */
  uavcan__si__unit__angular_velocity__Vector3 angular_velocity;
  /* Velocity over ground in the North-East-Down frame, in meters per */
  /* second. */
  uavcan__si__unit__velocity__Vector3 velocity_ned;
  /* True when the propulsion system is energized and will respond to */
  /* throttle commands. */
  bool armed;
} lanyard__flight__VehicleState;

C++ (std)

// Consolidated vehicle state, published by the flight controller at 50
// Hz.
// 
// LEAST SUPPORTED TRANSPORT: CAN FD.
// 
// WHY DELIMITED: this is the definition most likely to acquire new
// fields as the airframe evolves, and it is consumed by a wide
// population of nodes that are updated on their own schedules. The
// @extent below reserves wire space so that a future minor version may
// append fields; a reader built against 1.0 will decode the fields it
// knows and skip the rest instead of failing.
// 
// Compare EscStatus.1.0, which makes the opposite trade: sealed,
// minimal, and frozen forever.
// 
// See VehicleState.1.1 for a non-breaking extension of this definition,
// and VehicleState.2.0 for a breaking one.
struct VehicleState_1_0 {
  // The network-synchronized moment this state estimate is valid for.
  // Reusing the standard timestamp type rather than declaring a local
  // uint64 is what allows a receiver to correlate this message with
  // samples from any other node on the bus without knowing anything about
  // this vendor's definitions.
  ::uavcan::time::SynchronizedTimestamp timestamp{};
  // The active flight mode.
  ::lanyard::flight::FlightMode mode{};
  // Vehicle attitude as a unit quaternion in the North-East-Down reference
  // frame. Quaternions are used rather than Euler angles because they do
  // not gimbal-lock at +/-90 degrees of pitch, which a vehicle with any
  // aerobatic envelope will reach.
  ::uavcan::si::unit::angle::Quaternion orientation_ned{};
  // Body-frame roll, pitch, and yaw rates in radians per second.
  ::uavcan::si::unit::angular_velocity::Vector3 angular_velocity{};
  // Velocity over ground in the North-East-Down frame, in meters per
  // second.
  ::uavcan::si::unit::velocity::Vector3 velocity_ned{};
  // True when the propulsion system is energized and will respond to
  // throttle commands.
  bool armed{};
  static constexpr const char* FULL_NAME = "lanyard.flight.VehicleState";
  static constexpr bool IS_DEPRECATED = false;
  static constexpr const char* FULL_NAME_AND_VERSION = "lanyard.flight.VehicleState.1.0";
  static constexpr std::size_t EXTENT_BYTES = 128U;
  static constexpr std::size_t SERIALIZATION_BUFFER_SIZE_BYTES = 49U;
  static constexpr bool ZOH_ALIAS_ELIGIBLE = false;
  static constexpr const char* ZOH_ALIAS_REASON = "invalid-bit-length";
  LLVMDSDL_NODISCARD inline std::int8_t serialize(std::uint8_t* buffer, std::size_t* inout_buffer_size_bytes) const {
    return VehicleState_1_0__serialize_(this, buffer, inout_buffer_size_bytes);
  }
  LLVMDSDL_NODISCARD inline std::int8_t deserialize(const std::uint8_t* buffer, std::size_t* inout_buffer_size_bytes) {
    return VehicleState_1_0__deserialize_(this, buffer, inout_buffer_size_bytes);
  }
  LLVMDSDL_NODISCARD static inline std::int8_t try_deserialize_view(const std::uint8_t* buffer, std::size_t* inout_buffer_size_bytes, const std::uint8_t** out_view_bytes) {
    return VehicleState_1_0__try_deserialize_view_(buffer, inout_buffer_size_bytes, out_view_bytes);
  }
  LLVMDSDL_NODISCARD static inline std::int8_t try_serialize_view(const std::uint8_t* view_bytes, std::size_t view_size_bytes, std::uint8_t* buffer, std::size_t* inout_buffer_size_bytes) {
    return VehicleState_1_0__try_serialize_view_(view_bytes, view_size_bytes, buffer, inout_buffer_size_bytes);
  }
};

C++ (pmr)

Polymorphic-allocator profile: variable-length fields route through std::pmr.

// Consolidated vehicle state, published by the flight controller at 50
// Hz.
// 
// LEAST SUPPORTED TRANSPORT: CAN FD.
// 
// WHY DELIMITED: this is the definition most likely to acquire new
// fields as the airframe evolves, and it is consumed by a wide
// population of nodes that are updated on their own schedules. The
// @extent below reserves wire space so that a future minor version may
// append fields; a reader built against 1.0 will decode the fields it
// knows and skip the rest instead of failing.
// 
// Compare EscStatus.1.0, which makes the opposite trade: sealed,
// minimal, and frozen forever.
// 
// See VehicleState.1.1 for a non-breaking extension of this definition,
// and VehicleState.2.0 for a breaking one.
struct VehicleState_1_0 {
  // The network-synchronized moment this state estimate is valid for.
  // Reusing the standard timestamp type rather than declaring a local
  // uint64 is what allows a receiver to correlate this message with
  // samples from any other node on the bus without knowing anything about
  // this vendor's definitions.
  ::uavcan::time::SynchronizedTimestamp timestamp{};
  // The active flight mode.
  ::lanyard::flight::FlightMode mode{};
  // Vehicle attitude as a unit quaternion in the North-East-Down reference
  // frame. Quaternions are used rather than Euler angles because they do
  // not gimbal-lock at +/-90 degrees of pitch, which a vehicle with any
  // aerobatic envelope will reach.
  ::uavcan::si::unit::angle::Quaternion orientation_ned{};
  // Body-frame roll, pitch, and yaw rates in radians per second.
  ::uavcan::si::unit::angular_velocity::Vector3 angular_velocity{};
  // Velocity over ground in the North-East-Down frame, in meters per
  // second.
  ::uavcan::si::unit::velocity::Vector3 velocity_ned{};
  // True when the propulsion system is energized and will respond to
  // throttle commands.
  bool armed{};
  ::llvmdsdl::cpp::MemoryResource* _memory_resource{::llvmdsdl::cpp::default_memory_resource()};
  VehicleState_1_0() = default;
  explicit VehicleState_1_0(::llvmdsdl::cpp::MemoryResource* memory_resource) { set_memory_resource(memory_resource); }
  void set_memory_resource(::llvmdsdl::cpp::MemoryResource* memory_resource) {
    _memory_resource = (memory_resource != nullptr) ? memory_resource : ::llvmdsdl::cpp::default_memory_resource();
    timestamp.set_memory_resource(_memory_resource);
    mode.set_memory_resource(_memory_resource);
    orientation_ned.set_memory_resource(_memory_resource);
    angular_velocity.set_memory_resource(_memory_resource);
    velocity_ned.set_memory_resource(_memory_resource);
  }
  static constexpr const char* FULL_NAME = "lanyard.flight.VehicleState";
  static constexpr bool IS_DEPRECATED = false;
  static constexpr const char* FULL_NAME_AND_VERSION = "lanyard.flight.VehicleState.1.0";
  static constexpr std::size_t EXTENT_BYTES = 128U;
  static constexpr std::size_t SERIALIZATION_BUFFER_SIZE_BYTES = 49U;
  static constexpr bool ZOH_ALIAS_ELIGIBLE = false;
  static constexpr const char* ZOH_ALIAS_REASON = "invalid-bit-length";
  LLVMDSDL_NODISCARD inline std::int8_t serialize(std::uint8_t* buffer, std::size_t* inout_buffer_size_bytes) const {
    return VehicleState_1_0__serialize_(this, buffer, inout_buffer_size_bytes, _memory_resource);
  }
  LLVMDSDL_NODISCARD inline std::int8_t deserialize(const std::uint8_t* buffer, std::size_t* inout_buffer_size_bytes) {
    return VehicleState_1_0__deserialize_(this, buffer, inout_buffer_size_bytes, _memory_resource);
  }
  LLVMDSDL_NODISCARD static inline std::int8_t try_deserialize_view(const std::uint8_t* buffer, std::size_t* inout_buffer_size_bytes, const std::uint8_t** out_view_bytes) {
    return VehicleState_1_0__try_deserialize_view_(buffer, inout_buffer_size_bytes, out_view_bytes);
  }
  LLVMDSDL_NODISCARD static inline std::int8_t try_serialize_view(const std::uint8_t* view_bytes, std::size_t view_size_bytes, std::uint8_t* buffer, std::size_t* inout_buffer_size_bytes) {
    return VehicleState_1_0__try_serialize_view_(view_bytes, view_size_bytes, buffer, inout_buffer_size_bytes);
  }
  LLVMDSDL_NODISCARD inline std::int8_t serialize(std::uint8_t* buffer, std::size_t* inout_buffer_size_bytes, ::llvmdsdl::cpp::MemoryResource* memory_resource) const {
    return VehicleState_1_0__serialize_(this, buffer, inout_buffer_size_bytes, memory_resource);
  }
  LLVMDSDL_NODISCARD inline std::int8_t deserialize(const std::uint8_t* buffer, std::size_t* inout_buffer_size_bytes, ::llvmdsdl::cpp::MemoryResource* memory_resource) {
    return VehicleState_1_0__deserialize_(this, buffer, inout_buffer_size_bytes, memory_resource);
  }
};

C++ (autosar)

AUTOSAR C++14 subset profile.

// Consolidated vehicle state, published by the flight controller at 50
// Hz.
// 
// LEAST SUPPORTED TRANSPORT: CAN FD.
// 
// WHY DELIMITED: this is the definition most likely to acquire new
// fields as the airframe evolves, and it is consumed by a wide
// population of nodes that are updated on their own schedules. The
// @extent below reserves wire space so that a future minor version may
// append fields; a reader built against 1.0 will decode the fields it
// knows and skip the rest instead of failing.
// 
// Compare EscStatus.1.0, which makes the opposite trade: sealed,
// minimal, and frozen forever.
// 
// See VehicleState.1.1 for a non-breaking extension of this definition,
// and VehicleState.2.0 for a breaking one.
struct VehicleState_1_0 {
  // The network-synchronized moment this state estimate is valid for.
  // Reusing the standard timestamp type rather than declaring a local
  // uint64 is what allows a receiver to correlate this message with
  // samples from any other node on the bus without knowing anything about
  // this vendor's definitions.
  ::uavcan::time::SynchronizedTimestamp timestamp{};
  // The active flight mode.
  ::lanyard::flight::FlightMode mode{};
  // Vehicle attitude as a unit quaternion in the North-East-Down reference
  // frame. Quaternions are used rather than Euler angles because they do
  // not gimbal-lock at +/-90 degrees of pitch, which a vehicle with any
  // aerobatic envelope will reach.
  ::uavcan::si::unit::angle::Quaternion orientation_ned{};
  // Body-frame roll, pitch, and yaw rates in radians per second.
  ::uavcan::si::unit::angular_velocity::Vector3 angular_velocity{};
  // Velocity over ground in the North-East-Down frame, in meters per
  // second.
  ::uavcan::si::unit::velocity::Vector3 velocity_ned{};
  // True when the propulsion system is energized and will respond to
  // throttle commands.
  bool armed{};
  static constexpr const char* FULL_NAME = "lanyard.flight.VehicleState";
  static constexpr bool IS_DEPRECATED = false;
  static constexpr const char* FULL_NAME_AND_VERSION = "lanyard.flight.VehicleState.1.0";
  static constexpr std::size_t EXTENT_BYTES = 128U;
  static constexpr std::size_t SERIALIZATION_BUFFER_SIZE_BYTES = 49U;
  static constexpr bool ZOH_ALIAS_ELIGIBLE = false;
  static constexpr const char* ZOH_ALIAS_REASON = "invalid-bit-length";
  LLVMDSDL_NODISCARD inline std::int8_t serialize(std::uint8_t* buffer, std::size_t* inout_buffer_size_bytes) const {
    return VehicleState_1_0__serialize_(this, buffer, inout_buffer_size_bytes);
  }
  LLVMDSDL_NODISCARD inline std::int8_t deserialize(const std::uint8_t* buffer, std::size_t* inout_buffer_size_bytes) {
    return VehicleState_1_0__deserialize_(this, buffer, inout_buffer_size_bytes);
  }
  LLVMDSDL_NODISCARD static inline std::int8_t try_deserialize_view(const std::uint8_t* buffer, std::size_t* inout_buffer_size_bytes, const std::uint8_t** out_view_bytes) {
    return VehicleState_1_0__try_deserialize_view_(buffer, inout_buffer_size_bytes, out_view_bytes);
  }
  LLVMDSDL_NODISCARD static inline std::int8_t try_serialize_view(const std::uint8_t* view_bytes, std::size_t view_size_bytes, std::uint8_t* buffer, std::size_t* inout_buffer_size_bytes) {
    return VehicleState_1_0__try_serialize_view_(view_bytes, view_size_bytes, buffer, inout_buffer_size_bytes);
  }
};

Rust (std)

/// Consolidated vehicle state, published by the flight controller at 50
/// Hz.
/// 
/// LEAST SUPPORTED TRANSPORT: CAN FD.
/// 
/// WHY DELIMITED: this is the definition most likely to acquire new
/// fields as the airframe evolves, and it is consumed by a wide
/// population of nodes that are updated on their own schedules. The
/// @extent below reserves wire space so that a future minor version may
/// append fields; a reader built against 1.0 will decode the fields it
/// knows and skip the rest instead of failing.
/// 
/// Compare EscStatus.1.0, which makes the opposite trade: sealed,
/// minimal, and frozen forever.
/// 
/// See VehicleState.1.1 for a non-breaking extension of this definition,
/// and VehicleState.2.0 for a breaking one.
#[derive(Clone, Debug, PartialEq)]
pub struct lanyard_flight_VehicleState_1_0 {
    /// The network-synchronized moment this state estimate is valid for.
    /// Reusing the standard timestamp type rather than declaring a local
    /// uint64 is what allows a receiver to correlate this message with
    /// samples from any other node on the bus without knowing anything about
    /// this vendor's definitions.
    pub timestamp: uavcan_time_SynchronizedTimestamp_1_0,
    /// The active flight mode.
    pub mode: lanyard_flight_FlightMode_1_0,
    /// Vehicle attitude as a unit quaternion in the North-East-Down reference
    /// frame. Quaternions are used rather than Euler angles because they do
    /// not gimbal-lock at +/-90 degrees of pitch, which a vehicle with any
    /// aerobatic envelope will reach.
    pub orientation_ned: uavcan_si_unit_angle_Quaternion_1_0,
    /// Body-frame roll, pitch, and yaw rates in radians per second.
    pub angular_velocity: uavcan_si_unit_angular_velocity_Vector3_1_0,
    /// Velocity over ground in the North-East-Down frame, in meters per
    /// second.
    pub velocity_ned: uavcan_si_unit_velocity_Vector3_1_0,
    /// True when the propulsion system is energized and will respond to
    /// throttle commands.
    pub armed: bool,
}

Rust (no-std)

no_std + alloc profile, as a flight-controller firmware build would use.

/// Consolidated vehicle state, published by the flight controller at 50
/// Hz.
/// 
/// LEAST SUPPORTED TRANSPORT: CAN FD.
/// 
/// WHY DELIMITED: this is the definition most likely to acquire new
/// fields as the airframe evolves, and it is consumed by a wide
/// population of nodes that are updated on their own schedules. The
/// @extent below reserves wire space so that a future minor version may
/// append fields; a reader built against 1.0 will decode the fields it
/// knows and skip the rest instead of failing.
/// 
/// Compare EscStatus.1.0, which makes the opposite trade: sealed,
/// minimal, and frozen forever.
/// 
/// See VehicleState.1.1 for a non-breaking extension of this definition,
/// and VehicleState.2.0 for a breaking one.
#[derive(Clone, Debug, PartialEq)]
pub struct lanyard_flight_VehicleState_1_0 {
    /// The network-synchronized moment this state estimate is valid for.
    /// Reusing the standard timestamp type rather than declaring a local
    /// uint64 is what allows a receiver to correlate this message with
    /// samples from any other node on the bus without knowing anything about
    /// this vendor's definitions.
    pub timestamp: uavcan_time_SynchronizedTimestamp_1_0,
    /// The active flight mode.
    pub mode: lanyard_flight_FlightMode_1_0,
    /// Vehicle attitude as a unit quaternion in the North-East-Down reference
    /// frame. Quaternions are used rather than Euler angles because they do
    /// not gimbal-lock at +/-90 degrees of pitch, which a vehicle with any
    /// aerobatic envelope will reach.
    pub orientation_ned: uavcan_si_unit_angle_Quaternion_1_0,
    /// Body-frame roll, pitch, and yaw rates in radians per second.
    pub angular_velocity: uavcan_si_unit_angular_velocity_Vector3_1_0,
    /// Velocity over ground in the North-East-Down frame, in meters per
    /// second.
    pub velocity_ned: uavcan_si_unit_velocity_Vector3_1_0,
    /// True when the propulsion system is energized and will respond to
    /// throttle commands.
    pub armed: bool,
}

Go

// Consolidated vehicle state, published by the flight controller at 50
// Hz.
// 
// LEAST SUPPORTED TRANSPORT: CAN FD.
// 
// WHY DELIMITED: this is the definition most likely to acquire new
// fields as the airframe evolves, and it is consumed by a wide
// population of nodes that are updated on their own schedules. The
// @extent below reserves wire space so that a future minor version may
// append fields; a reader built against 1.0 will decode the fields it
// knows and skip the rest instead of failing.
// 
// Compare EscStatus.1.0, which makes the opposite trade: sealed,
// minimal, and frozen forever.
// 
// See VehicleState.1.1 for a non-breaking extension of this definition,
// and VehicleState.2.0 for a breaking one.
type VehicleState_1_0 struct {
  // The network-synchronized moment this state estimate is valid for.
  // Reusing the standard timestamp type rather than declaring a local
  // uint64 is what allows a receiver to correlate this message with
  // samples from any other node on the bus without knowing anything about
  // this vendor's definitions.
  Timestamp pkg_uavcan_time.SynchronizedTimestamp_1_0
  // The active flight mode.
  Mode FlightMode_1_0
  // Vehicle attitude as a unit quaternion in the North-East-Down reference
  // frame. Quaternions are used rather than Euler angles because they do
  // not gimbal-lock at +/-90 degrees of pitch, which a vehicle with any
  // aerobatic envelope will reach.
  OrientationNed pkg_uavcan_si_unit_angle.Quaternion_1_0
  // Body-frame roll, pitch, and yaw rates in radians per second.
  AngularVelocity pkg_uavcan_si_unit_angular_velocity.Vector3_1_0
  // Velocity over ground in the North-East-Down frame, in meters per
  // second.
  VelocityNed pkg_uavcan_si_unit_velocity.Vector3_1_0
  // True when the propulsion system is energized and will respond to
  // throttle commands.
  Armed bool
}

TypeScript

// Consolidated vehicle state, published by the flight controller at 50
// Hz.
// 
// LEAST SUPPORTED TRANSPORT: CAN FD.
// 
// WHY DELIMITED: this is the definition most likely to acquire new
// fields as the airframe evolves, and it is consumed by a wide
// population of nodes that are updated on their own schedules. The
// @extent below reserves wire space so that a future minor version may
// append fields; a reader built against 1.0 will decode the fields it
// knows and skip the rest instead of failing.
// 
// Compare EscStatus.1.0, which makes the opposite trade: sealed,
// minimal, and frozen forever.
// 
// See VehicleState.1.1 for a non-breaking extension of this definition,
// and VehicleState.2.0 for a breaking one.
export interface VehicleState_1_0 {
  // The network-synchronized moment this state estimate is valid for.
  // Reusing the standard timestamp type rather than declaring a local
  // uint64 is what allows a receiver to correlate this message with
  // samples from any other node on the bus without knowing anything about
  // this vendor's definitions.
  timestamp: SynchronizedTimestamp_1_0;
  // The active flight mode.
  mode: FlightMode_1_0;
  // Vehicle attitude as a unit quaternion in the North-East-Down reference
  // frame. Quaternions are used rather than Euler angles because they do
  // not gimbal-lock at +/-90 degrees of pitch, which a vehicle with any
  // aerobatic envelope will reach.
  orientation_ned: Quaternion_1_0;
  // Body-frame roll, pitch, and yaw rates in radians per second.
  angular_velocity: Vector3_1_0__uavcan_si_unit_angular_velocity;
  // Velocity over ground in the North-East-Down frame, in meters per
  // second.
  velocity_ned: Vector3_1_0__uavcan_si_unit_velocity;
  // True when the propulsion system is energized and will respond to
  // throttle commands.
  armed: boolean;
}

Python

# Consolidated vehicle state, published by the flight controller at 50
# Hz.
# 
# LEAST SUPPORTED TRANSPORT: CAN FD.
# 
# WHY DELIMITED: this is the definition most likely to acquire new
# fields as the airframe evolves, and it is consumed by a wide
# population of nodes that are updated on their own schedules. The
# @extent below reserves wire space so that a future minor version may
# append fields; a reader built against 1.0 will decode the fields it
# knows and skip the rest instead of failing.
# 
# Compare EscStatus.1.0, which makes the opposite trade: sealed,
# minimal, and frozen forever.
# 
# See VehicleState.1.1 for a non-breaking extension of this definition,
# and VehicleState.2.0 for a breaking one.
@dataclass(slots=True)
class VehicleState_1_0:
    # The network-synchronized moment this state estimate is valid for.
    # Reusing the standard timestamp type rather than declaring a local
    # uint64 is what allows a receiver to correlate this message with
    # samples from any other node on the bus without knowing anything about
    # this vendor's definitions.
    timestamp: SynchronizedTimestamp_1_0 = field(default_factory=SynchronizedTimestamp_1_0)
    # The active flight mode.
    mode: FlightMode_1_0 = field(default_factory=FlightMode_1_0)
    # Vehicle attitude as a unit quaternion in the North-East-Down reference
    # frame. Quaternions are used rather than Euler angles because they do
    # not gimbal-lock at +/-90 degrees of pitch, which a vehicle with any
    # aerobatic envelope will reach.
    orientation_ned: Quaternion_1_0 = field(default_factory=Quaternion_1_0)
    # Body-frame roll, pitch, and yaw rates in radians per second.
    angular_velocity: Vector3_1_0 = field(default_factory=Vector3_1_0)
    # Velocity over ground in the North-East-Down frame, in meters per
    # second.
    velocity_ned: Vector3_1_0 = field(default_factory=Vector3_1_0)
    # True when the propulsion system is energized and will respond to
    # throttle commands.
    armed: bool = False

Every build recipe compiles this definition along with the rest of the namespace.