lanyard.nav.GlobalPosition.1.0

Fused navigation solution published by the GNSS/INS estimator at 10 Hz.

Full name lanyard.nav.GlobalPosition
Version 1.0
Kind Message
Fixed port ID 6220
Least supported transport CAN FD

Wire layout

Section Extent (bytes) Max serialized (bytes)
Message 96 43

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

# Fused navigation solution published by the GNSS/INS estimator at 10
# Hz.
#
# LEAST SUPPORTED TRANSPORT: CAN FD.

uavcan.time.SynchronizedTimestamp.1.0 timestamp
# The network-synchronized moment this solution is valid for.

int32 latitude_deg_1e7
# WGS 84 latitude in units of 1e-7 degrees.

int32 longitude_deg_1e7
# WGS 84 longitude in units of 1e-7 degrees.

uavcan.si.unit.length.Scalar.1.0 altitude_amsl
# Altitude above mean sea level, in meters.

uavcan.si.unit.length.Scalar.1.0 altitude_ellipsoid
# Altitude above the WGS 84 reference ellipsoid, in meters. Both
# altitudes are carried because the geoid separation is not constant and
# consumers differ in which datum they expect.

float16[9] position_covariance
# Row-major 3x3 position covariance in the North-East-Down frame, in
# meters squared.
#
# A fixed-size array, unlike the variable-length arrays elsewhere in
# this namespace: the length is part of the type, so nothing is
# transmitted to describe it and generated code exposes it as a plain
# nine-element array rather than a length-carrying container. float16 is
# adequate here because a covariance is only ever consumed as an
# order-of-magnitude confidence estimate.

uint8 satellites_visible
# Number of satellites contributing to the solution.

uint4 fix_type
# Quality of the GNSS fix; one of the constants below.

uint4 FIX_NONE = 0
# No position solution.

uint4 FIX_2D = 1
# Horizontal position only; altitude is dead-reckoned.

uint4 FIX_3D = 2
# Full three-dimensional position solution.

uint4 FIX_DGPS = 3
# Three-dimensional solution with differential corrections applied.

uint4 FIX_RTK_FLOAT = 4
# Real-time kinematic solution with an unresolved carrier phase
# ambiguity, decimeter class.

uint4 FIX_RTK_FIXED = 5
# Real-time kinematic solution with a fixed carrier phase ambiguity,
# centimeter class.

void4
# Padding to a byte boundary.

@assert _offset_.max <= 63 * 8
# Must remain a single CAN FD frame; the covariance array is the field
# most likely to break this.

@print _offset_.max / 8
# Compile-time diagnostic: prints the worst-case serialized size of this
# definition, in bytes, while the namespace is being compiled. @print is
# evaluated by the frontend and contributes nothing to the generated
# code -- it is a build-log message, useful when tuning a layout against
# a frame budget.

@extent 96 * 8

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

/* Fused navigation solution published by the GNSS/INS estimator at 10 */
/* Hz. */
/*  */
/* LEAST SUPPORTED TRANSPORT: CAN FD. */
typedef struct lanyard__nav__GlobalPosition {
  /* The network-synchronized moment this solution is valid for. */
  uavcan__time__SynchronizedTimestamp timestamp;
  /* WGS 84 latitude in units of 1e-7 degrees. */
  int32_t latitude_deg_1e7;
  /* WGS 84 longitude in units of 1e-7 degrees. */
  int32_t longitude_deg_1e7;
  /* Altitude above mean sea level, in meters. */
  uavcan__si__unit__length__Scalar altitude_amsl;
  /* Altitude above the WGS 84 reference ellipsoid, in meters. Both */
  /* altitudes are carried because the geoid separation is not constant and */
  /* consumers differ in which datum they expect. */
  uavcan__si__unit__length__Scalar altitude_ellipsoid;
  /* Row-major 3x3 position covariance in the North-East-Down frame, in */
  /* meters squared. */
  /*  */
  /* A fixed-size array, unlike the variable-length arrays elsewhere in */
  /* this namespace: the length is part of the type, so nothing is */
  /* transmitted to describe it and generated code exposes it as a plain */
  /* nine-element array rather than a length-carrying container. float16 is */
  /* adequate here because a covariance is only ever consumed as an */
  /* order-of-magnitude confidence estimate. */
  float position_covariance[9U];
  /* Number of satellites contributing to the solution. */
  uint8_t satellites_visible;
  /* Quality of the GNSS fix; one of the constants below. */
  uint8_t fix_type;
} lanyard__nav__GlobalPosition;

