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 #[doc(hidden)]
195 pub __source_breaking: fidl::marker::SourceBreaking,
196}
197
198impl fidl::Persistable for DeviceGetPropertiesResponse {}
199
200#[derive(Clone, Debug, Default, PartialEq)]
201pub struct SubTargetInfo {
202 pub address: Option<u16>,
205 pub size: Option<u32>,
208 pub name: Option<String>,
210 pub display_name: Option<String>,
212 #[doc(hidden)]
213 pub __source_breaking: fidl::marker::SourceBreaking,
214}
215
216impl fidl::Persistable for SubTargetInfo {}
217
218#[derive(Clone, Debug, Default, PartialEq)]
219pub struct TargetInfo {
220 pub id: Option<u8>,
222 pub sub_targets: Option<Vec<SubTargetInfo>>,
224 pub name: Option<String>,
226 pub display_name: Option<String>,
228 #[doc(hidden)]
229 pub __source_breaking: fidl::marker::SourceBreaking,
230}
231
232impl fidl::Persistable for TargetInfo {}
233
234pub mod debug_ordinals {
235 pub const CONNECT_TARGET: u64 = 0xb18ebc371c68d19;
236 pub const GET_CONTROLLER_PROPERTIES: u64 = 0x41b1c4ef901d051f;
237}
238
239pub mod device_ordinals {
240 pub const REGISTER_READ: u64 = 0x1b0f6eff7638b5;
241 pub const REGISTER_WRITE: u64 = 0xe7f4ed59770bb2b;
242 pub const GET_PROPERTIES: u64 = 0x1e946ec04006ffbb;
243 pub const WATCH_CONTROLLER_WRITE_COMMANDS: u64 = 0x41674c1eba4d05ac;
244 pub const CANCEL_WATCH_CONTROLLER_WRITE_COMMANDS: u64 = 0x5057c280e6f0d420;
245}
246
247mod internal {
248 use super::*;
249 unsafe impl fidl::encoding::TypeMarker for DriverError {
250 type Owned = Self;
251
252 #[inline(always)]
253 fn inline_align(_context: fidl::encoding::Context) -> usize {
254 std::mem::align_of::<u32>()
255 }
256
257 #[inline(always)]
258 fn inline_size(_context: fidl::encoding::Context) -> usize {
259 std::mem::size_of::<u32>()
260 }
261
262 #[inline(always)]
263 fn encode_is_copy() -> bool {
264 false
265 }
266
267 #[inline(always)]
268 fn decode_is_copy() -> bool {
269 false
270 }
271 }
272
273 impl fidl::encoding::ValueTypeMarker for DriverError {
274 type Borrowed<'a> = Self;
275 #[inline(always)]
276 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
277 *value
278 }
279 }
280
281 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for DriverError {
282 #[inline]
283 unsafe fn encode(
284 self,
285 encoder: &mut fidl::encoding::Encoder<'_, D>,
286 offset: usize,
287 _depth: fidl::encoding::Depth,
288 ) -> fidl::Result<()> {
289 encoder.debug_check_bounds::<Self>(offset);
290 encoder.write_num(self.into_primitive(), offset);
291 Ok(())
292 }
293 }
294
295 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DriverError {
296 #[inline(always)]
297 fn new_empty() -> Self {
298 Self::unknown()
299 }
300
301 #[inline]
302 unsafe fn decode(
303 &mut self,
304 decoder: &mut fidl::encoding::Decoder<'_, D>,
305 offset: usize,
306 _depth: fidl::encoding::Depth,
307 ) -> fidl::Result<()> {
308 decoder.debug_check_bounds::<Self>(offset);
309 let prim = decoder.read_num::<u32>(offset);
310
311 *self = Self::from_primitive_allow_unknown(prim);
312 Ok(())
313 }
314 }
315
316 impl fidl::encoding::ValueTypeMarker for DeviceCancelWatchControllerWriteCommandsRequest {
317 type Borrowed<'a> = &'a Self;
318 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
319 value
320 }
321 }
322
323 unsafe impl fidl::encoding::TypeMarker for DeviceCancelWatchControllerWriteCommandsRequest {
324 type Owned = Self;
325
326 #[inline(always)]
327 fn inline_align(_context: fidl::encoding::Context) -> usize {
328 2
329 }
330
331 #[inline(always)]
332 fn inline_size(_context: fidl::encoding::Context) -> usize {
333 4
334 }
335 }
336
337 unsafe impl<D: fidl::encoding::ResourceDialect>
338 fidl::encoding::Encode<DeviceCancelWatchControllerWriteCommandsRequest, D>
339 for &DeviceCancelWatchControllerWriteCommandsRequest
340 {
341 #[inline]
342 unsafe fn encode(
343 self,
344 encoder: &mut fidl::encoding::Encoder<'_, D>,
345 offset: usize,
346 _depth: fidl::encoding::Depth,
347 ) -> fidl::Result<()> {
348 encoder.debug_check_bounds::<DeviceCancelWatchControllerWriteCommandsRequest>(offset);
349 unsafe {
350 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
352 (buf_ptr as *mut DeviceCancelWatchControllerWriteCommandsRequest).write_unaligned(
353 (self as *const DeviceCancelWatchControllerWriteCommandsRequest).read(),
354 );
355 let padding_ptr = buf_ptr.offset(0) as *mut u16;
358 let padding_mask = 0xff00u16;
359 padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
360 }
361 Ok(())
362 }
363 }
364 unsafe impl<
365 D: fidl::encoding::ResourceDialect,
366 T0: fidl::encoding::Encode<u8, D>,
367 T1: fidl::encoding::Encode<u16, D>,
368 > fidl::encoding::Encode<DeviceCancelWatchControllerWriteCommandsRequest, D> for (T0, T1)
369 {
370 #[inline]
371 unsafe fn encode(
372 self,
373 encoder: &mut fidl::encoding::Encoder<'_, D>,
374 offset: usize,
375 depth: fidl::encoding::Depth,
376 ) -> fidl::Result<()> {
377 encoder.debug_check_bounds::<DeviceCancelWatchControllerWriteCommandsRequest>(offset);
378 unsafe {
381 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
382 (ptr as *mut u16).write_unaligned(0);
383 }
384 self.0.encode(encoder, offset + 0, depth)?;
386 self.1.encode(encoder, offset + 2, depth)?;
387 Ok(())
388 }
389 }
390
391 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
392 for DeviceCancelWatchControllerWriteCommandsRequest
393 {
394 #[inline(always)]
395 fn new_empty() -> Self {
396 Self { address: fidl::new_empty!(u8, D), size: fidl::new_empty!(u16, D) }
397 }
398
399 #[inline]
400 unsafe fn decode(
401 &mut self,
402 decoder: &mut fidl::encoding::Decoder<'_, D>,
403 offset: usize,
404 _depth: fidl::encoding::Depth,
405 ) -> fidl::Result<()> {
406 decoder.debug_check_bounds::<Self>(offset);
407 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
408 let ptr = unsafe { buf_ptr.offset(0) };
410 let padval = unsafe { (ptr as *const u16).read_unaligned() };
411 let mask = 0xff00u16;
412 let maskedval = padval & mask;
413 if maskedval != 0 {
414 return Err(fidl::Error::NonZeroPadding {
415 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
416 });
417 }
418 unsafe {
420 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
421 }
422 Ok(())
423 }
424 }
425
426 impl fidl::encoding::ValueTypeMarker for DeviceRegisterReadRequest {
427 type Borrowed<'a> = &'a Self;
428 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
429 value
430 }
431 }
432
433 unsafe impl fidl::encoding::TypeMarker for DeviceRegisterReadRequest {
434 type Owned = Self;
435
436 #[inline(always)]
437 fn inline_align(_context: fidl::encoding::Context) -> usize {
438 4
439 }
440
441 #[inline(always)]
442 fn inline_size(_context: fidl::encoding::Context) -> usize {
443 8
444 }
445 }
446
447 unsafe impl<D: fidl::encoding::ResourceDialect>
448 fidl::encoding::Encode<DeviceRegisterReadRequest, D> for &DeviceRegisterReadRequest
449 {
450 #[inline]
451 unsafe fn encode(
452 self,
453 encoder: &mut fidl::encoding::Encoder<'_, D>,
454 offset: usize,
455 _depth: fidl::encoding::Depth,
456 ) -> fidl::Result<()> {
457 encoder.debug_check_bounds::<DeviceRegisterReadRequest>(offset);
458 unsafe {
459 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
461 (buf_ptr as *mut DeviceRegisterReadRequest)
462 .write_unaligned((self as *const DeviceRegisterReadRequest).read());
463 let padding_ptr = buf_ptr.offset(0) as *mut u32;
466 let padding_mask = 0xffff0000u32;
467 padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
468 }
469 Ok(())
470 }
471 }
472 unsafe impl<
473 D: fidl::encoding::ResourceDialect,
474 T0: fidl::encoding::Encode<u16, D>,
475 T1: fidl::encoding::Encode<u32, D>,
476 > fidl::encoding::Encode<DeviceRegisterReadRequest, D> for (T0, T1)
477 {
478 #[inline]
479 unsafe fn encode(
480 self,
481 encoder: &mut fidl::encoding::Encoder<'_, D>,
482 offset: usize,
483 depth: fidl::encoding::Depth,
484 ) -> fidl::Result<()> {
485 encoder.debug_check_bounds::<DeviceRegisterReadRequest>(offset);
486 unsafe {
489 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
490 (ptr as *mut u32).write_unaligned(0);
491 }
492 self.0.encode(encoder, offset + 0, depth)?;
494 self.1.encode(encoder, offset + 4, depth)?;
495 Ok(())
496 }
497 }
498
499 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
500 for DeviceRegisterReadRequest
501 {
502 #[inline(always)]
503 fn new_empty() -> Self {
504 Self { address: fidl::new_empty!(u16, D), size_bytes: fidl::new_empty!(u32, D) }
505 }
506
507 #[inline]
508 unsafe fn decode(
509 &mut self,
510 decoder: &mut fidl::encoding::Decoder<'_, D>,
511 offset: usize,
512 _depth: fidl::encoding::Depth,
513 ) -> fidl::Result<()> {
514 decoder.debug_check_bounds::<Self>(offset);
515 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
516 let ptr = unsafe { buf_ptr.offset(0) };
518 let padval = unsafe { (ptr as *const u32).read_unaligned() };
519 let mask = 0xffff0000u32;
520 let maskedval = padval & mask;
521 if maskedval != 0 {
522 return Err(fidl::Error::NonZeroPadding {
523 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
524 });
525 }
526 unsafe {
528 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
529 }
530 Ok(())
531 }
532 }
533
534 impl fidl::encoding::ValueTypeMarker for DeviceRegisterWriteRequest {
535 type Borrowed<'a> = &'a Self;
536 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
537 value
538 }
539 }
540
541 unsafe impl fidl::encoding::TypeMarker for DeviceRegisterWriteRequest {
542 type Owned = Self;
543
544 #[inline(always)]
545 fn inline_align(_context: fidl::encoding::Context) -> usize {
546 8
547 }
548
549 #[inline(always)]
550 fn inline_size(_context: fidl::encoding::Context) -> usize {
551 24
552 }
553 }
554
555 unsafe impl<D: fidl::encoding::ResourceDialect>
556 fidl::encoding::Encode<DeviceRegisterWriteRequest, D> for &DeviceRegisterWriteRequest
557 {
558 #[inline]
559 unsafe fn encode(
560 self,
561 encoder: &mut fidl::encoding::Encoder<'_, D>,
562 offset: usize,
563 _depth: fidl::encoding::Depth,
564 ) -> fidl::Result<()> {
565 encoder.debug_check_bounds::<DeviceRegisterWriteRequest>(offset);
566 fidl::encoding::Encode::<DeviceRegisterWriteRequest, D>::encode(
568 (
569 <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.address),
570 <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.data),
571 ),
572 encoder, offset, _depth
573 )
574 }
575 }
576 unsafe impl<
577 D: fidl::encoding::ResourceDialect,
578 T0: fidl::encoding::Encode<u16, D>,
579 T1: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
580 > fidl::encoding::Encode<DeviceRegisterWriteRequest, D> for (T0, T1)
581 {
582 #[inline]
583 unsafe fn encode(
584 self,
585 encoder: &mut fidl::encoding::Encoder<'_, D>,
586 offset: usize,
587 depth: fidl::encoding::Depth,
588 ) -> fidl::Result<()> {
589 encoder.debug_check_bounds::<DeviceRegisterWriteRequest>(offset);
590 unsafe {
593 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
594 (ptr as *mut u64).write_unaligned(0);
595 }
596 self.0.encode(encoder, offset + 0, depth)?;
598 self.1.encode(encoder, offset + 8, depth)?;
599 Ok(())
600 }
601 }
602
603 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
604 for DeviceRegisterWriteRequest
605 {
606 #[inline(always)]
607 fn new_empty() -> Self {
608 Self {
609 address: fidl::new_empty!(u16, D),
610 data: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
611 }
612 }
613
614 #[inline]
615 unsafe fn decode(
616 &mut self,
617 decoder: &mut fidl::encoding::Decoder<'_, D>,
618 offset: usize,
619 _depth: fidl::encoding::Depth,
620 ) -> fidl::Result<()> {
621 decoder.debug_check_bounds::<Self>(offset);
622 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
624 let padval = unsafe { (ptr as *const u64).read_unaligned() };
625 let mask = 0xffffffffffff0000u64;
626 let maskedval = padval & mask;
627 if maskedval != 0 {
628 return Err(fidl::Error::NonZeroPadding {
629 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
630 });
631 }
632 fidl::decode!(u16, D, &mut self.address, decoder, offset + 0, _depth)?;
633 fidl::decode!(
634 fidl::encoding::UnboundedVector<u8>,
635 D,
636 &mut self.data,
637 decoder,
638 offset + 8,
639 _depth
640 )?;
641 Ok(())
642 }
643 }
644
645 impl fidl::encoding::ValueTypeMarker for DeviceRegisterReadResponse {
646 type Borrowed<'a> = &'a Self;
647 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
648 value
649 }
650 }
651
652 unsafe impl fidl::encoding::TypeMarker for DeviceRegisterReadResponse {
653 type Owned = Self;
654
655 #[inline(always)]
656 fn inline_align(_context: fidl::encoding::Context) -> usize {
657 8
658 }
659
660 #[inline(always)]
661 fn inline_size(_context: fidl::encoding::Context) -> usize {
662 16
663 }
664 }
665
666 unsafe impl<D: fidl::encoding::ResourceDialect>
667 fidl::encoding::Encode<DeviceRegisterReadResponse, D> for &DeviceRegisterReadResponse
668 {
669 #[inline]
670 unsafe fn encode(
671 self,
672 encoder: &mut fidl::encoding::Encoder<'_, D>,
673 offset: usize,
674 _depth: fidl::encoding::Depth,
675 ) -> fidl::Result<()> {
676 encoder.debug_check_bounds::<DeviceRegisterReadResponse>(offset);
677 fidl::encoding::Encode::<DeviceRegisterReadResponse, D>::encode(
679 (<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(
680 &self.data,
681 ),),
682 encoder,
683 offset,
684 _depth,
685 )
686 }
687 }
688 unsafe impl<
689 D: fidl::encoding::ResourceDialect,
690 T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
691 > fidl::encoding::Encode<DeviceRegisterReadResponse, D> for (T0,)
692 {
693 #[inline]
694 unsafe fn encode(
695 self,
696 encoder: &mut fidl::encoding::Encoder<'_, D>,
697 offset: usize,
698 depth: fidl::encoding::Depth,
699 ) -> fidl::Result<()> {
700 encoder.debug_check_bounds::<DeviceRegisterReadResponse>(offset);
701 self.0.encode(encoder, offset + 0, depth)?;
705 Ok(())
706 }
707 }
708
709 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
710 for DeviceRegisterReadResponse
711 {
712 #[inline(always)]
713 fn new_empty() -> Self {
714 Self { data: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D) }
715 }
716
717 #[inline]
718 unsafe fn decode(
719 &mut self,
720 decoder: &mut fidl::encoding::Decoder<'_, D>,
721 offset: usize,
722 _depth: fidl::encoding::Depth,
723 ) -> fidl::Result<()> {
724 decoder.debug_check_bounds::<Self>(offset);
725 fidl::decode!(
727 fidl::encoding::UnboundedVector<u8>,
728 D,
729 &mut self.data,
730 decoder,
731 offset + 0,
732 _depth
733 )?;
734 Ok(())
735 }
736 }
737
738 impl fidl::encoding::ValueTypeMarker for Register8 {
739 type Borrowed<'a> = &'a Self;
740 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
741 value
742 }
743 }
744
745 unsafe impl fidl::encoding::TypeMarker for Register8 {
746 type Owned = Self;
747
748 #[inline(always)]
749 fn inline_align(_context: fidl::encoding::Context) -> usize {
750 1
751 }
752
753 #[inline(always)]
754 fn inline_size(_context: fidl::encoding::Context) -> usize {
755 2
756 }
757 #[inline(always)]
758 fn encode_is_copy() -> bool {
759 true
760 }
761
762 #[inline(always)]
763 fn decode_is_copy() -> bool {
764 true
765 }
766 }
767
768 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Register8, D>
769 for &Register8
770 {
771 #[inline]
772 unsafe fn encode(
773 self,
774 encoder: &mut fidl::encoding::Encoder<'_, D>,
775 offset: usize,
776 _depth: fidl::encoding::Depth,
777 ) -> fidl::Result<()> {
778 encoder.debug_check_bounds::<Register8>(offset);
779 unsafe {
780 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
782 (buf_ptr as *mut Register8).write_unaligned((self as *const Register8).read());
783 }
786 Ok(())
787 }
788 }
789 unsafe impl<
790 D: fidl::encoding::ResourceDialect,
791 T0: fidl::encoding::Encode<u8, D>,
792 T1: fidl::encoding::Encode<u8, D>,
793 > fidl::encoding::Encode<Register8, D> for (T0, T1)
794 {
795 #[inline]
796 unsafe fn encode(
797 self,
798 encoder: &mut fidl::encoding::Encoder<'_, D>,
799 offset: usize,
800 depth: fidl::encoding::Depth,
801 ) -> fidl::Result<()> {
802 encoder.debug_check_bounds::<Register8>(offset);
803 self.0.encode(encoder, offset + 0, depth)?;
807 self.1.encode(encoder, offset + 1, depth)?;
808 Ok(())
809 }
810 }
811
812 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Register8 {
813 #[inline(always)]
814 fn new_empty() -> Self {
815 Self { address: fidl::new_empty!(u8, D), data: fidl::new_empty!(u8, D) }
816 }
817
818 #[inline]
819 unsafe fn decode(
820 &mut self,
821 decoder: &mut fidl::encoding::Decoder<'_, D>,
822 offset: usize,
823 _depth: fidl::encoding::Depth,
824 ) -> fidl::Result<()> {
825 decoder.debug_check_bounds::<Self>(offset);
826 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
827 unsafe {
830 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 2);
831 }
832 Ok(())
833 }
834 }
835
836 impl ControllerInfo {
837 #[inline(always)]
838 fn max_ordinal_present(&self) -> u64 {
839 if let Some(_) = self.targets {
840 return 2;
841 }
842 if let Some(_) = self.id {
843 return 1;
844 }
845 0
846 }
847 }
848
849 impl fidl::encoding::ValueTypeMarker for ControllerInfo {
850 type Borrowed<'a> = &'a Self;
851 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
852 value
853 }
854 }
855
856 unsafe impl fidl::encoding::TypeMarker for ControllerInfo {
857 type Owned = Self;
858
859 #[inline(always)]
860 fn inline_align(_context: fidl::encoding::Context) -> usize {
861 8
862 }
863
864 #[inline(always)]
865 fn inline_size(_context: fidl::encoding::Context) -> usize {
866 16
867 }
868 }
869
870 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ControllerInfo, D>
871 for &ControllerInfo
872 {
873 unsafe fn encode(
874 self,
875 encoder: &mut fidl::encoding::Encoder<'_, D>,
876 offset: usize,
877 mut depth: fidl::encoding::Depth,
878 ) -> fidl::Result<()> {
879 encoder.debug_check_bounds::<ControllerInfo>(offset);
880 let max_ordinal: u64 = self.max_ordinal_present();
882 encoder.write_num(max_ordinal, offset);
883 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
884 if max_ordinal == 0 {
886 return Ok(());
887 }
888 depth.increment()?;
889 let envelope_size = 8;
890 let bytes_len = max_ordinal as usize * envelope_size;
891 #[allow(unused_variables)]
892 let offset = encoder.out_of_line_offset(bytes_len);
893 let mut _prev_end_offset: usize = 0;
894 if 1 > max_ordinal {
895 return Ok(());
896 }
897
898 let cur_offset: usize = (1 - 1) * envelope_size;
901
902 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
904
905 fidl::encoding::encode_in_envelope_optional::<u32, D>(
910 self.id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
911 encoder,
912 offset + cur_offset,
913 depth,
914 )?;
915
916 _prev_end_offset = cur_offset + envelope_size;
917 if 2 > max_ordinal {
918 return Ok(());
919 }
920
921 let cur_offset: usize = (2 - 1) * envelope_size;
924
925 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
927
928 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<TargetInfo, 16>, D>(
933 self.targets.as_ref().map(<fidl::encoding::Vector<TargetInfo, 16> as fidl::encoding::ValueTypeMarker>::borrow),
934 encoder, offset + cur_offset, depth
935 )?;
936
937 _prev_end_offset = cur_offset + envelope_size;
938
939 Ok(())
940 }
941 }
942
943 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ControllerInfo {
944 #[inline(always)]
945 fn new_empty() -> Self {
946 Self::default()
947 }
948
949 unsafe fn decode(
950 &mut self,
951 decoder: &mut fidl::encoding::Decoder<'_, D>,
952 offset: usize,
953 mut depth: fidl::encoding::Depth,
954 ) -> fidl::Result<()> {
955 decoder.debug_check_bounds::<Self>(offset);
956 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
957 None => return Err(fidl::Error::NotNullable),
958 Some(len) => len,
959 };
960 if len == 0 {
962 return Ok(());
963 };
964 depth.increment()?;
965 let envelope_size = 8;
966 let bytes_len = len * envelope_size;
967 let offset = decoder.out_of_line_offset(bytes_len)?;
968 let mut _next_ordinal_to_read = 0;
970 let mut next_offset = offset;
971 let end_offset = offset + bytes_len;
972 _next_ordinal_to_read += 1;
973 if next_offset >= end_offset {
974 return Ok(());
975 }
976
977 while _next_ordinal_to_read < 1 {
979 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
980 _next_ordinal_to_read += 1;
981 next_offset += envelope_size;
982 }
983
984 let next_out_of_line = decoder.next_out_of_line();
985 let handles_before = decoder.remaining_handles();
986 if let Some((inlined, num_bytes, num_handles)) =
987 fidl::encoding::decode_envelope_header(decoder, next_offset)?
988 {
989 let member_inline_size =
990 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
991 if inlined != (member_inline_size <= 4) {
992 return Err(fidl::Error::InvalidInlineBitInEnvelope);
993 }
994 let inner_offset;
995 let mut inner_depth = depth.clone();
996 if inlined {
997 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
998 inner_offset = next_offset;
999 } else {
1000 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1001 inner_depth.increment()?;
1002 }
1003 let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(u32, D));
1004 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
1005 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1006 {
1007 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1008 }
1009 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1010 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1011 }
1012 }
1013
1014 next_offset += envelope_size;
1015 _next_ordinal_to_read += 1;
1016 if next_offset >= end_offset {
1017 return Ok(());
1018 }
1019
1020 while _next_ordinal_to_read < 2 {
1022 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1023 _next_ordinal_to_read += 1;
1024 next_offset += envelope_size;
1025 }
1026
1027 let next_out_of_line = decoder.next_out_of_line();
1028 let handles_before = decoder.remaining_handles();
1029 if let Some((inlined, num_bytes, num_handles)) =
1030 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1031 {
1032 let member_inline_size = <fidl::encoding::Vector<TargetInfo, 16> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1033 if inlined != (member_inline_size <= 4) {
1034 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1035 }
1036 let inner_offset;
1037 let mut inner_depth = depth.clone();
1038 if inlined {
1039 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1040 inner_offset = next_offset;
1041 } else {
1042 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1043 inner_depth.increment()?;
1044 }
1045 let val_ref = self.targets.get_or_insert_with(
1046 || fidl::new_empty!(fidl::encoding::Vector<TargetInfo, 16>, D),
1047 );
1048 fidl::decode!(fidl::encoding::Vector<TargetInfo, 16>, D, val_ref, decoder, inner_offset, inner_depth)?;
1049 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1050 {
1051 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1052 }
1053 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1054 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1055 }
1056 }
1057
1058 next_offset += envelope_size;
1059
1060 while next_offset < end_offset {
1062 _next_ordinal_to_read += 1;
1063 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1064 next_offset += envelope_size;
1065 }
1066
1067 Ok(())
1068 }
1069 }
1070
1071 impl DebugGetControllerPropertiesResponse {
1072 #[inline(always)]
1073 fn max_ordinal_present(&self) -> u64 {
1074 if let Some(_) = self.name {
1075 return 1;
1076 }
1077 0
1078 }
1079 }
1080
1081 impl fidl::encoding::ValueTypeMarker for DebugGetControllerPropertiesResponse {
1082 type Borrowed<'a> = &'a Self;
1083 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1084 value
1085 }
1086 }
1087
1088 unsafe impl fidl::encoding::TypeMarker for DebugGetControllerPropertiesResponse {
1089 type Owned = Self;
1090
1091 #[inline(always)]
1092 fn inline_align(_context: fidl::encoding::Context) -> usize {
1093 8
1094 }
1095
1096 #[inline(always)]
1097 fn inline_size(_context: fidl::encoding::Context) -> usize {
1098 16
1099 }
1100 }
1101
1102 unsafe impl<D: fidl::encoding::ResourceDialect>
1103 fidl::encoding::Encode<DebugGetControllerPropertiesResponse, D>
1104 for &DebugGetControllerPropertiesResponse
1105 {
1106 unsafe fn encode(
1107 self,
1108 encoder: &mut fidl::encoding::Encoder<'_, D>,
1109 offset: usize,
1110 mut depth: fidl::encoding::Depth,
1111 ) -> fidl::Result<()> {
1112 encoder.debug_check_bounds::<DebugGetControllerPropertiesResponse>(offset);
1113 let max_ordinal: u64 = self.max_ordinal_present();
1115 encoder.write_num(max_ordinal, offset);
1116 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1117 if max_ordinal == 0 {
1119 return Ok(());
1120 }
1121 depth.increment()?;
1122 let envelope_size = 8;
1123 let bytes_len = max_ordinal as usize * envelope_size;
1124 #[allow(unused_variables)]
1125 let offset = encoder.out_of_line_offset(bytes_len);
1126 let mut _prev_end_offset: usize = 0;
1127 if 1 > max_ordinal {
1128 return Ok(());
1129 }
1130
1131 let cur_offset: usize = (1 - 1) * envelope_size;
1134
1135 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1137
1138 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
1143 self.name.as_ref().map(
1144 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
1145 ),
1146 encoder,
1147 offset + cur_offset,
1148 depth,
1149 )?;
1150
1151 _prev_end_offset = cur_offset + envelope_size;
1152
1153 Ok(())
1154 }
1155 }
1156
1157 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1158 for DebugGetControllerPropertiesResponse
1159 {
1160 #[inline(always)]
1161 fn new_empty() -> Self {
1162 Self::default()
1163 }
1164
1165 unsafe fn decode(
1166 &mut self,
1167 decoder: &mut fidl::encoding::Decoder<'_, D>,
1168 offset: usize,
1169 mut depth: fidl::encoding::Depth,
1170 ) -> fidl::Result<()> {
1171 decoder.debug_check_bounds::<Self>(offset);
1172 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1173 None => return Err(fidl::Error::NotNullable),
1174 Some(len) => len,
1175 };
1176 if len == 0 {
1178 return Ok(());
1179 };
1180 depth.increment()?;
1181 let envelope_size = 8;
1182 let bytes_len = len * envelope_size;
1183 let offset = decoder.out_of_line_offset(bytes_len)?;
1184 let mut _next_ordinal_to_read = 0;
1186 let mut next_offset = offset;
1187 let end_offset = offset + bytes_len;
1188 _next_ordinal_to_read += 1;
1189 if next_offset >= end_offset {
1190 return Ok(());
1191 }
1192
1193 while _next_ordinal_to_read < 1 {
1195 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1196 _next_ordinal_to_read += 1;
1197 next_offset += envelope_size;
1198 }
1199
1200 let next_out_of_line = decoder.next_out_of_line();
1201 let handles_before = decoder.remaining_handles();
1202 if let Some((inlined, num_bytes, num_handles)) =
1203 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1204 {
1205 let member_inline_size =
1206 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
1207 decoder.context,
1208 );
1209 if inlined != (member_inline_size <= 4) {
1210 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1211 }
1212 let inner_offset;
1213 let mut inner_depth = depth.clone();
1214 if inlined {
1215 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1216 inner_offset = next_offset;
1217 } else {
1218 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1219 inner_depth.increment()?;
1220 }
1221 let val_ref = self
1222 .name
1223 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
1224 fidl::decode!(
1225 fidl::encoding::BoundedString<64>,
1226 D,
1227 val_ref,
1228 decoder,
1229 inner_offset,
1230 inner_depth
1231 )?;
1232 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1233 {
1234 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1235 }
1236 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1237 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1238 }
1239 }
1240
1241 next_offset += envelope_size;
1242
1243 while next_offset < end_offset {
1245 _next_ordinal_to_read += 1;
1246 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1247 next_offset += envelope_size;
1248 }
1249
1250 Ok(())
1251 }
1252 }
1253
1254 impl DeviceGetPropertiesResponse {
1255 #[inline(always)]
1256 fn max_ordinal_present(&self) -> u64 {
1257 if let Some(_) = self.name {
1258 return 2;
1259 }
1260 if let Some(_) = self.sid {
1261 return 1;
1262 }
1263 0
1264 }
1265 }
1266
1267 impl fidl::encoding::ValueTypeMarker for DeviceGetPropertiesResponse {
1268 type Borrowed<'a> = &'a Self;
1269 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1270 value
1271 }
1272 }
1273
1274 unsafe impl fidl::encoding::TypeMarker for DeviceGetPropertiesResponse {
1275 type Owned = Self;
1276
1277 #[inline(always)]
1278 fn inline_align(_context: fidl::encoding::Context) -> usize {
1279 8
1280 }
1281
1282 #[inline(always)]
1283 fn inline_size(_context: fidl::encoding::Context) -> usize {
1284 16
1285 }
1286 }
1287
1288 unsafe impl<D: fidl::encoding::ResourceDialect>
1289 fidl::encoding::Encode<DeviceGetPropertiesResponse, D> for &DeviceGetPropertiesResponse
1290 {
1291 unsafe fn encode(
1292 self,
1293 encoder: &mut fidl::encoding::Encoder<'_, D>,
1294 offset: usize,
1295 mut depth: fidl::encoding::Depth,
1296 ) -> fidl::Result<()> {
1297 encoder.debug_check_bounds::<DeviceGetPropertiesResponse>(offset);
1298 let max_ordinal: u64 = self.max_ordinal_present();
1300 encoder.write_num(max_ordinal, offset);
1301 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1302 if max_ordinal == 0 {
1304 return Ok(());
1305 }
1306 depth.increment()?;
1307 let envelope_size = 8;
1308 let bytes_len = max_ordinal as usize * envelope_size;
1309 #[allow(unused_variables)]
1310 let offset = encoder.out_of_line_offset(bytes_len);
1311 let mut _prev_end_offset: usize = 0;
1312 if 1 > max_ordinal {
1313 return Ok(());
1314 }
1315
1316 let cur_offset: usize = (1 - 1) * envelope_size;
1319
1320 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1322
1323 fidl::encoding::encode_in_envelope_optional::<u8, D>(
1328 self.sid.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
1329 encoder,
1330 offset + cur_offset,
1331 depth,
1332 )?;
1333
1334 _prev_end_offset = cur_offset + envelope_size;
1335 if 2 > max_ordinal {
1336 return Ok(());
1337 }
1338
1339 let cur_offset: usize = (2 - 1) * envelope_size;
1342
1343 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1345
1346 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
1351 self.name.as_ref().map(
1352 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
1353 ),
1354 encoder,
1355 offset + cur_offset,
1356 depth,
1357 )?;
1358
1359 _prev_end_offset = cur_offset + envelope_size;
1360
1361 Ok(())
1362 }
1363 }
1364
1365 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1366 for DeviceGetPropertiesResponse
1367 {
1368 #[inline(always)]
1369 fn new_empty() -> Self {
1370 Self::default()
1371 }
1372
1373 unsafe fn decode(
1374 &mut self,
1375 decoder: &mut fidl::encoding::Decoder<'_, D>,
1376 offset: usize,
1377 mut depth: fidl::encoding::Depth,
1378 ) -> fidl::Result<()> {
1379 decoder.debug_check_bounds::<Self>(offset);
1380 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1381 None => return Err(fidl::Error::NotNullable),
1382 Some(len) => len,
1383 };
1384 if len == 0 {
1386 return Ok(());
1387 };
1388 depth.increment()?;
1389 let envelope_size = 8;
1390 let bytes_len = len * envelope_size;
1391 let offset = decoder.out_of_line_offset(bytes_len)?;
1392 let mut _next_ordinal_to_read = 0;
1394 let mut next_offset = offset;
1395 let end_offset = offset + bytes_len;
1396 _next_ordinal_to_read += 1;
1397 if next_offset >= end_offset {
1398 return Ok(());
1399 }
1400
1401 while _next_ordinal_to_read < 1 {
1403 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1404 _next_ordinal_to_read += 1;
1405 next_offset += envelope_size;
1406 }
1407
1408 let next_out_of_line = decoder.next_out_of_line();
1409 let handles_before = decoder.remaining_handles();
1410 if let Some((inlined, num_bytes, num_handles)) =
1411 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1412 {
1413 let member_inline_size =
1414 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1415 if inlined != (member_inline_size <= 4) {
1416 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1417 }
1418 let inner_offset;
1419 let mut inner_depth = depth.clone();
1420 if inlined {
1421 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1422 inner_offset = next_offset;
1423 } else {
1424 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1425 inner_depth.increment()?;
1426 }
1427 let val_ref = self.sid.get_or_insert_with(|| fidl::new_empty!(u8, D));
1428 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
1429 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1430 {
1431 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1432 }
1433 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1434 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1435 }
1436 }
1437
1438 next_offset += envelope_size;
1439 _next_ordinal_to_read += 1;
1440 if next_offset >= end_offset {
1441 return Ok(());
1442 }
1443
1444 while _next_ordinal_to_read < 2 {
1446 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1447 _next_ordinal_to_read += 1;
1448 next_offset += envelope_size;
1449 }
1450
1451 let next_out_of_line = decoder.next_out_of_line();
1452 let handles_before = decoder.remaining_handles();
1453 if let Some((inlined, num_bytes, num_handles)) =
1454 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1455 {
1456 let member_inline_size =
1457 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
1458 decoder.context,
1459 );
1460 if inlined != (member_inline_size <= 4) {
1461 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1462 }
1463 let inner_offset;
1464 let mut inner_depth = depth.clone();
1465 if inlined {
1466 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1467 inner_offset = next_offset;
1468 } else {
1469 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1470 inner_depth.increment()?;
1471 }
1472 let val_ref = self
1473 .name
1474 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
1475 fidl::decode!(
1476 fidl::encoding::BoundedString<64>,
1477 D,
1478 val_ref,
1479 decoder,
1480 inner_offset,
1481 inner_depth
1482 )?;
1483 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1484 {
1485 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1486 }
1487 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1488 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1489 }
1490 }
1491
1492 next_offset += envelope_size;
1493
1494 while next_offset < end_offset {
1496 _next_ordinal_to_read += 1;
1497 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1498 next_offset += envelope_size;
1499 }
1500
1501 Ok(())
1502 }
1503 }
1504
1505 impl SubTargetInfo {
1506 #[inline(always)]
1507 fn max_ordinal_present(&self) -> u64 {
1508 if let Some(_) = self.display_name {
1509 return 4;
1510 }
1511 if let Some(_) = self.name {
1512 return 3;
1513 }
1514 if let Some(_) = self.size {
1515 return 2;
1516 }
1517 if let Some(_) = self.address {
1518 return 1;
1519 }
1520 0
1521 }
1522 }
1523
1524 impl fidl::encoding::ValueTypeMarker for SubTargetInfo {
1525 type Borrowed<'a> = &'a Self;
1526 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1527 value
1528 }
1529 }
1530
1531 unsafe impl fidl::encoding::TypeMarker for SubTargetInfo {
1532 type Owned = Self;
1533
1534 #[inline(always)]
1535 fn inline_align(_context: fidl::encoding::Context) -> usize {
1536 8
1537 }
1538
1539 #[inline(always)]
1540 fn inline_size(_context: fidl::encoding::Context) -> usize {
1541 16
1542 }
1543 }
1544
1545 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SubTargetInfo, D>
1546 for &SubTargetInfo
1547 {
1548 unsafe fn encode(
1549 self,
1550 encoder: &mut fidl::encoding::Encoder<'_, D>,
1551 offset: usize,
1552 mut depth: fidl::encoding::Depth,
1553 ) -> fidl::Result<()> {
1554 encoder.debug_check_bounds::<SubTargetInfo>(offset);
1555 let max_ordinal: u64 = self.max_ordinal_present();
1557 encoder.write_num(max_ordinal, offset);
1558 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1559 if max_ordinal == 0 {
1561 return Ok(());
1562 }
1563 depth.increment()?;
1564 let envelope_size = 8;
1565 let bytes_len = max_ordinal as usize * envelope_size;
1566 #[allow(unused_variables)]
1567 let offset = encoder.out_of_line_offset(bytes_len);
1568 let mut _prev_end_offset: usize = 0;
1569 if 1 > max_ordinal {
1570 return Ok(());
1571 }
1572
1573 let cur_offset: usize = (1 - 1) * envelope_size;
1576
1577 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1579
1580 fidl::encoding::encode_in_envelope_optional::<u16, D>(
1585 self.address.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
1586 encoder,
1587 offset + cur_offset,
1588 depth,
1589 )?;
1590
1591 _prev_end_offset = cur_offset + envelope_size;
1592 if 2 > max_ordinal {
1593 return Ok(());
1594 }
1595
1596 let cur_offset: usize = (2 - 1) * envelope_size;
1599
1600 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1602
1603 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1608 self.size.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1609 encoder,
1610 offset + cur_offset,
1611 depth,
1612 )?;
1613
1614 _prev_end_offset = cur_offset + envelope_size;
1615 if 3 > max_ordinal {
1616 return Ok(());
1617 }
1618
1619 let cur_offset: usize = (3 - 1) * envelope_size;
1622
1623 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1625
1626 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
1631 self.name.as_ref().map(
1632 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
1633 ),
1634 encoder,
1635 offset + cur_offset,
1636 depth,
1637 )?;
1638
1639 _prev_end_offset = cur_offset + envelope_size;
1640 if 4 > max_ordinal {
1641 return Ok(());
1642 }
1643
1644 let cur_offset: usize = (4 - 1) * envelope_size;
1647
1648 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1650
1651 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
1656 self.display_name.as_ref().map(
1657 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
1658 ),
1659 encoder,
1660 offset + cur_offset,
1661 depth,
1662 )?;
1663
1664 _prev_end_offset = cur_offset + envelope_size;
1665
1666 Ok(())
1667 }
1668 }
1669
1670 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SubTargetInfo {
1671 #[inline(always)]
1672 fn new_empty() -> Self {
1673 Self::default()
1674 }
1675
1676 unsafe fn decode(
1677 &mut self,
1678 decoder: &mut fidl::encoding::Decoder<'_, D>,
1679 offset: usize,
1680 mut depth: fidl::encoding::Depth,
1681 ) -> fidl::Result<()> {
1682 decoder.debug_check_bounds::<Self>(offset);
1683 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1684 None => return Err(fidl::Error::NotNullable),
1685 Some(len) => len,
1686 };
1687 if len == 0 {
1689 return Ok(());
1690 };
1691 depth.increment()?;
1692 let envelope_size = 8;
1693 let bytes_len = len * envelope_size;
1694 let offset = decoder.out_of_line_offset(bytes_len)?;
1695 let mut _next_ordinal_to_read = 0;
1697 let mut next_offset = offset;
1698 let end_offset = offset + bytes_len;
1699 _next_ordinal_to_read += 1;
1700 if next_offset >= end_offset {
1701 return Ok(());
1702 }
1703
1704 while _next_ordinal_to_read < 1 {
1706 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1707 _next_ordinal_to_read += 1;
1708 next_offset += envelope_size;
1709 }
1710
1711 let next_out_of_line = decoder.next_out_of_line();
1712 let handles_before = decoder.remaining_handles();
1713 if let Some((inlined, num_bytes, num_handles)) =
1714 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1715 {
1716 let member_inline_size =
1717 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1718 if inlined != (member_inline_size <= 4) {
1719 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1720 }
1721 let inner_offset;
1722 let mut inner_depth = depth.clone();
1723 if inlined {
1724 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1725 inner_offset = next_offset;
1726 } else {
1727 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1728 inner_depth.increment()?;
1729 }
1730 let val_ref = self.address.get_or_insert_with(|| fidl::new_empty!(u16, D));
1731 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
1732 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1733 {
1734 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1735 }
1736 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1737 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1738 }
1739 }
1740
1741 next_offset += envelope_size;
1742 _next_ordinal_to_read += 1;
1743 if next_offset >= end_offset {
1744 return Ok(());
1745 }
1746
1747 while _next_ordinal_to_read < 2 {
1749 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1750 _next_ordinal_to_read += 1;
1751 next_offset += envelope_size;
1752 }
1753
1754 let next_out_of_line = decoder.next_out_of_line();
1755 let handles_before = decoder.remaining_handles();
1756 if let Some((inlined, num_bytes, num_handles)) =
1757 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1758 {
1759 let member_inline_size =
1760 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1761 if inlined != (member_inline_size <= 4) {
1762 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1763 }
1764 let inner_offset;
1765 let mut inner_depth = depth.clone();
1766 if inlined {
1767 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1768 inner_offset = next_offset;
1769 } else {
1770 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1771 inner_depth.increment()?;
1772 }
1773 let val_ref = self.size.get_or_insert_with(|| fidl::new_empty!(u32, D));
1774 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
1775 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1776 {
1777 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1778 }
1779 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1780 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1781 }
1782 }
1783
1784 next_offset += envelope_size;
1785 _next_ordinal_to_read += 1;
1786 if next_offset >= end_offset {
1787 return Ok(());
1788 }
1789
1790 while _next_ordinal_to_read < 3 {
1792 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1793 _next_ordinal_to_read += 1;
1794 next_offset += envelope_size;
1795 }
1796
1797 let next_out_of_line = decoder.next_out_of_line();
1798 let handles_before = decoder.remaining_handles();
1799 if let Some((inlined, num_bytes, num_handles)) =
1800 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1801 {
1802 let member_inline_size =
1803 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
1804 decoder.context,
1805 );
1806 if inlined != (member_inline_size <= 4) {
1807 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1808 }
1809 let inner_offset;
1810 let mut inner_depth = depth.clone();
1811 if inlined {
1812 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1813 inner_offset = next_offset;
1814 } else {
1815 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1816 inner_depth.increment()?;
1817 }
1818 let val_ref = self
1819 .name
1820 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
1821 fidl::decode!(
1822 fidl::encoding::BoundedString<64>,
1823 D,
1824 val_ref,
1825 decoder,
1826 inner_offset,
1827 inner_depth
1828 )?;
1829 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1830 {
1831 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1832 }
1833 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1834 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1835 }
1836 }
1837
1838 next_offset += envelope_size;
1839 _next_ordinal_to_read += 1;
1840 if next_offset >= end_offset {
1841 return Ok(());
1842 }
1843
1844 while _next_ordinal_to_read < 4 {
1846 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1847 _next_ordinal_to_read += 1;
1848 next_offset += envelope_size;
1849 }
1850
1851 let next_out_of_line = decoder.next_out_of_line();
1852 let handles_before = decoder.remaining_handles();
1853 if let Some((inlined, num_bytes, num_handles)) =
1854 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1855 {
1856 let member_inline_size =
1857 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
1858 decoder.context,
1859 );
1860 if inlined != (member_inline_size <= 4) {
1861 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1862 }
1863 let inner_offset;
1864 let mut inner_depth = depth.clone();
1865 if inlined {
1866 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1867 inner_offset = next_offset;
1868 } else {
1869 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1870 inner_depth.increment()?;
1871 }
1872 let val_ref = self
1873 .display_name
1874 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
1875 fidl::decode!(
1876 fidl::encoding::UnboundedString,
1877 D,
1878 val_ref,
1879 decoder,
1880 inner_offset,
1881 inner_depth
1882 )?;
1883 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1884 {
1885 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1886 }
1887 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1888 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1889 }
1890 }
1891
1892 next_offset += envelope_size;
1893
1894 while next_offset < end_offset {
1896 _next_ordinal_to_read += 1;
1897 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1898 next_offset += envelope_size;
1899 }
1900
1901 Ok(())
1902 }
1903 }
1904
1905 impl TargetInfo {
1906 #[inline(always)]
1907 fn max_ordinal_present(&self) -> u64 {
1908 if let Some(_) = self.display_name {
1909 return 4;
1910 }
1911 if let Some(_) = self.name {
1912 return 3;
1913 }
1914 if let Some(_) = self.sub_targets {
1915 return 2;
1916 }
1917 if let Some(_) = self.id {
1918 return 1;
1919 }
1920 0
1921 }
1922 }
1923
1924 impl fidl::encoding::ValueTypeMarker for TargetInfo {
1925 type Borrowed<'a> = &'a Self;
1926 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1927 value
1928 }
1929 }
1930
1931 unsafe impl fidl::encoding::TypeMarker for TargetInfo {
1932 type Owned = Self;
1933
1934 #[inline(always)]
1935 fn inline_align(_context: fidl::encoding::Context) -> usize {
1936 8
1937 }
1938
1939 #[inline(always)]
1940 fn inline_size(_context: fidl::encoding::Context) -> usize {
1941 16
1942 }
1943 }
1944
1945 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TargetInfo, D>
1946 for &TargetInfo
1947 {
1948 unsafe fn encode(
1949 self,
1950 encoder: &mut fidl::encoding::Encoder<'_, D>,
1951 offset: usize,
1952 mut depth: fidl::encoding::Depth,
1953 ) -> fidl::Result<()> {
1954 encoder.debug_check_bounds::<TargetInfo>(offset);
1955 let max_ordinal: u64 = self.max_ordinal_present();
1957 encoder.write_num(max_ordinal, offset);
1958 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1959 if max_ordinal == 0 {
1961 return Ok(());
1962 }
1963 depth.increment()?;
1964 let envelope_size = 8;
1965 let bytes_len = max_ordinal as usize * envelope_size;
1966 #[allow(unused_variables)]
1967 let offset = encoder.out_of_line_offset(bytes_len);
1968 let mut _prev_end_offset: usize = 0;
1969 if 1 > max_ordinal {
1970 return Ok(());
1971 }
1972
1973 let cur_offset: usize = (1 - 1) * envelope_size;
1976
1977 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1979
1980 fidl::encoding::encode_in_envelope_optional::<u8, D>(
1985 self.id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
1986 encoder,
1987 offset + cur_offset,
1988 depth,
1989 )?;
1990
1991 _prev_end_offset = cur_offset + envelope_size;
1992 if 2 > max_ordinal {
1993 return Ok(());
1994 }
1995
1996 let cur_offset: usize = (2 - 1) * envelope_size;
1999
2000 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2002
2003 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<SubTargetInfo, 65536>, D>(
2008 self.sub_targets.as_ref().map(<fidl::encoding::Vector<SubTargetInfo, 65536> as fidl::encoding::ValueTypeMarker>::borrow),
2009 encoder, offset + cur_offset, depth
2010 )?;
2011
2012 _prev_end_offset = cur_offset + envelope_size;
2013 if 3 > max_ordinal {
2014 return Ok(());
2015 }
2016
2017 let cur_offset: usize = (3 - 1) * envelope_size;
2020
2021 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2023
2024 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
2029 self.name.as_ref().map(
2030 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
2031 ),
2032 encoder,
2033 offset + cur_offset,
2034 depth,
2035 )?;
2036
2037 _prev_end_offset = cur_offset + envelope_size;
2038 if 4 > max_ordinal {
2039 return Ok(());
2040 }
2041
2042 let cur_offset: usize = (4 - 1) * envelope_size;
2045
2046 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2048
2049 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
2054 self.display_name.as_ref().map(
2055 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
2056 ),
2057 encoder,
2058 offset + cur_offset,
2059 depth,
2060 )?;
2061
2062 _prev_end_offset = cur_offset + envelope_size;
2063
2064 Ok(())
2065 }
2066 }
2067
2068 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TargetInfo {
2069 #[inline(always)]
2070 fn new_empty() -> Self {
2071 Self::default()
2072 }
2073
2074 unsafe fn decode(
2075 &mut self,
2076 decoder: &mut fidl::encoding::Decoder<'_, D>,
2077 offset: usize,
2078 mut depth: fidl::encoding::Depth,
2079 ) -> fidl::Result<()> {
2080 decoder.debug_check_bounds::<Self>(offset);
2081 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2082 None => return Err(fidl::Error::NotNullable),
2083 Some(len) => len,
2084 };
2085 if len == 0 {
2087 return Ok(());
2088 };
2089 depth.increment()?;
2090 let envelope_size = 8;
2091 let bytes_len = len * envelope_size;
2092 let offset = decoder.out_of_line_offset(bytes_len)?;
2093 let mut _next_ordinal_to_read = 0;
2095 let mut next_offset = offset;
2096 let end_offset = offset + bytes_len;
2097 _next_ordinal_to_read += 1;
2098 if next_offset >= end_offset {
2099 return Ok(());
2100 }
2101
2102 while _next_ordinal_to_read < 1 {
2104 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2105 _next_ordinal_to_read += 1;
2106 next_offset += envelope_size;
2107 }
2108
2109 let next_out_of_line = decoder.next_out_of_line();
2110 let handles_before = decoder.remaining_handles();
2111 if let Some((inlined, num_bytes, num_handles)) =
2112 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2113 {
2114 let member_inline_size =
2115 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2116 if inlined != (member_inline_size <= 4) {
2117 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2118 }
2119 let inner_offset;
2120 let mut inner_depth = depth.clone();
2121 if inlined {
2122 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2123 inner_offset = next_offset;
2124 } else {
2125 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2126 inner_depth.increment()?;
2127 }
2128 let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(u8, D));
2129 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
2130 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2131 {
2132 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2133 }
2134 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2135 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2136 }
2137 }
2138
2139 next_offset += envelope_size;
2140 _next_ordinal_to_read += 1;
2141 if next_offset >= end_offset {
2142 return Ok(());
2143 }
2144
2145 while _next_ordinal_to_read < 2 {
2147 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2148 _next_ordinal_to_read += 1;
2149 next_offset += envelope_size;
2150 }
2151
2152 let next_out_of_line = decoder.next_out_of_line();
2153 let handles_before = decoder.remaining_handles();
2154 if let Some((inlined, num_bytes, num_handles)) =
2155 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2156 {
2157 let member_inline_size = <fidl::encoding::Vector<SubTargetInfo, 65536> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2158 if inlined != (member_inline_size <= 4) {
2159 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2160 }
2161 let inner_offset;
2162 let mut inner_depth = depth.clone();
2163 if inlined {
2164 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2165 inner_offset = next_offset;
2166 } else {
2167 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2168 inner_depth.increment()?;
2169 }
2170 let val_ref = self.sub_targets.get_or_insert_with(
2171 || fidl::new_empty!(fidl::encoding::Vector<SubTargetInfo, 65536>, D),
2172 );
2173 fidl::decode!(fidl::encoding::Vector<SubTargetInfo, 65536>, D, val_ref, decoder, inner_offset, inner_depth)?;
2174 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2175 {
2176 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2177 }
2178 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2179 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2180 }
2181 }
2182
2183 next_offset += envelope_size;
2184 _next_ordinal_to_read += 1;
2185 if next_offset >= end_offset {
2186 return Ok(());
2187 }
2188
2189 while _next_ordinal_to_read < 3 {
2191 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2192 _next_ordinal_to_read += 1;
2193 next_offset += envelope_size;
2194 }
2195
2196 let next_out_of_line = decoder.next_out_of_line();
2197 let handles_before = decoder.remaining_handles();
2198 if let Some((inlined, num_bytes, num_handles)) =
2199 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2200 {
2201 let member_inline_size =
2202 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
2203 decoder.context,
2204 );
2205 if inlined != (member_inline_size <= 4) {
2206 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2207 }
2208 let inner_offset;
2209 let mut inner_depth = depth.clone();
2210 if inlined {
2211 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2212 inner_offset = next_offset;
2213 } else {
2214 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2215 inner_depth.increment()?;
2216 }
2217 let val_ref = self
2218 .name
2219 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
2220 fidl::decode!(
2221 fidl::encoding::BoundedString<64>,
2222 D,
2223 val_ref,
2224 decoder,
2225 inner_offset,
2226 inner_depth
2227 )?;
2228 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2229 {
2230 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2231 }
2232 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2233 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2234 }
2235 }
2236
2237 next_offset += envelope_size;
2238 _next_ordinal_to_read += 1;
2239 if next_offset >= end_offset {
2240 return Ok(());
2241 }
2242
2243 while _next_ordinal_to_read < 4 {
2245 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2246 _next_ordinal_to_read += 1;
2247 next_offset += envelope_size;
2248 }
2249
2250 let next_out_of_line = decoder.next_out_of_line();
2251 let handles_before = decoder.remaining_handles();
2252 if let Some((inlined, num_bytes, num_handles)) =
2253 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2254 {
2255 let member_inline_size =
2256 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
2257 decoder.context,
2258 );
2259 if inlined != (member_inline_size <= 4) {
2260 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2261 }
2262 let inner_offset;
2263 let mut inner_depth = depth.clone();
2264 if inlined {
2265 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2266 inner_offset = next_offset;
2267 } else {
2268 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2269 inner_depth.increment()?;
2270 }
2271 let val_ref = self
2272 .display_name
2273 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
2274 fidl::decode!(
2275 fidl::encoding::UnboundedString,
2276 D,
2277 val_ref,
2278 decoder,
2279 inner_offset,
2280 inner_depth
2281 )?;
2282 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2283 {
2284 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2285 }
2286 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2287 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2288 }
2289 }
2290
2291 next_offset += envelope_size;
2292
2293 while next_offset < end_offset {
2295 _next_ordinal_to_read += 1;
2296 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2297 next_offset += envelope_size;
2298 }
2299
2300 Ok(())
2301 }
2302 }
2303}