lanyard.link.TelemetryLinkStats.1.0

Health of the air-to-ground telemetry link, published at 1 Hz by the radio modem node.

Full name lanyard.link.TelemetryLinkStats
Version 1.0
Kind Message
Fixed port ID 6241
Least supported transport CAN FD

Wire layout

Section Extent (bytes) Max serialized (bytes)
Message 24 24

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

Definition

# Health of the air-to-ground telemetry link, published at 1 Hz by the
# radio modem node.
#
# LEAST SUPPORTED TRANSPORT: CAN FD.

uavcan.time.SynchronizedTimestamp.1.0 timestamp
# Moment the counters below were sampled, on the synchronised clock
# every node shares, so a ground station can align this sample with the
# vehicle state that produced it.

int8 rssi_dbm
# Received signal strength in dBm at the air end of the link.

int8 noise_floor_dbm
# Measured noise floor in dBm. The difference between this and rssi_dbm
# is the link margin, which is the number an operator actually watches.

uint8 link_quality_pct
# Percentage of expected packets successfully received over the last
# second, 0 to 100.

uint32 tx_packets
# Packets transmitted since power-on.

uint32 rx_packets
# Packets received since power-on.

uint32 dropped_packets
# Packets lost since power-on, as counted by sequence number gaps.

uint16 round_trip_ms
# Most recent measured round-trip time in milliseconds.

@assert _offset_.max <= 63 * 8
# Must remain a single CAN FD frame.

@sealed

Generated code

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

C

/* Health of the air-to-ground telemetry link, published at 1 Hz by the */
/* radio modem node. */
/*  */
/* LEAST SUPPORTED TRANSPORT: CAN FD. */
typedef struct lanyard__link__TelemetryLinkStats_1_0 {
  /* Moment the counters below were sampled, on the synchronised clock */
  /* every node shares, so a ground station can align this sample with the */
  /* vehicle state that produced it. */
  struct uavcan__time__SynchronizedTimestamp_1_0 timestamp;
  /* Received signal strength in dBm at the air end of the link. */
  int8_t rssi_dbm;
  /* Measured noise floor in dBm. The difference between this and rssi_dbm */
  /* is the link margin, which is the number an operator actually watches. */
  int8_t noise_floor_dbm;
  /* Percentage of expected packets successfully received over the last */
  /* second, 0 to 100. */
  uint8_t link_quality_pct;
  /* Packets transmitted since power-on. */
  uint32_t tx_packets;
  /* Packets received since power-on. */
  uint32_t rx_packets;
  /* Packets lost since power-on, as counted by sequence number gaps. */
  uint32_t dropped_packets;
  /* Most recent measured round-trip time in milliseconds. */
  uint16_t round_trip_ms;
} lanyard__link__TelemetryLinkStats_1_0;

C++ (std)

// Health of the air-to-ground telemetry link, published at 1 Hz by the
// radio modem node.
//
// LEAST SUPPORTED TRANSPORT: CAN FD.
struct TelemetryLinkStats_1_0 {
  // Moment the counters below were sampled, on the synchronised clock
  // every node shares, so a ground station can align this sample with the
  // vehicle state that produced it.
  ::uavcan::time::SynchronizedTimestamp_1_0 timestamp{};
  // Received signal strength in dBm at the air end of the link.
  std::int8_t rssi_dbm{};
  // Measured noise floor in dBm. The difference between this and rssi_dbm
  // is the link margin, which is the number an operator actually watches.
  std::int8_t noise_floor_dbm{};
  // Percentage of expected packets successfully received over the last
  // second, 0 to 100.
  std::uint8_t link_quality_pct{};
  // Packets transmitted since power-on.
  std::uint32_t tx_packets{};
  // Packets received since power-on.
  std::uint32_t rx_packets{};
  // Packets lost since power-on, as counted by sequence number gaps.
  std::uint32_t dropped_packets{};
  // Most recent measured round-trip time in milliseconds.
  std::uint16_t round_trip_ms{};
  static constexpr const char* FULL_NAME = "lanyard.link.TelemetryLinkStats";
  static constexpr bool IS_DEPRECATED = false;
  static constexpr const char* FULL_NAME_AND_VERSION = "lanyard.link.TelemetryLinkStats.1.0";
  static constexpr std::size_t EXTENT_BYTES = 24U;
  static constexpr std::size_t SERIALIZATION_BUFFER_SIZE_BYTES = 24U;
  static constexpr bool WIRE_FLAT = true;
  static constexpr const char* WIRE_FLAT_REASON = "flat";
  static constexpr bool HOST_IMAGE = false;
  static constexpr const char* HOST_IMAGE_REASON = "nested-not-flat";
  static constexpr bool HAS_FIXED_PORT_ID = true;
  static constexpr std::uint16_t FIXED_PORT_ID = 6241U;
  LLVMDSDL_NODISCARD inline std::int8_t serialize(std::uint8_t* buffer, std::size_t* inout_buffer_size_bytes) const {
    return TelemetryLinkStats_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 TelemetryLinkStats_1_0_deserialize_(this, buffer, inout_buffer_size_bytes);
  }
  static const std::uint8_t* get_timestamp(const std::uint8_t* const buffer, const std::size_t buffer_size_bytes, std::size_t* const out_size)
  {
    const std::uint8_t* const buf = ((buffer != nullptr) ? buffer : reinterpret_cast<const std::uint8_t*>(""));
    const bool v0 = (static_cast<void>(buffer_size_bytes), true);
    const std::uint64_t v1 = (v0 ? 0ULL : buffer_size_bytes);
    const std::uint64_t v2 = (buffer_size_bytes - v1);
    *out_size = static_cast<std::size_t>(v2);
    return &buf[static_cast<std::size_t>(v1)];
  }

  static std::int8_t get_rssi_dbm(const std::uint8_t* const buffer, const std::size_t buffer_size_bytes)
  {
    const std::uint8_t* const buf = ((buffer != nullptr) ? buffer : reinterpret_cast<const std::uint8_t*>(""));
    const std::uint64_t value = static_cast<std::uint64_t>(dsdl_runtime_get_i8(buf, static_cast<std::size_t>(buffer_size_bytes), static_cast<std::size_t>(56ULL), 8U));
    const std::uint64_t value_2 = mlir_llvmdsdl_plan_scalar_signed_lanyard_link_TelemetryLinkStats_1_0_2_deser(value);
    return static_cast<std::int8_t>(value_2);
  }

  static std::int8_t set_rssi_dbm(std::uint8_t* const buffer, const std::size_t buffer_size_bytes, const std::int8_t member_value)
  {
    const std::uint64_t value = static_cast<std::uint64_t>(member_value);
    const bool is_null = (buffer == nullptr);
    const std::uint64_t v0 = (buffer_size_bytes * 8ULL);
    const bool v1 = (v0 >= 64ULL);
    const std::int8_t v2 = static_cast<std::int8_t>(v1 ? static_cast<std::int8_t>(0) : static_cast<std::int8_t>(-3));
    const std::int8_t v3 = static_cast<std::int8_t>(is_null ? static_cast<std::int8_t>(-2) : v2);
    const bool v4 = (v3 == static_cast<std::int8_t>(0));
    std::int8_t err{};
    if (v4) {
      const std::uint64_t value_2 = mlir_llvmdsdl_plan_scalar_signed_lanyard_link_TelemetryLinkStats_1_0_2_ser(value);
      const std::int8_t err_2 = dsdl_runtime_set_ixx(buffer, static_cast<std::size_t>(buffer_size_bytes), static_cast<std::size_t>(56ULL), static_cast<std::int64_t>(value_2), 8U);
      err = err_2;
    } else {
      err = v3;
    }
    return err;
  }

