fidl_fuchsia_hardware_adcimpl__common/
fidl_fuchsia_hardware_adcimpl__common.rs1#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
8use futures::future::{self, MaybeDone, TryFutureExt};
9use zx_status;
10
11pub const ADC_NAME_MAX_LENGTH: u32 = 64;
12
13#[derive(Clone, Debug, Default, PartialEq)]
14pub struct AdcChannel {
15 pub idx: Option<u32>,
17 pub name: Option<String>,
19 #[doc(hidden)]
20 pub __source_breaking: fidl::marker::SourceBreaking,
21}
22
23impl fidl::Persistable for AdcChannel {}
24
25#[derive(Clone, Debug, Default, PartialEq)]
26pub struct Metadata {
27 pub channels: Option<Vec<AdcChannel>>,
29 #[doc(hidden)]
30 pub __source_breaking: fidl::marker::SourceBreaking,
31}
32
33impl fidl::Persistable for Metadata {}
34impl fidl::Serializable for Metadata {
35 const SERIALIZABLE_NAME: &'static str = "fuchsia.hardware.adcimpl.Metadata";
36}
37
38mod internal {
39 use super::*;
40
41 impl AdcChannel {
42 #[inline(always)]
43 fn max_ordinal_present(&self) -> u64 {
44 if let Some(_) = self.name {
45 return 2;
46 }
47 if let Some(_) = self.idx {
48 return 1;
49 }
50 0
51 }
52 }
53
54 impl fidl::encoding::ValueTypeMarker for AdcChannel {
55 type Borrowed<'a> = &'a Self;
56 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
57 value
58 }
59 }
60
61 unsafe impl fidl::encoding::TypeMarker for AdcChannel {
62 type Owned = Self;
63
64 #[inline(always)]
65 fn inline_align(_context: fidl::encoding::Context) -> usize {
66 8
67 }
68
69 #[inline(always)]
70 fn inline_size(_context: fidl::encoding::Context) -> usize {
71 16
72 }
73 }
74
75 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AdcChannel, D>
76 for &AdcChannel
77 {
78 unsafe fn encode(
79 self,
80 encoder: &mut fidl::encoding::Encoder<'_, D>,
81 offset: usize,
82 mut depth: fidl::encoding::Depth,
83 ) -> fidl::Result<()> {
84 encoder.debug_check_bounds::<AdcChannel>(offset);
85 let max_ordinal: u64 = self.max_ordinal_present();
87 encoder.write_num(max_ordinal, offset);
88 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
89 if max_ordinal == 0 {
91 return Ok(());
92 }
93 depth.increment()?;
94 let envelope_size = 8;
95 let bytes_len = max_ordinal as usize * envelope_size;
96 #[allow(unused_variables)]
97 let offset = encoder.out_of_line_offset(bytes_len);
98 let mut _prev_end_offset: usize = 0;
99 if 1 > max_ordinal {
100 return Ok(());
101 }
102
103 let cur_offset: usize = (1 - 1) * envelope_size;
106
107 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
109
110 fidl::encoding::encode_in_envelope_optional::<u32, D>(
115 self.idx.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
116 encoder,
117 offset + cur_offset,
118 depth,
119 )?;
120
121 _prev_end_offset = cur_offset + envelope_size;
122 if 2 > max_ordinal {
123 return Ok(());
124 }
125
126 let cur_offset: usize = (2 - 1) * envelope_size;
129
130 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
132
133 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
138 self.name.as_ref().map(
139 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
140 ),
141 encoder,
142 offset + cur_offset,
143 depth,
144 )?;
145
146 _prev_end_offset = cur_offset + envelope_size;
147
148 Ok(())
149 }
150 }
151
152 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AdcChannel {
153 #[inline(always)]
154 fn new_empty() -> Self {
155 Self::default()
156 }
157
158 unsafe fn decode(
159 &mut self,
160 decoder: &mut fidl::encoding::Decoder<'_, D>,
161 offset: usize,
162 mut depth: fidl::encoding::Depth,
163 ) -> fidl::Result<()> {
164 decoder.debug_check_bounds::<Self>(offset);
165 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
166 None => return Err(fidl::Error::NotNullable),
167 Some(len) => len,
168 };
169 if len == 0 {
171 return Ok(());
172 };
173 depth.increment()?;
174 let envelope_size = 8;
175 let bytes_len = len * envelope_size;
176 let offset = decoder.out_of_line_offset(bytes_len)?;
177 let mut _next_ordinal_to_read = 0;
179 let mut next_offset = offset;
180 let end_offset = offset + bytes_len;
181 _next_ordinal_to_read += 1;
182 if next_offset >= end_offset {
183 return Ok(());
184 }
185
186 while _next_ordinal_to_read < 1 {
188 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
189 _next_ordinal_to_read += 1;
190 next_offset += envelope_size;
191 }
192
193 let next_out_of_line = decoder.next_out_of_line();
194 let handles_before = decoder.remaining_handles();
195 if let Some((inlined, num_bytes, num_handles)) =
196 fidl::encoding::decode_envelope_header(decoder, next_offset)?
197 {
198 let member_inline_size =
199 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
200 if inlined != (member_inline_size <= 4) {
201 return Err(fidl::Error::InvalidInlineBitInEnvelope);
202 }
203 let inner_offset;
204 let mut inner_depth = depth.clone();
205 if inlined {
206 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
207 inner_offset = next_offset;
208 } else {
209 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
210 inner_depth.increment()?;
211 }
212 let val_ref = self.idx.get_or_insert_with(|| fidl::new_empty!(u32, D));
213 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
214 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
215 {
216 return Err(fidl::Error::InvalidNumBytesInEnvelope);
217 }
218 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
219 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
220 }
221 }
222
223 next_offset += envelope_size;
224 _next_ordinal_to_read += 1;
225 if next_offset >= end_offset {
226 return Ok(());
227 }
228
229 while _next_ordinal_to_read < 2 {
231 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
232 _next_ordinal_to_read += 1;
233 next_offset += envelope_size;
234 }
235
236 let next_out_of_line = decoder.next_out_of_line();
237 let handles_before = decoder.remaining_handles();
238 if let Some((inlined, num_bytes, num_handles)) =
239 fidl::encoding::decode_envelope_header(decoder, next_offset)?
240 {
241 let member_inline_size =
242 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
243 decoder.context,
244 );
245 if inlined != (member_inline_size <= 4) {
246 return Err(fidl::Error::InvalidInlineBitInEnvelope);
247 }
248 let inner_offset;
249 let mut inner_depth = depth.clone();
250 if inlined {
251 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
252 inner_offset = next_offset;
253 } else {
254 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
255 inner_depth.increment()?;
256 }
257 let val_ref = self
258 .name
259 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
260 fidl::decode!(
261 fidl::encoding::BoundedString<64>,
262 D,
263 val_ref,
264 decoder,
265 inner_offset,
266 inner_depth
267 )?;
268 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
269 {
270 return Err(fidl::Error::InvalidNumBytesInEnvelope);
271 }
272 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
273 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
274 }
275 }
276
277 next_offset += envelope_size;
278
279 while next_offset < end_offset {
281 _next_ordinal_to_read += 1;
282 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
283 next_offset += envelope_size;
284 }
285
286 Ok(())
287 }
288 }
289
290 impl Metadata {
291 #[inline(always)]
292 fn max_ordinal_present(&self) -> u64 {
293 if let Some(_) = self.channels {
294 return 1;
295 }
296 0
297 }
298 }
299
300 impl fidl::encoding::ValueTypeMarker for Metadata {
301 type Borrowed<'a> = &'a Self;
302 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
303 value
304 }
305 }
306
307 unsafe impl fidl::encoding::TypeMarker for Metadata {
308 type Owned = Self;
309
310 #[inline(always)]
311 fn inline_align(_context: fidl::encoding::Context) -> usize {
312 8
313 }
314
315 #[inline(always)]
316 fn inline_size(_context: fidl::encoding::Context) -> usize {
317 16
318 }
319 }
320
321 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Metadata, D> for &Metadata {
322 unsafe fn encode(
323 self,
324 encoder: &mut fidl::encoding::Encoder<'_, D>,
325 offset: usize,
326 mut depth: fidl::encoding::Depth,
327 ) -> fidl::Result<()> {
328 encoder.debug_check_bounds::<Metadata>(offset);
329 let max_ordinal: u64 = self.max_ordinal_present();
331 encoder.write_num(max_ordinal, offset);
332 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
333 if max_ordinal == 0 {
335 return Ok(());
336 }
337 depth.increment()?;
338 let envelope_size = 8;
339 let bytes_len = max_ordinal as usize * envelope_size;
340 #[allow(unused_variables)]
341 let offset = encoder.out_of_line_offset(bytes_len);
342 let mut _prev_end_offset: usize = 0;
343 if 1 > max_ordinal {
344 return Ok(());
345 }
346
347 let cur_offset: usize = (1 - 1) * envelope_size;
350
351 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
353
354 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<AdcChannel>, D>(
359 self.channels.as_ref().map(<fidl::encoding::UnboundedVector<AdcChannel> as fidl::encoding::ValueTypeMarker>::borrow),
360 encoder, offset + cur_offset, depth
361 )?;
362
363 _prev_end_offset = cur_offset + envelope_size;
364
365 Ok(())
366 }
367 }
368
369 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Metadata {
370 #[inline(always)]
371 fn new_empty() -> Self {
372 Self::default()
373 }
374
375 unsafe fn decode(
376 &mut self,
377 decoder: &mut fidl::encoding::Decoder<'_, D>,
378 offset: usize,
379 mut depth: fidl::encoding::Depth,
380 ) -> fidl::Result<()> {
381 decoder.debug_check_bounds::<Self>(offset);
382 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
383 None => return Err(fidl::Error::NotNullable),
384 Some(len) => len,
385 };
386 if len == 0 {
388 return Ok(());
389 };
390 depth.increment()?;
391 let envelope_size = 8;
392 let bytes_len = len * envelope_size;
393 let offset = decoder.out_of_line_offset(bytes_len)?;
394 let mut _next_ordinal_to_read = 0;
396 let mut next_offset = offset;
397 let end_offset = offset + bytes_len;
398 _next_ordinal_to_read += 1;
399 if next_offset >= end_offset {
400 return Ok(());
401 }
402
403 while _next_ordinal_to_read < 1 {
405 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
406 _next_ordinal_to_read += 1;
407 next_offset += envelope_size;
408 }
409
410 let next_out_of_line = decoder.next_out_of_line();
411 let handles_before = decoder.remaining_handles();
412 if let Some((inlined, num_bytes, num_handles)) =
413 fidl::encoding::decode_envelope_header(decoder, next_offset)?
414 {
415 let member_inline_size = <fidl::encoding::UnboundedVector<AdcChannel> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
416 if inlined != (member_inline_size <= 4) {
417 return Err(fidl::Error::InvalidInlineBitInEnvelope);
418 }
419 let inner_offset;
420 let mut inner_depth = depth.clone();
421 if inlined {
422 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
423 inner_offset = next_offset;
424 } else {
425 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
426 inner_depth.increment()?;
427 }
428 let val_ref = self.channels.get_or_insert_with(|| {
429 fidl::new_empty!(fidl::encoding::UnboundedVector<AdcChannel>, D)
430 });
431 fidl::decode!(
432 fidl::encoding::UnboundedVector<AdcChannel>,
433 D,
434 val_ref,
435 decoder,
436 inner_offset,
437 inner_depth
438 )?;
439 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
440 {
441 return Err(fidl::Error::InvalidNumBytesInEnvelope);
442 }
443 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
444 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
445 }
446 }
447
448 next_offset += envelope_size;
449
450 while next_offset < end_offset {
452 _next_ordinal_to_read += 1;
453 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
454 next_offset += envelope_size;
455 }
456
457 Ok(())
458 }
459 }
460}