safe_drive/msg/jazzy/common_interfaces/std_srvs/srv/
trigger.rs1use super::super::super::*;
3use super::super::*;
4use crate::msg::common_interfaces::*;
5use crate::msg::*;
6use crate::rcl;
7
8extern "C" {
9 fn std_srvs__srv__Trigger_Request__init(msg: *mut TriggerRequest) -> bool;
10 fn std_srvs__srv__Trigger_Request__fini(msg: *mut TriggerRequest);
11 fn std_srvs__srv__Trigger_Request__Sequence__init(
12 msg: *mut TriggerRequestSeqRaw,
13 size: usize,
14 ) -> bool;
15 fn std_srvs__srv__Trigger_Request__Sequence__fini(msg: *mut TriggerRequestSeqRaw);
16 fn std_srvs__srv__Trigger_Response__init(msg: *mut TriggerResponse) -> bool;
17 fn std_srvs__srv__Trigger_Response__fini(msg: *mut TriggerResponse);
18 fn std_srvs__srv__Trigger_Response__Sequence__init(
19 msg: *mut TriggerResponseSeqRaw,
20 size: usize,
21 ) -> bool;
22 fn std_srvs__srv__Trigger_Response__Sequence__fini(msg: *mut TriggerResponseSeqRaw);
23 fn rosidl_typesupport_c__get_service_type_support_handle__std_srvs__srv__Trigger(
24 ) -> *const rcl::rosidl_service_type_support_t;
25 fn rosidl_typesupport_c__get_message_type_support_handle__std_srvs__srv__Trigger_Request(
26 ) -> *const rcl::rosidl_message_type_support_t;
27 fn rosidl_typesupport_c__get_message_type_support_handle__std_srvs__srv__Trigger_Response(
28 ) -> *const rcl::rosidl_message_type_support_t;
29}
30
31#[repr(C)]
32#[derive(Debug)]
33pub struct TriggerRequest {
34 _unused: u8,
35}
36
37#[repr(C)]
38#[derive(Debug)]
39pub struct TriggerResponse {
40 pub success: bool,
41 pub message: crate::msg::RosString<0>,
42}
43
44impl TriggerRequest {
45 pub fn new() -> Option<Self> {
46 let mut msg: Self = unsafe { std::mem::MaybeUninit::zeroed().assume_init() };
47 if unsafe { std_srvs__srv__Trigger_Request__init(&mut msg) } {
48 Some(msg)
49 } else {
50 None
51 }
52 }
53}
54
55impl Drop for TriggerRequest {
56 fn drop(&mut self) {
57 unsafe { std_srvs__srv__Trigger_Request__fini(self) };
58 }
59}
60
61#[repr(C)]
62#[derive(Debug)]
63struct TriggerRequestSeqRaw {
64 data: *mut TriggerRequest,
65 size: size_t,
66 capacity: size_t,
67}
68
69#[repr(C)]
73#[derive(Debug)]
74pub struct TriggerRequestSeq<const N: usize> {
75 data: *mut TriggerRequest,
76 size: size_t,
77 capacity: size_t,
78}
79
80impl<const N: usize> TriggerRequestSeq<N> {
81 pub fn new(size: usize) -> Option<Self> {
85 if N != 0 && size > N {
86 return None;
88 }
89
90 let mut msg: TriggerRequestSeqRaw =
91 unsafe { std::mem::MaybeUninit::zeroed().assume_init() };
92 if unsafe { std_srvs__srv__Trigger_Request__Sequence__init(&mut msg, size) } {
93 Some(Self {
94 data: msg.data,
95 size: msg.size,
96 capacity: msg.capacity,
97 })
98 } else {
99 None
100 }
101 }
102
103 pub fn null() -> Self {
104 let msg: TriggerRequestSeqRaw = unsafe { std::mem::MaybeUninit::zeroed().assume_init() };
105 Self {
106 data: msg.data,
107 size: msg.size,
108 capacity: msg.capacity,
109 }
110 }
111
112 pub fn as_slice(&self) -> &[TriggerRequest] {
113 if self.data.is_null() {
114 &[]
115 } else {
116 let s = unsafe { std::slice::from_raw_parts(self.data, self.size as _) };
117 s
118 }
119 }
120
121 pub fn as_slice_mut(&mut self) -> &mut [TriggerRequest] {
122 if self.data.is_null() {
123 &mut []
124 } else {
125 let s = unsafe { std::slice::from_raw_parts_mut(self.data, self.size as _) };
126 s
127 }
128 }
129
130 pub fn iter(&self) -> std::slice::Iter<'_, TriggerRequest> {
131 self.as_slice().iter()
132 }
133
134 pub fn iter_mut(&mut self) -> std::slice::IterMut<'_, TriggerRequest> {
135 self.as_slice_mut().iter_mut()
136 }
137
138 pub fn len(&self) -> usize {
139 self.as_slice().len()
140 }
141
142 pub fn is_empty(&self) -> bool {
143 self.len() == 0
144 }
145}
146
147impl<const N: usize> Drop for TriggerRequestSeq<N> {
148 fn drop(&mut self) {
149 let mut msg = TriggerRequestSeqRaw {
150 data: self.data,
151 size: self.size,
152 capacity: self.capacity,
153 };
154 unsafe { std_srvs__srv__Trigger_Request__Sequence__fini(&mut msg) };
155 }
156}
157
158unsafe impl<const N: usize> Send for TriggerRequestSeq<N> {}
159unsafe impl<const N: usize> Sync for TriggerRequestSeq<N> {}
160
161impl TriggerResponse {
162 pub fn new() -> Option<Self> {
163 let mut msg: Self = unsafe { std::mem::MaybeUninit::zeroed().assume_init() };
164 if unsafe { std_srvs__srv__Trigger_Response__init(&mut msg) } {
165 Some(msg)
166 } else {
167 None
168 }
169 }
170}
171
172impl Drop for TriggerResponse {
173 fn drop(&mut self) {
174 unsafe { std_srvs__srv__Trigger_Response__fini(self) };
175 }
176}
177
178#[repr(C)]
179#[derive(Debug)]
180struct TriggerResponseSeqRaw {
181 data: *mut TriggerResponse,
182 size: size_t,
183 capacity: size_t,
184}
185
186#[repr(C)]
190#[derive(Debug)]
191pub struct TriggerResponseSeq<const N: usize> {
192 data: *mut TriggerResponse,
193 size: size_t,
194 capacity: size_t,
195}
196
197impl<const N: usize> TriggerResponseSeq<N> {
198 pub fn new(size: usize) -> Option<Self> {
202 if N != 0 && size > N {
203 return None;
205 }
206
207 let mut msg: TriggerResponseSeqRaw =
208 unsafe { std::mem::MaybeUninit::zeroed().assume_init() };
209 if unsafe { std_srvs__srv__Trigger_Response__Sequence__init(&mut msg, size) } {
210 Some(Self {
211 data: msg.data,
212 size: msg.size,
213 capacity: msg.capacity,
214 })
215 } else {
216 None
217 }
218 }
219
220 pub fn null() -> Self {
221 let msg: TriggerResponseSeqRaw = unsafe { std::mem::MaybeUninit::zeroed().assume_init() };
222 Self {
223 data: msg.data,
224 size: msg.size,
225 capacity: msg.capacity,
226 }
227 }
228
229 pub fn as_slice(&self) -> &[TriggerResponse] {
230 if self.data.is_null() {
231 &[]
232 } else {
233 let s = unsafe { std::slice::from_raw_parts(self.data, self.size as _) };
234 s
235 }
236 }
237
238 pub fn as_slice_mut(&mut self) -> &mut [TriggerResponse] {
239 if self.data.is_null() {
240 &mut []
241 } else {
242 let s = unsafe { std::slice::from_raw_parts_mut(self.data, self.size as _) };
243 s
244 }
245 }
246
247 pub fn iter(&self) -> std::slice::Iter<'_, TriggerResponse> {
248 self.as_slice().iter()
249 }
250
251 pub fn iter_mut(&mut self) -> std::slice::IterMut<'_, TriggerResponse> {
252 self.as_slice_mut().iter_mut()
253 }
254
255 pub fn len(&self) -> usize {
256 self.as_slice().len()
257 }
258
259 pub fn is_empty(&self) -> bool {
260 self.len() == 0
261 }
262}
263
264impl<const N: usize> Drop for TriggerResponseSeq<N> {
265 fn drop(&mut self) {
266 let mut msg = TriggerResponseSeqRaw {
267 data: self.data,
268 size: self.size,
269 capacity: self.capacity,
270 };
271 unsafe { std_srvs__srv__Trigger_Response__Sequence__fini(&mut msg) };
272 }
273}
274
275unsafe impl<const N: usize> Send for TriggerResponseSeq<N> {}
276unsafe impl<const N: usize> Sync for TriggerResponseSeq<N> {}
277
278pub struct Trigger;
279
280impl ServiceMsg for Trigger {
281 type Request = TriggerRequest;
282 type Response = TriggerResponse;
283 fn type_support() -> *const rcl::rosidl_service_type_support_t {
284 unsafe { rosidl_typesupport_c__get_service_type_support_handle__std_srvs__srv__Trigger() }
285 }
286}
287
288impl TypeSupport for TriggerRequest {
289 fn type_support() -> *const rcl::rosidl_message_type_support_t {
290 unsafe {
291 rosidl_typesupport_c__get_message_type_support_handle__std_srvs__srv__Trigger_Request()
292 }
293 }
294}
295
296impl TypeSupport for TriggerResponse {
297 fn type_support() -> *const rcl::rosidl_message_type_support_t {
298 unsafe {
299 rosidl_typesupport_c__get_message_type_support_handle__std_srvs__srv__Trigger_Response()
300 }
301 }
302}