  static std::int8_t get_noise_floor_dbm(const std::uint8_t* const buffer, const std::size_t buffer_size_bytes)
  {
    const std::uint8_t* const buf = ((buffer != nullptr) ? buffer : reinterpret_cast<const std::uint8_t*>(""));
    const std::uint64_t value = static_cast<std::uint64_t>(dsdl_runtime_get_i8(buf, static_cast<std::size_t>(buffer_size_bytes), static_cast<std::size_t>(64ULL), 8U));
    const std::uint64_t value_2 = mlir_llvmdsdl_plan_scalar_signed_lanyard_link_TelemetryLinkStats_1_0_3_deser(value);
    return static_cast<std::int8_t>(value_2);
  }

  static std::int8_t set_noise_floor_dbm(std::uint8_t* const buffer, const std::size_t buffer_size_bytes, const std::int8_t member_value)
  {
    const std::uint64_t value = static_cast<std::uint64_t>(member_value);
    const bool is_null = (buffer == nullptr);
    const std::uint64_t v0 = (buffer_size_bytes * 8ULL);
    const bool v1 = (v0 >= 72ULL);
    const std::int8_t v2 = static_cast<std::int8_t>(v1 ? static_cast<std::int8_t>(0) : static_cast<std::int8_t>(-3));
    const std::int8_t v3 = static_cast<std::int8_t>(is_null ? static_cast<std::int8_t>(-2) : v2);
    const bool v4 = (v3 == static_cast<std::int8_t>(0));
    std::int8_t err{};
    if (v4) {
      const std::uint64_t value_2 = mlir_llvmdsdl_plan_scalar_signed_lanyard_link_TelemetryLinkStats_1_0_3_ser(value);
      const std::int8_t err_2 = dsdl_runtime_set_ixx(buffer, static_cast<std::size_t>(buffer_size_bytes), static_cast<std::size_t>(64ULL), static_cast<std::int64_t>(value_2), 8U);
      err = err_2;
    } else {
      err = v3;
    }
    return err;
  }

  static std::uint8_t get_link_quality_pct(const std::uint8_t* const buffer, const std::size_t buffer_size_bytes)
  {
    const std::uint8_t* const buf = ((buffer != nullptr) ? buffer : reinterpret_cast<const std::uint8_t*>(""));
    const std::uint64_t value = static_cast<std::uint64_t>(dsdl_runtime_get_u8(buf, static_cast<std::size_t>(buffer_size_bytes), static_cast<std::size_t>(72ULL), 8U));
    const std::uint64_t value_2 = mlir_llvmdsdl_plan_scalar_unsigned_lanyard_link_TelemetryLinkStats_1_0_4_deser(value);
    return static_cast<std::uint8_t>(value_2);
  }

  static std::int8_t set_link_quality_pct(std::uint8_t* const buffer, const std::size_t buffer_size_bytes, const std::uint8_t member_value)
  {
    const std::uint64_t value = static_cast<std::uint64_t>(member_value);
    const bool is_null = (buffer == nullptr);
    const std::uint64_t v0 = (buffer_size_bytes * 8ULL);
    const bool v1 = (v0 >= 80ULL);
    const std::int8_t v2 = static_cast<std::int8_t>(v1 ? static_cast<std::int8_t>(0) : static_cast<std::int8_t>(-3));
    const std::int8_t v3 = static_cast<std::int8_t>(is_null ? static_cast<std::int8_t>(-2) : v2);
    const bool v4 = (v3 == static_cast<std::int8_t>(0));
    std::int8_t err{};
    if (v4) {
      const std::uint64_t value_2 = mlir_llvmdsdl_plan_scalar_unsigned_lanyard_link_TelemetryLinkStats_1_0_4_ser(value);
      const std::int8_t err_2 = dsdl_runtime_set_uxx(buffer, static_cast<std::size_t>(buffer_size_bytes), static_cast<std::size_t>(72ULL), value_2, 8U);
      err = err_2;
    } else {
      err = v3;
    }
    return err;
  }

  static std::uint32_t get_tx_packets(const std::uint8_t* const buffer, const std::size_t buffer_size_bytes)
  {
    const std::uint8_t* const buf = ((buffer != nullptr) ? buffer : reinterpret_cast<const std::uint8_t*>(""));
    const std::uint64_t value = static_cast<std::uint64_t>(dsdl_runtime_get_u32(buf, static_cast<std::size_t>(buffer_size_bytes), static_cast<std::size_t>(80ULL), 32U));
    const std::uint64_t value_2 = mlir_llvmdsdl_plan_scalar_unsigned_lanyard_link_TelemetryLinkStats_1_0_5_deser(value);
    return static_cast<std::uint32_t>(value_2);
  }

  static std::int8_t set_tx_packets(std::uint8_t* const buffer, const std::size_t buffer_size_bytes, const std::uint32_t member_value)
  {
    const std::uint64_t value = static_cast<std::uint64_t>(member_value);
    const bool is_null = (buffer == nullptr);
    const std::uint64_t v0 = (buffer_size_bytes * 8ULL);
    const bool v1 = (v0 >= 112ULL);
    const std::int8_t v2 = static_cast<std::int8_t>(v1 ? static_cast<std::int8_t>(0) : static_cast<std::int8_t>(-3));
    const std::int8_t v3 = static_cast<std::int8_t>(is_null ? static_cast<std::int8_t>(-2) : v2);
    const bool v4 = (v3 == static_cast<std::int8_t>(0));
    std::int8_t err{};
    if (v4) {
      const std::uint64_t value_2 = mlir_llvmdsdl_plan_scalar_unsigned_lanyard_link_TelemetryLinkStats_1_0_5_ser(value);
      const std::int8_t err_2 = dsdl_runtime_set_uxx(buffer, static_cast<std::size_t>(buffer_size_bytes), static_cast<std::size_t>(80ULL), value_2, 32U);
      err = err_2;
    } else {
      err = v3;
    }
    return err;
  }

  static std::uint32_t get_rx_packets(const std::uint8_t* const buffer, const std::size_t buffer_size_bytes)
  {
    const std::uint8_t* const buf = ((buffer != nullptr) ? buffer : reinterpret_cast<const std::uint8_t*>(""));
    const std::uint64_t value = static_cast<std::uint64_t>(dsdl_runtime_get_u32(buf, static_cast<std::size_t>(buffer_size_bytes), static_cast<std::size_t>(112ULL), 32U));
    const std::uint64_t value_2 = mlir_llvmdsdl_plan_scalar_unsigned_lanyard_link_TelemetryLinkStats_1_0_6_deser(value);
    return static_cast<std::uint32_t>(value_2);
  }

