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 type FirmwareName = String;
12
13pub const MAX_ID_NAME: u32 = 100;
14
15pub const MAX_MESSAGE_SIZE: u32 = 4096;
17
18pub const SIGNAL_READABLE: u32 = 16777216;
21
22pub const SIGNAL_WAKELOCK: u32 = 67108864;
26
27pub const SIGNAL_WRITABLE: u32 = 33554432;
30
31#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
33pub enum DisplayMode {
34 None,
36 Init,
38 Off,
40 Idle,
42 On,
44 HighBrightness,
46 #[doc(hidden)]
47 __SourceBreaking { unknown_ordinal: u8 },
48}
49
50#[macro_export]
52macro_rules! DisplayModeUnknown {
53 () => {
54 _
55 };
56}
57
58impl DisplayMode {
59 #[inline]
60 pub fn from_primitive(prim: u8) -> Option<Self> {
61 match prim {
62 0 => Some(Self::None),
63 1 => Some(Self::Init),
64 2 => Some(Self::Off),
65 3 => Some(Self::Idle),
66 4 => Some(Self::On),
67 5 => Some(Self::HighBrightness),
68 _ => None,
69 }
70 }
71
72 #[inline]
73 pub fn from_primitive_allow_unknown(prim: u8) -> Self {
74 match prim {
75 0 => Self::None,
76 1 => Self::Init,
77 2 => Self::Off,
78 3 => Self::Idle,
79 4 => Self::On,
80 5 => Self::HighBrightness,
81 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
82 }
83 }
84
85 #[inline]
86 pub fn unknown() -> Self {
87 Self::__SourceBreaking { unknown_ordinal: 0xff }
88 }
89
90 #[inline]
91 pub const fn into_primitive(self) -> u8 {
92 match self {
93 Self::None => 0,
94 Self::Init => 1,
95 Self::Off => 2,
96 Self::Idle => 3,
97 Self::On => 4,
98 Self::HighBrightness => 5,
99 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
100 }
101 }
102
103 #[inline]
104 pub fn is_unknown(&self) -> bool {
105 match self {
106 Self::__SourceBreaking { unknown_ordinal: _ } => true,
107 _ => false,
108 }
109 }
110}
111
112#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
114pub enum DisplaySelect {
115 Low,
118 High,
121 #[doc(hidden)]
122 __SourceBreaking { unknown_ordinal: i64 },
123}
124
125#[macro_export]
127macro_rules! DisplaySelectUnknown {
128 () => {
129 _
130 };
131}
132
133impl DisplaySelect {
134 #[inline]
135 pub fn from_primitive(prim: i64) -> Option<Self> {
136 match prim {
137 0 => Some(Self::Low),
138 1 => Some(Self::High),
139 _ => None,
140 }
141 }
142
143 #[inline]
144 pub fn from_primitive_allow_unknown(prim: i64) -> Self {
145 match prim {
146 0 => Self::Low,
147 1 => Self::High,
148 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
149 }
150 }
151
152 #[inline]
153 pub fn unknown() -> Self {
154 Self::__SourceBreaking { unknown_ordinal: 0x7fffffffffffffff }
155 }
156
157 #[inline]
158 pub const fn into_primitive(self) -> i64 {
159 match self {
160 Self::Low => 0,
161 Self::High => 1,
162 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
163 }
164 }
165
166 #[inline]
167 pub fn is_unknown(&self) -> bool {
168 match self {
169 Self::__SourceBreaking { unknown_ordinal: _ } => true,
170 _ => false,
171 }
172 }
173}
174
175#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
177pub enum LifecycleEvent {
178 Unconfigured,
180 Start,
182 Ready,
184 Shutdown,
186 #[doc(hidden)]
187 __SourceBreaking { unknown_ordinal: u32 },
188}
189
190#[macro_export]
192macro_rules! LifecycleEventUnknown {
193 () => {
194 _
195 };
196}
197
198impl LifecycleEvent {
199 #[inline]
200 pub fn from_primitive(prim: u32) -> Option<Self> {
201 match prim {
202 0 => Some(Self::Unconfigured),
203 1 => Some(Self::Start),
204 2 => Some(Self::Ready),
205 3 => Some(Self::Shutdown),
206 _ => None,
207 }
208 }
209
210 #[inline]
211 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
212 match prim {
213 0 => Self::Unconfigured,
214 1 => Self::Start,
215 2 => Self::Ready,
216 3 => Self::Shutdown,
217 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
218 }
219 }
220
221 #[inline]
222 pub fn unknown() -> Self {
223 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
224 }
225
226 #[inline]
227 pub const fn into_primitive(self) -> u32 {
228 match self {
229 Self::Unconfigured => 0,
230 Self::Start => 1,
231 Self::Ready => 2,
232 Self::Shutdown => 3,
233 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
234 }
235 }
236
237 #[inline]
238 pub fn is_unknown(&self) -> bool {
239 match self {
240 Self::__SourceBreaking { unknown_ordinal: _ } => true,
241 _ => false,
242 }
243 }
244}
245
246#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
247#[repr(u8)]
248pub enum McuWakeLockValue {
249 Release = 0,
250 Acquire = 1,
251}
252
253impl McuWakeLockValue {
254 #[inline]
255 pub fn from_primitive(prim: u8) -> Option<Self> {
256 match prim {
257 0 => Some(Self::Release),
258 1 => Some(Self::Acquire),
259 _ => None,
260 }
261 }
262
263 #[inline]
264 pub const fn into_primitive(self) -> u8 {
265 self as u8
266 }
267}
268
269#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
270#[repr(u32)]
271pub enum PinState {
272 Low = 0,
273 High = 1,
274}
275
276impl PinState {
277 #[inline]
278 pub fn from_primitive(prim: u32) -> Option<Self> {
279 match prim {
280 0 => Some(Self::Low),
281 1 => Some(Self::High),
282 _ => None,
283 }
284 }
285
286 #[inline]
287 pub const fn into_primitive(self) -> u32 {
288 self as u32
289 }
290}
291
292#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
293pub struct DeviceGetFirmwareNameResponse {
294 pub firmware_name: String,
295}
296
297impl fidl::Persistable for DeviceGetFirmwareNameResponse {}
298
299#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
300#[repr(C)]
301pub struct DeviceGetFirmwareVersionResponse {
302 pub version_info: McuVersionInfo,
303}
304
305impl fidl::Persistable for DeviceGetFirmwareVersionResponse {}
306
307#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
308pub struct DeviceSetWakeLockRequest {
309 pub value: McuWakeLockValue,
310}
311
312impl fidl::Persistable for DeviceSetWakeLockRequest {}
313
314#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
315#[repr(C)]
316pub struct DeviceSetWakeUpEventDurationRequest {
317 pub duration: i64,
318}
319
320impl fidl::Persistable for DeviceSetWakeUpEventDurationRequest {}
321
322#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
323#[repr(C)]
324pub struct DeviceGetWakeUpEventDurationResponse {
325 pub duration: i64,
326}
327
328impl fidl::Persistable for DeviceGetWakeUpEventDurationResponse {}
329
330#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
331pub struct HardwareResetPinStates {
332 pub isp_pin_0: PinState,
333 pub isp_pin_1: PinState,
334 pub isp_pin_2: PinState,
335}
336
337impl fidl::Persistable for HardwareResetPinStates {}
338
339#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
340pub struct LifecycleObserverOnLifecycleChangeRequest {
341 pub event: LifecycleEvent,
342}
343
344impl fidl::Persistable for LifecycleObserverOnLifecycleChangeRequest {}
345
346#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
347#[repr(C)]
348pub struct McuVersionInfo {
349 pub hardware_type: u16,
350 pub hardware_version: u16,
351 pub bootloader_version: u16,
352 pub os_version: u16,
353 pub variant_version: u32,
354}
355
356impl fidl::Persistable for McuVersionInfo {}
357
358#[derive(Clone, Debug, Default, PartialEq)]
359pub struct DataChannelReadRequest {
360 pub blocking: Option<bool>,
364 #[doc(hidden)]
365 pub __source_breaking: fidl::marker::SourceBreaking,
366}
367
368impl fidl::Persistable for DataChannelReadRequest {}
369
370#[derive(Clone, Debug, Default, PartialEq)]
371pub struct DataChannelWriteRequest {
372 pub data: Option<Vec<u8>>,
373 #[doc(hidden)]
374 pub __source_breaking: fidl::marker::SourceBreaking,
375}
376
377impl fidl::Persistable for DataChannelWriteRequest {}
378
379#[derive(Clone, Debug, Default, PartialEq)]
380pub struct DataChannelGetIdentifierResponse {
381 pub name: Option<String>,
382 #[doc(hidden)]
383 pub __source_breaking: fidl::marker::SourceBreaking,
384}
385
386impl fidl::Persistable for DataChannelGetIdentifierResponse {}
387
388#[derive(Clone, Debug, Default, PartialEq)]
389pub struct DisplayDeviceSetDisplaySelectRequest {
390 pub display_select: Option<DisplaySelect>,
391 #[doc(hidden)]
392 pub __source_breaking: fidl::marker::SourceBreaking,
393}
394
395impl fidl::Persistable for DisplayDeviceSetDisplaySelectRequest {}
396
397#[derive(Clone, Debug, Default, PartialEq)]
398pub struct DisplayDeviceGetDisplaySelectResponse {
399 pub display_select: Option<DisplaySelect>,
400 #[doc(hidden)]
401 pub __source_breaking: fidl::marker::SourceBreaking,
402}
403
404impl fidl::Persistable for DisplayDeviceGetDisplaySelectResponse {}
405
406#[derive(Clone, Debug, Default, PartialEq)]
408pub struct DisplayState {
409 pub mode: Option<DisplayMode>,
411 #[doc(hidden)]
412 pub __source_breaking: fidl::marker::SourceBreaking,
413}
414
415impl fidl::Persistable for DisplayState {}
416
417#[derive(Clone, Debug, Default, PartialEq)]
419pub struct DisplaySyncInfo {
420 pub display_mode: Option<DisplayMode>,
422 pub panel_mode: Option<u8>,
424 pub normal_brightness: Option<u16>,
426 pub always_on_display_brightness: Option<u16>,
428 #[doc(hidden)]
429 pub __source_breaking: fidl::marker::SourceBreaking,
430}
431
432impl fidl::Persistable for DisplaySyncInfo {}
433
434#[derive(Clone, Debug, Default, PartialEq)]
435pub struct McuTimeSyncInfo {
436 pub ap_boot_time: Option<i64>,
437 pub mcu_boot_time: Option<i64>,
438 #[doc(hidden)]
439 pub __source_breaking: fidl::marker::SourceBreaking,
440}
441
442impl fidl::Persistable for McuTimeSyncInfo {}
443
444pub mod data_channel_ordinals {
445 pub const REGISTER: u64 = 0x1778251ad75157b6;
446 pub const GET_IDENTIFIER: u64 = 0x4bf148d0ddbd4f69;
447 pub const READ: u64 = 0x12ab08cf21533d26;
448 pub const WRITE: u64 = 0xf2e12121698789b;
449}
450
451pub mod device_ordinals {
452 pub const DOWNLOAD_FIRMWARE: u64 = 0x7bba8137e24661e5;
453 pub const GET_FIRMWARE_NAME: u64 = 0x1649434b5e5bcb8d;
454 pub const GET_FIRMWARE_VERSION: u64 = 0x4f0599abcc95736b;
455 pub const GET_TIME_SYNC: u64 = 0x4406991222e3975d;
456 pub const SET_WAKE_LOCK: u64 = 0x9f83f614affa1dc;
457 pub const GET_WAKE_UP_EVENT_DURATION: u64 = 0x45c79749f65e7176;
458 pub const SET_WAKE_UP_EVENT_DURATION: u64 = 0x1fa1771ffa5f570;
459 pub const HARDWARE_RESET: u64 = 0x78e3d2ded2f929f;
460}
461
462pub mod display_device_ordinals {
463 pub const GET_DISPLAY_STATE: u64 = 0x1648924f6e003444;
464 pub const GET_DISPLAY_INFO: u64 = 0x311c8e4cb6b1b4d1;
465 pub const GET_DISPLAY_SELECT: u64 = 0x6191c86cffd6323;
466 pub const SET_DISPLAY_SELECT: u64 = 0x2b07f6ba12e7a412;
467}
468
469pub mod lifecycle_observer_ordinals {
470 pub const ON_LIFECYCLE_CHANGE: u64 = 0x7034eb94979bd8de;
471}
472
473mod internal {
474 use super::*;
475 unsafe impl fidl::encoding::TypeMarker for DisplayMode {
476 type Owned = Self;
477
478 #[inline(always)]
479 fn inline_align(_context: fidl::encoding::Context) -> usize {
480 std::mem::align_of::<u8>()
481 }
482
483 #[inline(always)]
484 fn inline_size(_context: fidl::encoding::Context) -> usize {
485 std::mem::size_of::<u8>()
486 }
487
488 #[inline(always)]
489 fn encode_is_copy() -> bool {
490 false
491 }
492
493 #[inline(always)]
494 fn decode_is_copy() -> bool {
495 false
496 }
497 }
498
499 impl fidl::encoding::ValueTypeMarker for DisplayMode {
500 type Borrowed<'a> = Self;
501 #[inline(always)]
502 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
503 *value
504 }
505 }
506
507 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for DisplayMode {
508 #[inline]
509 unsafe fn encode(
510 self,
511 encoder: &mut fidl::encoding::Encoder<'_, D>,
512 offset: usize,
513 _depth: fidl::encoding::Depth,
514 ) -> fidl::Result<()> {
515 encoder.debug_check_bounds::<Self>(offset);
516 encoder.write_num(self.into_primitive(), offset);
517 Ok(())
518 }
519 }
520
521 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DisplayMode {
522 #[inline(always)]
523 fn new_empty() -> Self {
524 Self::unknown()
525 }
526
527 #[inline]
528 unsafe fn decode(
529 &mut self,
530 decoder: &mut fidl::encoding::Decoder<'_, D>,
531 offset: usize,
532 _depth: fidl::encoding::Depth,
533 ) -> fidl::Result<()> {
534 decoder.debug_check_bounds::<Self>(offset);
535 let prim = decoder.read_num::<u8>(offset);
536
537 *self = Self::from_primitive_allow_unknown(prim);
538 Ok(())
539 }
540 }
541 unsafe impl fidl::encoding::TypeMarker for DisplaySelect {
542 type Owned = Self;
543
544 #[inline(always)]
545 fn inline_align(_context: fidl::encoding::Context) -> usize {
546 std::mem::align_of::<i64>()
547 }
548
549 #[inline(always)]
550 fn inline_size(_context: fidl::encoding::Context) -> usize {
551 std::mem::size_of::<i64>()
552 }
553
554 #[inline(always)]
555 fn encode_is_copy() -> bool {
556 false
557 }
558
559 #[inline(always)]
560 fn decode_is_copy() -> bool {
561 false
562 }
563 }
564
565 impl fidl::encoding::ValueTypeMarker for DisplaySelect {
566 type Borrowed<'a> = Self;
567 #[inline(always)]
568 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
569 *value
570 }
571 }
572
573 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for DisplaySelect {
574 #[inline]
575 unsafe fn encode(
576 self,
577 encoder: &mut fidl::encoding::Encoder<'_, D>,
578 offset: usize,
579 _depth: fidl::encoding::Depth,
580 ) -> fidl::Result<()> {
581 encoder.debug_check_bounds::<Self>(offset);
582 encoder.write_num(self.into_primitive(), offset);
583 Ok(())
584 }
585 }
586
587 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DisplaySelect {
588 #[inline(always)]
589 fn new_empty() -> Self {
590 Self::unknown()
591 }
592
593 #[inline]
594 unsafe fn decode(
595 &mut self,
596 decoder: &mut fidl::encoding::Decoder<'_, D>,
597 offset: usize,
598 _depth: fidl::encoding::Depth,
599 ) -> fidl::Result<()> {
600 decoder.debug_check_bounds::<Self>(offset);
601 let prim = decoder.read_num::<i64>(offset);
602
603 *self = Self::from_primitive_allow_unknown(prim);
604 Ok(())
605 }
606 }
607 unsafe impl fidl::encoding::TypeMarker for LifecycleEvent {
608 type Owned = Self;
609
610 #[inline(always)]
611 fn inline_align(_context: fidl::encoding::Context) -> usize {
612 std::mem::align_of::<u32>()
613 }
614
615 #[inline(always)]
616 fn inline_size(_context: fidl::encoding::Context) -> usize {
617 std::mem::size_of::<u32>()
618 }
619
620 #[inline(always)]
621 fn encode_is_copy() -> bool {
622 false
623 }
624
625 #[inline(always)]
626 fn decode_is_copy() -> bool {
627 false
628 }
629 }
630
631 impl fidl::encoding::ValueTypeMarker for LifecycleEvent {
632 type Borrowed<'a> = Self;
633 #[inline(always)]
634 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
635 *value
636 }
637 }
638
639 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for LifecycleEvent {
640 #[inline]
641 unsafe fn encode(
642 self,
643 encoder: &mut fidl::encoding::Encoder<'_, D>,
644 offset: usize,
645 _depth: fidl::encoding::Depth,
646 ) -> fidl::Result<()> {
647 encoder.debug_check_bounds::<Self>(offset);
648 encoder.write_num(self.into_primitive(), offset);
649 Ok(())
650 }
651 }
652
653 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LifecycleEvent {
654 #[inline(always)]
655 fn new_empty() -> Self {
656 Self::unknown()
657 }
658
659 #[inline]
660 unsafe fn decode(
661 &mut self,
662 decoder: &mut fidl::encoding::Decoder<'_, D>,
663 offset: usize,
664 _depth: fidl::encoding::Depth,
665 ) -> fidl::Result<()> {
666 decoder.debug_check_bounds::<Self>(offset);
667 let prim = decoder.read_num::<u32>(offset);
668
669 *self = Self::from_primitive_allow_unknown(prim);
670 Ok(())
671 }
672 }
673 unsafe impl fidl::encoding::TypeMarker for McuWakeLockValue {
674 type Owned = Self;
675
676 #[inline(always)]
677 fn inline_align(_context: fidl::encoding::Context) -> usize {
678 std::mem::align_of::<u8>()
679 }
680
681 #[inline(always)]
682 fn inline_size(_context: fidl::encoding::Context) -> usize {
683 std::mem::size_of::<u8>()
684 }
685
686 #[inline(always)]
687 fn encode_is_copy() -> bool {
688 true
689 }
690
691 #[inline(always)]
692 fn decode_is_copy() -> bool {
693 false
694 }
695 }
696
697 impl fidl::encoding::ValueTypeMarker for McuWakeLockValue {
698 type Borrowed<'a> = Self;
699 #[inline(always)]
700 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
701 *value
702 }
703 }
704
705 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
706 for McuWakeLockValue
707 {
708 #[inline]
709 unsafe fn encode(
710 self,
711 encoder: &mut fidl::encoding::Encoder<'_, D>,
712 offset: usize,
713 _depth: fidl::encoding::Depth,
714 ) -> fidl::Result<()> {
715 encoder.debug_check_bounds::<Self>(offset);
716 encoder.write_num(self.into_primitive(), offset);
717 Ok(())
718 }
719 }
720
721 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for McuWakeLockValue {
722 #[inline(always)]
723 fn new_empty() -> Self {
724 Self::Release
725 }
726
727 #[inline]
728 unsafe fn decode(
729 &mut self,
730 decoder: &mut fidl::encoding::Decoder<'_, D>,
731 offset: usize,
732 _depth: fidl::encoding::Depth,
733 ) -> fidl::Result<()> {
734 decoder.debug_check_bounds::<Self>(offset);
735 let prim = decoder.read_num::<u8>(offset);
736
737 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
738 Ok(())
739 }
740 }
741 unsafe impl fidl::encoding::TypeMarker for PinState {
742 type Owned = Self;
743
744 #[inline(always)]
745 fn inline_align(_context: fidl::encoding::Context) -> usize {
746 std::mem::align_of::<u32>()
747 }
748
749 #[inline(always)]
750 fn inline_size(_context: fidl::encoding::Context) -> usize {
751 std::mem::size_of::<u32>()
752 }
753
754 #[inline(always)]
755 fn encode_is_copy() -> bool {
756 true
757 }
758
759 #[inline(always)]
760 fn decode_is_copy() -> bool {
761 false
762 }
763 }
764
765 impl fidl::encoding::ValueTypeMarker for PinState {
766 type Borrowed<'a> = Self;
767 #[inline(always)]
768 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
769 *value
770 }
771 }
772
773 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for PinState {
774 #[inline]
775 unsafe fn encode(
776 self,
777 encoder: &mut fidl::encoding::Encoder<'_, D>,
778 offset: usize,
779 _depth: fidl::encoding::Depth,
780 ) -> fidl::Result<()> {
781 encoder.debug_check_bounds::<Self>(offset);
782 encoder.write_num(self.into_primitive(), offset);
783 Ok(())
784 }
785 }
786
787 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PinState {
788 #[inline(always)]
789 fn new_empty() -> Self {
790 Self::Low
791 }
792
793 #[inline]
794 unsafe fn decode(
795 &mut self,
796 decoder: &mut fidl::encoding::Decoder<'_, D>,
797 offset: usize,
798 _depth: fidl::encoding::Depth,
799 ) -> fidl::Result<()> {
800 decoder.debug_check_bounds::<Self>(offset);
801 let prim = decoder.read_num::<u32>(offset);
802
803 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
804 Ok(())
805 }
806 }
807
808 impl fidl::encoding::ValueTypeMarker for DeviceGetFirmwareNameResponse {
809 type Borrowed<'a> = &'a Self;
810 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
811 value
812 }
813 }
814
815 unsafe impl fidl::encoding::TypeMarker for DeviceGetFirmwareNameResponse {
816 type Owned = Self;
817
818 #[inline(always)]
819 fn inline_align(_context: fidl::encoding::Context) -> usize {
820 8
821 }
822
823 #[inline(always)]
824 fn inline_size(_context: fidl::encoding::Context) -> usize {
825 16
826 }
827 }
828
829 unsafe impl<D: fidl::encoding::ResourceDialect>
830 fidl::encoding::Encode<DeviceGetFirmwareNameResponse, D>
831 for &DeviceGetFirmwareNameResponse
832 {
833 #[inline]
834 unsafe fn encode(
835 self,
836 encoder: &mut fidl::encoding::Encoder<'_, D>,
837 offset: usize,
838 _depth: fidl::encoding::Depth,
839 ) -> fidl::Result<()> {
840 encoder.debug_check_bounds::<DeviceGetFirmwareNameResponse>(offset);
841 fidl::encoding::Encode::<DeviceGetFirmwareNameResponse, D>::encode(
843 (<fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow(
844 &self.firmware_name,
845 ),),
846 encoder,
847 offset,
848 _depth,
849 )
850 }
851 }
852 unsafe impl<
853 D: fidl::encoding::ResourceDialect,
854 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<64>, D>,
855 > fidl::encoding::Encode<DeviceGetFirmwareNameResponse, D> for (T0,)
856 {
857 #[inline]
858 unsafe fn encode(
859 self,
860 encoder: &mut fidl::encoding::Encoder<'_, D>,
861 offset: usize,
862 depth: fidl::encoding::Depth,
863 ) -> fidl::Result<()> {
864 encoder.debug_check_bounds::<DeviceGetFirmwareNameResponse>(offset);
865 self.0.encode(encoder, offset + 0, depth)?;
869 Ok(())
870 }
871 }
872
873 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
874 for DeviceGetFirmwareNameResponse
875 {
876 #[inline(always)]
877 fn new_empty() -> Self {
878 Self { firmware_name: fidl::new_empty!(fidl::encoding::BoundedString<64>, D) }
879 }
880
881 #[inline]
882 unsafe fn decode(
883 &mut self,
884 decoder: &mut fidl::encoding::Decoder<'_, D>,
885 offset: usize,
886 _depth: fidl::encoding::Depth,
887 ) -> fidl::Result<()> {
888 decoder.debug_check_bounds::<Self>(offset);
889 fidl::decode!(
891 fidl::encoding::BoundedString<64>,
892 D,
893 &mut self.firmware_name,
894 decoder,
895 offset + 0,
896 _depth
897 )?;
898 Ok(())
899 }
900 }
901
902 impl fidl::encoding::ValueTypeMarker for DeviceGetFirmwareVersionResponse {
903 type Borrowed<'a> = &'a Self;
904 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
905 value
906 }
907 }
908
909 unsafe impl fidl::encoding::TypeMarker for DeviceGetFirmwareVersionResponse {
910 type Owned = Self;
911
912 #[inline(always)]
913 fn inline_align(_context: fidl::encoding::Context) -> usize {
914 4
915 }
916
917 #[inline(always)]
918 fn inline_size(_context: fidl::encoding::Context) -> usize {
919 12
920 }
921 #[inline(always)]
922 fn encode_is_copy() -> bool {
923 true
924 }
925
926 #[inline(always)]
927 fn decode_is_copy() -> bool {
928 true
929 }
930 }
931
932 unsafe impl<D: fidl::encoding::ResourceDialect>
933 fidl::encoding::Encode<DeviceGetFirmwareVersionResponse, D>
934 for &DeviceGetFirmwareVersionResponse
935 {
936 #[inline]
937 unsafe fn encode(
938 self,
939 encoder: &mut fidl::encoding::Encoder<'_, D>,
940 offset: usize,
941 _depth: fidl::encoding::Depth,
942 ) -> fidl::Result<()> {
943 encoder.debug_check_bounds::<DeviceGetFirmwareVersionResponse>(offset);
944 unsafe {
945 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
947 (buf_ptr as *mut DeviceGetFirmwareVersionResponse)
948 .write_unaligned((self as *const DeviceGetFirmwareVersionResponse).read());
949 }
952 Ok(())
953 }
954 }
955 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<McuVersionInfo, D>>
956 fidl::encoding::Encode<DeviceGetFirmwareVersionResponse, D> for (T0,)
957 {
958 #[inline]
959 unsafe fn encode(
960 self,
961 encoder: &mut fidl::encoding::Encoder<'_, D>,
962 offset: usize,
963 depth: fidl::encoding::Depth,
964 ) -> fidl::Result<()> {
965 encoder.debug_check_bounds::<DeviceGetFirmwareVersionResponse>(offset);
966 self.0.encode(encoder, offset + 0, depth)?;
970 Ok(())
971 }
972 }
973
974 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
975 for DeviceGetFirmwareVersionResponse
976 {
977 #[inline(always)]
978 fn new_empty() -> Self {
979 Self { version_info: fidl::new_empty!(McuVersionInfo, D) }
980 }
981
982 #[inline]
983 unsafe fn decode(
984 &mut self,
985 decoder: &mut fidl::encoding::Decoder<'_, D>,
986 offset: usize,
987 _depth: fidl::encoding::Depth,
988 ) -> fidl::Result<()> {
989 decoder.debug_check_bounds::<Self>(offset);
990 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
991 unsafe {
994 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 12);
995 }
996 Ok(())
997 }
998 }
999
1000 impl fidl::encoding::ValueTypeMarker for DeviceSetWakeLockRequest {
1001 type Borrowed<'a> = &'a Self;
1002 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1003 value
1004 }
1005 }
1006
1007 unsafe impl fidl::encoding::TypeMarker for DeviceSetWakeLockRequest {
1008 type Owned = Self;
1009
1010 #[inline(always)]
1011 fn inline_align(_context: fidl::encoding::Context) -> usize {
1012 1
1013 }
1014
1015 #[inline(always)]
1016 fn inline_size(_context: fidl::encoding::Context) -> usize {
1017 1
1018 }
1019 }
1020
1021 unsafe impl<D: fidl::encoding::ResourceDialect>
1022 fidl::encoding::Encode<DeviceSetWakeLockRequest, D> for &DeviceSetWakeLockRequest
1023 {
1024 #[inline]
1025 unsafe fn encode(
1026 self,
1027 encoder: &mut fidl::encoding::Encoder<'_, D>,
1028 offset: usize,
1029 _depth: fidl::encoding::Depth,
1030 ) -> fidl::Result<()> {
1031 encoder.debug_check_bounds::<DeviceSetWakeLockRequest>(offset);
1032 fidl::encoding::Encode::<DeviceSetWakeLockRequest, D>::encode(
1034 (<McuWakeLockValue as fidl::encoding::ValueTypeMarker>::borrow(&self.value),),
1035 encoder,
1036 offset,
1037 _depth,
1038 )
1039 }
1040 }
1041 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<McuWakeLockValue, D>>
1042 fidl::encoding::Encode<DeviceSetWakeLockRequest, D> for (T0,)
1043 {
1044 #[inline]
1045 unsafe fn encode(
1046 self,
1047 encoder: &mut fidl::encoding::Encoder<'_, D>,
1048 offset: usize,
1049 depth: fidl::encoding::Depth,
1050 ) -> fidl::Result<()> {
1051 encoder.debug_check_bounds::<DeviceSetWakeLockRequest>(offset);
1052 self.0.encode(encoder, offset + 0, depth)?;
1056 Ok(())
1057 }
1058 }
1059
1060 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1061 for DeviceSetWakeLockRequest
1062 {
1063 #[inline(always)]
1064 fn new_empty() -> Self {
1065 Self { value: fidl::new_empty!(McuWakeLockValue, D) }
1066 }
1067
1068 #[inline]
1069 unsafe fn decode(
1070 &mut self,
1071 decoder: &mut fidl::encoding::Decoder<'_, D>,
1072 offset: usize,
1073 _depth: fidl::encoding::Depth,
1074 ) -> fidl::Result<()> {
1075 decoder.debug_check_bounds::<Self>(offset);
1076 fidl::decode!(McuWakeLockValue, D, &mut self.value, decoder, offset + 0, _depth)?;
1078 Ok(())
1079 }
1080 }
1081
1082 impl fidl::encoding::ValueTypeMarker for DeviceSetWakeUpEventDurationRequest {
1083 type Borrowed<'a> = &'a Self;
1084 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1085 value
1086 }
1087 }
1088
1089 unsafe impl fidl::encoding::TypeMarker for DeviceSetWakeUpEventDurationRequest {
1090 type Owned = Self;
1091
1092 #[inline(always)]
1093 fn inline_align(_context: fidl::encoding::Context) -> usize {
1094 8
1095 }
1096
1097 #[inline(always)]
1098 fn inline_size(_context: fidl::encoding::Context) -> usize {
1099 8
1100 }
1101 #[inline(always)]
1102 fn encode_is_copy() -> bool {
1103 true
1104 }
1105
1106 #[inline(always)]
1107 fn decode_is_copy() -> bool {
1108 true
1109 }
1110 }
1111
1112 unsafe impl<D: fidl::encoding::ResourceDialect>
1113 fidl::encoding::Encode<DeviceSetWakeUpEventDurationRequest, D>
1114 for &DeviceSetWakeUpEventDurationRequest
1115 {
1116 #[inline]
1117 unsafe fn encode(
1118 self,
1119 encoder: &mut fidl::encoding::Encoder<'_, D>,
1120 offset: usize,
1121 _depth: fidl::encoding::Depth,
1122 ) -> fidl::Result<()> {
1123 encoder.debug_check_bounds::<DeviceSetWakeUpEventDurationRequest>(offset);
1124 unsafe {
1125 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1127 (buf_ptr as *mut DeviceSetWakeUpEventDurationRequest)
1128 .write_unaligned((self as *const DeviceSetWakeUpEventDurationRequest).read());
1129 }
1132 Ok(())
1133 }
1134 }
1135 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<i64, D>>
1136 fidl::encoding::Encode<DeviceSetWakeUpEventDurationRequest, D> for (T0,)
1137 {
1138 #[inline]
1139 unsafe fn encode(
1140 self,
1141 encoder: &mut fidl::encoding::Encoder<'_, D>,
1142 offset: usize,
1143 depth: fidl::encoding::Depth,
1144 ) -> fidl::Result<()> {
1145 encoder.debug_check_bounds::<DeviceSetWakeUpEventDurationRequest>(offset);
1146 self.0.encode(encoder, offset + 0, depth)?;
1150 Ok(())
1151 }
1152 }
1153
1154 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1155 for DeviceSetWakeUpEventDurationRequest
1156 {
1157 #[inline(always)]
1158 fn new_empty() -> Self {
1159 Self { duration: fidl::new_empty!(i64, D) }
1160 }
1161
1162 #[inline]
1163 unsafe fn decode(
1164 &mut self,
1165 decoder: &mut fidl::encoding::Decoder<'_, D>,
1166 offset: usize,
1167 _depth: fidl::encoding::Depth,
1168 ) -> fidl::Result<()> {
1169 decoder.debug_check_bounds::<Self>(offset);
1170 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1171 unsafe {
1174 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
1175 }
1176 Ok(())
1177 }
1178 }
1179
1180 impl fidl::encoding::ValueTypeMarker for DeviceGetWakeUpEventDurationResponse {
1181 type Borrowed<'a> = &'a Self;
1182 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1183 value
1184 }
1185 }
1186
1187 unsafe impl fidl::encoding::TypeMarker for DeviceGetWakeUpEventDurationResponse {
1188 type Owned = Self;
1189
1190 #[inline(always)]
1191 fn inline_align(_context: fidl::encoding::Context) -> usize {
1192 8
1193 }
1194
1195 #[inline(always)]
1196 fn inline_size(_context: fidl::encoding::Context) -> usize {
1197 8
1198 }
1199 #[inline(always)]
1200 fn encode_is_copy() -> bool {
1201 true
1202 }
1203
1204 #[inline(always)]
1205 fn decode_is_copy() -> bool {
1206 true
1207 }
1208 }
1209
1210 unsafe impl<D: fidl::encoding::ResourceDialect>
1211 fidl::encoding::Encode<DeviceGetWakeUpEventDurationResponse, D>
1212 for &DeviceGetWakeUpEventDurationResponse
1213 {
1214 #[inline]
1215 unsafe fn encode(
1216 self,
1217 encoder: &mut fidl::encoding::Encoder<'_, D>,
1218 offset: usize,
1219 _depth: fidl::encoding::Depth,
1220 ) -> fidl::Result<()> {
1221 encoder.debug_check_bounds::<DeviceGetWakeUpEventDurationResponse>(offset);
1222 unsafe {
1223 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1225 (buf_ptr as *mut DeviceGetWakeUpEventDurationResponse)
1226 .write_unaligned((self as *const DeviceGetWakeUpEventDurationResponse).read());
1227 }
1230 Ok(())
1231 }
1232 }
1233 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<i64, D>>
1234 fidl::encoding::Encode<DeviceGetWakeUpEventDurationResponse, D> for (T0,)
1235 {
1236 #[inline]
1237 unsafe fn encode(
1238 self,
1239 encoder: &mut fidl::encoding::Encoder<'_, D>,
1240 offset: usize,
1241 depth: fidl::encoding::Depth,
1242 ) -> fidl::Result<()> {
1243 encoder.debug_check_bounds::<DeviceGetWakeUpEventDurationResponse>(offset);
1244 self.0.encode(encoder, offset + 0, depth)?;
1248 Ok(())
1249 }
1250 }
1251
1252 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1253 for DeviceGetWakeUpEventDurationResponse
1254 {
1255 #[inline(always)]
1256 fn new_empty() -> Self {
1257 Self { duration: fidl::new_empty!(i64, D) }
1258 }
1259
1260 #[inline]
1261 unsafe fn decode(
1262 &mut self,
1263 decoder: &mut fidl::encoding::Decoder<'_, D>,
1264 offset: usize,
1265 _depth: fidl::encoding::Depth,
1266 ) -> fidl::Result<()> {
1267 decoder.debug_check_bounds::<Self>(offset);
1268 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1269 unsafe {
1272 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
1273 }
1274 Ok(())
1275 }
1276 }
1277
1278 impl fidl::encoding::ValueTypeMarker for HardwareResetPinStates {
1279 type Borrowed<'a> = &'a Self;
1280 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1281 value
1282 }
1283 }
1284
1285 unsafe impl fidl::encoding::TypeMarker for HardwareResetPinStates {
1286 type Owned = Self;
1287
1288 #[inline(always)]
1289 fn inline_align(_context: fidl::encoding::Context) -> usize {
1290 4
1291 }
1292
1293 #[inline(always)]
1294 fn inline_size(_context: fidl::encoding::Context) -> usize {
1295 12
1296 }
1297 }
1298
1299 unsafe impl<D: fidl::encoding::ResourceDialect>
1300 fidl::encoding::Encode<HardwareResetPinStates, D> for &HardwareResetPinStates
1301 {
1302 #[inline]
1303 unsafe fn encode(
1304 self,
1305 encoder: &mut fidl::encoding::Encoder<'_, D>,
1306 offset: usize,
1307 _depth: fidl::encoding::Depth,
1308 ) -> fidl::Result<()> {
1309 encoder.debug_check_bounds::<HardwareResetPinStates>(offset);
1310 fidl::encoding::Encode::<HardwareResetPinStates, D>::encode(
1312 (
1313 <PinState as fidl::encoding::ValueTypeMarker>::borrow(&self.isp_pin_0),
1314 <PinState as fidl::encoding::ValueTypeMarker>::borrow(&self.isp_pin_1),
1315 <PinState as fidl::encoding::ValueTypeMarker>::borrow(&self.isp_pin_2),
1316 ),
1317 encoder,
1318 offset,
1319 _depth,
1320 )
1321 }
1322 }
1323 unsafe impl<
1324 D: fidl::encoding::ResourceDialect,
1325 T0: fidl::encoding::Encode<PinState, D>,
1326 T1: fidl::encoding::Encode<PinState, D>,
1327 T2: fidl::encoding::Encode<PinState, D>,
1328 > fidl::encoding::Encode<HardwareResetPinStates, D> for (T0, T1, T2)
1329 {
1330 #[inline]
1331 unsafe fn encode(
1332 self,
1333 encoder: &mut fidl::encoding::Encoder<'_, D>,
1334 offset: usize,
1335 depth: fidl::encoding::Depth,
1336 ) -> fidl::Result<()> {
1337 encoder.debug_check_bounds::<HardwareResetPinStates>(offset);
1338 self.0.encode(encoder, offset + 0, depth)?;
1342 self.1.encode(encoder, offset + 4, depth)?;
1343 self.2.encode(encoder, offset + 8, depth)?;
1344 Ok(())
1345 }
1346 }
1347
1348 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1349 for HardwareResetPinStates
1350 {
1351 #[inline(always)]
1352 fn new_empty() -> Self {
1353 Self {
1354 isp_pin_0: fidl::new_empty!(PinState, D),
1355 isp_pin_1: fidl::new_empty!(PinState, D),
1356 isp_pin_2: fidl::new_empty!(PinState, D),
1357 }
1358 }
1359
1360 #[inline]
1361 unsafe fn decode(
1362 &mut self,
1363 decoder: &mut fidl::encoding::Decoder<'_, D>,
1364 offset: usize,
1365 _depth: fidl::encoding::Depth,
1366 ) -> fidl::Result<()> {
1367 decoder.debug_check_bounds::<Self>(offset);
1368 fidl::decode!(PinState, D, &mut self.isp_pin_0, decoder, offset + 0, _depth)?;
1370 fidl::decode!(PinState, D, &mut self.isp_pin_1, decoder, offset + 4, _depth)?;
1371 fidl::decode!(PinState, D, &mut self.isp_pin_2, decoder, offset + 8, _depth)?;
1372 Ok(())
1373 }
1374 }
1375
1376 impl fidl::encoding::ValueTypeMarker for LifecycleObserverOnLifecycleChangeRequest {
1377 type Borrowed<'a> = &'a Self;
1378 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1379 value
1380 }
1381 }
1382
1383 unsafe impl fidl::encoding::TypeMarker for LifecycleObserverOnLifecycleChangeRequest {
1384 type Owned = Self;
1385
1386 #[inline(always)]
1387 fn inline_align(_context: fidl::encoding::Context) -> usize {
1388 4
1389 }
1390
1391 #[inline(always)]
1392 fn inline_size(_context: fidl::encoding::Context) -> usize {
1393 4
1394 }
1395 }
1396
1397 unsafe impl<D: fidl::encoding::ResourceDialect>
1398 fidl::encoding::Encode<LifecycleObserverOnLifecycleChangeRequest, D>
1399 for &LifecycleObserverOnLifecycleChangeRequest
1400 {
1401 #[inline]
1402 unsafe fn encode(
1403 self,
1404 encoder: &mut fidl::encoding::Encoder<'_, D>,
1405 offset: usize,
1406 _depth: fidl::encoding::Depth,
1407 ) -> fidl::Result<()> {
1408 encoder.debug_check_bounds::<LifecycleObserverOnLifecycleChangeRequest>(offset);
1409 fidl::encoding::Encode::<LifecycleObserverOnLifecycleChangeRequest, D>::encode(
1411 (<LifecycleEvent as fidl::encoding::ValueTypeMarker>::borrow(&self.event),),
1412 encoder,
1413 offset,
1414 _depth,
1415 )
1416 }
1417 }
1418 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<LifecycleEvent, D>>
1419 fidl::encoding::Encode<LifecycleObserverOnLifecycleChangeRequest, D> for (T0,)
1420 {
1421 #[inline]
1422 unsafe fn encode(
1423 self,
1424 encoder: &mut fidl::encoding::Encoder<'_, D>,
1425 offset: usize,
1426 depth: fidl::encoding::Depth,
1427 ) -> fidl::Result<()> {
1428 encoder.debug_check_bounds::<LifecycleObserverOnLifecycleChangeRequest>(offset);
1429 self.0.encode(encoder, offset + 0, depth)?;
1433 Ok(())
1434 }
1435 }
1436
1437 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1438 for LifecycleObserverOnLifecycleChangeRequest
1439 {
1440 #[inline(always)]
1441 fn new_empty() -> Self {
1442 Self { event: fidl::new_empty!(LifecycleEvent, D) }
1443 }
1444
1445 #[inline]
1446 unsafe fn decode(
1447 &mut self,
1448 decoder: &mut fidl::encoding::Decoder<'_, D>,
1449 offset: usize,
1450 _depth: fidl::encoding::Depth,
1451 ) -> fidl::Result<()> {
1452 decoder.debug_check_bounds::<Self>(offset);
1453 fidl::decode!(LifecycleEvent, D, &mut self.event, decoder, offset + 0, _depth)?;
1455 Ok(())
1456 }
1457 }
1458
1459 impl fidl::encoding::ValueTypeMarker for McuVersionInfo {
1460 type Borrowed<'a> = &'a Self;
1461 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1462 value
1463 }
1464 }
1465
1466 unsafe impl fidl::encoding::TypeMarker for McuVersionInfo {
1467 type Owned = Self;
1468
1469 #[inline(always)]
1470 fn inline_align(_context: fidl::encoding::Context) -> usize {
1471 4
1472 }
1473
1474 #[inline(always)]
1475 fn inline_size(_context: fidl::encoding::Context) -> usize {
1476 12
1477 }
1478 #[inline(always)]
1479 fn encode_is_copy() -> bool {
1480 true
1481 }
1482
1483 #[inline(always)]
1484 fn decode_is_copy() -> bool {
1485 true
1486 }
1487 }
1488
1489 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<McuVersionInfo, D>
1490 for &McuVersionInfo
1491 {
1492 #[inline]
1493 unsafe fn encode(
1494 self,
1495 encoder: &mut fidl::encoding::Encoder<'_, D>,
1496 offset: usize,
1497 _depth: fidl::encoding::Depth,
1498 ) -> fidl::Result<()> {
1499 encoder.debug_check_bounds::<McuVersionInfo>(offset);
1500 unsafe {
1501 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1503 (buf_ptr as *mut McuVersionInfo)
1504 .write_unaligned((self as *const McuVersionInfo).read());
1505 }
1508 Ok(())
1509 }
1510 }
1511 unsafe impl<
1512 D: fidl::encoding::ResourceDialect,
1513 T0: fidl::encoding::Encode<u16, D>,
1514 T1: fidl::encoding::Encode<u16, D>,
1515 T2: fidl::encoding::Encode<u16, D>,
1516 T3: fidl::encoding::Encode<u16, D>,
1517 T4: fidl::encoding::Encode<u32, D>,
1518 > fidl::encoding::Encode<McuVersionInfo, D> for (T0, T1, T2, T3, T4)
1519 {
1520 #[inline]
1521 unsafe fn encode(
1522 self,
1523 encoder: &mut fidl::encoding::Encoder<'_, D>,
1524 offset: usize,
1525 depth: fidl::encoding::Depth,
1526 ) -> fidl::Result<()> {
1527 encoder.debug_check_bounds::<McuVersionInfo>(offset);
1528 self.0.encode(encoder, offset + 0, depth)?;
1532 self.1.encode(encoder, offset + 2, depth)?;
1533 self.2.encode(encoder, offset + 4, depth)?;
1534 self.3.encode(encoder, offset + 6, depth)?;
1535 self.4.encode(encoder, offset + 8, depth)?;
1536 Ok(())
1537 }
1538 }
1539
1540 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for McuVersionInfo {
1541 #[inline(always)]
1542 fn new_empty() -> Self {
1543 Self {
1544 hardware_type: fidl::new_empty!(u16, D),
1545 hardware_version: fidl::new_empty!(u16, D),
1546 bootloader_version: fidl::new_empty!(u16, D),
1547 os_version: fidl::new_empty!(u16, D),
1548 variant_version: fidl::new_empty!(u32, D),
1549 }
1550 }
1551
1552 #[inline]
1553 unsafe fn decode(
1554 &mut self,
1555 decoder: &mut fidl::encoding::Decoder<'_, D>,
1556 offset: usize,
1557 _depth: fidl::encoding::Depth,
1558 ) -> fidl::Result<()> {
1559 decoder.debug_check_bounds::<Self>(offset);
1560 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1561 unsafe {
1564 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 12);
1565 }
1566 Ok(())
1567 }
1568 }
1569
1570 impl DataChannelReadRequest {
1571 #[inline(always)]
1572 fn max_ordinal_present(&self) -> u64 {
1573 if let Some(_) = self.blocking {
1574 return 1;
1575 }
1576 0
1577 }
1578 }
1579
1580 impl fidl::encoding::ValueTypeMarker for DataChannelReadRequest {
1581 type Borrowed<'a> = &'a Self;
1582 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1583 value
1584 }
1585 }
1586
1587 unsafe impl fidl::encoding::TypeMarker for DataChannelReadRequest {
1588 type Owned = Self;
1589
1590 #[inline(always)]
1591 fn inline_align(_context: fidl::encoding::Context) -> usize {
1592 8
1593 }
1594
1595 #[inline(always)]
1596 fn inline_size(_context: fidl::encoding::Context) -> usize {
1597 16
1598 }
1599 }
1600
1601 unsafe impl<D: fidl::encoding::ResourceDialect>
1602 fidl::encoding::Encode<DataChannelReadRequest, D> for &DataChannelReadRequest
1603 {
1604 unsafe fn encode(
1605 self,
1606 encoder: &mut fidl::encoding::Encoder<'_, D>,
1607 offset: usize,
1608 mut depth: fidl::encoding::Depth,
1609 ) -> fidl::Result<()> {
1610 encoder.debug_check_bounds::<DataChannelReadRequest>(offset);
1611 let max_ordinal: u64 = self.max_ordinal_present();
1613 encoder.write_num(max_ordinal, offset);
1614 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1615 if max_ordinal == 0 {
1617 return Ok(());
1618 }
1619 depth.increment()?;
1620 let envelope_size = 8;
1621 let bytes_len = max_ordinal as usize * envelope_size;
1622 #[allow(unused_variables)]
1623 let offset = encoder.out_of_line_offset(bytes_len);
1624 let mut _prev_end_offset: usize = 0;
1625 if 1 > max_ordinal {
1626 return Ok(());
1627 }
1628
1629 let cur_offset: usize = (1 - 1) * envelope_size;
1632
1633 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1635
1636 fidl::encoding::encode_in_envelope_optional::<bool, D>(
1641 self.blocking.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
1642 encoder,
1643 offset + cur_offset,
1644 depth,
1645 )?;
1646
1647 _prev_end_offset = cur_offset + envelope_size;
1648
1649 Ok(())
1650 }
1651 }
1652
1653 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1654 for DataChannelReadRequest
1655 {
1656 #[inline(always)]
1657 fn new_empty() -> Self {
1658 Self::default()
1659 }
1660
1661 unsafe fn decode(
1662 &mut self,
1663 decoder: &mut fidl::encoding::Decoder<'_, D>,
1664 offset: usize,
1665 mut depth: fidl::encoding::Depth,
1666 ) -> fidl::Result<()> {
1667 decoder.debug_check_bounds::<Self>(offset);
1668 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1669 None => return Err(fidl::Error::NotNullable),
1670 Some(len) => len,
1671 };
1672 if len == 0 {
1674 return Ok(());
1675 };
1676 depth.increment()?;
1677 let envelope_size = 8;
1678 let bytes_len = len * envelope_size;
1679 let offset = decoder.out_of_line_offset(bytes_len)?;
1680 let mut _next_ordinal_to_read = 0;
1682 let mut next_offset = offset;
1683 let end_offset = offset + bytes_len;
1684 _next_ordinal_to_read += 1;
1685 if next_offset >= end_offset {
1686 return Ok(());
1687 }
1688
1689 while _next_ordinal_to_read < 1 {
1691 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1692 _next_ordinal_to_read += 1;
1693 next_offset += envelope_size;
1694 }
1695
1696 let next_out_of_line = decoder.next_out_of_line();
1697 let handles_before = decoder.remaining_handles();
1698 if let Some((inlined, num_bytes, num_handles)) =
1699 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1700 {
1701 let member_inline_size =
1702 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1703 if inlined != (member_inline_size <= 4) {
1704 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1705 }
1706 let inner_offset;
1707 let mut inner_depth = depth.clone();
1708 if inlined {
1709 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1710 inner_offset = next_offset;
1711 } else {
1712 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1713 inner_depth.increment()?;
1714 }
1715 let val_ref = self.blocking.get_or_insert_with(|| fidl::new_empty!(bool, D));
1716 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
1717 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1718 {
1719 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1720 }
1721 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1722 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1723 }
1724 }
1725
1726 next_offset += envelope_size;
1727
1728 while next_offset < end_offset {
1730 _next_ordinal_to_read += 1;
1731 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1732 next_offset += envelope_size;
1733 }
1734
1735 Ok(())
1736 }
1737 }
1738
1739 impl DataChannelWriteRequest {
1740 #[inline(always)]
1741 fn max_ordinal_present(&self) -> u64 {
1742 if let Some(_) = self.data {
1743 return 1;
1744 }
1745 0
1746 }
1747 }
1748
1749 impl fidl::encoding::ValueTypeMarker for DataChannelWriteRequest {
1750 type Borrowed<'a> = &'a Self;
1751 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1752 value
1753 }
1754 }
1755
1756 unsafe impl fidl::encoding::TypeMarker for DataChannelWriteRequest {
1757 type Owned = Self;
1758
1759 #[inline(always)]
1760 fn inline_align(_context: fidl::encoding::Context) -> usize {
1761 8
1762 }
1763
1764 #[inline(always)]
1765 fn inline_size(_context: fidl::encoding::Context) -> usize {
1766 16
1767 }
1768 }
1769
1770 unsafe impl<D: fidl::encoding::ResourceDialect>
1771 fidl::encoding::Encode<DataChannelWriteRequest, D> for &DataChannelWriteRequest
1772 {
1773 unsafe fn encode(
1774 self,
1775 encoder: &mut fidl::encoding::Encoder<'_, D>,
1776 offset: usize,
1777 mut depth: fidl::encoding::Depth,
1778 ) -> fidl::Result<()> {
1779 encoder.debug_check_bounds::<DataChannelWriteRequest>(offset);
1780 let max_ordinal: u64 = self.max_ordinal_present();
1782 encoder.write_num(max_ordinal, offset);
1783 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1784 if max_ordinal == 0 {
1786 return Ok(());
1787 }
1788 depth.increment()?;
1789 let envelope_size = 8;
1790 let bytes_len = max_ordinal as usize * envelope_size;
1791 #[allow(unused_variables)]
1792 let offset = encoder.out_of_line_offset(bytes_len);
1793 let mut _prev_end_offset: usize = 0;
1794 if 1 > max_ordinal {
1795 return Ok(());
1796 }
1797
1798 let cur_offset: usize = (1 - 1) * envelope_size;
1801
1802 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1804
1805 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 4096>, D>(
1810 self.data.as_ref().map(
1811 <fidl::encoding::Vector<u8, 4096> as fidl::encoding::ValueTypeMarker>::borrow,
1812 ),
1813 encoder,
1814 offset + cur_offset,
1815 depth,
1816 )?;
1817
1818 _prev_end_offset = cur_offset + envelope_size;
1819
1820 Ok(())
1821 }
1822 }
1823
1824 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1825 for DataChannelWriteRequest
1826 {
1827 #[inline(always)]
1828 fn new_empty() -> Self {
1829 Self::default()
1830 }
1831
1832 unsafe fn decode(
1833 &mut self,
1834 decoder: &mut fidl::encoding::Decoder<'_, D>,
1835 offset: usize,
1836 mut depth: fidl::encoding::Depth,
1837 ) -> fidl::Result<()> {
1838 decoder.debug_check_bounds::<Self>(offset);
1839 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1840 None => return Err(fidl::Error::NotNullable),
1841 Some(len) => len,
1842 };
1843 if len == 0 {
1845 return Ok(());
1846 };
1847 depth.increment()?;
1848 let envelope_size = 8;
1849 let bytes_len = len * envelope_size;
1850 let offset = decoder.out_of_line_offset(bytes_len)?;
1851 let mut _next_ordinal_to_read = 0;
1853 let mut next_offset = offset;
1854 let end_offset = offset + bytes_len;
1855 _next_ordinal_to_read += 1;
1856 if next_offset >= end_offset {
1857 return Ok(());
1858 }
1859
1860 while _next_ordinal_to_read < 1 {
1862 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1863 _next_ordinal_to_read += 1;
1864 next_offset += envelope_size;
1865 }
1866
1867 let next_out_of_line = decoder.next_out_of_line();
1868 let handles_before = decoder.remaining_handles();
1869 if let Some((inlined, num_bytes, num_handles)) =
1870 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1871 {
1872 let member_inline_size =
1873 <fidl::encoding::Vector<u8, 4096> as fidl::encoding::TypeMarker>::inline_size(
1874 decoder.context,
1875 );
1876 if inlined != (member_inline_size <= 4) {
1877 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1878 }
1879 let inner_offset;
1880 let mut inner_depth = depth.clone();
1881 if inlined {
1882 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1883 inner_offset = next_offset;
1884 } else {
1885 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1886 inner_depth.increment()?;
1887 }
1888 let val_ref = self
1889 .data
1890 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 4096>, D));
1891 fidl::decode!(fidl::encoding::Vector<u8, 4096>, D, val_ref, decoder, inner_offset, inner_depth)?;
1892 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1893 {
1894 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1895 }
1896 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1897 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1898 }
1899 }
1900
1901 next_offset += envelope_size;
1902
1903 while next_offset < end_offset {
1905 _next_ordinal_to_read += 1;
1906 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1907 next_offset += envelope_size;
1908 }
1909
1910 Ok(())
1911 }
1912 }
1913
1914 impl DataChannelGetIdentifierResponse {
1915 #[inline(always)]
1916 fn max_ordinal_present(&self) -> u64 {
1917 if let Some(_) = self.name {
1918 return 1;
1919 }
1920 0
1921 }
1922 }
1923
1924 impl fidl::encoding::ValueTypeMarker for DataChannelGetIdentifierResponse {
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 DataChannelGetIdentifierResponse {
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>
1946 fidl::encoding::Encode<DataChannelGetIdentifierResponse, D>
1947 for &DataChannelGetIdentifierResponse
1948 {
1949 unsafe fn encode(
1950 self,
1951 encoder: &mut fidl::encoding::Encoder<'_, D>,
1952 offset: usize,
1953 mut depth: fidl::encoding::Depth,
1954 ) -> fidl::Result<()> {
1955 encoder.debug_check_bounds::<DataChannelGetIdentifierResponse>(offset);
1956 let max_ordinal: u64 = self.max_ordinal_present();
1958 encoder.write_num(max_ordinal, offset);
1959 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1960 if max_ordinal == 0 {
1962 return Ok(());
1963 }
1964 depth.increment()?;
1965 let envelope_size = 8;
1966 let bytes_len = max_ordinal as usize * envelope_size;
1967 #[allow(unused_variables)]
1968 let offset = encoder.out_of_line_offset(bytes_len);
1969 let mut _prev_end_offset: usize = 0;
1970 if 1 > max_ordinal {
1971 return Ok(());
1972 }
1973
1974 let cur_offset: usize = (1 - 1) * envelope_size;
1977
1978 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1980
1981 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
1986 self.name.as_ref().map(
1987 <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
1988 ),
1989 encoder,
1990 offset + cur_offset,
1991 depth,
1992 )?;
1993
1994 _prev_end_offset = cur_offset + envelope_size;
1995
1996 Ok(())
1997 }
1998 }
1999
2000 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2001 for DataChannelGetIdentifierResponse
2002 {
2003 #[inline(always)]
2004 fn new_empty() -> Self {
2005 Self::default()
2006 }
2007
2008 unsafe fn decode(
2009 &mut self,
2010 decoder: &mut fidl::encoding::Decoder<'_, D>,
2011 offset: usize,
2012 mut depth: fidl::encoding::Depth,
2013 ) -> fidl::Result<()> {
2014 decoder.debug_check_bounds::<Self>(offset);
2015 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2016 None => return Err(fidl::Error::NotNullable),
2017 Some(len) => len,
2018 };
2019 if len == 0 {
2021 return Ok(());
2022 };
2023 depth.increment()?;
2024 let envelope_size = 8;
2025 let bytes_len = len * envelope_size;
2026 let offset = decoder.out_of_line_offset(bytes_len)?;
2027 let mut _next_ordinal_to_read = 0;
2029 let mut next_offset = offset;
2030 let end_offset = offset + bytes_len;
2031 _next_ordinal_to_read += 1;
2032 if next_offset >= end_offset {
2033 return Ok(());
2034 }
2035
2036 while _next_ordinal_to_read < 1 {
2038 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2039 _next_ordinal_to_read += 1;
2040 next_offset += envelope_size;
2041 }
2042
2043 let next_out_of_line = decoder.next_out_of_line();
2044 let handles_before = decoder.remaining_handles();
2045 if let Some((inlined, num_bytes, num_handles)) =
2046 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2047 {
2048 let member_inline_size =
2049 <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
2050 decoder.context,
2051 );
2052 if inlined != (member_inline_size <= 4) {
2053 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2054 }
2055 let inner_offset;
2056 let mut inner_depth = depth.clone();
2057 if inlined {
2058 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2059 inner_offset = next_offset;
2060 } else {
2061 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2062 inner_depth.increment()?;
2063 }
2064 let val_ref = self
2065 .name
2066 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
2067 fidl::decode!(
2068 fidl::encoding::BoundedString<100>,
2069 D,
2070 val_ref,
2071 decoder,
2072 inner_offset,
2073 inner_depth
2074 )?;
2075 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2076 {
2077 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2078 }
2079 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2080 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2081 }
2082 }
2083
2084 next_offset += envelope_size;
2085
2086 while next_offset < end_offset {
2088 _next_ordinal_to_read += 1;
2089 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2090 next_offset += envelope_size;
2091 }
2092
2093 Ok(())
2094 }
2095 }
2096
2097 impl DisplayDeviceSetDisplaySelectRequest {
2098 #[inline(always)]
2099 fn max_ordinal_present(&self) -> u64 {
2100 if let Some(_) = self.display_select {
2101 return 1;
2102 }
2103 0
2104 }
2105 }
2106
2107 impl fidl::encoding::ValueTypeMarker for DisplayDeviceSetDisplaySelectRequest {
2108 type Borrowed<'a> = &'a Self;
2109 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2110 value
2111 }
2112 }
2113
2114 unsafe impl fidl::encoding::TypeMarker for DisplayDeviceSetDisplaySelectRequest {
2115 type Owned = Self;
2116
2117 #[inline(always)]
2118 fn inline_align(_context: fidl::encoding::Context) -> usize {
2119 8
2120 }
2121
2122 #[inline(always)]
2123 fn inline_size(_context: fidl::encoding::Context) -> usize {
2124 16
2125 }
2126 }
2127
2128 unsafe impl<D: fidl::encoding::ResourceDialect>
2129 fidl::encoding::Encode<DisplayDeviceSetDisplaySelectRequest, D>
2130 for &DisplayDeviceSetDisplaySelectRequest
2131 {
2132 unsafe fn encode(
2133 self,
2134 encoder: &mut fidl::encoding::Encoder<'_, D>,
2135 offset: usize,
2136 mut depth: fidl::encoding::Depth,
2137 ) -> fidl::Result<()> {
2138 encoder.debug_check_bounds::<DisplayDeviceSetDisplaySelectRequest>(offset);
2139 let max_ordinal: u64 = self.max_ordinal_present();
2141 encoder.write_num(max_ordinal, offset);
2142 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2143 if max_ordinal == 0 {
2145 return Ok(());
2146 }
2147 depth.increment()?;
2148 let envelope_size = 8;
2149 let bytes_len = max_ordinal as usize * envelope_size;
2150 #[allow(unused_variables)]
2151 let offset = encoder.out_of_line_offset(bytes_len);
2152 let mut _prev_end_offset: usize = 0;
2153 if 1 > max_ordinal {
2154 return Ok(());
2155 }
2156
2157 let cur_offset: usize = (1 - 1) * envelope_size;
2160
2161 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2163
2164 fidl::encoding::encode_in_envelope_optional::<DisplaySelect, D>(
2169 self.display_select
2170 .as_ref()
2171 .map(<DisplaySelect as fidl::encoding::ValueTypeMarker>::borrow),
2172 encoder,
2173 offset + cur_offset,
2174 depth,
2175 )?;
2176
2177 _prev_end_offset = cur_offset + envelope_size;
2178
2179 Ok(())
2180 }
2181 }
2182
2183 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2184 for DisplayDeviceSetDisplaySelectRequest
2185 {
2186 #[inline(always)]
2187 fn new_empty() -> Self {
2188 Self::default()
2189 }
2190
2191 unsafe fn decode(
2192 &mut self,
2193 decoder: &mut fidl::encoding::Decoder<'_, D>,
2194 offset: usize,
2195 mut depth: fidl::encoding::Depth,
2196 ) -> fidl::Result<()> {
2197 decoder.debug_check_bounds::<Self>(offset);
2198 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2199 None => return Err(fidl::Error::NotNullable),
2200 Some(len) => len,
2201 };
2202 if len == 0 {
2204 return Ok(());
2205 };
2206 depth.increment()?;
2207 let envelope_size = 8;
2208 let bytes_len = len * envelope_size;
2209 let offset = decoder.out_of_line_offset(bytes_len)?;
2210 let mut _next_ordinal_to_read = 0;
2212 let mut next_offset = offset;
2213 let end_offset = offset + bytes_len;
2214 _next_ordinal_to_read += 1;
2215 if next_offset >= end_offset {
2216 return Ok(());
2217 }
2218
2219 while _next_ordinal_to_read < 1 {
2221 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2222 _next_ordinal_to_read += 1;
2223 next_offset += envelope_size;
2224 }
2225
2226 let next_out_of_line = decoder.next_out_of_line();
2227 let handles_before = decoder.remaining_handles();
2228 if let Some((inlined, num_bytes, num_handles)) =
2229 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2230 {
2231 let member_inline_size =
2232 <DisplaySelect as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2233 if inlined != (member_inline_size <= 4) {
2234 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2235 }
2236 let inner_offset;
2237 let mut inner_depth = depth.clone();
2238 if inlined {
2239 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2240 inner_offset = next_offset;
2241 } else {
2242 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2243 inner_depth.increment()?;
2244 }
2245 let val_ref =
2246 self.display_select.get_or_insert_with(|| fidl::new_empty!(DisplaySelect, D));
2247 fidl::decode!(DisplaySelect, D, val_ref, decoder, inner_offset, inner_depth)?;
2248 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2249 {
2250 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2251 }
2252 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2253 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2254 }
2255 }
2256
2257 next_offset += envelope_size;
2258
2259 while next_offset < end_offset {
2261 _next_ordinal_to_read += 1;
2262 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2263 next_offset += envelope_size;
2264 }
2265
2266 Ok(())
2267 }
2268 }
2269
2270 impl DisplayDeviceGetDisplaySelectResponse {
2271 #[inline(always)]
2272 fn max_ordinal_present(&self) -> u64 {
2273 if let Some(_) = self.display_select {
2274 return 1;
2275 }
2276 0
2277 }
2278 }
2279
2280 impl fidl::encoding::ValueTypeMarker for DisplayDeviceGetDisplaySelectResponse {
2281 type Borrowed<'a> = &'a Self;
2282 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2283 value
2284 }
2285 }
2286
2287 unsafe impl fidl::encoding::TypeMarker for DisplayDeviceGetDisplaySelectResponse {
2288 type Owned = Self;
2289
2290 #[inline(always)]
2291 fn inline_align(_context: fidl::encoding::Context) -> usize {
2292 8
2293 }
2294
2295 #[inline(always)]
2296 fn inline_size(_context: fidl::encoding::Context) -> usize {
2297 16
2298 }
2299 }
2300
2301 unsafe impl<D: fidl::encoding::ResourceDialect>
2302 fidl::encoding::Encode<DisplayDeviceGetDisplaySelectResponse, D>
2303 for &DisplayDeviceGetDisplaySelectResponse
2304 {
2305 unsafe fn encode(
2306 self,
2307 encoder: &mut fidl::encoding::Encoder<'_, D>,
2308 offset: usize,
2309 mut depth: fidl::encoding::Depth,
2310 ) -> fidl::Result<()> {
2311 encoder.debug_check_bounds::<DisplayDeviceGetDisplaySelectResponse>(offset);
2312 let max_ordinal: u64 = self.max_ordinal_present();
2314 encoder.write_num(max_ordinal, offset);
2315 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2316 if max_ordinal == 0 {
2318 return Ok(());
2319 }
2320 depth.increment()?;
2321 let envelope_size = 8;
2322 let bytes_len = max_ordinal as usize * envelope_size;
2323 #[allow(unused_variables)]
2324 let offset = encoder.out_of_line_offset(bytes_len);
2325 let mut _prev_end_offset: usize = 0;
2326 if 1 > max_ordinal {
2327 return Ok(());
2328 }
2329
2330 let cur_offset: usize = (1 - 1) * envelope_size;
2333
2334 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2336
2337 fidl::encoding::encode_in_envelope_optional::<DisplaySelect, D>(
2342 self.display_select
2343 .as_ref()
2344 .map(<DisplaySelect as fidl::encoding::ValueTypeMarker>::borrow),
2345 encoder,
2346 offset + cur_offset,
2347 depth,
2348 )?;
2349
2350 _prev_end_offset = cur_offset + envelope_size;
2351
2352 Ok(())
2353 }
2354 }
2355
2356 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2357 for DisplayDeviceGetDisplaySelectResponse
2358 {
2359 #[inline(always)]
2360 fn new_empty() -> Self {
2361 Self::default()
2362 }
2363
2364 unsafe fn decode(
2365 &mut self,
2366 decoder: &mut fidl::encoding::Decoder<'_, D>,
2367 offset: usize,
2368 mut depth: fidl::encoding::Depth,
2369 ) -> fidl::Result<()> {
2370 decoder.debug_check_bounds::<Self>(offset);
2371 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2372 None => return Err(fidl::Error::NotNullable),
2373 Some(len) => len,
2374 };
2375 if len == 0 {
2377 return Ok(());
2378 };
2379 depth.increment()?;
2380 let envelope_size = 8;
2381 let bytes_len = len * envelope_size;
2382 let offset = decoder.out_of_line_offset(bytes_len)?;
2383 let mut _next_ordinal_to_read = 0;
2385 let mut next_offset = offset;
2386 let end_offset = offset + bytes_len;
2387 _next_ordinal_to_read += 1;
2388 if next_offset >= end_offset {
2389 return Ok(());
2390 }
2391
2392 while _next_ordinal_to_read < 1 {
2394 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2395 _next_ordinal_to_read += 1;
2396 next_offset += envelope_size;
2397 }
2398
2399 let next_out_of_line = decoder.next_out_of_line();
2400 let handles_before = decoder.remaining_handles();
2401 if let Some((inlined, num_bytes, num_handles)) =
2402 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2403 {
2404 let member_inline_size =
2405 <DisplaySelect as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2406 if inlined != (member_inline_size <= 4) {
2407 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2408 }
2409 let inner_offset;
2410 let mut inner_depth = depth.clone();
2411 if inlined {
2412 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2413 inner_offset = next_offset;
2414 } else {
2415 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2416 inner_depth.increment()?;
2417 }
2418 let val_ref =
2419 self.display_select.get_or_insert_with(|| fidl::new_empty!(DisplaySelect, D));
2420 fidl::decode!(DisplaySelect, D, val_ref, decoder, inner_offset, inner_depth)?;
2421 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2422 {
2423 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2424 }
2425 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2426 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2427 }
2428 }
2429
2430 next_offset += envelope_size;
2431
2432 while next_offset < end_offset {
2434 _next_ordinal_to_read += 1;
2435 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2436 next_offset += envelope_size;
2437 }
2438
2439 Ok(())
2440 }
2441 }
2442
2443 impl DisplayState {
2444 #[inline(always)]
2445 fn max_ordinal_present(&self) -> u64 {
2446 if let Some(_) = self.mode {
2447 return 1;
2448 }
2449 0
2450 }
2451 }
2452
2453 impl fidl::encoding::ValueTypeMarker for DisplayState {
2454 type Borrowed<'a> = &'a Self;
2455 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2456 value
2457 }
2458 }
2459
2460 unsafe impl fidl::encoding::TypeMarker for DisplayState {
2461 type Owned = Self;
2462
2463 #[inline(always)]
2464 fn inline_align(_context: fidl::encoding::Context) -> usize {
2465 8
2466 }
2467
2468 #[inline(always)]
2469 fn inline_size(_context: fidl::encoding::Context) -> usize {
2470 16
2471 }
2472 }
2473
2474 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DisplayState, D>
2475 for &DisplayState
2476 {
2477 unsafe fn encode(
2478 self,
2479 encoder: &mut fidl::encoding::Encoder<'_, D>,
2480 offset: usize,
2481 mut depth: fidl::encoding::Depth,
2482 ) -> fidl::Result<()> {
2483 encoder.debug_check_bounds::<DisplayState>(offset);
2484 let max_ordinal: u64 = self.max_ordinal_present();
2486 encoder.write_num(max_ordinal, offset);
2487 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2488 if max_ordinal == 0 {
2490 return Ok(());
2491 }
2492 depth.increment()?;
2493 let envelope_size = 8;
2494 let bytes_len = max_ordinal as usize * envelope_size;
2495 #[allow(unused_variables)]
2496 let offset = encoder.out_of_line_offset(bytes_len);
2497 let mut _prev_end_offset: usize = 0;
2498 if 1 > max_ordinal {
2499 return Ok(());
2500 }
2501
2502 let cur_offset: usize = (1 - 1) * envelope_size;
2505
2506 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2508
2509 fidl::encoding::encode_in_envelope_optional::<DisplayMode, D>(
2514 self.mode.as_ref().map(<DisplayMode as fidl::encoding::ValueTypeMarker>::borrow),
2515 encoder,
2516 offset + cur_offset,
2517 depth,
2518 )?;
2519
2520 _prev_end_offset = cur_offset + envelope_size;
2521
2522 Ok(())
2523 }
2524 }
2525
2526 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DisplayState {
2527 #[inline(always)]
2528 fn new_empty() -> Self {
2529 Self::default()
2530 }
2531
2532 unsafe fn decode(
2533 &mut self,
2534 decoder: &mut fidl::encoding::Decoder<'_, D>,
2535 offset: usize,
2536 mut depth: fidl::encoding::Depth,
2537 ) -> fidl::Result<()> {
2538 decoder.debug_check_bounds::<Self>(offset);
2539 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2540 None => return Err(fidl::Error::NotNullable),
2541 Some(len) => len,
2542 };
2543 if len == 0 {
2545 return Ok(());
2546 };
2547 depth.increment()?;
2548 let envelope_size = 8;
2549 let bytes_len = len * envelope_size;
2550 let offset = decoder.out_of_line_offset(bytes_len)?;
2551 let mut _next_ordinal_to_read = 0;
2553 let mut next_offset = offset;
2554 let end_offset = offset + bytes_len;
2555 _next_ordinal_to_read += 1;
2556 if next_offset >= end_offset {
2557 return Ok(());
2558 }
2559
2560 while _next_ordinal_to_read < 1 {
2562 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2563 _next_ordinal_to_read += 1;
2564 next_offset += envelope_size;
2565 }
2566
2567 let next_out_of_line = decoder.next_out_of_line();
2568 let handles_before = decoder.remaining_handles();
2569 if let Some((inlined, num_bytes, num_handles)) =
2570 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2571 {
2572 let member_inline_size =
2573 <DisplayMode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2574 if inlined != (member_inline_size <= 4) {
2575 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2576 }
2577 let inner_offset;
2578 let mut inner_depth = depth.clone();
2579 if inlined {
2580 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2581 inner_offset = next_offset;
2582 } else {
2583 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2584 inner_depth.increment()?;
2585 }
2586 let val_ref = self.mode.get_or_insert_with(|| fidl::new_empty!(DisplayMode, D));
2587 fidl::decode!(DisplayMode, D, val_ref, decoder, inner_offset, inner_depth)?;
2588 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2589 {
2590 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2591 }
2592 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2593 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2594 }
2595 }
2596
2597 next_offset += envelope_size;
2598
2599 while next_offset < end_offset {
2601 _next_ordinal_to_read += 1;
2602 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2603 next_offset += envelope_size;
2604 }
2605
2606 Ok(())
2607 }
2608 }
2609
2610 impl DisplaySyncInfo {
2611 #[inline(always)]
2612 fn max_ordinal_present(&self) -> u64 {
2613 if let Some(_) = self.always_on_display_brightness {
2614 return 4;
2615 }
2616 if let Some(_) = self.normal_brightness {
2617 return 3;
2618 }
2619 if let Some(_) = self.panel_mode {
2620 return 2;
2621 }
2622 if let Some(_) = self.display_mode {
2623 return 1;
2624 }
2625 0
2626 }
2627 }
2628
2629 impl fidl::encoding::ValueTypeMarker for DisplaySyncInfo {
2630 type Borrowed<'a> = &'a Self;
2631 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2632 value
2633 }
2634 }
2635
2636 unsafe impl fidl::encoding::TypeMarker for DisplaySyncInfo {
2637 type Owned = Self;
2638
2639 #[inline(always)]
2640 fn inline_align(_context: fidl::encoding::Context) -> usize {
2641 8
2642 }
2643
2644 #[inline(always)]
2645 fn inline_size(_context: fidl::encoding::Context) -> usize {
2646 16
2647 }
2648 }
2649
2650 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DisplaySyncInfo, D>
2651 for &DisplaySyncInfo
2652 {
2653 unsafe fn encode(
2654 self,
2655 encoder: &mut fidl::encoding::Encoder<'_, D>,
2656 offset: usize,
2657 mut depth: fidl::encoding::Depth,
2658 ) -> fidl::Result<()> {
2659 encoder.debug_check_bounds::<DisplaySyncInfo>(offset);
2660 let max_ordinal: u64 = self.max_ordinal_present();
2662 encoder.write_num(max_ordinal, offset);
2663 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2664 if max_ordinal == 0 {
2666 return Ok(());
2667 }
2668 depth.increment()?;
2669 let envelope_size = 8;
2670 let bytes_len = max_ordinal as usize * envelope_size;
2671 #[allow(unused_variables)]
2672 let offset = encoder.out_of_line_offset(bytes_len);
2673 let mut _prev_end_offset: usize = 0;
2674 if 1 > max_ordinal {
2675 return Ok(());
2676 }
2677
2678 let cur_offset: usize = (1 - 1) * envelope_size;
2681
2682 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2684
2685 fidl::encoding::encode_in_envelope_optional::<DisplayMode, D>(
2690 self.display_mode
2691 .as_ref()
2692 .map(<DisplayMode as fidl::encoding::ValueTypeMarker>::borrow),
2693 encoder,
2694 offset + cur_offset,
2695 depth,
2696 )?;
2697
2698 _prev_end_offset = cur_offset + envelope_size;
2699 if 2 > max_ordinal {
2700 return Ok(());
2701 }
2702
2703 let cur_offset: usize = (2 - 1) * envelope_size;
2706
2707 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2709
2710 fidl::encoding::encode_in_envelope_optional::<u8, D>(
2715 self.panel_mode.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
2716 encoder,
2717 offset + cur_offset,
2718 depth,
2719 )?;
2720
2721 _prev_end_offset = cur_offset + envelope_size;
2722 if 3 > max_ordinal {
2723 return Ok(());
2724 }
2725
2726 let cur_offset: usize = (3 - 1) * envelope_size;
2729
2730 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2732
2733 fidl::encoding::encode_in_envelope_optional::<u16, D>(
2738 self.normal_brightness
2739 .as_ref()
2740 .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
2741 encoder,
2742 offset + cur_offset,
2743 depth,
2744 )?;
2745
2746 _prev_end_offset = cur_offset + envelope_size;
2747 if 4 > max_ordinal {
2748 return Ok(());
2749 }
2750
2751 let cur_offset: usize = (4 - 1) * envelope_size;
2754
2755 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2757
2758 fidl::encoding::encode_in_envelope_optional::<u16, D>(
2763 self.always_on_display_brightness
2764 .as_ref()
2765 .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
2766 encoder,
2767 offset + cur_offset,
2768 depth,
2769 )?;
2770
2771 _prev_end_offset = cur_offset + envelope_size;
2772
2773 Ok(())
2774 }
2775 }
2776
2777 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DisplaySyncInfo {
2778 #[inline(always)]
2779 fn new_empty() -> Self {
2780 Self::default()
2781 }
2782
2783 unsafe fn decode(
2784 &mut self,
2785 decoder: &mut fidl::encoding::Decoder<'_, D>,
2786 offset: usize,
2787 mut depth: fidl::encoding::Depth,
2788 ) -> fidl::Result<()> {
2789 decoder.debug_check_bounds::<Self>(offset);
2790 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2791 None => return Err(fidl::Error::NotNullable),
2792 Some(len) => len,
2793 };
2794 if len == 0 {
2796 return Ok(());
2797 };
2798 depth.increment()?;
2799 let envelope_size = 8;
2800 let bytes_len = len * envelope_size;
2801 let offset = decoder.out_of_line_offset(bytes_len)?;
2802 let mut _next_ordinal_to_read = 0;
2804 let mut next_offset = offset;
2805 let end_offset = offset + bytes_len;
2806 _next_ordinal_to_read += 1;
2807 if next_offset >= end_offset {
2808 return Ok(());
2809 }
2810
2811 while _next_ordinal_to_read < 1 {
2813 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2814 _next_ordinal_to_read += 1;
2815 next_offset += envelope_size;
2816 }
2817
2818 let next_out_of_line = decoder.next_out_of_line();
2819 let handles_before = decoder.remaining_handles();
2820 if let Some((inlined, num_bytes, num_handles)) =
2821 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2822 {
2823 let member_inline_size =
2824 <DisplayMode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2825 if inlined != (member_inline_size <= 4) {
2826 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2827 }
2828 let inner_offset;
2829 let mut inner_depth = depth.clone();
2830 if inlined {
2831 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2832 inner_offset = next_offset;
2833 } else {
2834 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2835 inner_depth.increment()?;
2836 }
2837 let val_ref =
2838 self.display_mode.get_or_insert_with(|| fidl::new_empty!(DisplayMode, D));
2839 fidl::decode!(DisplayMode, D, val_ref, decoder, inner_offset, inner_depth)?;
2840 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2841 {
2842 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2843 }
2844 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2845 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2846 }
2847 }
2848
2849 next_offset += envelope_size;
2850 _next_ordinal_to_read += 1;
2851 if next_offset >= end_offset {
2852 return Ok(());
2853 }
2854
2855 while _next_ordinal_to_read < 2 {
2857 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2858 _next_ordinal_to_read += 1;
2859 next_offset += envelope_size;
2860 }
2861
2862 let next_out_of_line = decoder.next_out_of_line();
2863 let handles_before = decoder.remaining_handles();
2864 if let Some((inlined, num_bytes, num_handles)) =
2865 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2866 {
2867 let member_inline_size =
2868 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2869 if inlined != (member_inline_size <= 4) {
2870 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2871 }
2872 let inner_offset;
2873 let mut inner_depth = depth.clone();
2874 if inlined {
2875 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2876 inner_offset = next_offset;
2877 } else {
2878 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2879 inner_depth.increment()?;
2880 }
2881 let val_ref = self.panel_mode.get_or_insert_with(|| fidl::new_empty!(u8, D));
2882 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
2883 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2884 {
2885 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2886 }
2887 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2888 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2889 }
2890 }
2891
2892 next_offset += envelope_size;
2893 _next_ordinal_to_read += 1;
2894 if next_offset >= end_offset {
2895 return Ok(());
2896 }
2897
2898 while _next_ordinal_to_read < 3 {
2900 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2901 _next_ordinal_to_read += 1;
2902 next_offset += envelope_size;
2903 }
2904
2905 let next_out_of_line = decoder.next_out_of_line();
2906 let handles_before = decoder.remaining_handles();
2907 if let Some((inlined, num_bytes, num_handles)) =
2908 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2909 {
2910 let member_inline_size =
2911 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2912 if inlined != (member_inline_size <= 4) {
2913 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2914 }
2915 let inner_offset;
2916 let mut inner_depth = depth.clone();
2917 if inlined {
2918 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2919 inner_offset = next_offset;
2920 } else {
2921 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2922 inner_depth.increment()?;
2923 }
2924 let val_ref =
2925 self.normal_brightness.get_or_insert_with(|| fidl::new_empty!(u16, D));
2926 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
2927 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2928 {
2929 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2930 }
2931 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2932 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2933 }
2934 }
2935
2936 next_offset += envelope_size;
2937 _next_ordinal_to_read += 1;
2938 if next_offset >= end_offset {
2939 return Ok(());
2940 }
2941
2942 while _next_ordinal_to_read < 4 {
2944 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2945 _next_ordinal_to_read += 1;
2946 next_offset += envelope_size;
2947 }
2948
2949 let next_out_of_line = decoder.next_out_of_line();
2950 let handles_before = decoder.remaining_handles();
2951 if let Some((inlined, num_bytes, num_handles)) =
2952 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2953 {
2954 let member_inline_size =
2955 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2956 if inlined != (member_inline_size <= 4) {
2957 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2958 }
2959 let inner_offset;
2960 let mut inner_depth = depth.clone();
2961 if inlined {
2962 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2963 inner_offset = next_offset;
2964 } else {
2965 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2966 inner_depth.increment()?;
2967 }
2968 let val_ref = self
2969 .always_on_display_brightness
2970 .get_or_insert_with(|| fidl::new_empty!(u16, D));
2971 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
2972 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2973 {
2974 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2975 }
2976 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2977 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2978 }
2979 }
2980
2981 next_offset += envelope_size;
2982
2983 while next_offset < end_offset {
2985 _next_ordinal_to_read += 1;
2986 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2987 next_offset += envelope_size;
2988 }
2989
2990 Ok(())
2991 }
2992 }
2993
2994 impl McuTimeSyncInfo {
2995 #[inline(always)]
2996 fn max_ordinal_present(&self) -> u64 {
2997 if let Some(_) = self.mcu_boot_time {
2998 return 2;
2999 }
3000 if let Some(_) = self.ap_boot_time {
3001 return 1;
3002 }
3003 0
3004 }
3005 }
3006
3007 impl fidl::encoding::ValueTypeMarker for McuTimeSyncInfo {
3008 type Borrowed<'a> = &'a Self;
3009 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3010 value
3011 }
3012 }
3013
3014 unsafe impl fidl::encoding::TypeMarker for McuTimeSyncInfo {
3015 type Owned = Self;
3016
3017 #[inline(always)]
3018 fn inline_align(_context: fidl::encoding::Context) -> usize {
3019 8
3020 }
3021
3022 #[inline(always)]
3023 fn inline_size(_context: fidl::encoding::Context) -> usize {
3024 16
3025 }
3026 }
3027
3028 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<McuTimeSyncInfo, D>
3029 for &McuTimeSyncInfo
3030 {
3031 unsafe fn encode(
3032 self,
3033 encoder: &mut fidl::encoding::Encoder<'_, D>,
3034 offset: usize,
3035 mut depth: fidl::encoding::Depth,
3036 ) -> fidl::Result<()> {
3037 encoder.debug_check_bounds::<McuTimeSyncInfo>(offset);
3038 let max_ordinal: u64 = self.max_ordinal_present();
3040 encoder.write_num(max_ordinal, offset);
3041 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3042 if max_ordinal == 0 {
3044 return Ok(());
3045 }
3046 depth.increment()?;
3047 let envelope_size = 8;
3048 let bytes_len = max_ordinal as usize * envelope_size;
3049 #[allow(unused_variables)]
3050 let offset = encoder.out_of_line_offset(bytes_len);
3051 let mut _prev_end_offset: usize = 0;
3052 if 1 > max_ordinal {
3053 return Ok(());
3054 }
3055
3056 let cur_offset: usize = (1 - 1) * envelope_size;
3059
3060 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3062
3063 fidl::encoding::encode_in_envelope_optional::<i64, D>(
3068 self.ap_boot_time.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
3069 encoder,
3070 offset + cur_offset,
3071 depth,
3072 )?;
3073
3074 _prev_end_offset = cur_offset + envelope_size;
3075 if 2 > max_ordinal {
3076 return Ok(());
3077 }
3078
3079 let cur_offset: usize = (2 - 1) * envelope_size;
3082
3083 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3085
3086 fidl::encoding::encode_in_envelope_optional::<i64, D>(
3091 self.mcu_boot_time.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
3092 encoder,
3093 offset + cur_offset,
3094 depth,
3095 )?;
3096
3097 _prev_end_offset = cur_offset + envelope_size;
3098
3099 Ok(())
3100 }
3101 }
3102
3103 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for McuTimeSyncInfo {
3104 #[inline(always)]
3105 fn new_empty() -> Self {
3106 Self::default()
3107 }
3108
3109 unsafe fn decode(
3110 &mut self,
3111 decoder: &mut fidl::encoding::Decoder<'_, D>,
3112 offset: usize,
3113 mut depth: fidl::encoding::Depth,
3114 ) -> fidl::Result<()> {
3115 decoder.debug_check_bounds::<Self>(offset);
3116 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3117 None => return Err(fidl::Error::NotNullable),
3118 Some(len) => len,
3119 };
3120 if len == 0 {
3122 return Ok(());
3123 };
3124 depth.increment()?;
3125 let envelope_size = 8;
3126 let bytes_len = len * envelope_size;
3127 let offset = decoder.out_of_line_offset(bytes_len)?;
3128 let mut _next_ordinal_to_read = 0;
3130 let mut next_offset = offset;
3131 let end_offset = offset + bytes_len;
3132 _next_ordinal_to_read += 1;
3133 if next_offset >= end_offset {
3134 return Ok(());
3135 }
3136
3137 while _next_ordinal_to_read < 1 {
3139 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3140 _next_ordinal_to_read += 1;
3141 next_offset += envelope_size;
3142 }
3143
3144 let next_out_of_line = decoder.next_out_of_line();
3145 let handles_before = decoder.remaining_handles();
3146 if let Some((inlined, num_bytes, num_handles)) =
3147 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3148 {
3149 let member_inline_size =
3150 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3151 if inlined != (member_inline_size <= 4) {
3152 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3153 }
3154 let inner_offset;
3155 let mut inner_depth = depth.clone();
3156 if inlined {
3157 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3158 inner_offset = next_offset;
3159 } else {
3160 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3161 inner_depth.increment()?;
3162 }
3163 let val_ref = self.ap_boot_time.get_or_insert_with(|| fidl::new_empty!(i64, D));
3164 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
3165 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3166 {
3167 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3168 }
3169 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3170 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3171 }
3172 }
3173
3174 next_offset += envelope_size;
3175 _next_ordinal_to_read += 1;
3176 if next_offset >= end_offset {
3177 return Ok(());
3178 }
3179
3180 while _next_ordinal_to_read < 2 {
3182 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3183 _next_ordinal_to_read += 1;
3184 next_offset += envelope_size;
3185 }
3186
3187 let next_out_of_line = decoder.next_out_of_line();
3188 let handles_before = decoder.remaining_handles();
3189 if let Some((inlined, num_bytes, num_handles)) =
3190 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3191 {
3192 let member_inline_size =
3193 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3194 if inlined != (member_inline_size <= 4) {
3195 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3196 }
3197 let inner_offset;
3198 let mut inner_depth = depth.clone();
3199 if inlined {
3200 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3201 inner_offset = next_offset;
3202 } else {
3203 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3204 inner_depth.increment()?;
3205 }
3206 let val_ref = self.mcu_boot_time.get_or_insert_with(|| fidl::new_empty!(i64, D));
3207 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
3208 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3209 {
3210 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3211 }
3212 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3213 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3214 }
3215 }
3216
3217 next_offset += envelope_size;
3218
3219 while next_offset < end_offset {
3221 _next_ordinal_to_read += 1;
3222 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3223 next_offset += envelope_size;
3224 }
3225
3226 Ok(())
3227 }
3228 }
3229}