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