C++ (std)

// Fused navigation solution published by the GNSS/INS estimator at 10
// Hz.
// 
// LEAST SUPPORTED TRANSPORT: CAN FD.
struct GlobalPosition {
  // The network-synchronized moment this solution is valid for.
  ::uavcan::time::SynchronizedTimestamp timestamp{};
  // WGS 84 latitude in units of 1e-7 degrees.
  std::int32_t latitude_deg_1e7{};
  // WGS 84 longitude in units of 1e-7 degrees.
  std::int32_t longitude_deg_1e7{};
  // Altitude above mean sea level, in meters.
  ::uavcan::si::unit::length::Scalar altitude_amsl{};
  // Altitude above the WGS 84 reference ellipsoid, in meters. Both
  // altitudes are carried because the geoid separation is not constant and
  // consumers differ in which datum they expect.
  ::uavcan::si::unit::length::Scalar altitude_ellipsoid{};
  // Row-major 3x3 position covariance in the North-East-Down frame, in
  // meters squared.
  // 
  // A fixed-size array, unlike the variable-length arrays elsewhere in
  // this namespace: the length is part of the type, so nothing is
  // transmitted to describe it and generated code exposes it as a plain
  // nine-element array rather than a length-carrying container. float16 is
  // adequate here because a covariance is only ever consumed as an
  // order-of-magnitude confidence estimate.
  std::array<float, 9U> position_covariance{};
  // Number of satellites contributing to the solution.
  std::uint8_t satellites_visible{};
  // Quality of the GNSS fix; one of the constants below.
  std::uint8_t fix_type{};
  static constexpr const char* FULL_NAME = "lanyard.nav.GlobalPosition";
  static constexpr bool IS_DEPRECATED = false;
  static constexpr const char* FULL_NAME_AND_VERSION = "lanyard.nav.GlobalPosition.1.0";
  static constexpr std::size_t EXTENT_BYTES = 96U;
  static constexpr std::size_t SERIALIZATION_BUFFER_SIZE_BYTES = 43U;
  static constexpr bool ZOH_ALIAS_ELIGIBLE = false;
  static constexpr const char* ZOH_ALIAS_REASON = "invalid-bit-length";
  // No position solution.
  static constexpr auto FIX_NONE = 0;
  // Horizontal position only; altitude is dead-reckoned.
  static constexpr auto FIX_2D = 1;
  // Full three-dimensional position solution.
  static constexpr auto FIX_3D = 2;
  // Three-dimensional solution with differential corrections applied.
  static constexpr auto FIX_DGPS = 3;
  // Real-time kinematic solution with an unresolved carrier phase
  // ambiguity, decimeter class.
  static constexpr auto FIX_RTK_FLOAT = 4;
  // Real-time kinematic solution with a fixed carrier phase ambiguity,
  // centimeter class.
  static constexpr auto FIX_RTK_FIXED = 5;
  static constexpr std::size_t POSITION_COVARIANCE_ARRAY_CAPACITY = 9U;
  static constexpr bool POSITION_COVARIANCE_ARRAY_IS_VARIABLE_LENGTH = false;
  LLVMDSDL_NODISCARD inline std::int8_t serialize(std::uint8_t* buffer, std::size_t* inout_buffer_size_bytes) const {
    return GlobalPosition__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 GlobalPosition__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 GlobalPosition__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 GlobalPosition__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.

// Fused navigation solution published by the GNSS/INS estimator at 10
// Hz.
// 
// LEAST SUPPORTED TRANSPORT: CAN FD.
struct GlobalPosition {
  // The network-synchronized moment this solution is valid for.
  ::uavcan::time::SynchronizedTimestamp timestamp{};
  // WGS 84 latitude in units of 1e-7 degrees.
  std::int32_t latitude_deg_1e7{};
  // WGS 84 longitude in units of 1e-7 degrees.
  std::int32_t longitude_deg_1e7{};
  // Altitude above mean sea level, in meters.
  ::uavcan::si::unit::length::Scalar altitude_amsl{};
  // Altitude above the WGS 84 reference ellipsoid, in meters. Both
  // altitudes are carried because the geoid separation is not constant and
  // consumers differ in which datum they expect.
  ::uavcan::si::unit::length::Scalar altitude_ellipsoid{};
  // Row-major 3x3 position covariance in the North-East-Down frame, in
  // meters squared.
  // 
  // A fixed-size array, unlike the variable-length arrays elsewhere in
  // this namespace: the length is part of the type, so nothing is
  // transmitted to describe it and generated code exposes it as a plain
  // nine-element array rather than a length-carrying container. float16 is
  // adequate here because a covariance is only ever consumed as an
  // order-of-magnitude confidence estimate.
  std::array<float, 9U> position_covariance{};
  // Number of satellites contributing to the solution.
  std::uint8_t satellites_visible{};
  // Quality of the GNSS fix; one of the constants below.
  std::uint8_t fix_type{};
  ::llvmdsdl::cpp::MemoryResource* _memory_resource{::llvmdsdl::cpp::default_memory_resource()};
  GlobalPosition() = default;
  explicit GlobalPosition(::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);
    altitude_amsl.set_memory_resource(_memory_resource);
    altitude_ellipsoid.set_memory_resource(_memory_resource);
  }
  static constexpr const char* FULL_NAME = "lanyard.nav.GlobalPosition";
  static constexpr bool IS_DEPRECATED = false;
  static constexpr const char* FULL_NAME_AND_VERSION = "lanyard.nav.GlobalPosition.1.0";
  static constexpr std::size_t EXTENT_BYTES = 96U;
  static constexpr std::size_t SERIALIZATION_BUFFER_SIZE_BYTES = 43U;
  static constexpr bool ZOH_ALIAS_ELIGIBLE = false;
  static constexpr const char* ZOH_ALIAS_REASON = "invalid-bit-length";
  // No position solution.
  static constexpr auto FIX_NONE = 0;
  // Horizontal position only; altitude is dead-reckoned.
  static constexpr auto FIX_2D = 1;
  // Full three-dimensional position solution.
  static constexpr auto FIX_3D = 2;
  // Three-dimensional solution with differential corrections applied.
  static constexpr auto FIX_DGPS = 3;
  // Real-time kinematic solution with an unresolved carrier phase
  // ambiguity, decimeter class.
  static constexpr auto FIX_RTK_FLOAT = 4;
  // Real-time kinematic solution with a fixed carrier phase ambiguity,
  // centimeter class.
  static constexpr auto FIX_RTK_FIXED = 5;
  static constexpr std::size_t POSITION_COVARIANCE_ARRAY_CAPACITY = 9U;
  static constexpr bool POSITION_COVARIANCE_ARRAY_IS_VARIABLE_LENGTH = false;
  LLVMDSDL_NODISCARD inline std::int8_t serialize(std::uint8_t* buffer, std::size_t* inout_buffer_size_bytes) const {
    return GlobalPosition__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 GlobalPosition__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 GlobalPosition__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 GlobalPosition__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 GlobalPosition__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 GlobalPosition__deserialize_(this, buffer, inout_buffer_size_bytes, memory_resource);
  }
};

C++ (autosar)

AUTOSAR C++14 subset profile.

// Fused navigation solution published by the GNSS/INS estimator at 10
// Hz.
// 
// LEAST SUPPORTED TRANSPORT: CAN FD.
struct GlobalPosition {
  // The network-synchronized moment this solution is valid for.
  ::uavcan::time::SynchronizedTimestamp timestamp{};
  // WGS 84 latitude in units of 1e-7 degrees.
  std::int32_t latitude_deg_1e7{};
  // WGS 84 longitude in units of 1e-7 degrees.
  std::int32_t longitude_deg_1e7{};
  // Altitude above mean sea level, in meters.
  ::uavcan::si::unit::length::Scalar altitude_amsl{};
  // Altitude above the WGS 84 reference ellipsoid, in meters. Both
  // altitudes are carried because the geoid separation is not constant and
  // consumers differ in which datum they expect.
  ::uavcan::si::unit::length::Scalar altitude_ellipsoid{};
  // Row-major 3x3 position covariance in the North-East-Down frame, in
  // meters squared.
  // 
  // A fixed-size array, unlike the variable-length arrays elsewhere in
  // this namespace: the length is part of the type, so nothing is
  // transmitted to describe it and generated code exposes it as a plain
  // nine-element array rather than a length-carrying container. float16 is
  // adequate here because a covariance is only ever consumed as an
  // order-of-magnitude confidence estimate.
  std::array<float, 9U> position_covariance{};
  // Number of satellites contributing to the solution.
  std::uint8_t satellites_visible{};
  // Quality of the GNSS fix; one of the constants below.
  std::uint8_t fix_type{};
  static constexpr const char* FULL_NAME = "lanyard.nav.GlobalPosition";
  static constexpr bool IS_DEPRECATED = false;
  static constexpr const char* FULL_NAME_AND_VERSION = "lanyard.nav.GlobalPosition.1.0";
  static constexpr std::size_t EXTENT_BYTES = 96U;
  static constexpr std::size_t SERIALIZATION_BUFFER_SIZE_BYTES = 43U;
  static constexpr bool ZOH_ALIAS_ELIGIBLE = false;
  static constexpr const char* ZOH_ALIAS_REASON = "invalid-bit-length";
  // No position solution.
  static constexpr auto FIX_NONE = 0;
  // Horizontal position only; altitude is dead-reckoned.
  static constexpr auto FIX_2D = 1;
  // Full three-dimensional position solution.
  static constexpr auto FIX_3D = 2;
  // Three-dimensional solution with differential corrections applied.
  static constexpr auto FIX_DGPS = 3;
  // Real-time kinematic solution with an unresolved carrier phase
  // ambiguity, decimeter class.
  static constexpr auto FIX_RTK_FLOAT = 4;
  // Real-time kinematic solution with a fixed carrier phase ambiguity,
  // centimeter class.
  static constexpr auto FIX_RTK_FIXED = 5;
  static constexpr std::size_t POSITION_COVARIANCE_ARRAY_CAPACITY = 9U;
  static constexpr bool POSITION_COVARIANCE_ARRAY_IS_VARIABLE_LENGTH = false;
  LLVMDSDL_NODISCARD inline std::int8_t serialize(std::uint8_t* buffer, std::size_t* inout_buffer_size_bytes) const {
    return GlobalPosition__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 GlobalPosition__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 GlobalPosition__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 GlobalPosition__try_serialize_view_(view_bytes, view_size_bytes, buffer, inout_buffer_size_bytes);
  }
};

Rust (std)

/// Fused navigation solution published by the GNSS/INS estimator at 10
/// Hz.
/// 
/// LEAST SUPPORTED TRANSPORT: CAN FD.
#[derive(Clone, Debug, PartialEq)]
pub struct lanyard_nav_GlobalPosition_1_0 {
    /// The network-synchronized moment this solution is valid for.
    pub timestamp: uavcan_time_SynchronizedTimestamp_1_0,
    /// WGS 84 latitude in units of 1e-7 degrees.
    pub latitude_deg_1e7: i32,
    /// WGS 84 longitude in units of 1e-7 degrees.
    pub longitude_deg_1e7: i32,
    /// Altitude above mean sea level, in meters.
    pub altitude_amsl: uavcan_si_unit_length_Scalar_1_0,
    /// Altitude above the WGS 84 reference ellipsoid, in meters. Both
    /// altitudes are carried because the geoid separation is not constant and
    /// consumers differ in which datum they expect.
    pub altitude_ellipsoid: uavcan_si_unit_length_Scalar_1_0,
    /// Row-major 3x3 position covariance in the North-East-Down frame, in
    /// meters squared.
    /// 
    /// A fixed-size array, unlike the variable-length arrays elsewhere in
    /// this namespace: the length is part of the type, so nothing is
    /// transmitted to describe it and generated code exposes it as a plain
    /// nine-element array rather than a length-carrying container. float16 is
    /// adequate here because a covariance is only ever consumed as an
    /// order-of-magnitude confidence estimate.
    pub position_covariance: crate::dsdl_runtime::DsdlVec<f32>,
    /// Number of satellites contributing to the solution.
    pub satellites_visible: u8,
    /// Quality of the GNSS fix; one of the constants below.
    pub fix_type: u8,
}

Rust (no-std)

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

/// Fused navigation solution published by the GNSS/INS estimator at 10
/// Hz.
/// 
/// LEAST SUPPORTED TRANSPORT: CAN FD.
#[derive(Clone, Debug, PartialEq)]
pub struct lanyard_nav_GlobalPosition_1_0 {
    /// The network-synchronized moment this solution is valid for.
    pub timestamp: uavcan_time_SynchronizedTimestamp_1_0,
    /// WGS 84 latitude in units of 1e-7 degrees.
    pub latitude_deg_1e7: i32,
    /// WGS 84 longitude in units of 1e-7 degrees.
    pub longitude_deg_1e7: i32,
    /// Altitude above mean sea level, in meters.
    pub altitude_amsl: uavcan_si_unit_length_Scalar_1_0,
    /// Altitude above the WGS 84 reference ellipsoid, in meters. Both
    /// altitudes are carried because the geoid separation is not constant and
    /// consumers differ in which datum they expect.
    pub altitude_ellipsoid: uavcan_si_unit_length_Scalar_1_0,
    /// Row-major 3x3 position covariance in the North-East-Down frame, in
    /// meters squared.
    /// 
    /// A fixed-size array, unlike the variable-length arrays elsewhere in
    /// this namespace: the length is part of the type, so nothing is
    /// transmitted to describe it and generated code exposes it as a plain
    /// nine-element array rather than a length-carrying container. float16 is
    /// adequate here because a covariance is only ever consumed as an
    /// order-of-magnitude confidence estimate.
    pub position_covariance: crate::dsdl_runtime::DsdlVec<f32>,
    /// Number of satellites contributing to the solution.
    pub satellites_visible: u8,
    /// Quality of the GNSS fix; one of the constants below.
    pub fix_type: u8,
}

Go

// Fused navigation solution published by the GNSS/INS estimator at 10
// Hz.
// 
// LEAST SUPPORTED TRANSPORT: CAN FD.
type GlobalPosition_1_0 struct {
  // The network-synchronized moment this solution is valid for.
  Timestamp pkg_uavcan_time.SynchronizedTimestamp_1_0
  // WGS 84 latitude in units of 1e-7 degrees.
  LatitudeDeg1e7 int32
  // WGS 84 longitude in units of 1e-7 degrees.
  LongitudeDeg1e7 int32
  // Altitude above mean sea level, in meters.
  AltitudeAmsl pkg_uavcan_si_unit_length.Scalar_1_0
  // Altitude above the WGS 84 reference ellipsoid, in meters. Both
  // altitudes are carried because the geoid separation is not constant and
  // consumers differ in which datum they expect.
  AltitudeEllipsoid pkg_uavcan_si_unit_length.Scalar_1_0
  // Row-major 3x3 position covariance in the North-East-Down frame, in
  // meters squared.
  // 
  // A fixed-size array, unlike the variable-length arrays elsewhere in
  // this namespace: the length is part of the type, so nothing is
  // transmitted to describe it and generated code exposes it as a plain
  // nine-element array rather than a length-carrying container. float16 is
  // adequate here because a covariance is only ever consumed as an
  // order-of-magnitude confidence estimate.
  PositionCovariance [9]float32
  // Number of satellites contributing to the solution.
  SatellitesVisible uint8
  // Quality of the GNSS fix; one of the constants below.
  FixType uint8
}

TypeScript

// Fused navigation solution published by the GNSS/INS estimator at 10
// Hz.
// 
// LEAST SUPPORTED TRANSPORT: CAN FD.
export interface GlobalPosition_1_0 {
  // The network-synchronized moment this solution is valid for.
  timestamp: SynchronizedTimestamp_1_0;
  // WGS 84 latitude in units of 1e-7 degrees.
  latitude_deg_1e7: number;
  // WGS 84 longitude in units of 1e-7 degrees.
  longitude_deg_1e7: number;
  // Altitude above mean sea level, in meters.
  altitude_amsl: Scalar_1_0;
  // Altitude above the WGS 84 reference ellipsoid, in meters. Both
  // altitudes are carried because the geoid separation is not constant and
  // consumers differ in which datum they expect.
  altitude_ellipsoid: Scalar_1_0;
  // Row-major 3x3 position covariance in the North-East-Down frame, in
  // meters squared.
  // 
  // A fixed-size array, unlike the variable-length arrays elsewhere in
  // this namespace: the length is part of the type, so nothing is
  // transmitted to describe it and generated code exposes it as a plain
  // nine-element array rather than a length-carrying container. float16 is
  // adequate here because a covariance is only ever consumed as an
  // order-of-magnitude confidence estimate.
  position_covariance: Array<number>;
  // Number of satellites contributing to the solution.
  satellites_visible: number;
  // Quality of the GNSS fix; one of the constants below.
  fix_type: number;
}

Python

# Fused navigation solution published by the GNSS/INS estimator at 10
# Hz.
# 
# LEAST SUPPORTED TRANSPORT: CAN FD.
@dataclass(slots=True)
class GlobalPosition_1_0:
    # The network-synchronized moment this solution is valid for.
    timestamp: SynchronizedTimestamp_1_0 = field(default_factory=SynchronizedTimestamp_1_0)
    # WGS 84 latitude in units of 1e-7 degrees.
    latitude_deg_1e7: int = 0
    # WGS 84 longitude in units of 1e-7 degrees.
    longitude_deg_1e7: int = 0
    # Altitude above mean sea level, in meters.
    altitude_amsl: Scalar_1_0 = field(default_factory=Scalar_1_0)
    # Altitude above the WGS 84 reference ellipsoid, in meters. Both
    # altitudes are carried because the geoid separation is not constant and
    # consumers differ in which datum they expect.
    altitude_ellipsoid: Scalar_1_0 = field(default_factory=Scalar_1_0)
    # Row-major 3x3 position covariance in the North-East-Down frame, in
    # meters squared.
    # 
    # A fixed-size array, unlike the variable-length arrays elsewhere in
    # this namespace: the length is part of the type, so nothing is
    # transmitted to describe it and generated code exposes it as a plain
    # nine-element array rather than a length-carrying container. float16 is
    # adequate here because a covariance is only ever consumed as an
    # order-of-magnitude confidence estimate.
    position_covariance: list[float] = field(default_factory=list)
    # Number of satellites contributing to the solution.
    satellites_visible: int = 0
    # Quality of the GNSS fix; one of the constants below.
    fix_type: int = 0

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