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