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_DEPENDENCIES: u16 = 128;
12
13pub const MAX_LEVELS: u16 = 128;
15
16pub const MAX_NAME_LENGTH: u16 = 63;
17
18pub const MAX_POWER_ELEMENTS: u16 = 32;
19
20pub const MAX_TRANSITIONS: u16 = 127;
23
24#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
28#[repr(u32)]
29pub enum CpuPowerElement {
30 Cpu = 1,
31}
32
33impl CpuPowerElement {
34 #[inline]
35 pub fn from_primitive(prim: u32) -> Option<Self> {
36 match prim {
37 1 => Some(Self::Cpu),
38 _ => None,
39 }
40 }
41
42 #[inline]
43 pub const fn into_primitive(self) -> u32 {
44 self as u32
45 }
46}
47
48#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
49#[repr(u32)]
50pub enum FrameworkElementLevels {
51 Off = 0,
52 On = 1,
53}
54
55impl FrameworkElementLevels {
56 #[inline]
57 pub fn from_primitive(prim: u32) -> Option<Self> {
58 match prim {
59 0 => Some(Self::Off),
60 1 => Some(Self::On),
61 _ => None,
62 }
63 }
64
65 #[inline]
66 pub const fn into_primitive(self) -> u32 {
67 self as u32
68 }
69}
70
71#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
72#[repr(u8)]
73pub enum PowerDomainStatus {
74 Disabled = 1,
75 Enabled = 2,
76}
77
78impl PowerDomainStatus {
79 #[inline]
80 pub fn from_primitive(prim: u8) -> Option<Self> {
81 match prim {
82 1 => Some(Self::Disabled),
83 2 => Some(Self::Enabled),
84 _ => None,
85 }
86 }
87
88 #[inline]
89 pub const fn into_primitive(self) -> u8 {
90 self as u8
91 }
92}
93
94#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
95#[repr(u32)]
96pub enum SagElement {
97 ExecutionState = 1,
98 ApplicationActivity = 4,
99}
100
101impl SagElement {
102 #[inline]
103 pub fn from_primitive(prim: u32) -> Option<Self> {
104 match prim {
105 1 => Some(Self::ExecutionState),
106 4 => Some(Self::ApplicationActivity),
107 _ => None,
108 }
109 }
110
111 #[inline]
112 pub const fn into_primitive(self) -> u32 {
113 self as u32
114 }
115}
116
117#[derive(Clone, Debug, PartialEq)]
119pub struct ComponentPowerConfiguration {
120 pub power_elements: Vec<PowerElementConfiguration>,
121}
122
123impl fidl::Persistable for ComponentPowerConfiguration {}
124
125#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
126#[repr(C)]
127pub struct DeviceGetCurrentVoltageRequest {
128 pub index: u32,
129}
130
131impl fidl::Persistable for DeviceGetCurrentVoltageRequest {}
132
133#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
134#[repr(C)]
135pub struct DeviceReadPmicCtrlRegRequest {
136 pub reg_addr: u32,
137}
138
139impl fidl::Persistable for DeviceReadPmicCtrlRegRequest {}
140
141#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
142#[repr(C)]
143pub struct DeviceRegisterPowerDomainRequest {
144 pub min_needed_voltage: u32,
145 pub max_supported_voltage: u32,
146}
147
148impl fidl::Persistable for DeviceRegisterPowerDomainRequest {}
149
150#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
151#[repr(C)]
152pub struct DeviceRequestVoltageRequest {
153 pub voltage: u32,
154}
155
156impl fidl::Persistable for DeviceRequestVoltageRequest {}
157
158#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
159#[repr(C)]
160pub struct DeviceWritePmicCtrlRegRequest {
161 pub reg_addr: u32,
162 pub value: u32,
163}
164
165impl fidl::Persistable for DeviceWritePmicCtrlRegRequest {}
166
167#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
168#[repr(C)]
169pub struct DeviceGetCurrentVoltageResponse {
170 pub current_voltage: u32,
171}
172
173impl fidl::Persistable for DeviceGetCurrentVoltageResponse {}
174
175#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
176pub struct DeviceGetPowerDomainStatusResponse {
177 pub status: PowerDomainStatus,
178}
179
180impl fidl::Persistable for DeviceGetPowerDomainStatusResponse {}
181
182#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
183#[repr(C)]
184pub struct DeviceGetSupportedVoltageRangeResponse {
185 pub min: u32,
186 pub max: u32,
187}
188
189impl fidl::Persistable for DeviceGetSupportedVoltageRangeResponse {}
190
191#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
192#[repr(C)]
193pub struct DeviceReadPmicCtrlRegResponse {
194 pub value: u32,
195}
196
197impl fidl::Persistable for DeviceReadPmicCtrlRegResponse {}
198
199#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
200#[repr(C)]
201pub struct DeviceRequestVoltageResponse {
202 pub actual_voltage: u32,
203}
204
205impl fidl::Persistable for DeviceRequestVoltageResponse {}
206
207#[derive(Clone, Debug, Default, PartialEq)]
209pub struct Domain {
210 pub id: Option<u32>,
213 #[doc(hidden)]
214 pub __source_breaking: fidl::marker::SourceBreaking,
215}
216
217impl fidl::Persistable for Domain {}
218
219#[derive(Clone, Debug, Default, PartialEq)]
221pub struct DomainMetadata {
222 pub domains: Option<Vec<Domain>>,
224 #[doc(hidden)]
225 pub __source_breaking: fidl::marker::SourceBreaking,
226}
227
228impl fidl::Persistable for DomainMetadata {}
229impl fidl::Serializable for DomainMetadata {
230 const SERIALIZABLE_NAME: &'static str = "fuchsia.hardware.power.DomainMetadata";
231}
232
233#[derive(Clone, Debug, Default, PartialEq)]
236pub struct LevelTuple {
237 pub child_level: Option<u8>,
238 pub parent_level: Option<u8>,
239 #[doc(hidden)]
240 pub __source_breaking: fidl::marker::SourceBreaking,
241}
242
243impl fidl::Persistable for LevelTuple {}
244
245#[derive(Clone, Debug, Default, PartialEq)]
252pub struct PowerDependency {
253 pub child: Option<String>,
254 pub parent: Option<ParentElement>,
255 pub level_deps: Option<Vec<LevelTuple>>,
256 #[doc(hidden)]
257 pub __source_breaking: fidl::marker::SourceBreaking,
258}
259
260impl fidl::Persistable for PowerDependency {}
261
262#[derive(Clone, Debug, Default, PartialEq)]
265pub struct PowerElement {
266 pub name: Option<String>,
267 pub levels: Option<Vec<PowerLevel>>,
268 #[doc(hidden)]
269 pub __source_breaking: fidl::marker::SourceBreaking,
270}
271
272impl fidl::Persistable for PowerElement {}
273
274#[derive(Clone, Debug, Default, PartialEq)]
277pub struct PowerElementConfiguration {
278 pub element: Option<PowerElement>,
279 pub dependencies: Option<Vec<PowerDependency>>,
280 #[doc(hidden)]
281 pub __source_breaking: fidl::marker::SourceBreaking,
282}
283
284impl fidl::Persistable for PowerElementConfiguration {}
285
286#[derive(Clone, Debug, Default, PartialEq)]
293pub struct PowerLevel {
294 pub level: Option<u8>,
295 pub name: Option<String>,
296 pub transitions: Option<Vec<Transition>>,
297 #[doc(hidden)]
298 pub __source_breaking: fidl::marker::SourceBreaking,
299}
300
301impl fidl::Persistable for PowerLevel {}
302
303#[derive(Clone, Debug, Default, PartialEq)]
307pub struct Transition {
308 pub target_level: Option<u8>,
309 pub latency_us: Option<u32>,
310 #[doc(hidden)]
311 pub __source_breaking: fidl::marker::SourceBreaking,
312}
313
314impl fidl::Persistable for Transition {}
315
316#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
319pub enum ParentElement {
320 Sag(SagElement),
323 InstanceName(String),
326 CpuControl(CpuPowerElement),
329}
330
331impl ParentElement {
332 #[inline]
333 pub fn ordinal(&self) -> u64 {
334 match *self {
335 Self::Sag(_) => 1,
336 Self::InstanceName(_) => 2,
337 Self::CpuControl(_) => 3,
338 }
339 }
340}
341
342impl fidl::Persistable for ParentElement {}
343
344pub mod device_ordinals {
345 pub const REGISTER_POWER_DOMAIN: u64 = 0x3dde3e7cb91210dc;
346 pub const UNREGISTER_POWER_DOMAIN: u64 = 0x6b1b26f908fd8c69;
347 pub const GET_SUPPORTED_VOLTAGE_RANGE: u64 = 0x6d75897fea248df0;
348 pub const REQUEST_VOLTAGE: u64 = 0x23ca354dfe067e9b;
349 pub const GET_CURRENT_VOLTAGE: u64 = 0x6a9f80a0412da961;
350 pub const GET_POWER_DOMAIN_STATUS: u64 = 0x39fe7f1e3e3c74ba;
351 pub const WRITE_PMIC_CTRL_REG: u64 = 0x340a3483d4740299;
352 pub const READ_PMIC_CTRL_REG: u64 = 0x72eebf304bb82f13;
353}
354
355pub mod power_token_provider_ordinals {
356 pub const GET_TOKEN: u64 = 0x289cd59b7d9f90ca;
357}
358
359mod internal {
360 use super::*;
361 unsafe impl fidl::encoding::TypeMarker for CpuPowerElement {
362 type Owned = Self;
363
364 #[inline(always)]
365 fn inline_align(_context: fidl::encoding::Context) -> usize {
366 std::mem::align_of::<u32>()
367 }
368
369 #[inline(always)]
370 fn inline_size(_context: fidl::encoding::Context) -> usize {
371 std::mem::size_of::<u32>()
372 }
373
374 #[inline(always)]
375 fn encode_is_copy() -> bool {
376 true
377 }
378
379 #[inline(always)]
380 fn decode_is_copy() -> bool {
381 false
382 }
383 }
384
385 impl fidl::encoding::ValueTypeMarker for CpuPowerElement {
386 type Borrowed<'a> = Self;
387 #[inline(always)]
388 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
389 *value
390 }
391 }
392
393 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
394 for CpuPowerElement
395 {
396 #[inline]
397 unsafe fn encode(
398 self,
399 encoder: &mut fidl::encoding::Encoder<'_, D>,
400 offset: usize,
401 _depth: fidl::encoding::Depth,
402 ) -> fidl::Result<()> {
403 encoder.debug_check_bounds::<Self>(offset);
404 encoder.write_num(self.into_primitive(), offset);
405 Ok(())
406 }
407 }
408
409 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CpuPowerElement {
410 #[inline(always)]
411 fn new_empty() -> Self {
412 Self::Cpu
413 }
414
415 #[inline]
416 unsafe fn decode(
417 &mut self,
418 decoder: &mut fidl::encoding::Decoder<'_, D>,
419 offset: usize,
420 _depth: fidl::encoding::Depth,
421 ) -> fidl::Result<()> {
422 decoder.debug_check_bounds::<Self>(offset);
423 let prim = decoder.read_num::<u32>(offset);
424
425 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
426 Ok(())
427 }
428 }
429 unsafe impl fidl::encoding::TypeMarker for FrameworkElementLevels {
430 type Owned = Self;
431
432 #[inline(always)]
433 fn inline_align(_context: fidl::encoding::Context) -> usize {
434 std::mem::align_of::<u32>()
435 }
436
437 #[inline(always)]
438 fn inline_size(_context: fidl::encoding::Context) -> usize {
439 std::mem::size_of::<u32>()
440 }
441
442 #[inline(always)]
443 fn encode_is_copy() -> bool {
444 true
445 }
446
447 #[inline(always)]
448 fn decode_is_copy() -> bool {
449 false
450 }
451 }
452
453 impl fidl::encoding::ValueTypeMarker for FrameworkElementLevels {
454 type Borrowed<'a> = Self;
455 #[inline(always)]
456 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
457 *value
458 }
459 }
460
461 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
462 for FrameworkElementLevels
463 {
464 #[inline]
465 unsafe fn encode(
466 self,
467 encoder: &mut fidl::encoding::Encoder<'_, D>,
468 offset: usize,
469 _depth: fidl::encoding::Depth,
470 ) -> fidl::Result<()> {
471 encoder.debug_check_bounds::<Self>(offset);
472 encoder.write_num(self.into_primitive(), offset);
473 Ok(())
474 }
475 }
476
477 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
478 for FrameworkElementLevels
479 {
480 #[inline(always)]
481 fn new_empty() -> Self {
482 Self::Off
483 }
484
485 #[inline]
486 unsafe fn decode(
487 &mut self,
488 decoder: &mut fidl::encoding::Decoder<'_, D>,
489 offset: usize,
490 _depth: fidl::encoding::Depth,
491 ) -> fidl::Result<()> {
492 decoder.debug_check_bounds::<Self>(offset);
493 let prim = decoder.read_num::<u32>(offset);
494
495 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
496 Ok(())
497 }
498 }
499 unsafe impl fidl::encoding::TypeMarker for PowerDomainStatus {
500 type Owned = Self;
501
502 #[inline(always)]
503 fn inline_align(_context: fidl::encoding::Context) -> usize {
504 std::mem::align_of::<u8>()
505 }
506
507 #[inline(always)]
508 fn inline_size(_context: fidl::encoding::Context) -> usize {
509 std::mem::size_of::<u8>()
510 }
511
512 #[inline(always)]
513 fn encode_is_copy() -> bool {
514 true
515 }
516
517 #[inline(always)]
518 fn decode_is_copy() -> bool {
519 false
520 }
521 }
522
523 impl fidl::encoding::ValueTypeMarker for PowerDomainStatus {
524 type Borrowed<'a> = Self;
525 #[inline(always)]
526 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
527 *value
528 }
529 }
530
531 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
532 for PowerDomainStatus
533 {
534 #[inline]
535 unsafe fn encode(
536 self,
537 encoder: &mut fidl::encoding::Encoder<'_, D>,
538 offset: usize,
539 _depth: fidl::encoding::Depth,
540 ) -> fidl::Result<()> {
541 encoder.debug_check_bounds::<Self>(offset);
542 encoder.write_num(self.into_primitive(), offset);
543 Ok(())
544 }
545 }
546
547 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PowerDomainStatus {
548 #[inline(always)]
549 fn new_empty() -> Self {
550 Self::Disabled
551 }
552
553 #[inline]
554 unsafe fn decode(
555 &mut self,
556 decoder: &mut fidl::encoding::Decoder<'_, D>,
557 offset: usize,
558 _depth: fidl::encoding::Depth,
559 ) -> fidl::Result<()> {
560 decoder.debug_check_bounds::<Self>(offset);
561 let prim = decoder.read_num::<u8>(offset);
562
563 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
564 Ok(())
565 }
566 }
567 unsafe impl fidl::encoding::TypeMarker for SagElement {
568 type Owned = Self;
569
570 #[inline(always)]
571 fn inline_align(_context: fidl::encoding::Context) -> usize {
572 std::mem::align_of::<u32>()
573 }
574
575 #[inline(always)]
576 fn inline_size(_context: fidl::encoding::Context) -> usize {
577 std::mem::size_of::<u32>()
578 }
579
580 #[inline(always)]
581 fn encode_is_copy() -> bool {
582 true
583 }
584
585 #[inline(always)]
586 fn decode_is_copy() -> bool {
587 false
588 }
589 }
590
591 impl fidl::encoding::ValueTypeMarker for SagElement {
592 type Borrowed<'a> = Self;
593 #[inline(always)]
594 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
595 *value
596 }
597 }
598
599 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for SagElement {
600 #[inline]
601 unsafe fn encode(
602 self,
603 encoder: &mut fidl::encoding::Encoder<'_, D>,
604 offset: usize,
605 _depth: fidl::encoding::Depth,
606 ) -> fidl::Result<()> {
607 encoder.debug_check_bounds::<Self>(offset);
608 encoder.write_num(self.into_primitive(), offset);
609 Ok(())
610 }
611 }
612
613 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SagElement {
614 #[inline(always)]
615 fn new_empty() -> Self {
616 Self::ExecutionState
617 }
618
619 #[inline]
620 unsafe fn decode(
621 &mut self,
622 decoder: &mut fidl::encoding::Decoder<'_, D>,
623 offset: usize,
624 _depth: fidl::encoding::Depth,
625 ) -> fidl::Result<()> {
626 decoder.debug_check_bounds::<Self>(offset);
627 let prim = decoder.read_num::<u32>(offset);
628
629 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
630 Ok(())
631 }
632 }
633
634 impl fidl::encoding::ValueTypeMarker for ComponentPowerConfiguration {
635 type Borrowed<'a> = &'a Self;
636 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
637 value
638 }
639 }
640
641 unsafe impl fidl::encoding::TypeMarker for ComponentPowerConfiguration {
642 type Owned = Self;
643
644 #[inline(always)]
645 fn inline_align(_context: fidl::encoding::Context) -> usize {
646 8
647 }
648
649 #[inline(always)]
650 fn inline_size(_context: fidl::encoding::Context) -> usize {
651 16
652 }
653 }
654
655 unsafe impl<D: fidl::encoding::ResourceDialect>
656 fidl::encoding::Encode<ComponentPowerConfiguration, D> for &ComponentPowerConfiguration
657 {
658 #[inline]
659 unsafe fn encode(
660 self,
661 encoder: &mut fidl::encoding::Encoder<'_, D>,
662 offset: usize,
663 _depth: fidl::encoding::Depth,
664 ) -> fidl::Result<()> {
665 encoder.debug_check_bounds::<ComponentPowerConfiguration>(offset);
666 fidl::encoding::Encode::<ComponentPowerConfiguration, D>::encode(
668 (
669 <fidl::encoding::Vector<PowerElementConfiguration, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.power_elements),
670 ),
671 encoder, offset, _depth
672 )
673 }
674 }
675 unsafe impl<
676 D: fidl::encoding::ResourceDialect,
677 T0: fidl::encoding::Encode<fidl::encoding::Vector<PowerElementConfiguration, 32>, D>,
678 > fidl::encoding::Encode<ComponentPowerConfiguration, D> for (T0,)
679 {
680 #[inline]
681 unsafe fn encode(
682 self,
683 encoder: &mut fidl::encoding::Encoder<'_, D>,
684 offset: usize,
685 depth: fidl::encoding::Depth,
686 ) -> fidl::Result<()> {
687 encoder.debug_check_bounds::<ComponentPowerConfiguration>(offset);
688 self.0.encode(encoder, offset + 0, depth)?;
692 Ok(())
693 }
694 }
695
696 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
697 for ComponentPowerConfiguration
698 {
699 #[inline(always)]
700 fn new_empty() -> Self {
701 Self {
702 power_elements: fidl::new_empty!(fidl::encoding::Vector<PowerElementConfiguration, 32>, D),
703 }
704 }
705
706 #[inline]
707 unsafe fn decode(
708 &mut self,
709 decoder: &mut fidl::encoding::Decoder<'_, D>,
710 offset: usize,
711 _depth: fidl::encoding::Depth,
712 ) -> fidl::Result<()> {
713 decoder.debug_check_bounds::<Self>(offset);
714 fidl::decode!(fidl::encoding::Vector<PowerElementConfiguration, 32>, D, &mut self.power_elements, decoder, offset + 0, _depth)?;
716 Ok(())
717 }
718 }
719
720 impl fidl::encoding::ValueTypeMarker for DeviceGetCurrentVoltageRequest {
721 type Borrowed<'a> = &'a Self;
722 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
723 value
724 }
725 }
726
727 unsafe impl fidl::encoding::TypeMarker for DeviceGetCurrentVoltageRequest {
728 type Owned = Self;
729
730 #[inline(always)]
731 fn inline_align(_context: fidl::encoding::Context) -> usize {
732 4
733 }
734
735 #[inline(always)]
736 fn inline_size(_context: fidl::encoding::Context) -> usize {
737 4
738 }
739 #[inline(always)]
740 fn encode_is_copy() -> bool {
741 true
742 }
743
744 #[inline(always)]
745 fn decode_is_copy() -> bool {
746 true
747 }
748 }
749
750 unsafe impl<D: fidl::encoding::ResourceDialect>
751 fidl::encoding::Encode<DeviceGetCurrentVoltageRequest, D>
752 for &DeviceGetCurrentVoltageRequest
753 {
754 #[inline]
755 unsafe fn encode(
756 self,
757 encoder: &mut fidl::encoding::Encoder<'_, D>,
758 offset: usize,
759 _depth: fidl::encoding::Depth,
760 ) -> fidl::Result<()> {
761 encoder.debug_check_bounds::<DeviceGetCurrentVoltageRequest>(offset);
762 unsafe {
763 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
765 (buf_ptr as *mut DeviceGetCurrentVoltageRequest)
766 .write_unaligned((self as *const DeviceGetCurrentVoltageRequest).read());
767 }
770 Ok(())
771 }
772 }
773 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u32, D>>
774 fidl::encoding::Encode<DeviceGetCurrentVoltageRequest, D> for (T0,)
775 {
776 #[inline]
777 unsafe fn encode(
778 self,
779 encoder: &mut fidl::encoding::Encoder<'_, D>,
780 offset: usize,
781 depth: fidl::encoding::Depth,
782 ) -> fidl::Result<()> {
783 encoder.debug_check_bounds::<DeviceGetCurrentVoltageRequest>(offset);
784 self.0.encode(encoder, offset + 0, depth)?;
788 Ok(())
789 }
790 }
791
792 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
793 for DeviceGetCurrentVoltageRequest
794 {
795 #[inline(always)]
796 fn new_empty() -> Self {
797 Self { index: fidl::new_empty!(u32, D) }
798 }
799
800 #[inline]
801 unsafe fn decode(
802 &mut self,
803 decoder: &mut fidl::encoding::Decoder<'_, D>,
804 offset: usize,
805 _depth: fidl::encoding::Depth,
806 ) -> fidl::Result<()> {
807 decoder.debug_check_bounds::<Self>(offset);
808 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
809 unsafe {
812 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
813 }
814 Ok(())
815 }
816 }
817
818 impl fidl::encoding::ValueTypeMarker for DeviceReadPmicCtrlRegRequest {
819 type Borrowed<'a> = &'a Self;
820 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
821 value
822 }
823 }
824
825 unsafe impl fidl::encoding::TypeMarker for DeviceReadPmicCtrlRegRequest {
826 type Owned = Self;
827
828 #[inline(always)]
829 fn inline_align(_context: fidl::encoding::Context) -> usize {
830 4
831 }
832
833 #[inline(always)]
834 fn inline_size(_context: fidl::encoding::Context) -> usize {
835 4
836 }
837 #[inline(always)]
838 fn encode_is_copy() -> bool {
839 true
840 }
841
842 #[inline(always)]
843 fn decode_is_copy() -> bool {
844 true
845 }
846 }
847
848 unsafe impl<D: fidl::encoding::ResourceDialect>
849 fidl::encoding::Encode<DeviceReadPmicCtrlRegRequest, D> for &DeviceReadPmicCtrlRegRequest
850 {
851 #[inline]
852 unsafe fn encode(
853 self,
854 encoder: &mut fidl::encoding::Encoder<'_, D>,
855 offset: usize,
856 _depth: fidl::encoding::Depth,
857 ) -> fidl::Result<()> {
858 encoder.debug_check_bounds::<DeviceReadPmicCtrlRegRequest>(offset);
859 unsafe {
860 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
862 (buf_ptr as *mut DeviceReadPmicCtrlRegRequest)
863 .write_unaligned((self as *const DeviceReadPmicCtrlRegRequest).read());
864 }
867 Ok(())
868 }
869 }
870 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u32, D>>
871 fidl::encoding::Encode<DeviceReadPmicCtrlRegRequest, D> for (T0,)
872 {
873 #[inline]
874 unsafe fn encode(
875 self,
876 encoder: &mut fidl::encoding::Encoder<'_, D>,
877 offset: usize,
878 depth: fidl::encoding::Depth,
879 ) -> fidl::Result<()> {
880 encoder.debug_check_bounds::<DeviceReadPmicCtrlRegRequest>(offset);
881 self.0.encode(encoder, offset + 0, depth)?;
885 Ok(())
886 }
887 }
888
889 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
890 for DeviceReadPmicCtrlRegRequest
891 {
892 #[inline(always)]
893 fn new_empty() -> Self {
894 Self { reg_addr: fidl::new_empty!(u32, D) }
895 }
896
897 #[inline]
898 unsafe fn decode(
899 &mut self,
900 decoder: &mut fidl::encoding::Decoder<'_, D>,
901 offset: usize,
902 _depth: fidl::encoding::Depth,
903 ) -> fidl::Result<()> {
904 decoder.debug_check_bounds::<Self>(offset);
905 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
906 unsafe {
909 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
910 }
911 Ok(())
912 }
913 }
914
915 impl fidl::encoding::ValueTypeMarker for DeviceRegisterPowerDomainRequest {
916 type Borrowed<'a> = &'a Self;
917 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
918 value
919 }
920 }
921
922 unsafe impl fidl::encoding::TypeMarker for DeviceRegisterPowerDomainRequest {
923 type Owned = Self;
924
925 #[inline(always)]
926 fn inline_align(_context: fidl::encoding::Context) -> usize {
927 4
928 }
929
930 #[inline(always)]
931 fn inline_size(_context: fidl::encoding::Context) -> usize {
932 8
933 }
934 #[inline(always)]
935 fn encode_is_copy() -> bool {
936 true
937 }
938
939 #[inline(always)]
940 fn decode_is_copy() -> bool {
941 true
942 }
943 }
944
945 unsafe impl<D: fidl::encoding::ResourceDialect>
946 fidl::encoding::Encode<DeviceRegisterPowerDomainRequest, D>
947 for &DeviceRegisterPowerDomainRequest
948 {
949 #[inline]
950 unsafe fn encode(
951 self,
952 encoder: &mut fidl::encoding::Encoder<'_, D>,
953 offset: usize,
954 _depth: fidl::encoding::Depth,
955 ) -> fidl::Result<()> {
956 encoder.debug_check_bounds::<DeviceRegisterPowerDomainRequest>(offset);
957 unsafe {
958 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
960 (buf_ptr as *mut DeviceRegisterPowerDomainRequest)
961 .write_unaligned((self as *const DeviceRegisterPowerDomainRequest).read());
962 }
965 Ok(())
966 }
967 }
968 unsafe impl<
969 D: fidl::encoding::ResourceDialect,
970 T0: fidl::encoding::Encode<u32, D>,
971 T1: fidl::encoding::Encode<u32, D>,
972 > fidl::encoding::Encode<DeviceRegisterPowerDomainRequest, D> for (T0, T1)
973 {
974 #[inline]
975 unsafe fn encode(
976 self,
977 encoder: &mut fidl::encoding::Encoder<'_, D>,
978 offset: usize,
979 depth: fidl::encoding::Depth,
980 ) -> fidl::Result<()> {
981 encoder.debug_check_bounds::<DeviceRegisterPowerDomainRequest>(offset);
982 self.0.encode(encoder, offset + 0, depth)?;
986 self.1.encode(encoder, offset + 4, depth)?;
987 Ok(())
988 }
989 }
990
991 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
992 for DeviceRegisterPowerDomainRequest
993 {
994 #[inline(always)]
995 fn new_empty() -> Self {
996 Self {
997 min_needed_voltage: fidl::new_empty!(u32, D),
998 max_supported_voltage: fidl::new_empty!(u32, D),
999 }
1000 }
1001
1002 #[inline]
1003 unsafe fn decode(
1004 &mut self,
1005 decoder: &mut fidl::encoding::Decoder<'_, D>,
1006 offset: usize,
1007 _depth: fidl::encoding::Depth,
1008 ) -> fidl::Result<()> {
1009 decoder.debug_check_bounds::<Self>(offset);
1010 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1011 unsafe {
1014 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
1015 }
1016 Ok(())
1017 }
1018 }
1019
1020 impl fidl::encoding::ValueTypeMarker for DeviceRequestVoltageRequest {
1021 type Borrowed<'a> = &'a Self;
1022 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1023 value
1024 }
1025 }
1026
1027 unsafe impl fidl::encoding::TypeMarker for DeviceRequestVoltageRequest {
1028 type Owned = Self;
1029
1030 #[inline(always)]
1031 fn inline_align(_context: fidl::encoding::Context) -> usize {
1032 4
1033 }
1034
1035 #[inline(always)]
1036 fn inline_size(_context: fidl::encoding::Context) -> usize {
1037 4
1038 }
1039 #[inline(always)]
1040 fn encode_is_copy() -> bool {
1041 true
1042 }
1043
1044 #[inline(always)]
1045 fn decode_is_copy() -> bool {
1046 true
1047 }
1048 }
1049
1050 unsafe impl<D: fidl::encoding::ResourceDialect>
1051 fidl::encoding::Encode<DeviceRequestVoltageRequest, D> for &DeviceRequestVoltageRequest
1052 {
1053 #[inline]
1054 unsafe fn encode(
1055 self,
1056 encoder: &mut fidl::encoding::Encoder<'_, D>,
1057 offset: usize,
1058 _depth: fidl::encoding::Depth,
1059 ) -> fidl::Result<()> {
1060 encoder.debug_check_bounds::<DeviceRequestVoltageRequest>(offset);
1061 unsafe {
1062 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1064 (buf_ptr as *mut DeviceRequestVoltageRequest)
1065 .write_unaligned((self as *const DeviceRequestVoltageRequest).read());
1066 }
1069 Ok(())
1070 }
1071 }
1072 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u32, D>>
1073 fidl::encoding::Encode<DeviceRequestVoltageRequest, D> for (T0,)
1074 {
1075 #[inline]
1076 unsafe fn encode(
1077 self,
1078 encoder: &mut fidl::encoding::Encoder<'_, D>,
1079 offset: usize,
1080 depth: fidl::encoding::Depth,
1081 ) -> fidl::Result<()> {
1082 encoder.debug_check_bounds::<DeviceRequestVoltageRequest>(offset);
1083 self.0.encode(encoder, offset + 0, depth)?;
1087 Ok(())
1088 }
1089 }
1090
1091 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1092 for DeviceRequestVoltageRequest
1093 {
1094 #[inline(always)]
1095 fn new_empty() -> Self {
1096 Self { voltage: fidl::new_empty!(u32, D) }
1097 }
1098
1099 #[inline]
1100 unsafe fn decode(
1101 &mut self,
1102 decoder: &mut fidl::encoding::Decoder<'_, D>,
1103 offset: usize,
1104 _depth: fidl::encoding::Depth,
1105 ) -> fidl::Result<()> {
1106 decoder.debug_check_bounds::<Self>(offset);
1107 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1108 unsafe {
1111 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
1112 }
1113 Ok(())
1114 }
1115 }
1116
1117 impl fidl::encoding::ValueTypeMarker for DeviceWritePmicCtrlRegRequest {
1118 type Borrowed<'a> = &'a Self;
1119 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1120 value
1121 }
1122 }
1123
1124 unsafe impl fidl::encoding::TypeMarker for DeviceWritePmicCtrlRegRequest {
1125 type Owned = Self;
1126
1127 #[inline(always)]
1128 fn inline_align(_context: fidl::encoding::Context) -> usize {
1129 4
1130 }
1131
1132 #[inline(always)]
1133 fn inline_size(_context: fidl::encoding::Context) -> usize {
1134 8
1135 }
1136 #[inline(always)]
1137 fn encode_is_copy() -> bool {
1138 true
1139 }
1140
1141 #[inline(always)]
1142 fn decode_is_copy() -> bool {
1143 true
1144 }
1145 }
1146
1147 unsafe impl<D: fidl::encoding::ResourceDialect>
1148 fidl::encoding::Encode<DeviceWritePmicCtrlRegRequest, D>
1149 for &DeviceWritePmicCtrlRegRequest
1150 {
1151 #[inline]
1152 unsafe fn encode(
1153 self,
1154 encoder: &mut fidl::encoding::Encoder<'_, D>,
1155 offset: usize,
1156 _depth: fidl::encoding::Depth,
1157 ) -> fidl::Result<()> {
1158 encoder.debug_check_bounds::<DeviceWritePmicCtrlRegRequest>(offset);
1159 unsafe {
1160 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1162 (buf_ptr as *mut DeviceWritePmicCtrlRegRequest)
1163 .write_unaligned((self as *const DeviceWritePmicCtrlRegRequest).read());
1164 }
1167 Ok(())
1168 }
1169 }
1170 unsafe impl<
1171 D: fidl::encoding::ResourceDialect,
1172 T0: fidl::encoding::Encode<u32, D>,
1173 T1: fidl::encoding::Encode<u32, D>,
1174 > fidl::encoding::Encode<DeviceWritePmicCtrlRegRequest, D> for (T0, T1)
1175 {
1176 #[inline]
1177 unsafe fn encode(
1178 self,
1179 encoder: &mut fidl::encoding::Encoder<'_, D>,
1180 offset: usize,
1181 depth: fidl::encoding::Depth,
1182 ) -> fidl::Result<()> {
1183 encoder.debug_check_bounds::<DeviceWritePmicCtrlRegRequest>(offset);
1184 self.0.encode(encoder, offset + 0, depth)?;
1188 self.1.encode(encoder, offset + 4, depth)?;
1189 Ok(())
1190 }
1191 }
1192
1193 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1194 for DeviceWritePmicCtrlRegRequest
1195 {
1196 #[inline(always)]
1197 fn new_empty() -> Self {
1198 Self { reg_addr: fidl::new_empty!(u32, D), value: fidl::new_empty!(u32, D) }
1199 }
1200
1201 #[inline]
1202 unsafe fn decode(
1203 &mut self,
1204 decoder: &mut fidl::encoding::Decoder<'_, D>,
1205 offset: usize,
1206 _depth: fidl::encoding::Depth,
1207 ) -> fidl::Result<()> {
1208 decoder.debug_check_bounds::<Self>(offset);
1209 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1210 unsafe {
1213 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
1214 }
1215 Ok(())
1216 }
1217 }
1218
1219 impl fidl::encoding::ValueTypeMarker for DeviceGetCurrentVoltageResponse {
1220 type Borrowed<'a> = &'a Self;
1221 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1222 value
1223 }
1224 }
1225
1226 unsafe impl fidl::encoding::TypeMarker for DeviceGetCurrentVoltageResponse {
1227 type Owned = Self;
1228
1229 #[inline(always)]
1230 fn inline_align(_context: fidl::encoding::Context) -> usize {
1231 4
1232 }
1233
1234 #[inline(always)]
1235 fn inline_size(_context: fidl::encoding::Context) -> usize {
1236 4
1237 }
1238 #[inline(always)]
1239 fn encode_is_copy() -> bool {
1240 true
1241 }
1242
1243 #[inline(always)]
1244 fn decode_is_copy() -> bool {
1245 true
1246 }
1247 }
1248
1249 unsafe impl<D: fidl::encoding::ResourceDialect>
1250 fidl::encoding::Encode<DeviceGetCurrentVoltageResponse, D>
1251 for &DeviceGetCurrentVoltageResponse
1252 {
1253 #[inline]
1254 unsafe fn encode(
1255 self,
1256 encoder: &mut fidl::encoding::Encoder<'_, D>,
1257 offset: usize,
1258 _depth: fidl::encoding::Depth,
1259 ) -> fidl::Result<()> {
1260 encoder.debug_check_bounds::<DeviceGetCurrentVoltageResponse>(offset);
1261 unsafe {
1262 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1264 (buf_ptr as *mut DeviceGetCurrentVoltageResponse)
1265 .write_unaligned((self as *const DeviceGetCurrentVoltageResponse).read());
1266 }
1269 Ok(())
1270 }
1271 }
1272 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u32, D>>
1273 fidl::encoding::Encode<DeviceGetCurrentVoltageResponse, D> for (T0,)
1274 {
1275 #[inline]
1276 unsafe fn encode(
1277 self,
1278 encoder: &mut fidl::encoding::Encoder<'_, D>,
1279 offset: usize,
1280 depth: fidl::encoding::Depth,
1281 ) -> fidl::Result<()> {
1282 encoder.debug_check_bounds::<DeviceGetCurrentVoltageResponse>(offset);
1283 self.0.encode(encoder, offset + 0, depth)?;
1287 Ok(())
1288 }
1289 }
1290
1291 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1292 for DeviceGetCurrentVoltageResponse
1293 {
1294 #[inline(always)]
1295 fn new_empty() -> Self {
1296 Self { current_voltage: fidl::new_empty!(u32, D) }
1297 }
1298
1299 #[inline]
1300 unsafe fn decode(
1301 &mut self,
1302 decoder: &mut fidl::encoding::Decoder<'_, D>,
1303 offset: usize,
1304 _depth: fidl::encoding::Depth,
1305 ) -> fidl::Result<()> {
1306 decoder.debug_check_bounds::<Self>(offset);
1307 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1308 unsafe {
1311 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
1312 }
1313 Ok(())
1314 }
1315 }
1316
1317 impl fidl::encoding::ValueTypeMarker for DeviceGetPowerDomainStatusResponse {
1318 type Borrowed<'a> = &'a Self;
1319 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1320 value
1321 }
1322 }
1323
1324 unsafe impl fidl::encoding::TypeMarker for DeviceGetPowerDomainStatusResponse {
1325 type Owned = Self;
1326
1327 #[inline(always)]
1328 fn inline_align(_context: fidl::encoding::Context) -> usize {
1329 1
1330 }
1331
1332 #[inline(always)]
1333 fn inline_size(_context: fidl::encoding::Context) -> usize {
1334 1
1335 }
1336 }
1337
1338 unsafe impl<D: fidl::encoding::ResourceDialect>
1339 fidl::encoding::Encode<DeviceGetPowerDomainStatusResponse, D>
1340 for &DeviceGetPowerDomainStatusResponse
1341 {
1342 #[inline]
1343 unsafe fn encode(
1344 self,
1345 encoder: &mut fidl::encoding::Encoder<'_, D>,
1346 offset: usize,
1347 _depth: fidl::encoding::Depth,
1348 ) -> fidl::Result<()> {
1349 encoder.debug_check_bounds::<DeviceGetPowerDomainStatusResponse>(offset);
1350 fidl::encoding::Encode::<DeviceGetPowerDomainStatusResponse, D>::encode(
1352 (<PowerDomainStatus as fidl::encoding::ValueTypeMarker>::borrow(&self.status),),
1353 encoder,
1354 offset,
1355 _depth,
1356 )
1357 }
1358 }
1359 unsafe impl<
1360 D: fidl::encoding::ResourceDialect,
1361 T0: fidl::encoding::Encode<PowerDomainStatus, D>,
1362 > fidl::encoding::Encode<DeviceGetPowerDomainStatusResponse, D> for (T0,)
1363 {
1364 #[inline]
1365 unsafe fn encode(
1366 self,
1367 encoder: &mut fidl::encoding::Encoder<'_, D>,
1368 offset: usize,
1369 depth: fidl::encoding::Depth,
1370 ) -> fidl::Result<()> {
1371 encoder.debug_check_bounds::<DeviceGetPowerDomainStatusResponse>(offset);
1372 self.0.encode(encoder, offset + 0, depth)?;
1376 Ok(())
1377 }
1378 }
1379
1380 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1381 for DeviceGetPowerDomainStatusResponse
1382 {
1383 #[inline(always)]
1384 fn new_empty() -> Self {
1385 Self { status: fidl::new_empty!(PowerDomainStatus, D) }
1386 }
1387
1388 #[inline]
1389 unsafe fn decode(
1390 &mut self,
1391 decoder: &mut fidl::encoding::Decoder<'_, D>,
1392 offset: usize,
1393 _depth: fidl::encoding::Depth,
1394 ) -> fidl::Result<()> {
1395 decoder.debug_check_bounds::<Self>(offset);
1396 fidl::decode!(PowerDomainStatus, D, &mut self.status, decoder, offset + 0, _depth)?;
1398 Ok(())
1399 }
1400 }
1401
1402 impl fidl::encoding::ValueTypeMarker for DeviceGetSupportedVoltageRangeResponse {
1403 type Borrowed<'a> = &'a Self;
1404 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1405 value
1406 }
1407 }
1408
1409 unsafe impl fidl::encoding::TypeMarker for DeviceGetSupportedVoltageRangeResponse {
1410 type Owned = Self;
1411
1412 #[inline(always)]
1413 fn inline_align(_context: fidl::encoding::Context) -> usize {
1414 4
1415 }
1416
1417 #[inline(always)]
1418 fn inline_size(_context: fidl::encoding::Context) -> usize {
1419 8
1420 }
1421 #[inline(always)]
1422 fn encode_is_copy() -> bool {
1423 true
1424 }
1425
1426 #[inline(always)]
1427 fn decode_is_copy() -> bool {
1428 true
1429 }
1430 }
1431
1432 unsafe impl<D: fidl::encoding::ResourceDialect>
1433 fidl::encoding::Encode<DeviceGetSupportedVoltageRangeResponse, D>
1434 for &DeviceGetSupportedVoltageRangeResponse
1435 {
1436 #[inline]
1437 unsafe fn encode(
1438 self,
1439 encoder: &mut fidl::encoding::Encoder<'_, D>,
1440 offset: usize,
1441 _depth: fidl::encoding::Depth,
1442 ) -> fidl::Result<()> {
1443 encoder.debug_check_bounds::<DeviceGetSupportedVoltageRangeResponse>(offset);
1444 unsafe {
1445 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1447 (buf_ptr as *mut DeviceGetSupportedVoltageRangeResponse).write_unaligned(
1448 (self as *const DeviceGetSupportedVoltageRangeResponse).read(),
1449 );
1450 }
1453 Ok(())
1454 }
1455 }
1456 unsafe impl<
1457 D: fidl::encoding::ResourceDialect,
1458 T0: fidl::encoding::Encode<u32, D>,
1459 T1: fidl::encoding::Encode<u32, D>,
1460 > fidl::encoding::Encode<DeviceGetSupportedVoltageRangeResponse, D> for (T0, T1)
1461 {
1462 #[inline]
1463 unsafe fn encode(
1464 self,
1465 encoder: &mut fidl::encoding::Encoder<'_, D>,
1466 offset: usize,
1467 depth: fidl::encoding::Depth,
1468 ) -> fidl::Result<()> {
1469 encoder.debug_check_bounds::<DeviceGetSupportedVoltageRangeResponse>(offset);
1470 self.0.encode(encoder, offset + 0, depth)?;
1474 self.1.encode(encoder, offset + 4, depth)?;
1475 Ok(())
1476 }
1477 }
1478
1479 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1480 for DeviceGetSupportedVoltageRangeResponse
1481 {
1482 #[inline(always)]
1483 fn new_empty() -> Self {
1484 Self { min: fidl::new_empty!(u32, D), max: fidl::new_empty!(u32, D) }
1485 }
1486
1487 #[inline]
1488 unsafe fn decode(
1489 &mut self,
1490 decoder: &mut fidl::encoding::Decoder<'_, D>,
1491 offset: usize,
1492 _depth: fidl::encoding::Depth,
1493 ) -> fidl::Result<()> {
1494 decoder.debug_check_bounds::<Self>(offset);
1495 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1496 unsafe {
1499 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
1500 }
1501 Ok(())
1502 }
1503 }
1504
1505 impl fidl::encoding::ValueTypeMarker for DeviceReadPmicCtrlRegResponse {
1506 type Borrowed<'a> = &'a Self;
1507 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1508 value
1509 }
1510 }
1511
1512 unsafe impl fidl::encoding::TypeMarker for DeviceReadPmicCtrlRegResponse {
1513 type Owned = Self;
1514
1515 #[inline(always)]
1516 fn inline_align(_context: fidl::encoding::Context) -> usize {
1517 4
1518 }
1519
1520 #[inline(always)]
1521 fn inline_size(_context: fidl::encoding::Context) -> usize {
1522 4
1523 }
1524 #[inline(always)]
1525 fn encode_is_copy() -> bool {
1526 true
1527 }
1528
1529 #[inline(always)]
1530 fn decode_is_copy() -> bool {
1531 true
1532 }
1533 }
1534
1535 unsafe impl<D: fidl::encoding::ResourceDialect>
1536 fidl::encoding::Encode<DeviceReadPmicCtrlRegResponse, D>
1537 for &DeviceReadPmicCtrlRegResponse
1538 {
1539 #[inline]
1540 unsafe fn encode(
1541 self,
1542 encoder: &mut fidl::encoding::Encoder<'_, D>,
1543 offset: usize,
1544 _depth: fidl::encoding::Depth,
1545 ) -> fidl::Result<()> {
1546 encoder.debug_check_bounds::<DeviceReadPmicCtrlRegResponse>(offset);
1547 unsafe {
1548 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1550 (buf_ptr as *mut DeviceReadPmicCtrlRegResponse)
1551 .write_unaligned((self as *const DeviceReadPmicCtrlRegResponse).read());
1552 }
1555 Ok(())
1556 }
1557 }
1558 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u32, D>>
1559 fidl::encoding::Encode<DeviceReadPmicCtrlRegResponse, D> for (T0,)
1560 {
1561 #[inline]
1562 unsafe fn encode(
1563 self,
1564 encoder: &mut fidl::encoding::Encoder<'_, D>,
1565 offset: usize,
1566 depth: fidl::encoding::Depth,
1567 ) -> fidl::Result<()> {
1568 encoder.debug_check_bounds::<DeviceReadPmicCtrlRegResponse>(offset);
1569 self.0.encode(encoder, offset + 0, depth)?;
1573 Ok(())
1574 }
1575 }
1576
1577 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1578 for DeviceReadPmicCtrlRegResponse
1579 {
1580 #[inline(always)]
1581 fn new_empty() -> Self {
1582 Self { value: fidl::new_empty!(u32, D) }
1583 }
1584
1585 #[inline]
1586 unsafe fn decode(
1587 &mut self,
1588 decoder: &mut fidl::encoding::Decoder<'_, D>,
1589 offset: usize,
1590 _depth: fidl::encoding::Depth,
1591 ) -> fidl::Result<()> {
1592 decoder.debug_check_bounds::<Self>(offset);
1593 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1594 unsafe {
1597 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
1598 }
1599 Ok(())
1600 }
1601 }
1602
1603 impl fidl::encoding::ValueTypeMarker for DeviceRequestVoltageResponse {
1604 type Borrowed<'a> = &'a Self;
1605 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1606 value
1607 }
1608 }
1609
1610 unsafe impl fidl::encoding::TypeMarker for DeviceRequestVoltageResponse {
1611 type Owned = Self;
1612
1613 #[inline(always)]
1614 fn inline_align(_context: fidl::encoding::Context) -> usize {
1615 4
1616 }
1617
1618 #[inline(always)]
1619 fn inline_size(_context: fidl::encoding::Context) -> usize {
1620 4
1621 }
1622 #[inline(always)]
1623 fn encode_is_copy() -> bool {
1624 true
1625 }
1626
1627 #[inline(always)]
1628 fn decode_is_copy() -> bool {
1629 true
1630 }
1631 }
1632
1633 unsafe impl<D: fidl::encoding::ResourceDialect>
1634 fidl::encoding::Encode<DeviceRequestVoltageResponse, D> for &DeviceRequestVoltageResponse
1635 {
1636 #[inline]
1637 unsafe fn encode(
1638 self,
1639 encoder: &mut fidl::encoding::Encoder<'_, D>,
1640 offset: usize,
1641 _depth: fidl::encoding::Depth,
1642 ) -> fidl::Result<()> {
1643 encoder.debug_check_bounds::<DeviceRequestVoltageResponse>(offset);
1644 unsafe {
1645 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1647 (buf_ptr as *mut DeviceRequestVoltageResponse)
1648 .write_unaligned((self as *const DeviceRequestVoltageResponse).read());
1649 }
1652 Ok(())
1653 }
1654 }
1655 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u32, D>>
1656 fidl::encoding::Encode<DeviceRequestVoltageResponse, D> for (T0,)
1657 {
1658 #[inline]
1659 unsafe fn encode(
1660 self,
1661 encoder: &mut fidl::encoding::Encoder<'_, D>,
1662 offset: usize,
1663 depth: fidl::encoding::Depth,
1664 ) -> fidl::Result<()> {
1665 encoder.debug_check_bounds::<DeviceRequestVoltageResponse>(offset);
1666 self.0.encode(encoder, offset + 0, depth)?;
1670 Ok(())
1671 }
1672 }
1673
1674 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1675 for DeviceRequestVoltageResponse
1676 {
1677 #[inline(always)]
1678 fn new_empty() -> Self {
1679 Self { actual_voltage: fidl::new_empty!(u32, D) }
1680 }
1681
1682 #[inline]
1683 unsafe fn decode(
1684 &mut self,
1685 decoder: &mut fidl::encoding::Decoder<'_, D>,
1686 offset: usize,
1687 _depth: fidl::encoding::Depth,
1688 ) -> fidl::Result<()> {
1689 decoder.debug_check_bounds::<Self>(offset);
1690 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1691 unsafe {
1694 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
1695 }
1696 Ok(())
1697 }
1698 }
1699
1700 impl Domain {
1701 #[inline(always)]
1702 fn max_ordinal_present(&self) -> u64 {
1703 if let Some(_) = self.id {
1704 return 1;
1705 }
1706 0
1707 }
1708 }
1709
1710 impl fidl::encoding::ValueTypeMarker for Domain {
1711 type Borrowed<'a> = &'a Self;
1712 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1713 value
1714 }
1715 }
1716
1717 unsafe impl fidl::encoding::TypeMarker for Domain {
1718 type Owned = Self;
1719
1720 #[inline(always)]
1721 fn inline_align(_context: fidl::encoding::Context) -> usize {
1722 8
1723 }
1724
1725 #[inline(always)]
1726 fn inline_size(_context: fidl::encoding::Context) -> usize {
1727 16
1728 }
1729 }
1730
1731 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Domain, D> for &Domain {
1732 unsafe fn encode(
1733 self,
1734 encoder: &mut fidl::encoding::Encoder<'_, D>,
1735 offset: usize,
1736 mut depth: fidl::encoding::Depth,
1737 ) -> fidl::Result<()> {
1738 encoder.debug_check_bounds::<Domain>(offset);
1739 let max_ordinal: u64 = self.max_ordinal_present();
1741 encoder.write_num(max_ordinal, offset);
1742 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1743 if max_ordinal == 0 {
1745 return Ok(());
1746 }
1747 depth.increment()?;
1748 let envelope_size = 8;
1749 let bytes_len = max_ordinal as usize * envelope_size;
1750 #[allow(unused_variables)]
1751 let offset = encoder.out_of_line_offset(bytes_len);
1752 let mut _prev_end_offset: usize = 0;
1753 if 1 > max_ordinal {
1754 return Ok(());
1755 }
1756
1757 let cur_offset: usize = (1 - 1) * envelope_size;
1760
1761 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1763
1764 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1769 self.id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1770 encoder,
1771 offset + cur_offset,
1772 depth,
1773 )?;
1774
1775 _prev_end_offset = cur_offset + envelope_size;
1776
1777 Ok(())
1778 }
1779 }
1780
1781 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Domain {
1782 #[inline(always)]
1783 fn new_empty() -> Self {
1784 Self::default()
1785 }
1786
1787 unsafe fn decode(
1788 &mut self,
1789 decoder: &mut fidl::encoding::Decoder<'_, D>,
1790 offset: usize,
1791 mut depth: fidl::encoding::Depth,
1792 ) -> fidl::Result<()> {
1793 decoder.debug_check_bounds::<Self>(offset);
1794 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1795 None => return Err(fidl::Error::NotNullable),
1796 Some(len) => len,
1797 };
1798 if len == 0 {
1800 return Ok(());
1801 };
1802 depth.increment()?;
1803 let envelope_size = 8;
1804 let bytes_len = len * envelope_size;
1805 let offset = decoder.out_of_line_offset(bytes_len)?;
1806 let mut _next_ordinal_to_read = 0;
1808 let mut next_offset = offset;
1809 let end_offset = offset + bytes_len;
1810 _next_ordinal_to_read += 1;
1811 if next_offset >= end_offset {
1812 return Ok(());
1813 }
1814
1815 while _next_ordinal_to_read < 1 {
1817 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1818 _next_ordinal_to_read += 1;
1819 next_offset += envelope_size;
1820 }
1821
1822 let next_out_of_line = decoder.next_out_of_line();
1823 let handles_before = decoder.remaining_handles();
1824 if let Some((inlined, num_bytes, num_handles)) =
1825 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1826 {
1827 let member_inline_size =
1828 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1829 if inlined != (member_inline_size <= 4) {
1830 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1831 }
1832 let inner_offset;
1833 let mut inner_depth = depth.clone();
1834 if inlined {
1835 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1836 inner_offset = next_offset;
1837 } else {
1838 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1839 inner_depth.increment()?;
1840 }
1841 let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(u32, D));
1842 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
1843 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1844 {
1845 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1846 }
1847 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1848 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1849 }
1850 }
1851
1852 next_offset += envelope_size;
1853
1854 while next_offset < end_offset {
1856 _next_ordinal_to_read += 1;
1857 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1858 next_offset += envelope_size;
1859 }
1860
1861 Ok(())
1862 }
1863 }
1864
1865 impl DomainMetadata {
1866 #[inline(always)]
1867 fn max_ordinal_present(&self) -> u64 {
1868 if let Some(_) = self.domains {
1869 return 1;
1870 }
1871 0
1872 }
1873 }
1874
1875 impl fidl::encoding::ValueTypeMarker for DomainMetadata {
1876 type Borrowed<'a> = &'a Self;
1877 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1878 value
1879 }
1880 }
1881
1882 unsafe impl fidl::encoding::TypeMarker for DomainMetadata {
1883 type Owned = Self;
1884
1885 #[inline(always)]
1886 fn inline_align(_context: fidl::encoding::Context) -> usize {
1887 8
1888 }
1889
1890 #[inline(always)]
1891 fn inline_size(_context: fidl::encoding::Context) -> usize {
1892 16
1893 }
1894 }
1895
1896 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DomainMetadata, D>
1897 for &DomainMetadata
1898 {
1899 unsafe fn encode(
1900 self,
1901 encoder: &mut fidl::encoding::Encoder<'_, D>,
1902 offset: usize,
1903 mut depth: fidl::encoding::Depth,
1904 ) -> fidl::Result<()> {
1905 encoder.debug_check_bounds::<DomainMetadata>(offset);
1906 let max_ordinal: u64 = self.max_ordinal_present();
1908 encoder.write_num(max_ordinal, offset);
1909 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1910 if max_ordinal == 0 {
1912 return Ok(());
1913 }
1914 depth.increment()?;
1915 let envelope_size = 8;
1916 let bytes_len = max_ordinal as usize * envelope_size;
1917 #[allow(unused_variables)]
1918 let offset = encoder.out_of_line_offset(bytes_len);
1919 let mut _prev_end_offset: usize = 0;
1920 if 1 > max_ordinal {
1921 return Ok(());
1922 }
1923
1924 let cur_offset: usize = (1 - 1) * envelope_size;
1927
1928 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1930
1931 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<Domain>, D>(
1936 self.domains.as_ref().map(<fidl::encoding::UnboundedVector<Domain> as fidl::encoding::ValueTypeMarker>::borrow),
1937 encoder, offset + cur_offset, depth
1938 )?;
1939
1940 _prev_end_offset = cur_offset + envelope_size;
1941
1942 Ok(())
1943 }
1944 }
1945
1946 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DomainMetadata {
1947 #[inline(always)]
1948 fn new_empty() -> Self {
1949 Self::default()
1950 }
1951
1952 unsafe fn decode(
1953 &mut self,
1954 decoder: &mut fidl::encoding::Decoder<'_, D>,
1955 offset: usize,
1956 mut depth: fidl::encoding::Depth,
1957 ) -> fidl::Result<()> {
1958 decoder.debug_check_bounds::<Self>(offset);
1959 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1960 None => return Err(fidl::Error::NotNullable),
1961 Some(len) => len,
1962 };
1963 if len == 0 {
1965 return Ok(());
1966 };
1967 depth.increment()?;
1968 let envelope_size = 8;
1969 let bytes_len = len * envelope_size;
1970 let offset = decoder.out_of_line_offset(bytes_len)?;
1971 let mut _next_ordinal_to_read = 0;
1973 let mut next_offset = offset;
1974 let end_offset = offset + bytes_len;
1975 _next_ordinal_to_read += 1;
1976 if next_offset >= end_offset {
1977 return Ok(());
1978 }
1979
1980 while _next_ordinal_to_read < 1 {
1982 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1983 _next_ordinal_to_read += 1;
1984 next_offset += envelope_size;
1985 }
1986
1987 let next_out_of_line = decoder.next_out_of_line();
1988 let handles_before = decoder.remaining_handles();
1989 if let Some((inlined, num_bytes, num_handles)) =
1990 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1991 {
1992 let member_inline_size = <fidl::encoding::UnboundedVector<Domain> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1993 if inlined != (member_inline_size <= 4) {
1994 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1995 }
1996 let inner_offset;
1997 let mut inner_depth = depth.clone();
1998 if inlined {
1999 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2000 inner_offset = next_offset;
2001 } else {
2002 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2003 inner_depth.increment()?;
2004 }
2005 let val_ref = self.domains.get_or_insert_with(|| {
2006 fidl::new_empty!(fidl::encoding::UnboundedVector<Domain>, D)
2007 });
2008 fidl::decode!(
2009 fidl::encoding::UnboundedVector<Domain>,
2010 D,
2011 val_ref,
2012 decoder,
2013 inner_offset,
2014 inner_depth
2015 )?;
2016 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2017 {
2018 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2019 }
2020 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2021 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2022 }
2023 }
2024
2025 next_offset += envelope_size;
2026
2027 while next_offset < end_offset {
2029 _next_ordinal_to_read += 1;
2030 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2031 next_offset += envelope_size;
2032 }
2033
2034 Ok(())
2035 }
2036 }
2037
2038 impl LevelTuple {
2039 #[inline(always)]
2040 fn max_ordinal_present(&self) -> u64 {
2041 if let Some(_) = self.parent_level {
2042 return 2;
2043 }
2044 if let Some(_) = self.child_level {
2045 return 1;
2046 }
2047 0
2048 }
2049 }
2050
2051 impl fidl::encoding::ValueTypeMarker for LevelTuple {
2052 type Borrowed<'a> = &'a Self;
2053 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2054 value
2055 }
2056 }
2057
2058 unsafe impl fidl::encoding::TypeMarker for LevelTuple {
2059 type Owned = Self;
2060
2061 #[inline(always)]
2062 fn inline_align(_context: fidl::encoding::Context) -> usize {
2063 8
2064 }
2065
2066 #[inline(always)]
2067 fn inline_size(_context: fidl::encoding::Context) -> usize {
2068 16
2069 }
2070 }
2071
2072 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<LevelTuple, D>
2073 for &LevelTuple
2074 {
2075 unsafe fn encode(
2076 self,
2077 encoder: &mut fidl::encoding::Encoder<'_, D>,
2078 offset: usize,
2079 mut depth: fidl::encoding::Depth,
2080 ) -> fidl::Result<()> {
2081 encoder.debug_check_bounds::<LevelTuple>(offset);
2082 let max_ordinal: u64 = self.max_ordinal_present();
2084 encoder.write_num(max_ordinal, offset);
2085 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2086 if max_ordinal == 0 {
2088 return Ok(());
2089 }
2090 depth.increment()?;
2091 let envelope_size = 8;
2092 let bytes_len = max_ordinal as usize * envelope_size;
2093 #[allow(unused_variables)]
2094 let offset = encoder.out_of_line_offset(bytes_len);
2095 let mut _prev_end_offset: usize = 0;
2096 if 1 > max_ordinal {
2097 return Ok(());
2098 }
2099
2100 let cur_offset: usize = (1 - 1) * envelope_size;
2103
2104 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2106
2107 fidl::encoding::encode_in_envelope_optional::<u8, D>(
2112 self.child_level.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
2113 encoder,
2114 offset + cur_offset,
2115 depth,
2116 )?;
2117
2118 _prev_end_offset = cur_offset + envelope_size;
2119 if 2 > max_ordinal {
2120 return Ok(());
2121 }
2122
2123 let cur_offset: usize = (2 - 1) * envelope_size;
2126
2127 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2129
2130 fidl::encoding::encode_in_envelope_optional::<u8, D>(
2135 self.parent_level.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
2136 encoder,
2137 offset + cur_offset,
2138 depth,
2139 )?;
2140
2141 _prev_end_offset = cur_offset + envelope_size;
2142
2143 Ok(())
2144 }
2145 }
2146
2147 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LevelTuple {
2148 #[inline(always)]
2149 fn new_empty() -> Self {
2150 Self::default()
2151 }
2152
2153 unsafe fn decode(
2154 &mut self,
2155 decoder: &mut fidl::encoding::Decoder<'_, D>,
2156 offset: usize,
2157 mut depth: fidl::encoding::Depth,
2158 ) -> fidl::Result<()> {
2159 decoder.debug_check_bounds::<Self>(offset);
2160 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2161 None => return Err(fidl::Error::NotNullable),
2162 Some(len) => len,
2163 };
2164 if len == 0 {
2166 return Ok(());
2167 };
2168 depth.increment()?;
2169 let envelope_size = 8;
2170 let bytes_len = len * envelope_size;
2171 let offset = decoder.out_of_line_offset(bytes_len)?;
2172 let mut _next_ordinal_to_read = 0;
2174 let mut next_offset = offset;
2175 let end_offset = offset + bytes_len;
2176 _next_ordinal_to_read += 1;
2177 if next_offset >= end_offset {
2178 return Ok(());
2179 }
2180
2181 while _next_ordinal_to_read < 1 {
2183 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2184 _next_ordinal_to_read += 1;
2185 next_offset += envelope_size;
2186 }
2187
2188 let next_out_of_line = decoder.next_out_of_line();
2189 let handles_before = decoder.remaining_handles();
2190 if let Some((inlined, num_bytes, num_handles)) =
2191 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2192 {
2193 let member_inline_size =
2194 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2195 if inlined != (member_inline_size <= 4) {
2196 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2197 }
2198 let inner_offset;
2199 let mut inner_depth = depth.clone();
2200 if inlined {
2201 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2202 inner_offset = next_offset;
2203 } else {
2204 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2205 inner_depth.increment()?;
2206 }
2207 let val_ref = self.child_level.get_or_insert_with(|| fidl::new_empty!(u8, D));
2208 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
2209 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2210 {
2211 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2212 }
2213 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2214 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2215 }
2216 }
2217
2218 next_offset += envelope_size;
2219 _next_ordinal_to_read += 1;
2220 if next_offset >= end_offset {
2221 return Ok(());
2222 }
2223
2224 while _next_ordinal_to_read < 2 {
2226 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2227 _next_ordinal_to_read += 1;
2228 next_offset += envelope_size;
2229 }
2230
2231 let next_out_of_line = decoder.next_out_of_line();
2232 let handles_before = decoder.remaining_handles();
2233 if let Some((inlined, num_bytes, num_handles)) =
2234 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2235 {
2236 let member_inline_size =
2237 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2238 if inlined != (member_inline_size <= 4) {
2239 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2240 }
2241 let inner_offset;
2242 let mut inner_depth = depth.clone();
2243 if inlined {
2244 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2245 inner_offset = next_offset;
2246 } else {
2247 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2248 inner_depth.increment()?;
2249 }
2250 let val_ref = self.parent_level.get_or_insert_with(|| fidl::new_empty!(u8, D));
2251 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
2252 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2253 {
2254 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2255 }
2256 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2257 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2258 }
2259 }
2260
2261 next_offset += envelope_size;
2262
2263 while next_offset < end_offset {
2265 _next_ordinal_to_read += 1;
2266 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2267 next_offset += envelope_size;
2268 }
2269
2270 Ok(())
2271 }
2272 }
2273
2274 impl PowerDependency {
2275 #[inline(always)]
2276 fn max_ordinal_present(&self) -> u64 {
2277 if let Some(_) = self.level_deps {
2278 return 3;
2279 }
2280 if let Some(_) = self.parent {
2281 return 2;
2282 }
2283 if let Some(_) = self.child {
2284 return 1;
2285 }
2286 0
2287 }
2288 }
2289
2290 impl fidl::encoding::ValueTypeMarker for PowerDependency {
2291 type Borrowed<'a> = &'a Self;
2292 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2293 value
2294 }
2295 }
2296
2297 unsafe impl fidl::encoding::TypeMarker for PowerDependency {
2298 type Owned = Self;
2299
2300 #[inline(always)]
2301 fn inline_align(_context: fidl::encoding::Context) -> usize {
2302 8
2303 }
2304
2305 #[inline(always)]
2306 fn inline_size(_context: fidl::encoding::Context) -> usize {
2307 16
2308 }
2309 }
2310
2311 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PowerDependency, D>
2312 for &PowerDependency
2313 {
2314 unsafe fn encode(
2315 self,
2316 encoder: &mut fidl::encoding::Encoder<'_, D>,
2317 offset: usize,
2318 mut depth: fidl::encoding::Depth,
2319 ) -> fidl::Result<()> {
2320 encoder.debug_check_bounds::<PowerDependency>(offset);
2321 let max_ordinal: u64 = self.max_ordinal_present();
2323 encoder.write_num(max_ordinal, offset);
2324 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2325 if max_ordinal == 0 {
2327 return Ok(());
2328 }
2329 depth.increment()?;
2330 let envelope_size = 8;
2331 let bytes_len = max_ordinal as usize * envelope_size;
2332 #[allow(unused_variables)]
2333 let offset = encoder.out_of_line_offset(bytes_len);
2334 let mut _prev_end_offset: usize = 0;
2335 if 1 > max_ordinal {
2336 return Ok(());
2337 }
2338
2339 let cur_offset: usize = (1 - 1) * envelope_size;
2342
2343 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2345
2346 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<63>, D>(
2351 self.child.as_ref().map(
2352 <fidl::encoding::BoundedString<63> as fidl::encoding::ValueTypeMarker>::borrow,
2353 ),
2354 encoder,
2355 offset + cur_offset,
2356 depth,
2357 )?;
2358
2359 _prev_end_offset = cur_offset + envelope_size;
2360 if 2 > max_ordinal {
2361 return Ok(());
2362 }
2363
2364 let cur_offset: usize = (2 - 1) * envelope_size;
2367
2368 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2370
2371 fidl::encoding::encode_in_envelope_optional::<ParentElement, D>(
2376 self.parent
2377 .as_ref()
2378 .map(<ParentElement as fidl::encoding::ValueTypeMarker>::borrow),
2379 encoder,
2380 offset + cur_offset,
2381 depth,
2382 )?;
2383
2384 _prev_end_offset = cur_offset + envelope_size;
2385 if 3 > max_ordinal {
2386 return Ok(());
2387 }
2388
2389 let cur_offset: usize = (3 - 1) * envelope_size;
2392
2393 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2395
2396 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<LevelTuple, 128>, D>(
2401 self.level_deps.as_ref().map(<fidl::encoding::Vector<LevelTuple, 128> as fidl::encoding::ValueTypeMarker>::borrow),
2402 encoder, offset + cur_offset, depth
2403 )?;
2404
2405 _prev_end_offset = cur_offset + envelope_size;
2406
2407 Ok(())
2408 }
2409 }
2410
2411 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PowerDependency {
2412 #[inline(always)]
2413 fn new_empty() -> Self {
2414 Self::default()
2415 }
2416
2417 unsafe fn decode(
2418 &mut self,
2419 decoder: &mut fidl::encoding::Decoder<'_, D>,
2420 offset: usize,
2421 mut depth: fidl::encoding::Depth,
2422 ) -> fidl::Result<()> {
2423 decoder.debug_check_bounds::<Self>(offset);
2424 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2425 None => return Err(fidl::Error::NotNullable),
2426 Some(len) => len,
2427 };
2428 if len == 0 {
2430 return Ok(());
2431 };
2432 depth.increment()?;
2433 let envelope_size = 8;
2434 let bytes_len = len * envelope_size;
2435 let offset = decoder.out_of_line_offset(bytes_len)?;
2436 let mut _next_ordinal_to_read = 0;
2438 let mut next_offset = offset;
2439 let end_offset = offset + bytes_len;
2440 _next_ordinal_to_read += 1;
2441 if next_offset >= end_offset {
2442 return Ok(());
2443 }
2444
2445 while _next_ordinal_to_read < 1 {
2447 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2448 _next_ordinal_to_read += 1;
2449 next_offset += envelope_size;
2450 }
2451
2452 let next_out_of_line = decoder.next_out_of_line();
2453 let handles_before = decoder.remaining_handles();
2454 if let Some((inlined, num_bytes, num_handles)) =
2455 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2456 {
2457 let member_inline_size =
2458 <fidl::encoding::BoundedString<63> as fidl::encoding::TypeMarker>::inline_size(
2459 decoder.context,
2460 );
2461 if inlined != (member_inline_size <= 4) {
2462 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2463 }
2464 let inner_offset;
2465 let mut inner_depth = depth.clone();
2466 if inlined {
2467 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2468 inner_offset = next_offset;
2469 } else {
2470 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2471 inner_depth.increment()?;
2472 }
2473 let val_ref = self
2474 .child
2475 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<63>, D));
2476 fidl::decode!(
2477 fidl::encoding::BoundedString<63>,
2478 D,
2479 val_ref,
2480 decoder,
2481 inner_offset,
2482 inner_depth
2483 )?;
2484 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2485 {
2486 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2487 }
2488 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2489 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2490 }
2491 }
2492
2493 next_offset += envelope_size;
2494 _next_ordinal_to_read += 1;
2495 if next_offset >= end_offset {
2496 return Ok(());
2497 }
2498
2499 while _next_ordinal_to_read < 2 {
2501 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2502 _next_ordinal_to_read += 1;
2503 next_offset += envelope_size;
2504 }
2505
2506 let next_out_of_line = decoder.next_out_of_line();
2507 let handles_before = decoder.remaining_handles();
2508 if let Some((inlined, num_bytes, num_handles)) =
2509 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2510 {
2511 let member_inline_size =
2512 <ParentElement as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2513 if inlined != (member_inline_size <= 4) {
2514 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2515 }
2516 let inner_offset;
2517 let mut inner_depth = depth.clone();
2518 if inlined {
2519 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2520 inner_offset = next_offset;
2521 } else {
2522 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2523 inner_depth.increment()?;
2524 }
2525 let val_ref = self.parent.get_or_insert_with(|| fidl::new_empty!(ParentElement, D));
2526 fidl::decode!(ParentElement, D, val_ref, decoder, inner_offset, inner_depth)?;
2527 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2528 {
2529 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2530 }
2531 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2532 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2533 }
2534 }
2535
2536 next_offset += envelope_size;
2537 _next_ordinal_to_read += 1;
2538 if next_offset >= end_offset {
2539 return Ok(());
2540 }
2541
2542 while _next_ordinal_to_read < 3 {
2544 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2545 _next_ordinal_to_read += 1;
2546 next_offset += envelope_size;
2547 }
2548
2549 let next_out_of_line = decoder.next_out_of_line();
2550 let handles_before = decoder.remaining_handles();
2551 if let Some((inlined, num_bytes, num_handles)) =
2552 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2553 {
2554 let member_inline_size = <fidl::encoding::Vector<LevelTuple, 128> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2555 if inlined != (member_inline_size <= 4) {
2556 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2557 }
2558 let inner_offset;
2559 let mut inner_depth = depth.clone();
2560 if inlined {
2561 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2562 inner_offset = next_offset;
2563 } else {
2564 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2565 inner_depth.increment()?;
2566 }
2567 let val_ref = self.level_deps.get_or_insert_with(
2568 || fidl::new_empty!(fidl::encoding::Vector<LevelTuple, 128>, D),
2569 );
2570 fidl::decode!(fidl::encoding::Vector<LevelTuple, 128>, D, val_ref, decoder, inner_offset, inner_depth)?;
2571 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2572 {
2573 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2574 }
2575 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2576 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2577 }
2578 }
2579
2580 next_offset += envelope_size;
2581
2582 while next_offset < end_offset {
2584 _next_ordinal_to_read += 1;
2585 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2586 next_offset += envelope_size;
2587 }
2588
2589 Ok(())
2590 }
2591 }
2592
2593 impl PowerElement {
2594 #[inline(always)]
2595 fn max_ordinal_present(&self) -> u64 {
2596 if let Some(_) = self.levels {
2597 return 2;
2598 }
2599 if let Some(_) = self.name {
2600 return 1;
2601 }
2602 0
2603 }
2604 }
2605
2606 impl fidl::encoding::ValueTypeMarker for PowerElement {
2607 type Borrowed<'a> = &'a Self;
2608 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2609 value
2610 }
2611 }
2612
2613 unsafe impl fidl::encoding::TypeMarker for PowerElement {
2614 type Owned = Self;
2615
2616 #[inline(always)]
2617 fn inline_align(_context: fidl::encoding::Context) -> usize {
2618 8
2619 }
2620
2621 #[inline(always)]
2622 fn inline_size(_context: fidl::encoding::Context) -> usize {
2623 16
2624 }
2625 }
2626
2627 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PowerElement, D>
2628 for &PowerElement
2629 {
2630 unsafe fn encode(
2631 self,
2632 encoder: &mut fidl::encoding::Encoder<'_, D>,
2633 offset: usize,
2634 mut depth: fidl::encoding::Depth,
2635 ) -> fidl::Result<()> {
2636 encoder.debug_check_bounds::<PowerElement>(offset);
2637 let max_ordinal: u64 = self.max_ordinal_present();
2639 encoder.write_num(max_ordinal, offset);
2640 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2641 if max_ordinal == 0 {
2643 return Ok(());
2644 }
2645 depth.increment()?;
2646 let envelope_size = 8;
2647 let bytes_len = max_ordinal as usize * envelope_size;
2648 #[allow(unused_variables)]
2649 let offset = encoder.out_of_line_offset(bytes_len);
2650 let mut _prev_end_offset: usize = 0;
2651 if 1 > max_ordinal {
2652 return Ok(());
2653 }
2654
2655 let cur_offset: usize = (1 - 1) * envelope_size;
2658
2659 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2661
2662 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<63>, D>(
2667 self.name.as_ref().map(
2668 <fidl::encoding::BoundedString<63> as fidl::encoding::ValueTypeMarker>::borrow,
2669 ),
2670 encoder,
2671 offset + cur_offset,
2672 depth,
2673 )?;
2674
2675 _prev_end_offset = cur_offset + envelope_size;
2676 if 2 > max_ordinal {
2677 return Ok(());
2678 }
2679
2680 let cur_offset: usize = (2 - 1) * envelope_size;
2683
2684 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2686
2687 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<PowerLevel, 128>, D>(
2692 self.levels.as_ref().map(<fidl::encoding::Vector<PowerLevel, 128> as fidl::encoding::ValueTypeMarker>::borrow),
2693 encoder, offset + cur_offset, depth
2694 )?;
2695
2696 _prev_end_offset = cur_offset + envelope_size;
2697
2698 Ok(())
2699 }
2700 }
2701
2702 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PowerElement {
2703 #[inline(always)]
2704 fn new_empty() -> Self {
2705 Self::default()
2706 }
2707
2708 unsafe fn decode(
2709 &mut self,
2710 decoder: &mut fidl::encoding::Decoder<'_, D>,
2711 offset: usize,
2712 mut depth: fidl::encoding::Depth,
2713 ) -> fidl::Result<()> {
2714 decoder.debug_check_bounds::<Self>(offset);
2715 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2716 None => return Err(fidl::Error::NotNullable),
2717 Some(len) => len,
2718 };
2719 if len == 0 {
2721 return Ok(());
2722 };
2723 depth.increment()?;
2724 let envelope_size = 8;
2725 let bytes_len = len * envelope_size;
2726 let offset = decoder.out_of_line_offset(bytes_len)?;
2727 let mut _next_ordinal_to_read = 0;
2729 let mut next_offset = offset;
2730 let end_offset = offset + bytes_len;
2731 _next_ordinal_to_read += 1;
2732 if next_offset >= end_offset {
2733 return Ok(());
2734 }
2735
2736 while _next_ordinal_to_read < 1 {
2738 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2739 _next_ordinal_to_read += 1;
2740 next_offset += envelope_size;
2741 }
2742
2743 let next_out_of_line = decoder.next_out_of_line();
2744 let handles_before = decoder.remaining_handles();
2745 if let Some((inlined, num_bytes, num_handles)) =
2746 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2747 {
2748 let member_inline_size =
2749 <fidl::encoding::BoundedString<63> as fidl::encoding::TypeMarker>::inline_size(
2750 decoder.context,
2751 );
2752 if inlined != (member_inline_size <= 4) {
2753 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2754 }
2755 let inner_offset;
2756 let mut inner_depth = depth.clone();
2757 if inlined {
2758 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2759 inner_offset = next_offset;
2760 } else {
2761 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2762 inner_depth.increment()?;
2763 }
2764 let val_ref = self
2765 .name
2766 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<63>, D));
2767 fidl::decode!(
2768 fidl::encoding::BoundedString<63>,
2769 D,
2770 val_ref,
2771 decoder,
2772 inner_offset,
2773 inner_depth
2774 )?;
2775 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2776 {
2777 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2778 }
2779 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2780 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2781 }
2782 }
2783
2784 next_offset += envelope_size;
2785 _next_ordinal_to_read += 1;
2786 if next_offset >= end_offset {
2787 return Ok(());
2788 }
2789
2790 while _next_ordinal_to_read < 2 {
2792 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2793 _next_ordinal_to_read += 1;
2794 next_offset += envelope_size;
2795 }
2796
2797 let next_out_of_line = decoder.next_out_of_line();
2798 let handles_before = decoder.remaining_handles();
2799 if let Some((inlined, num_bytes, num_handles)) =
2800 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2801 {
2802 let member_inline_size = <fidl::encoding::Vector<PowerLevel, 128> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2803 if inlined != (member_inline_size <= 4) {
2804 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2805 }
2806 let inner_offset;
2807 let mut inner_depth = depth.clone();
2808 if inlined {
2809 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2810 inner_offset = next_offset;
2811 } else {
2812 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2813 inner_depth.increment()?;
2814 }
2815 let val_ref = self.levels.get_or_insert_with(
2816 || fidl::new_empty!(fidl::encoding::Vector<PowerLevel, 128>, D),
2817 );
2818 fidl::decode!(fidl::encoding::Vector<PowerLevel, 128>, D, val_ref, decoder, inner_offset, inner_depth)?;
2819 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2820 {
2821 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2822 }
2823 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2824 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2825 }
2826 }
2827
2828 next_offset += envelope_size;
2829
2830 while next_offset < end_offset {
2832 _next_ordinal_to_read += 1;
2833 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2834 next_offset += envelope_size;
2835 }
2836
2837 Ok(())
2838 }
2839 }
2840
2841 impl PowerElementConfiguration {
2842 #[inline(always)]
2843 fn max_ordinal_present(&self) -> u64 {
2844 if let Some(_) = self.dependencies {
2845 return 2;
2846 }
2847 if let Some(_) = self.element {
2848 return 1;
2849 }
2850 0
2851 }
2852 }
2853
2854 impl fidl::encoding::ValueTypeMarker for PowerElementConfiguration {
2855 type Borrowed<'a> = &'a Self;
2856 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2857 value
2858 }
2859 }
2860
2861 unsafe impl fidl::encoding::TypeMarker for PowerElementConfiguration {
2862 type Owned = Self;
2863
2864 #[inline(always)]
2865 fn inline_align(_context: fidl::encoding::Context) -> usize {
2866 8
2867 }
2868
2869 #[inline(always)]
2870 fn inline_size(_context: fidl::encoding::Context) -> usize {
2871 16
2872 }
2873 }
2874
2875 unsafe impl<D: fidl::encoding::ResourceDialect>
2876 fidl::encoding::Encode<PowerElementConfiguration, D> for &PowerElementConfiguration
2877 {
2878 unsafe fn encode(
2879 self,
2880 encoder: &mut fidl::encoding::Encoder<'_, D>,
2881 offset: usize,
2882 mut depth: fidl::encoding::Depth,
2883 ) -> fidl::Result<()> {
2884 encoder.debug_check_bounds::<PowerElementConfiguration>(offset);
2885 let max_ordinal: u64 = self.max_ordinal_present();
2887 encoder.write_num(max_ordinal, offset);
2888 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2889 if max_ordinal == 0 {
2891 return Ok(());
2892 }
2893 depth.increment()?;
2894 let envelope_size = 8;
2895 let bytes_len = max_ordinal as usize * envelope_size;
2896 #[allow(unused_variables)]
2897 let offset = encoder.out_of_line_offset(bytes_len);
2898 let mut _prev_end_offset: usize = 0;
2899 if 1 > max_ordinal {
2900 return Ok(());
2901 }
2902
2903 let cur_offset: usize = (1 - 1) * envelope_size;
2906
2907 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2909
2910 fidl::encoding::encode_in_envelope_optional::<PowerElement, D>(
2915 self.element
2916 .as_ref()
2917 .map(<PowerElement as fidl::encoding::ValueTypeMarker>::borrow),
2918 encoder,
2919 offset + cur_offset,
2920 depth,
2921 )?;
2922
2923 _prev_end_offset = cur_offset + envelope_size;
2924 if 2 > max_ordinal {
2925 return Ok(());
2926 }
2927
2928 let cur_offset: usize = (2 - 1) * envelope_size;
2931
2932 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2934
2935 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<PowerDependency, 128>, D>(
2940 self.dependencies.as_ref().map(<fidl::encoding::Vector<PowerDependency, 128> as fidl::encoding::ValueTypeMarker>::borrow),
2941 encoder, offset + cur_offset, depth
2942 )?;
2943
2944 _prev_end_offset = cur_offset + envelope_size;
2945
2946 Ok(())
2947 }
2948 }
2949
2950 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2951 for PowerElementConfiguration
2952 {
2953 #[inline(always)]
2954 fn new_empty() -> Self {
2955 Self::default()
2956 }
2957
2958 unsafe fn decode(
2959 &mut self,
2960 decoder: &mut fidl::encoding::Decoder<'_, D>,
2961 offset: usize,
2962 mut depth: fidl::encoding::Depth,
2963 ) -> fidl::Result<()> {
2964 decoder.debug_check_bounds::<Self>(offset);
2965 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2966 None => return Err(fidl::Error::NotNullable),
2967 Some(len) => len,
2968 };
2969 if len == 0 {
2971 return Ok(());
2972 };
2973 depth.increment()?;
2974 let envelope_size = 8;
2975 let bytes_len = len * envelope_size;
2976 let offset = decoder.out_of_line_offset(bytes_len)?;
2977 let mut _next_ordinal_to_read = 0;
2979 let mut next_offset = offset;
2980 let end_offset = offset + bytes_len;
2981 _next_ordinal_to_read += 1;
2982 if next_offset >= end_offset {
2983 return Ok(());
2984 }
2985
2986 while _next_ordinal_to_read < 1 {
2988 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2989 _next_ordinal_to_read += 1;
2990 next_offset += envelope_size;
2991 }
2992
2993 let next_out_of_line = decoder.next_out_of_line();
2994 let handles_before = decoder.remaining_handles();
2995 if let Some((inlined, num_bytes, num_handles)) =
2996 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2997 {
2998 let member_inline_size =
2999 <PowerElement as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3000 if inlined != (member_inline_size <= 4) {
3001 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3002 }
3003 let inner_offset;
3004 let mut inner_depth = depth.clone();
3005 if inlined {
3006 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3007 inner_offset = next_offset;
3008 } else {
3009 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3010 inner_depth.increment()?;
3011 }
3012 let val_ref = self.element.get_or_insert_with(|| fidl::new_empty!(PowerElement, D));
3013 fidl::decode!(PowerElement, D, val_ref, decoder, inner_offset, inner_depth)?;
3014 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3015 {
3016 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3017 }
3018 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3019 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3020 }
3021 }
3022
3023 next_offset += envelope_size;
3024 _next_ordinal_to_read += 1;
3025 if next_offset >= end_offset {
3026 return Ok(());
3027 }
3028
3029 while _next_ordinal_to_read < 2 {
3031 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3032 _next_ordinal_to_read += 1;
3033 next_offset += envelope_size;
3034 }
3035
3036 let next_out_of_line = decoder.next_out_of_line();
3037 let handles_before = decoder.remaining_handles();
3038 if let Some((inlined, num_bytes, num_handles)) =
3039 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3040 {
3041 let member_inline_size = <fidl::encoding::Vector<PowerDependency, 128> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3042 if inlined != (member_inline_size <= 4) {
3043 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3044 }
3045 let inner_offset;
3046 let mut inner_depth = depth.clone();
3047 if inlined {
3048 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3049 inner_offset = next_offset;
3050 } else {
3051 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3052 inner_depth.increment()?;
3053 }
3054 let val_ref = self.dependencies.get_or_insert_with(
3055 || fidl::new_empty!(fidl::encoding::Vector<PowerDependency, 128>, D),
3056 );
3057 fidl::decode!(fidl::encoding::Vector<PowerDependency, 128>, D, val_ref, decoder, inner_offset, inner_depth)?;
3058 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3059 {
3060 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3061 }
3062 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3063 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3064 }
3065 }
3066
3067 next_offset += envelope_size;
3068
3069 while next_offset < end_offset {
3071 _next_ordinal_to_read += 1;
3072 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3073 next_offset += envelope_size;
3074 }
3075
3076 Ok(())
3077 }
3078 }
3079
3080 impl PowerLevel {
3081 #[inline(always)]
3082 fn max_ordinal_present(&self) -> u64 {
3083 if let Some(_) = self.transitions {
3084 return 3;
3085 }
3086 if let Some(_) = self.name {
3087 return 2;
3088 }
3089 if let Some(_) = self.level {
3090 return 1;
3091 }
3092 0
3093 }
3094 }
3095
3096 impl fidl::encoding::ValueTypeMarker for PowerLevel {
3097 type Borrowed<'a> = &'a Self;
3098 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3099 value
3100 }
3101 }
3102
3103 unsafe impl fidl::encoding::TypeMarker for PowerLevel {
3104 type Owned = Self;
3105
3106 #[inline(always)]
3107 fn inline_align(_context: fidl::encoding::Context) -> usize {
3108 8
3109 }
3110
3111 #[inline(always)]
3112 fn inline_size(_context: fidl::encoding::Context) -> usize {
3113 16
3114 }
3115 }
3116
3117 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PowerLevel, D>
3118 for &PowerLevel
3119 {
3120 unsafe fn encode(
3121 self,
3122 encoder: &mut fidl::encoding::Encoder<'_, D>,
3123 offset: usize,
3124 mut depth: fidl::encoding::Depth,
3125 ) -> fidl::Result<()> {
3126 encoder.debug_check_bounds::<PowerLevel>(offset);
3127 let max_ordinal: u64 = self.max_ordinal_present();
3129 encoder.write_num(max_ordinal, offset);
3130 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3131 if max_ordinal == 0 {
3133 return Ok(());
3134 }
3135 depth.increment()?;
3136 let envelope_size = 8;
3137 let bytes_len = max_ordinal as usize * envelope_size;
3138 #[allow(unused_variables)]
3139 let offset = encoder.out_of_line_offset(bytes_len);
3140 let mut _prev_end_offset: usize = 0;
3141 if 1 > max_ordinal {
3142 return Ok(());
3143 }
3144
3145 let cur_offset: usize = (1 - 1) * envelope_size;
3148
3149 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3151
3152 fidl::encoding::encode_in_envelope_optional::<u8, D>(
3157 self.level.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
3158 encoder,
3159 offset + cur_offset,
3160 depth,
3161 )?;
3162
3163 _prev_end_offset = cur_offset + envelope_size;
3164 if 2 > max_ordinal {
3165 return Ok(());
3166 }
3167
3168 let cur_offset: usize = (2 - 1) * envelope_size;
3171
3172 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3174
3175 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<63>, D>(
3180 self.name.as_ref().map(
3181 <fidl::encoding::BoundedString<63> as fidl::encoding::ValueTypeMarker>::borrow,
3182 ),
3183 encoder,
3184 offset + cur_offset,
3185 depth,
3186 )?;
3187
3188 _prev_end_offset = cur_offset + envelope_size;
3189 if 3 > max_ordinal {
3190 return Ok(());
3191 }
3192
3193 let cur_offset: usize = (3 - 1) * envelope_size;
3196
3197 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3199
3200 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<Transition, 127>, D>(
3205 self.transitions.as_ref().map(<fidl::encoding::Vector<Transition, 127> as fidl::encoding::ValueTypeMarker>::borrow),
3206 encoder, offset + cur_offset, depth
3207 )?;
3208
3209 _prev_end_offset = cur_offset + envelope_size;
3210
3211 Ok(())
3212 }
3213 }
3214
3215 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PowerLevel {
3216 #[inline(always)]
3217 fn new_empty() -> Self {
3218 Self::default()
3219 }
3220
3221 unsafe fn decode(
3222 &mut self,
3223 decoder: &mut fidl::encoding::Decoder<'_, D>,
3224 offset: usize,
3225 mut depth: fidl::encoding::Depth,
3226 ) -> fidl::Result<()> {
3227 decoder.debug_check_bounds::<Self>(offset);
3228 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3229 None => return Err(fidl::Error::NotNullable),
3230 Some(len) => len,
3231 };
3232 if len == 0 {
3234 return Ok(());
3235 };
3236 depth.increment()?;
3237 let envelope_size = 8;
3238 let bytes_len = len * envelope_size;
3239 let offset = decoder.out_of_line_offset(bytes_len)?;
3240 let mut _next_ordinal_to_read = 0;
3242 let mut next_offset = offset;
3243 let end_offset = offset + bytes_len;
3244 _next_ordinal_to_read += 1;
3245 if next_offset >= end_offset {
3246 return Ok(());
3247 }
3248
3249 while _next_ordinal_to_read < 1 {
3251 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3252 _next_ordinal_to_read += 1;
3253 next_offset += envelope_size;
3254 }
3255
3256 let next_out_of_line = decoder.next_out_of_line();
3257 let handles_before = decoder.remaining_handles();
3258 if let Some((inlined, num_bytes, num_handles)) =
3259 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3260 {
3261 let member_inline_size =
3262 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3263 if inlined != (member_inline_size <= 4) {
3264 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3265 }
3266 let inner_offset;
3267 let mut inner_depth = depth.clone();
3268 if inlined {
3269 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3270 inner_offset = next_offset;
3271 } else {
3272 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3273 inner_depth.increment()?;
3274 }
3275 let val_ref = self.level.get_or_insert_with(|| fidl::new_empty!(u8, D));
3276 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
3277 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3278 {
3279 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3280 }
3281 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3282 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3283 }
3284 }
3285
3286 next_offset += envelope_size;
3287 _next_ordinal_to_read += 1;
3288 if next_offset >= end_offset {
3289 return Ok(());
3290 }
3291
3292 while _next_ordinal_to_read < 2 {
3294 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3295 _next_ordinal_to_read += 1;
3296 next_offset += envelope_size;
3297 }
3298
3299 let next_out_of_line = decoder.next_out_of_line();
3300 let handles_before = decoder.remaining_handles();
3301 if let Some((inlined, num_bytes, num_handles)) =
3302 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3303 {
3304 let member_inline_size =
3305 <fidl::encoding::BoundedString<63> as fidl::encoding::TypeMarker>::inline_size(
3306 decoder.context,
3307 );
3308 if inlined != (member_inline_size <= 4) {
3309 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3310 }
3311 let inner_offset;
3312 let mut inner_depth = depth.clone();
3313 if inlined {
3314 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3315 inner_offset = next_offset;
3316 } else {
3317 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3318 inner_depth.increment()?;
3319 }
3320 let val_ref = self
3321 .name
3322 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<63>, D));
3323 fidl::decode!(
3324 fidl::encoding::BoundedString<63>,
3325 D,
3326 val_ref,
3327 decoder,
3328 inner_offset,
3329 inner_depth
3330 )?;
3331 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3332 {
3333 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3334 }
3335 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3336 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3337 }
3338 }
3339
3340 next_offset += envelope_size;
3341 _next_ordinal_to_read += 1;
3342 if next_offset >= end_offset {
3343 return Ok(());
3344 }
3345
3346 while _next_ordinal_to_read < 3 {
3348 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3349 _next_ordinal_to_read += 1;
3350 next_offset += envelope_size;
3351 }
3352
3353 let next_out_of_line = decoder.next_out_of_line();
3354 let handles_before = decoder.remaining_handles();
3355 if let Some((inlined, num_bytes, num_handles)) =
3356 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3357 {
3358 let member_inline_size = <fidl::encoding::Vector<Transition, 127> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3359 if inlined != (member_inline_size <= 4) {
3360 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3361 }
3362 let inner_offset;
3363 let mut inner_depth = depth.clone();
3364 if inlined {
3365 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3366 inner_offset = next_offset;
3367 } else {
3368 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3369 inner_depth.increment()?;
3370 }
3371 let val_ref = self.transitions.get_or_insert_with(
3372 || fidl::new_empty!(fidl::encoding::Vector<Transition, 127>, D),
3373 );
3374 fidl::decode!(fidl::encoding::Vector<Transition, 127>, D, val_ref, decoder, inner_offset, inner_depth)?;
3375 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3376 {
3377 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3378 }
3379 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3380 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3381 }
3382 }
3383
3384 next_offset += envelope_size;
3385
3386 while next_offset < end_offset {
3388 _next_ordinal_to_read += 1;
3389 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3390 next_offset += envelope_size;
3391 }
3392
3393 Ok(())
3394 }
3395 }
3396
3397 impl Transition {
3398 #[inline(always)]
3399 fn max_ordinal_present(&self) -> u64 {
3400 if let Some(_) = self.latency_us {
3401 return 2;
3402 }
3403 if let Some(_) = self.target_level {
3404 return 1;
3405 }
3406 0
3407 }
3408 }
3409
3410 impl fidl::encoding::ValueTypeMarker for Transition {
3411 type Borrowed<'a> = &'a Self;
3412 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3413 value
3414 }
3415 }
3416
3417 unsafe impl fidl::encoding::TypeMarker for Transition {
3418 type Owned = Self;
3419
3420 #[inline(always)]
3421 fn inline_align(_context: fidl::encoding::Context) -> usize {
3422 8
3423 }
3424
3425 #[inline(always)]
3426 fn inline_size(_context: fidl::encoding::Context) -> usize {
3427 16
3428 }
3429 }
3430
3431 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Transition, D>
3432 for &Transition
3433 {
3434 unsafe fn encode(
3435 self,
3436 encoder: &mut fidl::encoding::Encoder<'_, D>,
3437 offset: usize,
3438 mut depth: fidl::encoding::Depth,
3439 ) -> fidl::Result<()> {
3440 encoder.debug_check_bounds::<Transition>(offset);
3441 let max_ordinal: u64 = self.max_ordinal_present();
3443 encoder.write_num(max_ordinal, offset);
3444 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3445 if max_ordinal == 0 {
3447 return Ok(());
3448 }
3449 depth.increment()?;
3450 let envelope_size = 8;
3451 let bytes_len = max_ordinal as usize * envelope_size;
3452 #[allow(unused_variables)]
3453 let offset = encoder.out_of_line_offset(bytes_len);
3454 let mut _prev_end_offset: usize = 0;
3455 if 1 > max_ordinal {
3456 return Ok(());
3457 }
3458
3459 let cur_offset: usize = (1 - 1) * envelope_size;
3462
3463 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3465
3466 fidl::encoding::encode_in_envelope_optional::<u8, D>(
3471 self.target_level.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
3472 encoder,
3473 offset + cur_offset,
3474 depth,
3475 )?;
3476
3477 _prev_end_offset = cur_offset + envelope_size;
3478 if 2 > max_ordinal {
3479 return Ok(());
3480 }
3481
3482 let cur_offset: usize = (2 - 1) * envelope_size;
3485
3486 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3488
3489 fidl::encoding::encode_in_envelope_optional::<u32, D>(
3494 self.latency_us.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3495 encoder,
3496 offset + cur_offset,
3497 depth,
3498 )?;
3499
3500 _prev_end_offset = cur_offset + envelope_size;
3501
3502 Ok(())
3503 }
3504 }
3505
3506 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Transition {
3507 #[inline(always)]
3508 fn new_empty() -> Self {
3509 Self::default()
3510 }
3511
3512 unsafe fn decode(
3513 &mut self,
3514 decoder: &mut fidl::encoding::Decoder<'_, D>,
3515 offset: usize,
3516 mut depth: fidl::encoding::Depth,
3517 ) -> fidl::Result<()> {
3518 decoder.debug_check_bounds::<Self>(offset);
3519 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3520 None => return Err(fidl::Error::NotNullable),
3521 Some(len) => len,
3522 };
3523 if len == 0 {
3525 return Ok(());
3526 };
3527 depth.increment()?;
3528 let envelope_size = 8;
3529 let bytes_len = len * envelope_size;
3530 let offset = decoder.out_of_line_offset(bytes_len)?;
3531 let mut _next_ordinal_to_read = 0;
3533 let mut next_offset = offset;
3534 let end_offset = offset + bytes_len;
3535 _next_ordinal_to_read += 1;
3536 if next_offset >= end_offset {
3537 return Ok(());
3538 }
3539
3540 while _next_ordinal_to_read < 1 {
3542 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3543 _next_ordinal_to_read += 1;
3544 next_offset += envelope_size;
3545 }
3546
3547 let next_out_of_line = decoder.next_out_of_line();
3548 let handles_before = decoder.remaining_handles();
3549 if let Some((inlined, num_bytes, num_handles)) =
3550 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3551 {
3552 let member_inline_size =
3553 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3554 if inlined != (member_inline_size <= 4) {
3555 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3556 }
3557 let inner_offset;
3558 let mut inner_depth = depth.clone();
3559 if inlined {
3560 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3561 inner_offset = next_offset;
3562 } else {
3563 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3564 inner_depth.increment()?;
3565 }
3566 let val_ref = self.target_level.get_or_insert_with(|| fidl::new_empty!(u8, D));
3567 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
3568 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3569 {
3570 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3571 }
3572 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3573 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3574 }
3575 }
3576
3577 next_offset += envelope_size;
3578 _next_ordinal_to_read += 1;
3579 if next_offset >= end_offset {
3580 return Ok(());
3581 }
3582
3583 while _next_ordinal_to_read < 2 {
3585 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3586 _next_ordinal_to_read += 1;
3587 next_offset += envelope_size;
3588 }
3589
3590 let next_out_of_line = decoder.next_out_of_line();
3591 let handles_before = decoder.remaining_handles();
3592 if let Some((inlined, num_bytes, num_handles)) =
3593 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3594 {
3595 let member_inline_size =
3596 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3597 if inlined != (member_inline_size <= 4) {
3598 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3599 }
3600 let inner_offset;
3601 let mut inner_depth = depth.clone();
3602 if inlined {
3603 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3604 inner_offset = next_offset;
3605 } else {
3606 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3607 inner_depth.increment()?;
3608 }
3609 let val_ref = self.latency_us.get_or_insert_with(|| fidl::new_empty!(u32, D));
3610 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3611 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3612 {
3613 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3614 }
3615 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3616 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3617 }
3618 }
3619
3620 next_offset += envelope_size;
3621
3622 while next_offset < end_offset {
3624 _next_ordinal_to_read += 1;
3625 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3626 next_offset += envelope_size;
3627 }
3628
3629 Ok(())
3630 }
3631 }
3632
3633 impl fidl::encoding::ValueTypeMarker for ParentElement {
3634 type Borrowed<'a> = &'a Self;
3635 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3636 value
3637 }
3638 }
3639
3640 unsafe impl fidl::encoding::TypeMarker for ParentElement {
3641 type Owned = Self;
3642
3643 #[inline(always)]
3644 fn inline_align(_context: fidl::encoding::Context) -> usize {
3645 8
3646 }
3647
3648 #[inline(always)]
3649 fn inline_size(_context: fidl::encoding::Context) -> usize {
3650 16
3651 }
3652 }
3653
3654 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ParentElement, D>
3655 for &ParentElement
3656 {
3657 #[inline]
3658 unsafe fn encode(
3659 self,
3660 encoder: &mut fidl::encoding::Encoder<'_, D>,
3661 offset: usize,
3662 _depth: fidl::encoding::Depth,
3663 ) -> fidl::Result<()> {
3664 encoder.debug_check_bounds::<ParentElement>(offset);
3665 encoder.write_num::<u64>(self.ordinal(), offset);
3666 match self {
3667 ParentElement::Sag(ref val) => fidl::encoding::encode_in_envelope::<SagElement, D>(
3668 <SagElement as fidl::encoding::ValueTypeMarker>::borrow(val),
3669 encoder,
3670 offset + 8,
3671 _depth,
3672 ),
3673 ParentElement::InstanceName(ref val) => fidl::encoding::encode_in_envelope::<
3674 fidl::encoding::BoundedString<63>,
3675 D,
3676 >(
3677 <fidl::encoding::BoundedString<63> as fidl::encoding::ValueTypeMarker>::borrow(
3678 val,
3679 ),
3680 encoder,
3681 offset + 8,
3682 _depth,
3683 ),
3684 ParentElement::CpuControl(ref val) => {
3685 fidl::encoding::encode_in_envelope::<CpuPowerElement, D>(
3686 <CpuPowerElement as fidl::encoding::ValueTypeMarker>::borrow(val),
3687 encoder,
3688 offset + 8,
3689 _depth,
3690 )
3691 }
3692 }
3693 }
3694 }
3695
3696 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ParentElement {
3697 #[inline(always)]
3698 fn new_empty() -> Self {
3699 Self::Sag(fidl::new_empty!(SagElement, D))
3700 }
3701
3702 #[inline]
3703 unsafe fn decode(
3704 &mut self,
3705 decoder: &mut fidl::encoding::Decoder<'_, D>,
3706 offset: usize,
3707 mut depth: fidl::encoding::Depth,
3708 ) -> fidl::Result<()> {
3709 decoder.debug_check_bounds::<Self>(offset);
3710 #[allow(unused_variables)]
3711 let next_out_of_line = decoder.next_out_of_line();
3712 let handles_before = decoder.remaining_handles();
3713 let (ordinal, inlined, num_bytes, num_handles) =
3714 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
3715
3716 let member_inline_size = match ordinal {
3717 1 => <SagElement as fidl::encoding::TypeMarker>::inline_size(decoder.context),
3718 2 => {
3719 <fidl::encoding::BoundedString<63> as fidl::encoding::TypeMarker>::inline_size(
3720 decoder.context,
3721 )
3722 }
3723 3 => <CpuPowerElement as fidl::encoding::TypeMarker>::inline_size(decoder.context),
3724 _ => return Err(fidl::Error::UnknownUnionTag),
3725 };
3726
3727 if inlined != (member_inline_size <= 4) {
3728 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3729 }
3730 let _inner_offset;
3731 if inlined {
3732 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
3733 _inner_offset = offset + 8;
3734 } else {
3735 depth.increment()?;
3736 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3737 }
3738 match ordinal {
3739 1 => {
3740 #[allow(irrefutable_let_patterns)]
3741 if let ParentElement::Sag(_) = self {
3742 } else {
3744 *self = ParentElement::Sag(fidl::new_empty!(SagElement, D));
3746 }
3747 #[allow(irrefutable_let_patterns)]
3748 if let ParentElement::Sag(ref mut val) = self {
3749 fidl::decode!(SagElement, D, val, decoder, _inner_offset, depth)?;
3750 } else {
3751 unreachable!()
3752 }
3753 }
3754 2 => {
3755 #[allow(irrefutable_let_patterns)]
3756 if let ParentElement::InstanceName(_) = self {
3757 } else {
3759 *self = ParentElement::InstanceName(fidl::new_empty!(
3761 fidl::encoding::BoundedString<63>,
3762 D
3763 ));
3764 }
3765 #[allow(irrefutable_let_patterns)]
3766 if let ParentElement::InstanceName(ref mut val) = self {
3767 fidl::decode!(
3768 fidl::encoding::BoundedString<63>,
3769 D,
3770 val,
3771 decoder,
3772 _inner_offset,
3773 depth
3774 )?;
3775 } else {
3776 unreachable!()
3777 }
3778 }
3779 3 => {
3780 #[allow(irrefutable_let_patterns)]
3781 if let ParentElement::CpuControl(_) = self {
3782 } else {
3784 *self = ParentElement::CpuControl(fidl::new_empty!(CpuPowerElement, D));
3786 }
3787 #[allow(irrefutable_let_patterns)]
3788 if let ParentElement::CpuControl(ref mut val) = self {
3789 fidl::decode!(CpuPowerElement, D, val, decoder, _inner_offset, depth)?;
3790 } else {
3791 unreachable!()
3792 }
3793 }
3794 ordinal => panic!("unexpected ordinal {:?}", ordinal),
3795 }
3796 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
3797 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3798 }
3799 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3800 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3801 }
3802 Ok(())
3803 }
3804 }
3805}