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