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_DOMAINS: u32 = 32;
13
14pub const MAX_NAME_LEN: u32 = 64;
16
17pub const MAX_NODES: u32 = 64;
19
20pub const MAX_PATH_LEN: u32 = 128;
22
23pub const MAX_POWER_LEVELS: u32 = 64;
25
26#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
28pub enum PowercapError {
29 Internal,
31 InvalidArguments,
34 #[doc(hidden)]
35 __SourceBreaking { unknown_ordinal: u32 },
36}
37
38#[macro_export]
40macro_rules! PowercapErrorUnknown {
41 () => {
42 _
43 };
44}
45
46impl PowercapError {
47 #[inline]
48 pub fn from_primitive(prim: u32) -> Option<Self> {
49 match prim {
50 1 => Some(Self::Internal),
51 2 => Some(Self::InvalidArguments),
52 _ => None,
53 }
54 }
55
56 #[inline]
57 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
58 match prim {
59 1 => Self::Internal,
60 2 => Self::InvalidArguments,
61 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
62 }
63 }
64
65 #[inline]
66 pub fn unknown() -> Self {
67 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
68 }
69
70 #[inline]
71 pub const fn into_primitive(self) -> u32 {
72 match self {
73 Self::Internal => 1,
74 Self::InvalidArguments => 2,
75 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
76 }
77 }
78
79 #[inline]
80 pub fn is_unknown(&self) -> bool {
81 match self {
82 Self::__SourceBreaking { unknown_ordinal: _ } => true,
83 _ => false,
84 }
85 }
86}
87
88#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
89#[repr(C)]
90pub struct ClientGetPowerLimitBypassRequest {
91 pub node_id: u64,
92}
93
94impl fidl::Persistable for ClientGetPowerLimitBypassRequest {}
95
96#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
97#[repr(C)]
98pub struct ClientGetPowerLimitRequest {
99 pub node_id: u64,
100}
101
102impl fidl::Persistable for ClientGetPowerLimitRequest {}
103
104#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
105#[repr(C)]
106pub struct ClientSetPowerLimitBypassRequest {
107 pub node_id: u64,
108 pub bypass_time_ms: u64,
109}
110
111impl fidl::Persistable for ClientSetPowerLimitBypassRequest {}
112
113#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
114#[repr(C)]
115pub struct ClientSetPowerLimitRequest {
116 pub node_id: u64,
117 pub power_limit_uw: u64,
118}
119
120impl fidl::Persistable for ClientSetPowerLimitRequest {}
121
122#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
123pub struct ClientStateWatcherWatchResponse {
124 pub domain_opps: Vec<u64>,
125}
126
127impl fidl::Persistable for ClientStateWatcherWatchResponse {}
128
129#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
130#[repr(C)]
131pub struct ClientGetPowerLimitBypassResponse {
132 pub remaining_bypass_ms: u64,
133}
134
135impl fidl::Persistable for ClientGetPowerLimitBypassResponse {}
136
137#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
138#[repr(C)]
139pub struct ClientGetPowerLimitResponse {
140 pub power_limit_uw: u64,
141}
142
143impl fidl::Persistable for ClientGetPowerLimitResponse {}
144
145#[derive(Clone, Debug, PartialEq)]
146pub struct ClientGetPowercapTreeResponse {
147 pub nodes: Vec<PowercapNodeInfo>,
148}
149
150impl fidl::Persistable for ClientGetPowercapTreeResponse {}
151
152#[derive(Clone, Debug, Default, PartialEq)]
157pub struct PowercapNodeInfo {
158 pub node_id: Option<u64>,
160 pub parent_node_id: Option<u64>,
162 pub zone_path: Option<String>,
165 pub name: Option<String>,
168 pub constraint_name: Option<String>,
171 pub max_power_uw: Option<u64>,
174 pub min_power_uw: Option<u64>,
177 pub power_levels_uw: Option<Vec<u64>>,
181 pub supports_bypass: Option<bool>,
185 #[doc(hidden)]
186 pub __source_breaking: fidl::marker::SourceBreaking,
187}
188
189impl fidl::Persistable for PowercapNodeInfo {}
190
191pub mod client_ordinals {
192 pub const GET_POWERCAP_TREE: u64 = 0x629216680eaef016;
193 pub const GET_POWER_LIMIT: u64 = 0x652faeb2501c31fd;
194 pub const SET_POWER_LIMIT: u64 = 0x29acfe0139bd122e;
195 pub const GET_POWER_LIMIT_BYPASS: u64 = 0x35000ed7dfc72791;
196 pub const SET_POWER_LIMIT_BYPASS: u64 = 0x1e81290b489d0d91;
197}
198
199pub mod client_state_watcher_ordinals {
200 pub const WATCH: u64 = 0x2066699d14b6ee1d;
201}
202
203mod internal {
204 use super::*;
205 unsafe impl fidl::encoding::TypeMarker for PowercapError {
206 type Owned = Self;
207
208 #[inline(always)]
209 fn inline_align(_context: fidl::encoding::Context) -> usize {
210 std::mem::align_of::<u32>()
211 }
212
213 #[inline(always)]
214 fn inline_size(_context: fidl::encoding::Context) -> usize {
215 std::mem::size_of::<u32>()
216 }
217
218 #[inline(always)]
219 fn encode_is_copy() -> bool {
220 false
221 }
222
223 #[inline(always)]
224 fn decode_is_copy() -> bool {
225 false
226 }
227 }
228
229 impl fidl::encoding::ValueTypeMarker for PowercapError {
230 type Borrowed<'a> = Self;
231 #[inline(always)]
232 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
233 *value
234 }
235 }
236
237 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for PowercapError {
238 #[inline]
239 unsafe fn encode(
240 self,
241 encoder: &mut fidl::encoding::Encoder<'_, D>,
242 offset: usize,
243 _depth: fidl::encoding::Depth,
244 ) -> fidl::Result<()> {
245 encoder.debug_check_bounds::<Self>(offset);
246 encoder.write_num(self.into_primitive(), offset);
247 Ok(())
248 }
249 }
250
251 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PowercapError {
252 #[inline(always)]
253 fn new_empty() -> Self {
254 Self::unknown()
255 }
256
257 #[inline]
258 unsafe fn decode(
259 &mut self,
260 decoder: &mut fidl::encoding::Decoder<'_, D>,
261 offset: usize,
262 _depth: fidl::encoding::Depth,
263 ) -> fidl::Result<()> {
264 decoder.debug_check_bounds::<Self>(offset);
265 let prim = decoder.read_num::<u32>(offset);
266
267 *self = Self::from_primitive_allow_unknown(prim);
268 Ok(())
269 }
270 }
271
272 impl fidl::encoding::ValueTypeMarker for ClientGetPowerLimitBypassRequest {
273 type Borrowed<'a> = &'a Self;
274 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
275 value
276 }
277 }
278
279 unsafe impl fidl::encoding::TypeMarker for ClientGetPowerLimitBypassRequest {
280 type Owned = Self;
281
282 #[inline(always)]
283 fn inline_align(_context: fidl::encoding::Context) -> usize {
284 8
285 }
286
287 #[inline(always)]
288 fn inline_size(_context: fidl::encoding::Context) -> usize {
289 8
290 }
291 #[inline(always)]
292 fn encode_is_copy() -> bool {
293 true
294 }
295
296 #[inline(always)]
297 fn decode_is_copy() -> bool {
298 true
299 }
300 }
301
302 unsafe impl<D: fidl::encoding::ResourceDialect>
303 fidl::encoding::Encode<ClientGetPowerLimitBypassRequest, D>
304 for &ClientGetPowerLimitBypassRequest
305 {
306 #[inline]
307 unsafe fn encode(
308 self,
309 encoder: &mut fidl::encoding::Encoder<'_, D>,
310 offset: usize,
311 _depth: fidl::encoding::Depth,
312 ) -> fidl::Result<()> {
313 encoder.debug_check_bounds::<ClientGetPowerLimitBypassRequest>(offset);
314 unsafe {
315 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
317 (buf_ptr as *mut ClientGetPowerLimitBypassRequest)
318 .write_unaligned((self as *const ClientGetPowerLimitBypassRequest).read());
319 }
322 Ok(())
323 }
324 }
325 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u64, D>>
326 fidl::encoding::Encode<ClientGetPowerLimitBypassRequest, D> for (T0,)
327 {
328 #[inline]
329 unsafe fn encode(
330 self,
331 encoder: &mut fidl::encoding::Encoder<'_, D>,
332 offset: usize,
333 depth: fidl::encoding::Depth,
334 ) -> fidl::Result<()> {
335 encoder.debug_check_bounds::<ClientGetPowerLimitBypassRequest>(offset);
336 self.0.encode(encoder, offset + 0, depth)?;
340 Ok(())
341 }
342 }
343
344 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
345 for ClientGetPowerLimitBypassRequest
346 {
347 #[inline(always)]
348 fn new_empty() -> Self {
349 Self { node_id: fidl::new_empty!(u64, D) }
350 }
351
352 #[inline]
353 unsafe fn decode(
354 &mut self,
355 decoder: &mut fidl::encoding::Decoder<'_, D>,
356 offset: usize,
357 _depth: fidl::encoding::Depth,
358 ) -> fidl::Result<()> {
359 decoder.debug_check_bounds::<Self>(offset);
360 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
361 unsafe {
364 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
365 }
366 Ok(())
367 }
368 }
369
370 impl fidl::encoding::ValueTypeMarker for ClientGetPowerLimitRequest {
371 type Borrowed<'a> = &'a Self;
372 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
373 value
374 }
375 }
376
377 unsafe impl fidl::encoding::TypeMarker for ClientGetPowerLimitRequest {
378 type Owned = Self;
379
380 #[inline(always)]
381 fn inline_align(_context: fidl::encoding::Context) -> usize {
382 8
383 }
384
385 #[inline(always)]
386 fn inline_size(_context: fidl::encoding::Context) -> usize {
387 8
388 }
389 #[inline(always)]
390 fn encode_is_copy() -> bool {
391 true
392 }
393
394 #[inline(always)]
395 fn decode_is_copy() -> bool {
396 true
397 }
398 }
399
400 unsafe impl<D: fidl::encoding::ResourceDialect>
401 fidl::encoding::Encode<ClientGetPowerLimitRequest, D> for &ClientGetPowerLimitRequest
402 {
403 #[inline]
404 unsafe fn encode(
405 self,
406 encoder: &mut fidl::encoding::Encoder<'_, D>,
407 offset: usize,
408 _depth: fidl::encoding::Depth,
409 ) -> fidl::Result<()> {
410 encoder.debug_check_bounds::<ClientGetPowerLimitRequest>(offset);
411 unsafe {
412 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
414 (buf_ptr as *mut ClientGetPowerLimitRequest)
415 .write_unaligned((self as *const ClientGetPowerLimitRequest).read());
416 }
419 Ok(())
420 }
421 }
422 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u64, D>>
423 fidl::encoding::Encode<ClientGetPowerLimitRequest, D> for (T0,)
424 {
425 #[inline]
426 unsafe fn encode(
427 self,
428 encoder: &mut fidl::encoding::Encoder<'_, D>,
429 offset: usize,
430 depth: fidl::encoding::Depth,
431 ) -> fidl::Result<()> {
432 encoder.debug_check_bounds::<ClientGetPowerLimitRequest>(offset);
433 self.0.encode(encoder, offset + 0, depth)?;
437 Ok(())
438 }
439 }
440
441 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
442 for ClientGetPowerLimitRequest
443 {
444 #[inline(always)]
445 fn new_empty() -> Self {
446 Self { node_id: fidl::new_empty!(u64, D) }
447 }
448
449 #[inline]
450 unsafe fn decode(
451 &mut self,
452 decoder: &mut fidl::encoding::Decoder<'_, D>,
453 offset: usize,
454 _depth: fidl::encoding::Depth,
455 ) -> fidl::Result<()> {
456 decoder.debug_check_bounds::<Self>(offset);
457 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
458 unsafe {
461 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
462 }
463 Ok(())
464 }
465 }
466
467 impl fidl::encoding::ValueTypeMarker for ClientSetPowerLimitBypassRequest {
468 type Borrowed<'a> = &'a Self;
469 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
470 value
471 }
472 }
473
474 unsafe impl fidl::encoding::TypeMarker for ClientSetPowerLimitBypassRequest {
475 type Owned = Self;
476
477 #[inline(always)]
478 fn inline_align(_context: fidl::encoding::Context) -> usize {
479 8
480 }
481
482 #[inline(always)]
483 fn inline_size(_context: fidl::encoding::Context) -> usize {
484 16
485 }
486 #[inline(always)]
487 fn encode_is_copy() -> bool {
488 true
489 }
490
491 #[inline(always)]
492 fn decode_is_copy() -> bool {
493 true
494 }
495 }
496
497 unsafe impl<D: fidl::encoding::ResourceDialect>
498 fidl::encoding::Encode<ClientSetPowerLimitBypassRequest, D>
499 for &ClientSetPowerLimitBypassRequest
500 {
501 #[inline]
502 unsafe fn encode(
503 self,
504 encoder: &mut fidl::encoding::Encoder<'_, D>,
505 offset: usize,
506 _depth: fidl::encoding::Depth,
507 ) -> fidl::Result<()> {
508 encoder.debug_check_bounds::<ClientSetPowerLimitBypassRequest>(offset);
509 unsafe {
510 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
512 (buf_ptr as *mut ClientSetPowerLimitBypassRequest)
513 .write_unaligned((self as *const ClientSetPowerLimitBypassRequest).read());
514 }
517 Ok(())
518 }
519 }
520 unsafe impl<
521 D: fidl::encoding::ResourceDialect,
522 T0: fidl::encoding::Encode<u64, D>,
523 T1: fidl::encoding::Encode<u64, D>,
524 > fidl::encoding::Encode<ClientSetPowerLimitBypassRequest, D> for (T0, T1)
525 {
526 #[inline]
527 unsafe fn encode(
528 self,
529 encoder: &mut fidl::encoding::Encoder<'_, D>,
530 offset: usize,
531 depth: fidl::encoding::Depth,
532 ) -> fidl::Result<()> {
533 encoder.debug_check_bounds::<ClientSetPowerLimitBypassRequest>(offset);
534 self.0.encode(encoder, offset + 0, depth)?;
538 self.1.encode(encoder, offset + 8, depth)?;
539 Ok(())
540 }
541 }
542
543 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
544 for ClientSetPowerLimitBypassRequest
545 {
546 #[inline(always)]
547 fn new_empty() -> Self {
548 Self { node_id: fidl::new_empty!(u64, D), bypass_time_ms: fidl::new_empty!(u64, D) }
549 }
550
551 #[inline]
552 unsafe fn decode(
553 &mut self,
554 decoder: &mut fidl::encoding::Decoder<'_, D>,
555 offset: usize,
556 _depth: fidl::encoding::Depth,
557 ) -> fidl::Result<()> {
558 decoder.debug_check_bounds::<Self>(offset);
559 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
560 unsafe {
563 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 16);
564 }
565 Ok(())
566 }
567 }
568
569 impl fidl::encoding::ValueTypeMarker for ClientSetPowerLimitRequest {
570 type Borrowed<'a> = &'a Self;
571 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
572 value
573 }
574 }
575
576 unsafe impl fidl::encoding::TypeMarker for ClientSetPowerLimitRequest {
577 type Owned = Self;
578
579 #[inline(always)]
580 fn inline_align(_context: fidl::encoding::Context) -> usize {
581 8
582 }
583
584 #[inline(always)]
585 fn inline_size(_context: fidl::encoding::Context) -> usize {
586 16
587 }
588 #[inline(always)]
589 fn encode_is_copy() -> bool {
590 true
591 }
592
593 #[inline(always)]
594 fn decode_is_copy() -> bool {
595 true
596 }
597 }
598
599 unsafe impl<D: fidl::encoding::ResourceDialect>
600 fidl::encoding::Encode<ClientSetPowerLimitRequest, D> for &ClientSetPowerLimitRequest
601 {
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::<ClientSetPowerLimitRequest>(offset);
610 unsafe {
611 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
613 (buf_ptr as *mut ClientSetPowerLimitRequest)
614 .write_unaligned((self as *const ClientSetPowerLimitRequest).read());
615 }
618 Ok(())
619 }
620 }
621 unsafe impl<
622 D: fidl::encoding::ResourceDialect,
623 T0: fidl::encoding::Encode<u64, D>,
624 T1: fidl::encoding::Encode<u64, D>,
625 > fidl::encoding::Encode<ClientSetPowerLimitRequest, D> for (T0, T1)
626 {
627 #[inline]
628 unsafe fn encode(
629 self,
630 encoder: &mut fidl::encoding::Encoder<'_, D>,
631 offset: usize,
632 depth: fidl::encoding::Depth,
633 ) -> fidl::Result<()> {
634 encoder.debug_check_bounds::<ClientSetPowerLimitRequest>(offset);
635 self.0.encode(encoder, offset + 0, depth)?;
639 self.1.encode(encoder, offset + 8, depth)?;
640 Ok(())
641 }
642 }
643
644 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
645 for ClientSetPowerLimitRequest
646 {
647 #[inline(always)]
648 fn new_empty() -> Self {
649 Self { node_id: fidl::new_empty!(u64, D), power_limit_uw: fidl::new_empty!(u64, D) }
650 }
651
652 #[inline]
653 unsafe fn decode(
654 &mut self,
655 decoder: &mut fidl::encoding::Decoder<'_, D>,
656 offset: usize,
657 _depth: fidl::encoding::Depth,
658 ) -> fidl::Result<()> {
659 decoder.debug_check_bounds::<Self>(offset);
660 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
661 unsafe {
664 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 16);
665 }
666 Ok(())
667 }
668 }
669
670 impl fidl::encoding::ValueTypeMarker for ClientStateWatcherWatchResponse {
671 type Borrowed<'a> = &'a Self;
672 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
673 value
674 }
675 }
676
677 unsafe impl fidl::encoding::TypeMarker for ClientStateWatcherWatchResponse {
678 type Owned = Self;
679
680 #[inline(always)]
681 fn inline_align(_context: fidl::encoding::Context) -> usize {
682 8
683 }
684
685 #[inline(always)]
686 fn inline_size(_context: fidl::encoding::Context) -> usize {
687 16
688 }
689 }
690
691 unsafe impl<D: fidl::encoding::ResourceDialect>
692 fidl::encoding::Encode<ClientStateWatcherWatchResponse, D>
693 for &ClientStateWatcherWatchResponse
694 {
695 #[inline]
696 unsafe fn encode(
697 self,
698 encoder: &mut fidl::encoding::Encoder<'_, D>,
699 offset: usize,
700 _depth: fidl::encoding::Depth,
701 ) -> fidl::Result<()> {
702 encoder.debug_check_bounds::<ClientStateWatcherWatchResponse>(offset);
703 fidl::encoding::Encode::<ClientStateWatcherWatchResponse, D>::encode(
705 (<fidl::encoding::Vector<u64, 32> as fidl::encoding::ValueTypeMarker>::borrow(
706 &self.domain_opps,
707 ),),
708 encoder,
709 offset,
710 _depth,
711 )
712 }
713 }
714 unsafe impl<
715 D: fidl::encoding::ResourceDialect,
716 T0: fidl::encoding::Encode<fidl::encoding::Vector<u64, 32>, D>,
717 > fidl::encoding::Encode<ClientStateWatcherWatchResponse, D> for (T0,)
718 {
719 #[inline]
720 unsafe fn encode(
721 self,
722 encoder: &mut fidl::encoding::Encoder<'_, D>,
723 offset: usize,
724 depth: fidl::encoding::Depth,
725 ) -> fidl::Result<()> {
726 encoder.debug_check_bounds::<ClientStateWatcherWatchResponse>(offset);
727 self.0.encode(encoder, offset + 0, depth)?;
731 Ok(())
732 }
733 }
734
735 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
736 for ClientStateWatcherWatchResponse
737 {
738 #[inline(always)]
739 fn new_empty() -> Self {
740 Self { domain_opps: fidl::new_empty!(fidl::encoding::Vector<u64, 32>, D) }
741 }
742
743 #[inline]
744 unsafe fn decode(
745 &mut self,
746 decoder: &mut fidl::encoding::Decoder<'_, D>,
747 offset: usize,
748 _depth: fidl::encoding::Depth,
749 ) -> fidl::Result<()> {
750 decoder.debug_check_bounds::<Self>(offset);
751 fidl::decode!(fidl::encoding::Vector<u64, 32>, D, &mut self.domain_opps, decoder, offset + 0, _depth)?;
753 Ok(())
754 }
755 }
756
757 impl fidl::encoding::ValueTypeMarker for ClientGetPowerLimitBypassResponse {
758 type Borrowed<'a> = &'a Self;
759 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
760 value
761 }
762 }
763
764 unsafe impl fidl::encoding::TypeMarker for ClientGetPowerLimitBypassResponse {
765 type Owned = Self;
766
767 #[inline(always)]
768 fn inline_align(_context: fidl::encoding::Context) -> usize {
769 8
770 }
771
772 #[inline(always)]
773 fn inline_size(_context: fidl::encoding::Context) -> usize {
774 8
775 }
776 #[inline(always)]
777 fn encode_is_copy() -> bool {
778 true
779 }
780
781 #[inline(always)]
782 fn decode_is_copy() -> bool {
783 true
784 }
785 }
786
787 unsafe impl<D: fidl::encoding::ResourceDialect>
788 fidl::encoding::Encode<ClientGetPowerLimitBypassResponse, D>
789 for &ClientGetPowerLimitBypassResponse
790 {
791 #[inline]
792 unsafe fn encode(
793 self,
794 encoder: &mut fidl::encoding::Encoder<'_, D>,
795 offset: usize,
796 _depth: fidl::encoding::Depth,
797 ) -> fidl::Result<()> {
798 encoder.debug_check_bounds::<ClientGetPowerLimitBypassResponse>(offset);
799 unsafe {
800 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
802 (buf_ptr as *mut ClientGetPowerLimitBypassResponse)
803 .write_unaligned((self as *const ClientGetPowerLimitBypassResponse).read());
804 }
807 Ok(())
808 }
809 }
810 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u64, D>>
811 fidl::encoding::Encode<ClientGetPowerLimitBypassResponse, D> for (T0,)
812 {
813 #[inline]
814 unsafe fn encode(
815 self,
816 encoder: &mut fidl::encoding::Encoder<'_, D>,
817 offset: usize,
818 depth: fidl::encoding::Depth,
819 ) -> fidl::Result<()> {
820 encoder.debug_check_bounds::<ClientGetPowerLimitBypassResponse>(offset);
821 self.0.encode(encoder, offset + 0, depth)?;
825 Ok(())
826 }
827 }
828
829 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
830 for ClientGetPowerLimitBypassResponse
831 {
832 #[inline(always)]
833 fn new_empty() -> Self {
834 Self { remaining_bypass_ms: fidl::new_empty!(u64, D) }
835 }
836
837 #[inline]
838 unsafe fn decode(
839 &mut self,
840 decoder: &mut fidl::encoding::Decoder<'_, D>,
841 offset: usize,
842 _depth: fidl::encoding::Depth,
843 ) -> fidl::Result<()> {
844 decoder.debug_check_bounds::<Self>(offset);
845 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
846 unsafe {
849 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
850 }
851 Ok(())
852 }
853 }
854
855 impl fidl::encoding::ValueTypeMarker for ClientGetPowerLimitResponse {
856 type Borrowed<'a> = &'a Self;
857 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
858 value
859 }
860 }
861
862 unsafe impl fidl::encoding::TypeMarker for ClientGetPowerLimitResponse {
863 type Owned = Self;
864
865 #[inline(always)]
866 fn inline_align(_context: fidl::encoding::Context) -> usize {
867 8
868 }
869
870 #[inline(always)]
871 fn inline_size(_context: fidl::encoding::Context) -> usize {
872 8
873 }
874 #[inline(always)]
875 fn encode_is_copy() -> bool {
876 true
877 }
878
879 #[inline(always)]
880 fn decode_is_copy() -> bool {
881 true
882 }
883 }
884
885 unsafe impl<D: fidl::encoding::ResourceDialect>
886 fidl::encoding::Encode<ClientGetPowerLimitResponse, D> for &ClientGetPowerLimitResponse
887 {
888 #[inline]
889 unsafe fn encode(
890 self,
891 encoder: &mut fidl::encoding::Encoder<'_, D>,
892 offset: usize,
893 _depth: fidl::encoding::Depth,
894 ) -> fidl::Result<()> {
895 encoder.debug_check_bounds::<ClientGetPowerLimitResponse>(offset);
896 unsafe {
897 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
899 (buf_ptr as *mut ClientGetPowerLimitResponse)
900 .write_unaligned((self as *const ClientGetPowerLimitResponse).read());
901 }
904 Ok(())
905 }
906 }
907 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u64, D>>
908 fidl::encoding::Encode<ClientGetPowerLimitResponse, D> for (T0,)
909 {
910 #[inline]
911 unsafe fn encode(
912 self,
913 encoder: &mut fidl::encoding::Encoder<'_, D>,
914 offset: usize,
915 depth: fidl::encoding::Depth,
916 ) -> fidl::Result<()> {
917 encoder.debug_check_bounds::<ClientGetPowerLimitResponse>(offset);
918 self.0.encode(encoder, offset + 0, depth)?;
922 Ok(())
923 }
924 }
925
926 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
927 for ClientGetPowerLimitResponse
928 {
929 #[inline(always)]
930 fn new_empty() -> Self {
931 Self { power_limit_uw: fidl::new_empty!(u64, D) }
932 }
933
934 #[inline]
935 unsafe fn decode(
936 &mut self,
937 decoder: &mut fidl::encoding::Decoder<'_, D>,
938 offset: usize,
939 _depth: fidl::encoding::Depth,
940 ) -> fidl::Result<()> {
941 decoder.debug_check_bounds::<Self>(offset);
942 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
943 unsafe {
946 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
947 }
948 Ok(())
949 }
950 }
951
952 impl fidl::encoding::ValueTypeMarker for ClientGetPowercapTreeResponse {
953 type Borrowed<'a> = &'a Self;
954 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
955 value
956 }
957 }
958
959 unsafe impl fidl::encoding::TypeMarker for ClientGetPowercapTreeResponse {
960 type Owned = Self;
961
962 #[inline(always)]
963 fn inline_align(_context: fidl::encoding::Context) -> usize {
964 8
965 }
966
967 #[inline(always)]
968 fn inline_size(_context: fidl::encoding::Context) -> usize {
969 16
970 }
971 }
972
973 unsafe impl<D: fidl::encoding::ResourceDialect>
974 fidl::encoding::Encode<ClientGetPowercapTreeResponse, D>
975 for &ClientGetPowercapTreeResponse
976 {
977 #[inline]
978 unsafe fn encode(
979 self,
980 encoder: &mut fidl::encoding::Encoder<'_, D>,
981 offset: usize,
982 _depth: fidl::encoding::Depth,
983 ) -> fidl::Result<()> {
984 encoder.debug_check_bounds::<ClientGetPowercapTreeResponse>(offset);
985 fidl::encoding::Encode::<ClientGetPowercapTreeResponse, D>::encode(
987 (
988 <fidl::encoding::Vector<PowercapNodeInfo, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.nodes),
989 ),
990 encoder, offset, _depth
991 )
992 }
993 }
994 unsafe impl<
995 D: fidl::encoding::ResourceDialect,
996 T0: fidl::encoding::Encode<fidl::encoding::Vector<PowercapNodeInfo, 64>, D>,
997 > fidl::encoding::Encode<ClientGetPowercapTreeResponse, D> for (T0,)
998 {
999 #[inline]
1000 unsafe fn encode(
1001 self,
1002 encoder: &mut fidl::encoding::Encoder<'_, D>,
1003 offset: usize,
1004 depth: fidl::encoding::Depth,
1005 ) -> fidl::Result<()> {
1006 encoder.debug_check_bounds::<ClientGetPowercapTreeResponse>(offset);
1007 self.0.encode(encoder, offset + 0, depth)?;
1011 Ok(())
1012 }
1013 }
1014
1015 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1016 for ClientGetPowercapTreeResponse
1017 {
1018 #[inline(always)]
1019 fn new_empty() -> Self {
1020 Self { nodes: fidl::new_empty!(fidl::encoding::Vector<PowercapNodeInfo, 64>, D) }
1021 }
1022
1023 #[inline]
1024 unsafe fn decode(
1025 &mut self,
1026 decoder: &mut fidl::encoding::Decoder<'_, D>,
1027 offset: usize,
1028 _depth: fidl::encoding::Depth,
1029 ) -> fidl::Result<()> {
1030 decoder.debug_check_bounds::<Self>(offset);
1031 fidl::decode!(fidl::encoding::Vector<PowercapNodeInfo, 64>, D, &mut self.nodes, decoder, offset + 0, _depth)?;
1033 Ok(())
1034 }
1035 }
1036
1037 impl PowercapNodeInfo {
1038 #[inline(always)]
1039 fn max_ordinal_present(&self) -> u64 {
1040 if let Some(_) = self.supports_bypass {
1041 return 9;
1042 }
1043 if let Some(_) = self.power_levels_uw {
1044 return 8;
1045 }
1046 if let Some(_) = self.min_power_uw {
1047 return 7;
1048 }
1049 if let Some(_) = self.max_power_uw {
1050 return 6;
1051 }
1052 if let Some(_) = self.constraint_name {
1053 return 5;
1054 }
1055 if let Some(_) = self.name {
1056 return 4;
1057 }
1058 if let Some(_) = self.zone_path {
1059 return 3;
1060 }
1061 if let Some(_) = self.parent_node_id {
1062 return 2;
1063 }
1064 if let Some(_) = self.node_id {
1065 return 1;
1066 }
1067 0
1068 }
1069 }
1070
1071 impl fidl::encoding::ValueTypeMarker for PowercapNodeInfo {
1072 type Borrowed<'a> = &'a Self;
1073 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1074 value
1075 }
1076 }
1077
1078 unsafe impl fidl::encoding::TypeMarker for PowercapNodeInfo {
1079 type Owned = Self;
1080
1081 #[inline(always)]
1082 fn inline_align(_context: fidl::encoding::Context) -> usize {
1083 8
1084 }
1085
1086 #[inline(always)]
1087 fn inline_size(_context: fidl::encoding::Context) -> usize {
1088 16
1089 }
1090 }
1091
1092 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PowercapNodeInfo, D>
1093 for &PowercapNodeInfo
1094 {
1095 unsafe fn encode(
1096 self,
1097 encoder: &mut fidl::encoding::Encoder<'_, D>,
1098 offset: usize,
1099 mut depth: fidl::encoding::Depth,
1100 ) -> fidl::Result<()> {
1101 encoder.debug_check_bounds::<PowercapNodeInfo>(offset);
1102 let max_ordinal: u64 = self.max_ordinal_present();
1104 encoder.write_num(max_ordinal, offset);
1105 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1106 if max_ordinal == 0 {
1108 return Ok(());
1109 }
1110 depth.increment()?;
1111 let envelope_size = 8;
1112 let bytes_len = max_ordinal as usize * envelope_size;
1113 #[allow(unused_variables)]
1114 let offset = encoder.out_of_line_offset(bytes_len);
1115 let mut _prev_end_offset: usize = 0;
1116 if 1 > max_ordinal {
1117 return Ok(());
1118 }
1119
1120 let cur_offset: usize = (1 - 1) * envelope_size;
1123
1124 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1126
1127 fidl::encoding::encode_in_envelope_optional::<u64, D>(
1132 self.node_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1133 encoder,
1134 offset + cur_offset,
1135 depth,
1136 )?;
1137
1138 _prev_end_offset = cur_offset + envelope_size;
1139 if 2 > max_ordinal {
1140 return Ok(());
1141 }
1142
1143 let cur_offset: usize = (2 - 1) * envelope_size;
1146
1147 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1149
1150 fidl::encoding::encode_in_envelope_optional::<u64, D>(
1155 self.parent_node_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1156 encoder,
1157 offset + cur_offset,
1158 depth,
1159 )?;
1160
1161 _prev_end_offset = cur_offset + envelope_size;
1162 if 3 > max_ordinal {
1163 return Ok(());
1164 }
1165
1166 let cur_offset: usize = (3 - 1) * envelope_size;
1169
1170 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1172
1173 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<128>, D>(
1178 self.zone_path.as_ref().map(
1179 <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow,
1180 ),
1181 encoder,
1182 offset + cur_offset,
1183 depth,
1184 )?;
1185
1186 _prev_end_offset = cur_offset + envelope_size;
1187 if 4 > max_ordinal {
1188 return Ok(());
1189 }
1190
1191 let cur_offset: usize = (4 - 1) * envelope_size;
1194
1195 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1197
1198 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
1203 self.name.as_ref().map(
1204 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
1205 ),
1206 encoder,
1207 offset + cur_offset,
1208 depth,
1209 )?;
1210
1211 _prev_end_offset = cur_offset + envelope_size;
1212 if 5 > max_ordinal {
1213 return Ok(());
1214 }
1215
1216 let cur_offset: usize = (5 - 1) * envelope_size;
1219
1220 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1222
1223 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
1228 self.constraint_name.as_ref().map(
1229 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
1230 ),
1231 encoder,
1232 offset + cur_offset,
1233 depth,
1234 )?;
1235
1236 _prev_end_offset = cur_offset + envelope_size;
1237 if 6 > max_ordinal {
1238 return Ok(());
1239 }
1240
1241 let cur_offset: usize = (6 - 1) * envelope_size;
1244
1245 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1247
1248 fidl::encoding::encode_in_envelope_optional::<u64, D>(
1253 self.max_power_uw.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1254 encoder,
1255 offset + cur_offset,
1256 depth,
1257 )?;
1258
1259 _prev_end_offset = cur_offset + envelope_size;
1260 if 7 > max_ordinal {
1261 return Ok(());
1262 }
1263
1264 let cur_offset: usize = (7 - 1) * envelope_size;
1267
1268 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1270
1271 fidl::encoding::encode_in_envelope_optional::<u64, D>(
1276 self.min_power_uw.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1277 encoder,
1278 offset + cur_offset,
1279 depth,
1280 )?;
1281
1282 _prev_end_offset = cur_offset + envelope_size;
1283 if 8 > max_ordinal {
1284 return Ok(());
1285 }
1286
1287 let cur_offset: usize = (8 - 1) * envelope_size;
1290
1291 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1293
1294 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u64, 64>, D>(
1299 self.power_levels_uw.as_ref().map(
1300 <fidl::encoding::Vector<u64, 64> as fidl::encoding::ValueTypeMarker>::borrow,
1301 ),
1302 encoder,
1303 offset + cur_offset,
1304 depth,
1305 )?;
1306
1307 _prev_end_offset = cur_offset + envelope_size;
1308 if 9 > max_ordinal {
1309 return Ok(());
1310 }
1311
1312 let cur_offset: usize = (9 - 1) * envelope_size;
1315
1316 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1318
1319 fidl::encoding::encode_in_envelope_optional::<bool, D>(
1324 self.supports_bypass
1325 .as_ref()
1326 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
1327 encoder,
1328 offset + cur_offset,
1329 depth,
1330 )?;
1331
1332 _prev_end_offset = cur_offset + envelope_size;
1333
1334 Ok(())
1335 }
1336 }
1337
1338 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PowercapNodeInfo {
1339 #[inline(always)]
1340 fn new_empty() -> Self {
1341 Self::default()
1342 }
1343
1344 unsafe fn decode(
1345 &mut self,
1346 decoder: &mut fidl::encoding::Decoder<'_, D>,
1347 offset: usize,
1348 mut depth: fidl::encoding::Depth,
1349 ) -> fidl::Result<()> {
1350 decoder.debug_check_bounds::<Self>(offset);
1351 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1352 None => return Err(fidl::Error::NotNullable),
1353 Some(len) => len,
1354 };
1355 if len == 0 {
1357 return Ok(());
1358 };
1359 depth.increment()?;
1360 let envelope_size = 8;
1361 let bytes_len = len * envelope_size;
1362 let offset = decoder.out_of_line_offset(bytes_len)?;
1363 let mut _next_ordinal_to_read = 0;
1365 let mut next_offset = offset;
1366 let end_offset = offset + bytes_len;
1367 _next_ordinal_to_read += 1;
1368 if next_offset >= end_offset {
1369 return Ok(());
1370 }
1371
1372 while _next_ordinal_to_read < 1 {
1374 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1375 _next_ordinal_to_read += 1;
1376 next_offset += envelope_size;
1377 }
1378
1379 let next_out_of_line = decoder.next_out_of_line();
1380 let handles_before = decoder.remaining_handles();
1381 if let Some((inlined, num_bytes, num_handles)) =
1382 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1383 {
1384 let member_inline_size =
1385 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1386 if inlined != (member_inline_size <= 4) {
1387 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1388 }
1389 let inner_offset;
1390 let mut inner_depth = depth.clone();
1391 if inlined {
1392 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1393 inner_offset = next_offset;
1394 } else {
1395 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1396 inner_depth.increment()?;
1397 }
1398 let val_ref = self.node_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
1399 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
1400 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1401 {
1402 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1403 }
1404 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1405 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1406 }
1407 }
1408
1409 next_offset += envelope_size;
1410 _next_ordinal_to_read += 1;
1411 if next_offset >= end_offset {
1412 return Ok(());
1413 }
1414
1415 while _next_ordinal_to_read < 2 {
1417 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1418 _next_ordinal_to_read += 1;
1419 next_offset += envelope_size;
1420 }
1421
1422 let next_out_of_line = decoder.next_out_of_line();
1423 let handles_before = decoder.remaining_handles();
1424 if let Some((inlined, num_bytes, num_handles)) =
1425 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1426 {
1427 let member_inline_size =
1428 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1429 if inlined != (member_inline_size <= 4) {
1430 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1431 }
1432 let inner_offset;
1433 let mut inner_depth = depth.clone();
1434 if inlined {
1435 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1436 inner_offset = next_offset;
1437 } else {
1438 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1439 inner_depth.increment()?;
1440 }
1441 let val_ref = self.parent_node_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
1442 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
1443 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1444 {
1445 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1446 }
1447 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1448 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1449 }
1450 }
1451
1452 next_offset += envelope_size;
1453 _next_ordinal_to_read += 1;
1454 if next_offset >= end_offset {
1455 return Ok(());
1456 }
1457
1458 while _next_ordinal_to_read < 3 {
1460 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1461 _next_ordinal_to_read += 1;
1462 next_offset += envelope_size;
1463 }
1464
1465 let next_out_of_line = decoder.next_out_of_line();
1466 let handles_before = decoder.remaining_handles();
1467 if let Some((inlined, num_bytes, num_handles)) =
1468 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1469 {
1470 let member_inline_size =
1471 <fidl::encoding::BoundedString<128> as fidl::encoding::TypeMarker>::inline_size(
1472 decoder.context,
1473 );
1474 if inlined != (member_inline_size <= 4) {
1475 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1476 }
1477 let inner_offset;
1478 let mut inner_depth = depth.clone();
1479 if inlined {
1480 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1481 inner_offset = next_offset;
1482 } else {
1483 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1484 inner_depth.increment()?;
1485 }
1486 let val_ref = self
1487 .zone_path
1488 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<128>, D));
1489 fidl::decode!(
1490 fidl::encoding::BoundedString<128>,
1491 D,
1492 val_ref,
1493 decoder,
1494 inner_offset,
1495 inner_depth
1496 )?;
1497 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1498 {
1499 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1500 }
1501 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1502 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1503 }
1504 }
1505
1506 next_offset += envelope_size;
1507 _next_ordinal_to_read += 1;
1508 if next_offset >= end_offset {
1509 return Ok(());
1510 }
1511
1512 while _next_ordinal_to_read < 4 {
1514 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1515 _next_ordinal_to_read += 1;
1516 next_offset += envelope_size;
1517 }
1518
1519 let next_out_of_line = decoder.next_out_of_line();
1520 let handles_before = decoder.remaining_handles();
1521 if let Some((inlined, num_bytes, num_handles)) =
1522 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1523 {
1524 let member_inline_size =
1525 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
1526 decoder.context,
1527 );
1528 if inlined != (member_inline_size <= 4) {
1529 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1530 }
1531 let inner_offset;
1532 let mut inner_depth = depth.clone();
1533 if inlined {
1534 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1535 inner_offset = next_offset;
1536 } else {
1537 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1538 inner_depth.increment()?;
1539 }
1540 let val_ref = self
1541 .name
1542 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
1543 fidl::decode!(
1544 fidl::encoding::BoundedString<64>,
1545 D,
1546 val_ref,
1547 decoder,
1548 inner_offset,
1549 inner_depth
1550 )?;
1551 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1552 {
1553 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1554 }
1555 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1556 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1557 }
1558 }
1559
1560 next_offset += envelope_size;
1561 _next_ordinal_to_read += 1;
1562 if next_offset >= end_offset {
1563 return Ok(());
1564 }
1565
1566 while _next_ordinal_to_read < 5 {
1568 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1569 _next_ordinal_to_read += 1;
1570 next_offset += envelope_size;
1571 }
1572
1573 let next_out_of_line = decoder.next_out_of_line();
1574 let handles_before = decoder.remaining_handles();
1575 if let Some((inlined, num_bytes, num_handles)) =
1576 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1577 {
1578 let member_inline_size =
1579 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
1580 decoder.context,
1581 );
1582 if inlined != (member_inline_size <= 4) {
1583 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1584 }
1585 let inner_offset;
1586 let mut inner_depth = depth.clone();
1587 if inlined {
1588 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1589 inner_offset = next_offset;
1590 } else {
1591 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1592 inner_depth.increment()?;
1593 }
1594 let val_ref = self
1595 .constraint_name
1596 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
1597 fidl::decode!(
1598 fidl::encoding::BoundedString<64>,
1599 D,
1600 val_ref,
1601 decoder,
1602 inner_offset,
1603 inner_depth
1604 )?;
1605 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1606 {
1607 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1608 }
1609 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1610 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1611 }
1612 }
1613
1614 next_offset += envelope_size;
1615 _next_ordinal_to_read += 1;
1616 if next_offset >= end_offset {
1617 return Ok(());
1618 }
1619
1620 while _next_ordinal_to_read < 6 {
1622 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1623 _next_ordinal_to_read += 1;
1624 next_offset += envelope_size;
1625 }
1626
1627 let next_out_of_line = decoder.next_out_of_line();
1628 let handles_before = decoder.remaining_handles();
1629 if let Some((inlined, num_bytes, num_handles)) =
1630 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1631 {
1632 let member_inline_size =
1633 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1634 if inlined != (member_inline_size <= 4) {
1635 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1636 }
1637 let inner_offset;
1638 let mut inner_depth = depth.clone();
1639 if inlined {
1640 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1641 inner_offset = next_offset;
1642 } else {
1643 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1644 inner_depth.increment()?;
1645 }
1646 let val_ref = self.max_power_uw.get_or_insert_with(|| fidl::new_empty!(u64, D));
1647 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
1648 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1649 {
1650 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1651 }
1652 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1653 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1654 }
1655 }
1656
1657 next_offset += envelope_size;
1658 _next_ordinal_to_read += 1;
1659 if next_offset >= end_offset {
1660 return Ok(());
1661 }
1662
1663 while _next_ordinal_to_read < 7 {
1665 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1666 _next_ordinal_to_read += 1;
1667 next_offset += envelope_size;
1668 }
1669
1670 let next_out_of_line = decoder.next_out_of_line();
1671 let handles_before = decoder.remaining_handles();
1672 if let Some((inlined, num_bytes, num_handles)) =
1673 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1674 {
1675 let member_inline_size =
1676 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1677 if inlined != (member_inline_size <= 4) {
1678 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1679 }
1680 let inner_offset;
1681 let mut inner_depth = depth.clone();
1682 if inlined {
1683 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1684 inner_offset = next_offset;
1685 } else {
1686 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1687 inner_depth.increment()?;
1688 }
1689 let val_ref = self.min_power_uw.get_or_insert_with(|| fidl::new_empty!(u64, D));
1690 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
1691 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1692 {
1693 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1694 }
1695 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1696 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1697 }
1698 }
1699
1700 next_offset += envelope_size;
1701 _next_ordinal_to_read += 1;
1702 if next_offset >= end_offset {
1703 return Ok(());
1704 }
1705
1706 while _next_ordinal_to_read < 8 {
1708 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1709 _next_ordinal_to_read += 1;
1710 next_offset += envelope_size;
1711 }
1712
1713 let next_out_of_line = decoder.next_out_of_line();
1714 let handles_before = decoder.remaining_handles();
1715 if let Some((inlined, num_bytes, num_handles)) =
1716 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1717 {
1718 let member_inline_size =
1719 <fidl::encoding::Vector<u64, 64> as fidl::encoding::TypeMarker>::inline_size(
1720 decoder.context,
1721 );
1722 if inlined != (member_inline_size <= 4) {
1723 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1724 }
1725 let inner_offset;
1726 let mut inner_depth = depth.clone();
1727 if inlined {
1728 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1729 inner_offset = next_offset;
1730 } else {
1731 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1732 inner_depth.increment()?;
1733 }
1734 let val_ref = self
1735 .power_levels_uw
1736 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u64, 64>, D));
1737 fidl::decode!(fidl::encoding::Vector<u64, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
1738 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1739 {
1740 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1741 }
1742 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1743 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1744 }
1745 }
1746
1747 next_offset += envelope_size;
1748 _next_ordinal_to_read += 1;
1749 if next_offset >= end_offset {
1750 return Ok(());
1751 }
1752
1753 while _next_ordinal_to_read < 9 {
1755 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1756 _next_ordinal_to_read += 1;
1757 next_offset += envelope_size;
1758 }
1759
1760 let next_out_of_line = decoder.next_out_of_line();
1761 let handles_before = decoder.remaining_handles();
1762 if let Some((inlined, num_bytes, num_handles)) =
1763 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1764 {
1765 let member_inline_size =
1766 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1767 if inlined != (member_inline_size <= 4) {
1768 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1769 }
1770 let inner_offset;
1771 let mut inner_depth = depth.clone();
1772 if inlined {
1773 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1774 inner_offset = next_offset;
1775 } else {
1776 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1777 inner_depth.increment()?;
1778 }
1779 let val_ref = self.supports_bypass.get_or_insert_with(|| fidl::new_empty!(bool, D));
1780 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
1781 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1782 {
1783 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1784 }
1785 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1786 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1787 }
1788 }
1789
1790 next_offset += envelope_size;
1791
1792 while next_offset < end_offset {
1794 _next_ordinal_to_read += 1;
1795 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1796 next_offset += envelope_size;
1797 }
1798
1799 Ok(())
1800 }
1801 }
1802}