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 GAUGE_STATISTIC_MAX_LENGTH: u8 = 5;
12
13pub const MAX_DRIVER_SPECIFIC_COUNTERS: u32 = 127;
14
15pub const MAX_DRIVER_SPECIFIC_GAUGES: u32 = 127;
16
17pub const MAX_HISTOGRAMS_PER_TYPE: u8 = 8;
21
22pub const MAX_NOISE_FLOOR_SAMPLES: u8 = 255;
27
28pub const MAX_RSSI_SAMPLES: u8 = 255;
30
31pub const MAX_RX_RATE_INDEX_SAMPLES: u8 = 196;
33
34pub const MAX_SNR_SAMPLES: u16 = 256;
36
37pub const STAT_NAME_MAX_LENGTH: u8 = 127;
38
39#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
41#[repr(u8)]
42pub enum AntennaFreq {
43 Antenna2G = 1,
45 Antenna5G = 2,
47}
48
49impl AntennaFreq {
50 #[inline]
51 pub fn from_primitive(prim: u8) -> Option<Self> {
52 match prim {
53 1 => Some(Self::Antenna2G),
54 2 => Some(Self::Antenna5G),
55 _ => None,
56 }
57 }
58
59 #[inline]
60 pub const fn into_primitive(self) -> u8 {
61 self as u8
62 }
63}
64
65#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
67pub enum GaugeStatistic {
68 Min,
69 Max,
70 Sum,
71 Last,
72 Mean,
73 #[doc(hidden)]
74 __SourceBreaking {
75 unknown_ordinal: u8,
76 },
77}
78
79#[macro_export]
81macro_rules! GaugeStatisticUnknown {
82 () => {
83 _
84 };
85}
86
87impl GaugeStatistic {
88 #[inline]
89 pub fn from_primitive(prim: u8) -> Option<Self> {
90 match prim {
91 1 => Some(Self::Min),
92 2 => Some(Self::Max),
93 3 => Some(Self::Sum),
94 4 => Some(Self::Last),
95 5 => Some(Self::Mean),
96 _ => None,
97 }
98 }
99
100 #[inline]
101 pub fn from_primitive_allow_unknown(prim: u8) -> Self {
102 match prim {
103 1 => Self::Min,
104 2 => Self::Max,
105 3 => Self::Sum,
106 4 => Self::Last,
107 5 => Self::Mean,
108 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
109 }
110 }
111
112 #[inline]
113 pub fn unknown() -> Self {
114 Self::__SourceBreaking { unknown_ordinal: 0xff }
115 }
116
117 #[inline]
118 pub const fn into_primitive(self) -> u8 {
119 match self {
120 Self::Min => 1,
121 Self::Max => 2,
122 Self::Sum => 3,
123 Self::Last => 4,
124 Self::Mean => 5,
125 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
126 }
127 }
128
129 #[inline]
130 pub fn is_unknown(&self) -> bool {
131 match self {
132 Self::__SourceBreaking { unknown_ordinal: _ } => true,
133 _ => false,
134 }
135 }
136}
137
138#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
141#[repr(u8)]
142pub enum HistScope {
143 Station = 1,
144 PerAntenna = 2,
145}
146
147impl HistScope {
148 #[inline]
149 pub fn from_primitive(prim: u8) -> Option<Self> {
150 match prim {
151 1 => Some(Self::Station),
152 2 => Some(Self::PerAntenna),
153 _ => None,
154 }
155 }
156
157 #[inline]
158 pub const fn into_primitive(self) -> u8 {
159 self as u8
160 }
161}
162
163#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
165pub struct AntennaId {
166 pub freq: AntennaFreq,
167 pub index: u8,
169}
170
171impl fidl::Persistable for AntennaId {}
172
173#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
175#[repr(C)]
176pub struct HistBucket {
177 pub bucket_index: u16,
180 pub num_samples: u64,
182}
183
184impl fidl::Persistable for HistBucket {}
185
186#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
188pub struct NoiseFloorHistogram {
189 pub hist_scope: HistScope,
190 pub antenna_id: Option<Box<AntennaId>>,
192 pub noise_floor_samples: Vec<HistBucket>,
197 pub invalid_samples: u64,
199}
200
201impl fidl::Persistable for NoiseFloorHistogram {}
202
203#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
205pub struct RssiHistogram {
206 pub hist_scope: HistScope,
207 pub antenna_id: Option<Box<AntennaId>>,
209 pub rssi_samples: Vec<HistBucket>,
214 pub invalid_samples: u64,
216}
217
218impl fidl::Persistable for RssiHistogram {}
219
220#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
222pub struct RxRateIndexHistogram {
223 pub hist_scope: HistScope,
224 pub antenna_id: Option<Box<AntennaId>>,
226 pub rx_rate_index_samples: Vec<HistBucket>,
251 pub invalid_samples: u64,
253}
254
255impl fidl::Persistable for RxRateIndexHistogram {}
256
257#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
259pub struct SnrHistogram {
260 pub hist_scope: HistScope,
261 pub antenna_id: Option<Box<AntennaId>>,
263 pub snr_samples: Vec<HistBucket>,
268 pub invalid_samples: u64,
270}
271
272impl fidl::Persistable for SnrHistogram {}
273
274#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
275#[repr(C)]
276pub struct UnnamedCounter {
277 pub id: u16,
278 pub count: u64,
279}
280
281impl fidl::Persistable for UnnamedCounter {}
282
283#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
284#[repr(C)]
285pub struct UnnamedGauge {
286 pub id: u16,
287 pub value: i64,
288}
289
290impl fidl::Persistable for UnnamedGauge {}
291
292#[derive(Clone, Debug, Default, PartialEq)]
293pub struct ConnectionSignalReport {
294 pub channel: Option<fidl_fuchsia_wlan_ieee80211__common::WlanChannel>,
295 pub tx_rate_500kbps: Option<u32>,
296 pub rssi_dbm: Option<i8>,
297 pub snr_db: Option<i8>,
298 #[doc(hidden)]
299 pub __source_breaking: fidl::marker::SourceBreaking,
300}
301
302impl fidl::Persistable for ConnectionSignalReport {}
303
304#[derive(Clone, Debug, Default, PartialEq)]
305pub struct ConnectionStats {
306 pub connection_id: Option<u8>,
316 pub driver_specific_counters: Option<Vec<UnnamedCounter>>,
317 pub driver_specific_gauges: Option<Vec<UnnamedGauge>>,
318 pub rx_unicast_total: Option<u64>,
319 pub rx_unicast_drop: Option<u64>,
320 pub rx_multicast: Option<u64>,
321 pub tx_total: Option<u64>,
322 pub tx_drop: Option<u64>,
323 #[doc(hidden)]
324 pub __source_breaking: fidl::marker::SourceBreaking,
325}
326
327impl fidl::Persistable for ConnectionStats {}
328
329#[derive(Clone, Debug, Default, PartialEq)]
330pub struct IfaceHistogramStats {
331 pub noise_floor_histograms: Option<Vec<NoiseFloorHistogram>>,
333 pub rssi_histograms: Option<Vec<RssiHistogram>>,
335 pub rx_rate_index_histograms: Option<Vec<RxRateIndexHistogram>>,
337 pub snr_histograms: Option<Vec<SnrHistogram>>,
339 #[doc(hidden)]
340 pub __source_breaking: fidl::marker::SourceBreaking,
341}
342
343impl fidl::Persistable for IfaceHistogramStats {}
344
345#[derive(Clone, Debug, Default, PartialEq)]
346pub struct IfaceStats {
347 pub connection_stats: Option<ConnectionStats>,
349 pub driver_specific_counters: Option<Vec<UnnamedCounter>>,
350 pub driver_specific_gauges: Option<Vec<UnnamedGauge>>,
351 #[doc(hidden)]
352 pub __source_breaking: fidl::marker::SourceBreaking,
353}
354
355impl fidl::Persistable for IfaceStats {}
356
357#[derive(Clone, Debug, Default, PartialEq)]
360pub struct InspectCounterConfig {
361 pub counter_id: Option<u16>,
362 pub counter_name: Option<String>,
363 #[doc(hidden)]
364 pub __source_breaking: fidl::marker::SourceBreaking,
365}
366
367impl fidl::Persistable for InspectCounterConfig {}
368
369#[derive(Clone, Debug, Default, PartialEq)]
372pub struct InspectGaugeConfig {
373 pub gauge_id: Option<u16>,
374 pub gauge_name: Option<String>,
375 pub statistics: Option<Vec<GaugeStatistic>>,
377 #[doc(hidden)]
378 pub __source_breaking: fidl::marker::SourceBreaking,
379}
380
381impl fidl::Persistable for InspectGaugeConfig {}
382
383#[derive(Clone, Debug, Default, PartialEq)]
384pub struct SignalReport {
385 pub connection_signal_report: Option<ConnectionSignalReport>,
388 #[doc(hidden)]
389 pub __source_breaking: fidl::marker::SourceBreaking,
390}
391
392impl fidl::Persistable for SignalReport {}
393
394#[derive(Clone, Debug, Default, PartialEq)]
395pub struct TelemetrySupport {
396 pub inspect_counter_configs: Option<Vec<InspectCounterConfig>>,
398 pub inspect_gauge_configs: Option<Vec<InspectGaugeConfig>>,
400 #[doc(hidden)]
401 pub __source_breaking: fidl::marker::SourceBreaking,
402}
403
404impl fidl::Persistable for TelemetrySupport {}
405
406mod internal {
407 use super::*;
408 unsafe impl fidl::encoding::TypeMarker for AntennaFreq {
409 type Owned = Self;
410
411 #[inline(always)]
412 fn inline_align(_context: fidl::encoding::Context) -> usize {
413 std::mem::align_of::<u8>()
414 }
415
416 #[inline(always)]
417 fn inline_size(_context: fidl::encoding::Context) -> usize {
418 std::mem::size_of::<u8>()
419 }
420
421 #[inline(always)]
422 fn encode_is_copy() -> bool {
423 true
424 }
425
426 #[inline(always)]
427 fn decode_is_copy() -> bool {
428 false
429 }
430 }
431
432 impl fidl::encoding::ValueTypeMarker for AntennaFreq {
433 type Borrowed<'a> = Self;
434 #[inline(always)]
435 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
436 *value
437 }
438 }
439
440 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for AntennaFreq {
441 #[inline]
442 unsafe fn encode(
443 self,
444 encoder: &mut fidl::encoding::Encoder<'_, D>,
445 offset: usize,
446 _depth: fidl::encoding::Depth,
447 ) -> fidl::Result<()> {
448 encoder.debug_check_bounds::<Self>(offset);
449 encoder.write_num(self.into_primitive(), offset);
450 Ok(())
451 }
452 }
453
454 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AntennaFreq {
455 #[inline(always)]
456 fn new_empty() -> Self {
457 Self::Antenna2G
458 }
459
460 #[inline]
461 unsafe fn decode(
462 &mut self,
463 decoder: &mut fidl::encoding::Decoder<'_, D>,
464 offset: usize,
465 _depth: fidl::encoding::Depth,
466 ) -> fidl::Result<()> {
467 decoder.debug_check_bounds::<Self>(offset);
468 let prim = decoder.read_num::<u8>(offset);
469
470 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
471 Ok(())
472 }
473 }
474 unsafe impl fidl::encoding::TypeMarker for GaugeStatistic {
475 type Owned = Self;
476
477 #[inline(always)]
478 fn inline_align(_context: fidl::encoding::Context) -> usize {
479 std::mem::align_of::<u8>()
480 }
481
482 #[inline(always)]
483 fn inline_size(_context: fidl::encoding::Context) -> usize {
484 std::mem::size_of::<u8>()
485 }
486
487 #[inline(always)]
488 fn encode_is_copy() -> bool {
489 false
490 }
491
492 #[inline(always)]
493 fn decode_is_copy() -> bool {
494 false
495 }
496 }
497
498 impl fidl::encoding::ValueTypeMarker for GaugeStatistic {
499 type Borrowed<'a> = Self;
500 #[inline(always)]
501 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
502 *value
503 }
504 }
505
506 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for GaugeStatistic {
507 #[inline]
508 unsafe fn encode(
509 self,
510 encoder: &mut fidl::encoding::Encoder<'_, D>,
511 offset: usize,
512 _depth: fidl::encoding::Depth,
513 ) -> fidl::Result<()> {
514 encoder.debug_check_bounds::<Self>(offset);
515 encoder.write_num(self.into_primitive(), offset);
516 Ok(())
517 }
518 }
519
520 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for GaugeStatistic {
521 #[inline(always)]
522 fn new_empty() -> Self {
523 Self::unknown()
524 }
525
526 #[inline]
527 unsafe fn decode(
528 &mut self,
529 decoder: &mut fidl::encoding::Decoder<'_, D>,
530 offset: usize,
531 _depth: fidl::encoding::Depth,
532 ) -> fidl::Result<()> {
533 decoder.debug_check_bounds::<Self>(offset);
534 let prim = decoder.read_num::<u8>(offset);
535
536 *self = Self::from_primitive_allow_unknown(prim);
537 Ok(())
538 }
539 }
540 unsafe impl fidl::encoding::TypeMarker for HistScope {
541 type Owned = Self;
542
543 #[inline(always)]
544 fn inline_align(_context: fidl::encoding::Context) -> usize {
545 std::mem::align_of::<u8>()
546 }
547
548 #[inline(always)]
549 fn inline_size(_context: fidl::encoding::Context) -> usize {
550 std::mem::size_of::<u8>()
551 }
552
553 #[inline(always)]
554 fn encode_is_copy() -> bool {
555 true
556 }
557
558 #[inline(always)]
559 fn decode_is_copy() -> bool {
560 false
561 }
562 }
563
564 impl fidl::encoding::ValueTypeMarker for HistScope {
565 type Borrowed<'a> = Self;
566 #[inline(always)]
567 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
568 *value
569 }
570 }
571
572 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for HistScope {
573 #[inline]
574 unsafe fn encode(
575 self,
576 encoder: &mut fidl::encoding::Encoder<'_, D>,
577 offset: usize,
578 _depth: fidl::encoding::Depth,
579 ) -> fidl::Result<()> {
580 encoder.debug_check_bounds::<Self>(offset);
581 encoder.write_num(self.into_primitive(), offset);
582 Ok(())
583 }
584 }
585
586 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HistScope {
587 #[inline(always)]
588 fn new_empty() -> Self {
589 Self::Station
590 }
591
592 #[inline]
593 unsafe fn decode(
594 &mut self,
595 decoder: &mut fidl::encoding::Decoder<'_, D>,
596 offset: usize,
597 _depth: fidl::encoding::Depth,
598 ) -> fidl::Result<()> {
599 decoder.debug_check_bounds::<Self>(offset);
600 let prim = decoder.read_num::<u8>(offset);
601
602 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
603 Ok(())
604 }
605 }
606
607 impl fidl::encoding::ValueTypeMarker for AntennaId {
608 type Borrowed<'a> = &'a Self;
609 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
610 value
611 }
612 }
613
614 unsafe impl fidl::encoding::TypeMarker for AntennaId {
615 type Owned = Self;
616
617 #[inline(always)]
618 fn inline_align(_context: fidl::encoding::Context) -> usize {
619 1
620 }
621
622 #[inline(always)]
623 fn inline_size(_context: fidl::encoding::Context) -> usize {
624 2
625 }
626 }
627
628 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AntennaId, D>
629 for &AntennaId
630 {
631 #[inline]
632 unsafe fn encode(
633 self,
634 encoder: &mut fidl::encoding::Encoder<'_, D>,
635 offset: usize,
636 _depth: fidl::encoding::Depth,
637 ) -> fidl::Result<()> {
638 encoder.debug_check_bounds::<AntennaId>(offset);
639 fidl::encoding::Encode::<AntennaId, D>::encode(
641 (
642 <AntennaFreq as fidl::encoding::ValueTypeMarker>::borrow(&self.freq),
643 <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.index),
644 ),
645 encoder,
646 offset,
647 _depth,
648 )
649 }
650 }
651 unsafe impl<
652 D: fidl::encoding::ResourceDialect,
653 T0: fidl::encoding::Encode<AntennaFreq, D>,
654 T1: fidl::encoding::Encode<u8, D>,
655 > fidl::encoding::Encode<AntennaId, D> for (T0, T1)
656 {
657 #[inline]
658 unsafe fn encode(
659 self,
660 encoder: &mut fidl::encoding::Encoder<'_, D>,
661 offset: usize,
662 depth: fidl::encoding::Depth,
663 ) -> fidl::Result<()> {
664 encoder.debug_check_bounds::<AntennaId>(offset);
665 self.0.encode(encoder, offset + 0, depth)?;
669 self.1.encode(encoder, offset + 1, depth)?;
670 Ok(())
671 }
672 }
673
674 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AntennaId {
675 #[inline(always)]
676 fn new_empty() -> Self {
677 Self { freq: fidl::new_empty!(AntennaFreq, D), index: fidl::new_empty!(u8, D) }
678 }
679
680 #[inline]
681 unsafe fn decode(
682 &mut self,
683 decoder: &mut fidl::encoding::Decoder<'_, D>,
684 offset: usize,
685 _depth: fidl::encoding::Depth,
686 ) -> fidl::Result<()> {
687 decoder.debug_check_bounds::<Self>(offset);
688 fidl::decode!(AntennaFreq, D, &mut self.freq, decoder, offset + 0, _depth)?;
690 fidl::decode!(u8, D, &mut self.index, decoder, offset + 1, _depth)?;
691 Ok(())
692 }
693 }
694
695 impl fidl::encoding::ValueTypeMarker for HistBucket {
696 type Borrowed<'a> = &'a Self;
697 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
698 value
699 }
700 }
701
702 unsafe impl fidl::encoding::TypeMarker for HistBucket {
703 type Owned = Self;
704
705 #[inline(always)]
706 fn inline_align(_context: fidl::encoding::Context) -> usize {
707 8
708 }
709
710 #[inline(always)]
711 fn inline_size(_context: fidl::encoding::Context) -> usize {
712 16
713 }
714 }
715
716 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<HistBucket, D>
717 for &HistBucket
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::<HistBucket>(offset);
727 unsafe {
728 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
730 (buf_ptr as *mut HistBucket).write_unaligned((self as *const HistBucket).read());
731 let padding_ptr = buf_ptr.offset(0) as *mut u64;
734 let padding_mask = 0xffffffffffff0000u64;
735 padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
736 }
737 Ok(())
738 }
739 }
740 unsafe impl<
741 D: fidl::encoding::ResourceDialect,
742 T0: fidl::encoding::Encode<u16, D>,
743 T1: fidl::encoding::Encode<u64, D>,
744 > fidl::encoding::Encode<HistBucket, D> for (T0, T1)
745 {
746 #[inline]
747 unsafe fn encode(
748 self,
749 encoder: &mut fidl::encoding::Encoder<'_, D>,
750 offset: usize,
751 depth: fidl::encoding::Depth,
752 ) -> fidl::Result<()> {
753 encoder.debug_check_bounds::<HistBucket>(offset);
754 unsafe {
757 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
758 (ptr as *mut u64).write_unaligned(0);
759 }
760 self.0.encode(encoder, offset + 0, depth)?;
762 self.1.encode(encoder, offset + 8, depth)?;
763 Ok(())
764 }
765 }
766
767 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HistBucket {
768 #[inline(always)]
769 fn new_empty() -> Self {
770 Self { bucket_index: fidl::new_empty!(u16, D), num_samples: fidl::new_empty!(u64, D) }
771 }
772
773 #[inline]
774 unsafe fn decode(
775 &mut self,
776 decoder: &mut fidl::encoding::Decoder<'_, D>,
777 offset: usize,
778 _depth: fidl::encoding::Depth,
779 ) -> fidl::Result<()> {
780 decoder.debug_check_bounds::<Self>(offset);
781 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
782 let ptr = unsafe { buf_ptr.offset(0) };
784 let padval = unsafe { (ptr as *const u64).read_unaligned() };
785 let mask = 0xffffffffffff0000u64;
786 let maskedval = padval & mask;
787 if maskedval != 0 {
788 return Err(fidl::Error::NonZeroPadding {
789 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
790 });
791 }
792 unsafe {
794 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 16);
795 }
796 Ok(())
797 }
798 }
799
800 impl fidl::encoding::ValueTypeMarker for NoiseFloorHistogram {
801 type Borrowed<'a> = &'a Self;
802 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
803 value
804 }
805 }
806
807 unsafe impl fidl::encoding::TypeMarker for NoiseFloorHistogram {
808 type Owned = Self;
809
810 #[inline(always)]
811 fn inline_align(_context: fidl::encoding::Context) -> usize {
812 8
813 }
814
815 #[inline(always)]
816 fn inline_size(_context: fidl::encoding::Context) -> usize {
817 40
818 }
819 }
820
821 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NoiseFloorHistogram, D>
822 for &NoiseFloorHistogram
823 {
824 #[inline]
825 unsafe fn encode(
826 self,
827 encoder: &mut fidl::encoding::Encoder<'_, D>,
828 offset: usize,
829 _depth: fidl::encoding::Depth,
830 ) -> fidl::Result<()> {
831 encoder.debug_check_bounds::<NoiseFloorHistogram>(offset);
832 fidl::encoding::Encode::<NoiseFloorHistogram, D>::encode(
834 (
835 <HistScope as fidl::encoding::ValueTypeMarker>::borrow(&self.hist_scope),
836 <fidl::encoding::Boxed<AntennaId> as fidl::encoding::ValueTypeMarker>::borrow(&self.antenna_id),
837 <fidl::encoding::Vector<HistBucket, 255> as fidl::encoding::ValueTypeMarker>::borrow(&self.noise_floor_samples),
838 <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.invalid_samples),
839 ),
840 encoder, offset, _depth
841 )
842 }
843 }
844 unsafe impl<
845 D: fidl::encoding::ResourceDialect,
846 T0: fidl::encoding::Encode<HistScope, D>,
847 T1: fidl::encoding::Encode<fidl::encoding::Boxed<AntennaId>, D>,
848 T2: fidl::encoding::Encode<fidl::encoding::Vector<HistBucket, 255>, D>,
849 T3: fidl::encoding::Encode<u64, D>,
850 > fidl::encoding::Encode<NoiseFloorHistogram, D> for (T0, T1, T2, T3)
851 {
852 #[inline]
853 unsafe fn encode(
854 self,
855 encoder: &mut fidl::encoding::Encoder<'_, D>,
856 offset: usize,
857 depth: fidl::encoding::Depth,
858 ) -> fidl::Result<()> {
859 encoder.debug_check_bounds::<NoiseFloorHistogram>(offset);
860 unsafe {
863 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
864 (ptr as *mut u64).write_unaligned(0);
865 }
866 self.0.encode(encoder, offset + 0, depth)?;
868 self.1.encode(encoder, offset + 8, depth)?;
869 self.2.encode(encoder, offset + 16, depth)?;
870 self.3.encode(encoder, offset + 32, depth)?;
871 Ok(())
872 }
873 }
874
875 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NoiseFloorHistogram {
876 #[inline(always)]
877 fn new_empty() -> Self {
878 Self {
879 hist_scope: fidl::new_empty!(HistScope, D),
880 antenna_id: fidl::new_empty!(fidl::encoding::Boxed<AntennaId>, D),
881 noise_floor_samples: fidl::new_empty!(fidl::encoding::Vector<HistBucket, 255>, D),
882 invalid_samples: fidl::new_empty!(u64, D),
883 }
884 }
885
886 #[inline]
887 unsafe fn decode(
888 &mut self,
889 decoder: &mut fidl::encoding::Decoder<'_, D>,
890 offset: usize,
891 _depth: fidl::encoding::Depth,
892 ) -> fidl::Result<()> {
893 decoder.debug_check_bounds::<Self>(offset);
894 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
896 let padval = unsafe { (ptr as *const u64).read_unaligned() };
897 let mask = 0xffffffffffffff00u64;
898 let maskedval = padval & mask;
899 if maskedval != 0 {
900 return Err(fidl::Error::NonZeroPadding {
901 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
902 });
903 }
904 fidl::decode!(HistScope, D, &mut self.hist_scope, decoder, offset + 0, _depth)?;
905 fidl::decode!(
906 fidl::encoding::Boxed<AntennaId>,
907 D,
908 &mut self.antenna_id,
909 decoder,
910 offset + 8,
911 _depth
912 )?;
913 fidl::decode!(fidl::encoding::Vector<HistBucket, 255>, D, &mut self.noise_floor_samples, decoder, offset + 16, _depth)?;
914 fidl::decode!(u64, D, &mut self.invalid_samples, decoder, offset + 32, _depth)?;
915 Ok(())
916 }
917 }
918
919 impl fidl::encoding::ValueTypeMarker for RssiHistogram {
920 type Borrowed<'a> = &'a Self;
921 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
922 value
923 }
924 }
925
926 unsafe impl fidl::encoding::TypeMarker for RssiHistogram {
927 type Owned = Self;
928
929 #[inline(always)]
930 fn inline_align(_context: fidl::encoding::Context) -> usize {
931 8
932 }
933
934 #[inline(always)]
935 fn inline_size(_context: fidl::encoding::Context) -> usize {
936 40
937 }
938 }
939
940 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RssiHistogram, D>
941 for &RssiHistogram
942 {
943 #[inline]
944 unsafe fn encode(
945 self,
946 encoder: &mut fidl::encoding::Encoder<'_, D>,
947 offset: usize,
948 _depth: fidl::encoding::Depth,
949 ) -> fidl::Result<()> {
950 encoder.debug_check_bounds::<RssiHistogram>(offset);
951 fidl::encoding::Encode::<RssiHistogram, D>::encode(
953 (
954 <HistScope as fidl::encoding::ValueTypeMarker>::borrow(&self.hist_scope),
955 <fidl::encoding::Boxed<AntennaId> as fidl::encoding::ValueTypeMarker>::borrow(&self.antenna_id),
956 <fidl::encoding::Vector<HistBucket, 255> as fidl::encoding::ValueTypeMarker>::borrow(&self.rssi_samples),
957 <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.invalid_samples),
958 ),
959 encoder, offset, _depth
960 )
961 }
962 }
963 unsafe impl<
964 D: fidl::encoding::ResourceDialect,
965 T0: fidl::encoding::Encode<HistScope, D>,
966 T1: fidl::encoding::Encode<fidl::encoding::Boxed<AntennaId>, D>,
967 T2: fidl::encoding::Encode<fidl::encoding::Vector<HistBucket, 255>, D>,
968 T3: fidl::encoding::Encode<u64, D>,
969 > fidl::encoding::Encode<RssiHistogram, D> for (T0, T1, T2, T3)
970 {
971 #[inline]
972 unsafe fn encode(
973 self,
974 encoder: &mut fidl::encoding::Encoder<'_, D>,
975 offset: usize,
976 depth: fidl::encoding::Depth,
977 ) -> fidl::Result<()> {
978 encoder.debug_check_bounds::<RssiHistogram>(offset);
979 unsafe {
982 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
983 (ptr as *mut u64).write_unaligned(0);
984 }
985 self.0.encode(encoder, offset + 0, depth)?;
987 self.1.encode(encoder, offset + 8, depth)?;
988 self.2.encode(encoder, offset + 16, depth)?;
989 self.3.encode(encoder, offset + 32, depth)?;
990 Ok(())
991 }
992 }
993
994 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RssiHistogram {
995 #[inline(always)]
996 fn new_empty() -> Self {
997 Self {
998 hist_scope: fidl::new_empty!(HistScope, D),
999 antenna_id: fidl::new_empty!(fidl::encoding::Boxed<AntennaId>, D),
1000 rssi_samples: fidl::new_empty!(fidl::encoding::Vector<HistBucket, 255>, D),
1001 invalid_samples: fidl::new_empty!(u64, D),
1002 }
1003 }
1004
1005 #[inline]
1006 unsafe fn decode(
1007 &mut self,
1008 decoder: &mut fidl::encoding::Decoder<'_, D>,
1009 offset: usize,
1010 _depth: fidl::encoding::Depth,
1011 ) -> fidl::Result<()> {
1012 decoder.debug_check_bounds::<Self>(offset);
1013 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
1015 let padval = unsafe { (ptr as *const u64).read_unaligned() };
1016 let mask = 0xffffffffffffff00u64;
1017 let maskedval = padval & mask;
1018 if maskedval != 0 {
1019 return Err(fidl::Error::NonZeroPadding {
1020 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
1021 });
1022 }
1023 fidl::decode!(HistScope, D, &mut self.hist_scope, decoder, offset + 0, _depth)?;
1024 fidl::decode!(
1025 fidl::encoding::Boxed<AntennaId>,
1026 D,
1027 &mut self.antenna_id,
1028 decoder,
1029 offset + 8,
1030 _depth
1031 )?;
1032 fidl::decode!(fidl::encoding::Vector<HistBucket, 255>, D, &mut self.rssi_samples, decoder, offset + 16, _depth)?;
1033 fidl::decode!(u64, D, &mut self.invalid_samples, decoder, offset + 32, _depth)?;
1034 Ok(())
1035 }
1036 }
1037
1038 impl fidl::encoding::ValueTypeMarker for RxRateIndexHistogram {
1039 type Borrowed<'a> = &'a Self;
1040 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1041 value
1042 }
1043 }
1044
1045 unsafe impl fidl::encoding::TypeMarker for RxRateIndexHistogram {
1046 type Owned = Self;
1047
1048 #[inline(always)]
1049 fn inline_align(_context: fidl::encoding::Context) -> usize {
1050 8
1051 }
1052
1053 #[inline(always)]
1054 fn inline_size(_context: fidl::encoding::Context) -> usize {
1055 40
1056 }
1057 }
1058
1059 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RxRateIndexHistogram, D>
1060 for &RxRateIndexHistogram
1061 {
1062 #[inline]
1063 unsafe fn encode(
1064 self,
1065 encoder: &mut fidl::encoding::Encoder<'_, D>,
1066 offset: usize,
1067 _depth: fidl::encoding::Depth,
1068 ) -> fidl::Result<()> {
1069 encoder.debug_check_bounds::<RxRateIndexHistogram>(offset);
1070 fidl::encoding::Encode::<RxRateIndexHistogram, D>::encode(
1072 (
1073 <HistScope as fidl::encoding::ValueTypeMarker>::borrow(&self.hist_scope),
1074 <fidl::encoding::Boxed<AntennaId> as fidl::encoding::ValueTypeMarker>::borrow(&self.antenna_id),
1075 <fidl::encoding::Vector<HistBucket, 196> as fidl::encoding::ValueTypeMarker>::borrow(&self.rx_rate_index_samples),
1076 <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.invalid_samples),
1077 ),
1078 encoder, offset, _depth
1079 )
1080 }
1081 }
1082 unsafe impl<
1083 D: fidl::encoding::ResourceDialect,
1084 T0: fidl::encoding::Encode<HistScope, D>,
1085 T1: fidl::encoding::Encode<fidl::encoding::Boxed<AntennaId>, D>,
1086 T2: fidl::encoding::Encode<fidl::encoding::Vector<HistBucket, 196>, D>,
1087 T3: fidl::encoding::Encode<u64, D>,
1088 > fidl::encoding::Encode<RxRateIndexHistogram, D> for (T0, T1, T2, T3)
1089 {
1090 #[inline]
1091 unsafe fn encode(
1092 self,
1093 encoder: &mut fidl::encoding::Encoder<'_, D>,
1094 offset: usize,
1095 depth: fidl::encoding::Depth,
1096 ) -> fidl::Result<()> {
1097 encoder.debug_check_bounds::<RxRateIndexHistogram>(offset);
1098 unsafe {
1101 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
1102 (ptr as *mut u64).write_unaligned(0);
1103 }
1104 self.0.encode(encoder, offset + 0, depth)?;
1106 self.1.encode(encoder, offset + 8, depth)?;
1107 self.2.encode(encoder, offset + 16, depth)?;
1108 self.3.encode(encoder, offset + 32, depth)?;
1109 Ok(())
1110 }
1111 }
1112
1113 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RxRateIndexHistogram {
1114 #[inline(always)]
1115 fn new_empty() -> Self {
1116 Self {
1117 hist_scope: fidl::new_empty!(HistScope, D),
1118 antenna_id: fidl::new_empty!(fidl::encoding::Boxed<AntennaId>, D),
1119 rx_rate_index_samples: fidl::new_empty!(fidl::encoding::Vector<HistBucket, 196>, D),
1120 invalid_samples: fidl::new_empty!(u64, D),
1121 }
1122 }
1123
1124 #[inline]
1125 unsafe fn decode(
1126 &mut self,
1127 decoder: &mut fidl::encoding::Decoder<'_, D>,
1128 offset: usize,
1129 _depth: fidl::encoding::Depth,
1130 ) -> fidl::Result<()> {
1131 decoder.debug_check_bounds::<Self>(offset);
1132 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
1134 let padval = unsafe { (ptr as *const u64).read_unaligned() };
1135 let mask = 0xffffffffffffff00u64;
1136 let maskedval = padval & mask;
1137 if maskedval != 0 {
1138 return Err(fidl::Error::NonZeroPadding {
1139 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
1140 });
1141 }
1142 fidl::decode!(HistScope, D, &mut self.hist_scope, decoder, offset + 0, _depth)?;
1143 fidl::decode!(
1144 fidl::encoding::Boxed<AntennaId>,
1145 D,
1146 &mut self.antenna_id,
1147 decoder,
1148 offset + 8,
1149 _depth
1150 )?;
1151 fidl::decode!(fidl::encoding::Vector<HistBucket, 196>, D, &mut self.rx_rate_index_samples, decoder, offset + 16, _depth)?;
1152 fidl::decode!(u64, D, &mut self.invalid_samples, decoder, offset + 32, _depth)?;
1153 Ok(())
1154 }
1155 }
1156
1157 impl fidl::encoding::ValueTypeMarker for SnrHistogram {
1158 type Borrowed<'a> = &'a Self;
1159 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1160 value
1161 }
1162 }
1163
1164 unsafe impl fidl::encoding::TypeMarker for SnrHistogram {
1165 type Owned = Self;
1166
1167 #[inline(always)]
1168 fn inline_align(_context: fidl::encoding::Context) -> usize {
1169 8
1170 }
1171
1172 #[inline(always)]
1173 fn inline_size(_context: fidl::encoding::Context) -> usize {
1174 40
1175 }
1176 }
1177
1178 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SnrHistogram, D>
1179 for &SnrHistogram
1180 {
1181 #[inline]
1182 unsafe fn encode(
1183 self,
1184 encoder: &mut fidl::encoding::Encoder<'_, D>,
1185 offset: usize,
1186 _depth: fidl::encoding::Depth,
1187 ) -> fidl::Result<()> {
1188 encoder.debug_check_bounds::<SnrHistogram>(offset);
1189 fidl::encoding::Encode::<SnrHistogram, D>::encode(
1191 (
1192 <HistScope as fidl::encoding::ValueTypeMarker>::borrow(&self.hist_scope),
1193 <fidl::encoding::Boxed<AntennaId> as fidl::encoding::ValueTypeMarker>::borrow(&self.antenna_id),
1194 <fidl::encoding::Vector<HistBucket, 256> as fidl::encoding::ValueTypeMarker>::borrow(&self.snr_samples),
1195 <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.invalid_samples),
1196 ),
1197 encoder, offset, _depth
1198 )
1199 }
1200 }
1201 unsafe impl<
1202 D: fidl::encoding::ResourceDialect,
1203 T0: fidl::encoding::Encode<HistScope, D>,
1204 T1: fidl::encoding::Encode<fidl::encoding::Boxed<AntennaId>, D>,
1205 T2: fidl::encoding::Encode<fidl::encoding::Vector<HistBucket, 256>, D>,
1206 T3: fidl::encoding::Encode<u64, D>,
1207 > fidl::encoding::Encode<SnrHistogram, D> for (T0, T1, T2, T3)
1208 {
1209 #[inline]
1210 unsafe fn encode(
1211 self,
1212 encoder: &mut fidl::encoding::Encoder<'_, D>,
1213 offset: usize,
1214 depth: fidl::encoding::Depth,
1215 ) -> fidl::Result<()> {
1216 encoder.debug_check_bounds::<SnrHistogram>(offset);
1217 unsafe {
1220 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
1221 (ptr as *mut u64).write_unaligned(0);
1222 }
1223 self.0.encode(encoder, offset + 0, depth)?;
1225 self.1.encode(encoder, offset + 8, depth)?;
1226 self.2.encode(encoder, offset + 16, depth)?;
1227 self.3.encode(encoder, offset + 32, depth)?;
1228 Ok(())
1229 }
1230 }
1231
1232 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SnrHistogram {
1233 #[inline(always)]
1234 fn new_empty() -> Self {
1235 Self {
1236 hist_scope: fidl::new_empty!(HistScope, D),
1237 antenna_id: fidl::new_empty!(fidl::encoding::Boxed<AntennaId>, D),
1238 snr_samples: fidl::new_empty!(fidl::encoding::Vector<HistBucket, 256>, D),
1239 invalid_samples: fidl::new_empty!(u64, D),
1240 }
1241 }
1242
1243 #[inline]
1244 unsafe fn decode(
1245 &mut self,
1246 decoder: &mut fidl::encoding::Decoder<'_, D>,
1247 offset: usize,
1248 _depth: fidl::encoding::Depth,
1249 ) -> fidl::Result<()> {
1250 decoder.debug_check_bounds::<Self>(offset);
1251 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
1253 let padval = unsafe { (ptr as *const u64).read_unaligned() };
1254 let mask = 0xffffffffffffff00u64;
1255 let maskedval = padval & mask;
1256 if maskedval != 0 {
1257 return Err(fidl::Error::NonZeroPadding {
1258 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
1259 });
1260 }
1261 fidl::decode!(HistScope, D, &mut self.hist_scope, decoder, offset + 0, _depth)?;
1262 fidl::decode!(
1263 fidl::encoding::Boxed<AntennaId>,
1264 D,
1265 &mut self.antenna_id,
1266 decoder,
1267 offset + 8,
1268 _depth
1269 )?;
1270 fidl::decode!(fidl::encoding::Vector<HistBucket, 256>, D, &mut self.snr_samples, decoder, offset + 16, _depth)?;
1271 fidl::decode!(u64, D, &mut self.invalid_samples, decoder, offset + 32, _depth)?;
1272 Ok(())
1273 }
1274 }
1275
1276 impl fidl::encoding::ValueTypeMarker for UnnamedCounter {
1277 type Borrowed<'a> = &'a Self;
1278 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1279 value
1280 }
1281 }
1282
1283 unsafe impl fidl::encoding::TypeMarker for UnnamedCounter {
1284 type Owned = Self;
1285
1286 #[inline(always)]
1287 fn inline_align(_context: fidl::encoding::Context) -> usize {
1288 8
1289 }
1290
1291 #[inline(always)]
1292 fn inline_size(_context: fidl::encoding::Context) -> usize {
1293 16
1294 }
1295 }
1296
1297 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UnnamedCounter, D>
1298 for &UnnamedCounter
1299 {
1300 #[inline]
1301 unsafe fn encode(
1302 self,
1303 encoder: &mut fidl::encoding::Encoder<'_, D>,
1304 offset: usize,
1305 _depth: fidl::encoding::Depth,
1306 ) -> fidl::Result<()> {
1307 encoder.debug_check_bounds::<UnnamedCounter>(offset);
1308 unsafe {
1309 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1311 (buf_ptr as *mut UnnamedCounter)
1312 .write_unaligned((self as *const UnnamedCounter).read());
1313 let padding_ptr = buf_ptr.offset(0) as *mut u64;
1316 let padding_mask = 0xffffffffffff0000u64;
1317 padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
1318 }
1319 Ok(())
1320 }
1321 }
1322 unsafe impl<
1323 D: fidl::encoding::ResourceDialect,
1324 T0: fidl::encoding::Encode<u16, D>,
1325 T1: fidl::encoding::Encode<u64, D>,
1326 > fidl::encoding::Encode<UnnamedCounter, D> for (T0, T1)
1327 {
1328 #[inline]
1329 unsafe fn encode(
1330 self,
1331 encoder: &mut fidl::encoding::Encoder<'_, D>,
1332 offset: usize,
1333 depth: fidl::encoding::Depth,
1334 ) -> fidl::Result<()> {
1335 encoder.debug_check_bounds::<UnnamedCounter>(offset);
1336 unsafe {
1339 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
1340 (ptr as *mut u64).write_unaligned(0);
1341 }
1342 self.0.encode(encoder, offset + 0, depth)?;
1344 self.1.encode(encoder, offset + 8, depth)?;
1345 Ok(())
1346 }
1347 }
1348
1349 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UnnamedCounter {
1350 #[inline(always)]
1351 fn new_empty() -> Self {
1352 Self { id: fidl::new_empty!(u16, D), count: fidl::new_empty!(u64, D) }
1353 }
1354
1355 #[inline]
1356 unsafe fn decode(
1357 &mut self,
1358 decoder: &mut fidl::encoding::Decoder<'_, D>,
1359 offset: usize,
1360 _depth: fidl::encoding::Depth,
1361 ) -> fidl::Result<()> {
1362 decoder.debug_check_bounds::<Self>(offset);
1363 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1364 let ptr = unsafe { buf_ptr.offset(0) };
1366 let padval = unsafe { (ptr as *const u64).read_unaligned() };
1367 let mask = 0xffffffffffff0000u64;
1368 let maskedval = padval & mask;
1369 if maskedval != 0 {
1370 return Err(fidl::Error::NonZeroPadding {
1371 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
1372 });
1373 }
1374 unsafe {
1376 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 16);
1377 }
1378 Ok(())
1379 }
1380 }
1381
1382 impl fidl::encoding::ValueTypeMarker for UnnamedGauge {
1383 type Borrowed<'a> = &'a Self;
1384 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1385 value
1386 }
1387 }
1388
1389 unsafe impl fidl::encoding::TypeMarker for UnnamedGauge {
1390 type Owned = Self;
1391
1392 #[inline(always)]
1393 fn inline_align(_context: fidl::encoding::Context) -> usize {
1394 8
1395 }
1396
1397 #[inline(always)]
1398 fn inline_size(_context: fidl::encoding::Context) -> usize {
1399 16
1400 }
1401 }
1402
1403 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UnnamedGauge, D>
1404 for &UnnamedGauge
1405 {
1406 #[inline]
1407 unsafe fn encode(
1408 self,
1409 encoder: &mut fidl::encoding::Encoder<'_, D>,
1410 offset: usize,
1411 _depth: fidl::encoding::Depth,
1412 ) -> fidl::Result<()> {
1413 encoder.debug_check_bounds::<UnnamedGauge>(offset);
1414 unsafe {
1415 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1417 (buf_ptr as *mut UnnamedGauge)
1418 .write_unaligned((self as *const UnnamedGauge).read());
1419 let padding_ptr = buf_ptr.offset(0) as *mut u64;
1422 let padding_mask = 0xffffffffffff0000u64;
1423 padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
1424 }
1425 Ok(())
1426 }
1427 }
1428 unsafe impl<
1429 D: fidl::encoding::ResourceDialect,
1430 T0: fidl::encoding::Encode<u16, D>,
1431 T1: fidl::encoding::Encode<i64, D>,
1432 > fidl::encoding::Encode<UnnamedGauge, D> for (T0, T1)
1433 {
1434 #[inline]
1435 unsafe fn encode(
1436 self,
1437 encoder: &mut fidl::encoding::Encoder<'_, D>,
1438 offset: usize,
1439 depth: fidl::encoding::Depth,
1440 ) -> fidl::Result<()> {
1441 encoder.debug_check_bounds::<UnnamedGauge>(offset);
1442 unsafe {
1445 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
1446 (ptr as *mut u64).write_unaligned(0);
1447 }
1448 self.0.encode(encoder, offset + 0, depth)?;
1450 self.1.encode(encoder, offset + 8, depth)?;
1451 Ok(())
1452 }
1453 }
1454
1455 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UnnamedGauge {
1456 #[inline(always)]
1457 fn new_empty() -> Self {
1458 Self { id: fidl::new_empty!(u16, D), value: fidl::new_empty!(i64, D) }
1459 }
1460
1461 #[inline]
1462 unsafe fn decode(
1463 &mut self,
1464 decoder: &mut fidl::encoding::Decoder<'_, D>,
1465 offset: usize,
1466 _depth: fidl::encoding::Depth,
1467 ) -> fidl::Result<()> {
1468 decoder.debug_check_bounds::<Self>(offset);
1469 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1470 let ptr = unsafe { buf_ptr.offset(0) };
1472 let padval = unsafe { (ptr as *const u64).read_unaligned() };
1473 let mask = 0xffffffffffff0000u64;
1474 let maskedval = padval & mask;
1475 if maskedval != 0 {
1476 return Err(fidl::Error::NonZeroPadding {
1477 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
1478 });
1479 }
1480 unsafe {
1482 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 16);
1483 }
1484 Ok(())
1485 }
1486 }
1487
1488 impl ConnectionSignalReport {
1489 #[inline(always)]
1490 fn max_ordinal_present(&self) -> u64 {
1491 if let Some(_) = self.snr_db {
1492 return 4;
1493 }
1494 if let Some(_) = self.rssi_dbm {
1495 return 3;
1496 }
1497 if let Some(_) = self.tx_rate_500kbps {
1498 return 2;
1499 }
1500 if let Some(_) = self.channel {
1501 return 1;
1502 }
1503 0
1504 }
1505 }
1506
1507 impl fidl::encoding::ValueTypeMarker for ConnectionSignalReport {
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 ConnectionSignalReport {
1515 type Owned = Self;
1516
1517 #[inline(always)]
1518 fn inline_align(_context: fidl::encoding::Context) -> usize {
1519 8
1520 }
1521
1522 #[inline(always)]
1523 fn inline_size(_context: fidl::encoding::Context) -> usize {
1524 16
1525 }
1526 }
1527
1528 unsafe impl<D: fidl::encoding::ResourceDialect>
1529 fidl::encoding::Encode<ConnectionSignalReport, D> for &ConnectionSignalReport
1530 {
1531 unsafe fn encode(
1532 self,
1533 encoder: &mut fidl::encoding::Encoder<'_, D>,
1534 offset: usize,
1535 mut depth: fidl::encoding::Depth,
1536 ) -> fidl::Result<()> {
1537 encoder.debug_check_bounds::<ConnectionSignalReport>(offset);
1538 let max_ordinal: u64 = self.max_ordinal_present();
1540 encoder.write_num(max_ordinal, offset);
1541 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1542 if max_ordinal == 0 {
1544 return Ok(());
1545 }
1546 depth.increment()?;
1547 let envelope_size = 8;
1548 let bytes_len = max_ordinal as usize * envelope_size;
1549 #[allow(unused_variables)]
1550 let offset = encoder.out_of_line_offset(bytes_len);
1551 let mut _prev_end_offset: usize = 0;
1552 if 1 > max_ordinal {
1553 return Ok(());
1554 }
1555
1556 let cur_offset: usize = (1 - 1) * envelope_size;
1559
1560 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1562
1563 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::WlanChannel, D>(
1568 self.channel.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::WlanChannel as fidl::encoding::ValueTypeMarker>::borrow),
1569 encoder, offset + cur_offset, depth
1570 )?;
1571
1572 _prev_end_offset = cur_offset + envelope_size;
1573 if 2 > max_ordinal {
1574 return Ok(());
1575 }
1576
1577 let cur_offset: usize = (2 - 1) * envelope_size;
1580
1581 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1583
1584 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1589 self.tx_rate_500kbps.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1590 encoder,
1591 offset + cur_offset,
1592 depth,
1593 )?;
1594
1595 _prev_end_offset = cur_offset + envelope_size;
1596 if 3 > max_ordinal {
1597 return Ok(());
1598 }
1599
1600 let cur_offset: usize = (3 - 1) * envelope_size;
1603
1604 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1606
1607 fidl::encoding::encode_in_envelope_optional::<i8, D>(
1612 self.rssi_dbm.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
1613 encoder,
1614 offset + cur_offset,
1615 depth,
1616 )?;
1617
1618 _prev_end_offset = cur_offset + envelope_size;
1619 if 4 > max_ordinal {
1620 return Ok(());
1621 }
1622
1623 let cur_offset: usize = (4 - 1) * envelope_size;
1626
1627 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1629
1630 fidl::encoding::encode_in_envelope_optional::<i8, D>(
1635 self.snr_db.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
1636 encoder,
1637 offset + cur_offset,
1638 depth,
1639 )?;
1640
1641 _prev_end_offset = cur_offset + envelope_size;
1642
1643 Ok(())
1644 }
1645 }
1646
1647 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1648 for ConnectionSignalReport
1649 {
1650 #[inline(always)]
1651 fn new_empty() -> Self {
1652 Self::default()
1653 }
1654
1655 unsafe fn decode(
1656 &mut self,
1657 decoder: &mut fidl::encoding::Decoder<'_, D>,
1658 offset: usize,
1659 mut depth: fidl::encoding::Depth,
1660 ) -> fidl::Result<()> {
1661 decoder.debug_check_bounds::<Self>(offset);
1662 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1663 None => return Err(fidl::Error::NotNullable),
1664 Some(len) => len,
1665 };
1666 if len == 0 {
1668 return Ok(());
1669 };
1670 depth.increment()?;
1671 let envelope_size = 8;
1672 let bytes_len = len * envelope_size;
1673 let offset = decoder.out_of_line_offset(bytes_len)?;
1674 let mut _next_ordinal_to_read = 0;
1676 let mut next_offset = offset;
1677 let end_offset = offset + bytes_len;
1678 _next_ordinal_to_read += 1;
1679 if next_offset >= end_offset {
1680 return Ok(());
1681 }
1682
1683 while _next_ordinal_to_read < 1 {
1685 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1686 _next_ordinal_to_read += 1;
1687 next_offset += envelope_size;
1688 }
1689
1690 let next_out_of_line = decoder.next_out_of_line();
1691 let handles_before = decoder.remaining_handles();
1692 if let Some((inlined, num_bytes, num_handles)) =
1693 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1694 {
1695 let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::WlanChannel as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1696 if inlined != (member_inline_size <= 4) {
1697 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1698 }
1699 let inner_offset;
1700 let mut inner_depth = depth.clone();
1701 if inlined {
1702 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1703 inner_offset = next_offset;
1704 } else {
1705 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1706 inner_depth.increment()?;
1707 }
1708 let val_ref = self.channel.get_or_insert_with(|| {
1709 fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::WlanChannel, D)
1710 });
1711 fidl::decode!(
1712 fidl_fuchsia_wlan_ieee80211__common::WlanChannel,
1713 D,
1714 val_ref,
1715 decoder,
1716 inner_offset,
1717 inner_depth
1718 )?;
1719 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1720 {
1721 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1722 }
1723 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1724 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1725 }
1726 }
1727
1728 next_offset += envelope_size;
1729 _next_ordinal_to_read += 1;
1730 if next_offset >= end_offset {
1731 return Ok(());
1732 }
1733
1734 while _next_ordinal_to_read < 2 {
1736 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1737 _next_ordinal_to_read += 1;
1738 next_offset += envelope_size;
1739 }
1740
1741 let next_out_of_line = decoder.next_out_of_line();
1742 let handles_before = decoder.remaining_handles();
1743 if let Some((inlined, num_bytes, num_handles)) =
1744 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1745 {
1746 let member_inline_size =
1747 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1748 if inlined != (member_inline_size <= 4) {
1749 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1750 }
1751 let inner_offset;
1752 let mut inner_depth = depth.clone();
1753 if inlined {
1754 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1755 inner_offset = next_offset;
1756 } else {
1757 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1758 inner_depth.increment()?;
1759 }
1760 let val_ref = self.tx_rate_500kbps.get_or_insert_with(|| fidl::new_empty!(u32, D));
1761 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
1762 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1763 {
1764 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1765 }
1766 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1767 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1768 }
1769 }
1770
1771 next_offset += envelope_size;
1772 _next_ordinal_to_read += 1;
1773 if next_offset >= end_offset {
1774 return Ok(());
1775 }
1776
1777 while _next_ordinal_to_read < 3 {
1779 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1780 _next_ordinal_to_read += 1;
1781 next_offset += envelope_size;
1782 }
1783
1784 let next_out_of_line = decoder.next_out_of_line();
1785 let handles_before = decoder.remaining_handles();
1786 if let Some((inlined, num_bytes, num_handles)) =
1787 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1788 {
1789 let member_inline_size =
1790 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1791 if inlined != (member_inline_size <= 4) {
1792 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1793 }
1794 let inner_offset;
1795 let mut inner_depth = depth.clone();
1796 if inlined {
1797 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1798 inner_offset = next_offset;
1799 } else {
1800 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1801 inner_depth.increment()?;
1802 }
1803 let val_ref = self.rssi_dbm.get_or_insert_with(|| fidl::new_empty!(i8, D));
1804 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
1805 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1806 {
1807 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1808 }
1809 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1810 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1811 }
1812 }
1813
1814 next_offset += envelope_size;
1815 _next_ordinal_to_read += 1;
1816 if next_offset >= end_offset {
1817 return Ok(());
1818 }
1819
1820 while _next_ordinal_to_read < 4 {
1822 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1823 _next_ordinal_to_read += 1;
1824 next_offset += envelope_size;
1825 }
1826
1827 let next_out_of_line = decoder.next_out_of_line();
1828 let handles_before = decoder.remaining_handles();
1829 if let Some((inlined, num_bytes, num_handles)) =
1830 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1831 {
1832 let member_inline_size =
1833 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1834 if inlined != (member_inline_size <= 4) {
1835 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1836 }
1837 let inner_offset;
1838 let mut inner_depth = depth.clone();
1839 if inlined {
1840 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1841 inner_offset = next_offset;
1842 } else {
1843 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1844 inner_depth.increment()?;
1845 }
1846 let val_ref = self.snr_db.get_or_insert_with(|| fidl::new_empty!(i8, D));
1847 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
1848 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1849 {
1850 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1851 }
1852 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1853 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1854 }
1855 }
1856
1857 next_offset += envelope_size;
1858
1859 while next_offset < end_offset {
1861 _next_ordinal_to_read += 1;
1862 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1863 next_offset += envelope_size;
1864 }
1865
1866 Ok(())
1867 }
1868 }
1869
1870 impl ConnectionStats {
1871 #[inline(always)]
1872 fn max_ordinal_present(&self) -> u64 {
1873 if let Some(_) = self.tx_drop {
1874 return 8;
1875 }
1876 if let Some(_) = self.tx_total {
1877 return 7;
1878 }
1879 if let Some(_) = self.rx_multicast {
1880 return 6;
1881 }
1882 if let Some(_) = self.rx_unicast_drop {
1883 return 5;
1884 }
1885 if let Some(_) = self.rx_unicast_total {
1886 return 4;
1887 }
1888 if let Some(_) = self.driver_specific_gauges {
1889 return 3;
1890 }
1891 if let Some(_) = self.driver_specific_counters {
1892 return 2;
1893 }
1894 if let Some(_) = self.connection_id {
1895 return 1;
1896 }
1897 0
1898 }
1899 }
1900
1901 impl fidl::encoding::ValueTypeMarker for ConnectionStats {
1902 type Borrowed<'a> = &'a Self;
1903 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1904 value
1905 }
1906 }
1907
1908 unsafe impl fidl::encoding::TypeMarker for ConnectionStats {
1909 type Owned = Self;
1910
1911 #[inline(always)]
1912 fn inline_align(_context: fidl::encoding::Context) -> usize {
1913 8
1914 }
1915
1916 #[inline(always)]
1917 fn inline_size(_context: fidl::encoding::Context) -> usize {
1918 16
1919 }
1920 }
1921
1922 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConnectionStats, D>
1923 for &ConnectionStats
1924 {
1925 unsafe fn encode(
1926 self,
1927 encoder: &mut fidl::encoding::Encoder<'_, D>,
1928 offset: usize,
1929 mut depth: fidl::encoding::Depth,
1930 ) -> fidl::Result<()> {
1931 encoder.debug_check_bounds::<ConnectionStats>(offset);
1932 let max_ordinal: u64 = self.max_ordinal_present();
1934 encoder.write_num(max_ordinal, offset);
1935 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1936 if max_ordinal == 0 {
1938 return Ok(());
1939 }
1940 depth.increment()?;
1941 let envelope_size = 8;
1942 let bytes_len = max_ordinal as usize * envelope_size;
1943 #[allow(unused_variables)]
1944 let offset = encoder.out_of_line_offset(bytes_len);
1945 let mut _prev_end_offset: usize = 0;
1946 if 1 > max_ordinal {
1947 return Ok(());
1948 }
1949
1950 let cur_offset: usize = (1 - 1) * envelope_size;
1953
1954 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1956
1957 fidl::encoding::encode_in_envelope_optional::<u8, D>(
1962 self.connection_id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
1963 encoder,
1964 offset + cur_offset,
1965 depth,
1966 )?;
1967
1968 _prev_end_offset = cur_offset + envelope_size;
1969 if 2 > max_ordinal {
1970 return Ok(());
1971 }
1972
1973 let cur_offset: usize = (2 - 1) * envelope_size;
1976
1977 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1979
1980 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<UnnamedCounter, 127>, D>(
1985 self.driver_specific_counters.as_ref().map(<fidl::encoding::Vector<UnnamedCounter, 127> as fidl::encoding::ValueTypeMarker>::borrow),
1986 encoder, offset + cur_offset, depth
1987 )?;
1988
1989 _prev_end_offset = cur_offset + envelope_size;
1990 if 3 > max_ordinal {
1991 return Ok(());
1992 }
1993
1994 let cur_offset: usize = (3 - 1) * envelope_size;
1997
1998 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2000
2001 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<UnnamedGauge, 127>, D>(
2006 self.driver_specific_gauges.as_ref().map(<fidl::encoding::Vector<UnnamedGauge, 127> as fidl::encoding::ValueTypeMarker>::borrow),
2007 encoder, offset + cur_offset, depth
2008 )?;
2009
2010 _prev_end_offset = cur_offset + envelope_size;
2011 if 4 > max_ordinal {
2012 return Ok(());
2013 }
2014
2015 let cur_offset: usize = (4 - 1) * envelope_size;
2018
2019 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2021
2022 fidl::encoding::encode_in_envelope_optional::<u64, D>(
2027 self.rx_unicast_total
2028 .as_ref()
2029 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
2030 encoder,
2031 offset + cur_offset,
2032 depth,
2033 )?;
2034
2035 _prev_end_offset = cur_offset + envelope_size;
2036 if 5 > max_ordinal {
2037 return Ok(());
2038 }
2039
2040 let cur_offset: usize = (5 - 1) * envelope_size;
2043
2044 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2046
2047 fidl::encoding::encode_in_envelope_optional::<u64, D>(
2052 self.rx_unicast_drop.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
2053 encoder,
2054 offset + cur_offset,
2055 depth,
2056 )?;
2057
2058 _prev_end_offset = cur_offset + envelope_size;
2059 if 6 > max_ordinal {
2060 return Ok(());
2061 }
2062
2063 let cur_offset: usize = (6 - 1) * envelope_size;
2066
2067 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2069
2070 fidl::encoding::encode_in_envelope_optional::<u64, D>(
2075 self.rx_multicast.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
2076 encoder,
2077 offset + cur_offset,
2078 depth,
2079 )?;
2080
2081 _prev_end_offset = cur_offset + envelope_size;
2082 if 7 > max_ordinal {
2083 return Ok(());
2084 }
2085
2086 let cur_offset: usize = (7 - 1) * envelope_size;
2089
2090 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2092
2093 fidl::encoding::encode_in_envelope_optional::<u64, D>(
2098 self.tx_total.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
2099 encoder,
2100 offset + cur_offset,
2101 depth,
2102 )?;
2103
2104 _prev_end_offset = cur_offset + envelope_size;
2105 if 8 > max_ordinal {
2106 return Ok(());
2107 }
2108
2109 let cur_offset: usize = (8 - 1) * envelope_size;
2112
2113 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2115
2116 fidl::encoding::encode_in_envelope_optional::<u64, D>(
2121 self.tx_drop.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
2122 encoder,
2123 offset + cur_offset,
2124 depth,
2125 )?;
2126
2127 _prev_end_offset = cur_offset + envelope_size;
2128
2129 Ok(())
2130 }
2131 }
2132
2133 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConnectionStats {
2134 #[inline(always)]
2135 fn new_empty() -> Self {
2136 Self::default()
2137 }
2138
2139 unsafe fn decode(
2140 &mut self,
2141 decoder: &mut fidl::encoding::Decoder<'_, D>,
2142 offset: usize,
2143 mut depth: fidl::encoding::Depth,
2144 ) -> fidl::Result<()> {
2145 decoder.debug_check_bounds::<Self>(offset);
2146 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2147 None => return Err(fidl::Error::NotNullable),
2148 Some(len) => len,
2149 };
2150 if len == 0 {
2152 return Ok(());
2153 };
2154 depth.increment()?;
2155 let envelope_size = 8;
2156 let bytes_len = len * envelope_size;
2157 let offset = decoder.out_of_line_offset(bytes_len)?;
2158 let mut _next_ordinal_to_read = 0;
2160 let mut next_offset = offset;
2161 let end_offset = offset + bytes_len;
2162 _next_ordinal_to_read += 1;
2163 if next_offset >= end_offset {
2164 return Ok(());
2165 }
2166
2167 while _next_ordinal_to_read < 1 {
2169 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2170 _next_ordinal_to_read += 1;
2171 next_offset += envelope_size;
2172 }
2173
2174 let next_out_of_line = decoder.next_out_of_line();
2175 let handles_before = decoder.remaining_handles();
2176 if let Some((inlined, num_bytes, num_handles)) =
2177 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2178 {
2179 let member_inline_size =
2180 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2181 if inlined != (member_inline_size <= 4) {
2182 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2183 }
2184 let inner_offset;
2185 let mut inner_depth = depth.clone();
2186 if inlined {
2187 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2188 inner_offset = next_offset;
2189 } else {
2190 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2191 inner_depth.increment()?;
2192 }
2193 let val_ref = self.connection_id.get_or_insert_with(|| fidl::new_empty!(u8, D));
2194 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
2195 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2196 {
2197 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2198 }
2199 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2200 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2201 }
2202 }
2203
2204 next_offset += envelope_size;
2205 _next_ordinal_to_read += 1;
2206 if next_offset >= end_offset {
2207 return Ok(());
2208 }
2209
2210 while _next_ordinal_to_read < 2 {
2212 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2213 _next_ordinal_to_read += 1;
2214 next_offset += envelope_size;
2215 }
2216
2217 let next_out_of_line = decoder.next_out_of_line();
2218 let handles_before = decoder.remaining_handles();
2219 if let Some((inlined, num_bytes, num_handles)) =
2220 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2221 {
2222 let member_inline_size = <fidl::encoding::Vector<UnnamedCounter, 127> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2223 if inlined != (member_inline_size <= 4) {
2224 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2225 }
2226 let inner_offset;
2227 let mut inner_depth = depth.clone();
2228 if inlined {
2229 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2230 inner_offset = next_offset;
2231 } else {
2232 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2233 inner_depth.increment()?;
2234 }
2235 let val_ref = self.driver_specific_counters.get_or_insert_with(
2236 || fidl::new_empty!(fidl::encoding::Vector<UnnamedCounter, 127>, D),
2237 );
2238 fidl::decode!(fidl::encoding::Vector<UnnamedCounter, 127>, D, val_ref, decoder, inner_offset, inner_depth)?;
2239 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2240 {
2241 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2242 }
2243 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2244 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2245 }
2246 }
2247
2248 next_offset += envelope_size;
2249 _next_ordinal_to_read += 1;
2250 if next_offset >= end_offset {
2251 return Ok(());
2252 }
2253
2254 while _next_ordinal_to_read < 3 {
2256 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2257 _next_ordinal_to_read += 1;
2258 next_offset += envelope_size;
2259 }
2260
2261 let next_out_of_line = decoder.next_out_of_line();
2262 let handles_before = decoder.remaining_handles();
2263 if let Some((inlined, num_bytes, num_handles)) =
2264 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2265 {
2266 let member_inline_size = <fidl::encoding::Vector<UnnamedGauge, 127> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2267 if inlined != (member_inline_size <= 4) {
2268 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2269 }
2270 let inner_offset;
2271 let mut inner_depth = depth.clone();
2272 if inlined {
2273 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2274 inner_offset = next_offset;
2275 } else {
2276 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2277 inner_depth.increment()?;
2278 }
2279 let val_ref = self.driver_specific_gauges.get_or_insert_with(
2280 || fidl::new_empty!(fidl::encoding::Vector<UnnamedGauge, 127>, D),
2281 );
2282 fidl::decode!(fidl::encoding::Vector<UnnamedGauge, 127>, D, val_ref, decoder, inner_offset, inner_depth)?;
2283 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2284 {
2285 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2286 }
2287 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2288 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2289 }
2290 }
2291
2292 next_offset += envelope_size;
2293 _next_ordinal_to_read += 1;
2294 if next_offset >= end_offset {
2295 return Ok(());
2296 }
2297
2298 while _next_ordinal_to_read < 4 {
2300 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2301 _next_ordinal_to_read += 1;
2302 next_offset += envelope_size;
2303 }
2304
2305 let next_out_of_line = decoder.next_out_of_line();
2306 let handles_before = decoder.remaining_handles();
2307 if let Some((inlined, num_bytes, num_handles)) =
2308 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2309 {
2310 let member_inline_size =
2311 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2312 if inlined != (member_inline_size <= 4) {
2313 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2314 }
2315 let inner_offset;
2316 let mut inner_depth = depth.clone();
2317 if inlined {
2318 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2319 inner_offset = next_offset;
2320 } else {
2321 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2322 inner_depth.increment()?;
2323 }
2324 let val_ref = self.rx_unicast_total.get_or_insert_with(|| fidl::new_empty!(u64, D));
2325 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2326 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2327 {
2328 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2329 }
2330 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2331 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2332 }
2333 }
2334
2335 next_offset += envelope_size;
2336 _next_ordinal_to_read += 1;
2337 if next_offset >= end_offset {
2338 return Ok(());
2339 }
2340
2341 while _next_ordinal_to_read < 5 {
2343 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2344 _next_ordinal_to_read += 1;
2345 next_offset += envelope_size;
2346 }
2347
2348 let next_out_of_line = decoder.next_out_of_line();
2349 let handles_before = decoder.remaining_handles();
2350 if let Some((inlined, num_bytes, num_handles)) =
2351 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2352 {
2353 let member_inline_size =
2354 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2355 if inlined != (member_inline_size <= 4) {
2356 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2357 }
2358 let inner_offset;
2359 let mut inner_depth = depth.clone();
2360 if inlined {
2361 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2362 inner_offset = next_offset;
2363 } else {
2364 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2365 inner_depth.increment()?;
2366 }
2367 let val_ref = self.rx_unicast_drop.get_or_insert_with(|| fidl::new_empty!(u64, D));
2368 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2369 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2370 {
2371 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2372 }
2373 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2374 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2375 }
2376 }
2377
2378 next_offset += envelope_size;
2379 _next_ordinal_to_read += 1;
2380 if next_offset >= end_offset {
2381 return Ok(());
2382 }
2383
2384 while _next_ordinal_to_read < 6 {
2386 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2387 _next_ordinal_to_read += 1;
2388 next_offset += envelope_size;
2389 }
2390
2391 let next_out_of_line = decoder.next_out_of_line();
2392 let handles_before = decoder.remaining_handles();
2393 if let Some((inlined, num_bytes, num_handles)) =
2394 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2395 {
2396 let member_inline_size =
2397 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2398 if inlined != (member_inline_size <= 4) {
2399 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2400 }
2401 let inner_offset;
2402 let mut inner_depth = depth.clone();
2403 if inlined {
2404 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2405 inner_offset = next_offset;
2406 } else {
2407 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2408 inner_depth.increment()?;
2409 }
2410 let val_ref = self.rx_multicast.get_or_insert_with(|| fidl::new_empty!(u64, D));
2411 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2412 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2413 {
2414 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2415 }
2416 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2417 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2418 }
2419 }
2420
2421 next_offset += envelope_size;
2422 _next_ordinal_to_read += 1;
2423 if next_offset >= end_offset {
2424 return Ok(());
2425 }
2426
2427 while _next_ordinal_to_read < 7 {
2429 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2430 _next_ordinal_to_read += 1;
2431 next_offset += envelope_size;
2432 }
2433
2434 let next_out_of_line = decoder.next_out_of_line();
2435 let handles_before = decoder.remaining_handles();
2436 if let Some((inlined, num_bytes, num_handles)) =
2437 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2438 {
2439 let member_inline_size =
2440 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2441 if inlined != (member_inline_size <= 4) {
2442 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2443 }
2444 let inner_offset;
2445 let mut inner_depth = depth.clone();
2446 if inlined {
2447 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2448 inner_offset = next_offset;
2449 } else {
2450 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2451 inner_depth.increment()?;
2452 }
2453 let val_ref = self.tx_total.get_or_insert_with(|| fidl::new_empty!(u64, D));
2454 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2455 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2456 {
2457 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2458 }
2459 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2460 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2461 }
2462 }
2463
2464 next_offset += envelope_size;
2465 _next_ordinal_to_read += 1;
2466 if next_offset >= end_offset {
2467 return Ok(());
2468 }
2469
2470 while _next_ordinal_to_read < 8 {
2472 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2473 _next_ordinal_to_read += 1;
2474 next_offset += envelope_size;
2475 }
2476
2477 let next_out_of_line = decoder.next_out_of_line();
2478 let handles_before = decoder.remaining_handles();
2479 if let Some((inlined, num_bytes, num_handles)) =
2480 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2481 {
2482 let member_inline_size =
2483 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2484 if inlined != (member_inline_size <= 4) {
2485 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2486 }
2487 let inner_offset;
2488 let mut inner_depth = depth.clone();
2489 if inlined {
2490 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2491 inner_offset = next_offset;
2492 } else {
2493 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2494 inner_depth.increment()?;
2495 }
2496 let val_ref = self.tx_drop.get_or_insert_with(|| fidl::new_empty!(u64, D));
2497 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2498 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2499 {
2500 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2501 }
2502 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2503 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2504 }
2505 }
2506
2507 next_offset += envelope_size;
2508
2509 while next_offset < end_offset {
2511 _next_ordinal_to_read += 1;
2512 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2513 next_offset += envelope_size;
2514 }
2515
2516 Ok(())
2517 }
2518 }
2519
2520 impl IfaceHistogramStats {
2521 #[inline(always)]
2522 fn max_ordinal_present(&self) -> u64 {
2523 if let Some(_) = self.snr_histograms {
2524 return 4;
2525 }
2526 if let Some(_) = self.rx_rate_index_histograms {
2527 return 3;
2528 }
2529 if let Some(_) = self.rssi_histograms {
2530 return 2;
2531 }
2532 if let Some(_) = self.noise_floor_histograms {
2533 return 1;
2534 }
2535 0
2536 }
2537 }
2538
2539 impl fidl::encoding::ValueTypeMarker for IfaceHistogramStats {
2540 type Borrowed<'a> = &'a Self;
2541 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2542 value
2543 }
2544 }
2545
2546 unsafe impl fidl::encoding::TypeMarker for IfaceHistogramStats {
2547 type Owned = Self;
2548
2549 #[inline(always)]
2550 fn inline_align(_context: fidl::encoding::Context) -> usize {
2551 8
2552 }
2553
2554 #[inline(always)]
2555 fn inline_size(_context: fidl::encoding::Context) -> usize {
2556 16
2557 }
2558 }
2559
2560 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<IfaceHistogramStats, D>
2561 for &IfaceHistogramStats
2562 {
2563 unsafe fn encode(
2564 self,
2565 encoder: &mut fidl::encoding::Encoder<'_, D>,
2566 offset: usize,
2567 mut depth: fidl::encoding::Depth,
2568 ) -> fidl::Result<()> {
2569 encoder.debug_check_bounds::<IfaceHistogramStats>(offset);
2570 let max_ordinal: u64 = self.max_ordinal_present();
2572 encoder.write_num(max_ordinal, offset);
2573 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2574 if max_ordinal == 0 {
2576 return Ok(());
2577 }
2578 depth.increment()?;
2579 let envelope_size = 8;
2580 let bytes_len = max_ordinal as usize * envelope_size;
2581 #[allow(unused_variables)]
2582 let offset = encoder.out_of_line_offset(bytes_len);
2583 let mut _prev_end_offset: usize = 0;
2584 if 1 > max_ordinal {
2585 return Ok(());
2586 }
2587
2588 let cur_offset: usize = (1 - 1) * envelope_size;
2591
2592 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2594
2595 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<NoiseFloorHistogram, 8>, D>(
2600 self.noise_floor_histograms.as_ref().map(<fidl::encoding::Vector<NoiseFloorHistogram, 8> as fidl::encoding::ValueTypeMarker>::borrow),
2601 encoder, offset + cur_offset, depth
2602 )?;
2603
2604 _prev_end_offset = cur_offset + envelope_size;
2605 if 2 > max_ordinal {
2606 return Ok(());
2607 }
2608
2609 let cur_offset: usize = (2 - 1) * envelope_size;
2612
2613 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2615
2616 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<RssiHistogram, 8>, D>(
2621 self.rssi_histograms.as_ref().map(<fidl::encoding::Vector<RssiHistogram, 8> as fidl::encoding::ValueTypeMarker>::borrow),
2622 encoder, offset + cur_offset, depth
2623 )?;
2624
2625 _prev_end_offset = cur_offset + envelope_size;
2626 if 3 > max_ordinal {
2627 return Ok(());
2628 }
2629
2630 let cur_offset: usize = (3 - 1) * envelope_size;
2633
2634 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2636
2637 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<RxRateIndexHistogram, 8>, D>(
2642 self.rx_rate_index_histograms.as_ref().map(<fidl::encoding::Vector<RxRateIndexHistogram, 8> as fidl::encoding::ValueTypeMarker>::borrow),
2643 encoder, offset + cur_offset, depth
2644 )?;
2645
2646 _prev_end_offset = cur_offset + envelope_size;
2647 if 4 > max_ordinal {
2648 return Ok(());
2649 }
2650
2651 let cur_offset: usize = (4 - 1) * envelope_size;
2654
2655 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2657
2658 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<SnrHistogram, 8>, D>(
2663 self.snr_histograms.as_ref().map(<fidl::encoding::Vector<SnrHistogram, 8> as fidl::encoding::ValueTypeMarker>::borrow),
2664 encoder, offset + cur_offset, depth
2665 )?;
2666
2667 _prev_end_offset = cur_offset + envelope_size;
2668
2669 Ok(())
2670 }
2671 }
2672
2673 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for IfaceHistogramStats {
2674 #[inline(always)]
2675 fn new_empty() -> Self {
2676 Self::default()
2677 }
2678
2679 unsafe fn decode(
2680 &mut self,
2681 decoder: &mut fidl::encoding::Decoder<'_, D>,
2682 offset: usize,
2683 mut depth: fidl::encoding::Depth,
2684 ) -> fidl::Result<()> {
2685 decoder.debug_check_bounds::<Self>(offset);
2686 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2687 None => return Err(fidl::Error::NotNullable),
2688 Some(len) => len,
2689 };
2690 if len == 0 {
2692 return Ok(());
2693 };
2694 depth.increment()?;
2695 let envelope_size = 8;
2696 let bytes_len = len * envelope_size;
2697 let offset = decoder.out_of_line_offset(bytes_len)?;
2698 let mut _next_ordinal_to_read = 0;
2700 let mut next_offset = offset;
2701 let end_offset = offset + bytes_len;
2702 _next_ordinal_to_read += 1;
2703 if next_offset >= end_offset {
2704 return Ok(());
2705 }
2706
2707 while _next_ordinal_to_read < 1 {
2709 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2710 _next_ordinal_to_read += 1;
2711 next_offset += envelope_size;
2712 }
2713
2714 let next_out_of_line = decoder.next_out_of_line();
2715 let handles_before = decoder.remaining_handles();
2716 if let Some((inlined, num_bytes, num_handles)) =
2717 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2718 {
2719 let member_inline_size = <fidl::encoding::Vector<NoiseFloorHistogram, 8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2720 if inlined != (member_inline_size <= 4) {
2721 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2722 }
2723 let inner_offset;
2724 let mut inner_depth = depth.clone();
2725 if inlined {
2726 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2727 inner_offset = next_offset;
2728 } else {
2729 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2730 inner_depth.increment()?;
2731 }
2732 let val_ref = self.noise_floor_histograms.get_or_insert_with(
2733 || fidl::new_empty!(fidl::encoding::Vector<NoiseFloorHistogram, 8>, D),
2734 );
2735 fidl::decode!(fidl::encoding::Vector<NoiseFloorHistogram, 8>, D, val_ref, decoder, inner_offset, inner_depth)?;
2736 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2737 {
2738 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2739 }
2740 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2741 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2742 }
2743 }
2744
2745 next_offset += envelope_size;
2746 _next_ordinal_to_read += 1;
2747 if next_offset >= end_offset {
2748 return Ok(());
2749 }
2750
2751 while _next_ordinal_to_read < 2 {
2753 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2754 _next_ordinal_to_read += 1;
2755 next_offset += envelope_size;
2756 }
2757
2758 let next_out_of_line = decoder.next_out_of_line();
2759 let handles_before = decoder.remaining_handles();
2760 if let Some((inlined, num_bytes, num_handles)) =
2761 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2762 {
2763 let member_inline_size = <fidl::encoding::Vector<RssiHistogram, 8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2764 if inlined != (member_inline_size <= 4) {
2765 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2766 }
2767 let inner_offset;
2768 let mut inner_depth = depth.clone();
2769 if inlined {
2770 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2771 inner_offset = next_offset;
2772 } else {
2773 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2774 inner_depth.increment()?;
2775 }
2776 let val_ref = self.rssi_histograms.get_or_insert_with(
2777 || fidl::new_empty!(fidl::encoding::Vector<RssiHistogram, 8>, D),
2778 );
2779 fidl::decode!(fidl::encoding::Vector<RssiHistogram, 8>, D, val_ref, decoder, inner_offset, inner_depth)?;
2780 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2781 {
2782 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2783 }
2784 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2785 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2786 }
2787 }
2788
2789 next_offset += envelope_size;
2790 _next_ordinal_to_read += 1;
2791 if next_offset >= end_offset {
2792 return Ok(());
2793 }
2794
2795 while _next_ordinal_to_read < 3 {
2797 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2798 _next_ordinal_to_read += 1;
2799 next_offset += envelope_size;
2800 }
2801
2802 let next_out_of_line = decoder.next_out_of_line();
2803 let handles_before = decoder.remaining_handles();
2804 if let Some((inlined, num_bytes, num_handles)) =
2805 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2806 {
2807 let member_inline_size = <fidl::encoding::Vector<RxRateIndexHistogram, 8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2808 if inlined != (member_inline_size <= 4) {
2809 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2810 }
2811 let inner_offset;
2812 let mut inner_depth = depth.clone();
2813 if inlined {
2814 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2815 inner_offset = next_offset;
2816 } else {
2817 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2818 inner_depth.increment()?;
2819 }
2820 let val_ref = self.rx_rate_index_histograms.get_or_insert_with(
2821 || fidl::new_empty!(fidl::encoding::Vector<RxRateIndexHistogram, 8>, D),
2822 );
2823 fidl::decode!(fidl::encoding::Vector<RxRateIndexHistogram, 8>, D, val_ref, decoder, inner_offset, inner_depth)?;
2824 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2825 {
2826 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2827 }
2828 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2829 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2830 }
2831 }
2832
2833 next_offset += envelope_size;
2834 _next_ordinal_to_read += 1;
2835 if next_offset >= end_offset {
2836 return Ok(());
2837 }
2838
2839 while _next_ordinal_to_read < 4 {
2841 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2842 _next_ordinal_to_read += 1;
2843 next_offset += envelope_size;
2844 }
2845
2846 let next_out_of_line = decoder.next_out_of_line();
2847 let handles_before = decoder.remaining_handles();
2848 if let Some((inlined, num_bytes, num_handles)) =
2849 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2850 {
2851 let member_inline_size = <fidl::encoding::Vector<SnrHistogram, 8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2852 if inlined != (member_inline_size <= 4) {
2853 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2854 }
2855 let inner_offset;
2856 let mut inner_depth = depth.clone();
2857 if inlined {
2858 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2859 inner_offset = next_offset;
2860 } else {
2861 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2862 inner_depth.increment()?;
2863 }
2864 let val_ref = self.snr_histograms.get_or_insert_with(
2865 || fidl::new_empty!(fidl::encoding::Vector<SnrHistogram, 8>, D),
2866 );
2867 fidl::decode!(fidl::encoding::Vector<SnrHistogram, 8>, D, val_ref, decoder, inner_offset, inner_depth)?;
2868 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2869 {
2870 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2871 }
2872 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2873 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2874 }
2875 }
2876
2877 next_offset += envelope_size;
2878
2879 while next_offset < end_offset {
2881 _next_ordinal_to_read += 1;
2882 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2883 next_offset += envelope_size;
2884 }
2885
2886 Ok(())
2887 }
2888 }
2889
2890 impl IfaceStats {
2891 #[inline(always)]
2892 fn max_ordinal_present(&self) -> u64 {
2893 if let Some(_) = self.driver_specific_gauges {
2894 return 3;
2895 }
2896 if let Some(_) = self.driver_specific_counters {
2897 return 2;
2898 }
2899 if let Some(_) = self.connection_stats {
2900 return 1;
2901 }
2902 0
2903 }
2904 }
2905
2906 impl fidl::encoding::ValueTypeMarker for IfaceStats {
2907 type Borrowed<'a> = &'a Self;
2908 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2909 value
2910 }
2911 }
2912
2913 unsafe impl fidl::encoding::TypeMarker for IfaceStats {
2914 type Owned = Self;
2915
2916 #[inline(always)]
2917 fn inline_align(_context: fidl::encoding::Context) -> usize {
2918 8
2919 }
2920
2921 #[inline(always)]
2922 fn inline_size(_context: fidl::encoding::Context) -> usize {
2923 16
2924 }
2925 }
2926
2927 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<IfaceStats, D>
2928 for &IfaceStats
2929 {
2930 unsafe fn encode(
2931 self,
2932 encoder: &mut fidl::encoding::Encoder<'_, D>,
2933 offset: usize,
2934 mut depth: fidl::encoding::Depth,
2935 ) -> fidl::Result<()> {
2936 encoder.debug_check_bounds::<IfaceStats>(offset);
2937 let max_ordinal: u64 = self.max_ordinal_present();
2939 encoder.write_num(max_ordinal, offset);
2940 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2941 if max_ordinal == 0 {
2943 return Ok(());
2944 }
2945 depth.increment()?;
2946 let envelope_size = 8;
2947 let bytes_len = max_ordinal as usize * envelope_size;
2948 #[allow(unused_variables)]
2949 let offset = encoder.out_of_line_offset(bytes_len);
2950 let mut _prev_end_offset: usize = 0;
2951 if 1 > max_ordinal {
2952 return Ok(());
2953 }
2954
2955 let cur_offset: usize = (1 - 1) * envelope_size;
2958
2959 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2961
2962 fidl::encoding::encode_in_envelope_optional::<ConnectionStats, D>(
2967 self.connection_stats
2968 .as_ref()
2969 .map(<ConnectionStats as fidl::encoding::ValueTypeMarker>::borrow),
2970 encoder,
2971 offset + cur_offset,
2972 depth,
2973 )?;
2974
2975 _prev_end_offset = cur_offset + envelope_size;
2976 if 2 > max_ordinal {
2977 return Ok(());
2978 }
2979
2980 let cur_offset: usize = (2 - 1) * envelope_size;
2983
2984 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2986
2987 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<UnnamedCounter, 127>, D>(
2992 self.driver_specific_counters.as_ref().map(<fidl::encoding::Vector<UnnamedCounter, 127> as fidl::encoding::ValueTypeMarker>::borrow),
2993 encoder, offset + cur_offset, depth
2994 )?;
2995
2996 _prev_end_offset = cur_offset + envelope_size;
2997 if 3 > max_ordinal {
2998 return Ok(());
2999 }
3000
3001 let cur_offset: usize = (3 - 1) * envelope_size;
3004
3005 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3007
3008 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<UnnamedGauge, 127>, D>(
3013 self.driver_specific_gauges.as_ref().map(<fidl::encoding::Vector<UnnamedGauge, 127> as fidl::encoding::ValueTypeMarker>::borrow),
3014 encoder, offset + cur_offset, depth
3015 )?;
3016
3017 _prev_end_offset = cur_offset + envelope_size;
3018
3019 Ok(())
3020 }
3021 }
3022
3023 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for IfaceStats {
3024 #[inline(always)]
3025 fn new_empty() -> Self {
3026 Self::default()
3027 }
3028
3029 unsafe fn decode(
3030 &mut self,
3031 decoder: &mut fidl::encoding::Decoder<'_, D>,
3032 offset: usize,
3033 mut depth: fidl::encoding::Depth,
3034 ) -> fidl::Result<()> {
3035 decoder.debug_check_bounds::<Self>(offset);
3036 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3037 None => return Err(fidl::Error::NotNullable),
3038 Some(len) => len,
3039 };
3040 if len == 0 {
3042 return Ok(());
3043 };
3044 depth.increment()?;
3045 let envelope_size = 8;
3046 let bytes_len = len * envelope_size;
3047 let offset = decoder.out_of_line_offset(bytes_len)?;
3048 let mut _next_ordinal_to_read = 0;
3050 let mut next_offset = offset;
3051 let end_offset = offset + bytes_len;
3052 _next_ordinal_to_read += 1;
3053 if next_offset >= end_offset {
3054 return Ok(());
3055 }
3056
3057 while _next_ordinal_to_read < 1 {
3059 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3060 _next_ordinal_to_read += 1;
3061 next_offset += envelope_size;
3062 }
3063
3064 let next_out_of_line = decoder.next_out_of_line();
3065 let handles_before = decoder.remaining_handles();
3066 if let Some((inlined, num_bytes, num_handles)) =
3067 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3068 {
3069 let member_inline_size =
3070 <ConnectionStats as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3071 if inlined != (member_inline_size <= 4) {
3072 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3073 }
3074 let inner_offset;
3075 let mut inner_depth = depth.clone();
3076 if inlined {
3077 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3078 inner_offset = next_offset;
3079 } else {
3080 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3081 inner_depth.increment()?;
3082 }
3083 let val_ref = self
3084 .connection_stats
3085 .get_or_insert_with(|| fidl::new_empty!(ConnectionStats, D));
3086 fidl::decode!(ConnectionStats, D, val_ref, decoder, inner_offset, inner_depth)?;
3087 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3088 {
3089 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3090 }
3091 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3092 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3093 }
3094 }
3095
3096 next_offset += envelope_size;
3097 _next_ordinal_to_read += 1;
3098 if next_offset >= end_offset {
3099 return Ok(());
3100 }
3101
3102 while _next_ordinal_to_read < 2 {
3104 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3105 _next_ordinal_to_read += 1;
3106 next_offset += envelope_size;
3107 }
3108
3109 let next_out_of_line = decoder.next_out_of_line();
3110 let handles_before = decoder.remaining_handles();
3111 if let Some((inlined, num_bytes, num_handles)) =
3112 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3113 {
3114 let member_inline_size = <fidl::encoding::Vector<UnnamedCounter, 127> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3115 if inlined != (member_inline_size <= 4) {
3116 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3117 }
3118 let inner_offset;
3119 let mut inner_depth = depth.clone();
3120 if inlined {
3121 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3122 inner_offset = next_offset;
3123 } else {
3124 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3125 inner_depth.increment()?;
3126 }
3127 let val_ref = self.driver_specific_counters.get_or_insert_with(
3128 || fidl::new_empty!(fidl::encoding::Vector<UnnamedCounter, 127>, D),
3129 );
3130 fidl::decode!(fidl::encoding::Vector<UnnamedCounter, 127>, D, val_ref, decoder, inner_offset, inner_depth)?;
3131 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3132 {
3133 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3134 }
3135 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3136 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3137 }
3138 }
3139
3140 next_offset += envelope_size;
3141 _next_ordinal_to_read += 1;
3142 if next_offset >= end_offset {
3143 return Ok(());
3144 }
3145
3146 while _next_ordinal_to_read < 3 {
3148 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3149 _next_ordinal_to_read += 1;
3150 next_offset += envelope_size;
3151 }
3152
3153 let next_out_of_line = decoder.next_out_of_line();
3154 let handles_before = decoder.remaining_handles();
3155 if let Some((inlined, num_bytes, num_handles)) =
3156 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3157 {
3158 let member_inline_size = <fidl::encoding::Vector<UnnamedGauge, 127> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3159 if inlined != (member_inline_size <= 4) {
3160 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3161 }
3162 let inner_offset;
3163 let mut inner_depth = depth.clone();
3164 if inlined {
3165 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3166 inner_offset = next_offset;
3167 } else {
3168 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3169 inner_depth.increment()?;
3170 }
3171 let val_ref = self.driver_specific_gauges.get_or_insert_with(
3172 || fidl::new_empty!(fidl::encoding::Vector<UnnamedGauge, 127>, D),
3173 );
3174 fidl::decode!(fidl::encoding::Vector<UnnamedGauge, 127>, D, val_ref, decoder, inner_offset, inner_depth)?;
3175 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3176 {
3177 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3178 }
3179 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3180 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3181 }
3182 }
3183
3184 next_offset += envelope_size;
3185
3186 while next_offset < end_offset {
3188 _next_ordinal_to_read += 1;
3189 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3190 next_offset += envelope_size;
3191 }
3192
3193 Ok(())
3194 }
3195 }
3196
3197 impl InspectCounterConfig {
3198 #[inline(always)]
3199 fn max_ordinal_present(&self) -> u64 {
3200 if let Some(_) = self.counter_name {
3201 return 2;
3202 }
3203 if let Some(_) = self.counter_id {
3204 return 1;
3205 }
3206 0
3207 }
3208 }
3209
3210 impl fidl::encoding::ValueTypeMarker for InspectCounterConfig {
3211 type Borrowed<'a> = &'a Self;
3212 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3213 value
3214 }
3215 }
3216
3217 unsafe impl fidl::encoding::TypeMarker for InspectCounterConfig {
3218 type Owned = Self;
3219
3220 #[inline(always)]
3221 fn inline_align(_context: fidl::encoding::Context) -> usize {
3222 8
3223 }
3224
3225 #[inline(always)]
3226 fn inline_size(_context: fidl::encoding::Context) -> usize {
3227 16
3228 }
3229 }
3230
3231 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<InspectCounterConfig, D>
3232 for &InspectCounterConfig
3233 {
3234 unsafe fn encode(
3235 self,
3236 encoder: &mut fidl::encoding::Encoder<'_, D>,
3237 offset: usize,
3238 mut depth: fidl::encoding::Depth,
3239 ) -> fidl::Result<()> {
3240 encoder.debug_check_bounds::<InspectCounterConfig>(offset);
3241 let max_ordinal: u64 = self.max_ordinal_present();
3243 encoder.write_num(max_ordinal, offset);
3244 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3245 if max_ordinal == 0 {
3247 return Ok(());
3248 }
3249 depth.increment()?;
3250 let envelope_size = 8;
3251 let bytes_len = max_ordinal as usize * envelope_size;
3252 #[allow(unused_variables)]
3253 let offset = encoder.out_of_line_offset(bytes_len);
3254 let mut _prev_end_offset: usize = 0;
3255 if 1 > max_ordinal {
3256 return Ok(());
3257 }
3258
3259 let cur_offset: usize = (1 - 1) * envelope_size;
3262
3263 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3265
3266 fidl::encoding::encode_in_envelope_optional::<u16, D>(
3271 self.counter_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
3272 encoder,
3273 offset + cur_offset,
3274 depth,
3275 )?;
3276
3277 _prev_end_offset = cur_offset + envelope_size;
3278 if 2 > max_ordinal {
3279 return Ok(());
3280 }
3281
3282 let cur_offset: usize = (2 - 1) * envelope_size;
3285
3286 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3288
3289 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<127>, D>(
3294 self.counter_name.as_ref().map(
3295 <fidl::encoding::BoundedString<127> as fidl::encoding::ValueTypeMarker>::borrow,
3296 ),
3297 encoder,
3298 offset + cur_offset,
3299 depth,
3300 )?;
3301
3302 _prev_end_offset = cur_offset + envelope_size;
3303
3304 Ok(())
3305 }
3306 }
3307
3308 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for InspectCounterConfig {
3309 #[inline(always)]
3310 fn new_empty() -> Self {
3311 Self::default()
3312 }
3313
3314 unsafe fn decode(
3315 &mut self,
3316 decoder: &mut fidl::encoding::Decoder<'_, D>,
3317 offset: usize,
3318 mut depth: fidl::encoding::Depth,
3319 ) -> fidl::Result<()> {
3320 decoder.debug_check_bounds::<Self>(offset);
3321 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3322 None => return Err(fidl::Error::NotNullable),
3323 Some(len) => len,
3324 };
3325 if len == 0 {
3327 return Ok(());
3328 };
3329 depth.increment()?;
3330 let envelope_size = 8;
3331 let bytes_len = len * envelope_size;
3332 let offset = decoder.out_of_line_offset(bytes_len)?;
3333 let mut _next_ordinal_to_read = 0;
3335 let mut next_offset = offset;
3336 let end_offset = offset + bytes_len;
3337 _next_ordinal_to_read += 1;
3338 if next_offset >= end_offset {
3339 return Ok(());
3340 }
3341
3342 while _next_ordinal_to_read < 1 {
3344 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3345 _next_ordinal_to_read += 1;
3346 next_offset += envelope_size;
3347 }
3348
3349 let next_out_of_line = decoder.next_out_of_line();
3350 let handles_before = decoder.remaining_handles();
3351 if let Some((inlined, num_bytes, num_handles)) =
3352 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3353 {
3354 let member_inline_size =
3355 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3356 if inlined != (member_inline_size <= 4) {
3357 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3358 }
3359 let inner_offset;
3360 let mut inner_depth = depth.clone();
3361 if inlined {
3362 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3363 inner_offset = next_offset;
3364 } else {
3365 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3366 inner_depth.increment()?;
3367 }
3368 let val_ref = self.counter_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
3369 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
3370 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3371 {
3372 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3373 }
3374 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3375 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3376 }
3377 }
3378
3379 next_offset += envelope_size;
3380 _next_ordinal_to_read += 1;
3381 if next_offset >= end_offset {
3382 return Ok(());
3383 }
3384
3385 while _next_ordinal_to_read < 2 {
3387 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3388 _next_ordinal_to_read += 1;
3389 next_offset += envelope_size;
3390 }
3391
3392 let next_out_of_line = decoder.next_out_of_line();
3393 let handles_before = decoder.remaining_handles();
3394 if let Some((inlined, num_bytes, num_handles)) =
3395 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3396 {
3397 let member_inline_size =
3398 <fidl::encoding::BoundedString<127> as fidl::encoding::TypeMarker>::inline_size(
3399 decoder.context,
3400 );
3401 if inlined != (member_inline_size <= 4) {
3402 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3403 }
3404 let inner_offset;
3405 let mut inner_depth = depth.clone();
3406 if inlined {
3407 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3408 inner_offset = next_offset;
3409 } else {
3410 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3411 inner_depth.increment()?;
3412 }
3413 let val_ref = self
3414 .counter_name
3415 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<127>, D));
3416 fidl::decode!(
3417 fidl::encoding::BoundedString<127>,
3418 D,
3419 val_ref,
3420 decoder,
3421 inner_offset,
3422 inner_depth
3423 )?;
3424 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3425 {
3426 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3427 }
3428 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3429 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3430 }
3431 }
3432
3433 next_offset += envelope_size;
3434
3435 while next_offset < end_offset {
3437 _next_ordinal_to_read += 1;
3438 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3439 next_offset += envelope_size;
3440 }
3441
3442 Ok(())
3443 }
3444 }
3445
3446 impl InspectGaugeConfig {
3447 #[inline(always)]
3448 fn max_ordinal_present(&self) -> u64 {
3449 if let Some(_) = self.statistics {
3450 return 3;
3451 }
3452 if let Some(_) = self.gauge_name {
3453 return 2;
3454 }
3455 if let Some(_) = self.gauge_id {
3456 return 1;
3457 }
3458 0
3459 }
3460 }
3461
3462 impl fidl::encoding::ValueTypeMarker for InspectGaugeConfig {
3463 type Borrowed<'a> = &'a Self;
3464 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3465 value
3466 }
3467 }
3468
3469 unsafe impl fidl::encoding::TypeMarker for InspectGaugeConfig {
3470 type Owned = Self;
3471
3472 #[inline(always)]
3473 fn inline_align(_context: fidl::encoding::Context) -> usize {
3474 8
3475 }
3476
3477 #[inline(always)]
3478 fn inline_size(_context: fidl::encoding::Context) -> usize {
3479 16
3480 }
3481 }
3482
3483 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<InspectGaugeConfig, D>
3484 for &InspectGaugeConfig
3485 {
3486 unsafe fn encode(
3487 self,
3488 encoder: &mut fidl::encoding::Encoder<'_, D>,
3489 offset: usize,
3490 mut depth: fidl::encoding::Depth,
3491 ) -> fidl::Result<()> {
3492 encoder.debug_check_bounds::<InspectGaugeConfig>(offset);
3493 let max_ordinal: u64 = self.max_ordinal_present();
3495 encoder.write_num(max_ordinal, offset);
3496 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3497 if max_ordinal == 0 {
3499 return Ok(());
3500 }
3501 depth.increment()?;
3502 let envelope_size = 8;
3503 let bytes_len = max_ordinal as usize * envelope_size;
3504 #[allow(unused_variables)]
3505 let offset = encoder.out_of_line_offset(bytes_len);
3506 let mut _prev_end_offset: usize = 0;
3507 if 1 > max_ordinal {
3508 return Ok(());
3509 }
3510
3511 let cur_offset: usize = (1 - 1) * envelope_size;
3514
3515 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3517
3518 fidl::encoding::encode_in_envelope_optional::<u16, D>(
3523 self.gauge_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
3524 encoder,
3525 offset + cur_offset,
3526 depth,
3527 )?;
3528
3529 _prev_end_offset = cur_offset + envelope_size;
3530 if 2 > max_ordinal {
3531 return Ok(());
3532 }
3533
3534 let cur_offset: usize = (2 - 1) * envelope_size;
3537
3538 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3540
3541 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<127>, D>(
3546 self.gauge_name.as_ref().map(
3547 <fidl::encoding::BoundedString<127> as fidl::encoding::ValueTypeMarker>::borrow,
3548 ),
3549 encoder,
3550 offset + cur_offset,
3551 depth,
3552 )?;
3553
3554 _prev_end_offset = cur_offset + envelope_size;
3555 if 3 > max_ordinal {
3556 return Ok(());
3557 }
3558
3559 let cur_offset: usize = (3 - 1) * envelope_size;
3562
3563 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3565
3566 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<GaugeStatistic, 5>, D>(
3571 self.statistics.as_ref().map(<fidl::encoding::Vector<GaugeStatistic, 5> as fidl::encoding::ValueTypeMarker>::borrow),
3572 encoder, offset + cur_offset, depth
3573 )?;
3574
3575 _prev_end_offset = cur_offset + envelope_size;
3576
3577 Ok(())
3578 }
3579 }
3580
3581 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for InspectGaugeConfig {
3582 #[inline(always)]
3583 fn new_empty() -> Self {
3584 Self::default()
3585 }
3586
3587 unsafe fn decode(
3588 &mut self,
3589 decoder: &mut fidl::encoding::Decoder<'_, D>,
3590 offset: usize,
3591 mut depth: fidl::encoding::Depth,
3592 ) -> fidl::Result<()> {
3593 decoder.debug_check_bounds::<Self>(offset);
3594 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3595 None => return Err(fidl::Error::NotNullable),
3596 Some(len) => len,
3597 };
3598 if len == 0 {
3600 return Ok(());
3601 };
3602 depth.increment()?;
3603 let envelope_size = 8;
3604 let bytes_len = len * envelope_size;
3605 let offset = decoder.out_of_line_offset(bytes_len)?;
3606 let mut _next_ordinal_to_read = 0;
3608 let mut next_offset = offset;
3609 let end_offset = offset + bytes_len;
3610 _next_ordinal_to_read += 1;
3611 if next_offset >= end_offset {
3612 return Ok(());
3613 }
3614
3615 while _next_ordinal_to_read < 1 {
3617 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3618 _next_ordinal_to_read += 1;
3619 next_offset += envelope_size;
3620 }
3621
3622 let next_out_of_line = decoder.next_out_of_line();
3623 let handles_before = decoder.remaining_handles();
3624 if let Some((inlined, num_bytes, num_handles)) =
3625 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3626 {
3627 let member_inline_size =
3628 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3629 if inlined != (member_inline_size <= 4) {
3630 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3631 }
3632 let inner_offset;
3633 let mut inner_depth = depth.clone();
3634 if inlined {
3635 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3636 inner_offset = next_offset;
3637 } else {
3638 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3639 inner_depth.increment()?;
3640 }
3641 let val_ref = self.gauge_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
3642 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
3643 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3644 {
3645 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3646 }
3647 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3648 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3649 }
3650 }
3651
3652 next_offset += envelope_size;
3653 _next_ordinal_to_read += 1;
3654 if next_offset >= end_offset {
3655 return Ok(());
3656 }
3657
3658 while _next_ordinal_to_read < 2 {
3660 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3661 _next_ordinal_to_read += 1;
3662 next_offset += envelope_size;
3663 }
3664
3665 let next_out_of_line = decoder.next_out_of_line();
3666 let handles_before = decoder.remaining_handles();
3667 if let Some((inlined, num_bytes, num_handles)) =
3668 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3669 {
3670 let member_inline_size =
3671 <fidl::encoding::BoundedString<127> as fidl::encoding::TypeMarker>::inline_size(
3672 decoder.context,
3673 );
3674 if inlined != (member_inline_size <= 4) {
3675 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3676 }
3677 let inner_offset;
3678 let mut inner_depth = depth.clone();
3679 if inlined {
3680 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3681 inner_offset = next_offset;
3682 } else {
3683 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3684 inner_depth.increment()?;
3685 }
3686 let val_ref = self
3687 .gauge_name
3688 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<127>, D));
3689 fidl::decode!(
3690 fidl::encoding::BoundedString<127>,
3691 D,
3692 val_ref,
3693 decoder,
3694 inner_offset,
3695 inner_depth
3696 )?;
3697 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3698 {
3699 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3700 }
3701 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3702 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3703 }
3704 }
3705
3706 next_offset += envelope_size;
3707 _next_ordinal_to_read += 1;
3708 if next_offset >= end_offset {
3709 return Ok(());
3710 }
3711
3712 while _next_ordinal_to_read < 3 {
3714 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3715 _next_ordinal_to_read += 1;
3716 next_offset += envelope_size;
3717 }
3718
3719 let next_out_of_line = decoder.next_out_of_line();
3720 let handles_before = decoder.remaining_handles();
3721 if let Some((inlined, num_bytes, num_handles)) =
3722 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3723 {
3724 let member_inline_size = <fidl::encoding::Vector<GaugeStatistic, 5> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3725 if inlined != (member_inline_size <= 4) {
3726 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3727 }
3728 let inner_offset;
3729 let mut inner_depth = depth.clone();
3730 if inlined {
3731 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3732 inner_offset = next_offset;
3733 } else {
3734 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3735 inner_depth.increment()?;
3736 }
3737 let val_ref = self.statistics.get_or_insert_with(
3738 || fidl::new_empty!(fidl::encoding::Vector<GaugeStatistic, 5>, D),
3739 );
3740 fidl::decode!(fidl::encoding::Vector<GaugeStatistic, 5>, D, val_ref, decoder, inner_offset, inner_depth)?;
3741 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3742 {
3743 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3744 }
3745 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3746 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3747 }
3748 }
3749
3750 next_offset += envelope_size;
3751
3752 while next_offset < end_offset {
3754 _next_ordinal_to_read += 1;
3755 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3756 next_offset += envelope_size;
3757 }
3758
3759 Ok(())
3760 }
3761 }
3762
3763 impl SignalReport {
3764 #[inline(always)]
3765 fn max_ordinal_present(&self) -> u64 {
3766 if let Some(_) = self.connection_signal_report {
3767 return 1;
3768 }
3769 0
3770 }
3771 }
3772
3773 impl fidl::encoding::ValueTypeMarker for SignalReport {
3774 type Borrowed<'a> = &'a Self;
3775 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3776 value
3777 }
3778 }
3779
3780 unsafe impl fidl::encoding::TypeMarker for SignalReport {
3781 type Owned = Self;
3782
3783 #[inline(always)]
3784 fn inline_align(_context: fidl::encoding::Context) -> usize {
3785 8
3786 }
3787
3788 #[inline(always)]
3789 fn inline_size(_context: fidl::encoding::Context) -> usize {
3790 16
3791 }
3792 }
3793
3794 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SignalReport, D>
3795 for &SignalReport
3796 {
3797 unsafe fn encode(
3798 self,
3799 encoder: &mut fidl::encoding::Encoder<'_, D>,
3800 offset: usize,
3801 mut depth: fidl::encoding::Depth,
3802 ) -> fidl::Result<()> {
3803 encoder.debug_check_bounds::<SignalReport>(offset);
3804 let max_ordinal: u64 = self.max_ordinal_present();
3806 encoder.write_num(max_ordinal, offset);
3807 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3808 if max_ordinal == 0 {
3810 return Ok(());
3811 }
3812 depth.increment()?;
3813 let envelope_size = 8;
3814 let bytes_len = max_ordinal as usize * envelope_size;
3815 #[allow(unused_variables)]
3816 let offset = encoder.out_of_line_offset(bytes_len);
3817 let mut _prev_end_offset: usize = 0;
3818 if 1 > max_ordinal {
3819 return Ok(());
3820 }
3821
3822 let cur_offset: usize = (1 - 1) * envelope_size;
3825
3826 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3828
3829 fidl::encoding::encode_in_envelope_optional::<ConnectionSignalReport, D>(
3834 self.connection_signal_report
3835 .as_ref()
3836 .map(<ConnectionSignalReport as fidl::encoding::ValueTypeMarker>::borrow),
3837 encoder,
3838 offset + cur_offset,
3839 depth,
3840 )?;
3841
3842 _prev_end_offset = cur_offset + envelope_size;
3843
3844 Ok(())
3845 }
3846 }
3847
3848 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SignalReport {
3849 #[inline(always)]
3850 fn new_empty() -> Self {
3851 Self::default()
3852 }
3853
3854 unsafe fn decode(
3855 &mut self,
3856 decoder: &mut fidl::encoding::Decoder<'_, D>,
3857 offset: usize,
3858 mut depth: fidl::encoding::Depth,
3859 ) -> fidl::Result<()> {
3860 decoder.debug_check_bounds::<Self>(offset);
3861 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3862 None => return Err(fidl::Error::NotNullable),
3863 Some(len) => len,
3864 };
3865 if len == 0 {
3867 return Ok(());
3868 };
3869 depth.increment()?;
3870 let envelope_size = 8;
3871 let bytes_len = len * envelope_size;
3872 let offset = decoder.out_of_line_offset(bytes_len)?;
3873 let mut _next_ordinal_to_read = 0;
3875 let mut next_offset = offset;
3876 let end_offset = offset + bytes_len;
3877 _next_ordinal_to_read += 1;
3878 if next_offset >= end_offset {
3879 return Ok(());
3880 }
3881
3882 while _next_ordinal_to_read < 1 {
3884 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3885 _next_ordinal_to_read += 1;
3886 next_offset += envelope_size;
3887 }
3888
3889 let next_out_of_line = decoder.next_out_of_line();
3890 let handles_before = decoder.remaining_handles();
3891 if let Some((inlined, num_bytes, num_handles)) =
3892 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3893 {
3894 let member_inline_size =
3895 <ConnectionSignalReport as fidl::encoding::TypeMarker>::inline_size(
3896 decoder.context,
3897 );
3898 if inlined != (member_inline_size <= 4) {
3899 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3900 }
3901 let inner_offset;
3902 let mut inner_depth = depth.clone();
3903 if inlined {
3904 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3905 inner_offset = next_offset;
3906 } else {
3907 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3908 inner_depth.increment()?;
3909 }
3910 let val_ref = self
3911 .connection_signal_report
3912 .get_or_insert_with(|| fidl::new_empty!(ConnectionSignalReport, D));
3913 fidl::decode!(
3914 ConnectionSignalReport,
3915 D,
3916 val_ref,
3917 decoder,
3918 inner_offset,
3919 inner_depth
3920 )?;
3921 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3922 {
3923 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3924 }
3925 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3926 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3927 }
3928 }
3929
3930 next_offset += envelope_size;
3931
3932 while next_offset < end_offset {
3934 _next_ordinal_to_read += 1;
3935 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3936 next_offset += envelope_size;
3937 }
3938
3939 Ok(())
3940 }
3941 }
3942
3943 impl TelemetrySupport {
3944 #[inline(always)]
3945 fn max_ordinal_present(&self) -> u64 {
3946 if let Some(_) = self.inspect_gauge_configs {
3947 return 2;
3948 }
3949 if let Some(_) = self.inspect_counter_configs {
3950 return 1;
3951 }
3952 0
3953 }
3954 }
3955
3956 impl fidl::encoding::ValueTypeMarker for TelemetrySupport {
3957 type Borrowed<'a> = &'a Self;
3958 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3959 value
3960 }
3961 }
3962
3963 unsafe impl fidl::encoding::TypeMarker for TelemetrySupport {
3964 type Owned = Self;
3965
3966 #[inline(always)]
3967 fn inline_align(_context: fidl::encoding::Context) -> usize {
3968 8
3969 }
3970
3971 #[inline(always)]
3972 fn inline_size(_context: fidl::encoding::Context) -> usize {
3973 16
3974 }
3975 }
3976
3977 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TelemetrySupport, D>
3978 for &TelemetrySupport
3979 {
3980 unsafe fn encode(
3981 self,
3982 encoder: &mut fidl::encoding::Encoder<'_, D>,
3983 offset: usize,
3984 mut depth: fidl::encoding::Depth,
3985 ) -> fidl::Result<()> {
3986 encoder.debug_check_bounds::<TelemetrySupport>(offset);
3987 let max_ordinal: u64 = self.max_ordinal_present();
3989 encoder.write_num(max_ordinal, offset);
3990 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3991 if max_ordinal == 0 {
3993 return Ok(());
3994 }
3995 depth.increment()?;
3996 let envelope_size = 8;
3997 let bytes_len = max_ordinal as usize * envelope_size;
3998 #[allow(unused_variables)]
3999 let offset = encoder.out_of_line_offset(bytes_len);
4000 let mut _prev_end_offset: usize = 0;
4001 if 1 > max_ordinal {
4002 return Ok(());
4003 }
4004
4005 let cur_offset: usize = (1 - 1) * envelope_size;
4008
4009 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4011
4012 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<InspectCounterConfig, 127>, D>(
4017 self.inspect_counter_configs.as_ref().map(<fidl::encoding::Vector<InspectCounterConfig, 127> as fidl::encoding::ValueTypeMarker>::borrow),
4018 encoder, offset + cur_offset, depth
4019 )?;
4020
4021 _prev_end_offset = cur_offset + envelope_size;
4022 if 2 > max_ordinal {
4023 return Ok(());
4024 }
4025
4026 let cur_offset: usize = (2 - 1) * envelope_size;
4029
4030 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4032
4033 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<InspectGaugeConfig, 127>, D>(
4038 self.inspect_gauge_configs.as_ref().map(<fidl::encoding::Vector<InspectGaugeConfig, 127> as fidl::encoding::ValueTypeMarker>::borrow),
4039 encoder, offset + cur_offset, depth
4040 )?;
4041
4042 _prev_end_offset = cur_offset + envelope_size;
4043
4044 Ok(())
4045 }
4046 }
4047
4048 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TelemetrySupport {
4049 #[inline(always)]
4050 fn new_empty() -> Self {
4051 Self::default()
4052 }
4053
4054 unsafe fn decode(
4055 &mut self,
4056 decoder: &mut fidl::encoding::Decoder<'_, D>,
4057 offset: usize,
4058 mut depth: fidl::encoding::Depth,
4059 ) -> fidl::Result<()> {
4060 decoder.debug_check_bounds::<Self>(offset);
4061 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4062 None => return Err(fidl::Error::NotNullable),
4063 Some(len) => len,
4064 };
4065 if len == 0 {
4067 return Ok(());
4068 };
4069 depth.increment()?;
4070 let envelope_size = 8;
4071 let bytes_len = len * envelope_size;
4072 let offset = decoder.out_of_line_offset(bytes_len)?;
4073 let mut _next_ordinal_to_read = 0;
4075 let mut next_offset = offset;
4076 let end_offset = offset + bytes_len;
4077 _next_ordinal_to_read += 1;
4078 if next_offset >= end_offset {
4079 return Ok(());
4080 }
4081
4082 while _next_ordinal_to_read < 1 {
4084 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4085 _next_ordinal_to_read += 1;
4086 next_offset += envelope_size;
4087 }
4088
4089 let next_out_of_line = decoder.next_out_of_line();
4090 let handles_before = decoder.remaining_handles();
4091 if let Some((inlined, num_bytes, num_handles)) =
4092 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4093 {
4094 let member_inline_size = <fidl::encoding::Vector<InspectCounterConfig, 127> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4095 if inlined != (member_inline_size <= 4) {
4096 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4097 }
4098 let inner_offset;
4099 let mut inner_depth = depth.clone();
4100 if inlined {
4101 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4102 inner_offset = next_offset;
4103 } else {
4104 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4105 inner_depth.increment()?;
4106 }
4107 let val_ref = self.inspect_counter_configs.get_or_insert_with(
4108 || fidl::new_empty!(fidl::encoding::Vector<InspectCounterConfig, 127>, D),
4109 );
4110 fidl::decode!(fidl::encoding::Vector<InspectCounterConfig, 127>, D, val_ref, decoder, inner_offset, inner_depth)?;
4111 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4112 {
4113 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4114 }
4115 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4116 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4117 }
4118 }
4119
4120 next_offset += envelope_size;
4121 _next_ordinal_to_read += 1;
4122 if next_offset >= end_offset {
4123 return Ok(());
4124 }
4125
4126 while _next_ordinal_to_read < 2 {
4128 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4129 _next_ordinal_to_read += 1;
4130 next_offset += envelope_size;
4131 }
4132
4133 let next_out_of_line = decoder.next_out_of_line();
4134 let handles_before = decoder.remaining_handles();
4135 if let Some((inlined, num_bytes, num_handles)) =
4136 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4137 {
4138 let member_inline_size = <fidl::encoding::Vector<InspectGaugeConfig, 127> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4139 if inlined != (member_inline_size <= 4) {
4140 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4141 }
4142 let inner_offset;
4143 let mut inner_depth = depth.clone();
4144 if inlined {
4145 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4146 inner_offset = next_offset;
4147 } else {
4148 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4149 inner_depth.increment()?;
4150 }
4151 let val_ref = self.inspect_gauge_configs.get_or_insert_with(
4152 || fidl::new_empty!(fidl::encoding::Vector<InspectGaugeConfig, 127>, D),
4153 );
4154 fidl::decode!(fidl::encoding::Vector<InspectGaugeConfig, 127>, D, val_ref, decoder, inner_offset, inner_depth)?;
4155 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4156 {
4157 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4158 }
4159 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4160 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4161 }
4162 }
4163
4164 next_offset += envelope_size;
4165
4166 while next_offset < end_offset {
4168 _next_ordinal_to_read += 1;
4169 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4170 next_offset += envelope_size;
4171 }
4172
4173 Ok(())
4174 }
4175 }
4176}