  static std::int8_t set_rx_packets(std::uint8_t* const buffer, const std::size_t buffer_size_bytes, const std::uint32_t member_value)
  {
    const std::uint64_t value = static_cast<std::uint64_t>(member_value);
    const bool is_null = (buffer == nullptr);
    const std::uint64_t v0 = (buffer_size_bytes * 8ULL);
    const bool v1 = (v0 >= 144ULL);
    const std::int8_t v2 = static_cast<std::int8_t>(v1 ? static_cast<std::int8_t>(0) : static_cast<std::int8_t>(-3));
    const std::int8_t v3 = static_cast<std::int8_t>(is_null ? static_cast<std::int8_t>(-2) : v2);
    const bool v4 = (v3 == static_cast<std::int8_t>(0));
    std::int8_t err{};
    if (v4) {
      const std::uint64_t value_2 = mlir_llvmdsdl_plan_scalar_unsigned_lanyard_link_TelemetryLinkStats_1_0_6_ser(value);
      const std::int8_t err_2 = dsdl_runtime_set_uxx(buffer, static_cast<std::size_t>(buffer_size_bytes), static_cast<std::size_t>(112ULL), value_2, 32U);
      err = err_2;
    } else {
      err = v3;
    }
    return err;
  }

  static std::uint32_t get_dropped_packets(const std::uint8_t* const buffer, const std::size_t buffer_size_bytes)
  {
    const std::uint8_t* const buf = ((buffer != nullptr) ? buffer : reinterpret_cast<const std::uint8_t*>(""));
    const std::uint64_t value = static_cast<std::uint64_t>(dsdl_runtime_get_u32(buf, static_cast<std::size_t>(buffer_size_bytes), static_cast<std::size_t>(144ULL), 32U));
    const std::uint64_t value_2 = mlir_llvmdsdl_plan_scalar_unsigned_lanyard_link_TelemetryLinkStats_1_0_7_deser(value);
    return static_cast<std::uint32_t>(value_2);
  }

  static std::int8_t set_dropped_packets(std::uint8_t* const buffer, const std::size_t buffer_size_bytes, const std::uint32_t member_value)
  {
    const std::uint64_t value = static_cast<std::uint64_t>(member_value);
    const bool is_null = (buffer == nullptr);
    const std::uint64_t v0 = (buffer_size_bytes * 8ULL);
    const bool v1 = (v0 >= 176ULL);
    const std::int8_t v2 = static_cast<std::int8_t>(v1 ? static_cast<std::int8_t>(0) : static_cast<std::int8_t>(-3));
    const std::int8_t v3 = static_cast<std::int8_t>(is_null ? static_cast<std::int8_t>(-2) : v2);
    const bool v4 = (v3 == static_cast<std::int8_t>(0));
    std::int8_t err{};
    if (v4) {
      const std::uint64_t value_2 = mlir_llvmdsdl_plan_scalar_unsigned_lanyard_link_TelemetryLinkStats_1_0_7_ser(value);
      const std::int8_t err_2 = dsdl_runtime_set_uxx(buffer, static_cast<std::size_t>(buffer_size_bytes), static_cast<std::size_t>(144ULL), value_2, 32U);
      err = err_2;
    } else {
      err = v3;
    }
    return err;
  }

  static std::uint16_t get_round_trip_ms(const std::uint8_t* const buffer, const std::size_t buffer_size_bytes)
  {
    const std::uint8_t* const buf = ((buffer != nullptr) ? buffer : reinterpret_cast<const std::uint8_t*>(""));
    const std::uint64_t value = static_cast<std::uint64_t>(dsdl_runtime_get_u16(buf, static_cast<std::size_t>(buffer_size_bytes), static_cast<std::size_t>(176ULL), 16U));
    const std::uint64_t value_2 = mlir_llvmdsdl_plan_scalar_unsigned_lanyard_link_TelemetryLinkStats_1_0_8_deser(value);
    return static_cast<std::uint16_t>(value_2);
  }

  static std::int8_t set_round_trip_ms(std::uint8_t* const buffer, const std::size_t buffer_size_bytes, const std::uint16_t member_value)
  {
    const std::uint64_t value = static_cast<std::uint64_t>(member_value);
    const bool is_null = (buffer == nullptr);
    const std::uint64_t v0 = (buffer_size_bytes * 8ULL);
    const bool v1 = (v0 >= 192ULL);
    const std::int8_t v2 = static_cast<std::int8_t>(v1 ? static_cast<std::int8_t>(0) : static_cast<std::int8_t>(-3));
    const std::int8_t v3 = static_cast<std::int8_t>(is_null ? static_cast<std::int8_t>(-2) : v2);
    const bool v4 = (v3 == static_cast<std::int8_t>(0));
    std::int8_t err{};
    if (v4) {
      const std::uint64_t value_2 = mlir_llvmdsdl_plan_scalar_unsigned_lanyard_link_TelemetryLinkStats_1_0_8_ser(value);
      const std::int8_t err_2 = dsdl_runtime_set_uxx(buffer, static_cast<std::size_t>(buffer_size_bytes), static_cast<std::size_t>(176ULL), value_2, 16U);
      err = err_2;
    } else {
      err = v3;
    }
    return err;
  }

};

C++ (pmr)

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

