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