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_CONTROLLER_WRITE_COMMANDS: u32 = 256;
14
15pub const MAX_SPMI_NAME_LEN: u32 = 64;
17
18pub const MAX_SUB_TARGETS: u32 = 65536;
19
20pub const MAX_TARGETS: u32 = 16;
21
22#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
24pub enum DriverError {
25 Internal,
27 NotSupported,
29 InvalidArgs,
31 BadState,
34 IoRefused,
37 Canceled,
39 NotFound,
41 #[doc(hidden)]
42 __SourceBreaking { unknown_ordinal: u32 },
43}
44
45#[macro_export]
47macro_rules! DriverErrorUnknown {
48 () => {
49 _
50 };
51}
52
53impl DriverError {
54 #[inline]
55 pub fn from_primitive(prim: u32) -> Option<Self> {
56 match prim {
57 1 => Some(Self::Internal),
58 2 => Some(Self::NotSupported),
59 3 => Some(Self::InvalidArgs),
60 4 => Some(Self::BadState),
61 5 => Some(Self::IoRefused),
62 6 => Some(Self::Canceled),
63 7 => Some(Self::NotFound),
64 _ => None,
65 }
66 }
67
68 #[inline]
69 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
70 match prim {
71 1 => Self::Internal,
72 2 => Self::NotSupported,
73 3 => Self::InvalidArgs,
74 4 => Self::BadState,
75 5 => Self::IoRefused,
76 6 => Self::Canceled,
77 7 => Self::NotFound,
78 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
79 }
80 }
81
82 #[inline]
83 pub fn unknown() -> Self {
84 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
85 }
86
87 #[inline]
88 pub const fn into_primitive(self) -> u32 {
89 match self {
90 Self::Internal => 1,
91 Self::NotSupported => 2,
92 Self::InvalidArgs => 3,
93 Self::BadState => 4,
94 Self::IoRefused => 5,
95 Self::Canceled => 6,
96 Self::NotFound => 7,
97 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
98 }
99 }
100
101 #[inline]
102 pub fn is_unknown(&self) -> bool {
103 match self {
104 Self::__SourceBreaking { unknown_ordinal: _ } => true,
105 _ => false,
106 }
107 }
108}
109
110#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
111#[repr(C)]
112pub struct DeviceCancelWatchControllerWriteCommandsRequest {
113 pub address: u8,
114 pub size: u16,
115}
116
117impl fidl::Persistable for DeviceCancelWatchControllerWriteCommandsRequest {}
118
119#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
120#[repr(C)]
121pub struct DeviceRegisterReadRequest {
122 pub address: u16,
123 pub size_bytes: u32,
124}
125
126impl fidl::Persistable for DeviceRegisterReadRequest {}
127
128#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
129pub struct DeviceRegisterWriteRequest {
130 pub address: u16,
131 pub data: Vec<u8>,
132}
133
134impl fidl::Persistable for DeviceRegisterWriteRequest {}
135
136#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
137pub struct DeviceRegisterReadResponse {
138 pub data: Vec<u8>,
139}
140
141impl fidl::Persistable for DeviceRegisterReadResponse {}
142
143#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
145#[repr(C)]
146pub struct Register8 {
147 pub address: u8,
148 pub data: u8,
149}
150
151impl fidl::Persistable for Register8 {}
152
153#[derive(Clone, Debug, Default, PartialEq)]
155pub struct ControllerInfo {
156 pub id: Option<u32>,
158 pub targets: Option<Vec<TargetInfo>>,
160 #[doc(hidden)]
161 pub __source_breaking: fidl::marker::SourceBreaking,
162}
163
164impl fidl::Persistable for ControllerInfo {}
165impl fidl::Serializable for ControllerInfo {
166 const SERIALIZABLE_NAME: &'static str = "fuchsia.hardware.spmi.ControllerInfo";
167}
168
169#[derive(Clone, Debug, Default, PartialEq)]
170pub struct DebugGetControllerPropertiesResponse {
171 pub name: Option<String>,
176 #[doc(hidden)]
177 pub __source_breaking: fidl::marker::SourceBreaking,
178}
179
180impl fidl::Persistable for DebugGetControllerPropertiesResponse {}
181
182#[derive(Clone, Debug, Default, PartialEq)]
183pub struct DeviceGetPropertiesResponse {
184 pub sid: Option<u8>,
189 pub name: Option<String>,
194 pub register_width_bytes: Option<u32>,
199 #[doc(hidden)]
200 pub __source_breaking: fidl::marker::SourceBreaking,
201}
202
203impl fidl::Persistable for DeviceGetPropertiesResponse {}
204
205#[derive(Clone, Debug, Default, PartialEq)]
206pub struct SubTargetInfo {
207 pub address: Option<u16>,
210 pub size: Option<u32>,
213 pub name: Option<String>,
215 pub display_name: Option<String>,
217 #[doc(hidden)]
218 pub __source_breaking: fidl::marker::SourceBreaking,
219}
220
221impl fidl::Persistable for SubTargetInfo {}
222
223#[derive(Clone, Debug, Default, PartialEq)]
224pub struct TargetInfo {
225 pub id: Option<u8>,
227 pub sub_targets: Option<Vec<SubTargetInfo>>,
229 pub name: Option<String>,
231 pub display_name: Option<String>,
233 #[doc(hidden)]
234 pub __source_breaking: fidl::marker::SourceBreaking,
235}
236
237impl fidl::Persistable for TargetInfo {}
238
239pub mod debug_ordinals {
240 pub const CONNECT_TARGET: u64 = 0xb18ebc371c68d19;
241 pub const GET_CONTROLLER_PROPERTIES: u64 = 0x41b1c4ef901d051f;
242}
243
244pub mod device_ordinals {
245 pub const REGISTER_READ: u64 = 0x1b0f6eff7638b5;
246 pub const REGISTER_WRITE: u64 = 0xe7f4ed59770bb2b;
247 pub const GET_PROPERTIES: u64 = 0x1e946ec04006ffbb;
248 pub const WATCH_CONTROLLER_WRITE_COMMANDS: u64 = 0x41674c1eba4d05ac;
249 pub const CANCEL_WATCH_CONTROLLER_WRITE_COMMANDS: u64 = 0x5057c280e6f0d420;
250}
251
252mod internal {
253 use super::*;
254 unsafe impl fidl::encoding::TypeMarker for DriverError {
255 type Owned = Self;
256
257 #[inline(always)]
258 fn inline_align(_context: fidl::encoding::Context) -> usize {
259 std::mem::align_of::<u32>()
260 }
261
262 #[inline(always)]
263 fn inline_size(_context: fidl::encoding::Context) -> usize {
264 std::mem::size_of::<u32>()
265 }
266
267 #[inline(always)]
268 fn encode_is_copy() -> bool {
269 false
270 }
271
272 #[inline(always)]
273 fn decode_is_copy() -> bool {
274 false
275 }
276 }
277
278 impl fidl::encoding::ValueTypeMarker for DriverError {
279 type Borrowed<'a> = Self;
280 #[inline(always)]
281 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
282 *value
283 }
284 }
285
286 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for DriverError {
287 #[inline]
288 unsafe fn encode(
289 self,
290 encoder: &mut fidl::encoding::Encoder<'_, D>,
291 offset: usize,
292 _depth: fidl::encoding::Depth,
293 ) -> fidl::Result<()> {
294 encoder.debug_check_bounds::<Self>(offset);
295 encoder.write_num(self.into_primitive(), offset);
296 Ok(())
297 }
298 }
299
300 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DriverError {
301 #[inline(always)]
302 fn new_empty() -> Self {
303 Self::unknown()
304 }
305
306 #[inline]
307 unsafe fn decode(
308 &mut self,
309 decoder: &mut fidl::encoding::Decoder<'_, D>,
310 offset: usize,
311 _depth: fidl::encoding::Depth,
312 ) -> fidl::Result<()> {
313 decoder.debug_check_bounds::<Self>(offset);
314 let prim = decoder.read_num::<u32>(offset);
315
316 *self = Self::from_primitive_allow_unknown(prim);
317 Ok(())
318 }
319 }
320
321 impl fidl::encoding::ValueTypeMarker for DeviceCancelWatchControllerWriteCommandsRequest {
322 type Borrowed<'a> = &'a Self;
323 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
324 value
325 }
326 }
327
328 unsafe impl fidl::encoding::TypeMarker for DeviceCancelWatchControllerWriteCommandsRequest {
329 type Owned = Self;
330
331 #[inline(always)]
332 fn inline_align(_context: fidl::encoding::Context) -> usize {
333 2
334 }
335
336 #[inline(always)]
337 fn inline_size(_context: fidl::encoding::Context) -> usize {
338 4
339 }
340 }
341
342 unsafe impl<D: fidl::encoding::ResourceDialect>
343 fidl::encoding::Encode<DeviceCancelWatchControllerWriteCommandsRequest, D>
344 for &DeviceCancelWatchControllerWriteCommandsRequest
345 {
346 #[inline]
347 unsafe fn encode(
348 self,
349 encoder: &mut fidl::encoding::Encoder<'_, D>,
350 offset: usize,
351 _depth: fidl::encoding::Depth,
352 ) -> fidl::Result<()> {
353 encoder.debug_check_bounds::<DeviceCancelWatchControllerWriteCommandsRequest>(offset);
354 unsafe {
355 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
357 (buf_ptr as *mut DeviceCancelWatchControllerWriteCommandsRequest).write_unaligned(
358 (self as *const DeviceCancelWatchControllerWriteCommandsRequest).read(),
359 );
360 let padding_ptr = buf_ptr.offset(0) as *mut u16;
363 let padding_mask = 0xff00u16;
364 padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
365 }
366 Ok(())
367 }
368 }
369 unsafe impl<
370 D: fidl::encoding::ResourceDialect,
371 T0: fidl::encoding::Encode<u8, D>,
372 T1: fidl::encoding::Encode<u16, D>,
373 > fidl::encoding::Encode<DeviceCancelWatchControllerWriteCommandsRequest, D> for (T0, T1)
374 {
375 #[inline]
376 unsafe fn encode(
377 self,
378 encoder: &mut fidl::encoding::Encoder<'_, D>,
379 offset: usize,
380 depth: fidl::encoding::Depth,
381 ) -> fidl::Result<()> {
382 encoder.debug_check_bounds::<DeviceCancelWatchControllerWriteCommandsRequest>(offset);
383 unsafe {
386 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
387 (ptr as *mut u16).write_unaligned(0);
388 }
389 self.0.encode(encoder, offset + 0, depth)?;
391 self.1.encode(encoder, offset + 2, depth)?;
392 Ok(())
393 }
394 }
395
396 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
397 for DeviceCancelWatchControllerWriteCommandsRequest
398 {
399 #[inline(always)]
400 fn new_empty() -> Self {
401 Self { address: fidl::new_empty!(u8, D), size: fidl::new_empty!(u16, D) }
402 }
403
404 #[inline]
405 unsafe fn decode(
406 &mut self,
407 decoder: &mut fidl::encoding::Decoder<'_, D>,
408 offset: usize,
409 _depth: fidl::encoding::Depth,
410 ) -> fidl::Result<()> {
411 decoder.debug_check_bounds::<Self>(offset);
412 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
413 let ptr = unsafe { buf_ptr.offset(0) };
415 let padval = unsafe { (ptr as *const u16).read_unaligned() };
416 let mask = 0xff00u16;
417 let maskedval = padval & mask;
418 if maskedval != 0 {
419 return Err(fidl::Error::NonZeroPadding {
420 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
421 });
422 }
423 unsafe {
425 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
426 }
427 Ok(())
428 }
429 }
430
431 impl fidl::encoding::ValueTypeMarker for DeviceRegisterReadRequest {
432 type Borrowed<'a> = &'a Self;
433 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
434 value
435 }
436 }
437
438 unsafe impl fidl::encoding::TypeMarker for DeviceRegisterReadRequest {
439 type Owned = Self;
440
441 #[inline(always)]
442 fn inline_align(_context: fidl::encoding::Context) -> usize {
443 4
444 }
445
446 #[inline(always)]
447 fn inline_size(_context: fidl::encoding::Context) -> usize {
448 8
449 }
450 }
451
452 unsafe impl<D: fidl::encoding::ResourceDialect>
453 fidl::encoding::Encode<DeviceRegisterReadRequest, D> for &DeviceRegisterReadRequest
454 {
455 #[inline]
456 unsafe fn encode(
457 self,
458 encoder: &mut fidl::encoding::Encoder<'_, D>,
459 offset: usize,
460 _depth: fidl::encoding::Depth,
461 ) -> fidl::Result<()> {
462 encoder.debug_check_bounds::<DeviceRegisterReadRequest>(offset);
463 unsafe {
464 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
466 (buf_ptr as *mut DeviceRegisterReadRequest)
467 .write_unaligned((self as *const DeviceRegisterReadRequest).read());
468 let padding_ptr = buf_ptr.offset(0) as *mut u32;
471 let padding_mask = 0xffff0000u32;
472 padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
473 }
474 Ok(())
475 }
476 }
477 unsafe impl<
478 D: fidl::encoding::ResourceDialect,
479 T0: fidl::encoding::Encode<u16, D>,
480 T1: fidl::encoding::Encode<u32, D>,
481 > fidl::encoding::Encode<DeviceRegisterReadRequest, D> for (T0, T1)
482 {
483 #[inline]
484 unsafe fn encode(
485 self,
486 encoder: &mut fidl::encoding::Encoder<'_, D>,
487 offset: usize,
488 depth: fidl::encoding::Depth,
489 ) -> fidl::Result<()> {
490 encoder.debug_check_bounds::<DeviceRegisterReadRequest>(offset);
491 unsafe {
494 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
495 (ptr as *mut u32).write_unaligned(0);
496 }
497 self.0.encode(encoder, offset + 0, depth)?;
499 self.1.encode(encoder, offset + 4, depth)?;
500 Ok(())
501 }
502 }
503
504 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
505 for DeviceRegisterReadRequest
506 {
507 #[inline(always)]
508 fn new_empty() -> Self {
509 Self { address: fidl::new_empty!(u16, D), size_bytes: fidl::new_empty!(u32, D) }
510 }
511
512 #[inline]
513 unsafe fn decode(
514 &mut self,
515 decoder: &mut fidl::encoding::Decoder<'_, D>,
516 offset: usize,
517 _depth: fidl::encoding::Depth,
518 ) -> fidl::Result<()> {
519 decoder.debug_check_bounds::<Self>(offset);
520 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
521 let ptr = unsafe { buf_ptr.offset(0) };
523 let padval = unsafe { (ptr as *const u32).read_unaligned() };
524 let mask = 0xffff0000u32;
525 let maskedval = padval & mask;
526 if maskedval != 0 {
527 return Err(fidl::Error::NonZeroPadding {
528 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
529 });
530 }
531 unsafe {
533 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
534 }
535 Ok(())
536 }
537 }
538
539 impl fidl::encoding::ValueTypeMarker for DeviceRegisterWriteRequest {
540 type Borrowed<'a> = &'a Self;
541 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
542 value
543 }
544 }
545
546 unsafe impl fidl::encoding::TypeMarker for DeviceRegisterWriteRequest {
547 type Owned = Self;
548
549 #[inline(always)]
550 fn inline_align(_context: fidl::encoding::Context) -> usize {
551 8
552 }
553
554 #[inline(always)]
555 fn inline_size(_context: fidl::encoding::Context) -> usize {
556 24
557 }
558 }
559
560 unsafe impl<D: fidl::encoding::ResourceDialect>
561 fidl::encoding::Encode<DeviceRegisterWriteRequest, D> for &DeviceRegisterWriteRequest
562 {
563 #[inline]
564 unsafe fn encode(
565 self,
566 encoder: &mut fidl::encoding::Encoder<'_, D>,
567 offset: usize,
568 _depth: fidl::encoding::Depth,
569 ) -> fidl::Result<()> {
570 encoder.debug_check_bounds::<DeviceRegisterWriteRequest>(offset);
571 fidl::encoding::Encode::<DeviceRegisterWriteRequest, D>::encode(
573 (
574 <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.address),
575 <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.data),
576 ),
577 encoder, offset, _depth
578 )
579 }
580 }
581 unsafe impl<
582 D: fidl::encoding::ResourceDialect,
583 T0: fidl::encoding::Encode<u16, D>,
584 T1: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
585 > fidl::encoding::Encode<DeviceRegisterWriteRequest, D> for (T0, T1)
586 {
587 #[inline]
588 unsafe fn encode(
589 self,
590 encoder: &mut fidl::encoding::Encoder<'_, D>,
591 offset: usize,
592 depth: fidl::encoding::Depth,
593 ) -> fidl::Result<()> {
594 encoder.debug_check_bounds::<DeviceRegisterWriteRequest>(offset);
595 unsafe {
598 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
599 (ptr as *mut u64).write_unaligned(0);
600 }
601 self.0.encode(encoder, offset + 0, depth)?;
603 self.1.encode(encoder, offset + 8, depth)?;
604 Ok(())
605 }
606 }
607
608 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
609 for DeviceRegisterWriteRequest
610 {
611 #[inline(always)]
612 fn new_empty() -> Self {
613 Self {
614 address: fidl::new_empty!(u16, D),
615 data: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
616 }
617 }
618
619 #[inline]
620 unsafe fn decode(
621 &mut self,
622 decoder: &mut fidl::encoding::Decoder<'_, D>,
623 offset: usize,
624 _depth: fidl::encoding::Depth,
625 ) -> fidl::Result<()> {
626 decoder.debug_check_bounds::<Self>(offset);
627 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
629 let padval = unsafe { (ptr as *const u64).read_unaligned() };
630 let mask = 0xffffffffffff0000u64;
631 let maskedval = padval & mask;
632 if maskedval != 0 {
633 return Err(fidl::Error::NonZeroPadding {
634 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
635 });
636 }
637 fidl::decode!(u16, D, &mut self.address, decoder, offset + 0, _depth)?;
638 fidl::decode!(
639 fidl::encoding::UnboundedVector<u8>,
640 D,
641 &mut self.data,
642 decoder,
643 offset + 8,
644 _depth
645 )?;
646 Ok(())
647 }
648 }
649
650 impl fidl::encoding::ValueTypeMarker for DeviceRegisterReadResponse {
651 type Borrowed<'a> = &'a Self;
652 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
653 value
654 }
655 }
656
657 unsafe impl fidl::encoding::TypeMarker for DeviceRegisterReadResponse {
658 type Owned = Self;
659
660 #[inline(always)]
661 fn inline_align(_context: fidl::encoding::Context) -> usize {
662 8
663 }
664
665 #[inline(always)]
666 fn inline_size(_context: fidl::encoding::Context) -> usize {
667 16
668 }
669 }
670
671 unsafe impl<D: fidl::encoding::ResourceDialect>
672 fidl::encoding::Encode<DeviceRegisterReadResponse, D> for &DeviceRegisterReadResponse
673 {
674 #[inline]
675 unsafe fn encode(
676 self,
677 encoder: &mut fidl::encoding::Encoder<'_, D>,
678 offset: usize,
679 _depth: fidl::encoding::Depth,
680 ) -> fidl::Result<()> {
681 encoder.debug_check_bounds::<DeviceRegisterReadResponse>(offset);
682 fidl::encoding::Encode::<DeviceRegisterReadResponse, D>::encode(
684 (<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(
685 &self.data,
686 ),),
687 encoder,
688 offset,
689 _depth,
690 )
691 }
692 }
693 unsafe impl<
694 D: fidl::encoding::ResourceDialect,
695 T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
696 > fidl::encoding::Encode<DeviceRegisterReadResponse, D> for (T0,)
697 {
698 #[inline]
699 unsafe fn encode(
700 self,
701 encoder: &mut fidl::encoding::Encoder<'_, D>,
702 offset: usize,
703 depth: fidl::encoding::Depth,
704 ) -> fidl::Result<()> {
705 encoder.debug_check_bounds::<DeviceRegisterReadResponse>(offset);
706 self.0.encode(encoder, offset + 0, depth)?;
710 Ok(())
711 }
712 }
713
714 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
715 for DeviceRegisterReadResponse
716 {
717 #[inline(always)]
718 fn new_empty() -> Self {
719 Self { data: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D) }
720 }
721
722 #[inline]
723 unsafe fn decode(
724 &mut self,
725 decoder: &mut fidl::encoding::Decoder<'_, D>,
726 offset: usize,
727 _depth: fidl::encoding::Depth,
728 ) -> fidl::Result<()> {
729 decoder.debug_check_bounds::<Self>(offset);
730 fidl::decode!(
732 fidl::encoding::UnboundedVector<u8>,
733 D,
734 &mut self.data,
735 decoder,
736 offset + 0,
737 _depth
738 )?;
739 Ok(())
740 }
741 }
742
743 impl fidl::encoding::ValueTypeMarker for Register8 {
744 type Borrowed<'a> = &'a Self;
745 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
746 value
747 }
748 }
749
750 unsafe impl fidl::encoding::TypeMarker for Register8 {
751 type Owned = Self;
752
753 #[inline(always)]
754 fn inline_align(_context: fidl::encoding::Context) -> usize {
755 1
756 }
757
758 #[inline(always)]
759 fn inline_size(_context: fidl::encoding::Context) -> usize {
760 2
761 }
762 #[inline(always)]
763 fn encode_is_copy() -> bool {
764 true
765 }
766
767 #[inline(always)]
768 fn decode_is_copy() -> bool {
769 true
770 }
771 }
772
773 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Register8, D>
774 for &Register8
775 {
776 #[inline]
777 unsafe fn encode(
778 self,
779 encoder: &mut fidl::encoding::Encoder<'_, D>,
780 offset: usize,
781 _depth: fidl::encoding::Depth,
782 ) -> fidl::Result<()> {
783 encoder.debug_check_bounds::<Register8>(offset);
784 unsafe {
785 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
787 (buf_ptr as *mut Register8).write_unaligned((self as *const Register8).read());
788 }
791 Ok(())
792 }
793 }
794 unsafe impl<
795 D: fidl::encoding::ResourceDialect,
796 T0: fidl::encoding::Encode<u8, D>,
797 T1: fidl::encoding::Encode<u8, D>,
798 > fidl::encoding::Encode<Register8, D> for (T0, T1)
799 {
800 #[inline]
801 unsafe fn encode(
802 self,
803 encoder: &mut fidl::encoding::Encoder<'_, D>,
804 offset: usize,
805 depth: fidl::encoding::Depth,
806 ) -> fidl::Result<()> {
807 encoder.debug_check_bounds::<Register8>(offset);
808 self.0.encode(encoder, offset + 0, depth)?;
812 self.1.encode(encoder, offset + 1, depth)?;
813 Ok(())
814 }
815 }
816
817 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Register8 {
818 #[inline(always)]
819 fn new_empty() -> Self {
820 Self { address: fidl::new_empty!(u8, D), data: fidl::new_empty!(u8, D) }
821 }
822
823 #[inline]
824 unsafe fn decode(
825 &mut self,
826 decoder: &mut fidl::encoding::Decoder<'_, D>,
827 offset: usize,
828 _depth: fidl::encoding::Depth,
829 ) -> fidl::Result<()> {
830 decoder.debug_check_bounds::<Self>(offset);
831 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
832 unsafe {
835 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 2);
836 }
837 Ok(())
838 }
839 }
840
841 impl ControllerInfo {
842 #[inline(always)]
843 fn max_ordinal_present(&self) -> u64 {
844 if let Some(_) = self.targets {
845 return 2;
846 }
847 if let Some(_) = self.id {
848 return 1;
849 }
850 0
851 }
852 }
853
854 impl fidl::encoding::ValueTypeMarker for ControllerInfo {
855 type Borrowed<'a> = &'a Self;
856 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
857 value
858 }
859 }
860
861 unsafe impl fidl::encoding::TypeMarker for ControllerInfo {
862 type Owned = Self;
863
864 #[inline(always)]
865 fn inline_align(_context: fidl::encoding::Context) -> usize {
866 8
867 }
868
869 #[inline(always)]
870 fn inline_size(_context: fidl::encoding::Context) -> usize {
871 16
872 }
873 }
874
875 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ControllerInfo, D>
876 for &ControllerInfo
877 {
878 unsafe fn encode(
879 self,
880 encoder: &mut fidl::encoding::Encoder<'_, D>,
881 offset: usize,
882 mut depth: fidl::encoding::Depth,
883 ) -> fidl::Result<()> {
884 encoder.debug_check_bounds::<ControllerInfo>(offset);
885 let max_ordinal: u64 = self.max_ordinal_present();
887 encoder.write_num(max_ordinal, offset);
888 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
889 if max_ordinal == 0 {
891 return Ok(());
892 }
893 depth.increment()?;
894 let envelope_size = 8;
895 let bytes_len = max_ordinal as usize * envelope_size;
896 #[allow(unused_variables)]
897 let offset = encoder.out_of_line_offset(bytes_len);
898 let mut _prev_end_offset: usize = 0;
899 if 1 > max_ordinal {
900 return Ok(());
901 }
902
903 let cur_offset: usize = (1 - 1) * envelope_size;
906
907 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
909
910 fidl::encoding::encode_in_envelope_optional::<u32, D>(
915 self.id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
916 encoder,
917 offset + cur_offset,
918 depth,
919 )?;
920
921 _prev_end_offset = cur_offset + envelope_size;
922 if 2 > max_ordinal {
923 return Ok(());
924 }
925
926 let cur_offset: usize = (2 - 1) * envelope_size;
929
930 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
932
933 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<TargetInfo, 16>, D>(
938 self.targets.as_ref().map(<fidl::encoding::Vector<TargetInfo, 16> as fidl::encoding::ValueTypeMarker>::borrow),
939 encoder, offset + cur_offset, depth
940 )?;
941
942 _prev_end_offset = cur_offset + envelope_size;
943
944 Ok(())
945 }
946 }
947
948 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ControllerInfo {
949 #[inline(always)]
950 fn new_empty() -> Self {
951 Self::default()
952 }
953
954 unsafe fn decode(
955 &mut self,
956 decoder: &mut fidl::encoding::Decoder<'_, D>,
957 offset: usize,
958 mut depth: fidl::encoding::Depth,
959 ) -> fidl::Result<()> {
960 decoder.debug_check_bounds::<Self>(offset);
961 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
962 None => return Err(fidl::Error::NotNullable),
963 Some(len) => len,
964 };
965 if len == 0 {
967 return Ok(());
968 };
969 depth.increment()?;
970 let envelope_size = 8;
971 let bytes_len = len * envelope_size;
972 let offset = decoder.out_of_line_offset(bytes_len)?;
973 let mut _next_ordinal_to_read = 0;
975 let mut next_offset = offset;
976 let end_offset = offset + bytes_len;
977 _next_ordinal_to_read += 1;
978 if next_offset >= end_offset {
979 return Ok(());
980 }
981
982 while _next_ordinal_to_read < 1 {
984 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
985 _next_ordinal_to_read += 1;
986 next_offset += envelope_size;
987 }
988
989 let next_out_of_line = decoder.next_out_of_line();
990 let handles_before = decoder.remaining_handles();
991 if let Some((inlined, num_bytes, num_handles)) =
992 fidl::encoding::decode_envelope_header(decoder, next_offset)?
993 {
994 let member_inline_size =
995 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
996 if inlined != (member_inline_size <= 4) {
997 return Err(fidl::Error::InvalidInlineBitInEnvelope);
998 }
999 let inner_offset;
1000 let mut inner_depth = depth.clone();
1001 if inlined {
1002 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1003 inner_offset = next_offset;
1004 } else {
1005 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1006 inner_depth.increment()?;
1007 }
1008 let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(u32, D));
1009 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
1010 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1011 {
1012 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1013 }
1014 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1015 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1016 }
1017 }
1018
1019 next_offset += envelope_size;
1020 _next_ordinal_to_read += 1;
1021 if next_offset >= end_offset {
1022 return Ok(());
1023 }
1024
1025 while _next_ordinal_to_read < 2 {
1027 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1028 _next_ordinal_to_read += 1;
1029 next_offset += envelope_size;
1030 }
1031
1032 let next_out_of_line = decoder.next_out_of_line();
1033 let handles_before = decoder.remaining_handles();
1034 if let Some((inlined, num_bytes, num_handles)) =
1035 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1036 {
1037 let member_inline_size = <fidl::encoding::Vector<TargetInfo, 16> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1038 if inlined != (member_inline_size <= 4) {
1039 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1040 }
1041 let inner_offset;
1042 let mut inner_depth = depth.clone();
1043 if inlined {
1044 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1045 inner_offset = next_offset;
1046 } else {
1047 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1048 inner_depth.increment()?;
1049 }
1050 let val_ref = self.targets.get_or_insert_with(
1051 || fidl::new_empty!(fidl::encoding::Vector<TargetInfo, 16>, D),
1052 );
1053 fidl::decode!(fidl::encoding::Vector<TargetInfo, 16>, D, val_ref, decoder, inner_offset, inner_depth)?;
1054 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1055 {
1056 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1057 }
1058 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1059 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1060 }
1061 }
1062
1063 next_offset += envelope_size;
1064
1065 while next_offset < end_offset {
1067 _next_ordinal_to_read += 1;
1068 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1069 next_offset += envelope_size;
1070 }
1071
1072 Ok(())
1073 }
1074 }
1075
1076 impl DebugGetControllerPropertiesResponse {
1077 #[inline(always)]
1078 fn max_ordinal_present(&self) -> u64 {
1079 if let Some(_) = self.name {
1080 return 1;
1081 }
1082 0
1083 }
1084 }
1085
1086 impl fidl::encoding::ValueTypeMarker for DebugGetControllerPropertiesResponse {
1087 type Borrowed<'a> = &'a Self;
1088 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1089 value
1090 }
1091 }
1092
1093 unsafe impl fidl::encoding::TypeMarker for DebugGetControllerPropertiesResponse {
1094 type Owned = Self;
1095
1096 #[inline(always)]
1097 fn inline_align(_context: fidl::encoding::Context) -> usize {
1098 8
1099 }
1100
1101 #[inline(always)]
1102 fn inline_size(_context: fidl::encoding::Context) -> usize {
1103 16
1104 }
1105 }
1106
1107 unsafe impl<D: fidl::encoding::ResourceDialect>
1108 fidl::encoding::Encode<DebugGetControllerPropertiesResponse, D>
1109 for &DebugGetControllerPropertiesResponse
1110 {
1111 unsafe fn encode(
1112 self,
1113 encoder: &mut fidl::encoding::Encoder<'_, D>,
1114 offset: usize,
1115 mut depth: fidl::encoding::Depth,
1116 ) -> fidl::Result<()> {
1117 encoder.debug_check_bounds::<DebugGetControllerPropertiesResponse>(offset);
1118 let max_ordinal: u64 = self.max_ordinal_present();
1120 encoder.write_num(max_ordinal, offset);
1121 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1122 if max_ordinal == 0 {
1124 return Ok(());
1125 }
1126 depth.increment()?;
1127 let envelope_size = 8;
1128 let bytes_len = max_ordinal as usize * envelope_size;
1129 #[allow(unused_variables)]
1130 let offset = encoder.out_of_line_offset(bytes_len);
1131 let mut _prev_end_offset: usize = 0;
1132 if 1 > max_ordinal {
1133 return Ok(());
1134 }
1135
1136 let cur_offset: usize = (1 - 1) * envelope_size;
1139
1140 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1142
1143 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
1148 self.name.as_ref().map(
1149 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
1150 ),
1151 encoder,
1152 offset + cur_offset,
1153 depth,
1154 )?;
1155
1156 _prev_end_offset = cur_offset + envelope_size;
1157
1158 Ok(())
1159 }
1160 }
1161
1162 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1163 for DebugGetControllerPropertiesResponse
1164 {
1165 #[inline(always)]
1166 fn new_empty() -> Self {
1167 Self::default()
1168 }
1169
1170 unsafe fn decode(
1171 &mut self,
1172 decoder: &mut fidl::encoding::Decoder<'_, D>,
1173 offset: usize,
1174 mut depth: fidl::encoding::Depth,
1175 ) -> fidl::Result<()> {
1176 decoder.debug_check_bounds::<Self>(offset);
1177 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1178 None => return Err(fidl::Error::NotNullable),
1179 Some(len) => len,
1180 };
1181 if len == 0 {
1183 return Ok(());
1184 };
1185 depth.increment()?;
1186 let envelope_size = 8;
1187 let bytes_len = len * envelope_size;
1188 let offset = decoder.out_of_line_offset(bytes_len)?;
1189 let mut _next_ordinal_to_read = 0;
1191 let mut next_offset = offset;
1192 let end_offset = offset + bytes_len;
1193 _next_ordinal_to_read += 1;
1194 if next_offset >= end_offset {
1195 return Ok(());
1196 }
1197
1198 while _next_ordinal_to_read < 1 {
1200 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1201 _next_ordinal_to_read += 1;
1202 next_offset += envelope_size;
1203 }
1204
1205 let next_out_of_line = decoder.next_out_of_line();
1206 let handles_before = decoder.remaining_handles();
1207 if let Some((inlined, num_bytes, num_handles)) =
1208 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1209 {
1210 let member_inline_size =
1211 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
1212 decoder.context,
1213 );
1214 if inlined != (member_inline_size <= 4) {
1215 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1216 }
1217 let inner_offset;
1218 let mut inner_depth = depth.clone();
1219 if inlined {
1220 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1221 inner_offset = next_offset;
1222 } else {
1223 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1224 inner_depth.increment()?;
1225 }
1226 let val_ref = self
1227 .name
1228 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
1229 fidl::decode!(
1230 fidl::encoding::BoundedString<64>,
1231 D,
1232 val_ref,
1233 decoder,
1234 inner_offset,
1235 inner_depth
1236 )?;
1237 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1238 {
1239 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1240 }
1241 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1242 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1243 }
1244 }
1245
1246 next_offset += envelope_size;
1247
1248 while next_offset < end_offset {
1250 _next_ordinal_to_read += 1;
1251 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1252 next_offset += envelope_size;
1253 }
1254
1255 Ok(())
1256 }
1257 }
1258
1259 impl DeviceGetPropertiesResponse {
1260 #[inline(always)]
1261 fn max_ordinal_present(&self) -> u64 {
1262 if let Some(_) = self.register_width_bytes {
1263 return 3;
1264 }
1265 if let Some(_) = self.name {
1266 return 2;
1267 }
1268 if let Some(_) = self.sid {
1269 return 1;
1270 }
1271 0
1272 }
1273 }
1274
1275 impl fidl::encoding::ValueTypeMarker for DeviceGetPropertiesResponse {
1276 type Borrowed<'a> = &'a Self;
1277 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1278 value
1279 }
1280 }
1281
1282 unsafe impl fidl::encoding::TypeMarker for DeviceGetPropertiesResponse {
1283 type Owned = Self;
1284
1285 #[inline(always)]
1286 fn inline_align(_context: fidl::encoding::Context) -> usize {
1287 8
1288 }
1289
1290 #[inline(always)]
1291 fn inline_size(_context: fidl::encoding::Context) -> usize {
1292 16
1293 }
1294 }
1295
1296 unsafe impl<D: fidl::encoding::ResourceDialect>
1297 fidl::encoding::Encode<DeviceGetPropertiesResponse, D> for &DeviceGetPropertiesResponse
1298 {
1299 unsafe fn encode(
1300 self,
1301 encoder: &mut fidl::encoding::Encoder<'_, D>,
1302 offset: usize,
1303 mut depth: fidl::encoding::Depth,
1304 ) -> fidl::Result<()> {
1305 encoder.debug_check_bounds::<DeviceGetPropertiesResponse>(offset);
1306 let max_ordinal: u64 = self.max_ordinal_present();
1308 encoder.write_num(max_ordinal, offset);
1309 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1310 if max_ordinal == 0 {
1312 return Ok(());
1313 }
1314 depth.increment()?;
1315 let envelope_size = 8;
1316 let bytes_len = max_ordinal as usize * envelope_size;
1317 #[allow(unused_variables)]
1318 let offset = encoder.out_of_line_offset(bytes_len);
1319 let mut _prev_end_offset: usize = 0;
1320 if 1 > max_ordinal {
1321 return Ok(());
1322 }
1323
1324 let cur_offset: usize = (1 - 1) * envelope_size;
1327
1328 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1330
1331 fidl::encoding::encode_in_envelope_optional::<u8, D>(
1336 self.sid.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
1337 encoder,
1338 offset + cur_offset,
1339 depth,
1340 )?;
1341
1342 _prev_end_offset = cur_offset + envelope_size;
1343 if 2 > max_ordinal {
1344 return Ok(());
1345 }
1346
1347 let cur_offset: usize = (2 - 1) * envelope_size;
1350
1351 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1353
1354 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
1359 self.name.as_ref().map(
1360 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
1361 ),
1362 encoder,
1363 offset + cur_offset,
1364 depth,
1365 )?;
1366
1367 _prev_end_offset = cur_offset + envelope_size;
1368 if 3 > max_ordinal {
1369 return Ok(());
1370 }
1371
1372 let cur_offset: usize = (3 - 1) * envelope_size;
1375
1376 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1378
1379 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1384 self.register_width_bytes
1385 .as_ref()
1386 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1387 encoder,
1388 offset + cur_offset,
1389 depth,
1390 )?;
1391
1392 _prev_end_offset = cur_offset + envelope_size;
1393
1394 Ok(())
1395 }
1396 }
1397
1398 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1399 for DeviceGetPropertiesResponse
1400 {
1401 #[inline(always)]
1402 fn new_empty() -> Self {
1403 Self::default()
1404 }
1405
1406 unsafe fn decode(
1407 &mut self,
1408 decoder: &mut fidl::encoding::Decoder<'_, D>,
1409 offset: usize,
1410 mut depth: fidl::encoding::Depth,
1411 ) -> fidl::Result<()> {
1412 decoder.debug_check_bounds::<Self>(offset);
1413 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1414 None => return Err(fidl::Error::NotNullable),
1415 Some(len) => len,
1416 };
1417 if len == 0 {
1419 return Ok(());
1420 };
1421 depth.increment()?;
1422 let envelope_size = 8;
1423 let bytes_len = len * envelope_size;
1424 let offset = decoder.out_of_line_offset(bytes_len)?;
1425 let mut _next_ordinal_to_read = 0;
1427 let mut next_offset = offset;
1428 let end_offset = offset + bytes_len;
1429 _next_ordinal_to_read += 1;
1430 if next_offset >= end_offset {
1431 return Ok(());
1432 }
1433
1434 while _next_ordinal_to_read < 1 {
1436 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1437 _next_ordinal_to_read += 1;
1438 next_offset += envelope_size;
1439 }
1440
1441 let next_out_of_line = decoder.next_out_of_line();
1442 let handles_before = decoder.remaining_handles();
1443 if let Some((inlined, num_bytes, num_handles)) =
1444 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1445 {
1446 let member_inline_size =
1447 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1448 if inlined != (member_inline_size <= 4) {
1449 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1450 }
1451 let inner_offset;
1452 let mut inner_depth = depth.clone();
1453 if inlined {
1454 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1455 inner_offset = next_offset;
1456 } else {
1457 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1458 inner_depth.increment()?;
1459 }
1460 let val_ref = self.sid.get_or_insert_with(|| fidl::new_empty!(u8, D));
1461 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
1462 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1463 {
1464 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1465 }
1466 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1467 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1468 }
1469 }
1470
1471 next_offset += envelope_size;
1472 _next_ordinal_to_read += 1;
1473 if next_offset >= end_offset {
1474 return Ok(());
1475 }
1476
1477 while _next_ordinal_to_read < 2 {
1479 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1480 _next_ordinal_to_read += 1;
1481 next_offset += envelope_size;
1482 }
1483
1484 let next_out_of_line = decoder.next_out_of_line();
1485 let handles_before = decoder.remaining_handles();
1486 if let Some((inlined, num_bytes, num_handles)) =
1487 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1488 {
1489 let member_inline_size =
1490 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
1491 decoder.context,
1492 );
1493 if inlined != (member_inline_size <= 4) {
1494 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1495 }
1496 let inner_offset;
1497 let mut inner_depth = depth.clone();
1498 if inlined {
1499 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1500 inner_offset = next_offset;
1501 } else {
1502 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1503 inner_depth.increment()?;
1504 }
1505 let val_ref = self
1506 .name
1507 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
1508 fidl::decode!(
1509 fidl::encoding::BoundedString<64>,
1510 D,
1511 val_ref,
1512 decoder,
1513 inner_offset,
1514 inner_depth
1515 )?;
1516 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1517 {
1518 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1519 }
1520 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1521 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1522 }
1523 }
1524
1525 next_offset += envelope_size;
1526 _next_ordinal_to_read += 1;
1527 if next_offset >= end_offset {
1528 return Ok(());
1529 }
1530
1531 while _next_ordinal_to_read < 3 {
1533 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1534 _next_ordinal_to_read += 1;
1535 next_offset += envelope_size;
1536 }
1537
1538 let next_out_of_line = decoder.next_out_of_line();
1539 let handles_before = decoder.remaining_handles();
1540 if let Some((inlined, num_bytes, num_handles)) =
1541 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1542 {
1543 let member_inline_size =
1544 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1545 if inlined != (member_inline_size <= 4) {
1546 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1547 }
1548 let inner_offset;
1549 let mut inner_depth = depth.clone();
1550 if inlined {
1551 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1552 inner_offset = next_offset;
1553 } else {
1554 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1555 inner_depth.increment()?;
1556 }
1557 let val_ref =
1558 self.register_width_bytes.get_or_insert_with(|| fidl::new_empty!(u32, D));
1559 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
1560 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1561 {
1562 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1563 }
1564 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1565 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1566 }
1567 }
1568
1569 next_offset += envelope_size;
1570
1571 while next_offset < end_offset {
1573 _next_ordinal_to_read += 1;
1574 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1575 next_offset += envelope_size;
1576 }
1577
1578 Ok(())
1579 }
1580 }
1581
1582 impl SubTargetInfo {
1583 #[inline(always)]
1584 fn max_ordinal_present(&self) -> u64 {
1585 if let Some(_) = self.display_name {
1586 return 4;
1587 }
1588 if let Some(_) = self.name {
1589 return 3;
1590 }
1591 if let Some(_) = self.size {
1592 return 2;
1593 }
1594 if let Some(_) = self.address {
1595 return 1;
1596 }
1597 0
1598 }
1599 }
1600
1601 impl fidl::encoding::ValueTypeMarker for SubTargetInfo {
1602 type Borrowed<'a> = &'a Self;
1603 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1604 value
1605 }
1606 }
1607
1608 unsafe impl fidl::encoding::TypeMarker for SubTargetInfo {
1609 type Owned = Self;
1610
1611 #[inline(always)]
1612 fn inline_align(_context: fidl::encoding::Context) -> usize {
1613 8
1614 }
1615
1616 #[inline(always)]
1617 fn inline_size(_context: fidl::encoding::Context) -> usize {
1618 16
1619 }
1620 }
1621
1622 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SubTargetInfo, D>
1623 for &SubTargetInfo
1624 {
1625 unsafe fn encode(
1626 self,
1627 encoder: &mut fidl::encoding::Encoder<'_, D>,
1628 offset: usize,
1629 mut depth: fidl::encoding::Depth,
1630 ) -> fidl::Result<()> {
1631 encoder.debug_check_bounds::<SubTargetInfo>(offset);
1632 let max_ordinal: u64 = self.max_ordinal_present();
1634 encoder.write_num(max_ordinal, offset);
1635 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1636 if max_ordinal == 0 {
1638 return Ok(());
1639 }
1640 depth.increment()?;
1641 let envelope_size = 8;
1642 let bytes_len = max_ordinal as usize * envelope_size;
1643 #[allow(unused_variables)]
1644 let offset = encoder.out_of_line_offset(bytes_len);
1645 let mut _prev_end_offset: usize = 0;
1646 if 1 > max_ordinal {
1647 return Ok(());
1648 }
1649
1650 let cur_offset: usize = (1 - 1) * envelope_size;
1653
1654 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1656
1657 fidl::encoding::encode_in_envelope_optional::<u16, D>(
1662 self.address.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
1663 encoder,
1664 offset + cur_offset,
1665 depth,
1666 )?;
1667
1668 _prev_end_offset = cur_offset + envelope_size;
1669 if 2 > max_ordinal {
1670 return Ok(());
1671 }
1672
1673 let cur_offset: usize = (2 - 1) * envelope_size;
1676
1677 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1679
1680 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1685 self.size.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1686 encoder,
1687 offset + cur_offset,
1688 depth,
1689 )?;
1690
1691 _prev_end_offset = cur_offset + envelope_size;
1692 if 3 > max_ordinal {
1693 return Ok(());
1694 }
1695
1696 let cur_offset: usize = (3 - 1) * envelope_size;
1699
1700 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1702
1703 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
1708 self.name.as_ref().map(
1709 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
1710 ),
1711 encoder,
1712 offset + cur_offset,
1713 depth,
1714 )?;
1715
1716 _prev_end_offset = cur_offset + envelope_size;
1717 if 4 > max_ordinal {
1718 return Ok(());
1719 }
1720
1721 let cur_offset: usize = (4 - 1) * envelope_size;
1724
1725 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1727
1728 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
1733 self.display_name.as_ref().map(
1734 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
1735 ),
1736 encoder,
1737 offset + cur_offset,
1738 depth,
1739 )?;
1740
1741 _prev_end_offset = cur_offset + envelope_size;
1742
1743 Ok(())
1744 }
1745 }
1746
1747 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SubTargetInfo {
1748 #[inline(always)]
1749 fn new_empty() -> Self {
1750 Self::default()
1751 }
1752
1753 unsafe fn decode(
1754 &mut self,
1755 decoder: &mut fidl::encoding::Decoder<'_, D>,
1756 offset: usize,
1757 mut depth: fidl::encoding::Depth,
1758 ) -> fidl::Result<()> {
1759 decoder.debug_check_bounds::<Self>(offset);
1760 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1761 None => return Err(fidl::Error::NotNullable),
1762 Some(len) => len,
1763 };
1764 if len == 0 {
1766 return Ok(());
1767 };
1768 depth.increment()?;
1769 let envelope_size = 8;
1770 let bytes_len = len * envelope_size;
1771 let offset = decoder.out_of_line_offset(bytes_len)?;
1772 let mut _next_ordinal_to_read = 0;
1774 let mut next_offset = offset;
1775 let end_offset = offset + bytes_len;
1776 _next_ordinal_to_read += 1;
1777 if next_offset >= end_offset {
1778 return Ok(());
1779 }
1780
1781 while _next_ordinal_to_read < 1 {
1783 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1784 _next_ordinal_to_read += 1;
1785 next_offset += envelope_size;
1786 }
1787
1788 let next_out_of_line = decoder.next_out_of_line();
1789 let handles_before = decoder.remaining_handles();
1790 if let Some((inlined, num_bytes, num_handles)) =
1791 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1792 {
1793 let member_inline_size =
1794 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1795 if inlined != (member_inline_size <= 4) {
1796 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1797 }
1798 let inner_offset;
1799 let mut inner_depth = depth.clone();
1800 if inlined {
1801 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1802 inner_offset = next_offset;
1803 } else {
1804 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1805 inner_depth.increment()?;
1806 }
1807 let val_ref = self.address.get_or_insert_with(|| fidl::new_empty!(u16, D));
1808 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
1809 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1810 {
1811 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1812 }
1813 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1814 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1815 }
1816 }
1817
1818 next_offset += envelope_size;
1819 _next_ordinal_to_read += 1;
1820 if next_offset >= end_offset {
1821 return Ok(());
1822 }
1823
1824 while _next_ordinal_to_read < 2 {
1826 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1827 _next_ordinal_to_read += 1;
1828 next_offset += envelope_size;
1829 }
1830
1831 let next_out_of_line = decoder.next_out_of_line();
1832 let handles_before = decoder.remaining_handles();
1833 if let Some((inlined, num_bytes, num_handles)) =
1834 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1835 {
1836 let member_inline_size =
1837 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1838 if inlined != (member_inline_size <= 4) {
1839 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1840 }
1841 let inner_offset;
1842 let mut inner_depth = depth.clone();
1843 if inlined {
1844 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1845 inner_offset = next_offset;
1846 } else {
1847 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1848 inner_depth.increment()?;
1849 }
1850 let val_ref = self.size.get_or_insert_with(|| fidl::new_empty!(u32, D));
1851 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
1852 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1853 {
1854 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1855 }
1856 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1857 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1858 }
1859 }
1860
1861 next_offset += envelope_size;
1862 _next_ordinal_to_read += 1;
1863 if next_offset >= end_offset {
1864 return Ok(());
1865 }
1866
1867 while _next_ordinal_to_read < 3 {
1869 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1870 _next_ordinal_to_read += 1;
1871 next_offset += envelope_size;
1872 }
1873
1874 let next_out_of_line = decoder.next_out_of_line();
1875 let handles_before = decoder.remaining_handles();
1876 if let Some((inlined, num_bytes, num_handles)) =
1877 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1878 {
1879 let member_inline_size =
1880 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
1881 decoder.context,
1882 );
1883 if inlined != (member_inline_size <= 4) {
1884 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1885 }
1886 let inner_offset;
1887 let mut inner_depth = depth.clone();
1888 if inlined {
1889 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1890 inner_offset = next_offset;
1891 } else {
1892 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1893 inner_depth.increment()?;
1894 }
1895 let val_ref = self
1896 .name
1897 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
1898 fidl::decode!(
1899 fidl::encoding::BoundedString<64>,
1900 D,
1901 val_ref,
1902 decoder,
1903 inner_offset,
1904 inner_depth
1905 )?;
1906 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1907 {
1908 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1909 }
1910 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1911 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1912 }
1913 }
1914
1915 next_offset += envelope_size;
1916 _next_ordinal_to_read += 1;
1917 if next_offset >= end_offset {
1918 return Ok(());
1919 }
1920
1921 while _next_ordinal_to_read < 4 {
1923 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1924 _next_ordinal_to_read += 1;
1925 next_offset += envelope_size;
1926 }
1927
1928 let next_out_of_line = decoder.next_out_of_line();
1929 let handles_before = decoder.remaining_handles();
1930 if let Some((inlined, num_bytes, num_handles)) =
1931 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1932 {
1933 let member_inline_size =
1934 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
1935 decoder.context,
1936 );
1937 if inlined != (member_inline_size <= 4) {
1938 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1939 }
1940 let inner_offset;
1941 let mut inner_depth = depth.clone();
1942 if inlined {
1943 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1944 inner_offset = next_offset;
1945 } else {
1946 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1947 inner_depth.increment()?;
1948 }
1949 let val_ref = self
1950 .display_name
1951 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
1952 fidl::decode!(
1953 fidl::encoding::UnboundedString,
1954 D,
1955 val_ref,
1956 decoder,
1957 inner_offset,
1958 inner_depth
1959 )?;
1960 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1961 {
1962 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1963 }
1964 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1965 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1966 }
1967 }
1968
1969 next_offset += envelope_size;
1970
1971 while next_offset < end_offset {
1973 _next_ordinal_to_read += 1;
1974 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1975 next_offset += envelope_size;
1976 }
1977
1978 Ok(())
1979 }
1980 }
1981
1982 impl TargetInfo {
1983 #[inline(always)]
1984 fn max_ordinal_present(&self) -> u64 {
1985 if let Some(_) = self.display_name {
1986 return 4;
1987 }
1988 if let Some(_) = self.name {
1989 return 3;
1990 }
1991 if let Some(_) = self.sub_targets {
1992 return 2;
1993 }
1994 if let Some(_) = self.id {
1995 return 1;
1996 }
1997 0
1998 }
1999 }
2000
2001 impl fidl::encoding::ValueTypeMarker for TargetInfo {
2002 type Borrowed<'a> = &'a Self;
2003 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2004 value
2005 }
2006 }
2007
2008 unsafe impl fidl::encoding::TypeMarker for TargetInfo {
2009 type Owned = Self;
2010
2011 #[inline(always)]
2012 fn inline_align(_context: fidl::encoding::Context) -> usize {
2013 8
2014 }
2015
2016 #[inline(always)]
2017 fn inline_size(_context: fidl::encoding::Context) -> usize {
2018 16
2019 }
2020 }
2021
2022 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TargetInfo, D>
2023 for &TargetInfo
2024 {
2025 unsafe fn encode(
2026 self,
2027 encoder: &mut fidl::encoding::Encoder<'_, D>,
2028 offset: usize,
2029 mut depth: fidl::encoding::Depth,
2030 ) -> fidl::Result<()> {
2031 encoder.debug_check_bounds::<TargetInfo>(offset);
2032 let max_ordinal: u64 = self.max_ordinal_present();
2034 encoder.write_num(max_ordinal, offset);
2035 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2036 if max_ordinal == 0 {
2038 return Ok(());
2039 }
2040 depth.increment()?;
2041 let envelope_size = 8;
2042 let bytes_len = max_ordinal as usize * envelope_size;
2043 #[allow(unused_variables)]
2044 let offset = encoder.out_of_line_offset(bytes_len);
2045 let mut _prev_end_offset: usize = 0;
2046 if 1 > max_ordinal {
2047 return Ok(());
2048 }
2049
2050 let cur_offset: usize = (1 - 1) * envelope_size;
2053
2054 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2056
2057 fidl::encoding::encode_in_envelope_optional::<u8, D>(
2062 self.id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
2063 encoder,
2064 offset + cur_offset,
2065 depth,
2066 )?;
2067
2068 _prev_end_offset = cur_offset + envelope_size;
2069 if 2 > max_ordinal {
2070 return Ok(());
2071 }
2072
2073 let cur_offset: usize = (2 - 1) * envelope_size;
2076
2077 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2079
2080 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<SubTargetInfo, 65536>, D>(
2085 self.sub_targets.as_ref().map(<fidl::encoding::Vector<SubTargetInfo, 65536> as fidl::encoding::ValueTypeMarker>::borrow),
2086 encoder, offset + cur_offset, depth
2087 )?;
2088
2089 _prev_end_offset = cur_offset + envelope_size;
2090 if 3 > max_ordinal {
2091 return Ok(());
2092 }
2093
2094 let cur_offset: usize = (3 - 1) * envelope_size;
2097
2098 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2100
2101 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
2106 self.name.as_ref().map(
2107 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
2108 ),
2109 encoder,
2110 offset + cur_offset,
2111 depth,
2112 )?;
2113
2114 _prev_end_offset = cur_offset + envelope_size;
2115 if 4 > max_ordinal {
2116 return Ok(());
2117 }
2118
2119 let cur_offset: usize = (4 - 1) * envelope_size;
2122
2123 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2125
2126 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
2131 self.display_name.as_ref().map(
2132 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
2133 ),
2134 encoder,
2135 offset + cur_offset,
2136 depth,
2137 )?;
2138
2139 _prev_end_offset = cur_offset + envelope_size;
2140
2141 Ok(())
2142 }
2143 }
2144
2145 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TargetInfo {
2146 #[inline(always)]
2147 fn new_empty() -> Self {
2148 Self::default()
2149 }
2150
2151 unsafe fn decode(
2152 &mut self,
2153 decoder: &mut fidl::encoding::Decoder<'_, D>,
2154 offset: usize,
2155 mut depth: fidl::encoding::Depth,
2156 ) -> fidl::Result<()> {
2157 decoder.debug_check_bounds::<Self>(offset);
2158 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2159 None => return Err(fidl::Error::NotNullable),
2160 Some(len) => len,
2161 };
2162 if len == 0 {
2164 return Ok(());
2165 };
2166 depth.increment()?;
2167 let envelope_size = 8;
2168 let bytes_len = len * envelope_size;
2169 let offset = decoder.out_of_line_offset(bytes_len)?;
2170 let mut _next_ordinal_to_read = 0;
2172 let mut next_offset = offset;
2173 let end_offset = offset + bytes_len;
2174 _next_ordinal_to_read += 1;
2175 if next_offset >= end_offset {
2176 return Ok(());
2177 }
2178
2179 while _next_ordinal_to_read < 1 {
2181 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2182 _next_ordinal_to_read += 1;
2183 next_offset += envelope_size;
2184 }
2185
2186 let next_out_of_line = decoder.next_out_of_line();
2187 let handles_before = decoder.remaining_handles();
2188 if let Some((inlined, num_bytes, num_handles)) =
2189 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2190 {
2191 let member_inline_size =
2192 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2193 if inlined != (member_inline_size <= 4) {
2194 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2195 }
2196 let inner_offset;
2197 let mut inner_depth = depth.clone();
2198 if inlined {
2199 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2200 inner_offset = next_offset;
2201 } else {
2202 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2203 inner_depth.increment()?;
2204 }
2205 let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(u8, D));
2206 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
2207 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2208 {
2209 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2210 }
2211 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2212 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2213 }
2214 }
2215
2216 next_offset += envelope_size;
2217 _next_ordinal_to_read += 1;
2218 if next_offset >= end_offset {
2219 return Ok(());
2220 }
2221
2222 while _next_ordinal_to_read < 2 {
2224 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2225 _next_ordinal_to_read += 1;
2226 next_offset += envelope_size;
2227 }
2228
2229 let next_out_of_line = decoder.next_out_of_line();
2230 let handles_before = decoder.remaining_handles();
2231 if let Some((inlined, num_bytes, num_handles)) =
2232 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2233 {
2234 let member_inline_size = <fidl::encoding::Vector<SubTargetInfo, 65536> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2235 if inlined != (member_inline_size <= 4) {
2236 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2237 }
2238 let inner_offset;
2239 let mut inner_depth = depth.clone();
2240 if inlined {
2241 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2242 inner_offset = next_offset;
2243 } else {
2244 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2245 inner_depth.increment()?;
2246 }
2247 let val_ref = self.sub_targets.get_or_insert_with(
2248 || fidl::new_empty!(fidl::encoding::Vector<SubTargetInfo, 65536>, D),
2249 );
2250 fidl::decode!(fidl::encoding::Vector<SubTargetInfo, 65536>, D, val_ref, decoder, inner_offset, inner_depth)?;
2251 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2252 {
2253 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2254 }
2255 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2256 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2257 }
2258 }
2259
2260 next_offset += envelope_size;
2261 _next_ordinal_to_read += 1;
2262 if next_offset >= end_offset {
2263 return Ok(());
2264 }
2265
2266 while _next_ordinal_to_read < 3 {
2268 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2269 _next_ordinal_to_read += 1;
2270 next_offset += envelope_size;
2271 }
2272
2273 let next_out_of_line = decoder.next_out_of_line();
2274 let handles_before = decoder.remaining_handles();
2275 if let Some((inlined, num_bytes, num_handles)) =
2276 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2277 {
2278 let member_inline_size =
2279 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
2280 decoder.context,
2281 );
2282 if inlined != (member_inline_size <= 4) {
2283 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2284 }
2285 let inner_offset;
2286 let mut inner_depth = depth.clone();
2287 if inlined {
2288 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2289 inner_offset = next_offset;
2290 } else {
2291 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2292 inner_depth.increment()?;
2293 }
2294 let val_ref = self
2295 .name
2296 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
2297 fidl::decode!(
2298 fidl::encoding::BoundedString<64>,
2299 D,
2300 val_ref,
2301 decoder,
2302 inner_offset,
2303 inner_depth
2304 )?;
2305 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2306 {
2307 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2308 }
2309 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2310 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2311 }
2312 }
2313
2314 next_offset += envelope_size;
2315 _next_ordinal_to_read += 1;
2316 if next_offset >= end_offset {
2317 return Ok(());
2318 }
2319
2320 while _next_ordinal_to_read < 4 {
2322 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2323 _next_ordinal_to_read += 1;
2324 next_offset += envelope_size;
2325 }
2326
2327 let next_out_of_line = decoder.next_out_of_line();
2328 let handles_before = decoder.remaining_handles();
2329 if let Some((inlined, num_bytes, num_handles)) =
2330 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2331 {
2332 let member_inline_size =
2333 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
2334 decoder.context,
2335 );
2336 if inlined != (member_inline_size <= 4) {
2337 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2338 }
2339 let inner_offset;
2340 let mut inner_depth = depth.clone();
2341 if inlined {
2342 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2343 inner_offset = next_offset;
2344 } else {
2345 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2346 inner_depth.increment()?;
2347 }
2348 let val_ref = self
2349 .display_name
2350 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
2351 fidl::decode!(
2352 fidl::encoding::UnboundedString,
2353 D,
2354 val_ref,
2355 decoder,
2356 inner_offset,
2357 inner_depth
2358 )?;
2359 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2360 {
2361 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2362 }
2363 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2364 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2365 }
2366 }
2367
2368 next_offset += envelope_size;
2369
2370 while next_offset < end_offset {
2372 _next_ordinal_to_read += 1;
2373 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2374 next_offset += envelope_size;
2375 }
2376
2377 Ok(())
2378 }
2379 }
2380}