// Health of the air-to-ground telemetry link, published at 1 Hz by the
// radio modem node.
//
// LEAST SUPPORTED TRANSPORT: CAN FD.
struct TelemetryLinkStats_1_0 {
  // Moment the counters below were sampled, on the synchronised clock
  // every node shares, so a ground station can align this sample with the
  // vehicle state that produced it.
  ::uavcan::time::SynchronizedTimestamp_1_0 timestamp{};
  // Received signal strength in dBm at the air end of the link.
  std::int8_t rssi_dbm{};
  // Measured noise floor in dBm. The difference between this and rssi_dbm
  // is the link margin, which is the number an operator actually watches.
  std::int8_t noise_floor_dbm{};
  // Percentage of expected packets successfully received over the last
  // second, 0 to 100.
  std::uint8_t link_quality_pct{};
  // Packets transmitted since power-on.
  std::uint32_t tx_packets{};
  // Packets received since power-on.
  std::uint32_t rx_packets{};
  // Packets lost since power-on, as counted by sequence number gaps.
  std::uint32_t dropped_packets{};
  // Most recent measured round-trip time in milliseconds.
  std::uint16_t round_trip_ms{};
  ::llvmdsdl::cpp::MemoryResource* _memory_resource{::llvmdsdl::cpp::default_memory_resource()};
  TelemetryLinkStats_1_0() = default;
  explicit TelemetryLinkStats_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);
  }
  static constexpr const char* FULL_NAME = "lanyard.link.TelemetryLinkStats";
  static constexpr bool IS_DEPRECATED = false;
  static constexpr const char* FULL_NAME_AND_VERSION = "lanyard.link.TelemetryLinkStats.1.0";
  static constexpr std::size_t EXTENT_BYTES = 24U;
  static constexpr std::size_t SERIALIZATION_BUFFER_SIZE_BYTES = 24U;
  static constexpr bool WIRE_FLAT = true;
  static constexpr const char* WIRE_FLAT_REASON = "flat";
  static constexpr bool HOST_IMAGE = false;
  static constexpr const char* HOST_IMAGE_REASON = "nested-not-flat";
  static constexpr bool HAS_FIXED_PORT_ID = true;
  static constexpr std::uint16_t FIXED_PORT_ID = 6241U;
  LLVMDSDL_NODISCARD inline std::int8_t serialize(std::uint8_t* buffer, std::size_t* inout_buffer_size_bytes) const {
    return TelemetryLinkStats_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 TelemetryLinkStats_1_0_deserialize_(this, buffer, inout_buffer_size_bytes, _memory_resource);
  }
  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 TelemetryLinkStats_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 TelemetryLinkStats_1_0_deserialize_(this, buffer, inout_buffer_size_bytes, memory_resource);
  }
  static const std::uint8_t* get_timestamp(const std::uint8_t* const buffer, const std::size_t buffer_size_bytes, std::size_t* const out_size)
  {
    const std::uint8_t* const buf = ((buffer != nullptr) ? buffer : reinterpret_cast<const std::uint8_t*>(""));
    const bool v0 = (static_cast<void>(buffer_size_bytes), true);
    const std::uint64_t v1 = (v0 ? 0ULL : buffer_size_bytes);
    const std::uint64_t v2 = (buffer_size_bytes - v1);
    *out_size = static_cast<std::size_t>(v2);
    return &buf[static_cast<std::size_t>(v1)];
  }

  static std::int8_t get_rssi_dbm(const std::uint8_t* const buffer, const std::size_t buffer_size_bytes)
  {
    const std::uint8_t* const buf = ((buffer != nullptr) ? buffer : reinterpret_cast<const std::uint8_t*>(""));
    const std::uint64_t value = static_cast<std::uint64_t>(dsdl_runtime_get_i8(buf, static_cast<std::size_t>(buffer_size_bytes), static_cast<std::size_t>(56ULL), 8U));
    const std::uint64_t value_2 = mlir_llvmdsdl_plan_scalar_signed_lanyard_link_TelemetryLinkStats_1_0_2_deser(value);
    return static_cast<std::int8_t>(value_2);
  }

  static std::int8_t set_rssi_dbm(std::uint8_t* const buffer, const std::size_t buffer_size_bytes, const std::int8_t member_value)
  {
    const std::uint64_t value = static_cast<std::uint64_t>(member_value);
    const bool is_null = (buffer == nullptr);
    const std::uint64_t v0 = (buffer_size_bytes * 8ULL);
    const bool v1 = (v0 >= 64ULL);
    const std::int8_t v2 = static_cast<std::int8_t>(v1 ? static_cast<std::int8_t>(0) : static_cast<std::int8_t>(-3));
    const std::int8_t v3 = static_cast<std::int8_t>(is_null ? static_cast<std::int8_t>(-2) : v2);
    const bool v4 = (v3 == static_cast<std::int8_t>(0));
    std::int8_t err{};
    if (v4) {
      const std::uint64_t value_2 = mlir_llvmdsdl_plan_scalar_signed_lanyard_link_TelemetryLinkStats_1_0_2_ser(value);
      const std::int8_t err_2 = dsdl_runtime_set_ixx(buffer, static_cast<std::size_t>(buffer_size_bytes), static_cast<std::size_t>(56ULL), static_cast<std::int64_t>(value_2), 8U);
      err = err_2;
    } else {
      err = v3;
    }
    return err;
  }

  static std::int8_t get_noise_floor_dbm(const std::uint8_t* const buffer, const std::size_t buffer_size_bytes)
  {
    const std::uint8_t* const buf = ((buffer != nullptr) ? buffer : reinterpret_cast<const std::uint8_t*>(""));
    const std::uint64_t value = static_cast<std::uint64_t>(dsdl_runtime_get_i8(buf, static_cast<std::size_t>(buffer_size_bytes), static_cast<std::size_t>(64ULL), 8U));
    const std::uint64_t value_2 = mlir_llvmdsdl_plan_scalar_signed_lanyard_link_TelemetryLinkStats_1_0_3_deser(value);
    return static_cast<std::int8_t>(value_2);
  }

  static std::int8_t set_noise_floor_dbm(std::uint8_t* const buffer, const std::size_t buffer_size_bytes, const std::int8_t member_value)
  {
    const std::uint64_t value = static_cast<std::uint64_t>(member_value);
    const bool is_null = (buffer == nullptr);
    const std::uint64_t v0 = (buffer_size_bytes * 8ULL);
    const bool v1 = (v0 >= 72ULL);
    const std::int8_t v2 = static_cast<std::int8_t>(v1 ? static_cast<std::int8_t>(0) : static_cast<std::int8_t>(-3));
    const std::int8_t v3 = static_cast<std::int8_t>(is_null ? static_cast<std::int8_t>(-2) : v2);
    const bool v4 = (v3 == static_cast<std::int8_t>(0));
    std::int8_t err{};
    if (v4) {
      const std::uint64_t value_2 = mlir_llvmdsdl_plan_scalar_signed_lanyard_link_TelemetryLinkStats_1_0_3_ser(value);
      const std::int8_t err_2 = dsdl_runtime_set_ixx(buffer, static_cast<std::size_t>(buffer_size_bytes), static_cast<std::size_t>(64ULL), static_cast<std::int64_t>(value_2), 8U);
      err = err_2;
    } else {
      err = v3;
    }
    return err;
  }

  static std::uint8_t get_link_quality_pct(const std::uint8_t* const buffer, const std::size_t buffer_size_bytes)
  {
    const std::uint8_t* const buf = ((buffer != nullptr) ? buffer : reinterpret_cast<const std::uint8_t*>(""));
    const std::uint64_t value = static_cast<std::uint64_t>(dsdl_runtime_get_u8(buf, static_cast<std::size_t>(buffer_size_bytes), static_cast<std::size_t>(72ULL), 8U));
    const std::uint64_t value_2 = mlir_llvmdsdl_plan_scalar_unsigned_lanyard_link_TelemetryLinkStats_1_0_4_deser(value);
    return static_cast<std::uint8_t>(value_2);
  }

  static std::int8_t set_link_quality_pct(std::uint8_t* const buffer, const std::size_t buffer_size_bytes, const std::uint8_t member_value)
  {
    const std::uint64_t value = static_cast<std::uint64_t>(member_value);
    const bool is_null = (buffer == nullptr);
    const std::uint64_t v0 = (buffer_size_bytes * 8ULL);
    const bool v1 = (v0 >= 80ULL);
    const std::int8_t v2 = static_cast<std::int8_t>(v1 ? static_cast<std::int8_t>(0) : static_cast<std::int8_t>(-3));
    const std::int8_t v3 = static_cast<std::int8_t>(is_null ? static_cast<std::int8_t>(-2) : v2);
    const bool v4 = (v3 == static_cast<std::int8_t>(0));
    std::int8_t err{};
    if (v4) {
      const std::uint64_t value_2 = mlir_llvmdsdl_plan_scalar_unsigned_lanyard_link_TelemetryLinkStats_1_0_4_ser(value);
      const std::int8_t err_2 = dsdl_runtime_set_uxx(buffer, static_cast<std::size_t>(buffer_size_bytes), static_cast<std::size_t>(72ULL), value_2, 8U);
      err = err_2;
    } else {
      err = v3;
    }
    return err;
  }

  static std::uint32_t get_tx_packets(const std::uint8_t* const buffer, const std::size_t buffer_size_bytes)
  {
    const std::uint8_t* const buf = ((buffer != nullptr) ? buffer : reinterpret_cast<const std::uint8_t*>(""));
    const std::uint64_t value = static_cast<std::uint64_t>(dsdl_runtime_get_u32(buf, static_cast<std::size_t>(buffer_size_bytes), static_cast<std::size_t>(80ULL), 32U));
    const std::uint64_t value_2 = mlir_llvmdsdl_plan_scalar_unsigned_lanyard_link_TelemetryLinkStats_1_0_5_deser(value);
    return static_cast<std::uint32_t>(value_2);
  }

  static std::int8_t set_tx_packets(std::uint8_t* const buffer, const std::size_t buffer_size_bytes, const std::uint32_t member_value)
  {
    const std::uint64_t value = static_cast<std::uint64_t>(member_value);
    const bool is_null = (buffer == nullptr);
    const std::uint64_t v0 = (buffer_size_bytes * 8ULL);
    const bool v1 = (v0 >= 112ULL);
    const std::int8_t v2 = static_cast<std::int8_t>(v1 ? static_cast<std::int8_t>(0) : static_cast<std::int8_t>(-3));
    const std::int8_t v3 = static_cast<std::int8_t>(is_null ? static_cast<std::int8_t>(-2) : v2);
    const bool v4 = (v3 == static_cast<std::int8_t>(0));
    std::int8_t err{};
    if (v4) {
      const std::uint64_t value_2 = mlir_llvmdsdl_plan_scalar_unsigned_lanyard_link_TelemetryLinkStats_1_0_5_ser(value);
      const std::int8_t err_2 = dsdl_runtime_set_uxx(buffer, static_cast<std::size_t>(buffer_size_bytes), static_cast<std::size_t>(80ULL), value_2, 32U);
      err = err_2;
    } else {
      err = v3;
    }
    return err;
  }

  static std::uint32_t get_rx_packets(const std::uint8_t* const buffer, const std::size_t buffer_size_bytes)
  {
    const std::uint8_t* const buf = ((buffer != nullptr) ? buffer : reinterpret_cast<const std::uint8_t*>(""));
    const std::uint64_t value = static_cast<std::uint64_t>(dsdl_runtime_get_u32(buf, static_cast<std::size_t>(buffer_size_bytes), static_cast<std::size_t>(112ULL), 32U));
    const std::uint64_t value_2 = mlir_llvmdsdl_plan_scalar_unsigned_lanyard_link_TelemetryLinkStats_1_0_6_deser(value);
    return static_cast<std::uint32_t>(value_2);
  }

  static std::int8_t set_rx_packets(std::uint8_t* const buffer, const std::size_t buffer_size_bytes, const std::uint32_t member_value)
  {
    const std::uint64_t value = static_cast<std::uint64_t>(member_value);
    const bool is_null = (buffer == nullptr);
    const std::uint64_t v0 = (buffer_size_bytes * 8ULL);
    const bool v1 = (v0 >= 144ULL);
    const std::int8_t v2 = static_cast<std::int8_t>(v1 ? static_cast<std::int8_t>(0) : static_cast<std::int8_t>(-3));
    const std::int8_t v3 = static_cast<std::int8_t>(is_null ? static_cast<std::int8_t>(-2) : v2);
    const bool v4 = (v3 == static_cast<std::int8_t>(0));
    std::int8_t err{};
    if (v4) {
      const std::uint64_t value_2 = mlir_llvmdsdl_plan_scalar_unsigned_lanyard_link_TelemetryLinkStats_1_0_6_ser(value);
      const std::int8_t err_2 = dsdl_runtime_set_uxx(buffer, static_cast<std::size_t>(buffer_size_bytes), static_cast<std::size_t>(112ULL), value_2, 32U);
      err = err_2;
    } else {
      err = v3;
    }
    return err;
  }

  static std::uint32_t get_dropped_packets(const std::uint8_t* const buffer, const std::size_t buffer_size_bytes)
  {
    const std::uint8_t* const buf = ((buffer != nullptr) ? buffer : reinterpret_cast<const std::uint8_t*>(""));
    const std::uint64_t value = static_cast<std::uint64_t>(dsdl_runtime_get_u32(buf, static_cast<std::size_t>(buffer_size_bytes), static_cast<std::size_t>(144ULL), 32U));
    const std::uint64_t value_2 = mlir_llvmdsdl_plan_scalar_unsigned_lanyard_link_TelemetryLinkStats_1_0_7_deser(value);
    return static_cast<std::uint32_t>(value_2);
  }

  static std::int8_t set_dropped_packets(std::uint8_t* const buffer, const std::size_t buffer_size_bytes, const std::uint32_t member_value)
  {
    const std::uint64_t value = static_cast<std::uint64_t>(member_value);
    const bool is_null = (buffer == nullptr);
    const std::uint64_t v0 = (buffer_size_bytes * 8ULL);
    const bool v1 = (v0 >= 176ULL);
    const std::int8_t v2 = static_cast<std::int8_t>(v1 ? static_cast<std::int8_t>(0) : static_cast<std::int8_t>(-3));
    const std::int8_t v3 = static_cast<std::int8_t>(is_null ? static_cast<std::int8_t>(-2) : v2);
    const bool v4 = (v3 == static_cast<std::int8_t>(0));
    std::int8_t err{};
    if (v4) {
      const std::uint64_t value_2 = mlir_llvmdsdl_plan_scalar_unsigned_lanyard_link_TelemetryLinkStats_1_0_7_ser(value);
      const std::int8_t err_2 = dsdl_runtime_set_uxx(buffer, static_cast<std::size_t>(buffer_size_bytes), static_cast<std::size_t>(144ULL), value_2, 32U);
      err = err_2;
    } else {
      err = v3;
    }
    return err;
  }

  static std::uint16_t get_round_trip_ms(const std::uint8_t* const buffer, const std::size_t buffer_size_bytes)
  {
    const std::uint8_t* const buf = ((buffer != nullptr) ? buffer : reinterpret_cast<const std::uint8_t*>(""));
    const std::uint64_t value = static_cast<std::uint64_t>(dsdl_runtime_get_u16(buf, static_cast<std::size_t>(buffer_size_bytes), static_cast<std::size_t>(176ULL), 16U));
    const std::uint64_t value_2 = mlir_llvmdsdl_plan_scalar_unsigned_lanyard_link_TelemetryLinkStats_1_0_8_deser(value);
    return static_cast<std::uint16_t>(value_2);
  }

  static std::int8_t set_round_trip_ms(std::uint8_t* const buffer, const std::size_t buffer_size_bytes, const std::uint16_t member_value)
  {
    const std::uint64_t value = static_cast<std::uint64_t>(member_value);
    const bool is_null = (buffer == nullptr);
    const std::uint64_t v0 = (buffer_size_bytes * 8ULL);
    const bool v1 = (v0 >= 192ULL);
    const std::int8_t v2 = static_cast<std::int8_t>(v1 ? static_cast<std::int8_t>(0) : static_cast<std::int8_t>(-3));
    const std::int8_t v3 = static_cast<std::int8_t>(is_null ? static_cast<std::int8_t>(-2) : v2);
    const bool v4 = (v3 == static_cast<std::int8_t>(0));
    std::int8_t err{};
    if (v4) {
      const std::uint64_t value_2 = mlir_llvmdsdl_plan_scalar_unsigned_lanyard_link_TelemetryLinkStats_1_0_8_ser(value);
      const std::int8_t err_2 = dsdl_runtime_set_uxx(buffer, static_cast<std::size_t>(buffer_size_bytes), static_cast<std::size_t>(176ULL), value_2, 16U);
      err = err_2;
    } else {
      err = v3;
    }
    return err;
  }

};

