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 pub id: Option<u32>,
20 #[doc(hidden)]
21 pub __source_breaking: fidl::marker::SourceBreaking,
22}
23
24impl fidl::Persistable for AdcChannel {}
25
26#[derive(Clone, Debug, Default, PartialEq)]
27pub struct Metadata {
28 pub channels: Option<Vec<AdcChannel>>,
30 #[doc(hidden)]
31 pub __source_breaking: fidl::marker::SourceBreaking,
32}
33
34impl fidl::Persistable for Metadata {}
35impl fidl::Serializable for Metadata {
36 const SERIALIZABLE_NAME: &'static str = "fuchsia.hardware.adcimpl.Metadata";
37}
38
39mod internal {
40 use super::*;
41
42 impl AdcChannel {
43 #[inline(always)]
44 fn max_ordinal_present(&self) -> u64 {
45 if let Some(_) = self.id {
46 return 3;
47 }
48 if let Some(_) = self.name {
49 return 2;
50 }
51 if let Some(_) = self.idx {
52 return 1;
53 }
54 0
55 }
56 }
57
58 impl fidl::encoding::ValueTypeMarker for AdcChannel {
59 type Borrowed<'a> = &'a Self;
60 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
61 value
62 }
63 }
64
65 unsafe impl fidl::encoding::TypeMarker for AdcChannel {
66 type Owned = Self;
67
68 #[inline(always)]
69 fn inline_align(_context: fidl::encoding::Context) -> usize {
70 8
71 }
72
73 #[inline(always)]
74 fn inline_size(_context: fidl::encoding::Context) -> usize {
75 16
76 }
77 }
78
79 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AdcChannel, D>
80 for &AdcChannel
81 {
82 unsafe fn encode(
83 self,
84 encoder: &mut fidl::encoding::Encoder<'_, D>,
85 offset: usize,
86 mut depth: fidl::encoding::Depth,
87 ) -> fidl::Result<()> {
88 encoder.debug_check_bounds::<AdcChannel>(offset);
89 let max_ordinal: u64 = self.max_ordinal_present();
91 encoder.write_num(max_ordinal, offset);
92 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
93 if max_ordinal == 0 {
95 return Ok(());
96 }
97 depth.increment()?;
98 let envelope_size = 8;
99 let bytes_len = max_ordinal as usize * envelope_size;
100 #[allow(unused_variables)]
101 let offset = encoder.out_of_line_offset(bytes_len);
102 let mut _prev_end_offset: usize = 0;
103 if 1 > max_ordinal {
104 return Ok(());
105 }
106
107 let cur_offset: usize = (1 - 1) * envelope_size;
110
111 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
113
114 fidl::encoding::encode_in_envelope_optional::<u32, D>(
119 self.idx.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
120 encoder,
121 offset + cur_offset,
122 depth,
123 )?;
124
125 _prev_end_offset = cur_offset + envelope_size;
126 if 2 > max_ordinal {
127 return Ok(());
128 }
129
130 let cur_offset: usize = (2 - 1) * envelope_size;
133
134 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
136
137 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
142 self.name.as_ref().map(
143 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
144 ),
145 encoder,
146 offset + cur_offset,
147 depth,
148 )?;
149
150 _prev_end_offset = cur_offset + envelope_size;
151 if 3 > max_ordinal {
152 return Ok(());
153 }
154
155 let cur_offset: usize = (3 - 1) * envelope_size;
158
159 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
161
162 fidl::encoding::encode_in_envelope_optional::<u32, D>(
167 self.id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
168 encoder,
169 offset + cur_offset,
170 depth,
171 )?;
172
173 _prev_end_offset = cur_offset + envelope_size;
174
175 Ok(())
176 }
177 }
178
179 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AdcChannel {
180 #[inline(always)]
181 fn new_empty() -> Self {
182 Self::default()
183 }
184
185 unsafe fn decode(
186 &mut self,
187 decoder: &mut fidl::encoding::Decoder<'_, D>,
188 offset: usize,
189 mut depth: fidl::encoding::Depth,
190 ) -> fidl::Result<()> {
191 decoder.debug_check_bounds::<Self>(offset);
192 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
193 None => return Err(fidl::Error::NotNullable),
194 Some(len) => len,
195 };
196 if len == 0 {
198 return Ok(());
199 };
200 depth.increment()?;
201 let envelope_size = 8;
202 let bytes_len = len * envelope_size;
203 let offset = decoder.out_of_line_offset(bytes_len)?;
204 let mut _next_ordinal_to_read = 0;
206 let mut next_offset = offset;
207 let end_offset = offset + bytes_len;
208 _next_ordinal_to_read += 1;
209 if next_offset >= end_offset {
210 return Ok(());
211 }
212
213 while _next_ordinal_to_read < 1 {
215 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
216 _next_ordinal_to_read += 1;
217 next_offset += envelope_size;
218 }
219
220 let next_out_of_line = decoder.next_out_of_line();
221 let handles_before = decoder.remaining_handles();
222 if let Some((inlined, num_bytes, num_handles)) =
223 fidl::encoding::decode_envelope_header(decoder, next_offset)?
224 {
225 let member_inline_size =
226 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
227 if inlined != (member_inline_size <= 4) {
228 return Err(fidl::Error::InvalidInlineBitInEnvelope);
229 }
230 let inner_offset;
231 let mut inner_depth = depth.clone();
232 if inlined {
233 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
234 inner_offset = next_offset;
235 } else {
236 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
237 inner_depth.increment()?;
238 }
239 let val_ref = self.idx.get_or_insert_with(|| fidl::new_empty!(u32, D));
240 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
241 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
242 {
243 return Err(fidl::Error::InvalidNumBytesInEnvelope);
244 }
245 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
246 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
247 }
248 }
249
250 next_offset += envelope_size;
251 _next_ordinal_to_read += 1;
252 if next_offset >= end_offset {
253 return Ok(());
254 }
255
256 while _next_ordinal_to_read < 2 {
258 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
259 _next_ordinal_to_read += 1;
260 next_offset += envelope_size;
261 }
262
263 let next_out_of_line = decoder.next_out_of_line();
264 let handles_before = decoder.remaining_handles();
265 if let Some((inlined, num_bytes, num_handles)) =
266 fidl::encoding::decode_envelope_header(decoder, next_offset)?
267 {
268 let member_inline_size =
269 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
270 decoder.context,
271 );
272 if inlined != (member_inline_size <= 4) {
273 return Err(fidl::Error::InvalidInlineBitInEnvelope);
274 }
275 let inner_offset;
276 let mut inner_depth = depth.clone();
277 if inlined {
278 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
279 inner_offset = next_offset;
280 } else {
281 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
282 inner_depth.increment()?;
283 }
284 let val_ref = self
285 .name
286 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
287 fidl::decode!(
288 fidl::encoding::BoundedString<64>,
289 D,
290 val_ref,
291 decoder,
292 inner_offset,
293 inner_depth
294 )?;
295 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
296 {
297 return Err(fidl::Error::InvalidNumBytesInEnvelope);
298 }
299 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
300 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
301 }
302 }
303
304 next_offset += envelope_size;
305 _next_ordinal_to_read += 1;
306 if next_offset >= end_offset {
307 return Ok(());
308 }
309
310 while _next_ordinal_to_read < 3 {
312 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
313 _next_ordinal_to_read += 1;
314 next_offset += envelope_size;
315 }
316
317 let next_out_of_line = decoder.next_out_of_line();
318 let handles_before = decoder.remaining_handles();
319 if let Some((inlined, num_bytes, num_handles)) =
320 fidl::encoding::decode_envelope_header(decoder, next_offset)?
321 {
322 let member_inline_size =
323 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
324 if inlined != (member_inline_size <= 4) {
325 return Err(fidl::Error::InvalidInlineBitInEnvelope);
326 }
327 let inner_offset;
328 let mut inner_depth = depth.clone();
329 if inlined {
330 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
331 inner_offset = next_offset;
332 } else {
333 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
334 inner_depth.increment()?;
335 }
336 let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(u32, D));
337 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
338 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
339 {
340 return Err(fidl::Error::InvalidNumBytesInEnvelope);
341 }
342 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
343 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
344 }
345 }
346
347 next_offset += envelope_size;
348
349 while next_offset < end_offset {
351 _next_ordinal_to_read += 1;
352 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
353 next_offset += envelope_size;
354 }
355
356 Ok(())
357 }
358 }
359
360 impl Metadata {
361 #[inline(always)]
362 fn max_ordinal_present(&self) -> u64 {
363 if let Some(_) = self.channels {
364 return 1;
365 }
366 0
367 }
368 }
369
370 impl fidl::encoding::ValueTypeMarker for Metadata {
371 type Borrowed<'a> = &'a Self;
372 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
373 value
374 }
375 }
376
377 unsafe impl fidl::encoding::TypeMarker for Metadata {
378 type Owned = Self;
379
380 #[inline(always)]
381 fn inline_align(_context: fidl::encoding::Context) -> usize {
382 8
383 }
384
385 #[inline(always)]
386 fn inline_size(_context: fidl::encoding::Context) -> usize {
387 16
388 }
389 }
390
391 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Metadata, D> for &Metadata {
392 unsafe fn encode(
393 self,
394 encoder: &mut fidl::encoding::Encoder<'_, D>,
395 offset: usize,
396 mut depth: fidl::encoding::Depth,
397 ) -> fidl::Result<()> {
398 encoder.debug_check_bounds::<Metadata>(offset);
399 let max_ordinal: u64 = self.max_ordinal_present();
401 encoder.write_num(max_ordinal, offset);
402 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
403 if max_ordinal == 0 {
405 return Ok(());
406 }
407 depth.increment()?;
408 let envelope_size = 8;
409 let bytes_len = max_ordinal as usize * envelope_size;
410 #[allow(unused_variables)]
411 let offset = encoder.out_of_line_offset(bytes_len);
412 let mut _prev_end_offset: usize = 0;
413 if 1 > max_ordinal {
414 return Ok(());
415 }
416
417 let cur_offset: usize = (1 - 1) * envelope_size;
420
421 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
423
424 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<AdcChannel>, D>(
429 self.channels.as_ref().map(<fidl::encoding::UnboundedVector<AdcChannel> as fidl::encoding::ValueTypeMarker>::borrow),
430 encoder, offset + cur_offset, depth
431 )?;
432
433 _prev_end_offset = cur_offset + envelope_size;
434
435 Ok(())
436 }
437 }
438
439 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Metadata {
440 #[inline(always)]
441 fn new_empty() -> Self {
442 Self::default()
443 }
444
445 unsafe fn decode(
446 &mut self,
447 decoder: &mut fidl::encoding::Decoder<'_, D>,
448 offset: usize,
449 mut depth: fidl::encoding::Depth,
450 ) -> fidl::Result<()> {
451 decoder.debug_check_bounds::<Self>(offset);
452 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
453 None => return Err(fidl::Error::NotNullable),
454 Some(len) => len,
455 };
456 if len == 0 {
458 return Ok(());
459 };
460 depth.increment()?;
461 let envelope_size = 8;
462 let bytes_len = len * envelope_size;
463 let offset = decoder.out_of_line_offset(bytes_len)?;
464 let mut _next_ordinal_to_read = 0;
466 let mut next_offset = offset;
467 let end_offset = offset + bytes_len;
468 _next_ordinal_to_read += 1;
469 if next_offset >= end_offset {
470 return Ok(());
471 }
472
473 while _next_ordinal_to_read < 1 {
475 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
476 _next_ordinal_to_read += 1;
477 next_offset += envelope_size;
478 }
479
480 let next_out_of_line = decoder.next_out_of_line();
481 let handles_before = decoder.remaining_handles();
482 if let Some((inlined, num_bytes, num_handles)) =
483 fidl::encoding::decode_envelope_header(decoder, next_offset)?
484 {
485 let member_inline_size = <fidl::encoding::UnboundedVector<AdcChannel> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
486 if inlined != (member_inline_size <= 4) {
487 return Err(fidl::Error::InvalidInlineBitInEnvelope);
488 }
489 let inner_offset;
490 let mut inner_depth = depth.clone();
491 if inlined {
492 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
493 inner_offset = next_offset;
494 } else {
495 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
496 inner_depth.increment()?;
497 }
498 let val_ref = self.channels.get_or_insert_with(|| {
499 fidl::new_empty!(fidl::encoding::UnboundedVector<AdcChannel>, D)
500 });
501 fidl::decode!(
502 fidl::encoding::UnboundedVector<AdcChannel>,
503 D,
504 val_ref,
505 decoder,
506 inner_offset,
507 inner_depth
508 )?;
509 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
510 {
511 return Err(fidl::Error::InvalidNumBytesInEnvelope);
512 }
513 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
514 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
515 }
516 }
517
518 next_offset += envelope_size;
519
520 while next_offset < end_offset {
522 _next_ordinal_to_read += 1;
523 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
524 next_offset += envelope_size;
525 }
526
527 Ok(())
528 }
529 }
530}