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_SPI_CHANNEL: u32 = 32;
12
13#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
14pub enum SpiClockPhase {
15 ClockPhaseFirst,
16 ClockPhaseSecond,
17 #[doc(hidden)]
18 __SourceBreaking {
19 unknown_ordinal: u32,
20 },
21}
22
23#[macro_export]
25macro_rules! SpiClockPhaseUnknown {
26 () => {
27 _
28 };
29}
30
31impl SpiClockPhase {
32 #[inline]
33 pub fn from_primitive(prim: u32) -> Option<Self> {
34 match prim {
35 0 => Some(Self::ClockPhaseFirst),
36 1 => Some(Self::ClockPhaseSecond),
37 _ => None,
38 }
39 }
40
41 #[inline]
42 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
43 match prim {
44 0 => Self::ClockPhaseFirst,
45 1 => Self::ClockPhaseSecond,
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::ClockPhaseFirst => 0,
59 Self::ClockPhaseSecond => 1,
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, Default, PartialEq)]
75pub struct SpiBusMetadata {
76 pub channels: Option<Vec<SpiChannel>>,
77 pub bus_id: Option<u32>,
80 #[doc(hidden)]
81 pub __source_breaking: fidl::marker::SourceBreaking,
82}
83
84impl fidl::Persistable for SpiBusMetadata {}
85impl fidl::Serializable for SpiBusMetadata {
86 const SERIALIZABLE_NAME: &'static str = "fuchsia.hardware.spi.businfo.SpiBusMetadata";
87}
88
89#[derive(Clone, Debug, Default, PartialEq)]
91pub struct SpiChannel {
92 pub cs: Option<u32>,
94 pub vid: Option<u32>,
96 pub pid: Option<u32>,
98 pub did: Option<u32>,
100 pub cs_polarity_high: Option<bool>,
102 pub word_length_bits: Option<u8>,
104 pub is_bus_controller: Option<bool>,
106 pub clock_polarity_high: Option<bool>,
108 pub clock_phase: Option<SpiClockPhase>,
110 pub max_frequency_hz: Option<u32>,
112 #[doc(hidden)]
113 pub __source_breaking: fidl::marker::SourceBreaking,
114}
115
116impl fidl::Persistable for SpiChannel {}
117
118mod internal {
119 use super::*;
120 unsafe impl fidl::encoding::TypeMarker for SpiClockPhase {
121 type Owned = Self;
122
123 #[inline(always)]
124 fn inline_align(_context: fidl::encoding::Context) -> usize {
125 std::mem::align_of::<u32>()
126 }
127
128 #[inline(always)]
129 fn inline_size(_context: fidl::encoding::Context) -> usize {
130 std::mem::size_of::<u32>()
131 }
132
133 #[inline(always)]
134 fn encode_is_copy() -> bool {
135 false
136 }
137
138 #[inline(always)]
139 fn decode_is_copy() -> bool {
140 false
141 }
142 }
143
144 impl fidl::encoding::ValueTypeMarker for SpiClockPhase {
145 type Borrowed<'a> = Self;
146 #[inline(always)]
147 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
148 *value
149 }
150 }
151
152 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for SpiClockPhase {
153 #[inline]
154 unsafe fn encode(
155 self,
156 encoder: &mut fidl::encoding::Encoder<'_, D>,
157 offset: usize,
158 _depth: fidl::encoding::Depth,
159 ) -> fidl::Result<()> {
160 encoder.debug_check_bounds::<Self>(offset);
161 encoder.write_num(self.into_primitive(), offset);
162 Ok(())
163 }
164 }
165
166 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SpiClockPhase {
167 #[inline(always)]
168 fn new_empty() -> Self {
169 Self::unknown()
170 }
171
172 #[inline]
173 unsafe fn decode(
174 &mut self,
175 decoder: &mut fidl::encoding::Decoder<'_, D>,
176 offset: usize,
177 _depth: fidl::encoding::Depth,
178 ) -> fidl::Result<()> {
179 decoder.debug_check_bounds::<Self>(offset);
180 let prim = decoder.read_num::<u32>(offset);
181
182 *self = Self::from_primitive_allow_unknown(prim);
183 Ok(())
184 }
185 }
186
187 impl SpiBusMetadata {
188 #[inline(always)]
189 fn max_ordinal_present(&self) -> u64 {
190 if let Some(_) = self.bus_id {
191 return 2;
192 }
193 if let Some(_) = self.channels {
194 return 1;
195 }
196 0
197 }
198 }
199
200 impl fidl::encoding::ValueTypeMarker for SpiBusMetadata {
201 type Borrowed<'a> = &'a Self;
202 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
203 value
204 }
205 }
206
207 unsafe impl fidl::encoding::TypeMarker for SpiBusMetadata {
208 type Owned = Self;
209
210 #[inline(always)]
211 fn inline_align(_context: fidl::encoding::Context) -> usize {
212 8
213 }
214
215 #[inline(always)]
216 fn inline_size(_context: fidl::encoding::Context) -> usize {
217 16
218 }
219 }
220
221 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SpiBusMetadata, D>
222 for &SpiBusMetadata
223 {
224 unsafe fn encode(
225 self,
226 encoder: &mut fidl::encoding::Encoder<'_, D>,
227 offset: usize,
228 mut depth: fidl::encoding::Depth,
229 ) -> fidl::Result<()> {
230 encoder.debug_check_bounds::<SpiBusMetadata>(offset);
231 let max_ordinal: u64 = self.max_ordinal_present();
233 encoder.write_num(max_ordinal, offset);
234 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
235 if max_ordinal == 0 {
237 return Ok(());
238 }
239 depth.increment()?;
240 let envelope_size = 8;
241 let bytes_len = max_ordinal as usize * envelope_size;
242 #[allow(unused_variables)]
243 let offset = encoder.out_of_line_offset(bytes_len);
244 let mut _prev_end_offset: usize = 0;
245 if 1 > max_ordinal {
246 return Ok(());
247 }
248
249 let cur_offset: usize = (1 - 1) * envelope_size;
252
253 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
255
256 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<SpiChannel, 32>, D>(
261 self.channels.as_ref().map(<fidl::encoding::Vector<SpiChannel, 32> as fidl::encoding::ValueTypeMarker>::borrow),
262 encoder, offset + cur_offset, depth
263 )?;
264
265 _prev_end_offset = cur_offset + envelope_size;
266 if 2 > max_ordinal {
267 return Ok(());
268 }
269
270 let cur_offset: usize = (2 - 1) * envelope_size;
273
274 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
276
277 fidl::encoding::encode_in_envelope_optional::<u32, D>(
282 self.bus_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
283 encoder,
284 offset + cur_offset,
285 depth,
286 )?;
287
288 _prev_end_offset = cur_offset + envelope_size;
289
290 Ok(())
291 }
292 }
293
294 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SpiBusMetadata {
295 #[inline(always)]
296 fn new_empty() -> Self {
297 Self::default()
298 }
299
300 unsafe fn decode(
301 &mut self,
302 decoder: &mut fidl::encoding::Decoder<'_, D>,
303 offset: usize,
304 mut depth: fidl::encoding::Depth,
305 ) -> fidl::Result<()> {
306 decoder.debug_check_bounds::<Self>(offset);
307 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
308 None => return Err(fidl::Error::NotNullable),
309 Some(len) => len,
310 };
311 if len == 0 {
313 return Ok(());
314 };
315 depth.increment()?;
316 let envelope_size = 8;
317 let bytes_len = len * envelope_size;
318 let offset = decoder.out_of_line_offset(bytes_len)?;
319 let mut _next_ordinal_to_read = 0;
321 let mut next_offset = offset;
322 let end_offset = offset + bytes_len;
323 _next_ordinal_to_read += 1;
324 if next_offset >= end_offset {
325 return Ok(());
326 }
327
328 while _next_ordinal_to_read < 1 {
330 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
331 _next_ordinal_to_read += 1;
332 next_offset += envelope_size;
333 }
334
335 let next_out_of_line = decoder.next_out_of_line();
336 let handles_before = decoder.remaining_handles();
337 if let Some((inlined, num_bytes, num_handles)) =
338 fidl::encoding::decode_envelope_header(decoder, next_offset)?
339 {
340 let member_inline_size = <fidl::encoding::Vector<SpiChannel, 32> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
341 if inlined != (member_inline_size <= 4) {
342 return Err(fidl::Error::InvalidInlineBitInEnvelope);
343 }
344 let inner_offset;
345 let mut inner_depth = depth.clone();
346 if inlined {
347 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
348 inner_offset = next_offset;
349 } else {
350 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
351 inner_depth.increment()?;
352 }
353 let val_ref = self.channels.get_or_insert_with(
354 || fidl::new_empty!(fidl::encoding::Vector<SpiChannel, 32>, D),
355 );
356 fidl::decode!(fidl::encoding::Vector<SpiChannel, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
357 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
358 {
359 return Err(fidl::Error::InvalidNumBytesInEnvelope);
360 }
361 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
362 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
363 }
364 }
365
366 next_offset += envelope_size;
367 _next_ordinal_to_read += 1;
368 if next_offset >= end_offset {
369 return Ok(());
370 }
371
372 while _next_ordinal_to_read < 2 {
374 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
375 _next_ordinal_to_read += 1;
376 next_offset += envelope_size;
377 }
378
379 let next_out_of_line = decoder.next_out_of_line();
380 let handles_before = decoder.remaining_handles();
381 if let Some((inlined, num_bytes, num_handles)) =
382 fidl::encoding::decode_envelope_header(decoder, next_offset)?
383 {
384 let member_inline_size =
385 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
386 if inlined != (member_inline_size <= 4) {
387 return Err(fidl::Error::InvalidInlineBitInEnvelope);
388 }
389 let inner_offset;
390 let mut inner_depth = depth.clone();
391 if inlined {
392 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
393 inner_offset = next_offset;
394 } else {
395 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
396 inner_depth.increment()?;
397 }
398 let val_ref = self.bus_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
399 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
400 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
401 {
402 return Err(fidl::Error::InvalidNumBytesInEnvelope);
403 }
404 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
405 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
406 }
407 }
408
409 next_offset += envelope_size;
410
411 while next_offset < end_offset {
413 _next_ordinal_to_read += 1;
414 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
415 next_offset += envelope_size;
416 }
417
418 Ok(())
419 }
420 }
421
422 impl SpiChannel {
423 #[inline(always)]
424 fn max_ordinal_present(&self) -> u64 {
425 if let Some(_) = self.max_frequency_hz {
426 return 10;
427 }
428 if let Some(_) = self.clock_phase {
429 return 9;
430 }
431 if let Some(_) = self.clock_polarity_high {
432 return 8;
433 }
434 if let Some(_) = self.is_bus_controller {
435 return 7;
436 }
437 if let Some(_) = self.word_length_bits {
438 return 6;
439 }
440 if let Some(_) = self.cs_polarity_high {
441 return 5;
442 }
443 if let Some(_) = self.did {
444 return 4;
445 }
446 if let Some(_) = self.pid {
447 return 3;
448 }
449 if let Some(_) = self.vid {
450 return 2;
451 }
452 if let Some(_) = self.cs {
453 return 1;
454 }
455 0
456 }
457 }
458
459 impl fidl::encoding::ValueTypeMarker for SpiChannel {
460 type Borrowed<'a> = &'a Self;
461 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
462 value
463 }
464 }
465
466 unsafe impl fidl::encoding::TypeMarker for SpiChannel {
467 type Owned = Self;
468
469 #[inline(always)]
470 fn inline_align(_context: fidl::encoding::Context) -> usize {
471 8
472 }
473
474 #[inline(always)]
475 fn inline_size(_context: fidl::encoding::Context) -> usize {
476 16
477 }
478 }
479
480 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SpiChannel, D>
481 for &SpiChannel
482 {
483 unsafe fn encode(
484 self,
485 encoder: &mut fidl::encoding::Encoder<'_, D>,
486 offset: usize,
487 mut depth: fidl::encoding::Depth,
488 ) -> fidl::Result<()> {
489 encoder.debug_check_bounds::<SpiChannel>(offset);
490 let max_ordinal: u64 = self.max_ordinal_present();
492 encoder.write_num(max_ordinal, offset);
493 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
494 if max_ordinal == 0 {
496 return Ok(());
497 }
498 depth.increment()?;
499 let envelope_size = 8;
500 let bytes_len = max_ordinal as usize * envelope_size;
501 #[allow(unused_variables)]
502 let offset = encoder.out_of_line_offset(bytes_len);
503 let mut _prev_end_offset: usize = 0;
504 if 1 > max_ordinal {
505 return Ok(());
506 }
507
508 let cur_offset: usize = (1 - 1) * envelope_size;
511
512 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
514
515 fidl::encoding::encode_in_envelope_optional::<u32, D>(
520 self.cs.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
521 encoder,
522 offset + cur_offset,
523 depth,
524 )?;
525
526 _prev_end_offset = cur_offset + envelope_size;
527 if 2 > max_ordinal {
528 return Ok(());
529 }
530
531 let cur_offset: usize = (2 - 1) * envelope_size;
534
535 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
537
538 fidl::encoding::encode_in_envelope_optional::<u32, D>(
543 self.vid.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
544 encoder,
545 offset + cur_offset,
546 depth,
547 )?;
548
549 _prev_end_offset = cur_offset + envelope_size;
550 if 3 > max_ordinal {
551 return Ok(());
552 }
553
554 let cur_offset: usize = (3 - 1) * envelope_size;
557
558 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
560
561 fidl::encoding::encode_in_envelope_optional::<u32, D>(
566 self.pid.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
567 encoder,
568 offset + cur_offset,
569 depth,
570 )?;
571
572 _prev_end_offset = cur_offset + envelope_size;
573 if 4 > max_ordinal {
574 return Ok(());
575 }
576
577 let cur_offset: usize = (4 - 1) * envelope_size;
580
581 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
583
584 fidl::encoding::encode_in_envelope_optional::<u32, D>(
589 self.did.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
590 encoder,
591 offset + cur_offset,
592 depth,
593 )?;
594
595 _prev_end_offset = cur_offset + envelope_size;
596 if 5 > max_ordinal {
597 return Ok(());
598 }
599
600 let cur_offset: usize = (5 - 1) * envelope_size;
603
604 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
606
607 fidl::encoding::encode_in_envelope_optional::<bool, D>(
612 self.cs_polarity_high
613 .as_ref()
614 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
615 encoder,
616 offset + cur_offset,
617 depth,
618 )?;
619
620 _prev_end_offset = cur_offset + envelope_size;
621 if 6 > max_ordinal {
622 return Ok(());
623 }
624
625 let cur_offset: usize = (6 - 1) * envelope_size;
628
629 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
631
632 fidl::encoding::encode_in_envelope_optional::<u8, D>(
637 self.word_length_bits.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
638 encoder,
639 offset + cur_offset,
640 depth,
641 )?;
642
643 _prev_end_offset = cur_offset + envelope_size;
644 if 7 > max_ordinal {
645 return Ok(());
646 }
647
648 let cur_offset: usize = (7 - 1) * envelope_size;
651
652 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
654
655 fidl::encoding::encode_in_envelope_optional::<bool, D>(
660 self.is_bus_controller
661 .as_ref()
662 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
663 encoder,
664 offset + cur_offset,
665 depth,
666 )?;
667
668 _prev_end_offset = cur_offset + envelope_size;
669 if 8 > max_ordinal {
670 return Ok(());
671 }
672
673 let cur_offset: usize = (8 - 1) * envelope_size;
676
677 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
679
680 fidl::encoding::encode_in_envelope_optional::<bool, D>(
685 self.clock_polarity_high
686 .as_ref()
687 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
688 encoder,
689 offset + cur_offset,
690 depth,
691 )?;
692
693 _prev_end_offset = cur_offset + envelope_size;
694 if 9 > max_ordinal {
695 return Ok(());
696 }
697
698 let cur_offset: usize = (9 - 1) * envelope_size;
701
702 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
704
705 fidl::encoding::encode_in_envelope_optional::<SpiClockPhase, D>(
710 self.clock_phase
711 .as_ref()
712 .map(<SpiClockPhase as fidl::encoding::ValueTypeMarker>::borrow),
713 encoder,
714 offset + cur_offset,
715 depth,
716 )?;
717
718 _prev_end_offset = cur_offset + envelope_size;
719 if 10 > max_ordinal {
720 return Ok(());
721 }
722
723 let cur_offset: usize = (10 - 1) * envelope_size;
726
727 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
729
730 fidl::encoding::encode_in_envelope_optional::<u32, D>(
735 self.max_frequency_hz
736 .as_ref()
737 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
738 encoder,
739 offset + cur_offset,
740 depth,
741 )?;
742
743 _prev_end_offset = cur_offset + envelope_size;
744
745 Ok(())
746 }
747 }
748
749 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SpiChannel {
750 #[inline(always)]
751 fn new_empty() -> Self {
752 Self::default()
753 }
754
755 unsafe fn decode(
756 &mut self,
757 decoder: &mut fidl::encoding::Decoder<'_, D>,
758 offset: usize,
759 mut depth: fidl::encoding::Depth,
760 ) -> fidl::Result<()> {
761 decoder.debug_check_bounds::<Self>(offset);
762 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
763 None => return Err(fidl::Error::NotNullable),
764 Some(len) => len,
765 };
766 if len == 0 {
768 return Ok(());
769 };
770 depth.increment()?;
771 let envelope_size = 8;
772 let bytes_len = len * envelope_size;
773 let offset = decoder.out_of_line_offset(bytes_len)?;
774 let mut _next_ordinal_to_read = 0;
776 let mut next_offset = offset;
777 let end_offset = offset + bytes_len;
778 _next_ordinal_to_read += 1;
779 if next_offset >= end_offset {
780 return Ok(());
781 }
782
783 while _next_ordinal_to_read < 1 {
785 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
786 _next_ordinal_to_read += 1;
787 next_offset += envelope_size;
788 }
789
790 let next_out_of_line = decoder.next_out_of_line();
791 let handles_before = decoder.remaining_handles();
792 if let Some((inlined, num_bytes, num_handles)) =
793 fidl::encoding::decode_envelope_header(decoder, next_offset)?
794 {
795 let member_inline_size =
796 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
797 if inlined != (member_inline_size <= 4) {
798 return Err(fidl::Error::InvalidInlineBitInEnvelope);
799 }
800 let inner_offset;
801 let mut inner_depth = depth.clone();
802 if inlined {
803 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
804 inner_offset = next_offset;
805 } else {
806 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
807 inner_depth.increment()?;
808 }
809 let val_ref = self.cs.get_or_insert_with(|| fidl::new_empty!(u32, D));
810 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
811 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
812 {
813 return Err(fidl::Error::InvalidNumBytesInEnvelope);
814 }
815 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
816 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
817 }
818 }
819
820 next_offset += envelope_size;
821 _next_ordinal_to_read += 1;
822 if next_offset >= end_offset {
823 return Ok(());
824 }
825
826 while _next_ordinal_to_read < 2 {
828 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
829 _next_ordinal_to_read += 1;
830 next_offset += envelope_size;
831 }
832
833 let next_out_of_line = decoder.next_out_of_line();
834 let handles_before = decoder.remaining_handles();
835 if let Some((inlined, num_bytes, num_handles)) =
836 fidl::encoding::decode_envelope_header(decoder, next_offset)?
837 {
838 let member_inline_size =
839 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
840 if inlined != (member_inline_size <= 4) {
841 return Err(fidl::Error::InvalidInlineBitInEnvelope);
842 }
843 let inner_offset;
844 let mut inner_depth = depth.clone();
845 if inlined {
846 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
847 inner_offset = next_offset;
848 } else {
849 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
850 inner_depth.increment()?;
851 }
852 let val_ref = self.vid.get_or_insert_with(|| fidl::new_empty!(u32, D));
853 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
854 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
855 {
856 return Err(fidl::Error::InvalidNumBytesInEnvelope);
857 }
858 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
859 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
860 }
861 }
862
863 next_offset += envelope_size;
864 _next_ordinal_to_read += 1;
865 if next_offset >= end_offset {
866 return Ok(());
867 }
868
869 while _next_ordinal_to_read < 3 {
871 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
872 _next_ordinal_to_read += 1;
873 next_offset += envelope_size;
874 }
875
876 let next_out_of_line = decoder.next_out_of_line();
877 let handles_before = decoder.remaining_handles();
878 if let Some((inlined, num_bytes, num_handles)) =
879 fidl::encoding::decode_envelope_header(decoder, next_offset)?
880 {
881 let member_inline_size =
882 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
883 if inlined != (member_inline_size <= 4) {
884 return Err(fidl::Error::InvalidInlineBitInEnvelope);
885 }
886 let inner_offset;
887 let mut inner_depth = depth.clone();
888 if inlined {
889 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
890 inner_offset = next_offset;
891 } else {
892 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
893 inner_depth.increment()?;
894 }
895 let val_ref = self.pid.get_or_insert_with(|| fidl::new_empty!(u32, D));
896 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
897 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
898 {
899 return Err(fidl::Error::InvalidNumBytesInEnvelope);
900 }
901 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
902 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
903 }
904 }
905
906 next_offset += envelope_size;
907 _next_ordinal_to_read += 1;
908 if next_offset >= end_offset {
909 return Ok(());
910 }
911
912 while _next_ordinal_to_read < 4 {
914 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
915 _next_ordinal_to_read += 1;
916 next_offset += envelope_size;
917 }
918
919 let next_out_of_line = decoder.next_out_of_line();
920 let handles_before = decoder.remaining_handles();
921 if let Some((inlined, num_bytes, num_handles)) =
922 fidl::encoding::decode_envelope_header(decoder, next_offset)?
923 {
924 let member_inline_size =
925 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
926 if inlined != (member_inline_size <= 4) {
927 return Err(fidl::Error::InvalidInlineBitInEnvelope);
928 }
929 let inner_offset;
930 let mut inner_depth = depth.clone();
931 if inlined {
932 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
933 inner_offset = next_offset;
934 } else {
935 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
936 inner_depth.increment()?;
937 }
938 let val_ref = self.did.get_or_insert_with(|| fidl::new_empty!(u32, D));
939 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
940 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
941 {
942 return Err(fidl::Error::InvalidNumBytesInEnvelope);
943 }
944 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
945 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
946 }
947 }
948
949 next_offset += envelope_size;
950 _next_ordinal_to_read += 1;
951 if next_offset >= end_offset {
952 return Ok(());
953 }
954
955 while _next_ordinal_to_read < 5 {
957 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
958 _next_ordinal_to_read += 1;
959 next_offset += envelope_size;
960 }
961
962 let next_out_of_line = decoder.next_out_of_line();
963 let handles_before = decoder.remaining_handles();
964 if let Some((inlined, num_bytes, num_handles)) =
965 fidl::encoding::decode_envelope_header(decoder, next_offset)?
966 {
967 let member_inline_size =
968 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
969 if inlined != (member_inline_size <= 4) {
970 return Err(fidl::Error::InvalidInlineBitInEnvelope);
971 }
972 let inner_offset;
973 let mut inner_depth = depth.clone();
974 if inlined {
975 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
976 inner_offset = next_offset;
977 } else {
978 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
979 inner_depth.increment()?;
980 }
981 let val_ref =
982 self.cs_polarity_high.get_or_insert_with(|| fidl::new_empty!(bool, D));
983 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
984 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
985 {
986 return Err(fidl::Error::InvalidNumBytesInEnvelope);
987 }
988 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
989 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
990 }
991 }
992
993 next_offset += envelope_size;
994 _next_ordinal_to_read += 1;
995 if next_offset >= end_offset {
996 return Ok(());
997 }
998
999 while _next_ordinal_to_read < 6 {
1001 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1002 _next_ordinal_to_read += 1;
1003 next_offset += envelope_size;
1004 }
1005
1006 let next_out_of_line = decoder.next_out_of_line();
1007 let handles_before = decoder.remaining_handles();
1008 if let Some((inlined, num_bytes, num_handles)) =
1009 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1010 {
1011 let member_inline_size =
1012 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1013 if inlined != (member_inline_size <= 4) {
1014 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1015 }
1016 let inner_offset;
1017 let mut inner_depth = depth.clone();
1018 if inlined {
1019 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1020 inner_offset = next_offset;
1021 } else {
1022 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1023 inner_depth.increment()?;
1024 }
1025 let val_ref = self.word_length_bits.get_or_insert_with(|| fidl::new_empty!(u8, D));
1026 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
1027 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1028 {
1029 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1030 }
1031 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1032 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1033 }
1034 }
1035
1036 next_offset += envelope_size;
1037 _next_ordinal_to_read += 1;
1038 if next_offset >= end_offset {
1039 return Ok(());
1040 }
1041
1042 while _next_ordinal_to_read < 7 {
1044 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1045 _next_ordinal_to_read += 1;
1046 next_offset += envelope_size;
1047 }
1048
1049 let next_out_of_line = decoder.next_out_of_line();
1050 let handles_before = decoder.remaining_handles();
1051 if let Some((inlined, num_bytes, num_handles)) =
1052 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1053 {
1054 let member_inline_size =
1055 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1056 if inlined != (member_inline_size <= 4) {
1057 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1058 }
1059 let inner_offset;
1060 let mut inner_depth = depth.clone();
1061 if inlined {
1062 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1063 inner_offset = next_offset;
1064 } else {
1065 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1066 inner_depth.increment()?;
1067 }
1068 let val_ref =
1069 self.is_bus_controller.get_or_insert_with(|| fidl::new_empty!(bool, D));
1070 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
1071 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1072 {
1073 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1074 }
1075 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1076 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1077 }
1078 }
1079
1080 next_offset += envelope_size;
1081 _next_ordinal_to_read += 1;
1082 if next_offset >= end_offset {
1083 return Ok(());
1084 }
1085
1086 while _next_ordinal_to_read < 8 {
1088 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1089 _next_ordinal_to_read += 1;
1090 next_offset += envelope_size;
1091 }
1092
1093 let next_out_of_line = decoder.next_out_of_line();
1094 let handles_before = decoder.remaining_handles();
1095 if let Some((inlined, num_bytes, num_handles)) =
1096 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1097 {
1098 let member_inline_size =
1099 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1100 if inlined != (member_inline_size <= 4) {
1101 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1102 }
1103 let inner_offset;
1104 let mut inner_depth = depth.clone();
1105 if inlined {
1106 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1107 inner_offset = next_offset;
1108 } else {
1109 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1110 inner_depth.increment()?;
1111 }
1112 let val_ref =
1113 self.clock_polarity_high.get_or_insert_with(|| fidl::new_empty!(bool, D));
1114 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
1115 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1116 {
1117 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1118 }
1119 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1120 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1121 }
1122 }
1123
1124 next_offset += envelope_size;
1125 _next_ordinal_to_read += 1;
1126 if next_offset >= end_offset {
1127 return Ok(());
1128 }
1129
1130 while _next_ordinal_to_read < 9 {
1132 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1133 _next_ordinal_to_read += 1;
1134 next_offset += envelope_size;
1135 }
1136
1137 let next_out_of_line = decoder.next_out_of_line();
1138 let handles_before = decoder.remaining_handles();
1139 if let Some((inlined, num_bytes, num_handles)) =
1140 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1141 {
1142 let member_inline_size =
1143 <SpiClockPhase as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1144 if inlined != (member_inline_size <= 4) {
1145 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1146 }
1147 let inner_offset;
1148 let mut inner_depth = depth.clone();
1149 if inlined {
1150 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1151 inner_offset = next_offset;
1152 } else {
1153 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1154 inner_depth.increment()?;
1155 }
1156 let val_ref =
1157 self.clock_phase.get_or_insert_with(|| fidl::new_empty!(SpiClockPhase, D));
1158 fidl::decode!(SpiClockPhase, D, val_ref, decoder, inner_offset, inner_depth)?;
1159 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1160 {
1161 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1162 }
1163 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1164 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1165 }
1166 }
1167
1168 next_offset += envelope_size;
1169 _next_ordinal_to_read += 1;
1170 if next_offset >= end_offset {
1171 return Ok(());
1172 }
1173
1174 while _next_ordinal_to_read < 10 {
1176 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1177 _next_ordinal_to_read += 1;
1178 next_offset += envelope_size;
1179 }
1180
1181 let next_out_of_line = decoder.next_out_of_line();
1182 let handles_before = decoder.remaining_handles();
1183 if let Some((inlined, num_bytes, num_handles)) =
1184 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1185 {
1186 let member_inline_size =
1187 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1188 if inlined != (member_inline_size <= 4) {
1189 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1190 }
1191 let inner_offset;
1192 let mut inner_depth = depth.clone();
1193 if inlined {
1194 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1195 inner_offset = next_offset;
1196 } else {
1197 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1198 inner_depth.increment()?;
1199 }
1200 let val_ref = self.max_frequency_hz.get_or_insert_with(|| fidl::new_empty!(u32, D));
1201 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
1202 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1203 {
1204 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1205 }
1206 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1207 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1208 }
1209 }
1210
1211 next_offset += envelope_size;
1212
1213 while next_offset < end_offset {
1215 _next_ordinal_to_read += 1;
1216 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1217 next_offset += envelope_size;
1218 }
1219
1220 Ok(())
1221 }
1222 }
1223}