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