Skip to main content

nros_diagnostic_msgs/srv/
add_diagnostics.rs

1// nros service type - pure Rust, no_std compatible
2// Package: diagnostic_msgs
3// Service: AddDiagnostics
4
5use nros_core::{Deserialize, RosMessage, RosService, Serialize};
6use nros_serdes::{CdrReader, CdrWriter, DeserError, SerError};
7
8/// AddDiagnostics request message
9#[derive(Debug, Clone, Default, PartialEq)]
10pub struct AddDiagnosticsRequest {
11    pub load_namespace: heapless::String<256>,
12}
13
14impl Serialize for AddDiagnosticsRequest {
15    fn serialize(&self, writer: &mut CdrWriter) -> Result<(), SerError> {
16        // phase-303 W4 (#0267) — DHEADER wrap (no-op under XCDR1).
17        let __dh = writer.begin_dheader()?;
18        writer.write_string(self.load_namespace.as_str())?;
19        writer.end_dheader(__dh)?;
20        Ok(())
21    }
22}
23
24impl Deserialize for AddDiagnosticsRequest {
25    fn deserialize(reader: &mut CdrReader) -> Result<Self, DeserError> {
26        let __dh = reader.begin_dheader()?;
27        let __value = Self {
28            load_namespace: {
29                let s = reader.read_string()?;
30                heapless::String::try_from(s).map_err(|_| DeserError::CapacityExceeded)?
31            },
32        };
33        reader.end_dheader(__dh)?;
34        Ok(__value)
35    }
36}
37
38impl RosMessage for AddDiagnosticsRequest {
39    const TYPE_NAME: &'static str = "diagnostic_msgs::srv::dds_::AddDiagnostics_Request_";
40    const TYPE_HASH: &'static str = "TypeHashNotSupported";
41    // Issue 1179 -- see the message template: the bound, computed from the
42    // schema, on the one trait every backend's registration can read.
43    const MAX_SERIALIZED_BOUND: Option<usize> = ::nros_serdes::size::max_serialized_bound::<Self>();
44}
45
46// ── nros_serdes::Message — runtime field schema (Request) ───────────────────
47// Consumed by RMW backends that build wire-type descriptors at runtime
48// (Cyclone DDS dynamic types, …) without per-RMW codegen at compile time.
49
50impl ::nros_serdes::Message for AddDiagnosticsRequest {
51    const TYPE_NAME: &'static str = "diagnostic_msgs/srv/AddDiagnostics_Request";
52    const FIELDS: &'static [::nros_serdes::Field] = &[::nros_serdes::Field {
53        name: "load_namespace",
54        ty: ::nros_serdes::FieldType::String,
55        offset: ::core::mem::offset_of!(AddDiagnosticsRequest, load_namespace),
56    }];
57}
58
59/// AddDiagnostics response message
60#[derive(Debug, Clone, Default, PartialEq)]
61pub struct AddDiagnosticsResponse {
62    pub success: bool,
63    pub message: heapless::String<256>,
64}
65
66impl Serialize for AddDiagnosticsResponse {
67    fn serialize(&self, writer: &mut CdrWriter) -> Result<(), SerError> {
68        // phase-303 W4 (#0267) — DHEADER wrap (no-op under XCDR1).
69        let __dh = writer.begin_dheader()?;
70        writer.write_bool(self.success)?;
71        writer.write_string(self.message.as_str())?;
72        writer.end_dheader(__dh)?;
73        Ok(())
74    }
75}
76
77impl Deserialize for AddDiagnosticsResponse {
78    fn deserialize(reader: &mut CdrReader) -> Result<Self, DeserError> {
79        let __dh = reader.begin_dheader()?;
80        let __value = Self {
81            success: reader.read_bool()?,
82            message: {
83                let s = reader.read_string()?;
84                heapless::String::try_from(s).map_err(|_| DeserError::CapacityExceeded)?
85            },
86        };
87        reader.end_dheader(__dh)?;
88        Ok(__value)
89    }
90}
91
92impl RosMessage for AddDiagnosticsResponse {
93    const TYPE_NAME: &'static str = "diagnostic_msgs::srv::dds_::AddDiagnostics_Response_";
94    const TYPE_HASH: &'static str = "TypeHashNotSupported";
95    // Issue 1179 -- see the message template: the bound, computed from the
96    // schema, on the one trait every backend's registration can read.
97    const MAX_SERIALIZED_BOUND: Option<usize> = ::nros_serdes::size::max_serialized_bound::<Self>();
98}
99
100// ── nros_serdes::Message — runtime field schema (Response) ──────────────────
101
102impl ::nros_serdes::Message for AddDiagnosticsResponse {
103    const TYPE_NAME: &'static str = "diagnostic_msgs/srv/AddDiagnostics_Response";
104    const FIELDS: &'static [::nros_serdes::Field] = &[
105        ::nros_serdes::Field {
106            name: "success",
107            ty: ::nros_serdes::FieldType::Bool,
108            offset: ::core::mem::offset_of!(AddDiagnosticsResponse, success),
109        },
110        ::nros_serdes::Field {
111            name: "message",
112            ty: ::nros_serdes::FieldType::String,
113            offset: ::core::mem::offset_of!(AddDiagnosticsResponse, message),
114        },
115    ];
116}
117
118/// AddDiagnostics service definition
119pub struct AddDiagnostics;
120
121impl RosService for AddDiagnostics {
122    type Request = AddDiagnosticsRequest;
123    type Reply = AddDiagnosticsResponse;
124
125    const SERVICE_NAME: &'static str = "diagnostic_msgs::srv::dds_::AddDiagnostics_";
126    const SERVICE_HASH: &'static str = "TypeHashNotSupported";
127}