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 primary: Option<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber>,
295 pub tx_rate_500kbps: Option<u32>,
296 pub rssi_dbm: Option<i8>,
297 pub snr_db: Option<i8>,
298 pub bandwidth: Option<fidl_fuchsia_wlan_ieee80211_common::ChannelBandwidth>,
299 pub vht_secondary_80_channel: Option<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber>,
300 #[doc(hidden)]
301 pub __source_breaking: fidl::marker::SourceBreaking,
302}
303
304impl fidl::Persistable for ConnectionSignalReport {}
305
306#[derive(Clone, Debug, Default, PartialEq)]
307pub struct ConnectionStats {
308 pub connection_id: Option<u8>,
318 pub driver_specific_counters: Option<Vec<UnnamedCounter>>,
319 pub driver_specific_gauges: Option<Vec<UnnamedGauge>>,
320 pub rx_unicast_total: Option<u64>,
321 pub rx_unicast_drop: Option<u64>,
322 pub rx_multicast: Option<u64>,
323 pub tx_total: Option<u64>,
324 pub tx_drop: Option<u64>,
325 pub wme: Option<WmePacketStats>,
326 #[doc(hidden)]
327 pub __source_breaking: fidl::marker::SourceBreaking,
328}
329
330impl fidl::Persistable for ConnectionStats {}
331
332#[derive(Clone, Debug, Default, PartialEq)]
333pub struct IfaceHistogramStats {
334 pub noise_floor_histograms: Option<Vec<NoiseFloorHistogram>>,
336 pub rssi_histograms: Option<Vec<RssiHistogram>>,
338 pub rx_rate_index_histograms: Option<Vec<RxRateIndexHistogram>>,
340 pub snr_histograms: Option<Vec<SnrHistogram>>,
342 #[doc(hidden)]
343 pub __source_breaking: fidl::marker::SourceBreaking,
344}
345
346impl fidl::Persistable for IfaceHistogramStats {}
347
348#[derive(Clone, Debug, Default, PartialEq)]
349pub struct IfaceStats {
350 pub connection_stats: Option<ConnectionStats>,
352 pub driver_specific_counters: Option<Vec<UnnamedCounter>>,
353 pub driver_specific_gauges: Option<Vec<UnnamedGauge>>,
354 #[doc(hidden)]
355 pub __source_breaking: fidl::marker::SourceBreaking,
356}
357
358impl fidl::Persistable for IfaceStats {}
359
360#[derive(Clone, Debug, Default, PartialEq)]
363pub struct InspectCounterConfig {
364 pub counter_id: Option<u16>,
365 pub counter_name: Option<String>,
366 #[doc(hidden)]
367 pub __source_breaking: fidl::marker::SourceBreaking,
368}
369
370impl fidl::Persistable for InspectCounterConfig {}
371
372#[derive(Clone, Debug, Default, PartialEq)]
375pub struct InspectGaugeConfig {
376 pub gauge_id: Option<u16>,
377 pub gauge_name: Option<String>,
378 pub statistics: Option<Vec<GaugeStatistic>>,
380 #[doc(hidden)]
381 pub __source_breaking: fidl::marker::SourceBreaking,
382}
383
384impl fidl::Persistable for InspectGaugeConfig {}
385
386#[derive(Clone, Debug, Default, PartialEq)]
387pub struct PacketStats {
388 pub rx: Option<u64>,
389 pub tx: Option<u64>,
390 pub tx_drop: Option<u64>,
391 pub tx_retries: Option<u64>,
392 #[doc(hidden)]
393 pub __source_breaking: fidl::marker::SourceBreaking,
394}
395
396impl fidl::Persistable for PacketStats {}
397
398#[derive(Clone, Debug, Default, PartialEq)]
399pub struct SignalReport {
400 pub connection_signal_report: Option<ConnectionSignalReport>,
403 #[doc(hidden)]
404 pub __source_breaking: fidl::marker::SourceBreaking,
405}
406
407impl fidl::Persistable for SignalReport {}
408
409#[derive(Clone, Debug, Default, PartialEq)]
410pub struct TelemetrySupport {
411 pub inspect_counter_configs: Option<Vec<InspectCounterConfig>>,
413 pub inspect_gauge_configs: Option<Vec<InspectGaugeConfig>>,
415 #[doc(hidden)]
416 pub __source_breaking: fidl::marker::SourceBreaking,
417}
418
419impl fidl::Persistable for TelemetrySupport {}
420
421#[derive(Clone, Debug, Default, PartialEq)]
422pub struct WmePacketStats {
423 pub be: Option<PacketStats>,
424 pub bk: Option<PacketStats>,
425 pub vi: Option<PacketStats>,
426 pub vo: Option<PacketStats>,
427 #[doc(hidden)]
428 pub __source_breaking: fidl::marker::SourceBreaking,
429}
430
431impl fidl::Persistable for WmePacketStats {}
432
433mod internal {
434 use super::*;
435 unsafe impl fidl::encoding::TypeMarker for AntennaFreq {
436 type Owned = Self;
437
438 #[inline(always)]
439 fn inline_align(_context: fidl::encoding::Context) -> usize {
440 std::mem::align_of::<u8>()
441 }
442
443 #[inline(always)]
444 fn inline_size(_context: fidl::encoding::Context) -> usize {
445 std::mem::size_of::<u8>()
446 }
447
448 #[inline(always)]
449 fn encode_is_copy() -> bool {
450 true
451 }
452
453 #[inline(always)]
454 fn decode_is_copy() -> bool {
455 false
456 }
457 }
458
459 impl fidl::encoding::ValueTypeMarker for AntennaFreq {
460 type Borrowed<'a> = Self;
461 #[inline(always)]
462 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
463 *value
464 }
465 }
466
467 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for AntennaFreq {
468 #[inline]
469 unsafe fn encode(
470 self,
471 encoder: &mut fidl::encoding::Encoder<'_, D>,
472 offset: usize,
473 _depth: fidl::encoding::Depth,
474 ) -> fidl::Result<()> {
475 encoder.debug_check_bounds::<Self>(offset);
476 encoder.write_num(self.into_primitive(), offset);
477 Ok(())
478 }
479 }
480
481 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AntennaFreq {
482 #[inline(always)]
483 fn new_empty() -> Self {
484 Self::Antenna2G
485 }
486
487 #[inline]
488 unsafe fn decode(
489 &mut self,
490 decoder: &mut fidl::encoding::Decoder<'_, D>,
491 offset: usize,
492 _depth: fidl::encoding::Depth,
493 ) -> fidl::Result<()> {
494 decoder.debug_check_bounds::<Self>(offset);
495 let prim = decoder.read_num::<u8>(offset);
496
497 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
498 Ok(())
499 }
500 }
501 unsafe impl fidl::encoding::TypeMarker for GaugeStatistic {
502 type Owned = Self;
503
504 #[inline(always)]
505 fn inline_align(_context: fidl::encoding::Context) -> usize {
506 std::mem::align_of::<u8>()
507 }
508
509 #[inline(always)]
510 fn inline_size(_context: fidl::encoding::Context) -> usize {
511 std::mem::size_of::<u8>()
512 }
513
514 #[inline(always)]
515 fn encode_is_copy() -> bool {
516 false
517 }
518
519 #[inline(always)]
520 fn decode_is_copy() -> bool {
521 false
522 }
523 }
524
525 impl fidl::encoding::ValueTypeMarker for GaugeStatistic {
526 type Borrowed<'a> = Self;
527 #[inline(always)]
528 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
529 *value
530 }
531 }
532
533 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for GaugeStatistic {
534 #[inline]
535 unsafe fn encode(
536 self,
537 encoder: &mut fidl::encoding::Encoder<'_, D>,
538 offset: usize,
539 _depth: fidl::encoding::Depth,
540 ) -> fidl::Result<()> {
541 encoder.debug_check_bounds::<Self>(offset);
542 encoder.write_num(self.into_primitive(), offset);
543 Ok(())
544 }
545 }
546
547 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for GaugeStatistic {
548 #[inline(always)]
549 fn new_empty() -> Self {
550 Self::unknown()
551 }
552
553 #[inline]
554 unsafe fn decode(
555 &mut self,
556 decoder: &mut fidl::encoding::Decoder<'_, D>,
557 offset: usize,
558 _depth: fidl::encoding::Depth,
559 ) -> fidl::Result<()> {
560 decoder.debug_check_bounds::<Self>(offset);
561 let prim = decoder.read_num::<u8>(offset);
562
563 *self = Self::from_primitive_allow_unknown(prim);
564 Ok(())
565 }
566 }
567 unsafe impl fidl::encoding::TypeMarker for HistScope {
568 type Owned = Self;
569
570 #[inline(always)]
571 fn inline_align(_context: fidl::encoding::Context) -> usize {
572 std::mem::align_of::<u8>()
573 }
574
575 #[inline(always)]
576 fn inline_size(_context: fidl::encoding::Context) -> usize {
577 std::mem::size_of::<u8>()
578 }
579
580 #[inline(always)]
581 fn encode_is_copy() -> bool {
582 true
583 }
584
585 #[inline(always)]
586 fn decode_is_copy() -> bool {
587 false
588 }
589 }
590
591 impl fidl::encoding::ValueTypeMarker for HistScope {
592 type Borrowed<'a> = Self;
593 #[inline(always)]
594 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
595 *value
596 }
597 }
598
599 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for HistScope {
600 #[inline]
601 unsafe fn encode(
602 self,
603 encoder: &mut fidl::encoding::Encoder<'_, D>,
604 offset: usize,
605 _depth: fidl::encoding::Depth,
606 ) -> fidl::Result<()> {
607 encoder.debug_check_bounds::<Self>(offset);
608 encoder.write_num(self.into_primitive(), offset);
609 Ok(())
610 }
611 }
612
613 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HistScope {
614 #[inline(always)]
615 fn new_empty() -> Self {
616 Self::Station
617 }
618
619 #[inline]
620 unsafe fn decode(
621 &mut self,
622 decoder: &mut fidl::encoding::Decoder<'_, D>,
623 offset: usize,
624 _depth: fidl::encoding::Depth,
625 ) -> fidl::Result<()> {
626 decoder.debug_check_bounds::<Self>(offset);
627 let prim = decoder.read_num::<u8>(offset);
628
629 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
630 Ok(())
631 }
632 }
633
634 impl fidl::encoding::ValueTypeMarker for AntennaId {
635 type Borrowed<'a> = &'a Self;
636 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
637 value
638 }
639 }
640
641 unsafe impl fidl::encoding::TypeMarker for AntennaId {
642 type Owned = Self;
643
644 #[inline(always)]
645 fn inline_align(_context: fidl::encoding::Context) -> usize {
646 1
647 }
648
649 #[inline(always)]
650 fn inline_size(_context: fidl::encoding::Context) -> usize {
651 2
652 }
653 }
654
655 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AntennaId, D>
656 for &AntennaId
657 {
658 #[inline]
659 unsafe fn encode(
660 self,
661 encoder: &mut fidl::encoding::Encoder<'_, D>,
662 offset: usize,
663 _depth: fidl::encoding::Depth,
664 ) -> fidl::Result<()> {
665 encoder.debug_check_bounds::<AntennaId>(offset);
666 fidl::encoding::Encode::<AntennaId, D>::encode(
668 (
669 <AntennaFreq as fidl::encoding::ValueTypeMarker>::borrow(&self.freq),
670 <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.index),
671 ),
672 encoder,
673 offset,
674 _depth,
675 )
676 }
677 }
678 unsafe impl<
679 D: fidl::encoding::ResourceDialect,
680 T0: fidl::encoding::Encode<AntennaFreq, D>,
681 T1: fidl::encoding::Encode<u8, D>,
682 > fidl::encoding::Encode<AntennaId, D> for (T0, T1)
683 {
684 #[inline]
685 unsafe fn encode(
686 self,
687 encoder: &mut fidl::encoding::Encoder<'_, D>,
688 offset: usize,
689 depth: fidl::encoding::Depth,
690 ) -> fidl::Result<()> {
691 encoder.debug_check_bounds::<AntennaId>(offset);
692 self.0.encode(encoder, offset + 0, depth)?;
696 self.1.encode(encoder, offset + 1, depth)?;
697 Ok(())
698 }
699 }
700
701 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AntennaId {
702 #[inline(always)]
703 fn new_empty() -> Self {
704 Self { freq: fidl::new_empty!(AntennaFreq, D), index: fidl::new_empty!(u8, D) }
705 }
706
707 #[inline]
708 unsafe fn decode(
709 &mut self,
710 decoder: &mut fidl::encoding::Decoder<'_, D>,
711 offset: usize,
712 _depth: fidl::encoding::Depth,
713 ) -> fidl::Result<()> {
714 decoder.debug_check_bounds::<Self>(offset);
715 fidl::decode!(AntennaFreq, D, &mut self.freq, decoder, offset + 0, _depth)?;
717 fidl::decode!(u8, D, &mut self.index, decoder, offset + 1, _depth)?;
718 Ok(())
719 }
720 }
721
722 impl fidl::encoding::ValueTypeMarker for HistBucket {
723 type Borrowed<'a> = &'a Self;
724 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
725 value
726 }
727 }
728
729 unsafe impl fidl::encoding::TypeMarker for HistBucket {
730 type Owned = Self;
731
732 #[inline(always)]
733 fn inline_align(_context: fidl::encoding::Context) -> usize {
734 8
735 }
736
737 #[inline(always)]
738 fn inline_size(_context: fidl::encoding::Context) -> usize {
739 16
740 }
741 }
742
743 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<HistBucket, D>
744 for &HistBucket
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 {
755 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
757 (buf_ptr as *mut HistBucket).write_unaligned((self as *const HistBucket).read());
758 let padding_ptr = buf_ptr.offset(0) as *mut u64;
761 let padding_mask = 0xffffffffffff0000u64;
762 padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
763 }
764 Ok(())
765 }
766 }
767 unsafe impl<
768 D: fidl::encoding::ResourceDialect,
769 T0: fidl::encoding::Encode<u16, D>,
770 T1: fidl::encoding::Encode<u64, D>,
771 > fidl::encoding::Encode<HistBucket, D> for (T0, T1)
772 {
773 #[inline]
774 unsafe fn encode(
775 self,
776 encoder: &mut fidl::encoding::Encoder<'_, D>,
777 offset: usize,
778 depth: fidl::encoding::Depth,
779 ) -> fidl::Result<()> {
780 encoder.debug_check_bounds::<HistBucket>(offset);
781 unsafe {
784 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
785 (ptr as *mut u64).write_unaligned(0);
786 }
787 self.0.encode(encoder, offset + 0, depth)?;
789 self.1.encode(encoder, offset + 8, depth)?;
790 Ok(())
791 }
792 }
793
794 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HistBucket {
795 #[inline(always)]
796 fn new_empty() -> Self {
797 Self { bucket_index: fidl::new_empty!(u16, D), num_samples: fidl::new_empty!(u64, D) }
798 }
799
800 #[inline]
801 unsafe fn decode(
802 &mut self,
803 decoder: &mut fidl::encoding::Decoder<'_, D>,
804 offset: usize,
805 _depth: fidl::encoding::Depth,
806 ) -> fidl::Result<()> {
807 decoder.debug_check_bounds::<Self>(offset);
808 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
809 let ptr = unsafe { buf_ptr.offset(0) };
811 let padval = unsafe { (ptr as *const u64).read_unaligned() };
812 let mask = 0xffffffffffff0000u64;
813 let maskedval = padval & mask;
814 if maskedval != 0 {
815 return Err(fidl::Error::NonZeroPadding {
816 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
817 });
818 }
819 unsafe {
821 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 16);
822 }
823 Ok(())
824 }
825 }
826
827 impl fidl::encoding::ValueTypeMarker for NoiseFloorHistogram {
828 type Borrowed<'a> = &'a Self;
829 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
830 value
831 }
832 }
833
834 unsafe impl fidl::encoding::TypeMarker for NoiseFloorHistogram {
835 type Owned = Self;
836
837 #[inline(always)]
838 fn inline_align(_context: fidl::encoding::Context) -> usize {
839 8
840 }
841
842 #[inline(always)]
843 fn inline_size(_context: fidl::encoding::Context) -> usize {
844 40
845 }
846 }
847
848 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NoiseFloorHistogram, D>
849 for &NoiseFloorHistogram
850 {
851 #[inline]
852 unsafe fn encode(
853 self,
854 encoder: &mut fidl::encoding::Encoder<'_, D>,
855 offset: usize,
856 _depth: fidl::encoding::Depth,
857 ) -> fidl::Result<()> {
858 encoder.debug_check_bounds::<NoiseFloorHistogram>(offset);
859 fidl::encoding::Encode::<NoiseFloorHistogram, D>::encode(
861 (
862 <HistScope as fidl::encoding::ValueTypeMarker>::borrow(&self.hist_scope),
863 <fidl::encoding::Boxed<AntennaId> as fidl::encoding::ValueTypeMarker>::borrow(&self.antenna_id),
864 <fidl::encoding::Vector<HistBucket, 255> as fidl::encoding::ValueTypeMarker>::borrow(&self.noise_floor_samples),
865 <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.invalid_samples),
866 ),
867 encoder, offset, _depth
868 )
869 }
870 }
871 unsafe impl<
872 D: fidl::encoding::ResourceDialect,
873 T0: fidl::encoding::Encode<HistScope, D>,
874 T1: fidl::encoding::Encode<fidl::encoding::Boxed<AntennaId>, D>,
875 T2: fidl::encoding::Encode<fidl::encoding::Vector<HistBucket, 255>, D>,
876 T3: fidl::encoding::Encode<u64, D>,
877 > fidl::encoding::Encode<NoiseFloorHistogram, D> for (T0, T1, T2, T3)
878 {
879 #[inline]
880 unsafe fn encode(
881 self,
882 encoder: &mut fidl::encoding::Encoder<'_, D>,
883 offset: usize,
884 depth: fidl::encoding::Depth,
885 ) -> fidl::Result<()> {
886 encoder.debug_check_bounds::<NoiseFloorHistogram>(offset);
887 unsafe {
890 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
891 (ptr as *mut u64).write_unaligned(0);
892 }
893 self.0.encode(encoder, offset + 0, depth)?;
895 self.1.encode(encoder, offset + 8, depth)?;
896 self.2.encode(encoder, offset + 16, depth)?;
897 self.3.encode(encoder, offset + 32, depth)?;
898 Ok(())
899 }
900 }
901
902 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NoiseFloorHistogram {
903 #[inline(always)]
904 fn new_empty() -> Self {
905 Self {
906 hist_scope: fidl::new_empty!(HistScope, D),
907 antenna_id: fidl::new_empty!(fidl::encoding::Boxed<AntennaId>, D),
908 noise_floor_samples: fidl::new_empty!(fidl::encoding::Vector<HistBucket, 255>, D),
909 invalid_samples: fidl::new_empty!(u64, D),
910 }
911 }
912
913 #[inline]
914 unsafe fn decode(
915 &mut self,
916 decoder: &mut fidl::encoding::Decoder<'_, D>,
917 offset: usize,
918 _depth: fidl::encoding::Depth,
919 ) -> fidl::Result<()> {
920 decoder.debug_check_bounds::<Self>(offset);
921 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
923 let padval = unsafe { (ptr as *const u64).read_unaligned() };
924 let mask = 0xffffffffffffff00u64;
925 let maskedval = padval & mask;
926 if maskedval != 0 {
927 return Err(fidl::Error::NonZeroPadding {
928 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
929 });
930 }
931 fidl::decode!(HistScope, D, &mut self.hist_scope, decoder, offset + 0, _depth)?;
932 fidl::decode!(
933 fidl::encoding::Boxed<AntennaId>,
934 D,
935 &mut self.antenna_id,
936 decoder,
937 offset + 8,
938 _depth
939 )?;
940 fidl::decode!(fidl::encoding::Vector<HistBucket, 255>, D, &mut self.noise_floor_samples, decoder, offset + 16, _depth)?;
941 fidl::decode!(u64, D, &mut self.invalid_samples, decoder, offset + 32, _depth)?;
942 Ok(())
943 }
944 }
945
946 impl fidl::encoding::ValueTypeMarker for RssiHistogram {
947 type Borrowed<'a> = &'a Self;
948 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
949 value
950 }
951 }
952
953 unsafe impl fidl::encoding::TypeMarker for RssiHistogram {
954 type Owned = Self;
955
956 #[inline(always)]
957 fn inline_align(_context: fidl::encoding::Context) -> usize {
958 8
959 }
960
961 #[inline(always)]
962 fn inline_size(_context: fidl::encoding::Context) -> usize {
963 40
964 }
965 }
966
967 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RssiHistogram, D>
968 for &RssiHistogram
969 {
970 #[inline]
971 unsafe fn encode(
972 self,
973 encoder: &mut fidl::encoding::Encoder<'_, D>,
974 offset: usize,
975 _depth: fidl::encoding::Depth,
976 ) -> fidl::Result<()> {
977 encoder.debug_check_bounds::<RssiHistogram>(offset);
978 fidl::encoding::Encode::<RssiHistogram, D>::encode(
980 (
981 <HistScope as fidl::encoding::ValueTypeMarker>::borrow(&self.hist_scope),
982 <fidl::encoding::Boxed<AntennaId> as fidl::encoding::ValueTypeMarker>::borrow(&self.antenna_id),
983 <fidl::encoding::Vector<HistBucket, 255> as fidl::encoding::ValueTypeMarker>::borrow(&self.rssi_samples),
984 <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.invalid_samples),
985 ),
986 encoder, offset, _depth
987 )
988 }
989 }
990 unsafe impl<
991 D: fidl::encoding::ResourceDialect,
992 T0: fidl::encoding::Encode<HistScope, D>,
993 T1: fidl::encoding::Encode<fidl::encoding::Boxed<AntennaId>, D>,
994 T2: fidl::encoding::Encode<fidl::encoding::Vector<HistBucket, 255>, D>,
995 T3: fidl::encoding::Encode<u64, D>,
996 > fidl::encoding::Encode<RssiHistogram, D> for (T0, T1, T2, T3)
997 {
998 #[inline]
999 unsafe fn encode(
1000 self,
1001 encoder: &mut fidl::encoding::Encoder<'_, D>,
1002 offset: usize,
1003 depth: fidl::encoding::Depth,
1004 ) -> fidl::Result<()> {
1005 encoder.debug_check_bounds::<RssiHistogram>(offset);
1006 unsafe {
1009 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
1010 (ptr as *mut u64).write_unaligned(0);
1011 }
1012 self.0.encode(encoder, offset + 0, depth)?;
1014 self.1.encode(encoder, offset + 8, depth)?;
1015 self.2.encode(encoder, offset + 16, depth)?;
1016 self.3.encode(encoder, offset + 32, depth)?;
1017 Ok(())
1018 }
1019 }
1020
1021 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RssiHistogram {
1022 #[inline(always)]
1023 fn new_empty() -> Self {
1024 Self {
1025 hist_scope: fidl::new_empty!(HistScope, D),
1026 antenna_id: fidl::new_empty!(fidl::encoding::Boxed<AntennaId>, D),
1027 rssi_samples: fidl::new_empty!(fidl::encoding::Vector<HistBucket, 255>, D),
1028 invalid_samples: fidl::new_empty!(u64, D),
1029 }
1030 }
1031
1032 #[inline]
1033 unsafe fn decode(
1034 &mut self,
1035 decoder: &mut fidl::encoding::Decoder<'_, D>,
1036 offset: usize,
1037 _depth: fidl::encoding::Depth,
1038 ) -> fidl::Result<()> {
1039 decoder.debug_check_bounds::<Self>(offset);
1040 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
1042 let padval = unsafe { (ptr as *const u64).read_unaligned() };
1043 let mask = 0xffffffffffffff00u64;
1044 let maskedval = padval & mask;
1045 if maskedval != 0 {
1046 return Err(fidl::Error::NonZeroPadding {
1047 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
1048 });
1049 }
1050 fidl::decode!(HistScope, D, &mut self.hist_scope, decoder, offset + 0, _depth)?;
1051 fidl::decode!(
1052 fidl::encoding::Boxed<AntennaId>,
1053 D,
1054 &mut self.antenna_id,
1055 decoder,
1056 offset + 8,
1057 _depth
1058 )?;
1059 fidl::decode!(fidl::encoding::Vector<HistBucket, 255>, D, &mut self.rssi_samples, decoder, offset + 16, _depth)?;
1060 fidl::decode!(u64, D, &mut self.invalid_samples, decoder, offset + 32, _depth)?;
1061 Ok(())
1062 }
1063 }
1064
1065 impl fidl::encoding::ValueTypeMarker for RxRateIndexHistogram {
1066 type Borrowed<'a> = &'a Self;
1067 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1068 value
1069 }
1070 }
1071
1072 unsafe impl fidl::encoding::TypeMarker for RxRateIndexHistogram {
1073 type Owned = Self;
1074
1075 #[inline(always)]
1076 fn inline_align(_context: fidl::encoding::Context) -> usize {
1077 8
1078 }
1079
1080 #[inline(always)]
1081 fn inline_size(_context: fidl::encoding::Context) -> usize {
1082 40
1083 }
1084 }
1085
1086 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RxRateIndexHistogram, D>
1087 for &RxRateIndexHistogram
1088 {
1089 #[inline]
1090 unsafe fn encode(
1091 self,
1092 encoder: &mut fidl::encoding::Encoder<'_, D>,
1093 offset: usize,
1094 _depth: fidl::encoding::Depth,
1095 ) -> fidl::Result<()> {
1096 encoder.debug_check_bounds::<RxRateIndexHistogram>(offset);
1097 fidl::encoding::Encode::<RxRateIndexHistogram, D>::encode(
1099 (
1100 <HistScope as fidl::encoding::ValueTypeMarker>::borrow(&self.hist_scope),
1101 <fidl::encoding::Boxed<AntennaId> as fidl::encoding::ValueTypeMarker>::borrow(&self.antenna_id),
1102 <fidl::encoding::Vector<HistBucket, 196> as fidl::encoding::ValueTypeMarker>::borrow(&self.rx_rate_index_samples),
1103 <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.invalid_samples),
1104 ),
1105 encoder, offset, _depth
1106 )
1107 }
1108 }
1109 unsafe impl<
1110 D: fidl::encoding::ResourceDialect,
1111 T0: fidl::encoding::Encode<HistScope, D>,
1112 T1: fidl::encoding::Encode<fidl::encoding::Boxed<AntennaId>, D>,
1113 T2: fidl::encoding::Encode<fidl::encoding::Vector<HistBucket, 196>, D>,
1114 T3: fidl::encoding::Encode<u64, D>,
1115 > fidl::encoding::Encode<RxRateIndexHistogram, D> for (T0, T1, T2, T3)
1116 {
1117 #[inline]
1118 unsafe fn encode(
1119 self,
1120 encoder: &mut fidl::encoding::Encoder<'_, D>,
1121 offset: usize,
1122 depth: fidl::encoding::Depth,
1123 ) -> fidl::Result<()> {
1124 encoder.debug_check_bounds::<RxRateIndexHistogram>(offset);
1125 unsafe {
1128 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
1129 (ptr as *mut u64).write_unaligned(0);
1130 }
1131 self.0.encode(encoder, offset + 0, depth)?;
1133 self.1.encode(encoder, offset + 8, depth)?;
1134 self.2.encode(encoder, offset + 16, depth)?;
1135 self.3.encode(encoder, offset + 32, depth)?;
1136 Ok(())
1137 }
1138 }
1139
1140 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RxRateIndexHistogram {
1141 #[inline(always)]
1142 fn new_empty() -> Self {
1143 Self {
1144 hist_scope: fidl::new_empty!(HistScope, D),
1145 antenna_id: fidl::new_empty!(fidl::encoding::Boxed<AntennaId>, D),
1146 rx_rate_index_samples: fidl::new_empty!(fidl::encoding::Vector<HistBucket, 196>, D),
1147 invalid_samples: fidl::new_empty!(u64, D),
1148 }
1149 }
1150
1151 #[inline]
1152 unsafe fn decode(
1153 &mut self,
1154 decoder: &mut fidl::encoding::Decoder<'_, D>,
1155 offset: usize,
1156 _depth: fidl::encoding::Depth,
1157 ) -> fidl::Result<()> {
1158 decoder.debug_check_bounds::<Self>(offset);
1159 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
1161 let padval = unsafe { (ptr as *const u64).read_unaligned() };
1162 let mask = 0xffffffffffffff00u64;
1163 let maskedval = padval & mask;
1164 if maskedval != 0 {
1165 return Err(fidl::Error::NonZeroPadding {
1166 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
1167 });
1168 }
1169 fidl::decode!(HistScope, D, &mut self.hist_scope, decoder, offset + 0, _depth)?;
1170 fidl::decode!(
1171 fidl::encoding::Boxed<AntennaId>,
1172 D,
1173 &mut self.antenna_id,
1174 decoder,
1175 offset + 8,
1176 _depth
1177 )?;
1178 fidl::decode!(fidl::encoding::Vector<HistBucket, 196>, D, &mut self.rx_rate_index_samples, decoder, offset + 16, _depth)?;
1179 fidl::decode!(u64, D, &mut self.invalid_samples, decoder, offset + 32, _depth)?;
1180 Ok(())
1181 }
1182 }
1183
1184 impl fidl::encoding::ValueTypeMarker for SnrHistogram {
1185 type Borrowed<'a> = &'a Self;
1186 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1187 value
1188 }
1189 }
1190
1191 unsafe impl fidl::encoding::TypeMarker for SnrHistogram {
1192 type Owned = Self;
1193
1194 #[inline(always)]
1195 fn inline_align(_context: fidl::encoding::Context) -> usize {
1196 8
1197 }
1198
1199 #[inline(always)]
1200 fn inline_size(_context: fidl::encoding::Context) -> usize {
1201 40
1202 }
1203 }
1204
1205 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SnrHistogram, D>
1206 for &SnrHistogram
1207 {
1208 #[inline]
1209 unsafe fn encode(
1210 self,
1211 encoder: &mut fidl::encoding::Encoder<'_, D>,
1212 offset: usize,
1213 _depth: fidl::encoding::Depth,
1214 ) -> fidl::Result<()> {
1215 encoder.debug_check_bounds::<SnrHistogram>(offset);
1216 fidl::encoding::Encode::<SnrHistogram, D>::encode(
1218 (
1219 <HistScope as fidl::encoding::ValueTypeMarker>::borrow(&self.hist_scope),
1220 <fidl::encoding::Boxed<AntennaId> as fidl::encoding::ValueTypeMarker>::borrow(&self.antenna_id),
1221 <fidl::encoding::Vector<HistBucket, 256> as fidl::encoding::ValueTypeMarker>::borrow(&self.snr_samples),
1222 <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.invalid_samples),
1223 ),
1224 encoder, offset, _depth
1225 )
1226 }
1227 }
1228 unsafe impl<
1229 D: fidl::encoding::ResourceDialect,
1230 T0: fidl::encoding::Encode<HistScope, D>,
1231 T1: fidl::encoding::Encode<fidl::encoding::Boxed<AntennaId>, D>,
1232 T2: fidl::encoding::Encode<fidl::encoding::Vector<HistBucket, 256>, D>,
1233 T3: fidl::encoding::Encode<u64, D>,
1234 > fidl::encoding::Encode<SnrHistogram, D> for (T0, T1, T2, T3)
1235 {
1236 #[inline]
1237 unsafe fn encode(
1238 self,
1239 encoder: &mut fidl::encoding::Encoder<'_, D>,
1240 offset: usize,
1241 depth: fidl::encoding::Depth,
1242 ) -> fidl::Result<()> {
1243 encoder.debug_check_bounds::<SnrHistogram>(offset);
1244 unsafe {
1247 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
1248 (ptr as *mut u64).write_unaligned(0);
1249 }
1250 self.0.encode(encoder, offset + 0, depth)?;
1252 self.1.encode(encoder, offset + 8, depth)?;
1253 self.2.encode(encoder, offset + 16, depth)?;
1254 self.3.encode(encoder, offset + 32, depth)?;
1255 Ok(())
1256 }
1257 }
1258
1259 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SnrHistogram {
1260 #[inline(always)]
1261 fn new_empty() -> Self {
1262 Self {
1263 hist_scope: fidl::new_empty!(HistScope, D),
1264 antenna_id: fidl::new_empty!(fidl::encoding::Boxed<AntennaId>, D),
1265 snr_samples: fidl::new_empty!(fidl::encoding::Vector<HistBucket, 256>, D),
1266 invalid_samples: fidl::new_empty!(u64, D),
1267 }
1268 }
1269
1270 #[inline]
1271 unsafe fn decode(
1272 &mut self,
1273 decoder: &mut fidl::encoding::Decoder<'_, D>,
1274 offset: usize,
1275 _depth: fidl::encoding::Depth,
1276 ) -> fidl::Result<()> {
1277 decoder.debug_check_bounds::<Self>(offset);
1278 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
1280 let padval = unsafe { (ptr as *const u64).read_unaligned() };
1281 let mask = 0xffffffffffffff00u64;
1282 let maskedval = padval & mask;
1283 if maskedval != 0 {
1284 return Err(fidl::Error::NonZeroPadding {
1285 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
1286 });
1287 }
1288 fidl::decode!(HistScope, D, &mut self.hist_scope, decoder, offset + 0, _depth)?;
1289 fidl::decode!(
1290 fidl::encoding::Boxed<AntennaId>,
1291 D,
1292 &mut self.antenna_id,
1293 decoder,
1294 offset + 8,
1295 _depth
1296 )?;
1297 fidl::decode!(fidl::encoding::Vector<HistBucket, 256>, D, &mut self.snr_samples, decoder, offset + 16, _depth)?;
1298 fidl::decode!(u64, D, &mut self.invalid_samples, decoder, offset + 32, _depth)?;
1299 Ok(())
1300 }
1301 }
1302
1303 impl fidl::encoding::ValueTypeMarker for UnnamedCounter {
1304 type Borrowed<'a> = &'a Self;
1305 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1306 value
1307 }
1308 }
1309
1310 unsafe impl fidl::encoding::TypeMarker for UnnamedCounter {
1311 type Owned = Self;
1312
1313 #[inline(always)]
1314 fn inline_align(_context: fidl::encoding::Context) -> usize {
1315 8
1316 }
1317
1318 #[inline(always)]
1319 fn inline_size(_context: fidl::encoding::Context) -> usize {
1320 16
1321 }
1322 }
1323
1324 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UnnamedCounter, D>
1325 for &UnnamedCounter
1326 {
1327 #[inline]
1328 unsafe fn encode(
1329 self,
1330 encoder: &mut fidl::encoding::Encoder<'_, D>,
1331 offset: usize,
1332 _depth: fidl::encoding::Depth,
1333 ) -> fidl::Result<()> {
1334 encoder.debug_check_bounds::<UnnamedCounter>(offset);
1335 unsafe {
1336 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1338 (buf_ptr as *mut UnnamedCounter)
1339 .write_unaligned((self as *const UnnamedCounter).read());
1340 let padding_ptr = buf_ptr.offset(0) as *mut u64;
1343 let padding_mask = 0xffffffffffff0000u64;
1344 padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
1345 }
1346 Ok(())
1347 }
1348 }
1349 unsafe impl<
1350 D: fidl::encoding::ResourceDialect,
1351 T0: fidl::encoding::Encode<u16, D>,
1352 T1: fidl::encoding::Encode<u64, D>,
1353 > fidl::encoding::Encode<UnnamedCounter, D> for (T0, T1)
1354 {
1355 #[inline]
1356 unsafe fn encode(
1357 self,
1358 encoder: &mut fidl::encoding::Encoder<'_, D>,
1359 offset: usize,
1360 depth: fidl::encoding::Depth,
1361 ) -> fidl::Result<()> {
1362 encoder.debug_check_bounds::<UnnamedCounter>(offset);
1363 unsafe {
1366 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
1367 (ptr as *mut u64).write_unaligned(0);
1368 }
1369 self.0.encode(encoder, offset + 0, depth)?;
1371 self.1.encode(encoder, offset + 8, depth)?;
1372 Ok(())
1373 }
1374 }
1375
1376 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UnnamedCounter {
1377 #[inline(always)]
1378 fn new_empty() -> Self {
1379 Self { id: fidl::new_empty!(u16, D), count: fidl::new_empty!(u64, D) }
1380 }
1381
1382 #[inline]
1383 unsafe fn decode(
1384 &mut self,
1385 decoder: &mut fidl::encoding::Decoder<'_, D>,
1386 offset: usize,
1387 _depth: fidl::encoding::Depth,
1388 ) -> fidl::Result<()> {
1389 decoder.debug_check_bounds::<Self>(offset);
1390 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1391 let ptr = unsafe { buf_ptr.offset(0) };
1393 let padval = unsafe { (ptr as *const u64).read_unaligned() };
1394 let mask = 0xffffffffffff0000u64;
1395 let maskedval = padval & mask;
1396 if maskedval != 0 {
1397 return Err(fidl::Error::NonZeroPadding {
1398 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
1399 });
1400 }
1401 unsafe {
1403 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 16);
1404 }
1405 Ok(())
1406 }
1407 }
1408
1409 impl fidl::encoding::ValueTypeMarker for UnnamedGauge {
1410 type Borrowed<'a> = &'a Self;
1411 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1412 value
1413 }
1414 }
1415
1416 unsafe impl fidl::encoding::TypeMarker for UnnamedGauge {
1417 type Owned = Self;
1418
1419 #[inline(always)]
1420 fn inline_align(_context: fidl::encoding::Context) -> usize {
1421 8
1422 }
1423
1424 #[inline(always)]
1425 fn inline_size(_context: fidl::encoding::Context) -> usize {
1426 16
1427 }
1428 }
1429
1430 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UnnamedGauge, D>
1431 for &UnnamedGauge
1432 {
1433 #[inline]
1434 unsafe fn encode(
1435 self,
1436 encoder: &mut fidl::encoding::Encoder<'_, D>,
1437 offset: usize,
1438 _depth: fidl::encoding::Depth,
1439 ) -> fidl::Result<()> {
1440 encoder.debug_check_bounds::<UnnamedGauge>(offset);
1441 unsafe {
1442 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1444 (buf_ptr as *mut UnnamedGauge)
1445 .write_unaligned((self as *const UnnamedGauge).read());
1446 let padding_ptr = buf_ptr.offset(0) as *mut u64;
1449 let padding_mask = 0xffffffffffff0000u64;
1450 padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
1451 }
1452 Ok(())
1453 }
1454 }
1455 unsafe impl<
1456 D: fidl::encoding::ResourceDialect,
1457 T0: fidl::encoding::Encode<u16, D>,
1458 T1: fidl::encoding::Encode<i64, D>,
1459 > fidl::encoding::Encode<UnnamedGauge, D> for (T0, T1)
1460 {
1461 #[inline]
1462 unsafe fn encode(
1463 self,
1464 encoder: &mut fidl::encoding::Encoder<'_, D>,
1465 offset: usize,
1466 depth: fidl::encoding::Depth,
1467 ) -> fidl::Result<()> {
1468 encoder.debug_check_bounds::<UnnamedGauge>(offset);
1469 unsafe {
1472 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
1473 (ptr as *mut u64).write_unaligned(0);
1474 }
1475 self.0.encode(encoder, offset + 0, depth)?;
1477 self.1.encode(encoder, offset + 8, depth)?;
1478 Ok(())
1479 }
1480 }
1481
1482 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UnnamedGauge {
1483 #[inline(always)]
1484 fn new_empty() -> Self {
1485 Self { id: fidl::new_empty!(u16, D), value: fidl::new_empty!(i64, D) }
1486 }
1487
1488 #[inline]
1489 unsafe fn decode(
1490 &mut self,
1491 decoder: &mut fidl::encoding::Decoder<'_, D>,
1492 offset: usize,
1493 _depth: fidl::encoding::Depth,
1494 ) -> fidl::Result<()> {
1495 decoder.debug_check_bounds::<Self>(offset);
1496 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1497 let ptr = unsafe { buf_ptr.offset(0) };
1499 let padval = unsafe { (ptr as *const u64).read_unaligned() };
1500 let mask = 0xffffffffffff0000u64;
1501 let maskedval = padval & mask;
1502 if maskedval != 0 {
1503 return Err(fidl::Error::NonZeroPadding {
1504 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
1505 });
1506 }
1507 unsafe {
1509 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 16);
1510 }
1511 Ok(())
1512 }
1513 }
1514
1515 impl ConnectionSignalReport {
1516 #[inline(always)]
1517 fn max_ordinal_present(&self) -> u64 {
1518 if let Some(_) = self.vht_secondary_80_channel {
1519 return 6;
1520 }
1521 if let Some(_) = self.bandwidth {
1522 return 5;
1523 }
1524 if let Some(_) = self.snr_db {
1525 return 4;
1526 }
1527 if let Some(_) = self.rssi_dbm {
1528 return 3;
1529 }
1530 if let Some(_) = self.tx_rate_500kbps {
1531 return 2;
1532 }
1533 if let Some(_) = self.primary {
1534 return 1;
1535 }
1536 0
1537 }
1538 }
1539
1540 impl fidl::encoding::ValueTypeMarker for ConnectionSignalReport {
1541 type Borrowed<'a> = &'a Self;
1542 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1543 value
1544 }
1545 }
1546
1547 unsafe impl fidl::encoding::TypeMarker for ConnectionSignalReport {
1548 type Owned = Self;
1549
1550 #[inline(always)]
1551 fn inline_align(_context: fidl::encoding::Context) -> usize {
1552 8
1553 }
1554
1555 #[inline(always)]
1556 fn inline_size(_context: fidl::encoding::Context) -> usize {
1557 16
1558 }
1559 }
1560
1561 unsafe impl<D: fidl::encoding::ResourceDialect>
1562 fidl::encoding::Encode<ConnectionSignalReport, D> for &ConnectionSignalReport
1563 {
1564 unsafe fn encode(
1565 self,
1566 encoder: &mut fidl::encoding::Encoder<'_, D>,
1567 offset: usize,
1568 mut depth: fidl::encoding::Depth,
1569 ) -> fidl::Result<()> {
1570 encoder.debug_check_bounds::<ConnectionSignalReport>(offset);
1571 let max_ordinal: u64 = self.max_ordinal_present();
1573 encoder.write_num(max_ordinal, offset);
1574 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1575 if max_ordinal == 0 {
1577 return Ok(());
1578 }
1579 depth.increment()?;
1580 let envelope_size = 8;
1581 let bytes_len = max_ordinal as usize * envelope_size;
1582 #[allow(unused_variables)]
1583 let offset = encoder.out_of_line_offset(bytes_len);
1584 let mut _prev_end_offset: usize = 0;
1585 if 1 > max_ordinal {
1586 return Ok(());
1587 }
1588
1589 let cur_offset: usize = (1 - 1) * envelope_size;
1592
1593 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1595
1596 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, D>(
1601 self.primary.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber as fidl::encoding::ValueTypeMarker>::borrow),
1602 encoder, offset + cur_offset, depth
1603 )?;
1604
1605 _prev_end_offset = cur_offset + envelope_size;
1606 if 2 > max_ordinal {
1607 return Ok(());
1608 }
1609
1610 let cur_offset: usize = (2 - 1) * envelope_size;
1613
1614 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1616
1617 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1622 self.tx_rate_500kbps.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1623 encoder,
1624 offset + cur_offset,
1625 depth,
1626 )?;
1627
1628 _prev_end_offset = cur_offset + envelope_size;
1629 if 3 > max_ordinal {
1630 return Ok(());
1631 }
1632
1633 let cur_offset: usize = (3 - 1) * envelope_size;
1636
1637 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1639
1640 fidl::encoding::encode_in_envelope_optional::<i8, D>(
1645 self.rssi_dbm.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
1646 encoder,
1647 offset + cur_offset,
1648 depth,
1649 )?;
1650
1651 _prev_end_offset = cur_offset + envelope_size;
1652 if 4 > max_ordinal {
1653 return Ok(());
1654 }
1655
1656 let cur_offset: usize = (4 - 1) * envelope_size;
1659
1660 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1662
1663 fidl::encoding::encode_in_envelope_optional::<i8, D>(
1668 self.snr_db.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
1669 encoder,
1670 offset + cur_offset,
1671 depth,
1672 )?;
1673
1674 _prev_end_offset = cur_offset + envelope_size;
1675 if 5 > max_ordinal {
1676 return Ok(());
1677 }
1678
1679 let cur_offset: usize = (5 - 1) * envelope_size;
1682
1683 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1685
1686 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::ChannelBandwidth, D>(
1691 self.bandwidth.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::ChannelBandwidth as fidl::encoding::ValueTypeMarker>::borrow),
1692 encoder, offset + cur_offset, depth
1693 )?;
1694
1695 _prev_end_offset = cur_offset + envelope_size;
1696 if 6 > max_ordinal {
1697 return Ok(());
1698 }
1699
1700 let cur_offset: usize = (6 - 1) * envelope_size;
1703
1704 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1706
1707 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, D>(
1712 self.vht_secondary_80_channel.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber as fidl::encoding::ValueTypeMarker>::borrow),
1713 encoder, offset + cur_offset, depth
1714 )?;
1715
1716 _prev_end_offset = cur_offset + envelope_size;
1717
1718 Ok(())
1719 }
1720 }
1721
1722 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1723 for ConnectionSignalReport
1724 {
1725 #[inline(always)]
1726 fn new_empty() -> Self {
1727 Self::default()
1728 }
1729
1730 unsafe fn decode(
1731 &mut self,
1732 decoder: &mut fidl::encoding::Decoder<'_, D>,
1733 offset: usize,
1734 mut depth: fidl::encoding::Depth,
1735 ) -> fidl::Result<()> {
1736 decoder.debug_check_bounds::<Self>(offset);
1737 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1738 None => return Err(fidl::Error::NotNullable),
1739 Some(len) => len,
1740 };
1741 if len == 0 {
1743 return Ok(());
1744 };
1745 depth.increment()?;
1746 let envelope_size = 8;
1747 let bytes_len = len * envelope_size;
1748 let offset = decoder.out_of_line_offset(bytes_len)?;
1749 let mut _next_ordinal_to_read = 0;
1751 let mut next_offset = offset;
1752 let end_offset = offset + bytes_len;
1753 _next_ordinal_to_read += 1;
1754 if next_offset >= end_offset {
1755 return Ok(());
1756 }
1757
1758 while _next_ordinal_to_read < 1 {
1760 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1761 _next_ordinal_to_read += 1;
1762 next_offset += envelope_size;
1763 }
1764
1765 let next_out_of_line = decoder.next_out_of_line();
1766 let handles_before = decoder.remaining_handles();
1767 if let Some((inlined, num_bytes, num_handles)) =
1768 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1769 {
1770 let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::ChannelNumber as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1771 if inlined != (member_inline_size <= 4) {
1772 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1773 }
1774 let inner_offset;
1775 let mut inner_depth = depth.clone();
1776 if inlined {
1777 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1778 inner_offset = next_offset;
1779 } else {
1780 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1781 inner_depth.increment()?;
1782 }
1783 let val_ref = self.primary.get_or_insert_with(|| {
1784 fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, D)
1785 });
1786 fidl::decode!(
1787 fidl_fuchsia_wlan_ieee80211_common::ChannelNumber,
1788 D,
1789 val_ref,
1790 decoder,
1791 inner_offset,
1792 inner_depth
1793 )?;
1794 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1795 {
1796 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1797 }
1798 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1799 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1800 }
1801 }
1802
1803 next_offset += envelope_size;
1804 _next_ordinal_to_read += 1;
1805 if next_offset >= end_offset {
1806 return Ok(());
1807 }
1808
1809 while _next_ordinal_to_read < 2 {
1811 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1812 _next_ordinal_to_read += 1;
1813 next_offset += envelope_size;
1814 }
1815
1816 let next_out_of_line = decoder.next_out_of_line();
1817 let handles_before = decoder.remaining_handles();
1818 if let Some((inlined, num_bytes, num_handles)) =
1819 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1820 {
1821 let member_inline_size =
1822 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1823 if inlined != (member_inline_size <= 4) {
1824 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1825 }
1826 let inner_offset;
1827 let mut inner_depth = depth.clone();
1828 if inlined {
1829 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1830 inner_offset = next_offset;
1831 } else {
1832 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1833 inner_depth.increment()?;
1834 }
1835 let val_ref = self.tx_rate_500kbps.get_or_insert_with(|| fidl::new_empty!(u32, D));
1836 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
1837 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1838 {
1839 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1840 }
1841 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1842 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1843 }
1844 }
1845
1846 next_offset += envelope_size;
1847 _next_ordinal_to_read += 1;
1848 if next_offset >= end_offset {
1849 return Ok(());
1850 }
1851
1852 while _next_ordinal_to_read < 3 {
1854 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1855 _next_ordinal_to_read += 1;
1856 next_offset += envelope_size;
1857 }
1858
1859 let next_out_of_line = decoder.next_out_of_line();
1860 let handles_before = decoder.remaining_handles();
1861 if let Some((inlined, num_bytes, num_handles)) =
1862 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1863 {
1864 let member_inline_size =
1865 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1866 if inlined != (member_inline_size <= 4) {
1867 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1868 }
1869 let inner_offset;
1870 let mut inner_depth = depth.clone();
1871 if inlined {
1872 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1873 inner_offset = next_offset;
1874 } else {
1875 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1876 inner_depth.increment()?;
1877 }
1878 let val_ref = self.rssi_dbm.get_or_insert_with(|| fidl::new_empty!(i8, D));
1879 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
1880 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1881 {
1882 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1883 }
1884 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1885 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1886 }
1887 }
1888
1889 next_offset += envelope_size;
1890 _next_ordinal_to_read += 1;
1891 if next_offset >= end_offset {
1892 return Ok(());
1893 }
1894
1895 while _next_ordinal_to_read < 4 {
1897 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1898 _next_ordinal_to_read += 1;
1899 next_offset += envelope_size;
1900 }
1901
1902 let next_out_of_line = decoder.next_out_of_line();
1903 let handles_before = decoder.remaining_handles();
1904 if let Some((inlined, num_bytes, num_handles)) =
1905 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1906 {
1907 let member_inline_size =
1908 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1909 if inlined != (member_inline_size <= 4) {
1910 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1911 }
1912 let inner_offset;
1913 let mut inner_depth = depth.clone();
1914 if inlined {
1915 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1916 inner_offset = next_offset;
1917 } else {
1918 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1919 inner_depth.increment()?;
1920 }
1921 let val_ref = self.snr_db.get_or_insert_with(|| fidl::new_empty!(i8, D));
1922 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
1923 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1924 {
1925 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1926 }
1927 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1928 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1929 }
1930 }
1931
1932 next_offset += envelope_size;
1933 _next_ordinal_to_read += 1;
1934 if next_offset >= end_offset {
1935 return Ok(());
1936 }
1937
1938 while _next_ordinal_to_read < 5 {
1940 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1941 _next_ordinal_to_read += 1;
1942 next_offset += envelope_size;
1943 }
1944
1945 let next_out_of_line = decoder.next_out_of_line();
1946 let handles_before = decoder.remaining_handles();
1947 if let Some((inlined, num_bytes, num_handles)) =
1948 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1949 {
1950 let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::ChannelBandwidth as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1951 if inlined != (member_inline_size <= 4) {
1952 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1953 }
1954 let inner_offset;
1955 let mut inner_depth = depth.clone();
1956 if inlined {
1957 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1958 inner_offset = next_offset;
1959 } else {
1960 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1961 inner_depth.increment()?;
1962 }
1963 let val_ref = self.bandwidth.get_or_insert_with(|| {
1964 fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::ChannelBandwidth, D)
1965 });
1966 fidl::decode!(
1967 fidl_fuchsia_wlan_ieee80211_common::ChannelBandwidth,
1968 D,
1969 val_ref,
1970 decoder,
1971 inner_offset,
1972 inner_depth
1973 )?;
1974 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1975 {
1976 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1977 }
1978 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1979 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1980 }
1981 }
1982
1983 next_offset += envelope_size;
1984 _next_ordinal_to_read += 1;
1985 if next_offset >= end_offset {
1986 return Ok(());
1987 }
1988
1989 while _next_ordinal_to_read < 6 {
1991 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1992 _next_ordinal_to_read += 1;
1993 next_offset += envelope_size;
1994 }
1995
1996 let next_out_of_line = decoder.next_out_of_line();
1997 let handles_before = decoder.remaining_handles();
1998 if let Some((inlined, num_bytes, num_handles)) =
1999 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2000 {
2001 let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::ChannelNumber as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2002 if inlined != (member_inline_size <= 4) {
2003 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2004 }
2005 let inner_offset;
2006 let mut inner_depth = depth.clone();
2007 if inlined {
2008 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2009 inner_offset = next_offset;
2010 } else {
2011 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2012 inner_depth.increment()?;
2013 }
2014 let val_ref = self.vht_secondary_80_channel.get_or_insert_with(|| {
2015 fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, D)
2016 });
2017 fidl::decode!(
2018 fidl_fuchsia_wlan_ieee80211_common::ChannelNumber,
2019 D,
2020 val_ref,
2021 decoder,
2022 inner_offset,
2023 inner_depth
2024 )?;
2025 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2026 {
2027 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2028 }
2029 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2030 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2031 }
2032 }
2033
2034 next_offset += envelope_size;
2035
2036 while next_offset < end_offset {
2038 _next_ordinal_to_read += 1;
2039 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2040 next_offset += envelope_size;
2041 }
2042
2043 Ok(())
2044 }
2045 }
2046
2047 impl ConnectionStats {
2048 #[inline(always)]
2049 fn max_ordinal_present(&self) -> u64 {
2050 if let Some(_) = self.wme {
2051 return 9;
2052 }
2053 if let Some(_) = self.tx_drop {
2054 return 8;
2055 }
2056 if let Some(_) = self.tx_total {
2057 return 7;
2058 }
2059 if let Some(_) = self.rx_multicast {
2060 return 6;
2061 }
2062 if let Some(_) = self.rx_unicast_drop {
2063 return 5;
2064 }
2065 if let Some(_) = self.rx_unicast_total {
2066 return 4;
2067 }
2068 if let Some(_) = self.driver_specific_gauges {
2069 return 3;
2070 }
2071 if let Some(_) = self.driver_specific_counters {
2072 return 2;
2073 }
2074 if let Some(_) = self.connection_id {
2075 return 1;
2076 }
2077 0
2078 }
2079 }
2080
2081 impl fidl::encoding::ValueTypeMarker for ConnectionStats {
2082 type Borrowed<'a> = &'a Self;
2083 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2084 value
2085 }
2086 }
2087
2088 unsafe impl fidl::encoding::TypeMarker for ConnectionStats {
2089 type Owned = Self;
2090
2091 #[inline(always)]
2092 fn inline_align(_context: fidl::encoding::Context) -> usize {
2093 8
2094 }
2095
2096 #[inline(always)]
2097 fn inline_size(_context: fidl::encoding::Context) -> usize {
2098 16
2099 }
2100 }
2101
2102 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConnectionStats, D>
2103 for &ConnectionStats
2104 {
2105 unsafe fn encode(
2106 self,
2107 encoder: &mut fidl::encoding::Encoder<'_, D>,
2108 offset: usize,
2109 mut depth: fidl::encoding::Depth,
2110 ) -> fidl::Result<()> {
2111 encoder.debug_check_bounds::<ConnectionStats>(offset);
2112 let max_ordinal: u64 = self.max_ordinal_present();
2114 encoder.write_num(max_ordinal, offset);
2115 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2116 if max_ordinal == 0 {
2118 return Ok(());
2119 }
2120 depth.increment()?;
2121 let envelope_size = 8;
2122 let bytes_len = max_ordinal as usize * envelope_size;
2123 #[allow(unused_variables)]
2124 let offset = encoder.out_of_line_offset(bytes_len);
2125 let mut _prev_end_offset: usize = 0;
2126 if 1 > max_ordinal {
2127 return Ok(());
2128 }
2129
2130 let cur_offset: usize = (1 - 1) * envelope_size;
2133
2134 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2136
2137 fidl::encoding::encode_in_envelope_optional::<u8, D>(
2142 self.connection_id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
2143 encoder,
2144 offset + cur_offset,
2145 depth,
2146 )?;
2147
2148 _prev_end_offset = cur_offset + envelope_size;
2149 if 2 > max_ordinal {
2150 return Ok(());
2151 }
2152
2153 let cur_offset: usize = (2 - 1) * envelope_size;
2156
2157 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2159
2160 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<UnnamedCounter, 127>, D>(
2165 self.driver_specific_counters.as_ref().map(<fidl::encoding::Vector<UnnamedCounter, 127> as fidl::encoding::ValueTypeMarker>::borrow),
2166 encoder, offset + cur_offset, depth
2167 )?;
2168
2169 _prev_end_offset = cur_offset + envelope_size;
2170 if 3 > max_ordinal {
2171 return Ok(());
2172 }
2173
2174 let cur_offset: usize = (3 - 1) * envelope_size;
2177
2178 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2180
2181 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<UnnamedGauge, 127>, D>(
2186 self.driver_specific_gauges.as_ref().map(<fidl::encoding::Vector<UnnamedGauge, 127> as fidl::encoding::ValueTypeMarker>::borrow),
2187 encoder, offset + cur_offset, depth
2188 )?;
2189
2190 _prev_end_offset = cur_offset + envelope_size;
2191 if 4 > max_ordinal {
2192 return Ok(());
2193 }
2194
2195 let cur_offset: usize = (4 - 1) * envelope_size;
2198
2199 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2201
2202 fidl::encoding::encode_in_envelope_optional::<u64, D>(
2207 self.rx_unicast_total
2208 .as_ref()
2209 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
2210 encoder,
2211 offset + cur_offset,
2212 depth,
2213 )?;
2214
2215 _prev_end_offset = cur_offset + envelope_size;
2216 if 5 > max_ordinal {
2217 return Ok(());
2218 }
2219
2220 let cur_offset: usize = (5 - 1) * envelope_size;
2223
2224 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2226
2227 fidl::encoding::encode_in_envelope_optional::<u64, D>(
2232 self.rx_unicast_drop.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
2233 encoder,
2234 offset + cur_offset,
2235 depth,
2236 )?;
2237
2238 _prev_end_offset = cur_offset + envelope_size;
2239 if 6 > max_ordinal {
2240 return Ok(());
2241 }
2242
2243 let cur_offset: usize = (6 - 1) * envelope_size;
2246
2247 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2249
2250 fidl::encoding::encode_in_envelope_optional::<u64, D>(
2255 self.rx_multicast.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
2256 encoder,
2257 offset + cur_offset,
2258 depth,
2259 )?;
2260
2261 _prev_end_offset = cur_offset + envelope_size;
2262 if 7 > max_ordinal {
2263 return Ok(());
2264 }
2265
2266 let cur_offset: usize = (7 - 1) * envelope_size;
2269
2270 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2272
2273 fidl::encoding::encode_in_envelope_optional::<u64, D>(
2278 self.tx_total.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
2279 encoder,
2280 offset + cur_offset,
2281 depth,
2282 )?;
2283
2284 _prev_end_offset = cur_offset + envelope_size;
2285 if 8 > max_ordinal {
2286 return Ok(());
2287 }
2288
2289 let cur_offset: usize = (8 - 1) * envelope_size;
2292
2293 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2295
2296 fidl::encoding::encode_in_envelope_optional::<u64, D>(
2301 self.tx_drop.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
2302 encoder,
2303 offset + cur_offset,
2304 depth,
2305 )?;
2306
2307 _prev_end_offset = cur_offset + envelope_size;
2308 if 9 > max_ordinal {
2309 return Ok(());
2310 }
2311
2312 let cur_offset: usize = (9 - 1) * envelope_size;
2315
2316 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2318
2319 fidl::encoding::encode_in_envelope_optional::<WmePacketStats, D>(
2324 self.wme.as_ref().map(<WmePacketStats as fidl::encoding::ValueTypeMarker>::borrow),
2325 encoder,
2326 offset + cur_offset,
2327 depth,
2328 )?;
2329
2330 _prev_end_offset = cur_offset + envelope_size;
2331
2332 Ok(())
2333 }
2334 }
2335
2336 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConnectionStats {
2337 #[inline(always)]
2338 fn new_empty() -> Self {
2339 Self::default()
2340 }
2341
2342 unsafe fn decode(
2343 &mut self,
2344 decoder: &mut fidl::encoding::Decoder<'_, D>,
2345 offset: usize,
2346 mut depth: fidl::encoding::Depth,
2347 ) -> fidl::Result<()> {
2348 decoder.debug_check_bounds::<Self>(offset);
2349 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2350 None => return Err(fidl::Error::NotNullable),
2351 Some(len) => len,
2352 };
2353 if len == 0 {
2355 return Ok(());
2356 };
2357 depth.increment()?;
2358 let envelope_size = 8;
2359 let bytes_len = len * envelope_size;
2360 let offset = decoder.out_of_line_offset(bytes_len)?;
2361 let mut _next_ordinal_to_read = 0;
2363 let mut next_offset = offset;
2364 let end_offset = offset + bytes_len;
2365 _next_ordinal_to_read += 1;
2366 if next_offset >= end_offset {
2367 return Ok(());
2368 }
2369
2370 while _next_ordinal_to_read < 1 {
2372 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2373 _next_ordinal_to_read += 1;
2374 next_offset += envelope_size;
2375 }
2376
2377 let next_out_of_line = decoder.next_out_of_line();
2378 let handles_before = decoder.remaining_handles();
2379 if let Some((inlined, num_bytes, num_handles)) =
2380 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2381 {
2382 let member_inline_size =
2383 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2384 if inlined != (member_inline_size <= 4) {
2385 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2386 }
2387 let inner_offset;
2388 let mut inner_depth = depth.clone();
2389 if inlined {
2390 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2391 inner_offset = next_offset;
2392 } else {
2393 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2394 inner_depth.increment()?;
2395 }
2396 let val_ref = self.connection_id.get_or_insert_with(|| fidl::new_empty!(u8, D));
2397 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
2398 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2399 {
2400 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2401 }
2402 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2403 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2404 }
2405 }
2406
2407 next_offset += envelope_size;
2408 _next_ordinal_to_read += 1;
2409 if next_offset >= end_offset {
2410 return Ok(());
2411 }
2412
2413 while _next_ordinal_to_read < 2 {
2415 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2416 _next_ordinal_to_read += 1;
2417 next_offset += envelope_size;
2418 }
2419
2420 let next_out_of_line = decoder.next_out_of_line();
2421 let handles_before = decoder.remaining_handles();
2422 if let Some((inlined, num_bytes, num_handles)) =
2423 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2424 {
2425 let member_inline_size = <fidl::encoding::Vector<UnnamedCounter, 127> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2426 if inlined != (member_inline_size <= 4) {
2427 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2428 }
2429 let inner_offset;
2430 let mut inner_depth = depth.clone();
2431 if inlined {
2432 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2433 inner_offset = next_offset;
2434 } else {
2435 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2436 inner_depth.increment()?;
2437 }
2438 let val_ref = self.driver_specific_counters.get_or_insert_with(
2439 || fidl::new_empty!(fidl::encoding::Vector<UnnamedCounter, 127>, D),
2440 );
2441 fidl::decode!(fidl::encoding::Vector<UnnamedCounter, 127>, D, val_ref, decoder, inner_offset, inner_depth)?;
2442 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2443 {
2444 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2445 }
2446 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2447 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2448 }
2449 }
2450
2451 next_offset += envelope_size;
2452 _next_ordinal_to_read += 1;
2453 if next_offset >= end_offset {
2454 return Ok(());
2455 }
2456
2457 while _next_ordinal_to_read < 3 {
2459 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2460 _next_ordinal_to_read += 1;
2461 next_offset += envelope_size;
2462 }
2463
2464 let next_out_of_line = decoder.next_out_of_line();
2465 let handles_before = decoder.remaining_handles();
2466 if let Some((inlined, num_bytes, num_handles)) =
2467 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2468 {
2469 let member_inline_size = <fidl::encoding::Vector<UnnamedGauge, 127> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2470 if inlined != (member_inline_size <= 4) {
2471 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2472 }
2473 let inner_offset;
2474 let mut inner_depth = depth.clone();
2475 if inlined {
2476 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2477 inner_offset = next_offset;
2478 } else {
2479 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2480 inner_depth.increment()?;
2481 }
2482 let val_ref = self.driver_specific_gauges.get_or_insert_with(
2483 || fidl::new_empty!(fidl::encoding::Vector<UnnamedGauge, 127>, D),
2484 );
2485 fidl::decode!(fidl::encoding::Vector<UnnamedGauge, 127>, D, val_ref, decoder, inner_offset, inner_depth)?;
2486 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2487 {
2488 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2489 }
2490 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2491 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2492 }
2493 }
2494
2495 next_offset += envelope_size;
2496 _next_ordinal_to_read += 1;
2497 if next_offset >= end_offset {
2498 return Ok(());
2499 }
2500
2501 while _next_ordinal_to_read < 4 {
2503 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2504 _next_ordinal_to_read += 1;
2505 next_offset += envelope_size;
2506 }
2507
2508 let next_out_of_line = decoder.next_out_of_line();
2509 let handles_before = decoder.remaining_handles();
2510 if let Some((inlined, num_bytes, num_handles)) =
2511 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2512 {
2513 let member_inline_size =
2514 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2515 if inlined != (member_inline_size <= 4) {
2516 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2517 }
2518 let inner_offset;
2519 let mut inner_depth = depth.clone();
2520 if inlined {
2521 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2522 inner_offset = next_offset;
2523 } else {
2524 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2525 inner_depth.increment()?;
2526 }
2527 let val_ref = self.rx_unicast_total.get_or_insert_with(|| fidl::new_empty!(u64, D));
2528 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2529 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2530 {
2531 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2532 }
2533 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2534 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2535 }
2536 }
2537
2538 next_offset += envelope_size;
2539 _next_ordinal_to_read += 1;
2540 if next_offset >= end_offset {
2541 return Ok(());
2542 }
2543
2544 while _next_ordinal_to_read < 5 {
2546 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2547 _next_ordinal_to_read += 1;
2548 next_offset += envelope_size;
2549 }
2550
2551 let next_out_of_line = decoder.next_out_of_line();
2552 let handles_before = decoder.remaining_handles();
2553 if let Some((inlined, num_bytes, num_handles)) =
2554 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2555 {
2556 let member_inline_size =
2557 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2558 if inlined != (member_inline_size <= 4) {
2559 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2560 }
2561 let inner_offset;
2562 let mut inner_depth = depth.clone();
2563 if inlined {
2564 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2565 inner_offset = next_offset;
2566 } else {
2567 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2568 inner_depth.increment()?;
2569 }
2570 let val_ref = self.rx_unicast_drop.get_or_insert_with(|| fidl::new_empty!(u64, D));
2571 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2572 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2573 {
2574 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2575 }
2576 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2577 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2578 }
2579 }
2580
2581 next_offset += envelope_size;
2582 _next_ordinal_to_read += 1;
2583 if next_offset >= end_offset {
2584 return Ok(());
2585 }
2586
2587 while _next_ordinal_to_read < 6 {
2589 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2590 _next_ordinal_to_read += 1;
2591 next_offset += envelope_size;
2592 }
2593
2594 let next_out_of_line = decoder.next_out_of_line();
2595 let handles_before = decoder.remaining_handles();
2596 if let Some((inlined, num_bytes, num_handles)) =
2597 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2598 {
2599 let member_inline_size =
2600 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2601 if inlined != (member_inline_size <= 4) {
2602 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2603 }
2604 let inner_offset;
2605 let mut inner_depth = depth.clone();
2606 if inlined {
2607 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2608 inner_offset = next_offset;
2609 } else {
2610 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2611 inner_depth.increment()?;
2612 }
2613 let val_ref = self.rx_multicast.get_or_insert_with(|| fidl::new_empty!(u64, D));
2614 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2615 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2616 {
2617 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2618 }
2619 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2620 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2621 }
2622 }
2623
2624 next_offset += envelope_size;
2625 _next_ordinal_to_read += 1;
2626 if next_offset >= end_offset {
2627 return Ok(());
2628 }
2629
2630 while _next_ordinal_to_read < 7 {
2632 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2633 _next_ordinal_to_read += 1;
2634 next_offset += envelope_size;
2635 }
2636
2637 let next_out_of_line = decoder.next_out_of_line();
2638 let handles_before = decoder.remaining_handles();
2639 if let Some((inlined, num_bytes, num_handles)) =
2640 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2641 {
2642 let member_inline_size =
2643 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2644 if inlined != (member_inline_size <= 4) {
2645 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2646 }
2647 let inner_offset;
2648 let mut inner_depth = depth.clone();
2649 if inlined {
2650 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2651 inner_offset = next_offset;
2652 } else {
2653 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2654 inner_depth.increment()?;
2655 }
2656 let val_ref = self.tx_total.get_or_insert_with(|| fidl::new_empty!(u64, D));
2657 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2658 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2659 {
2660 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2661 }
2662 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2663 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2664 }
2665 }
2666
2667 next_offset += envelope_size;
2668 _next_ordinal_to_read += 1;
2669 if next_offset >= end_offset {
2670 return Ok(());
2671 }
2672
2673 while _next_ordinal_to_read < 8 {
2675 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2676 _next_ordinal_to_read += 1;
2677 next_offset += envelope_size;
2678 }
2679
2680 let next_out_of_line = decoder.next_out_of_line();
2681 let handles_before = decoder.remaining_handles();
2682 if let Some((inlined, num_bytes, num_handles)) =
2683 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2684 {
2685 let member_inline_size =
2686 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2687 if inlined != (member_inline_size <= 4) {
2688 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2689 }
2690 let inner_offset;
2691 let mut inner_depth = depth.clone();
2692 if inlined {
2693 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2694 inner_offset = next_offset;
2695 } else {
2696 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2697 inner_depth.increment()?;
2698 }
2699 let val_ref = self.tx_drop.get_or_insert_with(|| fidl::new_empty!(u64, D));
2700 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2701 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2702 {
2703 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2704 }
2705 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2706 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2707 }
2708 }
2709
2710 next_offset += envelope_size;
2711 _next_ordinal_to_read += 1;
2712 if next_offset >= end_offset {
2713 return Ok(());
2714 }
2715
2716 while _next_ordinal_to_read < 9 {
2718 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2719 _next_ordinal_to_read += 1;
2720 next_offset += envelope_size;
2721 }
2722
2723 let next_out_of_line = decoder.next_out_of_line();
2724 let handles_before = decoder.remaining_handles();
2725 if let Some((inlined, num_bytes, num_handles)) =
2726 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2727 {
2728 let member_inline_size =
2729 <WmePacketStats as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2730 if inlined != (member_inline_size <= 4) {
2731 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2732 }
2733 let inner_offset;
2734 let mut inner_depth = depth.clone();
2735 if inlined {
2736 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2737 inner_offset = next_offset;
2738 } else {
2739 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2740 inner_depth.increment()?;
2741 }
2742 let val_ref = self.wme.get_or_insert_with(|| fidl::new_empty!(WmePacketStats, D));
2743 fidl::decode!(WmePacketStats, D, val_ref, decoder, inner_offset, inner_depth)?;
2744 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2745 {
2746 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2747 }
2748 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2749 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2750 }
2751 }
2752
2753 next_offset += envelope_size;
2754
2755 while next_offset < end_offset {
2757 _next_ordinal_to_read += 1;
2758 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2759 next_offset += envelope_size;
2760 }
2761
2762 Ok(())
2763 }
2764 }
2765
2766 impl IfaceHistogramStats {
2767 #[inline(always)]
2768 fn max_ordinal_present(&self) -> u64 {
2769 if let Some(_) = self.snr_histograms {
2770 return 4;
2771 }
2772 if let Some(_) = self.rx_rate_index_histograms {
2773 return 3;
2774 }
2775 if let Some(_) = self.rssi_histograms {
2776 return 2;
2777 }
2778 if let Some(_) = self.noise_floor_histograms {
2779 return 1;
2780 }
2781 0
2782 }
2783 }
2784
2785 impl fidl::encoding::ValueTypeMarker for IfaceHistogramStats {
2786 type Borrowed<'a> = &'a Self;
2787 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2788 value
2789 }
2790 }
2791
2792 unsafe impl fidl::encoding::TypeMarker for IfaceHistogramStats {
2793 type Owned = Self;
2794
2795 #[inline(always)]
2796 fn inline_align(_context: fidl::encoding::Context) -> usize {
2797 8
2798 }
2799
2800 #[inline(always)]
2801 fn inline_size(_context: fidl::encoding::Context) -> usize {
2802 16
2803 }
2804 }
2805
2806 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<IfaceHistogramStats, D>
2807 for &IfaceHistogramStats
2808 {
2809 unsafe fn encode(
2810 self,
2811 encoder: &mut fidl::encoding::Encoder<'_, D>,
2812 offset: usize,
2813 mut depth: fidl::encoding::Depth,
2814 ) -> fidl::Result<()> {
2815 encoder.debug_check_bounds::<IfaceHistogramStats>(offset);
2816 let max_ordinal: u64 = self.max_ordinal_present();
2818 encoder.write_num(max_ordinal, offset);
2819 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2820 if max_ordinal == 0 {
2822 return Ok(());
2823 }
2824 depth.increment()?;
2825 let envelope_size = 8;
2826 let bytes_len = max_ordinal as usize * envelope_size;
2827 #[allow(unused_variables)]
2828 let offset = encoder.out_of_line_offset(bytes_len);
2829 let mut _prev_end_offset: usize = 0;
2830 if 1 > max_ordinal {
2831 return Ok(());
2832 }
2833
2834 let cur_offset: usize = (1 - 1) * envelope_size;
2837
2838 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2840
2841 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<NoiseFloorHistogram, 8>, D>(
2846 self.noise_floor_histograms.as_ref().map(<fidl::encoding::Vector<NoiseFloorHistogram, 8> as fidl::encoding::ValueTypeMarker>::borrow),
2847 encoder, offset + cur_offset, depth
2848 )?;
2849
2850 _prev_end_offset = cur_offset + envelope_size;
2851 if 2 > max_ordinal {
2852 return Ok(());
2853 }
2854
2855 let cur_offset: usize = (2 - 1) * envelope_size;
2858
2859 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2861
2862 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<RssiHistogram, 8>, D>(
2867 self.rssi_histograms.as_ref().map(<fidl::encoding::Vector<RssiHistogram, 8> as fidl::encoding::ValueTypeMarker>::borrow),
2868 encoder, offset + cur_offset, depth
2869 )?;
2870
2871 _prev_end_offset = cur_offset + envelope_size;
2872 if 3 > max_ordinal {
2873 return Ok(());
2874 }
2875
2876 let cur_offset: usize = (3 - 1) * envelope_size;
2879
2880 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2882
2883 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<RxRateIndexHistogram, 8>, D>(
2888 self.rx_rate_index_histograms.as_ref().map(<fidl::encoding::Vector<RxRateIndexHistogram, 8> as fidl::encoding::ValueTypeMarker>::borrow),
2889 encoder, offset + cur_offset, depth
2890 )?;
2891
2892 _prev_end_offset = cur_offset + envelope_size;
2893 if 4 > max_ordinal {
2894 return Ok(());
2895 }
2896
2897 let cur_offset: usize = (4 - 1) * envelope_size;
2900
2901 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2903
2904 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<SnrHistogram, 8>, D>(
2909 self.snr_histograms.as_ref().map(<fidl::encoding::Vector<SnrHistogram, 8> as fidl::encoding::ValueTypeMarker>::borrow),
2910 encoder, offset + cur_offset, depth
2911 )?;
2912
2913 _prev_end_offset = cur_offset + envelope_size;
2914
2915 Ok(())
2916 }
2917 }
2918
2919 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for IfaceHistogramStats {
2920 #[inline(always)]
2921 fn new_empty() -> Self {
2922 Self::default()
2923 }
2924
2925 unsafe fn decode(
2926 &mut self,
2927 decoder: &mut fidl::encoding::Decoder<'_, D>,
2928 offset: usize,
2929 mut depth: fidl::encoding::Depth,
2930 ) -> fidl::Result<()> {
2931 decoder.debug_check_bounds::<Self>(offset);
2932 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2933 None => return Err(fidl::Error::NotNullable),
2934 Some(len) => len,
2935 };
2936 if len == 0 {
2938 return Ok(());
2939 };
2940 depth.increment()?;
2941 let envelope_size = 8;
2942 let bytes_len = len * envelope_size;
2943 let offset = decoder.out_of_line_offset(bytes_len)?;
2944 let mut _next_ordinal_to_read = 0;
2946 let mut next_offset = offset;
2947 let end_offset = offset + bytes_len;
2948 _next_ordinal_to_read += 1;
2949 if next_offset >= end_offset {
2950 return Ok(());
2951 }
2952
2953 while _next_ordinal_to_read < 1 {
2955 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2956 _next_ordinal_to_read += 1;
2957 next_offset += envelope_size;
2958 }
2959
2960 let next_out_of_line = decoder.next_out_of_line();
2961 let handles_before = decoder.remaining_handles();
2962 if let Some((inlined, num_bytes, num_handles)) =
2963 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2964 {
2965 let member_inline_size = <fidl::encoding::Vector<NoiseFloorHistogram, 8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2966 if inlined != (member_inline_size <= 4) {
2967 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2968 }
2969 let inner_offset;
2970 let mut inner_depth = depth.clone();
2971 if inlined {
2972 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2973 inner_offset = next_offset;
2974 } else {
2975 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2976 inner_depth.increment()?;
2977 }
2978 let val_ref = self.noise_floor_histograms.get_or_insert_with(
2979 || fidl::new_empty!(fidl::encoding::Vector<NoiseFloorHistogram, 8>, D),
2980 );
2981 fidl::decode!(fidl::encoding::Vector<NoiseFloorHistogram, 8>, D, val_ref, decoder, inner_offset, inner_depth)?;
2982 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2983 {
2984 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2985 }
2986 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2987 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2988 }
2989 }
2990
2991 next_offset += envelope_size;
2992 _next_ordinal_to_read += 1;
2993 if next_offset >= end_offset {
2994 return Ok(());
2995 }
2996
2997 while _next_ordinal_to_read < 2 {
2999 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3000 _next_ordinal_to_read += 1;
3001 next_offset += envelope_size;
3002 }
3003
3004 let next_out_of_line = decoder.next_out_of_line();
3005 let handles_before = decoder.remaining_handles();
3006 if let Some((inlined, num_bytes, num_handles)) =
3007 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3008 {
3009 let member_inline_size = <fidl::encoding::Vector<RssiHistogram, 8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3010 if inlined != (member_inline_size <= 4) {
3011 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3012 }
3013 let inner_offset;
3014 let mut inner_depth = depth.clone();
3015 if inlined {
3016 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3017 inner_offset = next_offset;
3018 } else {
3019 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3020 inner_depth.increment()?;
3021 }
3022 let val_ref = self.rssi_histograms.get_or_insert_with(
3023 || fidl::new_empty!(fidl::encoding::Vector<RssiHistogram, 8>, D),
3024 );
3025 fidl::decode!(fidl::encoding::Vector<RssiHistogram, 8>, D, val_ref, decoder, inner_offset, inner_depth)?;
3026 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3027 {
3028 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3029 }
3030 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3031 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3032 }
3033 }
3034
3035 next_offset += envelope_size;
3036 _next_ordinal_to_read += 1;
3037 if next_offset >= end_offset {
3038 return Ok(());
3039 }
3040
3041 while _next_ordinal_to_read < 3 {
3043 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3044 _next_ordinal_to_read += 1;
3045 next_offset += envelope_size;
3046 }
3047
3048 let next_out_of_line = decoder.next_out_of_line();
3049 let handles_before = decoder.remaining_handles();
3050 if let Some((inlined, num_bytes, num_handles)) =
3051 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3052 {
3053 let member_inline_size = <fidl::encoding::Vector<RxRateIndexHistogram, 8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3054 if inlined != (member_inline_size <= 4) {
3055 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3056 }
3057 let inner_offset;
3058 let mut inner_depth = depth.clone();
3059 if inlined {
3060 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3061 inner_offset = next_offset;
3062 } else {
3063 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3064 inner_depth.increment()?;
3065 }
3066 let val_ref = self.rx_rate_index_histograms.get_or_insert_with(
3067 || fidl::new_empty!(fidl::encoding::Vector<RxRateIndexHistogram, 8>, D),
3068 );
3069 fidl::decode!(fidl::encoding::Vector<RxRateIndexHistogram, 8>, D, val_ref, decoder, inner_offset, inner_depth)?;
3070 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3071 {
3072 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3073 }
3074 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3075 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3076 }
3077 }
3078
3079 next_offset += envelope_size;
3080 _next_ordinal_to_read += 1;
3081 if next_offset >= end_offset {
3082 return Ok(());
3083 }
3084
3085 while _next_ordinal_to_read < 4 {
3087 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3088 _next_ordinal_to_read += 1;
3089 next_offset += envelope_size;
3090 }
3091
3092 let next_out_of_line = decoder.next_out_of_line();
3093 let handles_before = decoder.remaining_handles();
3094 if let Some((inlined, num_bytes, num_handles)) =
3095 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3096 {
3097 let member_inline_size = <fidl::encoding::Vector<SnrHistogram, 8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3098 if inlined != (member_inline_size <= 4) {
3099 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3100 }
3101 let inner_offset;
3102 let mut inner_depth = depth.clone();
3103 if inlined {
3104 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3105 inner_offset = next_offset;
3106 } else {
3107 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3108 inner_depth.increment()?;
3109 }
3110 let val_ref = self.snr_histograms.get_or_insert_with(
3111 || fidl::new_empty!(fidl::encoding::Vector<SnrHistogram, 8>, D),
3112 );
3113 fidl::decode!(fidl::encoding::Vector<SnrHistogram, 8>, D, val_ref, decoder, inner_offset, inner_depth)?;
3114 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3115 {
3116 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3117 }
3118 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3119 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3120 }
3121 }
3122
3123 next_offset += envelope_size;
3124
3125 while next_offset < end_offset {
3127 _next_ordinal_to_read += 1;
3128 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3129 next_offset += envelope_size;
3130 }
3131
3132 Ok(())
3133 }
3134 }
3135
3136 impl IfaceStats {
3137 #[inline(always)]
3138 fn max_ordinal_present(&self) -> u64 {
3139 if let Some(_) = self.driver_specific_gauges {
3140 return 3;
3141 }
3142 if let Some(_) = self.driver_specific_counters {
3143 return 2;
3144 }
3145 if let Some(_) = self.connection_stats {
3146 return 1;
3147 }
3148 0
3149 }
3150 }
3151
3152 impl fidl::encoding::ValueTypeMarker for IfaceStats {
3153 type Borrowed<'a> = &'a Self;
3154 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3155 value
3156 }
3157 }
3158
3159 unsafe impl fidl::encoding::TypeMarker for IfaceStats {
3160 type Owned = Self;
3161
3162 #[inline(always)]
3163 fn inline_align(_context: fidl::encoding::Context) -> usize {
3164 8
3165 }
3166
3167 #[inline(always)]
3168 fn inline_size(_context: fidl::encoding::Context) -> usize {
3169 16
3170 }
3171 }
3172
3173 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<IfaceStats, D>
3174 for &IfaceStats
3175 {
3176 unsafe fn encode(
3177 self,
3178 encoder: &mut fidl::encoding::Encoder<'_, D>,
3179 offset: usize,
3180 mut depth: fidl::encoding::Depth,
3181 ) -> fidl::Result<()> {
3182 encoder.debug_check_bounds::<IfaceStats>(offset);
3183 let max_ordinal: u64 = self.max_ordinal_present();
3185 encoder.write_num(max_ordinal, offset);
3186 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3187 if max_ordinal == 0 {
3189 return Ok(());
3190 }
3191 depth.increment()?;
3192 let envelope_size = 8;
3193 let bytes_len = max_ordinal as usize * envelope_size;
3194 #[allow(unused_variables)]
3195 let offset = encoder.out_of_line_offset(bytes_len);
3196 let mut _prev_end_offset: usize = 0;
3197 if 1 > max_ordinal {
3198 return Ok(());
3199 }
3200
3201 let cur_offset: usize = (1 - 1) * envelope_size;
3204
3205 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3207
3208 fidl::encoding::encode_in_envelope_optional::<ConnectionStats, D>(
3213 self.connection_stats
3214 .as_ref()
3215 .map(<ConnectionStats as fidl::encoding::ValueTypeMarker>::borrow),
3216 encoder,
3217 offset + cur_offset,
3218 depth,
3219 )?;
3220
3221 _prev_end_offset = cur_offset + envelope_size;
3222 if 2 > max_ordinal {
3223 return Ok(());
3224 }
3225
3226 let cur_offset: usize = (2 - 1) * envelope_size;
3229
3230 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3232
3233 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<UnnamedCounter, 127>, D>(
3238 self.driver_specific_counters.as_ref().map(<fidl::encoding::Vector<UnnamedCounter, 127> as fidl::encoding::ValueTypeMarker>::borrow),
3239 encoder, offset + cur_offset, depth
3240 )?;
3241
3242 _prev_end_offset = cur_offset + envelope_size;
3243 if 3 > max_ordinal {
3244 return Ok(());
3245 }
3246
3247 let cur_offset: usize = (3 - 1) * envelope_size;
3250
3251 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3253
3254 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<UnnamedGauge, 127>, D>(
3259 self.driver_specific_gauges.as_ref().map(<fidl::encoding::Vector<UnnamedGauge, 127> as fidl::encoding::ValueTypeMarker>::borrow),
3260 encoder, offset + cur_offset, depth
3261 )?;
3262
3263 _prev_end_offset = cur_offset + envelope_size;
3264
3265 Ok(())
3266 }
3267 }
3268
3269 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for IfaceStats {
3270 #[inline(always)]
3271 fn new_empty() -> Self {
3272 Self::default()
3273 }
3274
3275 unsafe fn decode(
3276 &mut self,
3277 decoder: &mut fidl::encoding::Decoder<'_, D>,
3278 offset: usize,
3279 mut depth: fidl::encoding::Depth,
3280 ) -> fidl::Result<()> {
3281 decoder.debug_check_bounds::<Self>(offset);
3282 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3283 None => return Err(fidl::Error::NotNullable),
3284 Some(len) => len,
3285 };
3286 if len == 0 {
3288 return Ok(());
3289 };
3290 depth.increment()?;
3291 let envelope_size = 8;
3292 let bytes_len = len * envelope_size;
3293 let offset = decoder.out_of_line_offset(bytes_len)?;
3294 let mut _next_ordinal_to_read = 0;
3296 let mut next_offset = offset;
3297 let end_offset = offset + bytes_len;
3298 _next_ordinal_to_read += 1;
3299 if next_offset >= end_offset {
3300 return Ok(());
3301 }
3302
3303 while _next_ordinal_to_read < 1 {
3305 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3306 _next_ordinal_to_read += 1;
3307 next_offset += envelope_size;
3308 }
3309
3310 let next_out_of_line = decoder.next_out_of_line();
3311 let handles_before = decoder.remaining_handles();
3312 if let Some((inlined, num_bytes, num_handles)) =
3313 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3314 {
3315 let member_inline_size =
3316 <ConnectionStats as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3317 if inlined != (member_inline_size <= 4) {
3318 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3319 }
3320 let inner_offset;
3321 let mut inner_depth = depth.clone();
3322 if inlined {
3323 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3324 inner_offset = next_offset;
3325 } else {
3326 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3327 inner_depth.increment()?;
3328 }
3329 let val_ref = self
3330 .connection_stats
3331 .get_or_insert_with(|| fidl::new_empty!(ConnectionStats, D));
3332 fidl::decode!(ConnectionStats, D, val_ref, decoder, inner_offset, inner_depth)?;
3333 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3334 {
3335 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3336 }
3337 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3338 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3339 }
3340 }
3341
3342 next_offset += envelope_size;
3343 _next_ordinal_to_read += 1;
3344 if next_offset >= end_offset {
3345 return Ok(());
3346 }
3347
3348 while _next_ordinal_to_read < 2 {
3350 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3351 _next_ordinal_to_read += 1;
3352 next_offset += envelope_size;
3353 }
3354
3355 let next_out_of_line = decoder.next_out_of_line();
3356 let handles_before = decoder.remaining_handles();
3357 if let Some((inlined, num_bytes, num_handles)) =
3358 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3359 {
3360 let member_inline_size = <fidl::encoding::Vector<UnnamedCounter, 127> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3361 if inlined != (member_inline_size <= 4) {
3362 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3363 }
3364 let inner_offset;
3365 let mut inner_depth = depth.clone();
3366 if inlined {
3367 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3368 inner_offset = next_offset;
3369 } else {
3370 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3371 inner_depth.increment()?;
3372 }
3373 let val_ref = self.driver_specific_counters.get_or_insert_with(
3374 || fidl::new_empty!(fidl::encoding::Vector<UnnamedCounter, 127>, D),
3375 );
3376 fidl::decode!(fidl::encoding::Vector<UnnamedCounter, 127>, D, val_ref, decoder, inner_offset, inner_depth)?;
3377 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3378 {
3379 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3380 }
3381 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3382 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3383 }
3384 }
3385
3386 next_offset += envelope_size;
3387 _next_ordinal_to_read += 1;
3388 if next_offset >= end_offset {
3389 return Ok(());
3390 }
3391
3392 while _next_ordinal_to_read < 3 {
3394 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3395 _next_ordinal_to_read += 1;
3396 next_offset += envelope_size;
3397 }
3398
3399 let next_out_of_line = decoder.next_out_of_line();
3400 let handles_before = decoder.remaining_handles();
3401 if let Some((inlined, num_bytes, num_handles)) =
3402 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3403 {
3404 let member_inline_size = <fidl::encoding::Vector<UnnamedGauge, 127> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3405 if inlined != (member_inline_size <= 4) {
3406 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3407 }
3408 let inner_offset;
3409 let mut inner_depth = depth.clone();
3410 if inlined {
3411 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3412 inner_offset = next_offset;
3413 } else {
3414 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3415 inner_depth.increment()?;
3416 }
3417 let val_ref = self.driver_specific_gauges.get_or_insert_with(
3418 || fidl::new_empty!(fidl::encoding::Vector<UnnamedGauge, 127>, D),
3419 );
3420 fidl::decode!(fidl::encoding::Vector<UnnamedGauge, 127>, D, val_ref, decoder, inner_offset, inner_depth)?;
3421 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3422 {
3423 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3424 }
3425 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3426 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3427 }
3428 }
3429
3430 next_offset += envelope_size;
3431
3432 while next_offset < end_offset {
3434 _next_ordinal_to_read += 1;
3435 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3436 next_offset += envelope_size;
3437 }
3438
3439 Ok(())
3440 }
3441 }
3442
3443 impl InspectCounterConfig {
3444 #[inline(always)]
3445 fn max_ordinal_present(&self) -> u64 {
3446 if let Some(_) = self.counter_name {
3447 return 2;
3448 }
3449 if let Some(_) = self.counter_id {
3450 return 1;
3451 }
3452 0
3453 }
3454 }
3455
3456 impl fidl::encoding::ValueTypeMarker for InspectCounterConfig {
3457 type Borrowed<'a> = &'a Self;
3458 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3459 value
3460 }
3461 }
3462
3463 unsafe impl fidl::encoding::TypeMarker for InspectCounterConfig {
3464 type Owned = Self;
3465
3466 #[inline(always)]
3467 fn inline_align(_context: fidl::encoding::Context) -> usize {
3468 8
3469 }
3470
3471 #[inline(always)]
3472 fn inline_size(_context: fidl::encoding::Context) -> usize {
3473 16
3474 }
3475 }
3476
3477 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<InspectCounterConfig, D>
3478 for &InspectCounterConfig
3479 {
3480 unsafe fn encode(
3481 self,
3482 encoder: &mut fidl::encoding::Encoder<'_, D>,
3483 offset: usize,
3484 mut depth: fidl::encoding::Depth,
3485 ) -> fidl::Result<()> {
3486 encoder.debug_check_bounds::<InspectCounterConfig>(offset);
3487 let max_ordinal: u64 = self.max_ordinal_present();
3489 encoder.write_num(max_ordinal, offset);
3490 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3491 if max_ordinal == 0 {
3493 return Ok(());
3494 }
3495 depth.increment()?;
3496 let envelope_size = 8;
3497 let bytes_len = max_ordinal as usize * envelope_size;
3498 #[allow(unused_variables)]
3499 let offset = encoder.out_of_line_offset(bytes_len);
3500 let mut _prev_end_offset: usize = 0;
3501 if 1 > max_ordinal {
3502 return Ok(());
3503 }
3504
3505 let cur_offset: usize = (1 - 1) * envelope_size;
3508
3509 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3511
3512 fidl::encoding::encode_in_envelope_optional::<u16, D>(
3517 self.counter_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
3518 encoder,
3519 offset + cur_offset,
3520 depth,
3521 )?;
3522
3523 _prev_end_offset = cur_offset + envelope_size;
3524 if 2 > max_ordinal {
3525 return Ok(());
3526 }
3527
3528 let cur_offset: usize = (2 - 1) * envelope_size;
3531
3532 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3534
3535 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<127>, D>(
3540 self.counter_name.as_ref().map(
3541 <fidl::encoding::BoundedString<127> as fidl::encoding::ValueTypeMarker>::borrow,
3542 ),
3543 encoder,
3544 offset + cur_offset,
3545 depth,
3546 )?;
3547
3548 _prev_end_offset = cur_offset + envelope_size;
3549
3550 Ok(())
3551 }
3552 }
3553
3554 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for InspectCounterConfig {
3555 #[inline(always)]
3556 fn new_empty() -> Self {
3557 Self::default()
3558 }
3559
3560 unsafe fn decode(
3561 &mut self,
3562 decoder: &mut fidl::encoding::Decoder<'_, D>,
3563 offset: usize,
3564 mut depth: fidl::encoding::Depth,
3565 ) -> fidl::Result<()> {
3566 decoder.debug_check_bounds::<Self>(offset);
3567 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3568 None => return Err(fidl::Error::NotNullable),
3569 Some(len) => len,
3570 };
3571 if len == 0 {
3573 return Ok(());
3574 };
3575 depth.increment()?;
3576 let envelope_size = 8;
3577 let bytes_len = len * envelope_size;
3578 let offset = decoder.out_of_line_offset(bytes_len)?;
3579 let mut _next_ordinal_to_read = 0;
3581 let mut next_offset = offset;
3582 let end_offset = offset + bytes_len;
3583 _next_ordinal_to_read += 1;
3584 if next_offset >= end_offset {
3585 return Ok(());
3586 }
3587
3588 while _next_ordinal_to_read < 1 {
3590 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3591 _next_ordinal_to_read += 1;
3592 next_offset += envelope_size;
3593 }
3594
3595 let next_out_of_line = decoder.next_out_of_line();
3596 let handles_before = decoder.remaining_handles();
3597 if let Some((inlined, num_bytes, num_handles)) =
3598 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3599 {
3600 let member_inline_size =
3601 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3602 if inlined != (member_inline_size <= 4) {
3603 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3604 }
3605 let inner_offset;
3606 let mut inner_depth = depth.clone();
3607 if inlined {
3608 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3609 inner_offset = next_offset;
3610 } else {
3611 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3612 inner_depth.increment()?;
3613 }
3614 let val_ref = self.counter_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
3615 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
3616 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3617 {
3618 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3619 }
3620 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3621 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3622 }
3623 }
3624
3625 next_offset += envelope_size;
3626 _next_ordinal_to_read += 1;
3627 if next_offset >= end_offset {
3628 return Ok(());
3629 }
3630
3631 while _next_ordinal_to_read < 2 {
3633 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3634 _next_ordinal_to_read += 1;
3635 next_offset += envelope_size;
3636 }
3637
3638 let next_out_of_line = decoder.next_out_of_line();
3639 let handles_before = decoder.remaining_handles();
3640 if let Some((inlined, num_bytes, num_handles)) =
3641 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3642 {
3643 let member_inline_size =
3644 <fidl::encoding::BoundedString<127> as fidl::encoding::TypeMarker>::inline_size(
3645 decoder.context,
3646 );
3647 if inlined != (member_inline_size <= 4) {
3648 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3649 }
3650 let inner_offset;
3651 let mut inner_depth = depth.clone();
3652 if inlined {
3653 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3654 inner_offset = next_offset;
3655 } else {
3656 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3657 inner_depth.increment()?;
3658 }
3659 let val_ref = self
3660 .counter_name
3661 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<127>, D));
3662 fidl::decode!(
3663 fidl::encoding::BoundedString<127>,
3664 D,
3665 val_ref,
3666 decoder,
3667 inner_offset,
3668 inner_depth
3669 )?;
3670 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3671 {
3672 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3673 }
3674 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3675 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3676 }
3677 }
3678
3679 next_offset += envelope_size;
3680
3681 while next_offset < end_offset {
3683 _next_ordinal_to_read += 1;
3684 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3685 next_offset += envelope_size;
3686 }
3687
3688 Ok(())
3689 }
3690 }
3691
3692 impl InspectGaugeConfig {
3693 #[inline(always)]
3694 fn max_ordinal_present(&self) -> u64 {
3695 if let Some(_) = self.statistics {
3696 return 3;
3697 }
3698 if let Some(_) = self.gauge_name {
3699 return 2;
3700 }
3701 if let Some(_) = self.gauge_id {
3702 return 1;
3703 }
3704 0
3705 }
3706 }
3707
3708 impl fidl::encoding::ValueTypeMarker for InspectGaugeConfig {
3709 type Borrowed<'a> = &'a Self;
3710 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3711 value
3712 }
3713 }
3714
3715 unsafe impl fidl::encoding::TypeMarker for InspectGaugeConfig {
3716 type Owned = Self;
3717
3718 #[inline(always)]
3719 fn inline_align(_context: fidl::encoding::Context) -> usize {
3720 8
3721 }
3722
3723 #[inline(always)]
3724 fn inline_size(_context: fidl::encoding::Context) -> usize {
3725 16
3726 }
3727 }
3728
3729 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<InspectGaugeConfig, D>
3730 for &InspectGaugeConfig
3731 {
3732 unsafe fn encode(
3733 self,
3734 encoder: &mut fidl::encoding::Encoder<'_, D>,
3735 offset: usize,
3736 mut depth: fidl::encoding::Depth,
3737 ) -> fidl::Result<()> {
3738 encoder.debug_check_bounds::<InspectGaugeConfig>(offset);
3739 let max_ordinal: u64 = self.max_ordinal_present();
3741 encoder.write_num(max_ordinal, offset);
3742 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3743 if max_ordinal == 0 {
3745 return Ok(());
3746 }
3747 depth.increment()?;
3748 let envelope_size = 8;
3749 let bytes_len = max_ordinal as usize * envelope_size;
3750 #[allow(unused_variables)]
3751 let offset = encoder.out_of_line_offset(bytes_len);
3752 let mut _prev_end_offset: usize = 0;
3753 if 1 > max_ordinal {
3754 return Ok(());
3755 }
3756
3757 let cur_offset: usize = (1 - 1) * envelope_size;
3760
3761 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3763
3764 fidl::encoding::encode_in_envelope_optional::<u16, D>(
3769 self.gauge_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
3770 encoder,
3771 offset + cur_offset,
3772 depth,
3773 )?;
3774
3775 _prev_end_offset = cur_offset + envelope_size;
3776 if 2 > max_ordinal {
3777 return Ok(());
3778 }
3779
3780 let cur_offset: usize = (2 - 1) * envelope_size;
3783
3784 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3786
3787 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<127>, D>(
3792 self.gauge_name.as_ref().map(
3793 <fidl::encoding::BoundedString<127> as fidl::encoding::ValueTypeMarker>::borrow,
3794 ),
3795 encoder,
3796 offset + cur_offset,
3797 depth,
3798 )?;
3799
3800 _prev_end_offset = cur_offset + envelope_size;
3801 if 3 > max_ordinal {
3802 return Ok(());
3803 }
3804
3805 let cur_offset: usize = (3 - 1) * envelope_size;
3808
3809 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3811
3812 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<GaugeStatistic, 5>, D>(
3817 self.statistics.as_ref().map(<fidl::encoding::Vector<GaugeStatistic, 5> as fidl::encoding::ValueTypeMarker>::borrow),
3818 encoder, offset + cur_offset, depth
3819 )?;
3820
3821 _prev_end_offset = cur_offset + envelope_size;
3822
3823 Ok(())
3824 }
3825 }
3826
3827 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for InspectGaugeConfig {
3828 #[inline(always)]
3829 fn new_empty() -> Self {
3830 Self::default()
3831 }
3832
3833 unsafe fn decode(
3834 &mut self,
3835 decoder: &mut fidl::encoding::Decoder<'_, D>,
3836 offset: usize,
3837 mut depth: fidl::encoding::Depth,
3838 ) -> fidl::Result<()> {
3839 decoder.debug_check_bounds::<Self>(offset);
3840 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3841 None => return Err(fidl::Error::NotNullable),
3842 Some(len) => len,
3843 };
3844 if len == 0 {
3846 return Ok(());
3847 };
3848 depth.increment()?;
3849 let envelope_size = 8;
3850 let bytes_len = len * envelope_size;
3851 let offset = decoder.out_of_line_offset(bytes_len)?;
3852 let mut _next_ordinal_to_read = 0;
3854 let mut next_offset = offset;
3855 let end_offset = offset + bytes_len;
3856 _next_ordinal_to_read += 1;
3857 if next_offset >= end_offset {
3858 return Ok(());
3859 }
3860
3861 while _next_ordinal_to_read < 1 {
3863 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3864 _next_ordinal_to_read += 1;
3865 next_offset += envelope_size;
3866 }
3867
3868 let next_out_of_line = decoder.next_out_of_line();
3869 let handles_before = decoder.remaining_handles();
3870 if let Some((inlined, num_bytes, num_handles)) =
3871 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3872 {
3873 let member_inline_size =
3874 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3875 if inlined != (member_inline_size <= 4) {
3876 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3877 }
3878 let inner_offset;
3879 let mut inner_depth = depth.clone();
3880 if inlined {
3881 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3882 inner_offset = next_offset;
3883 } else {
3884 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3885 inner_depth.increment()?;
3886 }
3887 let val_ref = self.gauge_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
3888 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
3889 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3890 {
3891 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3892 }
3893 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3894 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3895 }
3896 }
3897
3898 next_offset += envelope_size;
3899 _next_ordinal_to_read += 1;
3900 if next_offset >= end_offset {
3901 return Ok(());
3902 }
3903
3904 while _next_ordinal_to_read < 2 {
3906 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3907 _next_ordinal_to_read += 1;
3908 next_offset += envelope_size;
3909 }
3910
3911 let next_out_of_line = decoder.next_out_of_line();
3912 let handles_before = decoder.remaining_handles();
3913 if let Some((inlined, num_bytes, num_handles)) =
3914 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3915 {
3916 let member_inline_size =
3917 <fidl::encoding::BoundedString<127> as fidl::encoding::TypeMarker>::inline_size(
3918 decoder.context,
3919 );
3920 if inlined != (member_inline_size <= 4) {
3921 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3922 }
3923 let inner_offset;
3924 let mut inner_depth = depth.clone();
3925 if inlined {
3926 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3927 inner_offset = next_offset;
3928 } else {
3929 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3930 inner_depth.increment()?;
3931 }
3932 let val_ref = self
3933 .gauge_name
3934 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<127>, D));
3935 fidl::decode!(
3936 fidl::encoding::BoundedString<127>,
3937 D,
3938 val_ref,
3939 decoder,
3940 inner_offset,
3941 inner_depth
3942 )?;
3943 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3944 {
3945 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3946 }
3947 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3948 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3949 }
3950 }
3951
3952 next_offset += envelope_size;
3953 _next_ordinal_to_read += 1;
3954 if next_offset >= end_offset {
3955 return Ok(());
3956 }
3957
3958 while _next_ordinal_to_read < 3 {
3960 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3961 _next_ordinal_to_read += 1;
3962 next_offset += envelope_size;
3963 }
3964
3965 let next_out_of_line = decoder.next_out_of_line();
3966 let handles_before = decoder.remaining_handles();
3967 if let Some((inlined, num_bytes, num_handles)) =
3968 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3969 {
3970 let member_inline_size = <fidl::encoding::Vector<GaugeStatistic, 5> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3971 if inlined != (member_inline_size <= 4) {
3972 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3973 }
3974 let inner_offset;
3975 let mut inner_depth = depth.clone();
3976 if inlined {
3977 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3978 inner_offset = next_offset;
3979 } else {
3980 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3981 inner_depth.increment()?;
3982 }
3983 let val_ref = self.statistics.get_or_insert_with(
3984 || fidl::new_empty!(fidl::encoding::Vector<GaugeStatistic, 5>, D),
3985 );
3986 fidl::decode!(fidl::encoding::Vector<GaugeStatistic, 5>, D, val_ref, decoder, inner_offset, inner_depth)?;
3987 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3988 {
3989 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3990 }
3991 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3992 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3993 }
3994 }
3995
3996 next_offset += envelope_size;
3997
3998 while next_offset < end_offset {
4000 _next_ordinal_to_read += 1;
4001 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4002 next_offset += envelope_size;
4003 }
4004
4005 Ok(())
4006 }
4007 }
4008
4009 impl PacketStats {
4010 #[inline(always)]
4011 fn max_ordinal_present(&self) -> u64 {
4012 if let Some(_) = self.tx_retries {
4013 return 4;
4014 }
4015 if let Some(_) = self.tx_drop {
4016 return 3;
4017 }
4018 if let Some(_) = self.tx {
4019 return 2;
4020 }
4021 if let Some(_) = self.rx {
4022 return 1;
4023 }
4024 0
4025 }
4026 }
4027
4028 impl fidl::encoding::ValueTypeMarker for PacketStats {
4029 type Borrowed<'a> = &'a Self;
4030 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4031 value
4032 }
4033 }
4034
4035 unsafe impl fidl::encoding::TypeMarker for PacketStats {
4036 type Owned = Self;
4037
4038 #[inline(always)]
4039 fn inline_align(_context: fidl::encoding::Context) -> usize {
4040 8
4041 }
4042
4043 #[inline(always)]
4044 fn inline_size(_context: fidl::encoding::Context) -> usize {
4045 16
4046 }
4047 }
4048
4049 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PacketStats, D>
4050 for &PacketStats
4051 {
4052 unsafe fn encode(
4053 self,
4054 encoder: &mut fidl::encoding::Encoder<'_, D>,
4055 offset: usize,
4056 mut depth: fidl::encoding::Depth,
4057 ) -> fidl::Result<()> {
4058 encoder.debug_check_bounds::<PacketStats>(offset);
4059 let max_ordinal: u64 = self.max_ordinal_present();
4061 encoder.write_num(max_ordinal, offset);
4062 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4063 if max_ordinal == 0 {
4065 return Ok(());
4066 }
4067 depth.increment()?;
4068 let envelope_size = 8;
4069 let bytes_len = max_ordinal as usize * envelope_size;
4070 #[allow(unused_variables)]
4071 let offset = encoder.out_of_line_offset(bytes_len);
4072 let mut _prev_end_offset: usize = 0;
4073 if 1 > max_ordinal {
4074 return Ok(());
4075 }
4076
4077 let cur_offset: usize = (1 - 1) * envelope_size;
4080
4081 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4083
4084 fidl::encoding::encode_in_envelope_optional::<u64, D>(
4089 self.rx.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4090 encoder,
4091 offset + cur_offset,
4092 depth,
4093 )?;
4094
4095 _prev_end_offset = cur_offset + envelope_size;
4096 if 2 > max_ordinal {
4097 return Ok(());
4098 }
4099
4100 let cur_offset: usize = (2 - 1) * envelope_size;
4103
4104 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4106
4107 fidl::encoding::encode_in_envelope_optional::<u64, D>(
4112 self.tx.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4113 encoder,
4114 offset + cur_offset,
4115 depth,
4116 )?;
4117
4118 _prev_end_offset = cur_offset + envelope_size;
4119 if 3 > max_ordinal {
4120 return Ok(());
4121 }
4122
4123 let cur_offset: usize = (3 - 1) * envelope_size;
4126
4127 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4129
4130 fidl::encoding::encode_in_envelope_optional::<u64, D>(
4135 self.tx_drop.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4136 encoder,
4137 offset + cur_offset,
4138 depth,
4139 )?;
4140
4141 _prev_end_offset = cur_offset + envelope_size;
4142 if 4 > max_ordinal {
4143 return Ok(());
4144 }
4145
4146 let cur_offset: usize = (4 - 1) * envelope_size;
4149
4150 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4152
4153 fidl::encoding::encode_in_envelope_optional::<u64, D>(
4158 self.tx_retries.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4159 encoder,
4160 offset + cur_offset,
4161 depth,
4162 )?;
4163
4164 _prev_end_offset = cur_offset + envelope_size;
4165
4166 Ok(())
4167 }
4168 }
4169
4170 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PacketStats {
4171 #[inline(always)]
4172 fn new_empty() -> Self {
4173 Self::default()
4174 }
4175
4176 unsafe fn decode(
4177 &mut self,
4178 decoder: &mut fidl::encoding::Decoder<'_, D>,
4179 offset: usize,
4180 mut depth: fidl::encoding::Depth,
4181 ) -> fidl::Result<()> {
4182 decoder.debug_check_bounds::<Self>(offset);
4183 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4184 None => return Err(fidl::Error::NotNullable),
4185 Some(len) => len,
4186 };
4187 if len == 0 {
4189 return Ok(());
4190 };
4191 depth.increment()?;
4192 let envelope_size = 8;
4193 let bytes_len = len * envelope_size;
4194 let offset = decoder.out_of_line_offset(bytes_len)?;
4195 let mut _next_ordinal_to_read = 0;
4197 let mut next_offset = offset;
4198 let end_offset = offset + bytes_len;
4199 _next_ordinal_to_read += 1;
4200 if next_offset >= end_offset {
4201 return Ok(());
4202 }
4203
4204 while _next_ordinal_to_read < 1 {
4206 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4207 _next_ordinal_to_read += 1;
4208 next_offset += envelope_size;
4209 }
4210
4211 let next_out_of_line = decoder.next_out_of_line();
4212 let handles_before = decoder.remaining_handles();
4213 if let Some((inlined, num_bytes, num_handles)) =
4214 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4215 {
4216 let member_inline_size =
4217 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4218 if inlined != (member_inline_size <= 4) {
4219 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4220 }
4221 let inner_offset;
4222 let mut inner_depth = depth.clone();
4223 if inlined {
4224 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4225 inner_offset = next_offset;
4226 } else {
4227 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4228 inner_depth.increment()?;
4229 }
4230 let val_ref = self.rx.get_or_insert_with(|| fidl::new_empty!(u64, D));
4231 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4232 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4233 {
4234 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4235 }
4236 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4237 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4238 }
4239 }
4240
4241 next_offset += envelope_size;
4242 _next_ordinal_to_read += 1;
4243 if next_offset >= end_offset {
4244 return Ok(());
4245 }
4246
4247 while _next_ordinal_to_read < 2 {
4249 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4250 _next_ordinal_to_read += 1;
4251 next_offset += envelope_size;
4252 }
4253
4254 let next_out_of_line = decoder.next_out_of_line();
4255 let handles_before = decoder.remaining_handles();
4256 if let Some((inlined, num_bytes, num_handles)) =
4257 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4258 {
4259 let member_inline_size =
4260 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4261 if inlined != (member_inline_size <= 4) {
4262 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4263 }
4264 let inner_offset;
4265 let mut inner_depth = depth.clone();
4266 if inlined {
4267 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4268 inner_offset = next_offset;
4269 } else {
4270 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4271 inner_depth.increment()?;
4272 }
4273 let val_ref = self.tx.get_or_insert_with(|| fidl::new_empty!(u64, D));
4274 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4275 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4276 {
4277 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4278 }
4279 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4280 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4281 }
4282 }
4283
4284 next_offset += envelope_size;
4285 _next_ordinal_to_read += 1;
4286 if next_offset >= end_offset {
4287 return Ok(());
4288 }
4289
4290 while _next_ordinal_to_read < 3 {
4292 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4293 _next_ordinal_to_read += 1;
4294 next_offset += envelope_size;
4295 }
4296
4297 let next_out_of_line = decoder.next_out_of_line();
4298 let handles_before = decoder.remaining_handles();
4299 if let Some((inlined, num_bytes, num_handles)) =
4300 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4301 {
4302 let member_inline_size =
4303 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4304 if inlined != (member_inline_size <= 4) {
4305 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4306 }
4307 let inner_offset;
4308 let mut inner_depth = depth.clone();
4309 if inlined {
4310 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4311 inner_offset = next_offset;
4312 } else {
4313 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4314 inner_depth.increment()?;
4315 }
4316 let val_ref = self.tx_drop.get_or_insert_with(|| fidl::new_empty!(u64, D));
4317 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4318 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4319 {
4320 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4321 }
4322 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4323 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4324 }
4325 }
4326
4327 next_offset += envelope_size;
4328 _next_ordinal_to_read += 1;
4329 if next_offset >= end_offset {
4330 return Ok(());
4331 }
4332
4333 while _next_ordinal_to_read < 4 {
4335 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4336 _next_ordinal_to_read += 1;
4337 next_offset += envelope_size;
4338 }
4339
4340 let next_out_of_line = decoder.next_out_of_line();
4341 let handles_before = decoder.remaining_handles();
4342 if let Some((inlined, num_bytes, num_handles)) =
4343 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4344 {
4345 let member_inline_size =
4346 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4347 if inlined != (member_inline_size <= 4) {
4348 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4349 }
4350 let inner_offset;
4351 let mut inner_depth = depth.clone();
4352 if inlined {
4353 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4354 inner_offset = next_offset;
4355 } else {
4356 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4357 inner_depth.increment()?;
4358 }
4359 let val_ref = self.tx_retries.get_or_insert_with(|| fidl::new_empty!(u64, D));
4360 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4361 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4362 {
4363 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4364 }
4365 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4366 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4367 }
4368 }
4369
4370 next_offset += envelope_size;
4371
4372 while next_offset < end_offset {
4374 _next_ordinal_to_read += 1;
4375 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4376 next_offset += envelope_size;
4377 }
4378
4379 Ok(())
4380 }
4381 }
4382
4383 impl SignalReport {
4384 #[inline(always)]
4385 fn max_ordinal_present(&self) -> u64 {
4386 if let Some(_) = self.connection_signal_report {
4387 return 1;
4388 }
4389 0
4390 }
4391 }
4392
4393 impl fidl::encoding::ValueTypeMarker for SignalReport {
4394 type Borrowed<'a> = &'a Self;
4395 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4396 value
4397 }
4398 }
4399
4400 unsafe impl fidl::encoding::TypeMarker for SignalReport {
4401 type Owned = Self;
4402
4403 #[inline(always)]
4404 fn inline_align(_context: fidl::encoding::Context) -> usize {
4405 8
4406 }
4407
4408 #[inline(always)]
4409 fn inline_size(_context: fidl::encoding::Context) -> usize {
4410 16
4411 }
4412 }
4413
4414 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SignalReport, D>
4415 for &SignalReport
4416 {
4417 unsafe fn encode(
4418 self,
4419 encoder: &mut fidl::encoding::Encoder<'_, D>,
4420 offset: usize,
4421 mut depth: fidl::encoding::Depth,
4422 ) -> fidl::Result<()> {
4423 encoder.debug_check_bounds::<SignalReport>(offset);
4424 let max_ordinal: u64 = self.max_ordinal_present();
4426 encoder.write_num(max_ordinal, offset);
4427 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4428 if max_ordinal == 0 {
4430 return Ok(());
4431 }
4432 depth.increment()?;
4433 let envelope_size = 8;
4434 let bytes_len = max_ordinal as usize * envelope_size;
4435 #[allow(unused_variables)]
4436 let offset = encoder.out_of_line_offset(bytes_len);
4437 let mut _prev_end_offset: usize = 0;
4438 if 1 > max_ordinal {
4439 return Ok(());
4440 }
4441
4442 let cur_offset: usize = (1 - 1) * envelope_size;
4445
4446 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4448
4449 fidl::encoding::encode_in_envelope_optional::<ConnectionSignalReport, D>(
4454 self.connection_signal_report
4455 .as_ref()
4456 .map(<ConnectionSignalReport as fidl::encoding::ValueTypeMarker>::borrow),
4457 encoder,
4458 offset + cur_offset,
4459 depth,
4460 )?;
4461
4462 _prev_end_offset = cur_offset + envelope_size;
4463
4464 Ok(())
4465 }
4466 }
4467
4468 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SignalReport {
4469 #[inline(always)]
4470 fn new_empty() -> Self {
4471 Self::default()
4472 }
4473
4474 unsafe fn decode(
4475 &mut self,
4476 decoder: &mut fidl::encoding::Decoder<'_, D>,
4477 offset: usize,
4478 mut depth: fidl::encoding::Depth,
4479 ) -> fidl::Result<()> {
4480 decoder.debug_check_bounds::<Self>(offset);
4481 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4482 None => return Err(fidl::Error::NotNullable),
4483 Some(len) => len,
4484 };
4485 if len == 0 {
4487 return Ok(());
4488 };
4489 depth.increment()?;
4490 let envelope_size = 8;
4491 let bytes_len = len * envelope_size;
4492 let offset = decoder.out_of_line_offset(bytes_len)?;
4493 let mut _next_ordinal_to_read = 0;
4495 let mut next_offset = offset;
4496 let end_offset = offset + bytes_len;
4497 _next_ordinal_to_read += 1;
4498 if next_offset >= end_offset {
4499 return Ok(());
4500 }
4501
4502 while _next_ordinal_to_read < 1 {
4504 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4505 _next_ordinal_to_read += 1;
4506 next_offset += envelope_size;
4507 }
4508
4509 let next_out_of_line = decoder.next_out_of_line();
4510 let handles_before = decoder.remaining_handles();
4511 if let Some((inlined, num_bytes, num_handles)) =
4512 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4513 {
4514 let member_inline_size =
4515 <ConnectionSignalReport as fidl::encoding::TypeMarker>::inline_size(
4516 decoder.context,
4517 );
4518 if inlined != (member_inline_size <= 4) {
4519 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4520 }
4521 let inner_offset;
4522 let mut inner_depth = depth.clone();
4523 if inlined {
4524 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4525 inner_offset = next_offset;
4526 } else {
4527 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4528 inner_depth.increment()?;
4529 }
4530 let val_ref = self
4531 .connection_signal_report
4532 .get_or_insert_with(|| fidl::new_empty!(ConnectionSignalReport, D));
4533 fidl::decode!(
4534 ConnectionSignalReport,
4535 D,
4536 val_ref,
4537 decoder,
4538 inner_offset,
4539 inner_depth
4540 )?;
4541 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4542 {
4543 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4544 }
4545 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4546 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4547 }
4548 }
4549
4550 next_offset += envelope_size;
4551
4552 while next_offset < end_offset {
4554 _next_ordinal_to_read += 1;
4555 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4556 next_offset += envelope_size;
4557 }
4558
4559 Ok(())
4560 }
4561 }
4562
4563 impl TelemetrySupport {
4564 #[inline(always)]
4565 fn max_ordinal_present(&self) -> u64 {
4566 if let Some(_) = self.inspect_gauge_configs {
4567 return 2;
4568 }
4569 if let Some(_) = self.inspect_counter_configs {
4570 return 1;
4571 }
4572 0
4573 }
4574 }
4575
4576 impl fidl::encoding::ValueTypeMarker for TelemetrySupport {
4577 type Borrowed<'a> = &'a Self;
4578 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4579 value
4580 }
4581 }
4582
4583 unsafe impl fidl::encoding::TypeMarker for TelemetrySupport {
4584 type Owned = Self;
4585
4586 #[inline(always)]
4587 fn inline_align(_context: fidl::encoding::Context) -> usize {
4588 8
4589 }
4590
4591 #[inline(always)]
4592 fn inline_size(_context: fidl::encoding::Context) -> usize {
4593 16
4594 }
4595 }
4596
4597 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TelemetrySupport, D>
4598 for &TelemetrySupport
4599 {
4600 unsafe fn encode(
4601 self,
4602 encoder: &mut fidl::encoding::Encoder<'_, D>,
4603 offset: usize,
4604 mut depth: fidl::encoding::Depth,
4605 ) -> fidl::Result<()> {
4606 encoder.debug_check_bounds::<TelemetrySupport>(offset);
4607 let max_ordinal: u64 = self.max_ordinal_present();
4609 encoder.write_num(max_ordinal, offset);
4610 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4611 if max_ordinal == 0 {
4613 return Ok(());
4614 }
4615 depth.increment()?;
4616 let envelope_size = 8;
4617 let bytes_len = max_ordinal as usize * envelope_size;
4618 #[allow(unused_variables)]
4619 let offset = encoder.out_of_line_offset(bytes_len);
4620 let mut _prev_end_offset: usize = 0;
4621 if 1 > max_ordinal {
4622 return Ok(());
4623 }
4624
4625 let cur_offset: usize = (1 - 1) * envelope_size;
4628
4629 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4631
4632 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<InspectCounterConfig, 127>, D>(
4637 self.inspect_counter_configs.as_ref().map(<fidl::encoding::Vector<InspectCounterConfig, 127> as fidl::encoding::ValueTypeMarker>::borrow),
4638 encoder, offset + cur_offset, depth
4639 )?;
4640
4641 _prev_end_offset = cur_offset + envelope_size;
4642 if 2 > max_ordinal {
4643 return Ok(());
4644 }
4645
4646 let cur_offset: usize = (2 - 1) * envelope_size;
4649
4650 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4652
4653 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<InspectGaugeConfig, 127>, D>(
4658 self.inspect_gauge_configs.as_ref().map(<fidl::encoding::Vector<InspectGaugeConfig, 127> as fidl::encoding::ValueTypeMarker>::borrow),
4659 encoder, offset + cur_offset, depth
4660 )?;
4661
4662 _prev_end_offset = cur_offset + envelope_size;
4663
4664 Ok(())
4665 }
4666 }
4667
4668 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TelemetrySupport {
4669 #[inline(always)]
4670 fn new_empty() -> Self {
4671 Self::default()
4672 }
4673
4674 unsafe fn decode(
4675 &mut self,
4676 decoder: &mut fidl::encoding::Decoder<'_, D>,
4677 offset: usize,
4678 mut depth: fidl::encoding::Depth,
4679 ) -> fidl::Result<()> {
4680 decoder.debug_check_bounds::<Self>(offset);
4681 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4682 None => return Err(fidl::Error::NotNullable),
4683 Some(len) => len,
4684 };
4685 if len == 0 {
4687 return Ok(());
4688 };
4689 depth.increment()?;
4690 let envelope_size = 8;
4691 let bytes_len = len * envelope_size;
4692 let offset = decoder.out_of_line_offset(bytes_len)?;
4693 let mut _next_ordinal_to_read = 0;
4695 let mut next_offset = offset;
4696 let end_offset = offset + bytes_len;
4697 _next_ordinal_to_read += 1;
4698 if next_offset >= end_offset {
4699 return Ok(());
4700 }
4701
4702 while _next_ordinal_to_read < 1 {
4704 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4705 _next_ordinal_to_read += 1;
4706 next_offset += envelope_size;
4707 }
4708
4709 let next_out_of_line = decoder.next_out_of_line();
4710 let handles_before = decoder.remaining_handles();
4711 if let Some((inlined, num_bytes, num_handles)) =
4712 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4713 {
4714 let member_inline_size = <fidl::encoding::Vector<InspectCounterConfig, 127> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4715 if inlined != (member_inline_size <= 4) {
4716 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4717 }
4718 let inner_offset;
4719 let mut inner_depth = depth.clone();
4720 if inlined {
4721 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4722 inner_offset = next_offset;
4723 } else {
4724 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4725 inner_depth.increment()?;
4726 }
4727 let val_ref = self.inspect_counter_configs.get_or_insert_with(
4728 || fidl::new_empty!(fidl::encoding::Vector<InspectCounterConfig, 127>, D),
4729 );
4730 fidl::decode!(fidl::encoding::Vector<InspectCounterConfig, 127>, D, val_ref, decoder, inner_offset, inner_depth)?;
4731 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4732 {
4733 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4734 }
4735 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4736 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4737 }
4738 }
4739
4740 next_offset += envelope_size;
4741 _next_ordinal_to_read += 1;
4742 if next_offset >= end_offset {
4743 return Ok(());
4744 }
4745
4746 while _next_ordinal_to_read < 2 {
4748 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4749 _next_ordinal_to_read += 1;
4750 next_offset += envelope_size;
4751 }
4752
4753 let next_out_of_line = decoder.next_out_of_line();
4754 let handles_before = decoder.remaining_handles();
4755 if let Some((inlined, num_bytes, num_handles)) =
4756 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4757 {
4758 let member_inline_size = <fidl::encoding::Vector<InspectGaugeConfig, 127> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4759 if inlined != (member_inline_size <= 4) {
4760 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4761 }
4762 let inner_offset;
4763 let mut inner_depth = depth.clone();
4764 if inlined {
4765 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4766 inner_offset = next_offset;
4767 } else {
4768 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4769 inner_depth.increment()?;
4770 }
4771 let val_ref = self.inspect_gauge_configs.get_or_insert_with(
4772 || fidl::new_empty!(fidl::encoding::Vector<InspectGaugeConfig, 127>, D),
4773 );
4774 fidl::decode!(fidl::encoding::Vector<InspectGaugeConfig, 127>, D, val_ref, decoder, inner_offset, inner_depth)?;
4775 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4776 {
4777 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4778 }
4779 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4780 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4781 }
4782 }
4783
4784 next_offset += envelope_size;
4785
4786 while next_offset < end_offset {
4788 _next_ordinal_to_read += 1;
4789 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4790 next_offset += envelope_size;
4791 }
4792
4793 Ok(())
4794 }
4795 }
4796
4797 impl WmePacketStats {
4798 #[inline(always)]
4799 fn max_ordinal_present(&self) -> u64 {
4800 if let Some(_) = self.vo {
4801 return 4;
4802 }
4803 if let Some(_) = self.vi {
4804 return 3;
4805 }
4806 if let Some(_) = self.bk {
4807 return 2;
4808 }
4809 if let Some(_) = self.be {
4810 return 1;
4811 }
4812 0
4813 }
4814 }
4815
4816 impl fidl::encoding::ValueTypeMarker for WmePacketStats {
4817 type Borrowed<'a> = &'a Self;
4818 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4819 value
4820 }
4821 }
4822
4823 unsafe impl fidl::encoding::TypeMarker for WmePacketStats {
4824 type Owned = Self;
4825
4826 #[inline(always)]
4827 fn inline_align(_context: fidl::encoding::Context) -> usize {
4828 8
4829 }
4830
4831 #[inline(always)]
4832 fn inline_size(_context: fidl::encoding::Context) -> usize {
4833 16
4834 }
4835 }
4836
4837 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WmePacketStats, D>
4838 for &WmePacketStats
4839 {
4840 unsafe fn encode(
4841 self,
4842 encoder: &mut fidl::encoding::Encoder<'_, D>,
4843 offset: usize,
4844 mut depth: fidl::encoding::Depth,
4845 ) -> fidl::Result<()> {
4846 encoder.debug_check_bounds::<WmePacketStats>(offset);
4847 let max_ordinal: u64 = self.max_ordinal_present();
4849 encoder.write_num(max_ordinal, offset);
4850 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4851 if max_ordinal == 0 {
4853 return Ok(());
4854 }
4855 depth.increment()?;
4856 let envelope_size = 8;
4857 let bytes_len = max_ordinal as usize * envelope_size;
4858 #[allow(unused_variables)]
4859 let offset = encoder.out_of_line_offset(bytes_len);
4860 let mut _prev_end_offset: usize = 0;
4861 if 1 > max_ordinal {
4862 return Ok(());
4863 }
4864
4865 let cur_offset: usize = (1 - 1) * envelope_size;
4868
4869 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4871
4872 fidl::encoding::encode_in_envelope_optional::<PacketStats, D>(
4877 self.be.as_ref().map(<PacketStats as fidl::encoding::ValueTypeMarker>::borrow),
4878 encoder,
4879 offset + cur_offset,
4880 depth,
4881 )?;
4882
4883 _prev_end_offset = cur_offset + envelope_size;
4884 if 2 > max_ordinal {
4885 return Ok(());
4886 }
4887
4888 let cur_offset: usize = (2 - 1) * envelope_size;
4891
4892 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4894
4895 fidl::encoding::encode_in_envelope_optional::<PacketStats, D>(
4900 self.bk.as_ref().map(<PacketStats as fidl::encoding::ValueTypeMarker>::borrow),
4901 encoder,
4902 offset + cur_offset,
4903 depth,
4904 )?;
4905
4906 _prev_end_offset = cur_offset + envelope_size;
4907 if 3 > max_ordinal {
4908 return Ok(());
4909 }
4910
4911 let cur_offset: usize = (3 - 1) * envelope_size;
4914
4915 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4917
4918 fidl::encoding::encode_in_envelope_optional::<PacketStats, D>(
4923 self.vi.as_ref().map(<PacketStats as fidl::encoding::ValueTypeMarker>::borrow),
4924 encoder,
4925 offset + cur_offset,
4926 depth,
4927 )?;
4928
4929 _prev_end_offset = cur_offset + envelope_size;
4930 if 4 > max_ordinal {
4931 return Ok(());
4932 }
4933
4934 let cur_offset: usize = (4 - 1) * envelope_size;
4937
4938 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4940
4941 fidl::encoding::encode_in_envelope_optional::<PacketStats, D>(
4946 self.vo.as_ref().map(<PacketStats as fidl::encoding::ValueTypeMarker>::borrow),
4947 encoder,
4948 offset + cur_offset,
4949 depth,
4950 )?;
4951
4952 _prev_end_offset = cur_offset + envelope_size;
4953
4954 Ok(())
4955 }
4956 }
4957
4958 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WmePacketStats {
4959 #[inline(always)]
4960 fn new_empty() -> Self {
4961 Self::default()
4962 }
4963
4964 unsafe fn decode(
4965 &mut self,
4966 decoder: &mut fidl::encoding::Decoder<'_, D>,
4967 offset: usize,
4968 mut depth: fidl::encoding::Depth,
4969 ) -> fidl::Result<()> {
4970 decoder.debug_check_bounds::<Self>(offset);
4971 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4972 None => return Err(fidl::Error::NotNullable),
4973 Some(len) => len,
4974 };
4975 if len == 0 {
4977 return Ok(());
4978 };
4979 depth.increment()?;
4980 let envelope_size = 8;
4981 let bytes_len = len * envelope_size;
4982 let offset = decoder.out_of_line_offset(bytes_len)?;
4983 let mut _next_ordinal_to_read = 0;
4985 let mut next_offset = offset;
4986 let end_offset = offset + bytes_len;
4987 _next_ordinal_to_read += 1;
4988 if next_offset >= end_offset {
4989 return Ok(());
4990 }
4991
4992 while _next_ordinal_to_read < 1 {
4994 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4995 _next_ordinal_to_read += 1;
4996 next_offset += envelope_size;
4997 }
4998
4999 let next_out_of_line = decoder.next_out_of_line();
5000 let handles_before = decoder.remaining_handles();
5001 if let Some((inlined, num_bytes, num_handles)) =
5002 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5003 {
5004 let member_inline_size =
5005 <PacketStats as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5006 if inlined != (member_inline_size <= 4) {
5007 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5008 }
5009 let inner_offset;
5010 let mut inner_depth = depth.clone();
5011 if inlined {
5012 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5013 inner_offset = next_offset;
5014 } else {
5015 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5016 inner_depth.increment()?;
5017 }
5018 let val_ref = self.be.get_or_insert_with(|| fidl::new_empty!(PacketStats, D));
5019 fidl::decode!(PacketStats, D, val_ref, decoder, inner_offset, inner_depth)?;
5020 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5021 {
5022 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5023 }
5024 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5025 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5026 }
5027 }
5028
5029 next_offset += envelope_size;
5030 _next_ordinal_to_read += 1;
5031 if next_offset >= end_offset {
5032 return Ok(());
5033 }
5034
5035 while _next_ordinal_to_read < 2 {
5037 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5038 _next_ordinal_to_read += 1;
5039 next_offset += envelope_size;
5040 }
5041
5042 let next_out_of_line = decoder.next_out_of_line();
5043 let handles_before = decoder.remaining_handles();
5044 if let Some((inlined, num_bytes, num_handles)) =
5045 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5046 {
5047 let member_inline_size =
5048 <PacketStats as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5049 if inlined != (member_inline_size <= 4) {
5050 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5051 }
5052 let inner_offset;
5053 let mut inner_depth = depth.clone();
5054 if inlined {
5055 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5056 inner_offset = next_offset;
5057 } else {
5058 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5059 inner_depth.increment()?;
5060 }
5061 let val_ref = self.bk.get_or_insert_with(|| fidl::new_empty!(PacketStats, D));
5062 fidl::decode!(PacketStats, D, val_ref, decoder, inner_offset, inner_depth)?;
5063 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5064 {
5065 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5066 }
5067 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5068 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5069 }
5070 }
5071
5072 next_offset += envelope_size;
5073 _next_ordinal_to_read += 1;
5074 if next_offset >= end_offset {
5075 return Ok(());
5076 }
5077
5078 while _next_ordinal_to_read < 3 {
5080 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5081 _next_ordinal_to_read += 1;
5082 next_offset += envelope_size;
5083 }
5084
5085 let next_out_of_line = decoder.next_out_of_line();
5086 let handles_before = decoder.remaining_handles();
5087 if let Some((inlined, num_bytes, num_handles)) =
5088 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5089 {
5090 let member_inline_size =
5091 <PacketStats as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5092 if inlined != (member_inline_size <= 4) {
5093 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5094 }
5095 let inner_offset;
5096 let mut inner_depth = depth.clone();
5097 if inlined {
5098 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5099 inner_offset = next_offset;
5100 } else {
5101 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5102 inner_depth.increment()?;
5103 }
5104 let val_ref = self.vi.get_or_insert_with(|| fidl::new_empty!(PacketStats, D));
5105 fidl::decode!(PacketStats, D, val_ref, decoder, inner_offset, inner_depth)?;
5106 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5107 {
5108 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5109 }
5110 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5111 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5112 }
5113 }
5114
5115 next_offset += envelope_size;
5116 _next_ordinal_to_read += 1;
5117 if next_offset >= end_offset {
5118 return Ok(());
5119 }
5120
5121 while _next_ordinal_to_read < 4 {
5123 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5124 _next_ordinal_to_read += 1;
5125 next_offset += envelope_size;
5126 }
5127
5128 let next_out_of_line = decoder.next_out_of_line();
5129 let handles_before = decoder.remaining_handles();
5130 if let Some((inlined, num_bytes, num_handles)) =
5131 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5132 {
5133 let member_inline_size =
5134 <PacketStats as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5135 if inlined != (member_inline_size <= 4) {
5136 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5137 }
5138 let inner_offset;
5139 let mut inner_depth = depth.clone();
5140 if inlined {
5141 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5142 inner_offset = next_offset;
5143 } else {
5144 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5145 inner_depth.increment()?;
5146 }
5147 let val_ref = self.vo.get_or_insert_with(|| fidl::new_empty!(PacketStats, D));
5148 fidl::decode!(PacketStats, D, val_ref, decoder, inner_offset, inner_depth)?;
5149 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5150 {
5151 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5152 }
5153 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5154 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5155 }
5156 }
5157
5158 next_offset += envelope_size;
5159
5160 while next_offset < end_offset {
5162 _next_ordinal_to_read += 1;
5163 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5164 next_offset += envelope_size;
5165 }
5166
5167 Ok(())
5168 }
5169 }
5170}