C++ (autosar)

AUTOSAR C++14 subset profile.

// Health of the air-to-ground telemetry link, published at 1 Hz by the
// radio modem node.
//
// LEAST SUPPORTED TRANSPORT: CAN FD.
struct TelemetryLinkStats_1_0 {
  // Moment the counters below were sampled, on the synchronised clock
  // every node shares, so a ground station can align this sample with the
  // vehicle state that produced it.
  ::uavcan::time::SynchronizedTimestamp_1_0 timestamp{};
  // Received signal strength in dBm at the air end of the link.
  std::int8_t rssi_dbm{};
  // Measured noise floor in dBm. The difference between this and rssi_dbm
  // is the link margin, which is the number an operator actually watches.
  std::int8_t noise_floor_dbm{};
  // Percentage of expected packets successfully received over the last
  // second, 0 to 100.
  std::uint8_t link_quality_pct{};
  // Packets transmitted since power-on.
  std::uint32_t tx_packets{};
  // Packets received since power-on.
  std::uint32_t rx_packets{};
  // Packets lost since power-on, as counted by sequence number gaps.
  std::uint32_t dropped_packets{};
  // Most recent measured round-trip time in milliseconds.
  std::uint16_t round_trip_ms{};
  static constexpr const char* FULL_NAME = "lanyard.link.TelemetryLinkStats";
  static constexpr bool IS_DEPRECATED = false;
  static constexpr const char* FULL_NAME_AND_VERSION = "lanyard.link.TelemetryLinkStats.1.0";
  static constexpr std::size_t EXTENT_BYTES = 24U;
  static constexpr std::size_t SERIALIZATION_BUFFER_SIZE_BYTES = 24U;
  static constexpr bool WIRE_FLAT = true;
  static constexpr const char* WIRE_FLAT_REASON = "flat";
  static constexpr bool HOST_IMAGE = false;
  static constexpr const char* HOST_IMAGE_REASON = "nested-not-flat";
  static constexpr bool HAS_FIXED_PORT_ID = true;
  static constexpr std::uint16_t FIXED_PORT_ID = 6241U;
  LLVMDSDL_NODISCARD inline std::int8_t serialize(std::uint8_t* buffer, std::size_t* inout_buffer_size_bytes) const {
    return TelemetryLinkStats_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 TelemetryLinkStats_1_0_deserialize_(this, buffer, inout_buffer_size_bytes);
  }
  static const std::uint8_t* get_timestamp(const std::uint8_t* const buffer, const std::size_t buffer_size_bytes, std::size_t* const out_size)
  {
    const std::uint8_t* const buf = ((buffer != nullptr) ? buffer : reinterpret_cast<const std::uint8_t*>(""));
    const bool v0 = (static_cast<void>(buffer_size_bytes), true);
    const std::uint64_t v1 = (v0 ? 0ULL : buffer_size_bytes);
    const std::uint64_t v2 = (buffer_size_bytes - v1);
    *out_size = static_cast<std::size_t>(v2);
    return &buf[static_cast<std::size_t>(v1)];
  }

