1#![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 MAX_VALUE_SIZE: u8 = 255;
12
13#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
14pub enum Architecture {
15 X64,
16 Arm64,
17 #[doc(hidden)]
18 __SourceBreaking {
19 unknown_ordinal: u32,
20 },
21}
22
23#[macro_export]
25macro_rules! ArchitectureUnknown {
26 () => {
27 _
28 };
29}
30
31impl Architecture {
32 #[inline]
33 pub fn from_primitive(prim: u32) -> Option<Self> {
34 match prim {
35 1 => Some(Self::X64),
36 2 => Some(Self::Arm64),
37 _ => None,
38 }
39 }
40
41 #[inline]
42 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
43 match prim {
44 1 => Self::X64,
45 2 => Self::Arm64,
46 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
47 }
48 }
49
50 #[inline]
51 pub fn unknown() -> Self {
52 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
53 }
54
55 #[inline]
56 pub const fn into_primitive(self) -> u32 {
57 match self {
58 Self::X64 => 1,
59 Self::Arm64 => 2,
60 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
61 }
62 }
63
64 #[inline]
65 pub fn is_unknown(&self) -> bool {
66 match self {
67 Self::__SourceBreaking { unknown_ordinal: _ } => true,
68 _ => false,
69 }
70 }
71}
72
73#[derive(Clone, Debug, PartialEq)]
74pub struct BoardGetInfoResponse {
75 pub info: BoardInfo,
76}
77
78impl fidl::Persistable for BoardGetInfoResponse {}
79
80#[derive(Clone, Debug, PartialEq)]
81pub struct DeviceGetInfoResponse {
82 pub info: DeviceInfo,
83}
84
85impl fidl::Persistable for DeviceGetInfoResponse {}
86
87#[derive(Clone, Debug, PartialEq)]
88pub struct ProductGetInfoResponse {
89 pub info: ProductInfo,
90}
91
92impl fidl::Persistable for ProductGetInfoResponse {}
93
94#[derive(Clone, Debug, Default, PartialEq)]
97pub struct BoardInfo {
98 pub name: Option<String>,
99 pub revision: Option<String>,
100 pub cpu_architecture: Option<Architecture>,
101 #[doc(hidden)]
102 pub __source_breaking: fidl::marker::SourceBreaking,
103}
104
105impl fidl::Persistable for BoardInfo {}
106
107#[derive(Clone, Debug, Default, PartialEq)]
109pub struct DeviceInfo {
110 pub serial_number: Option<String>,
111 pub is_retail_demo: Option<bool>,
112 pub retail_sku: Option<String>,
113 #[doc(hidden)]
114 pub __source_breaking: fidl::marker::SourceBreaking,
115}
116
117impl fidl::Persistable for DeviceInfo {}
118
119#[derive(Clone, Debug, Default, PartialEq)]
122pub struct ProductInfo {
123 pub sku: Option<String>,
124 pub language: Option<String>,
125 pub regulatory_domain: Option<fidl_fuchsia_intl::RegulatoryDomain>,
126 pub locale_list: Option<Vec<fidl_fuchsia_intl::LocaleId>>,
127 pub name: Option<String>,
128 pub model: Option<String>,
129 pub manufacturer: Option<String>,
130 pub build_date: Option<String>,
131 pub build_name: Option<String>,
132 pub colorway: Option<String>,
133 pub display: Option<String>,
134 pub memory: Option<String>,
135 pub nand_storage: Option<String>,
136 pub emmc_storage: Option<String>,
137 pub microphone: Option<String>,
138 pub audio_amplifier: Option<String>,
139 #[doc(hidden)]
140 pub __source_breaking: fidl::marker::SourceBreaking,
141}
142
143impl fidl::Persistable for ProductInfo {}
144
145mod internal {
146 use super::*;
147 unsafe impl fidl::encoding::TypeMarker for Architecture {
148 type Owned = Self;
149
150 #[inline(always)]
151 fn inline_align(_context: fidl::encoding::Context) -> usize {
152 std::mem::align_of::<u32>()
153 }
154
155 #[inline(always)]
156 fn inline_size(_context: fidl::encoding::Context) -> usize {
157 std::mem::size_of::<u32>()
158 }
159
160 #[inline(always)]
161 fn encode_is_copy() -> bool {
162 false
163 }
164
165 #[inline(always)]
166 fn decode_is_copy() -> bool {
167 false
168 }
169 }
170
171 impl fidl::encoding::ValueTypeMarker for Architecture {
172 type Borrowed<'a> = Self;
173 #[inline(always)]
174 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
175 *value
176 }
177 }
178
179 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Architecture {
180 #[inline]
181 unsafe fn encode(
182 self,
183 encoder: &mut fidl::encoding::Encoder<'_, D>,
184 offset: usize,
185 _depth: fidl::encoding::Depth,
186 ) -> fidl::Result<()> {
187 encoder.debug_check_bounds::<Self>(offset);
188 encoder.write_num(self.into_primitive(), offset);
189 Ok(())
190 }
191 }
192
193 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Architecture {
194 #[inline(always)]
195 fn new_empty() -> Self {
196 Self::unknown()
197 }
198
199 #[inline]
200 unsafe fn decode(
201 &mut self,
202 decoder: &mut fidl::encoding::Decoder<'_, D>,
203 offset: usize,
204 _depth: fidl::encoding::Depth,
205 ) -> fidl::Result<()> {
206 decoder.debug_check_bounds::<Self>(offset);
207 let prim = decoder.read_num::<u32>(offset);
208
209 *self = Self::from_primitive_allow_unknown(prim);
210 Ok(())
211 }
212 }
213
214 impl fidl::encoding::ValueTypeMarker for BoardGetInfoResponse {
215 type Borrowed<'a> = &'a Self;
216 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
217 value
218 }
219 }
220
221 unsafe impl fidl::encoding::TypeMarker for BoardGetInfoResponse {
222 type Owned = Self;
223
224 #[inline(always)]
225 fn inline_align(_context: fidl::encoding::Context) -> usize {
226 8
227 }
228
229 #[inline(always)]
230 fn inline_size(_context: fidl::encoding::Context) -> usize {
231 16
232 }
233 }
234
235 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BoardGetInfoResponse, D>
236 for &BoardGetInfoResponse
237 {
238 #[inline]
239 unsafe fn encode(
240 self,
241 encoder: &mut fidl::encoding::Encoder<'_, D>,
242 offset: usize,
243 _depth: fidl::encoding::Depth,
244 ) -> fidl::Result<()> {
245 encoder.debug_check_bounds::<BoardGetInfoResponse>(offset);
246 fidl::encoding::Encode::<BoardGetInfoResponse, D>::encode(
248 (<BoardInfo as fidl::encoding::ValueTypeMarker>::borrow(&self.info),),
249 encoder,
250 offset,
251 _depth,
252 )
253 }
254 }
255 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<BoardInfo, D>>
256 fidl::encoding::Encode<BoardGetInfoResponse, D> for (T0,)
257 {
258 #[inline]
259 unsafe fn encode(
260 self,
261 encoder: &mut fidl::encoding::Encoder<'_, D>,
262 offset: usize,
263 depth: fidl::encoding::Depth,
264 ) -> fidl::Result<()> {
265 encoder.debug_check_bounds::<BoardGetInfoResponse>(offset);
266 self.0.encode(encoder, offset + 0, depth)?;
270 Ok(())
271 }
272 }
273
274 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BoardGetInfoResponse {
275 #[inline(always)]
276 fn new_empty() -> Self {
277 Self { info: fidl::new_empty!(BoardInfo, D) }
278 }
279
280 #[inline]
281 unsafe fn decode(
282 &mut self,
283 decoder: &mut fidl::encoding::Decoder<'_, D>,
284 offset: usize,
285 _depth: fidl::encoding::Depth,
286 ) -> fidl::Result<()> {
287 decoder.debug_check_bounds::<Self>(offset);
288 fidl::decode!(BoardInfo, D, &mut self.info, decoder, offset + 0, _depth)?;
290 Ok(())
291 }
292 }
293
294 impl fidl::encoding::ValueTypeMarker for DeviceGetInfoResponse {
295 type Borrowed<'a> = &'a Self;
296 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
297 value
298 }
299 }
300
301 unsafe impl fidl::encoding::TypeMarker for DeviceGetInfoResponse {
302 type Owned = Self;
303
304 #[inline(always)]
305 fn inline_align(_context: fidl::encoding::Context) -> usize {
306 8
307 }
308
309 #[inline(always)]
310 fn inline_size(_context: fidl::encoding::Context) -> usize {
311 16
312 }
313 }
314
315 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeviceGetInfoResponse, D>
316 for &DeviceGetInfoResponse
317 {
318 #[inline]
319 unsafe fn encode(
320 self,
321 encoder: &mut fidl::encoding::Encoder<'_, D>,
322 offset: usize,
323 _depth: fidl::encoding::Depth,
324 ) -> fidl::Result<()> {
325 encoder.debug_check_bounds::<DeviceGetInfoResponse>(offset);
326 fidl::encoding::Encode::<DeviceGetInfoResponse, D>::encode(
328 (<DeviceInfo as fidl::encoding::ValueTypeMarker>::borrow(&self.info),),
329 encoder,
330 offset,
331 _depth,
332 )
333 }
334 }
335 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<DeviceInfo, D>>
336 fidl::encoding::Encode<DeviceGetInfoResponse, D> for (T0,)
337 {
338 #[inline]
339 unsafe fn encode(
340 self,
341 encoder: &mut fidl::encoding::Encoder<'_, D>,
342 offset: usize,
343 depth: fidl::encoding::Depth,
344 ) -> fidl::Result<()> {
345 encoder.debug_check_bounds::<DeviceGetInfoResponse>(offset);
346 self.0.encode(encoder, offset + 0, depth)?;
350 Ok(())
351 }
352 }
353
354 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceGetInfoResponse {
355 #[inline(always)]
356 fn new_empty() -> Self {
357 Self { info: fidl::new_empty!(DeviceInfo, D) }
358 }
359
360 #[inline]
361 unsafe fn decode(
362 &mut self,
363 decoder: &mut fidl::encoding::Decoder<'_, D>,
364 offset: usize,
365 _depth: fidl::encoding::Depth,
366 ) -> fidl::Result<()> {
367 decoder.debug_check_bounds::<Self>(offset);
368 fidl::decode!(DeviceInfo, D, &mut self.info, decoder, offset + 0, _depth)?;
370 Ok(())
371 }
372 }
373
374 impl fidl::encoding::ValueTypeMarker for ProductGetInfoResponse {
375 type Borrowed<'a> = &'a Self;
376 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
377 value
378 }
379 }
380
381 unsafe impl fidl::encoding::TypeMarker for ProductGetInfoResponse {
382 type Owned = Self;
383
384 #[inline(always)]
385 fn inline_align(_context: fidl::encoding::Context) -> usize {
386 8
387 }
388
389 #[inline(always)]
390 fn inline_size(_context: fidl::encoding::Context) -> usize {
391 16
392 }
393 }
394
395 unsafe impl<D: fidl::encoding::ResourceDialect>
396 fidl::encoding::Encode<ProductGetInfoResponse, D> for &ProductGetInfoResponse
397 {
398 #[inline]
399 unsafe fn encode(
400 self,
401 encoder: &mut fidl::encoding::Encoder<'_, D>,
402 offset: usize,
403 _depth: fidl::encoding::Depth,
404 ) -> fidl::Result<()> {
405 encoder.debug_check_bounds::<ProductGetInfoResponse>(offset);
406 fidl::encoding::Encode::<ProductGetInfoResponse, D>::encode(
408 (<ProductInfo as fidl::encoding::ValueTypeMarker>::borrow(&self.info),),
409 encoder,
410 offset,
411 _depth,
412 )
413 }
414 }
415 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ProductInfo, D>>
416 fidl::encoding::Encode<ProductGetInfoResponse, D> for (T0,)
417 {
418 #[inline]
419 unsafe fn encode(
420 self,
421 encoder: &mut fidl::encoding::Encoder<'_, D>,
422 offset: usize,
423 depth: fidl::encoding::Depth,
424 ) -> fidl::Result<()> {
425 encoder.debug_check_bounds::<ProductGetInfoResponse>(offset);
426 self.0.encode(encoder, offset + 0, depth)?;
430 Ok(())
431 }
432 }
433
434 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
435 for ProductGetInfoResponse
436 {
437 #[inline(always)]
438 fn new_empty() -> Self {
439 Self { info: fidl::new_empty!(ProductInfo, D) }
440 }
441
442 #[inline]
443 unsafe fn decode(
444 &mut self,
445 decoder: &mut fidl::encoding::Decoder<'_, D>,
446 offset: usize,
447 _depth: fidl::encoding::Depth,
448 ) -> fidl::Result<()> {
449 decoder.debug_check_bounds::<Self>(offset);
450 fidl::decode!(ProductInfo, D, &mut self.info, decoder, offset + 0, _depth)?;
452 Ok(())
453 }
454 }
455
456 impl BoardInfo {
457 #[inline(always)]
458 fn max_ordinal_present(&self) -> u64 {
459 if let Some(_) = self.cpu_architecture {
460 return 3;
461 }
462 if let Some(_) = self.revision {
463 return 2;
464 }
465 if let Some(_) = self.name {
466 return 1;
467 }
468 0
469 }
470 }
471
472 impl fidl::encoding::ValueTypeMarker for BoardInfo {
473 type Borrowed<'a> = &'a Self;
474 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
475 value
476 }
477 }
478
479 unsafe impl fidl::encoding::TypeMarker for BoardInfo {
480 type Owned = Self;
481
482 #[inline(always)]
483 fn inline_align(_context: fidl::encoding::Context) -> usize {
484 8
485 }
486
487 #[inline(always)]
488 fn inline_size(_context: fidl::encoding::Context) -> usize {
489 16
490 }
491 }
492
493 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BoardInfo, D>
494 for &BoardInfo
495 {
496 unsafe fn encode(
497 self,
498 encoder: &mut fidl::encoding::Encoder<'_, D>,
499 offset: usize,
500 mut depth: fidl::encoding::Depth,
501 ) -> fidl::Result<()> {
502 encoder.debug_check_bounds::<BoardInfo>(offset);
503 let max_ordinal: u64 = self.max_ordinal_present();
505 encoder.write_num(max_ordinal, offset);
506 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
507 if max_ordinal == 0 {
509 return Ok(());
510 }
511 depth.increment()?;
512 let envelope_size = 8;
513 let bytes_len = max_ordinal as usize * envelope_size;
514 #[allow(unused_variables)]
515 let offset = encoder.out_of_line_offset(bytes_len);
516 let mut _prev_end_offset: usize = 0;
517 if 1 > max_ordinal {
518 return Ok(());
519 }
520
521 let cur_offset: usize = (1 - 1) * envelope_size;
524
525 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
527
528 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
533 self.name.as_ref().map(
534 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
535 ),
536 encoder,
537 offset + cur_offset,
538 depth,
539 )?;
540
541 _prev_end_offset = cur_offset + envelope_size;
542 if 2 > max_ordinal {
543 return Ok(());
544 }
545
546 let cur_offset: usize = (2 - 1) * envelope_size;
549
550 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
552
553 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
558 self.revision.as_ref().map(
559 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
560 ),
561 encoder,
562 offset + cur_offset,
563 depth,
564 )?;
565
566 _prev_end_offset = cur_offset + envelope_size;
567 if 3 > max_ordinal {
568 return Ok(());
569 }
570
571 let cur_offset: usize = (3 - 1) * envelope_size;
574
575 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
577
578 fidl::encoding::encode_in_envelope_optional::<Architecture, D>(
583 self.cpu_architecture
584 .as_ref()
585 .map(<Architecture as fidl::encoding::ValueTypeMarker>::borrow),
586 encoder,
587 offset + cur_offset,
588 depth,
589 )?;
590
591 _prev_end_offset = cur_offset + envelope_size;
592
593 Ok(())
594 }
595 }
596
597 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BoardInfo {
598 #[inline(always)]
599 fn new_empty() -> Self {
600 Self::default()
601 }
602
603 unsafe fn decode(
604 &mut self,
605 decoder: &mut fidl::encoding::Decoder<'_, D>,
606 offset: usize,
607 mut depth: fidl::encoding::Depth,
608 ) -> fidl::Result<()> {
609 decoder.debug_check_bounds::<Self>(offset);
610 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
611 None => return Err(fidl::Error::NotNullable),
612 Some(len) => len,
613 };
614 if len == 0 {
616 return Ok(());
617 };
618 depth.increment()?;
619 let envelope_size = 8;
620 let bytes_len = len * envelope_size;
621 let offset = decoder.out_of_line_offset(bytes_len)?;
622 let mut _next_ordinal_to_read = 0;
624 let mut next_offset = offset;
625 let end_offset = offset + bytes_len;
626 _next_ordinal_to_read += 1;
627 if next_offset >= end_offset {
628 return Ok(());
629 }
630
631 while _next_ordinal_to_read < 1 {
633 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
634 _next_ordinal_to_read += 1;
635 next_offset += envelope_size;
636 }
637
638 let next_out_of_line = decoder.next_out_of_line();
639 let handles_before = decoder.remaining_handles();
640 if let Some((inlined, num_bytes, num_handles)) =
641 fidl::encoding::decode_envelope_header(decoder, next_offset)?
642 {
643 let member_inline_size =
644 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
645 decoder.context,
646 );
647 if inlined != (member_inline_size <= 4) {
648 return Err(fidl::Error::InvalidInlineBitInEnvelope);
649 }
650 let inner_offset;
651 let mut inner_depth = depth.clone();
652 if inlined {
653 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
654 inner_offset = next_offset;
655 } else {
656 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
657 inner_depth.increment()?;
658 }
659 let val_ref = self
660 .name
661 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
662 fidl::decode!(
663 fidl::encoding::UnboundedString,
664 D,
665 val_ref,
666 decoder,
667 inner_offset,
668 inner_depth
669 )?;
670 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
671 {
672 return Err(fidl::Error::InvalidNumBytesInEnvelope);
673 }
674 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
675 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
676 }
677 }
678
679 next_offset += envelope_size;
680 _next_ordinal_to_read += 1;
681 if next_offset >= end_offset {
682 return Ok(());
683 }
684
685 while _next_ordinal_to_read < 2 {
687 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
688 _next_ordinal_to_read += 1;
689 next_offset += envelope_size;
690 }
691
692 let next_out_of_line = decoder.next_out_of_line();
693 let handles_before = decoder.remaining_handles();
694 if let Some((inlined, num_bytes, num_handles)) =
695 fidl::encoding::decode_envelope_header(decoder, next_offset)?
696 {
697 let member_inline_size =
698 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
699 decoder.context,
700 );
701 if inlined != (member_inline_size <= 4) {
702 return Err(fidl::Error::InvalidInlineBitInEnvelope);
703 }
704 let inner_offset;
705 let mut inner_depth = depth.clone();
706 if inlined {
707 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
708 inner_offset = next_offset;
709 } else {
710 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
711 inner_depth.increment()?;
712 }
713 let val_ref = self
714 .revision
715 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
716 fidl::decode!(
717 fidl::encoding::UnboundedString,
718 D,
719 val_ref,
720 decoder,
721 inner_offset,
722 inner_depth
723 )?;
724 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
725 {
726 return Err(fidl::Error::InvalidNumBytesInEnvelope);
727 }
728 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
729 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
730 }
731 }
732
733 next_offset += envelope_size;
734 _next_ordinal_to_read += 1;
735 if next_offset >= end_offset {
736 return Ok(());
737 }
738
739 while _next_ordinal_to_read < 3 {
741 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
742 _next_ordinal_to_read += 1;
743 next_offset += envelope_size;
744 }
745
746 let next_out_of_line = decoder.next_out_of_line();
747 let handles_before = decoder.remaining_handles();
748 if let Some((inlined, num_bytes, num_handles)) =
749 fidl::encoding::decode_envelope_header(decoder, next_offset)?
750 {
751 let member_inline_size =
752 <Architecture as fidl::encoding::TypeMarker>::inline_size(decoder.context);
753 if inlined != (member_inline_size <= 4) {
754 return Err(fidl::Error::InvalidInlineBitInEnvelope);
755 }
756 let inner_offset;
757 let mut inner_depth = depth.clone();
758 if inlined {
759 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
760 inner_offset = next_offset;
761 } else {
762 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
763 inner_depth.increment()?;
764 }
765 let val_ref =
766 self.cpu_architecture.get_or_insert_with(|| fidl::new_empty!(Architecture, D));
767 fidl::decode!(Architecture, D, val_ref, decoder, inner_offset, inner_depth)?;
768 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
769 {
770 return Err(fidl::Error::InvalidNumBytesInEnvelope);
771 }
772 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
773 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
774 }
775 }
776
777 next_offset += envelope_size;
778
779 while next_offset < end_offset {
781 _next_ordinal_to_read += 1;
782 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
783 next_offset += envelope_size;
784 }
785
786 Ok(())
787 }
788 }
789
790 impl DeviceInfo {
791 #[inline(always)]
792 fn max_ordinal_present(&self) -> u64 {
793 if let Some(_) = self.retail_sku {
794 return 3;
795 }
796 if let Some(_) = self.is_retail_demo {
797 return 2;
798 }
799 if let Some(_) = self.serial_number {
800 return 1;
801 }
802 0
803 }
804 }
805
806 impl fidl::encoding::ValueTypeMarker for DeviceInfo {
807 type Borrowed<'a> = &'a Self;
808 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
809 value
810 }
811 }
812
813 unsafe impl fidl::encoding::TypeMarker for DeviceInfo {
814 type Owned = Self;
815
816 #[inline(always)]
817 fn inline_align(_context: fidl::encoding::Context) -> usize {
818 8
819 }
820
821 #[inline(always)]
822 fn inline_size(_context: fidl::encoding::Context) -> usize {
823 16
824 }
825 }
826
827 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeviceInfo, D>
828 for &DeviceInfo
829 {
830 unsafe fn encode(
831 self,
832 encoder: &mut fidl::encoding::Encoder<'_, D>,
833 offset: usize,
834 mut depth: fidl::encoding::Depth,
835 ) -> fidl::Result<()> {
836 encoder.debug_check_bounds::<DeviceInfo>(offset);
837 let max_ordinal: u64 = self.max_ordinal_present();
839 encoder.write_num(max_ordinal, offset);
840 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
841 if max_ordinal == 0 {
843 return Ok(());
844 }
845 depth.increment()?;
846 let envelope_size = 8;
847 let bytes_len = max_ordinal as usize * envelope_size;
848 #[allow(unused_variables)]
849 let offset = encoder.out_of_line_offset(bytes_len);
850 let mut _prev_end_offset: usize = 0;
851 if 1 > max_ordinal {
852 return Ok(());
853 }
854
855 let cur_offset: usize = (1 - 1) * envelope_size;
858
859 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
861
862 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
867 self.serial_number.as_ref().map(
868 <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
869 ),
870 encoder,
871 offset + cur_offset,
872 depth,
873 )?;
874
875 _prev_end_offset = cur_offset + envelope_size;
876 if 2 > max_ordinal {
877 return Ok(());
878 }
879
880 let cur_offset: usize = (2 - 1) * envelope_size;
883
884 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
886
887 fidl::encoding::encode_in_envelope_optional::<bool, D>(
892 self.is_retail_demo.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
893 encoder,
894 offset + cur_offset,
895 depth,
896 )?;
897
898 _prev_end_offset = cur_offset + envelope_size;
899 if 3 > max_ordinal {
900 return Ok(());
901 }
902
903 let cur_offset: usize = (3 - 1) * envelope_size;
906
907 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
909
910 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
915 self.retail_sku.as_ref().map(
916 <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
917 ),
918 encoder,
919 offset + cur_offset,
920 depth,
921 )?;
922
923 _prev_end_offset = cur_offset + envelope_size;
924
925 Ok(())
926 }
927 }
928
929 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceInfo {
930 #[inline(always)]
931 fn new_empty() -> Self {
932 Self::default()
933 }
934
935 unsafe fn decode(
936 &mut self,
937 decoder: &mut fidl::encoding::Decoder<'_, D>,
938 offset: usize,
939 mut depth: fidl::encoding::Depth,
940 ) -> fidl::Result<()> {
941 decoder.debug_check_bounds::<Self>(offset);
942 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
943 None => return Err(fidl::Error::NotNullable),
944 Some(len) => len,
945 };
946 if len == 0 {
948 return Ok(());
949 };
950 depth.increment()?;
951 let envelope_size = 8;
952 let bytes_len = len * envelope_size;
953 let offset = decoder.out_of_line_offset(bytes_len)?;
954 let mut _next_ordinal_to_read = 0;
956 let mut next_offset = offset;
957 let end_offset = offset + bytes_len;
958 _next_ordinal_to_read += 1;
959 if next_offset >= end_offset {
960 return Ok(());
961 }
962
963 while _next_ordinal_to_read < 1 {
965 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
966 _next_ordinal_to_read += 1;
967 next_offset += envelope_size;
968 }
969
970 let next_out_of_line = decoder.next_out_of_line();
971 let handles_before = decoder.remaining_handles();
972 if let Some((inlined, num_bytes, num_handles)) =
973 fidl::encoding::decode_envelope_header(decoder, next_offset)?
974 {
975 let member_inline_size =
976 <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
977 decoder.context,
978 );
979 if inlined != (member_inline_size <= 4) {
980 return Err(fidl::Error::InvalidInlineBitInEnvelope);
981 }
982 let inner_offset;
983 let mut inner_depth = depth.clone();
984 if inlined {
985 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
986 inner_offset = next_offset;
987 } else {
988 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
989 inner_depth.increment()?;
990 }
991 let val_ref = self
992 .serial_number
993 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
994 fidl::decode!(
995 fidl::encoding::BoundedString<255>,
996 D,
997 val_ref,
998 decoder,
999 inner_offset,
1000 inner_depth
1001 )?;
1002 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1003 {
1004 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1005 }
1006 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1007 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1008 }
1009 }
1010
1011 next_offset += envelope_size;
1012 _next_ordinal_to_read += 1;
1013 if next_offset >= end_offset {
1014 return Ok(());
1015 }
1016
1017 while _next_ordinal_to_read < 2 {
1019 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1020 _next_ordinal_to_read += 1;
1021 next_offset += envelope_size;
1022 }
1023
1024 let next_out_of_line = decoder.next_out_of_line();
1025 let handles_before = decoder.remaining_handles();
1026 if let Some((inlined, num_bytes, num_handles)) =
1027 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1028 {
1029 let member_inline_size =
1030 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1031 if inlined != (member_inline_size <= 4) {
1032 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1033 }
1034 let inner_offset;
1035 let mut inner_depth = depth.clone();
1036 if inlined {
1037 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1038 inner_offset = next_offset;
1039 } else {
1040 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1041 inner_depth.increment()?;
1042 }
1043 let val_ref = self.is_retail_demo.get_or_insert_with(|| fidl::new_empty!(bool, D));
1044 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
1045 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1046 {
1047 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1048 }
1049 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1050 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1051 }
1052 }
1053
1054 next_offset += envelope_size;
1055 _next_ordinal_to_read += 1;
1056 if next_offset >= end_offset {
1057 return Ok(());
1058 }
1059
1060 while _next_ordinal_to_read < 3 {
1062 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1063 _next_ordinal_to_read += 1;
1064 next_offset += envelope_size;
1065 }
1066
1067 let next_out_of_line = decoder.next_out_of_line();
1068 let handles_before = decoder.remaining_handles();
1069 if let Some((inlined, num_bytes, num_handles)) =
1070 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1071 {
1072 let member_inline_size =
1073 <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
1074 decoder.context,
1075 );
1076 if inlined != (member_inline_size <= 4) {
1077 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1078 }
1079 let inner_offset;
1080 let mut inner_depth = depth.clone();
1081 if inlined {
1082 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1083 inner_offset = next_offset;
1084 } else {
1085 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1086 inner_depth.increment()?;
1087 }
1088 let val_ref = self
1089 .retail_sku
1090 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
1091 fidl::decode!(
1092 fidl::encoding::BoundedString<255>,
1093 D,
1094 val_ref,
1095 decoder,
1096 inner_offset,
1097 inner_depth
1098 )?;
1099 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1100 {
1101 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1102 }
1103 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1104 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1105 }
1106 }
1107
1108 next_offset += envelope_size;
1109
1110 while next_offset < end_offset {
1112 _next_ordinal_to_read += 1;
1113 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1114 next_offset += envelope_size;
1115 }
1116
1117 Ok(())
1118 }
1119 }
1120
1121 impl ProductInfo {
1122 #[inline(always)]
1123 fn max_ordinal_present(&self) -> u64 {
1124 if let Some(_) = self.audio_amplifier {
1125 return 16;
1126 }
1127 if let Some(_) = self.microphone {
1128 return 15;
1129 }
1130 if let Some(_) = self.emmc_storage {
1131 return 14;
1132 }
1133 if let Some(_) = self.nand_storage {
1134 return 13;
1135 }
1136 if let Some(_) = self.memory {
1137 return 12;
1138 }
1139 if let Some(_) = self.display {
1140 return 11;
1141 }
1142 if let Some(_) = self.colorway {
1143 return 10;
1144 }
1145 if let Some(_) = self.build_name {
1146 return 9;
1147 }
1148 if let Some(_) = self.build_date {
1149 return 8;
1150 }
1151 if let Some(_) = self.manufacturer {
1152 return 7;
1153 }
1154 if let Some(_) = self.model {
1155 return 6;
1156 }
1157 if let Some(_) = self.name {
1158 return 5;
1159 }
1160 if let Some(_) = self.locale_list {
1161 return 4;
1162 }
1163 if let Some(_) = self.regulatory_domain {
1164 return 3;
1165 }
1166 if let Some(_) = self.language {
1167 return 2;
1168 }
1169 if let Some(_) = self.sku {
1170 return 1;
1171 }
1172 0
1173 }
1174 }
1175
1176 impl fidl::encoding::ValueTypeMarker for ProductInfo {
1177 type Borrowed<'a> = &'a Self;
1178 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1179 value
1180 }
1181 }
1182
1183 unsafe impl fidl::encoding::TypeMarker for ProductInfo {
1184 type Owned = Self;
1185
1186 #[inline(always)]
1187 fn inline_align(_context: fidl::encoding::Context) -> usize {
1188 8
1189 }
1190
1191 #[inline(always)]
1192 fn inline_size(_context: fidl::encoding::Context) -> usize {
1193 16
1194 }
1195 }
1196
1197 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ProductInfo, D>
1198 for &ProductInfo
1199 {
1200 unsafe fn encode(
1201 self,
1202 encoder: &mut fidl::encoding::Encoder<'_, D>,
1203 offset: usize,
1204 mut depth: fidl::encoding::Depth,
1205 ) -> fidl::Result<()> {
1206 encoder.debug_check_bounds::<ProductInfo>(offset);
1207 let max_ordinal: u64 = self.max_ordinal_present();
1209 encoder.write_num(max_ordinal, offset);
1210 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1211 if max_ordinal == 0 {
1213 return Ok(());
1214 }
1215 depth.increment()?;
1216 let envelope_size = 8;
1217 let bytes_len = max_ordinal as usize * envelope_size;
1218 #[allow(unused_variables)]
1219 let offset = encoder.out_of_line_offset(bytes_len);
1220 let mut _prev_end_offset: usize = 0;
1221 if 1 > max_ordinal {
1222 return Ok(());
1223 }
1224
1225 let cur_offset: usize = (1 - 1) * envelope_size;
1228
1229 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1231
1232 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
1237 self.sku.as_ref().map(
1238 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
1239 ),
1240 encoder,
1241 offset + cur_offset,
1242 depth,
1243 )?;
1244
1245 _prev_end_offset = cur_offset + envelope_size;
1246 if 2 > max_ordinal {
1247 return Ok(());
1248 }
1249
1250 let cur_offset: usize = (2 - 1) * envelope_size;
1253
1254 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1256
1257 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
1262 self.language.as_ref().map(
1263 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
1264 ),
1265 encoder,
1266 offset + cur_offset,
1267 depth,
1268 )?;
1269
1270 _prev_end_offset = cur_offset + envelope_size;
1271 if 3 > max_ordinal {
1272 return Ok(());
1273 }
1274
1275 let cur_offset: usize = (3 - 1) * envelope_size;
1278
1279 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1281
1282 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_intl::RegulatoryDomain, D>(
1287 self.regulatory_domain.as_ref().map(<fidl_fuchsia_intl::RegulatoryDomain as fidl::encoding::ValueTypeMarker>::borrow),
1288 encoder, offset + cur_offset, depth
1289 )?;
1290
1291 _prev_end_offset = cur_offset + envelope_size;
1292 if 4 > max_ordinal {
1293 return Ok(());
1294 }
1295
1296 let cur_offset: usize = (4 - 1) * envelope_size;
1299
1300 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1302
1303 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_intl::LocaleId>, D>(
1308 self.locale_list.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_intl::LocaleId> as fidl::encoding::ValueTypeMarker>::borrow),
1309 encoder, offset + cur_offset, depth
1310 )?;
1311
1312 _prev_end_offset = cur_offset + envelope_size;
1313 if 5 > max_ordinal {
1314 return Ok(());
1315 }
1316
1317 let cur_offset: usize = (5 - 1) * envelope_size;
1320
1321 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1323
1324 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
1329 self.name.as_ref().map(
1330 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
1331 ),
1332 encoder,
1333 offset + cur_offset,
1334 depth,
1335 )?;
1336
1337 _prev_end_offset = cur_offset + envelope_size;
1338 if 6 > max_ordinal {
1339 return Ok(());
1340 }
1341
1342 let cur_offset: usize = (6 - 1) * envelope_size;
1345
1346 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1348
1349 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
1354 self.model.as_ref().map(
1355 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
1356 ),
1357 encoder,
1358 offset + cur_offset,
1359 depth,
1360 )?;
1361
1362 _prev_end_offset = cur_offset + envelope_size;
1363 if 7 > max_ordinal {
1364 return Ok(());
1365 }
1366
1367 let cur_offset: usize = (7 - 1) * envelope_size;
1370
1371 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1373
1374 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
1379 self.manufacturer.as_ref().map(
1380 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
1381 ),
1382 encoder,
1383 offset + cur_offset,
1384 depth,
1385 )?;
1386
1387 _prev_end_offset = cur_offset + envelope_size;
1388 if 8 > max_ordinal {
1389 return Ok(());
1390 }
1391
1392 let cur_offset: usize = (8 - 1) * envelope_size;
1395
1396 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1398
1399 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
1404 self.build_date.as_ref().map(
1405 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
1406 ),
1407 encoder,
1408 offset + cur_offset,
1409 depth,
1410 )?;
1411
1412 _prev_end_offset = cur_offset + envelope_size;
1413 if 9 > max_ordinal {
1414 return Ok(());
1415 }
1416
1417 let cur_offset: usize = (9 - 1) * envelope_size;
1420
1421 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1423
1424 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
1429 self.build_name.as_ref().map(
1430 <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
1431 ),
1432 encoder,
1433 offset + cur_offset,
1434 depth,
1435 )?;
1436
1437 _prev_end_offset = cur_offset + envelope_size;
1438 if 10 > max_ordinal {
1439 return Ok(());
1440 }
1441
1442 let cur_offset: usize = (10 - 1) * envelope_size;
1445
1446 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1448
1449 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
1454 self.colorway.as_ref().map(
1455 <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
1456 ),
1457 encoder,
1458 offset + cur_offset,
1459 depth,
1460 )?;
1461
1462 _prev_end_offset = cur_offset + envelope_size;
1463 if 11 > max_ordinal {
1464 return Ok(());
1465 }
1466
1467 let cur_offset: usize = (11 - 1) * envelope_size;
1470
1471 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1473
1474 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
1479 self.display.as_ref().map(
1480 <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
1481 ),
1482 encoder,
1483 offset + cur_offset,
1484 depth,
1485 )?;
1486
1487 _prev_end_offset = cur_offset + envelope_size;
1488 if 12 > max_ordinal {
1489 return Ok(());
1490 }
1491
1492 let cur_offset: usize = (12 - 1) * envelope_size;
1495
1496 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1498
1499 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
1504 self.memory.as_ref().map(
1505 <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
1506 ),
1507 encoder,
1508 offset + cur_offset,
1509 depth,
1510 )?;
1511
1512 _prev_end_offset = cur_offset + envelope_size;
1513 if 13 > max_ordinal {
1514 return Ok(());
1515 }
1516
1517 let cur_offset: usize = (13 - 1) * envelope_size;
1520
1521 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1523
1524 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
1529 self.nand_storage.as_ref().map(
1530 <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
1531 ),
1532 encoder,
1533 offset + cur_offset,
1534 depth,
1535 )?;
1536
1537 _prev_end_offset = cur_offset + envelope_size;
1538 if 14 > max_ordinal {
1539 return Ok(());
1540 }
1541
1542 let cur_offset: usize = (14 - 1) * envelope_size;
1545
1546 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1548
1549 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
1554 self.emmc_storage.as_ref().map(
1555 <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
1556 ),
1557 encoder,
1558 offset + cur_offset,
1559 depth,
1560 )?;
1561
1562 _prev_end_offset = cur_offset + envelope_size;
1563 if 15 > max_ordinal {
1564 return Ok(());
1565 }
1566
1567 let cur_offset: usize = (15 - 1) * envelope_size;
1570
1571 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1573
1574 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
1579 self.microphone.as_ref().map(
1580 <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
1581 ),
1582 encoder,
1583 offset + cur_offset,
1584 depth,
1585 )?;
1586
1587 _prev_end_offset = cur_offset + envelope_size;
1588 if 16 > max_ordinal {
1589 return Ok(());
1590 }
1591
1592 let cur_offset: usize = (16 - 1) * envelope_size;
1595
1596 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1598
1599 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
1604 self.audio_amplifier.as_ref().map(
1605 <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
1606 ),
1607 encoder,
1608 offset + cur_offset,
1609 depth,
1610 )?;
1611
1612 _prev_end_offset = cur_offset + envelope_size;
1613
1614 Ok(())
1615 }
1616 }
1617
1618 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ProductInfo {
1619 #[inline(always)]
1620 fn new_empty() -> Self {
1621 Self::default()
1622 }
1623
1624 unsafe fn decode(
1625 &mut self,
1626 decoder: &mut fidl::encoding::Decoder<'_, D>,
1627 offset: usize,
1628 mut depth: fidl::encoding::Depth,
1629 ) -> fidl::Result<()> {
1630 decoder.debug_check_bounds::<Self>(offset);
1631 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1632 None => return Err(fidl::Error::NotNullable),
1633 Some(len) => len,
1634 };
1635 if len == 0 {
1637 return Ok(());
1638 };
1639 depth.increment()?;
1640 let envelope_size = 8;
1641 let bytes_len = len * envelope_size;
1642 let offset = decoder.out_of_line_offset(bytes_len)?;
1643 let mut _next_ordinal_to_read = 0;
1645 let mut next_offset = offset;
1646 let end_offset = offset + bytes_len;
1647 _next_ordinal_to_read += 1;
1648 if next_offset >= end_offset {
1649 return Ok(());
1650 }
1651
1652 while _next_ordinal_to_read < 1 {
1654 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1655 _next_ordinal_to_read += 1;
1656 next_offset += envelope_size;
1657 }
1658
1659 let next_out_of_line = decoder.next_out_of_line();
1660 let handles_before = decoder.remaining_handles();
1661 if let Some((inlined, num_bytes, num_handles)) =
1662 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1663 {
1664 let member_inline_size =
1665 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
1666 decoder.context,
1667 );
1668 if inlined != (member_inline_size <= 4) {
1669 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1670 }
1671 let inner_offset;
1672 let mut inner_depth = depth.clone();
1673 if inlined {
1674 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1675 inner_offset = next_offset;
1676 } else {
1677 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1678 inner_depth.increment()?;
1679 }
1680 let val_ref = self
1681 .sku
1682 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
1683 fidl::decode!(
1684 fidl::encoding::UnboundedString,
1685 D,
1686 val_ref,
1687 decoder,
1688 inner_offset,
1689 inner_depth
1690 )?;
1691 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1692 {
1693 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1694 }
1695 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1696 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1697 }
1698 }
1699
1700 next_offset += envelope_size;
1701 _next_ordinal_to_read += 1;
1702 if next_offset >= end_offset {
1703 return Ok(());
1704 }
1705
1706 while _next_ordinal_to_read < 2 {
1708 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1709 _next_ordinal_to_read += 1;
1710 next_offset += envelope_size;
1711 }
1712
1713 let next_out_of_line = decoder.next_out_of_line();
1714 let handles_before = decoder.remaining_handles();
1715 if let Some((inlined, num_bytes, num_handles)) =
1716 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1717 {
1718 let member_inline_size =
1719 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
1720 decoder.context,
1721 );
1722 if inlined != (member_inline_size <= 4) {
1723 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1724 }
1725 let inner_offset;
1726 let mut inner_depth = depth.clone();
1727 if inlined {
1728 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1729 inner_offset = next_offset;
1730 } else {
1731 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1732 inner_depth.increment()?;
1733 }
1734 let val_ref = self
1735 .language
1736 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
1737 fidl::decode!(
1738 fidl::encoding::UnboundedString,
1739 D,
1740 val_ref,
1741 decoder,
1742 inner_offset,
1743 inner_depth
1744 )?;
1745 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1746 {
1747 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1748 }
1749 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1750 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1751 }
1752 }
1753
1754 next_offset += envelope_size;
1755 _next_ordinal_to_read += 1;
1756 if next_offset >= end_offset {
1757 return Ok(());
1758 }
1759
1760 while _next_ordinal_to_read < 3 {
1762 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1763 _next_ordinal_to_read += 1;
1764 next_offset += envelope_size;
1765 }
1766
1767 let next_out_of_line = decoder.next_out_of_line();
1768 let handles_before = decoder.remaining_handles();
1769 if let Some((inlined, num_bytes, num_handles)) =
1770 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1771 {
1772 let member_inline_size = <fidl_fuchsia_intl::RegulatoryDomain as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1773 if inlined != (member_inline_size <= 4) {
1774 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1775 }
1776 let inner_offset;
1777 let mut inner_depth = depth.clone();
1778 if inlined {
1779 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1780 inner_offset = next_offset;
1781 } else {
1782 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1783 inner_depth.increment()?;
1784 }
1785 let val_ref = self.regulatory_domain.get_or_insert_with(|| {
1786 fidl::new_empty!(fidl_fuchsia_intl::RegulatoryDomain, D)
1787 });
1788 fidl::decode!(
1789 fidl_fuchsia_intl::RegulatoryDomain,
1790 D,
1791 val_ref,
1792 decoder,
1793 inner_offset,
1794 inner_depth
1795 )?;
1796 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1797 {
1798 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1799 }
1800 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1801 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1802 }
1803 }
1804
1805 next_offset += envelope_size;
1806 _next_ordinal_to_read += 1;
1807 if next_offset >= end_offset {
1808 return Ok(());
1809 }
1810
1811 while _next_ordinal_to_read < 4 {
1813 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1814 _next_ordinal_to_read += 1;
1815 next_offset += envelope_size;
1816 }
1817
1818 let next_out_of_line = decoder.next_out_of_line();
1819 let handles_before = decoder.remaining_handles();
1820 if let Some((inlined, num_bytes, num_handles)) =
1821 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1822 {
1823 let member_inline_size = <fidl::encoding::UnboundedVector<
1824 fidl_fuchsia_intl::LocaleId,
1825 > as fidl::encoding::TypeMarker>::inline_size(
1826 decoder.context
1827 );
1828 if inlined != (member_inline_size <= 4) {
1829 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1830 }
1831 let inner_offset;
1832 let mut inner_depth = depth.clone();
1833 if inlined {
1834 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1835 inner_offset = next_offset;
1836 } else {
1837 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1838 inner_depth.increment()?;
1839 }
1840 let val_ref = self.locale_list.get_or_insert_with(|| {
1841 fidl::new_empty!(
1842 fidl::encoding::UnboundedVector<fidl_fuchsia_intl::LocaleId>,
1843 D
1844 )
1845 });
1846 fidl::decode!(
1847 fidl::encoding::UnboundedVector<fidl_fuchsia_intl::LocaleId>,
1848 D,
1849 val_ref,
1850 decoder,
1851 inner_offset,
1852 inner_depth
1853 )?;
1854 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1855 {
1856 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1857 }
1858 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1859 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1860 }
1861 }
1862
1863 next_offset += envelope_size;
1864 _next_ordinal_to_read += 1;
1865 if next_offset >= end_offset {
1866 return Ok(());
1867 }
1868
1869 while _next_ordinal_to_read < 5 {
1871 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1872 _next_ordinal_to_read += 1;
1873 next_offset += envelope_size;
1874 }
1875
1876 let next_out_of_line = decoder.next_out_of_line();
1877 let handles_before = decoder.remaining_handles();
1878 if let Some((inlined, num_bytes, num_handles)) =
1879 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1880 {
1881 let member_inline_size =
1882 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
1883 decoder.context,
1884 );
1885 if inlined != (member_inline_size <= 4) {
1886 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1887 }
1888 let inner_offset;
1889 let mut inner_depth = depth.clone();
1890 if inlined {
1891 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1892 inner_offset = next_offset;
1893 } else {
1894 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1895 inner_depth.increment()?;
1896 }
1897 let val_ref = self
1898 .name
1899 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
1900 fidl::decode!(
1901 fidl::encoding::UnboundedString,
1902 D,
1903 val_ref,
1904 decoder,
1905 inner_offset,
1906 inner_depth
1907 )?;
1908 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1909 {
1910 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1911 }
1912 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1913 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1914 }
1915 }
1916
1917 next_offset += envelope_size;
1918 _next_ordinal_to_read += 1;
1919 if next_offset >= end_offset {
1920 return Ok(());
1921 }
1922
1923 while _next_ordinal_to_read < 6 {
1925 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1926 _next_ordinal_to_read += 1;
1927 next_offset += envelope_size;
1928 }
1929
1930 let next_out_of_line = decoder.next_out_of_line();
1931 let handles_before = decoder.remaining_handles();
1932 if let Some((inlined, num_bytes, num_handles)) =
1933 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1934 {
1935 let member_inline_size =
1936 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
1937 decoder.context,
1938 );
1939 if inlined != (member_inline_size <= 4) {
1940 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1941 }
1942 let inner_offset;
1943 let mut inner_depth = depth.clone();
1944 if inlined {
1945 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1946 inner_offset = next_offset;
1947 } else {
1948 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1949 inner_depth.increment()?;
1950 }
1951 let val_ref = self
1952 .model
1953 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
1954 fidl::decode!(
1955 fidl::encoding::UnboundedString,
1956 D,
1957 val_ref,
1958 decoder,
1959 inner_offset,
1960 inner_depth
1961 )?;
1962 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1963 {
1964 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1965 }
1966 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1967 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1968 }
1969 }
1970
1971 next_offset += envelope_size;
1972 _next_ordinal_to_read += 1;
1973 if next_offset >= end_offset {
1974 return Ok(());
1975 }
1976
1977 while _next_ordinal_to_read < 7 {
1979 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1980 _next_ordinal_to_read += 1;
1981 next_offset += envelope_size;
1982 }
1983
1984 let next_out_of_line = decoder.next_out_of_line();
1985 let handles_before = decoder.remaining_handles();
1986 if let Some((inlined, num_bytes, num_handles)) =
1987 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1988 {
1989 let member_inline_size =
1990 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
1991 decoder.context,
1992 );
1993 if inlined != (member_inline_size <= 4) {
1994 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1995 }
1996 let inner_offset;
1997 let mut inner_depth = depth.clone();
1998 if inlined {
1999 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2000 inner_offset = next_offset;
2001 } else {
2002 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2003 inner_depth.increment()?;
2004 }
2005 let val_ref = self
2006 .manufacturer
2007 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
2008 fidl::decode!(
2009 fidl::encoding::UnboundedString,
2010 D,
2011 val_ref,
2012 decoder,
2013 inner_offset,
2014 inner_depth
2015 )?;
2016 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2017 {
2018 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2019 }
2020 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2021 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2022 }
2023 }
2024
2025 next_offset += envelope_size;
2026 _next_ordinal_to_read += 1;
2027 if next_offset >= end_offset {
2028 return Ok(());
2029 }
2030
2031 while _next_ordinal_to_read < 8 {
2033 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2034 _next_ordinal_to_read += 1;
2035 next_offset += envelope_size;
2036 }
2037
2038 let next_out_of_line = decoder.next_out_of_line();
2039 let handles_before = decoder.remaining_handles();
2040 if let Some((inlined, num_bytes, num_handles)) =
2041 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2042 {
2043 let member_inline_size =
2044 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
2045 decoder.context,
2046 );
2047 if inlined != (member_inline_size <= 4) {
2048 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2049 }
2050 let inner_offset;
2051 let mut inner_depth = depth.clone();
2052 if inlined {
2053 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2054 inner_offset = next_offset;
2055 } else {
2056 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2057 inner_depth.increment()?;
2058 }
2059 let val_ref = self
2060 .build_date
2061 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
2062 fidl::decode!(
2063 fidl::encoding::UnboundedString,
2064 D,
2065 val_ref,
2066 decoder,
2067 inner_offset,
2068 inner_depth
2069 )?;
2070 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2071 {
2072 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2073 }
2074 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2075 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2076 }
2077 }
2078
2079 next_offset += envelope_size;
2080 _next_ordinal_to_read += 1;
2081 if next_offset >= end_offset {
2082 return Ok(());
2083 }
2084
2085 while _next_ordinal_to_read < 9 {
2087 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2088 _next_ordinal_to_read += 1;
2089 next_offset += envelope_size;
2090 }
2091
2092 let next_out_of_line = decoder.next_out_of_line();
2093 let handles_before = decoder.remaining_handles();
2094 if let Some((inlined, num_bytes, num_handles)) =
2095 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2096 {
2097 let member_inline_size =
2098 <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
2099 decoder.context,
2100 );
2101 if inlined != (member_inline_size <= 4) {
2102 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2103 }
2104 let inner_offset;
2105 let mut inner_depth = depth.clone();
2106 if inlined {
2107 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2108 inner_offset = next_offset;
2109 } else {
2110 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2111 inner_depth.increment()?;
2112 }
2113 let val_ref = self
2114 .build_name
2115 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
2116 fidl::decode!(
2117 fidl::encoding::BoundedString<255>,
2118 D,
2119 val_ref,
2120 decoder,
2121 inner_offset,
2122 inner_depth
2123 )?;
2124 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2125 {
2126 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2127 }
2128 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2129 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2130 }
2131 }
2132
2133 next_offset += envelope_size;
2134 _next_ordinal_to_read += 1;
2135 if next_offset >= end_offset {
2136 return Ok(());
2137 }
2138
2139 while _next_ordinal_to_read < 10 {
2141 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2142 _next_ordinal_to_read += 1;
2143 next_offset += envelope_size;
2144 }
2145
2146 let next_out_of_line = decoder.next_out_of_line();
2147 let handles_before = decoder.remaining_handles();
2148 if let Some((inlined, num_bytes, num_handles)) =
2149 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2150 {
2151 let member_inline_size =
2152 <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
2153 decoder.context,
2154 );
2155 if inlined != (member_inline_size <= 4) {
2156 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2157 }
2158 let inner_offset;
2159 let mut inner_depth = depth.clone();
2160 if inlined {
2161 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2162 inner_offset = next_offset;
2163 } else {
2164 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2165 inner_depth.increment()?;
2166 }
2167 let val_ref = self
2168 .colorway
2169 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
2170 fidl::decode!(
2171 fidl::encoding::BoundedString<255>,
2172 D,
2173 val_ref,
2174 decoder,
2175 inner_offset,
2176 inner_depth
2177 )?;
2178 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2179 {
2180 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2181 }
2182 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2183 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2184 }
2185 }
2186
2187 next_offset += envelope_size;
2188 _next_ordinal_to_read += 1;
2189 if next_offset >= end_offset {
2190 return Ok(());
2191 }
2192
2193 while _next_ordinal_to_read < 11 {
2195 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2196 _next_ordinal_to_read += 1;
2197 next_offset += envelope_size;
2198 }
2199
2200 let next_out_of_line = decoder.next_out_of_line();
2201 let handles_before = decoder.remaining_handles();
2202 if let Some((inlined, num_bytes, num_handles)) =
2203 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2204 {
2205 let member_inline_size =
2206 <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
2207 decoder.context,
2208 );
2209 if inlined != (member_inline_size <= 4) {
2210 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2211 }
2212 let inner_offset;
2213 let mut inner_depth = depth.clone();
2214 if inlined {
2215 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2216 inner_offset = next_offset;
2217 } else {
2218 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2219 inner_depth.increment()?;
2220 }
2221 let val_ref = self
2222 .display
2223 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
2224 fidl::decode!(
2225 fidl::encoding::BoundedString<255>,
2226 D,
2227 val_ref,
2228 decoder,
2229 inner_offset,
2230 inner_depth
2231 )?;
2232 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2233 {
2234 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2235 }
2236 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2237 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2238 }
2239 }
2240
2241 next_offset += envelope_size;
2242 _next_ordinal_to_read += 1;
2243 if next_offset >= end_offset {
2244 return Ok(());
2245 }
2246
2247 while _next_ordinal_to_read < 12 {
2249 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2250 _next_ordinal_to_read += 1;
2251 next_offset += envelope_size;
2252 }
2253
2254 let next_out_of_line = decoder.next_out_of_line();
2255 let handles_before = decoder.remaining_handles();
2256 if let Some((inlined, num_bytes, num_handles)) =
2257 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2258 {
2259 let member_inline_size =
2260 <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
2261 decoder.context,
2262 );
2263 if inlined != (member_inline_size <= 4) {
2264 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2265 }
2266 let inner_offset;
2267 let mut inner_depth = depth.clone();
2268 if inlined {
2269 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2270 inner_offset = next_offset;
2271 } else {
2272 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2273 inner_depth.increment()?;
2274 }
2275 let val_ref = self
2276 .memory
2277 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
2278 fidl::decode!(
2279 fidl::encoding::BoundedString<255>,
2280 D,
2281 val_ref,
2282 decoder,
2283 inner_offset,
2284 inner_depth
2285 )?;
2286 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2287 {
2288 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2289 }
2290 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2291 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2292 }
2293 }
2294
2295 next_offset += envelope_size;
2296 _next_ordinal_to_read += 1;
2297 if next_offset >= end_offset {
2298 return Ok(());
2299 }
2300
2301 while _next_ordinal_to_read < 13 {
2303 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2304 _next_ordinal_to_read += 1;
2305 next_offset += envelope_size;
2306 }
2307
2308 let next_out_of_line = decoder.next_out_of_line();
2309 let handles_before = decoder.remaining_handles();
2310 if let Some((inlined, num_bytes, num_handles)) =
2311 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2312 {
2313 let member_inline_size =
2314 <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
2315 decoder.context,
2316 );
2317 if inlined != (member_inline_size <= 4) {
2318 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2319 }
2320 let inner_offset;
2321 let mut inner_depth = depth.clone();
2322 if inlined {
2323 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2324 inner_offset = next_offset;
2325 } else {
2326 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2327 inner_depth.increment()?;
2328 }
2329 let val_ref = self
2330 .nand_storage
2331 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
2332 fidl::decode!(
2333 fidl::encoding::BoundedString<255>,
2334 D,
2335 val_ref,
2336 decoder,
2337 inner_offset,
2338 inner_depth
2339 )?;
2340 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2341 {
2342 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2343 }
2344 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2345 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2346 }
2347 }
2348
2349 next_offset += envelope_size;
2350 _next_ordinal_to_read += 1;
2351 if next_offset >= end_offset {
2352 return Ok(());
2353 }
2354
2355 while _next_ordinal_to_read < 14 {
2357 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2358 _next_ordinal_to_read += 1;
2359 next_offset += envelope_size;
2360 }
2361
2362 let next_out_of_line = decoder.next_out_of_line();
2363 let handles_before = decoder.remaining_handles();
2364 if let Some((inlined, num_bytes, num_handles)) =
2365 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2366 {
2367 let member_inline_size =
2368 <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
2369 decoder.context,
2370 );
2371 if inlined != (member_inline_size <= 4) {
2372 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2373 }
2374 let inner_offset;
2375 let mut inner_depth = depth.clone();
2376 if inlined {
2377 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2378 inner_offset = next_offset;
2379 } else {
2380 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2381 inner_depth.increment()?;
2382 }
2383 let val_ref = self
2384 .emmc_storage
2385 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
2386 fidl::decode!(
2387 fidl::encoding::BoundedString<255>,
2388 D,
2389 val_ref,
2390 decoder,
2391 inner_offset,
2392 inner_depth
2393 )?;
2394 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2395 {
2396 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2397 }
2398 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2399 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2400 }
2401 }
2402
2403 next_offset += envelope_size;
2404 _next_ordinal_to_read += 1;
2405 if next_offset >= end_offset {
2406 return Ok(());
2407 }
2408
2409 while _next_ordinal_to_read < 15 {
2411 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2412 _next_ordinal_to_read += 1;
2413 next_offset += envelope_size;
2414 }
2415
2416 let next_out_of_line = decoder.next_out_of_line();
2417 let handles_before = decoder.remaining_handles();
2418 if let Some((inlined, num_bytes, num_handles)) =
2419 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2420 {
2421 let member_inline_size =
2422 <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
2423 decoder.context,
2424 );
2425 if inlined != (member_inline_size <= 4) {
2426 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2427 }
2428 let inner_offset;
2429 let mut inner_depth = depth.clone();
2430 if inlined {
2431 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2432 inner_offset = next_offset;
2433 } else {
2434 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2435 inner_depth.increment()?;
2436 }
2437 let val_ref = self
2438 .microphone
2439 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
2440 fidl::decode!(
2441 fidl::encoding::BoundedString<255>,
2442 D,
2443 val_ref,
2444 decoder,
2445 inner_offset,
2446 inner_depth
2447 )?;
2448 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2449 {
2450 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2451 }
2452 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2453 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2454 }
2455 }
2456
2457 next_offset += envelope_size;
2458 _next_ordinal_to_read += 1;
2459 if next_offset >= end_offset {
2460 return Ok(());
2461 }
2462
2463 while _next_ordinal_to_read < 16 {
2465 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2466 _next_ordinal_to_read += 1;
2467 next_offset += envelope_size;
2468 }
2469
2470 let next_out_of_line = decoder.next_out_of_line();
2471 let handles_before = decoder.remaining_handles();
2472 if let Some((inlined, num_bytes, num_handles)) =
2473 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2474 {
2475 let member_inline_size =
2476 <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
2477 decoder.context,
2478 );
2479 if inlined != (member_inline_size <= 4) {
2480 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2481 }
2482 let inner_offset;
2483 let mut inner_depth = depth.clone();
2484 if inlined {
2485 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2486 inner_offset = next_offset;
2487 } else {
2488 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2489 inner_depth.increment()?;
2490 }
2491 let val_ref = self
2492 .audio_amplifier
2493 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
2494 fidl::decode!(
2495 fidl::encoding::BoundedString<255>,
2496 D,
2497 val_ref,
2498 decoder,
2499 inner_offset,
2500 inner_depth
2501 )?;
2502 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2503 {
2504 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2505 }
2506 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2507 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2508 }
2509 }
2510
2511 next_offset += envelope_size;
2512
2513 while next_offset < end_offset {
2515 _next_ordinal_to_read += 1;
2516 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2517 next_offset += envelope_size;
2518 }
2519
2520 Ok(())
2521 }
2522 }
2523}