nros_diagnostic_msgs/msg/
diagnostic_array.rs1use nros_core::{Deserialize, RosMessage, Serialize};
6use nros_serdes::{CdrReader, CdrWriter, DeserError, SerError};
7
8#[derive(Debug, Clone, Default, PartialEq)]
10pub struct DiagnosticArray {
11 pub header: nros_std_msgs::msg::Header,
12 pub status: heapless::Vec<crate::msg::DiagnosticStatus, 4>,
13}
14
15impl Serialize for DiagnosticArray {
16 fn serialize(&self, writer: &mut CdrWriter) -> Result<(), SerError> {
17 let __dh = writer.begin_dheader()?;
20 self.header.serialize(writer)?;
21 writer.write_u32(self.status.len() as u32)?;
22 for item in &self.status {
23 item.serialize(writer)?;
24 }
25 writer.end_dheader(__dh)?;
26 Ok(())
27 }
28}
29
30impl Deserialize for DiagnosticArray {
31 fn deserialize(reader: &mut CdrReader) -> Result<Self, DeserError> {
32 let __dh = reader.begin_dheader()?;
35 let __value = Self {
36 header: Deserialize::deserialize(reader)?,
37 status: {
38 let len = reader.read_u32()? as usize;
39 let mut vec = heapless::Vec::new();
40 for _ in 0..len {
41 vec.push(Deserialize::deserialize(reader)?)
42 .map_err(|_| DeserError::CapacityExceeded)?;
43 }
44 vec
45 },
46 };
47 reader.end_dheader(__dh)?;
48 Ok(__value)
49 }
50}
51
52impl RosMessage for DiagnosticArray {
53 const TYPE_NAME: &'static str = "diagnostic_msgs::msg::dds_::DiagnosticArray_";
54 const TYPE_HASH: &'static str = "TypeHashNotSupported";
55 const STAMP_OFFSET: Option<usize> = Some(4);
58 const MAX_SERIALIZED_BOUND: Option<usize> = ::nros_serdes::size::max_serialized_bound::<Self>();
62}
63
64#[allow(non_upper_case_globals)]
69pub const NESTED_HEADER: ::nros_serdes::NestedType = ::nros_serdes::NestedType {
70 type_name: <nros_std_msgs::msg::Header as ::nros_serdes::Message>::TYPE_NAME,
71 fields: <nros_std_msgs::msg::Header as ::nros_serdes::Message>::FIELDS,
72};
73#[allow(non_upper_case_globals)]
74pub const NESTED_STATUS: ::nros_serdes::NestedType = ::nros_serdes::NestedType {
75 type_name: <crate::msg::DiagnosticStatus as ::nros_serdes::Message>::TYPE_NAME,
76 fields: <crate::msg::DiagnosticStatus as ::nros_serdes::Message>::FIELDS,
77};
78#[allow(non_upper_case_globals)]
79pub const FT_STATUS_ELEM: ::nros_serdes::FieldType =
80 ::nros_serdes::FieldType::Nested(&NESTED_STATUS);
81impl ::nros_serdes::Message for DiagnosticArray {
82 const TYPE_NAME: &'static str = "diagnostic_msgs/msg/DiagnosticArray";
83 const FIELDS: &'static [::nros_serdes::Field] = &[
84 ::nros_serdes::Field {
85 name: "header",
86 ty: ::nros_serdes::FieldType::Nested(&NESTED_HEADER),
87 offset: ::core::mem::offset_of!(DiagnosticArray, header),
88 },
89 ::nros_serdes::Field {
90 name: "status",
91 ty: ::nros_serdes::FieldType::BoundedSequence(4, &FT_STATUS_ELEM),
92 offset: ::core::mem::offset_of!(DiagnosticArray, status),
93 },
94 ];
95}