  static std::int8_t get_rssi_dbm(const std::uint8_t* const buffer, const std::size_t buffer_size_bytes)
  {
    const std::uint8_t* const buf = ((buffer != nullptr) ? buffer : reinterpret_cast<const std::uint8_t*>(""));
    const std::uint64_t value = static_cast<std::uint64_t>(dsdl_runtime_get_i8(buf, static_cast<std::size_t>(buffer_size_bytes), static_cast<std::size_t>(56ULL), 8U));
    const std::uint64_t value_2 = mlir_llvmdsdl_plan_scalar_signed_lanyard_link_TelemetryLinkStats_1_0_2_deser(value);
    return static_cast<std::int8_t>(value_2);
  }

  static std::int8_t set_rssi_dbm(std::uint8_t* const buffer, const std::size_t buffer_size_bytes, const std::int8_t member_value)
  {
    const std::uint64_t value = static_cast<std::uint64_t>(member_value);
    const bool is_null = (buffer == nullptr);
    const std::uint64_t v0 = (buffer_size_bytes * 8ULL);
    const bool v1 = (v0 >= 64ULL);
    const std::int8_t v2 = static_cast<std::int8_t>(v1 ? static_cast<std::int8_t>(0) : static_cast<std::int8_t>(-3));
    const std::int8_t v3 = static_cast<std::int8_t>(is_null ? static_cast<std::int8_t>(-2) : v2);
    const bool v4 = (v3 == static_cast<std::int8_t>(0));
    std::int8_t err{};
    if (v4) {
      const std::uint64_t value_2 = mlir_llvmdsdl_plan_scalar_signed_lanyard_link_TelemetryLinkStats_1_0_2_ser(value);
      const std::int8_t err_2 = dsdl_runtime_set_ixx(buffer, static_cast<std::size_t>(buffer_size_bytes), static_cast<std::size_t>(56ULL), static_cast<std::int64_t>(value_2), 8U);
      err = err_2;
    } else {
      err = v3;
    }
    return err;
  }

  static std::int8_t get_noise_floor_dbm(const std::uint8_t* const buffer, const std::size_t buffer_size_bytes)
  {
    const std::uint8_t* const buf = ((buffer != nullptr) ? buffer : reinterpret_cast<const std::uint8_t*>(""));
    const std::uint64_t value = static_cast<std::uint64_t>(dsdl_runtime_get_i8(buf, static_cast<std::size_t>(buffer_size_bytes), static_cast<std::size_t>(64ULL), 8U));
    const std::uint64_t value_2 = mlir_llvmdsdl_plan_scalar_signed_lanyard_link_TelemetryLinkStats_1_0_3_deser(value);
    return static_cast<std::int8_t>(value_2);
  }

  static std::int8_t set_noise_floor_dbm(std::uint8_t* const buffer, const std::size_t buffer_size_bytes, const std::int8_t member_value)
  {
    const std::uint64_t value = static_cast<std::uint64_t>(member_value);
    const bool is_null = (buffer == nullptr);
    const std::uint64_t v0 = (buffer_size_bytes * 8ULL);
    const bool v1 = (v0 >= 72ULL);
    const std::int8_t v2 = static_cast<std::int8_t>(v1 ? static_cast<std::int8_t>(0) : static_cast<std::int8_t>(-3));
    const std::int8_t v3 = static_cast<std::int8_t>(is_null ? static_cast<std::int8_t>(-2) : v2);
    const bool v4 = (v3 == static_cast<std::int8_t>(0));
    std::int8_t err{};
    if (v4) {
      const std::uint64_t value_2 = mlir_llvmdsdl_plan_scalar_signed_lanyard_link_TelemetryLinkStats_1_0_3_ser(value);
      const std::int8_t err_2 = dsdl_runtime_set_ixx(buffer, static_cast<std::size_t>(buffer_size_bytes), static_cast<std::size_t>(64ULL), static_cast<std::int64_t>(value_2), 8U);
      err = err_2;
    } else {
      err = v3;
    }
    return err;
  }

  static std::uint8_t get_link_quality_pct(const std::uint8_t* const buffer, const std::size_t buffer_size_bytes)
  {
    const std::uint8_t* const buf = ((buffer != nullptr) ? buffer : reinterpret_cast<const std::uint8_t*>(""));
    const std::uint64_t value = static_cast<std::uint64_t>(dsdl_runtime_get_u8(buf, static_cast<std::size_t>(buffer_size_bytes), static_cast<std::size_t>(72ULL), 8U));
    const std::uint64_t value_2 = mlir_llvmdsdl_plan_scalar_unsigned_lanyard_link_TelemetryLinkStats_1_0_4_deser(value);
    return static_cast<std::uint8_t>(value_2);
  }

  static std::int8_t set_link_quality_pct(std::uint8_t* const buffer, const std::size_t buffer_size_bytes, const std::uint8_t member_value)
  {
    const std::uint64_t value = static_cast<std::uint64_t>(member_value);
    const bool is_null = (buffer == nullptr);
    const std::uint64_t v0 = (buffer_size_bytes * 8ULL);
    const bool v1 = (v0 >= 80ULL);
    const std::int8_t v2 = static_cast<std::int8_t>(v1 ? static_cast<std::int8_t>(0) : static_cast<std::int8_t>(-3));
    const std::int8_t v3 = static_cast<std::int8_t>(is_null ? static_cast<std::int8_t>(-2) : v2);
    const bool v4 = (v3 == static_cast<std::int8_t>(0));
    std::int8_t err{};
    if (v4) {
      const std::uint64_t value_2 = mlir_llvmdsdl_plan_scalar_unsigned_lanyard_link_TelemetryLinkStats_1_0_4_ser(value);
      const std::int8_t err_2 = dsdl_runtime_set_uxx(buffer, static_cast<std::size_t>(buffer_size_bytes), static_cast<std::size_t>(72ULL), value_2, 8U);
      err = err_2;
    } else {
      err = v3;
    }
    return err;
  }

  static std::uint32_t get_tx_packets(const std::uint8_t* const buffer, const std::size_t buffer_size_bytes)
  {
    const std::uint8_t* const buf = ((buffer != nullptr) ? buffer : reinterpret_cast<const std::uint8_t*>(""));
    const std::uint64_t value = static_cast<std::uint64_t>(dsdl_runtime_get_u32(buf, static_cast<std::size_t>(buffer_size_bytes), static_cast<std::size_t>(80ULL), 32U));
    const std::uint64_t value_2 = mlir_llvmdsdl_plan_scalar_unsigned_lanyard_link_TelemetryLinkStats_1_0_5_deser(value);
    return static_cast<std::uint32_t>(value_2);
  }

  static std::int8_t set_tx_packets(std::uint8_t* const buffer, const std::size_t buffer_size_bytes, const std::uint32_t member_value)
  {
    const std::uint64_t value = static_cast<std::uint64_t>(member_value);
    const bool is_null = (buffer == nullptr);
    const std::uint64_t v0 = (buffer_size_bytes * 8ULL);
    const bool v1 = (v0 >= 112ULL);
    const std::int8_t v2 = static_cast<std::int8_t>(v1 ? static_cast<std::int8_t>(0) : static_cast<std::int8_t>(-3));
    const std::int8_t v3 = static_cast<std::int8_t>(is_null ? static_cast<std::int8_t>(-2) : v2);
    const bool v4 = (v3 == static_cast<std::int8_t>(0));
    std::int8_t err{};
    if (v4) {
      const std::uint64_t value_2 = mlir_llvmdsdl_plan_scalar_unsigned_lanyard_link_TelemetryLinkStats_1_0_5_ser(value);
      const std::int8_t err_2 = dsdl_runtime_set_uxx(buffer, static_cast<std::size_t>(buffer_size_bytes), static_cast<std::size_t>(80ULL), value_2, 32U);
      err = err_2;
    } else {
      err = v3;
    }
    return err;
  }

  static std::uint32_t get_rx_packets(const std::uint8_t* const buffer, const std::size_t buffer_size_bytes)
  {
    const std::uint8_t* const buf = ((buffer != nullptr) ? buffer : reinterpret_cast<const std::uint8_t*>(""));
    const std::uint64_t value = static_cast<std::uint64_t>(dsdl_runtime_get_u32(buf, static_cast<std::size_t>(buffer_size_bytes), static_cast<std::size_t>(112ULL), 32U));
    const std::uint64_t value_2 = mlir_llvmdsdl_plan_scalar_unsigned_lanyard_link_TelemetryLinkStats_1_0_6_deser(value);
    return static_cast<std::uint32_t>(value_2);
  }

  static std::int8_t set_rx_packets(std::uint8_t* const buffer, const std::size_t buffer_size_bytes, const std::uint32_t member_value)
  {
    const std::uint64_t value = static_cast<std::uint64_t>(member_value);
    const bool is_null = (buffer == nullptr);
    const std::uint64_t v0 = (buffer_size_bytes * 8ULL);
    const bool v1 = (v0 >= 144ULL);
    const std::int8_t v2 = static_cast<std::int8_t>(v1 ? static_cast<std::int8_t>(0) : static_cast<std::int8_t>(-3));
    const std::int8_t v3 = static_cast<std::int8_t>(is_null ? static_cast<std::int8_t>(-2) : v2);
    const bool v4 = (v3 == static_cast<std::int8_t>(0));
    std::int8_t err{};
    if (v4) {
      const std::uint64_t value_2 = mlir_llvmdsdl_plan_scalar_unsigned_lanyard_link_TelemetryLinkStats_1_0_6_ser(value);
      const std::int8_t err_2 = dsdl_runtime_set_uxx(buffer, static_cast<std::size_t>(buffer_size_bytes), static_cast<std::size_t>(112ULL), value_2, 32U);
      err = err_2;
    } else {
      err = v3;
    }
    return err;
  }

  static std::uint32_t get_dropped_packets(const std::uint8_t* const buffer, const std::size_t buffer_size_bytes)
  {
    const std::uint8_t* const buf = ((buffer != nullptr) ? buffer : reinterpret_cast<const std::uint8_t*>(""));
    const std::uint64_t value = static_cast<std::uint64_t>(dsdl_runtime_get_u32(buf, static_cast<std::size_t>(buffer_size_bytes), static_cast<std::size_t>(144ULL), 32U));
    const std::uint64_t value_2 = mlir_llvmdsdl_plan_scalar_unsigned_lanyard_link_TelemetryLinkStats_1_0_7_deser(value);
    return static_cast<std::uint32_t>(value_2);
  }

  static std::int8_t set_dropped_packets(std::uint8_t* const buffer, const std::size_t buffer_size_bytes, const std::uint32_t member_value)
  {
    const std::uint64_t value = static_cast<std::uint64_t>(member_value);
    const bool is_null = (buffer == nullptr);
    const std::uint64_t v0 = (buffer_size_bytes * 8ULL);
    const bool v1 = (v0 >= 176ULL);
    const std::int8_t v2 = static_cast<std::int8_t>(v1 ? static_cast<std::int8_t>(0) : static_cast<std::int8_t>(-3));
    const std::int8_t v3 = static_cast<std::int8_t>(is_null ? static_cast<std::int8_t>(-2) : v2);
    const bool v4 = (v3 == static_cast<std::int8_t>(0));
    std::int8_t err{};
    if (v4) {
      const std::uint64_t value_2 = mlir_llvmdsdl_plan_scalar_unsigned_lanyard_link_TelemetryLinkStats_1_0_7_ser(value);
      const std::int8_t err_2 = dsdl_runtime_set_uxx(buffer, static_cast<std::size_t>(buffer_size_bytes), static_cast<std::size_t>(144ULL), value_2, 32U);
      err = err_2;
    } else {
      err = v3;
    }
    return err;
  }

  static std::uint16_t get_round_trip_ms(const std::uint8_t* const buffer, const std::size_t buffer_size_bytes)
  {
    const std::uint8_t* const buf = ((buffer != nullptr) ? buffer : reinterpret_cast<const std::uint8_t*>(""));
    const std::uint64_t value = static_cast<std::uint64_t>(dsdl_runtime_get_u16(buf, static_cast<std::size_t>(buffer_size_bytes), static_cast<std::size_t>(176ULL), 16U));
    const std::uint64_t value_2 = mlir_llvmdsdl_plan_scalar_unsigned_lanyard_link_TelemetryLinkStats_1_0_8_deser(value);
    return static_cast<std::uint16_t>(value_2);
  }

  static std::int8_t set_round_trip_ms(std::uint8_t* const buffer, const std::size_t buffer_size_bytes, const std::uint16_t member_value)
  {
    const std::uint64_t value = static_cast<std::uint64_t>(member_value);
    const bool is_null = (buffer == nullptr);
    const std::uint64_t v0 = (buffer_size_bytes * 8ULL);
    const bool v1 = (v0 >= 192ULL);
    const std::int8_t v2 = static_cast<std::int8_t>(v1 ? static_cast<std::int8_t>(0) : static_cast<std::int8_t>(-3));
    const std::int8_t v3 = static_cast<std::int8_t>(is_null ? static_cast<std::int8_t>(-2) : v2);
    const bool v4 = (v3 == static_cast<std::int8_t>(0));
    std::int8_t err{};
    if (v4) {
      const std::uint64_t value_2 = mlir_llvmdsdl_plan_scalar_unsigned_lanyard_link_TelemetryLinkStats_1_0_8_ser(value);
      const std::int8_t err_2 = dsdl_runtime_set_uxx(buffer, static_cast<std::size_t>(buffer_size_bytes), static_cast<std::size_t>(176ULL), value_2, 16U);
      err = err_2;
    } else {
      err = v3;
    }
    return err;
  }

};

Rust (std)

/// Health of the air-to-ground telemetry link, published at 1 Hz by the
/// radio modem node.
///
/// LEAST SUPPORTED TRANSPORT: CAN FD.
#[derive(Clone, Debug, PartialEq)]
pub struct lanyard_link_TelemetryLinkStats_1_0 {
    /// Moment the counters below were sampled, on the synchronised clock
    /// every node shares, so a ground station can align this sample with the
    /// vehicle state that produced it.
    pub timestamp: uavcan_time_SynchronizedTimestamp_1_0,
    /// Received signal strength in dBm at the air end of the link.
    pub rssi_dbm: i8,
    /// Measured noise floor in dBm. The difference between this and rssi_dbm
    /// is the link margin, which is the number an operator actually watches.
    pub noise_floor_dbm: i8,
    /// Percentage of expected packets successfully received over the last
    /// second, 0 to 100.
    pub link_quality_pct: u8,
    /// Packets transmitted since power-on.
    pub tx_packets: u32,
    /// Packets received since power-on.
    pub rx_packets: u32,
    /// Packets lost since power-on, as counted by sequence number gaps.
    pub dropped_packets: u32,
    /// Most recent measured round-trip time in milliseconds.
    pub round_trip_ms: u16,
}

Rust (no-std)

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

/// Health of the air-to-ground telemetry link, published at 1 Hz by the
/// radio modem node.
///
/// LEAST SUPPORTED TRANSPORT: CAN FD.
#[derive(Clone, Debug, PartialEq)]
pub struct lanyard_link_TelemetryLinkStats_1_0 {
    /// Moment the counters below were sampled, on the synchronised clock
    /// every node shares, so a ground station can align this sample with the
    /// vehicle state that produced it.
    pub timestamp: uavcan_time_SynchronizedTimestamp_1_0,
    /// Received signal strength in dBm at the air end of the link.
    pub rssi_dbm: i8,
    /// Measured noise floor in dBm. The difference between this and rssi_dbm
    /// is the link margin, which is the number an operator actually watches.
    pub noise_floor_dbm: i8,
    /// Percentage of expected packets successfully received over the last
    /// second, 0 to 100.
    pub link_quality_pct: u8,
    /// Packets transmitted since power-on.
    pub tx_packets: u32,
    /// Packets received since power-on.
    pub rx_packets: u32,
    /// Packets lost since power-on, as counted by sequence number gaps.
    pub dropped_packets: u32,
    /// Most recent measured round-trip time in milliseconds.
    pub round_trip_ms: u16,
}

Go

// Health of the air-to-ground telemetry link, published at 1 Hz by the
// radio modem node.
//
// LEAST SUPPORTED TRANSPORT: CAN FD.
type TelemetryLinkStats_1_0 struct {
    // Moment the counters below were sampled, on the synchronised clock
    // every node shares, so a ground station can align this sample with the
    // vehicle state that produced it.
    Timestamp pkg_uavcan_time.SynchronizedTimestamp_1_0
    // Received signal strength in dBm at the air end of the link.
    RssiDbm int8
    // Measured noise floor in dBm. The difference between this and rssi_dbm
    // is the link margin, which is the number an operator actually watches.
    NoiseFloorDbm int8
    // Percentage of expected packets successfully received over the last
    // second, 0 to 100.
    LinkQualityPct uint8
    // Packets transmitted since power-on.
    TxPackets uint32
    // Packets received since power-on.
    RxPackets uint32
    // Packets lost since power-on, as counted by sequence number gaps.
    DroppedPackets uint32
    // Most recent measured round-trip time in milliseconds.
    RoundTripMs uint16
}

TypeScript

// Health of the air-to-ground telemetry link, published at 1 Hz by the
// radio modem node.
//
// LEAST SUPPORTED TRANSPORT: CAN FD.
export interface TelemetryLinkStats_1_0 {
  // Moment the counters below were sampled, on the synchronised clock
  // every node shares, so a ground station can align this sample with the
  // vehicle state that produced it.
  timestamp: SynchronizedTimestamp_1_0;
  // Received signal strength in dBm at the air end of the link.
  rssi_dbm: number;
  // Measured noise floor in dBm. The difference between this and rssi_dbm
  // is the link margin, which is the number an operator actually watches.
  noise_floor_dbm: number;
  // Percentage of expected packets successfully received over the last
  // second, 0 to 100.
  link_quality_pct: number;
  // Packets transmitted since power-on.
  tx_packets: number;
  // Packets received since power-on.
  rx_packets: number;
  // Packets lost since power-on, as counted by sequence number gaps.
  dropped_packets: number;
  // Most recent measured round-trip time in milliseconds.
  round_trip_ms: number;
}

Python

# Health of the air-to-ground telemetry link, published at 1 Hz by the
# radio modem node.
#
# LEAST SUPPORTED TRANSPORT: CAN FD.
@dataclass(slots=True)
class TelemetryLinkStats_1_0:
    # Moment the counters below were sampled, on the synchronised clock
    # every node shares, so a ground station can align this sample with the
    # vehicle state that produced it.
    timestamp: SynchronizedTimestamp_1_0 = field(default_factory=lambda: SynchronizedTimestamp_1_0())
    # Received signal strength in dBm at the air end of the link.
    rssi_dbm: int = 0
    # Measured noise floor in dBm. The difference between this and rssi_dbm
    # is the link margin, which is the number an operator actually watches.
    noise_floor_dbm: int = 0
    # Percentage of expected packets successfully received over the last
    # second, 0 to 100.
    link_quality_pct: int = 0
    # Packets transmitted since power-on.
    tx_packets: int = 0
    # Packets received since power-on.
    rx_packets: int = 0
    # Packets lost since power-on, as counted by sequence number gaps.
    dropped_packets: int = 0
    # Most recent measured round-trip time in milliseconds.
    round_trip_ms: int = 0

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