Skip to main content

fidl_fuchsia_wlan_fullmac_common/
fidl_fuchsia_wlan_fullmac_common.rs

1// WARNING: This file is machine generated by fidlgen.
2
3#![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 WLAN_MAX_KEYLIST_SIZE: u32 = 4;
12
13/// Max length for vendor IEs to be added to the association request. This is currently
14/// used for WPA.
15pub const WLAN_VIE_MAX_LEN: u32 = 514;
16
17#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
18pub enum EapolTxResult {
19    Success,
20    TransmissionFailure,
21    #[doc(hidden)]
22    __SourceBreaking {
23        unknown_ordinal: u8,
24    },
25}
26
27/// Pattern that matches an unknown `EapolTxResult` member.
28#[macro_export]
29macro_rules! EapolTxResultUnknown {
30    () => {
31        _
32    };
33}
34
35impl EapolTxResult {
36    #[inline]
37    pub fn from_primitive(prim: u8) -> Option<Self> {
38        match prim {
39            0 => Some(Self::Success),
40            1 => Some(Self::TransmissionFailure),
41            _ => None,
42        }
43    }
44
45    #[inline]
46    pub fn from_primitive_allow_unknown(prim: u8) -> Self {
47        match prim {
48            0 => Self::Success,
49            1 => Self::TransmissionFailure,
50            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
51        }
52    }
53
54    #[inline]
55    pub fn unknown() -> Self {
56        Self::__SourceBreaking { unknown_ordinal: 0xff }
57    }
58
59    #[inline]
60    pub const fn into_primitive(self) -> u8 {
61        match self {
62            Self::Success => 0,
63            Self::TransmissionFailure => 1,
64            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
65        }
66    }
67
68    #[inline]
69    pub fn is_unknown(&self) -> bool {
70        match self {
71            Self::__SourceBreaking { unknown_ordinal: _ } => true,
72            _ => false,
73        }
74    }
75}
76
77#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
78pub enum StartResult {
79    Success,
80    BssAlreadyStartedOrJoined,
81    ResetRequiredBeforeStart,
82    NotSupported,
83    #[doc(hidden)]
84    __SourceBreaking {
85        unknown_ordinal: u8,
86    },
87}
88
89/// Pattern that matches an unknown `StartResult` member.
90#[macro_export]
91macro_rules! StartResultUnknown {
92    () => {
93        _
94    };
95}
96
97impl StartResult {
98    #[inline]
99    pub fn from_primitive(prim: u8) -> Option<Self> {
100        match prim {
101            0 => Some(Self::Success),
102            1 => Some(Self::BssAlreadyStartedOrJoined),
103            2 => Some(Self::ResetRequiredBeforeStart),
104            3 => Some(Self::NotSupported),
105            _ => None,
106        }
107    }
108
109    #[inline]
110    pub fn from_primitive_allow_unknown(prim: u8) -> Self {
111        match prim {
112            0 => Self::Success,
113            1 => Self::BssAlreadyStartedOrJoined,
114            2 => Self::ResetRequiredBeforeStart,
115            3 => Self::NotSupported,
116            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
117        }
118    }
119
120    #[inline]
121    pub fn unknown() -> Self {
122        Self::__SourceBreaking { unknown_ordinal: 0xff }
123    }
124
125    #[inline]
126    pub const fn into_primitive(self) -> u8 {
127        match self {
128            Self::Success => 0,
129            Self::BssAlreadyStartedOrJoined => 1,
130            Self::ResetRequiredBeforeStart => 2,
131            Self::NotSupported => 3,
132            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
133        }
134    }
135
136    #[inline]
137    pub fn is_unknown(&self) -> bool {
138        match self {
139            Self::__SourceBreaking { unknown_ordinal: _ } => true,
140            _ => false,
141        }
142    }
143}
144
145#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
146pub enum StopResult {
147    Success,
148    BssAlreadyStopped,
149    InternalError,
150    #[doc(hidden)]
151    __SourceBreaking {
152        unknown_ordinal: u8,
153    },
154}
155
156/// Pattern that matches an unknown `StopResult` member.
157#[macro_export]
158macro_rules! StopResultUnknown {
159    () => {
160        _
161    };
162}
163
164impl StopResult {
165    #[inline]
166    pub fn from_primitive(prim: u8) -> Option<Self> {
167        match prim {
168            0 => Some(Self::Success),
169            1 => Some(Self::BssAlreadyStopped),
170            2 => Some(Self::InternalError),
171            _ => None,
172        }
173    }
174
175    #[inline]
176    pub fn from_primitive_allow_unknown(prim: u8) -> Self {
177        match prim {
178            0 => Self::Success,
179            1 => Self::BssAlreadyStopped,
180            2 => Self::InternalError,
181            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
182        }
183    }
184
185    #[inline]
186    pub fn unknown() -> Self {
187        Self::__SourceBreaking { unknown_ordinal: 0xff }
188    }
189
190    #[inline]
191    pub const fn into_primitive(self) -> u8 {
192        match self {
193            Self::Success => 0,
194            Self::BssAlreadyStopped => 1,
195            Self::InternalError => 2,
196            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
197        }
198    }
199
200    #[inline]
201    pub fn is_unknown(&self) -> bool {
202        match self {
203            Self::__SourceBreaking { unknown_ordinal: _ } => true,
204            _ => false,
205        }
206    }
207}
208
209#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
210pub enum WlanAssocResult {
211    Success,
212    RefusedReasonUnspecified,
213    RefusedNotAuthenticated,
214    RefusedCapabilitiesMismatch,
215    RefusedExternalReason,
216    RefusedApOutOfMemory,
217    RefusedBasicRatesMismatch,
218    RejectedEmergencyServicesNotSupported,
219    RefusedTemporarily,
220    #[doc(hidden)]
221    __SourceBreaking {
222        unknown_ordinal: u8,
223    },
224}
225
226/// Pattern that matches an unknown `WlanAssocResult` member.
227#[macro_export]
228macro_rules! WlanAssocResultUnknown {
229    () => {
230        _
231    };
232}
233
234impl WlanAssocResult {
235    #[inline]
236    pub fn from_primitive(prim: u8) -> Option<Self> {
237        match prim {
238            0 => Some(Self::Success),
239            1 => Some(Self::RefusedReasonUnspecified),
240            2 => Some(Self::RefusedNotAuthenticated),
241            3 => Some(Self::RefusedCapabilitiesMismatch),
242            4 => Some(Self::RefusedExternalReason),
243            5 => Some(Self::RefusedApOutOfMemory),
244            6 => Some(Self::RefusedBasicRatesMismatch),
245            7 => Some(Self::RejectedEmergencyServicesNotSupported),
246            8 => Some(Self::RefusedTemporarily),
247            _ => None,
248        }
249    }
250
251    #[inline]
252    pub fn from_primitive_allow_unknown(prim: u8) -> Self {
253        match prim {
254            0 => Self::Success,
255            1 => Self::RefusedReasonUnspecified,
256            2 => Self::RefusedNotAuthenticated,
257            3 => Self::RefusedCapabilitiesMismatch,
258            4 => Self::RefusedExternalReason,
259            5 => Self::RefusedApOutOfMemory,
260            6 => Self::RefusedBasicRatesMismatch,
261            7 => Self::RejectedEmergencyServicesNotSupported,
262            8 => Self::RefusedTemporarily,
263            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
264        }
265    }
266
267    #[inline]
268    pub fn unknown() -> Self {
269        Self::__SourceBreaking { unknown_ordinal: 0xff }
270    }
271
272    #[inline]
273    pub const fn into_primitive(self) -> u8 {
274        match self {
275            Self::Success => 0,
276            Self::RefusedReasonUnspecified => 1,
277            Self::RefusedNotAuthenticated => 2,
278            Self::RefusedCapabilitiesMismatch => 3,
279            Self::RefusedExternalReason => 4,
280            Self::RefusedApOutOfMemory => 5,
281            Self::RefusedBasicRatesMismatch => 6,
282            Self::RejectedEmergencyServicesNotSupported => 7,
283            Self::RefusedTemporarily => 8,
284            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
285        }
286    }
287
288    #[inline]
289    pub fn is_unknown(&self) -> bool {
290        match self {
291            Self::__SourceBreaking { unknown_ordinal: _ } => true,
292            _ => false,
293        }
294    }
295}
296
297#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
298pub enum WlanAuthResult {
299    Success,
300    Refused,
301    AntiCloggingTokenRequired,
302    FiniteCyclicGroupNotSupported,
303    Rejected,
304    FailureTimeout,
305    #[doc(hidden)]
306    __SourceBreaking {
307        unknown_ordinal: u8,
308    },
309}
310
311/// Pattern that matches an unknown `WlanAuthResult` member.
312#[macro_export]
313macro_rules! WlanAuthResultUnknown {
314    () => {
315        _
316    };
317}
318
319impl WlanAuthResult {
320    #[inline]
321    pub fn from_primitive(prim: u8) -> Option<Self> {
322        match prim {
323            0 => Some(Self::Success),
324            1 => Some(Self::Refused),
325            2 => Some(Self::AntiCloggingTokenRequired),
326            3 => Some(Self::FiniteCyclicGroupNotSupported),
327            4 => Some(Self::Rejected),
328            5 => Some(Self::FailureTimeout),
329            _ => None,
330        }
331    }
332
333    #[inline]
334    pub fn from_primitive_allow_unknown(prim: u8) -> Self {
335        match prim {
336            0 => Self::Success,
337            1 => Self::Refused,
338            2 => Self::AntiCloggingTokenRequired,
339            3 => Self::FiniteCyclicGroupNotSupported,
340            4 => Self::Rejected,
341            5 => Self::FailureTimeout,
342            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
343        }
344    }
345
346    #[inline]
347    pub fn unknown() -> Self {
348        Self::__SourceBreaking { unknown_ordinal: 0xff }
349    }
350
351    #[inline]
352    pub const fn into_primitive(self) -> u8 {
353        match self {
354            Self::Success => 0,
355            Self::Refused => 1,
356            Self::AntiCloggingTokenRequired => 2,
357            Self::FiniteCyclicGroupNotSupported => 3,
358            Self::Rejected => 4,
359            Self::FailureTimeout => 5,
360            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
361        }
362    }
363
364    #[inline]
365    pub fn is_unknown(&self) -> bool {
366        match self {
367            Self::__SourceBreaking { unknown_ordinal: _ } => true,
368            _ => false,
369        }
370    }
371}
372
373#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
374pub enum WlanAuthType {
375    OpenSystem,
376    SharedKey,
377    FastBssTransition,
378    Sae,
379    #[doc(hidden)]
380    __SourceBreaking {
381        unknown_ordinal: u8,
382    },
383}
384
385/// Pattern that matches an unknown `WlanAuthType` member.
386#[macro_export]
387macro_rules! WlanAuthTypeUnknown {
388    () => {
389        _
390    };
391}
392
393impl WlanAuthType {
394    #[inline]
395    pub fn from_primitive(prim: u8) -> Option<Self> {
396        match prim {
397            1 => Some(Self::OpenSystem),
398            2 => Some(Self::SharedKey),
399            3 => Some(Self::FastBssTransition),
400            4 => Some(Self::Sae),
401            _ => None,
402        }
403    }
404
405    #[inline]
406    pub fn from_primitive_allow_unknown(prim: u8) -> Self {
407        match prim {
408            1 => Self::OpenSystem,
409            2 => Self::SharedKey,
410            3 => Self::FastBssTransition,
411            4 => Self::Sae,
412            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
413        }
414    }
415
416    #[inline]
417    pub fn unknown() -> Self {
418        Self::__SourceBreaking { unknown_ordinal: 0xff }
419    }
420
421    #[inline]
422    pub const fn into_primitive(self) -> u8 {
423        match self {
424            Self::OpenSystem => 1,
425            Self::SharedKey => 2,
426            Self::FastBssTransition => 3,
427            Self::Sae => 4,
428            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
429        }
430    }
431
432    #[inline]
433    pub fn is_unknown(&self) -> bool {
434        match self {
435            Self::__SourceBreaking { unknown_ordinal: _ } => true,
436            _ => false,
437        }
438    }
439}
440
441#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
442pub enum WlanScanResult {
443    Success,
444    NotSupported,
445    InvalidArgs,
446    InternalError,
447    ShouldWait,
448    CanceledByDriverOrFirmware,
449    #[doc(hidden)]
450    __SourceBreaking {
451        unknown_ordinal: u8,
452    },
453}
454
455/// Pattern that matches an unknown `WlanScanResult` member.
456#[macro_export]
457macro_rules! WlanScanResultUnknown {
458    () => {
459        _
460    };
461}
462
463impl WlanScanResult {
464    #[inline]
465    pub fn from_primitive(prim: u8) -> Option<Self> {
466        match prim {
467            0 => Some(Self::Success),
468            1 => Some(Self::NotSupported),
469            2 => Some(Self::InvalidArgs),
470            3 => Some(Self::InternalError),
471            4 => Some(Self::ShouldWait),
472            5 => Some(Self::CanceledByDriverOrFirmware),
473            _ => None,
474        }
475    }
476
477    #[inline]
478    pub fn from_primitive_allow_unknown(prim: u8) -> Self {
479        match prim {
480            0 => Self::Success,
481            1 => Self::NotSupported,
482            2 => Self::InvalidArgs,
483            3 => Self::InternalError,
484            4 => Self::ShouldWait,
485            5 => Self::CanceledByDriverOrFirmware,
486            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
487        }
488    }
489
490    #[inline]
491    pub fn unknown() -> Self {
492        Self::__SourceBreaking { unknown_ordinal: 0xff }
493    }
494
495    #[inline]
496    pub const fn into_primitive(self) -> u8 {
497        match self {
498            Self::Success => 0,
499            Self::NotSupported => 1,
500            Self::InvalidArgs => 2,
501            Self::InternalError => 3,
502            Self::ShouldWait => 4,
503            Self::CanceledByDriverOrFirmware => 5,
504            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
505        }
506    }
507
508    #[inline]
509    pub fn is_unknown(&self) -> bool {
510        match self {
511            Self::__SourceBreaking { unknown_ordinal: _ } => true,
512            _ => false,
513        }
514    }
515}
516
517#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
518pub enum WlanScanType {
519    Active,
520    Passive,
521    #[doc(hidden)]
522    __SourceBreaking {
523        unknown_ordinal: u8,
524    },
525}
526
527/// Pattern that matches an unknown `WlanScanType` member.
528#[macro_export]
529macro_rules! WlanScanTypeUnknown {
530    () => {
531        _
532    };
533}
534
535impl WlanScanType {
536    #[inline]
537    pub fn from_primitive(prim: u8) -> Option<Self> {
538        match prim {
539            1 => Some(Self::Active),
540            2 => Some(Self::Passive),
541            _ => None,
542        }
543    }
544
545    #[inline]
546    pub fn from_primitive_allow_unknown(prim: u8) -> Self {
547        match prim {
548            1 => Self::Active,
549            2 => Self::Passive,
550            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
551        }
552    }
553
554    #[inline]
555    pub fn unknown() -> Self {
556        Self::__SourceBreaking { unknown_ordinal: 0xff }
557    }
558
559    #[inline]
560    pub const fn into_primitive(self) -> u8 {
561        match self {
562            Self::Active => 1,
563            Self::Passive => 2,
564            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
565        }
566    }
567
568    #[inline]
569    pub fn is_unknown(&self) -> bool {
570        match self {
571            Self::__SourceBreaking { unknown_ordinal: _ } => true,
572            _ => false,
573        }
574    }
575}
576
577#[derive(Clone, Debug, PartialEq)]
578pub struct WlanFullmacChannelSwitchInfo {
579    pub new_primary_channel: fidl_fuchsia_wlan_ieee80211_common::ChannelNumber,
580    pub bandwidth: fidl_fuchsia_wlan_ieee80211_common::ChannelBandwidth,
581    pub vht_secondary_80_channel: fidl_fuchsia_wlan_ieee80211_common::ChannelNumber,
582}
583
584impl fidl::Persistable for WlanFullmacChannelSwitchInfo {}
585
586#[derive(Clone, Debug, PartialEq)]
587pub struct WlanFullmacImplIfcOnChannelSwitchRequest {
588    pub ind: WlanFullmacChannelSwitchInfo,
589}
590
591impl fidl::Persistable for WlanFullmacImplIfcOnChannelSwitchRequest {}
592
593#[derive(Clone, Debug, PartialEq)]
594pub struct WlanFullmacImplIfcOnWmmStatusRespRequest {
595    pub status: i32,
596    pub wmm_params: fidl_fuchsia_wlan_driver_common::WlanWmmParameters,
597}
598
599impl fidl::Persistable for WlanFullmacImplIfcOnWmmStatusRespRequest {}
600
601#[derive(Clone, Debug, PartialEq)]
602pub struct WlanFullmacImplIfcSaeFrameRxRequest {
603    pub frame: SaeFrame,
604}
605
606impl fidl::Persistable for WlanFullmacImplIfcSaeFrameRxRequest {}
607
608#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
609#[repr(C)]
610pub struct WlanFullmacImplIfcSignalReportRequest {
611    pub ind: WlanFullmacSignalReportIndication,
612}
613
614impl fidl::Persistable for WlanFullmacImplIfcSignalReportRequest {}
615
616#[derive(Clone, Debug, PartialEq)]
617pub struct WlanFullmacImplSaeFrameTxRequest {
618    pub frame: SaeFrame,
619}
620
621impl fidl::Persistable for WlanFullmacImplSaeFrameTxRequest {}
622
623#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
624pub struct WlanFullmacImplSetKeysResponse {
625    pub resp: WlanFullmacSetKeysResp,
626}
627
628impl fidl::Persistable for WlanFullmacImplSetKeysResponse {}
629
630#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
631#[repr(C)]
632pub struct WlanFullmacImplSetMacAddressRequest {
633    pub mac_addr: [u8; 6],
634}
635
636impl fidl::Persistable for WlanFullmacImplSetMacAddressRequest {}
637
638#[derive(Clone, Debug, PartialEq)]
639pub struct WlanFullmacImplGetIfaceHistogramStatsResponse {
640    pub stats: fidl_fuchsia_wlan_stats_common::IfaceHistogramStats,
641}
642
643impl fidl::Persistable for WlanFullmacImplGetIfaceHistogramStatsResponse {}
644
645#[derive(Clone, Debug, PartialEq)]
646pub struct WlanFullmacImplGetIfaceStatsResponse {
647    pub stats: fidl_fuchsia_wlan_stats_common::IfaceStats,
648}
649
650impl fidl::Persistable for WlanFullmacImplGetIfaceStatsResponse {}
651
652#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
653pub struct WlanFullmacRssiStats {
654    pub hist: Vec<u64>,
655}
656
657impl fidl::Persistable for WlanFullmacRssiStats {}
658
659#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
660pub struct WlanFullmacSetKeysResp {
661    pub statuslist: Vec<i32>,
662}
663
664impl fidl::Persistable for WlanFullmacSetKeysResp {}
665
666#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
667#[repr(C)]
668pub struct WlanFullmacSignalReportIndication {
669    pub rssi_dbm: i8,
670    pub snr_db: i8,
671    /// Tx rate in units of 500 kbit/s, which are the units used for
672    /// Supported Rates in IEEE Std 802.11-2024 9.4.2.3
673    pub tx_rate_500kbps: u32,
674}
675
676impl fidl::Persistable for WlanFullmacSignalReportIndication {}
677
678/// Describes parameters and capabilities for a single WlanBand.
679#[derive(Clone, Debug, Default, PartialEq)]
680pub struct BandCapability {
681    /// The values of this table apply to the band indicated in this field.
682    ///
683    /// Required.
684    pub band: Option<fidl_fuchsia_wlan_ieee80211_common::WlanBand>,
685    /// Basic rates supported in units of 500 kbit/s (as defined in
686    /// IEEE Std 802.11-2016, 9.4.2.3), e.g., 0x02 represents 1 Mbps.
687    /// The value returned by this type indicates all the non-HT rates
688    /// the device supports transmitting and receiving.
689    ///
690    /// Required.
691    pub basic_rates: Option<Vec<u8>>,
692    /// HT PHY mode capabilities.
693    ///
694    /// Optional. If this field is not present, then the device does not support HT PHY mode in this
695    /// band.
696    pub ht_caps: Option<fidl_fuchsia_wlan_ieee80211_common::HtCapabilities>,
697    /// VHT PHY mode capabilities.
698    ///
699    /// Optional. If this field is not present, then the device does not support VHT PHY mode in
700    /// this band.
701    pub vht_caps: Option<fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities>,
702    /// A list of primary channels considered valid by hardware, in the context of
703    /// regulatory information known to the device driver, at the time of its
704    /// construction during iface creation. In this context, a primary channel
705    /// means a channel which APs may transmit Beacon frames on in the current
706    /// regulatory domain.
707    ///
708    /// This list should be used to determine efficacy of subsequent requests to
709    /// scan a subset of channels using the iface, or to determine which primary
710    /// channel to use when starting an AP.
711    ///
712    /// Required.
713    pub primary_channels: Option<Vec<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber>>,
714    #[doc(hidden)]
715    pub __source_breaking: fidl::marker::SourceBreaking,
716}
717
718impl fidl::Persistable for BandCapability {}
719
720/// Contains the information of SAE authentication frames. Shared between transmit and receive
721/// directions, see WlanFullmacImplIfc::SaeFrameRx and WlanFullmacImpl::SaeFrameTx.
722#[derive(Clone, Debug, Default, PartialEq)]
723pub struct SaeFrame {
724    /// The peer's MAC address. Required.
725    pub peer_sta_address: Option<[u8; 6]>,
726    /// The status code for this SAE frame. Required.
727    pub status_code: Option<fidl_fuchsia_wlan_ieee80211_common::StatusCode>,
728    /// The sequence number. Required.
729    pub seq_num: Option<u16>,
730    /// Contains fields in the frame body relevant to SAE.
731    /// See IEEE Std 802.11-2016 table 9-35 and table 9-36 for more details.
732    /// Required.
733    pub sae_fields: Option<Vec<u8>>,
734    #[doc(hidden)]
735    pub __source_breaking: fidl::marker::SourceBreaking,
736}
737
738impl fidl::Persistable for SaeFrame {}
739
740#[derive(Clone, Debug, Default, PartialEq)]
741pub struct WlanFullmacImplAssocRespRequest {
742    pub peer_sta_address: Option<[u8; 6]>,
743    pub result_code: Option<WlanAssocResult>,
744    pub association_id: Option<u16>,
745    #[doc(hidden)]
746    pub __source_breaking: fidl::marker::SourceBreaking,
747}
748
749impl fidl::Persistable for WlanFullmacImplAssocRespRequest {}
750
751#[derive(Clone, Debug, Default, PartialEq)]
752pub struct WlanFullmacImplAuthRespRequest {
753    pub peer_sta_address: Option<[u8; 6]>,
754    pub result_code: Option<WlanAuthResult>,
755    #[doc(hidden)]
756    pub __source_breaking: fidl::marker::SourceBreaking,
757}
758
759impl fidl::Persistable for WlanFullmacImplAuthRespRequest {}
760
761#[derive(Clone, Debug, Default, PartialEq)]
762pub struct WlanFullmacImplConnectRequest {
763    pub selected_bss: Option<fidl_fuchsia_wlan_ieee80211_common::BssDescription>,
764    /// Timeout specified in beacon interval.
765    pub connect_failure_timeout: Option<u32>,
766    /// Additional parameters specific to the authentication exchange.
767    pub auth_type: Option<WlanAuthType>,
768    /// sae_password is ignored except when SAE_DRIVER_AUTH is enabled and the
769    /// auth_type is SAE.
770    pub sae_password: Option<Vec<u8>>,
771    /// WEP key used in the authentication exchange.
772    /// This is only populated for the WEP security type, otherwise this field is empty.
773    pub wep_key: Option<fidl_fuchsia_wlan_driver_common::WlanKeyConfig>,
774    /// Additional parameters specific to the association exchange.
775    pub security_ie: Option<Vec<u8>>,
776    /// WEP key used in the authentication exchange.
777    /// This is only populated for the WEP security type, otherwise this field is empty.
778    pub wep_key_desc: Option<fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor>,
779    /// OWE public key used for Diffie Hellman exchange during association.
780    /// This is only populated for the OWE security type, otherwise this field is empty.
781    pub owe_public_key: Option<WlanFullmacOwePublicKey>,
782    #[doc(hidden)]
783    pub __source_breaking: fidl::marker::SourceBreaking,
784}
785
786impl fidl::Persistable for WlanFullmacImplConnectRequest {}
787
788#[derive(Clone, Debug, Default, PartialEq)]
789pub struct WlanFullmacImplDeauthRequest {
790    pub peer_sta_address: Option<[u8; 6]>,
791    pub reason_code: Option<fidl_fuchsia_wlan_ieee80211_common::ReasonCode>,
792    #[doc(hidden)]
793    pub __source_breaking: fidl::marker::SourceBreaking,
794}
795
796impl fidl::Persistable for WlanFullmacImplDeauthRequest {}
797
798#[derive(Clone, Debug, Default, PartialEq)]
799pub struct WlanFullmacImplDisassocRequest {
800    pub peer_sta_address: Option<[u8; 6]>,
801    pub reason_code: Option<fidl_fuchsia_wlan_ieee80211_common::ReasonCode>,
802    #[doc(hidden)]
803    pub __source_breaking: fidl::marker::SourceBreaking,
804}
805
806impl fidl::Persistable for WlanFullmacImplDisassocRequest {}
807
808#[derive(Clone, Debug, Default, PartialEq)]
809pub struct WlanFullmacImplEapolTxRequest {
810    pub src_addr: Option<[u8; 6]>,
811    pub dst_addr: Option<[u8; 6]>,
812    pub data: Option<Vec<u8>>,
813    #[doc(hidden)]
814    pub __source_breaking: fidl::marker::SourceBreaking,
815}
816
817impl fidl::Persistable for WlanFullmacImplEapolTxRequest {}
818
819#[derive(Clone, Debug, Default, PartialEq)]
820pub struct WlanFullmacImplIfcAssocIndRequest {
821    pub peer_sta_address: Option<[u8; 6]>,
822    pub listen_interval: Option<u16>,
823    pub ssid: Option<Vec<u8>>,
824    pub rsne: Option<Vec<u8>>,
825    pub vendor_ie: Option<Vec<u8>>,
826    #[doc(hidden)]
827    pub __source_breaking: fidl::marker::SourceBreaking,
828}
829
830impl fidl::Persistable for WlanFullmacImplIfcAssocIndRequest {}
831
832#[derive(Clone, Debug, Default, PartialEq)]
833pub struct WlanFullmacImplIfcAuthIndRequest {
834    pub peer_sta_address: Option<[u8; 6]>,
835    pub auth_type: Option<WlanAuthType>,
836    #[doc(hidden)]
837    pub __source_breaking: fidl::marker::SourceBreaking,
838}
839
840impl fidl::Persistable for WlanFullmacImplIfcAuthIndRequest {}
841
842#[derive(Clone, Debug, Default, PartialEq)]
843pub struct WlanFullmacImplIfcConnectConfRequest {
844    pub peer_sta_address: Option<[u8; 6]>,
845    pub result_code: Option<fidl_fuchsia_wlan_ieee80211_common::StatusCode>,
846    pub association_id: Option<u16>,
847    pub association_ies: Option<Vec<u8>>,
848    #[doc(hidden)]
849    pub __source_breaking: fidl::marker::SourceBreaking,
850}
851
852impl fidl::Persistable for WlanFullmacImplIfcConnectConfRequest {}
853
854#[derive(Clone, Debug, Default, PartialEq)]
855pub struct WlanFullmacImplIfcDeauthConfRequest {
856    pub peer_sta_address: Option<[u8; 6]>,
857    #[doc(hidden)]
858    pub __source_breaking: fidl::marker::SourceBreaking,
859}
860
861impl fidl::Persistable for WlanFullmacImplIfcDeauthConfRequest {}
862
863#[derive(Clone, Debug, Default, PartialEq)]
864pub struct WlanFullmacImplIfcDeauthIndRequest {
865    /// MAC address of the peer. Required.
866    pub peer_sta_address: Option<[u8; 6]>,
867    /// Reason code for deauthentication. Required.
868    pub reason_code: Option<fidl_fuchsia_wlan_ieee80211_common::ReasonCode>,
869    /// locally_initiated is true if deauth is initiated from the device,
870    /// and is false if it's initiated remotely (e.g. due to deauth frame)
871    pub locally_initiated: Option<bool>,
872    #[doc(hidden)]
873    pub __source_breaking: fidl::marker::SourceBreaking,
874}
875
876impl fidl::Persistable for WlanFullmacImplIfcDeauthIndRequest {}
877
878#[derive(Clone, Debug, Default, PartialEq)]
879pub struct WlanFullmacImplIfcDisassocConfRequest {
880    /// ZX_OK indicates that the disassociate request was serviced and the peer was
881    /// disassociated. Other errors indicate that the request could not be serviced, for these
882    /// or other reasons:
883    ///   - ZX_ERR_BAD_STATE: association not possible in current state (e.g. disconnected)
884    ///   - ZX_ERR_INVALID_ARGS: no association exists with specified peer
885    ///   - ZX_ERR_SHOULD_WAIT: disassociate request could not be serviced because firmware or
886    ///     driver was busy
887    pub status: Option<i32>,
888    #[doc(hidden)]
889    pub __source_breaking: fidl::marker::SourceBreaking,
890}
891
892impl fidl::Persistable for WlanFullmacImplIfcDisassocConfRequest {}
893
894#[derive(Clone, Debug, Default, PartialEq)]
895pub struct WlanFullmacImplIfcDisassocIndRequest {
896    /// Address of the peer that was disassociated. Required.
897    pub peer_sta_address: Option<[u8; 6]>,
898    /// Reason for the disassociation. Required.
899    pub reason_code: Option<fidl_fuchsia_wlan_ieee80211_common::ReasonCode>,
900    /// Whether the disassociation was initiated from the device. Required.
901    /// locally_initiated is true if disassociation was initiated from the device (e.g. firmware
902    /// or vendor driver started the disassociation); false if the disassociation was initiated
903    /// externally (e.g. due to receipt of a disassociate frame from an AP).
904    pub locally_initiated: Option<bool>,
905    #[doc(hidden)]
906    pub __source_breaking: fidl::marker::SourceBreaking,
907}
908
909impl fidl::Persistable for WlanFullmacImplIfcDisassocIndRequest {}
910
911#[derive(Clone, Debug, Default, PartialEq)]
912pub struct WlanFullmacImplIfcEapolConfRequest {
913    /// The result of the transmission. Required.
914    pub result_code: Option<EapolTxResult>,
915    /// This value corresponds to the dst_addr in the EapolTxRequest we're confirming.
916    /// IEEE 802.11-2020 does not include this field, but we need it to disambiguate
917    /// if multiple EAPoL handshakes are ongoing.
918    /// Required.
919    pub dst_addr: Option<[u8; 6]>,
920    #[doc(hidden)]
921    pub __source_breaking: fidl::marker::SourceBreaking,
922}
923
924impl fidl::Persistable for WlanFullmacImplIfcEapolConfRequest {}
925
926#[derive(Clone, Debug, Default, PartialEq)]
927pub struct WlanFullmacImplIfcEapolIndRequest {
928    /// The address of the sender. Required.
929    pub src_addr: Option<[u8; 6]>,
930    /// The address of the intended destination. Required.
931    pub dst_addr: Option<[u8; 6]>,
932    /// The bytes of the EAPoL frame data. Required.
933    pub data: Option<Vec<u8>>,
934    #[doc(hidden)]
935    pub __source_breaking: fidl::marker::SourceBreaking,
936}
937
938impl fidl::Persistable for WlanFullmacImplIfcEapolIndRequest {}
939
940#[derive(Clone, Debug, Default, PartialEq)]
941pub struct WlanFullmacImplIfcOnPmkAvailableRequest {
942    /// The pairwise master key bytes. Required.
943    pub pmk: Option<Vec<u8>>,
944    /// The PMK IDs. Required.
945    pub pmkid: Option<Vec<u8>>,
946    #[doc(hidden)]
947    pub __source_breaking: fidl::marker::SourceBreaking,
948}
949
950impl fidl::Persistable for WlanFullmacImplIfcOnPmkAvailableRequest {}
951
952#[derive(Clone, Debug, Default, PartialEq)]
953pub struct WlanFullmacImplIfcOnRssiThresholdBreachedRequest {
954    pub cur_rssi_dbm: Option<i8>,
955    #[doc(hidden)]
956    pub __source_breaking: fidl::marker::SourceBreaking,
957}
958
959impl fidl::Persistable for WlanFullmacImplIfcOnRssiThresholdBreachedRequest {}
960
961#[derive(Clone, Debug, Default, PartialEq)]
962pub struct WlanFullmacImplIfcOnScanEndRequest {
963    pub txn_id: Option<u64>,
964    pub code: Option<WlanScanResult>,
965    #[doc(hidden)]
966    pub __source_breaking: fidl::marker::SourceBreaking,
967}
968
969impl fidl::Persistable for WlanFullmacImplIfcOnScanEndRequest {}
970
971#[derive(Clone, Debug, Default, PartialEq)]
972pub struct WlanFullmacImplIfcOnScanResultRequest {
973    pub txn_id: Option<u64>,
974    pub timestamp_nanos: Option<i64>,
975    pub bss: Option<fidl_fuchsia_wlan_ieee80211_common::BssDescription>,
976    #[doc(hidden)]
977    pub __source_breaking: fidl::marker::SourceBreaking,
978}
979
980impl fidl::Persistable for WlanFullmacImplIfcOnScanResultRequest {}
981
982#[derive(Clone, Debug, Default, PartialEq)]
983pub struct WlanFullmacImplIfcOnScheduledScanMatchesAvailableRequest {
984    pub txn_id: Option<u64>,
985    #[doc(hidden)]
986    pub __source_breaking: fidl::marker::SourceBreaking,
987}
988
989impl fidl::Persistable for WlanFullmacImplIfcOnScheduledScanMatchesAvailableRequest {}
990
991#[derive(Clone, Debug, Default, PartialEq)]
992pub struct WlanFullmacImplIfcOnScheduledScanStoppedByFirmwareRequest {
993    pub txn_id: Option<u64>,
994    #[doc(hidden)]
995    pub __source_breaking: fidl::marker::SourceBreaking,
996}
997
998impl fidl::Persistable for WlanFullmacImplIfcOnScheduledScanStoppedByFirmwareRequest {}
999
1000#[derive(Clone, Debug, Default, PartialEq)]
1001pub struct WlanFullmacImplIfcRoamConfRequest {
1002    /// BSSID of the target BSS. Required.
1003    pub selected_bssid: Option<[u8; 6]>,
1004    /// Result of the roam attempt. Required.
1005    pub status_code: Option<fidl_fuchsia_wlan_ieee80211_common::StatusCode>,
1006    /// Whether the original BSS association has been maintained through the roam attempt. Required.
1007    /// A successful roam always incurs disassociation from the original BSS, so if `status_code` is
1008    /// success then this field must be set to false; a roam failure typically incurs disassociation
1009    /// from the original BSS, but may not in some cases (e.g. in some Fast BSS Transition scenarios).
1010    pub original_association_maintained: Option<bool>,
1011    /// Whether the client is authenticated with the target BSS. If `status_code` is success, then
1012    /// this field must be set to true; if the roam attempt failed, this field may be true or false.
1013    /// This allows higher layers to decide how to clean up connection state after a failed roam
1014    /// attempt.
1015    pub target_bss_authenticated: Option<bool>,
1016    /// Association ID for this association with the AP. Required if `status_code` is success.
1017    pub association_id: Option<u16>,
1018    /// IEs for this association with the AP. Required if `status_code` is success.
1019    pub association_ies: Option<Vec<u8>>,
1020    #[doc(hidden)]
1021    pub __source_breaking: fidl::marker::SourceBreaking,
1022}
1023
1024impl fidl::Persistable for WlanFullmacImplIfcRoamConfRequest {}
1025
1026#[derive(Clone, Debug, Default, PartialEq)]
1027pub struct WlanFullmacImplIfcRoamResultIndRequest {
1028    /// BSSID of the target BSS. Required.
1029    pub selected_bssid: Option<[u8; 6]>,
1030    /// Result of the roam attempt. Required.
1031    pub status_code: Option<fidl_fuchsia_wlan_ieee80211_common::StatusCode>,
1032    /// Whether the original BSS association has been maintained through the roam attempt. Required.
1033    /// A successful roam always incurs disassociation from the original BSS, so if `status_code` is
1034    /// success then this field must be set to false; a roam failure typically incurs disassociation
1035    /// from the original BSS, but may not in some cases (e.g. in some Fast BSS Transition scenarios).
1036    pub original_association_maintained: Option<bool>,
1037    /// Whether the client is authenticated with the target BSS. If `status_code` is success, then
1038    /// this field must be set to true; if the roam attempt failed, this field may be true or false.
1039    /// This allows higher layers to decide how to clean up connection state after a failed roam
1040    /// attempt.
1041    pub target_bss_authenticated: Option<bool>,
1042    /// Association ID for this association with the AP. Required if `status_code` is success.
1043    pub association_id: Option<u16>,
1044    /// IEs for this association with the AP. Required if `status_code` is success.
1045    pub association_ies: Option<Vec<u8>>,
1046    #[doc(hidden)]
1047    pub __source_breaking: fidl::marker::SourceBreaking,
1048}
1049
1050impl fidl::Persistable for WlanFullmacImplIfcRoamResultIndRequest {}
1051
1052#[derive(Clone, Debug, Default, PartialEq)]
1053pub struct WlanFullmacImplIfcRoamStartIndRequest {
1054    /// BSSID of the target BSS. Required.
1055    pub selected_bssid: Option<[u8; 6]>,
1056    /// Full BSS description of the target BSS. Required.
1057    /// If the data in BssDescription is incorrect or incomplete, the roam cannot succeed,
1058    /// because higher layers will not be able to complete required actions (e.g. SAE).
1059    pub selected_bss: Option<fidl_fuchsia_wlan_ieee80211_common::BssDescription>,
1060    /// Whether the original BSS association has been maintained at the start of a roam attempt.
1061    /// Required. 802.11 dictates that a STA can only be associated with a single BSS, so a roam
1062    /// attempt typically incurs disassociation at the start of the roam attempt. However,
1063    /// 802.11 also provides a mechanism (i.e. Fast BSS Transition) that allows a device to
1064    /// maintain association with the original BSS while establishing authentication with the
1065    /// target BSS, in order to avoid losing the original association if authentication with the
1066    /// target BSS fails.
1067    pub original_association_maintained: Option<bool>,
1068    #[doc(hidden)]
1069    pub __source_breaking: fidl::marker::SourceBreaking,
1070}
1071
1072impl fidl::Persistable for WlanFullmacImplIfcRoamStartIndRequest {}
1073
1074#[derive(Clone, Debug, Default, PartialEq)]
1075pub struct WlanFullmacImplIfcSaeHandshakeIndRequest {
1076    pub peer_sta_address: Option<[u8; 6]>,
1077    #[doc(hidden)]
1078    pub __source_breaking: fidl::marker::SourceBreaking,
1079}
1080
1081impl fidl::Persistable for WlanFullmacImplIfcSaeHandshakeIndRequest {}
1082
1083#[derive(Clone, Debug, Default, PartialEq)]
1084pub struct WlanFullmacImplIfcStartConfRequest {
1085    /// The result of the StartBss request. Required.
1086    pub result_code: Option<StartResult>,
1087    #[doc(hidden)]
1088    pub __source_breaking: fidl::marker::SourceBreaking,
1089}
1090
1091impl fidl::Persistable for WlanFullmacImplIfcStartConfRequest {}
1092
1093#[derive(Clone, Debug, Default, PartialEq)]
1094pub struct WlanFullmacImplIfcStopConfRequest {
1095    /// The result of the StopBss request. Required.
1096    pub result_code: Option<StopResult>,
1097    #[doc(hidden)]
1098    pub __source_breaking: fidl::marker::SourceBreaking,
1099}
1100
1101impl fidl::Persistable for WlanFullmacImplIfcStopConfRequest {}
1102
1103#[derive(Clone, Debug, Default, PartialEq)]
1104pub struct WlanFullmacImplInstallApfPacketFilterRequest {
1105    pub program: Option<Vec<u8>>,
1106    #[doc(hidden)]
1107    pub __source_breaking: fidl::marker::SourceBreaking,
1108}
1109
1110impl fidl::Persistable for WlanFullmacImplInstallApfPacketFilterRequest {}
1111
1112#[derive(Clone, Debug, Default, PartialEq)]
1113pub struct WlanFullmacImplOnLinkStateChangedRequest {
1114    pub online: Option<bool>,
1115    #[doc(hidden)]
1116    pub __source_breaking: fidl::marker::SourceBreaking,
1117}
1118
1119impl fidl::Persistable for WlanFullmacImplOnLinkStateChangedRequest {}
1120
1121#[derive(Clone, Debug, Default, PartialEq)]
1122pub struct WlanFullmacImplReconnectRequest {
1123    pub peer_sta_address: Option<[u8; 6]>,
1124    #[doc(hidden)]
1125    pub __source_breaking: fidl::marker::SourceBreaking,
1126}
1127
1128impl fidl::Persistable for WlanFullmacImplReconnectRequest {}
1129
1130#[derive(Clone, Debug, Default, PartialEq)]
1131pub struct WlanFullmacImplRoamRequest {
1132    /// Full BSS description of the target BSS. Required.
1133    /// If the data in BssDescription is incorrect or incomplete, the roam cannot succeed,
1134    /// because higher layers will not be able to complete required actions (e.g. SAE).
1135    pub selected_bss: Option<fidl_fuchsia_wlan_ieee80211_common::BssDescription>,
1136    #[doc(hidden)]
1137    pub __source_breaking: fidl::marker::SourceBreaking,
1138}
1139
1140impl fidl::Persistable for WlanFullmacImplRoamRequest {}
1141
1142#[derive(Clone, Debug, Default, PartialEq)]
1143pub struct WlanFullmacImplSaeHandshakeRespRequest {
1144    /// The peer's MAC address. Required.
1145    pub peer_sta_address: Option<[u8; 6]>,
1146    /// The status of the SAE handshake. Required.
1147    pub status_code: Option<fidl_fuchsia_wlan_ieee80211_common::StatusCode>,
1148    #[doc(hidden)]
1149    pub __source_breaking: fidl::marker::SourceBreaking,
1150}
1151
1152impl fidl::Persistable for WlanFullmacImplSaeHandshakeRespRequest {}
1153
1154#[derive(Clone, Debug, Default, PartialEq)]
1155pub struct WlanFullmacImplSetApfPacketFilterEnabledRequest {
1156    pub enabled: Option<bool>,
1157    #[doc(hidden)]
1158    pub __source_breaking: fidl::marker::SourceBreaking,
1159}
1160
1161impl fidl::Persistable for WlanFullmacImplSetApfPacketFilterEnabledRequest {}
1162
1163#[derive(Clone, Debug, Default, PartialEq)]
1164pub struct WlanFullmacImplSetKeysRequest {
1165    pub keylist: Option<Vec<fidl_fuchsia_wlan_driver_common::WlanKeyConfig>>,
1166    pub key_descriptors: Option<Vec<fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor>>,
1167    #[doc(hidden)]
1168    pub __source_breaking: fidl::marker::SourceBreaking,
1169}
1170
1171impl fidl::Persistable for WlanFullmacImplSetKeysRequest {}
1172
1173#[derive(Clone, Debug, Default, PartialEq)]
1174pub struct WlanFullmacImplStartBssRequest {
1175    pub ssid: Option<Vec<u8>>,
1176    pub bss_type: Option<fidl_fuchsia_wlan_ieee80211_common::BssType>,
1177    pub beacon_period: Option<u32>,
1178    pub dtim_period: Option<u32>,
1179    pub primary: Option<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber>,
1180    pub rsne: Option<Vec<u8>>,
1181    pub vendor_ie: Option<Vec<u8>>,
1182    #[doc(hidden)]
1183    pub __source_breaking: fidl::marker::SourceBreaking,
1184}
1185
1186impl fidl::Persistable for WlanFullmacImplStartBssRequest {}
1187
1188#[derive(Clone, Debug, Default, PartialEq)]
1189pub struct WlanFullmacImplStartRssiMonitorRequest {
1190    pub min_rssi_dbm: Option<i8>,
1191    pub max_rssi_dbm: Option<i8>,
1192    #[doc(hidden)]
1193    pub __source_breaking: fidl::marker::SourceBreaking,
1194}
1195
1196impl fidl::Persistable for WlanFullmacImplStartRssiMonitorRequest {}
1197
1198#[derive(Clone, Debug, Default, PartialEq)]
1199pub struct WlanFullmacImplStartScanRequest {
1200    /// Unique transaction id (will be indicated in corresponding scan results).
1201    pub txn_id: Option<u64>,
1202    pub scan_type: Option<WlanScanType>,
1203    /// List of channels to scan on. An empty list of channels will cause a
1204    /// scan request to immediately return a OnScanEnd with code INVALID_ARGS.
1205    ///
1206    /// Invalid channel numbers will be silently ignored. The validity of a channel
1207    /// number depends on the current regulatory region, and a FullMAC driver cannot
1208    /// always determine the region setting. This is especially the case when
1209    /// firmware changes the region setting dynamically.
1210    pub channels: Option<Vec<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber>>,
1211    /// List of SSIDs to scan for. An empty list of ssids is the same as specifying
1212    /// a list containing only the wildcard SSID.
1213    ///
1214    /// There is no limit on the number of SSIDs specified. A large number of
1215    /// SSIDs may result in extended scan times because of hardware limitations on
1216    /// the number of SSIDs permitted per scan request and the technical limitation
1217    /// in IEEE 802.11-2016 that limits the number of SSIDs in a single Probe Request
1218    /// frame to ieee80211.SSID_LIST_MAX SSIDs.
1219    pub ssids: Option<Vec<Vec<u8>>>,
1220    /// Minimum amount of time in msecs spent on a channel during scan.
1221    pub min_channel_time: Option<u32>,
1222    /// Maximum amount of time in msecs spent on a channel during scan.
1223    pub max_channel_time: Option<u32>,
1224    #[doc(hidden)]
1225    pub __source_breaking: fidl::marker::SourceBreaking,
1226}
1227
1228impl fidl::Persistable for WlanFullmacImplStartScanRequest {}
1229
1230#[derive(Clone, Debug, Default, PartialEq)]
1231pub struct WlanFullmacImplStartScheduledScanRequest {
1232    pub txn_id: Option<u64>,
1233    pub req: Option<fidl_fuchsia_wlan_common_common::ScheduledScanRequest>,
1234    #[doc(hidden)]
1235    pub __source_breaking: fidl::marker::SourceBreaking,
1236}
1237
1238impl fidl::Persistable for WlanFullmacImplStartScheduledScanRequest {}
1239
1240#[derive(Clone, Debug, Default, PartialEq)]
1241pub struct WlanFullmacImplStopBssRequest {
1242    pub ssid: Option<Vec<u8>>,
1243    #[doc(hidden)]
1244    pub __source_breaking: fidl::marker::SourceBreaking,
1245}
1246
1247impl fidl::Persistable for WlanFullmacImplStopBssRequest {}
1248
1249#[derive(Clone, Debug, Default, PartialEq)]
1250pub struct WlanFullmacImplStopScheduledScanRequest {
1251    pub txn_id: Option<u64>,
1252    #[doc(hidden)]
1253    pub __source_breaking: fidl::marker::SourceBreaking,
1254}
1255
1256impl fidl::Persistable for WlanFullmacImplStopScheduledScanRequest {}
1257
1258#[derive(Clone, Debug, Default, PartialEq)]
1259pub struct WlanFullmacImplGetApfPacketFilterEnabledResponse {
1260    pub enabled: Option<bool>,
1261    #[doc(hidden)]
1262    pub __source_breaking: fidl::marker::SourceBreaking,
1263}
1264
1265impl fidl::Persistable for WlanFullmacImplGetApfPacketFilterEnabledResponse {}
1266
1267#[derive(Clone, Debug, Default, PartialEq)]
1268pub struct WlanFullmacImplGetScheduledScanEnabledResponse {
1269    pub active_txn_ids: Option<Vec<u64>>,
1270    #[doc(hidden)]
1271    pub __source_breaking: fidl::marker::SourceBreaking,
1272}
1273
1274impl fidl::Persistable for WlanFullmacImplGetScheduledScanEnabledResponse {}
1275
1276#[derive(Clone, Debug, Default, PartialEq)]
1277pub struct WlanFullmacImplQueryApfPacketFilterSupportResponse {
1278    pub resp: Option<fidl_fuchsia_wlan_common_common::ApfPacketFilterSupport>,
1279    #[doc(hidden)]
1280    pub __source_breaking: fidl::marker::SourceBreaking,
1281}
1282
1283impl fidl::Persistable for WlanFullmacImplQueryApfPacketFilterSupportResponse {}
1284
1285#[derive(Clone, Debug, Default, PartialEq)]
1286pub struct WlanFullmacImplQueryRssiMonitorSupportResponse {
1287    pub resp: Option<fidl_fuchsia_wlan_common_common::RssiMonitorSupport>,
1288    #[doc(hidden)]
1289    pub __source_breaking: fidl::marker::SourceBreaking,
1290}
1291
1292impl fidl::Persistable for WlanFullmacImplQueryRssiMonitorSupportResponse {}
1293
1294#[derive(Clone, Debug, Default, PartialEq)]
1295pub struct WlanFullmacImplQuerySecuritySupportResponse {
1296    pub resp: Option<fidl_fuchsia_wlan_common_common::SecuritySupport>,
1297    #[doc(hidden)]
1298    pub __source_breaking: fidl::marker::SourceBreaking,
1299}
1300
1301impl fidl::Persistable for WlanFullmacImplQuerySecuritySupportResponse {}
1302
1303#[derive(Clone, Debug, Default, PartialEq)]
1304pub struct WlanFullmacImplQuerySpectrumManagementSupportResponse {
1305    pub resp: Option<fidl_fuchsia_wlan_common_common::SpectrumManagementSupport>,
1306    #[doc(hidden)]
1307    pub __source_breaking: fidl::marker::SourceBreaking,
1308}
1309
1310impl fidl::Persistable for WlanFullmacImplQuerySpectrumManagementSupportResponse {}
1311
1312#[derive(Clone, Debug, Default, PartialEq)]
1313pub struct WlanFullmacImplQueryTelemetrySupportResponse {
1314    pub resp: Option<fidl_fuchsia_wlan_stats_common::TelemetrySupport>,
1315    #[doc(hidden)]
1316    pub __source_breaking: fidl::marker::SourceBreaking,
1317}
1318
1319impl fidl::Persistable for WlanFullmacImplQueryTelemetrySupportResponse {}
1320
1321#[derive(Clone, Debug, Default, PartialEq)]
1322pub struct WlanFullmacImplQueryResponse {
1323    /// Current station address. Required.
1324    pub sta_addr: Option<[u8; 6]>,
1325    /// MAC role. Required.
1326    pub role: Option<fidl_fuchsia_wlan_common_common::WlanMacRole>,
1327    /// Supported bands. Required.
1328    pub band_caps: Option<Vec<BandCapability>>,
1329    /// Factory mac address. Required.
1330    pub factory_addr: Option<[u8; 6]>,
1331    #[doc(hidden)]
1332    pub __source_breaking: fidl::marker::SourceBreaking,
1333}
1334
1335impl fidl::Persistable for WlanFullmacImplQueryResponse {}
1336
1337#[derive(Clone, Debug, Default, PartialEq)]
1338pub struct WlanFullmacImplReadApfPacketFilterDataResponse {
1339    pub memory: Option<Vec<u8>>,
1340    #[doc(hidden)]
1341    pub __source_breaking: fidl::marker::SourceBreaking,
1342}
1343
1344impl fidl::Persistable for WlanFullmacImplReadApfPacketFilterDataResponse {}
1345
1346#[derive(Clone, Debug, Default, PartialEq)]
1347pub struct WlanFullmacOwePublicKey {
1348    pub group: Option<u16>,
1349    pub key: Option<Vec<u8>>,
1350    #[doc(hidden)]
1351    pub __source_breaking: fidl::marker::SourceBreaking,
1352}
1353
1354impl fidl::Persistable for WlanFullmacOwePublicKey {}
1355
1356pub mod wlan_fullmac_impl__ordinals {
1357    pub const INIT: u64 = 0x593dfb6cb3f0f1aa;
1358    pub const QUERY: u64 = 0x28ac65f9da3941d4;
1359    pub const QUERY_SECURITY_SUPPORT: u64 = 0x11cf3fa6eeb93f84;
1360    pub const QUERY_SPECTRUM_MANAGEMENT_SUPPORT: u64 = 0x22ae7551d855b83a;
1361    pub const QUERY_TELEMETRY_SUPPORT: u64 = 0x4561479ca560827f;
1362    pub const QUERY_APF_PACKET_FILTER_SUPPORT: u64 = 0x6df8cdf0acd4dfad;
1363    pub const QUERY_RSSI_MONITOR_SUPPORT: u64 = 0x21d21e42d6aa61b5;
1364    pub const START_SCAN: u64 = 0x26c17bf595aa161c;
1365    pub const START_SCHEDULED_SCAN: u64 = 0x67bb4356265682d2;
1366    pub const STOP_SCHEDULED_SCAN: u64 = 0x71bf2a03f2cdc10f;
1367    pub const GET_SCHEDULED_SCAN_ENABLED: u64 = 0x96be6f11648f198;
1368    pub const CONNECT: u64 = 0x19eb0322efb07a76;
1369    pub const RECONNECT: u64 = 0x474084c4ef19ee71;
1370    pub const ROAM: u64 = 0x1e35dcc98b124b64;
1371    pub const AUTH_RESP: u64 = 0x5f7ea24b44a4aaeb;
1372    pub const DEAUTH: u64 = 0x112786eccbf12f37;
1373    pub const ASSOC_RESP: u64 = 0x5022ce6b8eefec2f;
1374    pub const DISASSOC: u64 = 0x9c0fc4e8de53e01;
1375    pub const START_BSS: u64 = 0x6922644d6b1d341d;
1376    pub const STOP_BSS: u64 = 0x5aeb9b72e7575268;
1377    pub const SET_KEYS: u64 = 0x20f46b1e039f0985;
1378    pub const EAPOL_TX: u64 = 0x529a2d90fd4c8177;
1379    pub const GET_IFACE_STATS: u64 = 0x505563776ef0392f;
1380    pub const GET_IFACE_HISTOGRAM_STATS: u64 = 0x503d586f30ccf2cd;
1381    pub const GET_SIGNAL_REPORT: u64 = 0x5d93f056e4796bb3;
1382    pub const SAE_HANDSHAKE_RESP: u64 = 0x72cd3a31ae5a54f6;
1383    pub const SAE_FRAME_TX: u64 = 0x4715ad5dc5a6340f;
1384    pub const WMM_STATUS_REQ: u64 = 0x635ecef3beb7a059;
1385    pub const ON_LINK_STATE_CHANGED: u64 = 0x4d896e5b68e488d7;
1386    pub const SET_MAC_ADDRESS: u64 = 0x211a97f6f21ae5f0;
1387    pub const INSTALL_APF_PACKET_FILTER: u64 = 0x14597eda84122115;
1388    pub const READ_APF_PACKET_FILTER_DATA: u64 = 0x6ddcf8a179553a3c;
1389    pub const SET_APF_PACKET_FILTER_ENABLED: u64 = 0x808792cade97d59;
1390    pub const GET_APF_PACKET_FILTER_ENABLED: u64 = 0x284e1725471e3ae7;
1391    pub const START_RSSI_MONITOR: u64 = 0x5e6e8feead94acec;
1392    pub const STOP_RSSI_MONITOR: u64 = 0x45795dfdd5760880;
1393}
1394
1395pub mod wlan_fullmac_impl_ifc_ordinals {
1396    pub const ON_SCAN_RESULT: u64 = 0x29aa81dc570f7a3e;
1397    pub const ON_SCAN_END: u64 = 0x7cd8aff80d27073c;
1398    pub const ON_SCHEDULED_SCAN_MATCHES_AVAILABLE: u64 = 0x3036cd8b8b35e81b;
1399    pub const ON_SCHEDULED_SCAN_STOPPED_BY_FIRMWARE: u64 = 0x50353be2c3029817;
1400    pub const CONNECT_CONF: u64 = 0x3c22c6d80b2a2759;
1401    pub const ROAM_CONF: u64 = 0x368b2a5b903b3f7b;
1402    pub const ROAM_START_IND: u64 = 0x23e1d9368935e7e4;
1403    pub const ROAM_RESULT_IND: u64 = 0x7081c1b1ceea4914;
1404    pub const AUTH_IND: u64 = 0x270e1f8889650d0b;
1405    pub const DEAUTH_CONF: u64 = 0x2c94b0d7258111b7;
1406    pub const DEAUTH_IND: u64 = 0x26cd27cdadd8dbaf;
1407    pub const ASSOC_IND: u64 = 0x3e44529e3dc179ce;
1408    pub const DISASSOC_CONF: u64 = 0x7c713bcd58a76cb3;
1409    pub const DISASSOC_IND: u64 = 0x6667b381b7f3990f;
1410    pub const START_CONF: u64 = 0x3e9b9641f3ddc7fc;
1411    pub const STOP_CONF: u64 = 0x320a5ff227a4e9df;
1412    pub const EAPOL_CONF: u64 = 0x77364db9cc3970ec;
1413    pub const ON_CHANNEL_SWITCH: u64 = 0x21db0b8f71cae647;
1414    pub const SIGNAL_REPORT: u64 = 0x79679fa8789c3d9f;
1415    pub const ON_RSSI_THRESHOLD_BREACHED: u64 = 0x5ddcf835177124b6;
1416    pub const EAPOL_IND: u64 = 0x3de8ec1eda10d1d0;
1417    pub const ON_PMK_AVAILABLE: u64 = 0x5cedd8d9be28a17e;
1418    pub const SAE_HANDSHAKE_IND: u64 = 0x4f3d53885503a1d8;
1419    pub const SAE_FRAME_RX: u64 = 0x51650906857ed4d4;
1420    pub const ON_WMM_STATUS_RESP: u64 = 0x6823a88bf3ba8b2a;
1421}
1422
1423mod internal {
1424    use super::*;
1425    unsafe impl fidl::encoding::TypeMarker for EapolTxResult {
1426        type Owned = Self;
1427
1428        #[inline(always)]
1429        fn inline_align(_context: fidl::encoding::Context) -> usize {
1430            std::mem::align_of::<u8>()
1431        }
1432
1433        #[inline(always)]
1434        fn inline_size(_context: fidl::encoding::Context) -> usize {
1435            std::mem::size_of::<u8>()
1436        }
1437
1438        #[inline(always)]
1439        fn encode_is_copy() -> bool {
1440            false
1441        }
1442
1443        #[inline(always)]
1444        fn decode_is_copy() -> bool {
1445            false
1446        }
1447    }
1448
1449    impl fidl::encoding::ValueTypeMarker for EapolTxResult {
1450        type Borrowed<'a> = Self;
1451        #[inline(always)]
1452        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1453            *value
1454        }
1455    }
1456
1457    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for EapolTxResult {
1458        #[inline]
1459        unsafe fn encode(
1460            self,
1461            encoder: &mut fidl::encoding::Encoder<'_, D>,
1462            offset: usize,
1463            _depth: fidl::encoding::Depth,
1464        ) -> fidl::Result<()> {
1465            encoder.debug_check_bounds::<Self>(offset);
1466            encoder.write_num(self.into_primitive(), offset);
1467            Ok(())
1468        }
1469    }
1470
1471    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EapolTxResult {
1472        #[inline(always)]
1473        fn new_empty() -> Self {
1474            Self::unknown()
1475        }
1476
1477        #[inline]
1478        unsafe fn decode(
1479            &mut self,
1480            decoder: &mut fidl::encoding::Decoder<'_, D>,
1481            offset: usize,
1482            _depth: fidl::encoding::Depth,
1483        ) -> fidl::Result<()> {
1484            decoder.debug_check_bounds::<Self>(offset);
1485            let prim = decoder.read_num::<u8>(offset);
1486
1487            *self = Self::from_primitive_allow_unknown(prim);
1488            Ok(())
1489        }
1490    }
1491    unsafe impl fidl::encoding::TypeMarker for StartResult {
1492        type Owned = Self;
1493
1494        #[inline(always)]
1495        fn inline_align(_context: fidl::encoding::Context) -> usize {
1496            std::mem::align_of::<u8>()
1497        }
1498
1499        #[inline(always)]
1500        fn inline_size(_context: fidl::encoding::Context) -> usize {
1501            std::mem::size_of::<u8>()
1502        }
1503
1504        #[inline(always)]
1505        fn encode_is_copy() -> bool {
1506            false
1507        }
1508
1509        #[inline(always)]
1510        fn decode_is_copy() -> bool {
1511            false
1512        }
1513    }
1514
1515    impl fidl::encoding::ValueTypeMarker for StartResult {
1516        type Borrowed<'a> = Self;
1517        #[inline(always)]
1518        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1519            *value
1520        }
1521    }
1522
1523    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for StartResult {
1524        #[inline]
1525        unsafe fn encode(
1526            self,
1527            encoder: &mut fidl::encoding::Encoder<'_, D>,
1528            offset: usize,
1529            _depth: fidl::encoding::Depth,
1530        ) -> fidl::Result<()> {
1531            encoder.debug_check_bounds::<Self>(offset);
1532            encoder.write_num(self.into_primitive(), offset);
1533            Ok(())
1534        }
1535    }
1536
1537    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StartResult {
1538        #[inline(always)]
1539        fn new_empty() -> Self {
1540            Self::unknown()
1541        }
1542
1543        #[inline]
1544        unsafe fn decode(
1545            &mut self,
1546            decoder: &mut fidl::encoding::Decoder<'_, D>,
1547            offset: usize,
1548            _depth: fidl::encoding::Depth,
1549        ) -> fidl::Result<()> {
1550            decoder.debug_check_bounds::<Self>(offset);
1551            let prim = decoder.read_num::<u8>(offset);
1552
1553            *self = Self::from_primitive_allow_unknown(prim);
1554            Ok(())
1555        }
1556    }
1557    unsafe impl fidl::encoding::TypeMarker for StopResult {
1558        type Owned = Self;
1559
1560        #[inline(always)]
1561        fn inline_align(_context: fidl::encoding::Context) -> usize {
1562            std::mem::align_of::<u8>()
1563        }
1564
1565        #[inline(always)]
1566        fn inline_size(_context: fidl::encoding::Context) -> usize {
1567            std::mem::size_of::<u8>()
1568        }
1569
1570        #[inline(always)]
1571        fn encode_is_copy() -> bool {
1572            false
1573        }
1574
1575        #[inline(always)]
1576        fn decode_is_copy() -> bool {
1577            false
1578        }
1579    }
1580
1581    impl fidl::encoding::ValueTypeMarker for StopResult {
1582        type Borrowed<'a> = Self;
1583        #[inline(always)]
1584        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1585            *value
1586        }
1587    }
1588
1589    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for StopResult {
1590        #[inline]
1591        unsafe fn encode(
1592            self,
1593            encoder: &mut fidl::encoding::Encoder<'_, D>,
1594            offset: usize,
1595            _depth: fidl::encoding::Depth,
1596        ) -> fidl::Result<()> {
1597            encoder.debug_check_bounds::<Self>(offset);
1598            encoder.write_num(self.into_primitive(), offset);
1599            Ok(())
1600        }
1601    }
1602
1603    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StopResult {
1604        #[inline(always)]
1605        fn new_empty() -> Self {
1606            Self::unknown()
1607        }
1608
1609        #[inline]
1610        unsafe fn decode(
1611            &mut self,
1612            decoder: &mut fidl::encoding::Decoder<'_, D>,
1613            offset: usize,
1614            _depth: fidl::encoding::Depth,
1615        ) -> fidl::Result<()> {
1616            decoder.debug_check_bounds::<Self>(offset);
1617            let prim = decoder.read_num::<u8>(offset);
1618
1619            *self = Self::from_primitive_allow_unknown(prim);
1620            Ok(())
1621        }
1622    }
1623    unsafe impl fidl::encoding::TypeMarker for WlanAssocResult {
1624        type Owned = Self;
1625
1626        #[inline(always)]
1627        fn inline_align(_context: fidl::encoding::Context) -> usize {
1628            std::mem::align_of::<u8>()
1629        }
1630
1631        #[inline(always)]
1632        fn inline_size(_context: fidl::encoding::Context) -> usize {
1633            std::mem::size_of::<u8>()
1634        }
1635
1636        #[inline(always)]
1637        fn encode_is_copy() -> bool {
1638            false
1639        }
1640
1641        #[inline(always)]
1642        fn decode_is_copy() -> bool {
1643            false
1644        }
1645    }
1646
1647    impl fidl::encoding::ValueTypeMarker for WlanAssocResult {
1648        type Borrowed<'a> = Self;
1649        #[inline(always)]
1650        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1651            *value
1652        }
1653    }
1654
1655    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1656        for WlanAssocResult
1657    {
1658        #[inline]
1659        unsafe fn encode(
1660            self,
1661            encoder: &mut fidl::encoding::Encoder<'_, D>,
1662            offset: usize,
1663            _depth: fidl::encoding::Depth,
1664        ) -> fidl::Result<()> {
1665            encoder.debug_check_bounds::<Self>(offset);
1666            encoder.write_num(self.into_primitive(), offset);
1667            Ok(())
1668        }
1669    }
1670
1671    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanAssocResult {
1672        #[inline(always)]
1673        fn new_empty() -> Self {
1674            Self::unknown()
1675        }
1676
1677        #[inline]
1678        unsafe fn decode(
1679            &mut self,
1680            decoder: &mut fidl::encoding::Decoder<'_, D>,
1681            offset: usize,
1682            _depth: fidl::encoding::Depth,
1683        ) -> fidl::Result<()> {
1684            decoder.debug_check_bounds::<Self>(offset);
1685            let prim = decoder.read_num::<u8>(offset);
1686
1687            *self = Self::from_primitive_allow_unknown(prim);
1688            Ok(())
1689        }
1690    }
1691    unsafe impl fidl::encoding::TypeMarker for WlanAuthResult {
1692        type Owned = Self;
1693
1694        #[inline(always)]
1695        fn inline_align(_context: fidl::encoding::Context) -> usize {
1696            std::mem::align_of::<u8>()
1697        }
1698
1699        #[inline(always)]
1700        fn inline_size(_context: fidl::encoding::Context) -> usize {
1701            std::mem::size_of::<u8>()
1702        }
1703
1704        #[inline(always)]
1705        fn encode_is_copy() -> bool {
1706            false
1707        }
1708
1709        #[inline(always)]
1710        fn decode_is_copy() -> bool {
1711            false
1712        }
1713    }
1714
1715    impl fidl::encoding::ValueTypeMarker for WlanAuthResult {
1716        type Borrowed<'a> = Self;
1717        #[inline(always)]
1718        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1719            *value
1720        }
1721    }
1722
1723    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanAuthResult {
1724        #[inline]
1725        unsafe fn encode(
1726            self,
1727            encoder: &mut fidl::encoding::Encoder<'_, D>,
1728            offset: usize,
1729            _depth: fidl::encoding::Depth,
1730        ) -> fidl::Result<()> {
1731            encoder.debug_check_bounds::<Self>(offset);
1732            encoder.write_num(self.into_primitive(), offset);
1733            Ok(())
1734        }
1735    }
1736
1737    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanAuthResult {
1738        #[inline(always)]
1739        fn new_empty() -> Self {
1740            Self::unknown()
1741        }
1742
1743        #[inline]
1744        unsafe fn decode(
1745            &mut self,
1746            decoder: &mut fidl::encoding::Decoder<'_, D>,
1747            offset: usize,
1748            _depth: fidl::encoding::Depth,
1749        ) -> fidl::Result<()> {
1750            decoder.debug_check_bounds::<Self>(offset);
1751            let prim = decoder.read_num::<u8>(offset);
1752
1753            *self = Self::from_primitive_allow_unknown(prim);
1754            Ok(())
1755        }
1756    }
1757    unsafe impl fidl::encoding::TypeMarker for WlanAuthType {
1758        type Owned = Self;
1759
1760        #[inline(always)]
1761        fn inline_align(_context: fidl::encoding::Context) -> usize {
1762            std::mem::align_of::<u8>()
1763        }
1764
1765        #[inline(always)]
1766        fn inline_size(_context: fidl::encoding::Context) -> usize {
1767            std::mem::size_of::<u8>()
1768        }
1769
1770        #[inline(always)]
1771        fn encode_is_copy() -> bool {
1772            false
1773        }
1774
1775        #[inline(always)]
1776        fn decode_is_copy() -> bool {
1777            false
1778        }
1779    }
1780
1781    impl fidl::encoding::ValueTypeMarker for WlanAuthType {
1782        type Borrowed<'a> = Self;
1783        #[inline(always)]
1784        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1785            *value
1786        }
1787    }
1788
1789    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanAuthType {
1790        #[inline]
1791        unsafe fn encode(
1792            self,
1793            encoder: &mut fidl::encoding::Encoder<'_, D>,
1794            offset: usize,
1795            _depth: fidl::encoding::Depth,
1796        ) -> fidl::Result<()> {
1797            encoder.debug_check_bounds::<Self>(offset);
1798            encoder.write_num(self.into_primitive(), offset);
1799            Ok(())
1800        }
1801    }
1802
1803    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanAuthType {
1804        #[inline(always)]
1805        fn new_empty() -> Self {
1806            Self::unknown()
1807        }
1808
1809        #[inline]
1810        unsafe fn decode(
1811            &mut self,
1812            decoder: &mut fidl::encoding::Decoder<'_, D>,
1813            offset: usize,
1814            _depth: fidl::encoding::Depth,
1815        ) -> fidl::Result<()> {
1816            decoder.debug_check_bounds::<Self>(offset);
1817            let prim = decoder.read_num::<u8>(offset);
1818
1819            *self = Self::from_primitive_allow_unknown(prim);
1820            Ok(())
1821        }
1822    }
1823    unsafe impl fidl::encoding::TypeMarker for WlanScanResult {
1824        type Owned = Self;
1825
1826        #[inline(always)]
1827        fn inline_align(_context: fidl::encoding::Context) -> usize {
1828            std::mem::align_of::<u8>()
1829        }
1830
1831        #[inline(always)]
1832        fn inline_size(_context: fidl::encoding::Context) -> usize {
1833            std::mem::size_of::<u8>()
1834        }
1835
1836        #[inline(always)]
1837        fn encode_is_copy() -> bool {
1838            false
1839        }
1840
1841        #[inline(always)]
1842        fn decode_is_copy() -> bool {
1843            false
1844        }
1845    }
1846
1847    impl fidl::encoding::ValueTypeMarker for WlanScanResult {
1848        type Borrowed<'a> = Self;
1849        #[inline(always)]
1850        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1851            *value
1852        }
1853    }
1854
1855    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanScanResult {
1856        #[inline]
1857        unsafe fn encode(
1858            self,
1859            encoder: &mut fidl::encoding::Encoder<'_, D>,
1860            offset: usize,
1861            _depth: fidl::encoding::Depth,
1862        ) -> fidl::Result<()> {
1863            encoder.debug_check_bounds::<Self>(offset);
1864            encoder.write_num(self.into_primitive(), offset);
1865            Ok(())
1866        }
1867    }
1868
1869    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanScanResult {
1870        #[inline(always)]
1871        fn new_empty() -> Self {
1872            Self::unknown()
1873        }
1874
1875        #[inline]
1876        unsafe fn decode(
1877            &mut self,
1878            decoder: &mut fidl::encoding::Decoder<'_, D>,
1879            offset: usize,
1880            _depth: fidl::encoding::Depth,
1881        ) -> fidl::Result<()> {
1882            decoder.debug_check_bounds::<Self>(offset);
1883            let prim = decoder.read_num::<u8>(offset);
1884
1885            *self = Self::from_primitive_allow_unknown(prim);
1886            Ok(())
1887        }
1888    }
1889    unsafe impl fidl::encoding::TypeMarker for WlanScanType {
1890        type Owned = Self;
1891
1892        #[inline(always)]
1893        fn inline_align(_context: fidl::encoding::Context) -> usize {
1894            std::mem::align_of::<u8>()
1895        }
1896
1897        #[inline(always)]
1898        fn inline_size(_context: fidl::encoding::Context) -> usize {
1899            std::mem::size_of::<u8>()
1900        }
1901
1902        #[inline(always)]
1903        fn encode_is_copy() -> bool {
1904            false
1905        }
1906
1907        #[inline(always)]
1908        fn decode_is_copy() -> bool {
1909            false
1910        }
1911    }
1912
1913    impl fidl::encoding::ValueTypeMarker for WlanScanType {
1914        type Borrowed<'a> = Self;
1915        #[inline(always)]
1916        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1917            *value
1918        }
1919    }
1920
1921    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanScanType {
1922        #[inline]
1923        unsafe fn encode(
1924            self,
1925            encoder: &mut fidl::encoding::Encoder<'_, D>,
1926            offset: usize,
1927            _depth: fidl::encoding::Depth,
1928        ) -> fidl::Result<()> {
1929            encoder.debug_check_bounds::<Self>(offset);
1930            encoder.write_num(self.into_primitive(), offset);
1931            Ok(())
1932        }
1933    }
1934
1935    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanScanType {
1936        #[inline(always)]
1937        fn new_empty() -> Self {
1938            Self::unknown()
1939        }
1940
1941        #[inline]
1942        unsafe fn decode(
1943            &mut self,
1944            decoder: &mut fidl::encoding::Decoder<'_, D>,
1945            offset: usize,
1946            _depth: fidl::encoding::Depth,
1947        ) -> fidl::Result<()> {
1948            decoder.debug_check_bounds::<Self>(offset);
1949            let prim = decoder.read_num::<u8>(offset);
1950
1951            *self = Self::from_primitive_allow_unknown(prim);
1952            Ok(())
1953        }
1954    }
1955
1956    impl fidl::encoding::ValueTypeMarker for WlanFullmacChannelSwitchInfo {
1957        type Borrowed<'a> = &'a Self;
1958        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1959            value
1960        }
1961    }
1962
1963    unsafe impl fidl::encoding::TypeMarker for WlanFullmacChannelSwitchInfo {
1964        type Owned = Self;
1965
1966        #[inline(always)]
1967        fn inline_align(_context: fidl::encoding::Context) -> usize {
1968            4
1969        }
1970
1971        #[inline(always)]
1972        fn inline_size(_context: fidl::encoding::Context) -> usize {
1973            12
1974        }
1975    }
1976
1977    unsafe impl<D: fidl::encoding::ResourceDialect>
1978        fidl::encoding::Encode<WlanFullmacChannelSwitchInfo, D> for &WlanFullmacChannelSwitchInfo
1979    {
1980        #[inline]
1981        unsafe fn encode(
1982            self,
1983            encoder: &mut fidl::encoding::Encoder<'_, D>,
1984            offset: usize,
1985            _depth: fidl::encoding::Depth,
1986        ) -> fidl::Result<()> {
1987            encoder.debug_check_bounds::<WlanFullmacChannelSwitchInfo>(offset);
1988            // Delegate to tuple encoding.
1989            fidl::encoding::Encode::<WlanFullmacChannelSwitchInfo, D>::encode(
1990                (
1991                    <fidl_fuchsia_wlan_ieee80211_common::ChannelNumber as fidl::encoding::ValueTypeMarker>::borrow(&self.new_primary_channel),
1992                    <fidl_fuchsia_wlan_ieee80211_common::ChannelBandwidth as fidl::encoding::ValueTypeMarker>::borrow(&self.bandwidth),
1993                    <fidl_fuchsia_wlan_ieee80211_common::ChannelNumber as fidl::encoding::ValueTypeMarker>::borrow(&self.vht_secondary_80_channel),
1994                ),
1995                encoder, offset, _depth
1996            )
1997        }
1998    }
1999    unsafe impl<
2000        D: fidl::encoding::ResourceDialect,
2001        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, D>,
2002        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::ChannelBandwidth, D>,
2003        T2: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, D>,
2004    > fidl::encoding::Encode<WlanFullmacChannelSwitchInfo, D> for (T0, T1, T2)
2005    {
2006        #[inline]
2007        unsafe fn encode(
2008            self,
2009            encoder: &mut fidl::encoding::Encoder<'_, D>,
2010            offset: usize,
2011            depth: fidl::encoding::Depth,
2012        ) -> fidl::Result<()> {
2013            encoder.debug_check_bounds::<WlanFullmacChannelSwitchInfo>(offset);
2014            // Zero out padding regions. There's no need to apply masks
2015            // because the unmasked parts will be overwritten by fields.
2016            unsafe {
2017                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
2018                (ptr as *mut u32).write_unaligned(0);
2019            }
2020            unsafe {
2021                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
2022                (ptr as *mut u32).write_unaligned(0);
2023            }
2024            // Write the fields.
2025            self.0.encode(encoder, offset + 0, depth)?;
2026            self.1.encode(encoder, offset + 4, depth)?;
2027            self.2.encode(encoder, offset + 8, depth)?;
2028            Ok(())
2029        }
2030    }
2031
2032    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2033        for WlanFullmacChannelSwitchInfo
2034    {
2035        #[inline(always)]
2036        fn new_empty() -> Self {
2037            Self {
2038                new_primary_channel: fidl::new_empty!(
2039                    fidl_fuchsia_wlan_ieee80211_common::ChannelNumber,
2040                    D
2041                ),
2042                bandwidth: fidl::new_empty!(
2043                    fidl_fuchsia_wlan_ieee80211_common::ChannelBandwidth,
2044                    D
2045                ),
2046                vht_secondary_80_channel: fidl::new_empty!(
2047                    fidl_fuchsia_wlan_ieee80211_common::ChannelNumber,
2048                    D
2049                ),
2050            }
2051        }
2052
2053        #[inline]
2054        unsafe fn decode(
2055            &mut self,
2056            decoder: &mut fidl::encoding::Decoder<'_, D>,
2057            offset: usize,
2058            _depth: fidl::encoding::Depth,
2059        ) -> fidl::Result<()> {
2060            decoder.debug_check_bounds::<Self>(offset);
2061            // Verify that padding bytes are zero.
2062            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
2063            let padval = unsafe { (ptr as *const u32).read_unaligned() };
2064            let mask = 0xffff0000u32;
2065            let maskedval = padval & mask;
2066            if maskedval != 0 {
2067                return Err(fidl::Error::NonZeroPadding {
2068                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2069                });
2070            }
2071            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
2072            let padval = unsafe { (ptr as *const u32).read_unaligned() };
2073            let mask = 0xffff0000u32;
2074            let maskedval = padval & mask;
2075            if maskedval != 0 {
2076                return Err(fidl::Error::NonZeroPadding {
2077                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
2078                });
2079            }
2080            fidl::decode!(
2081                fidl_fuchsia_wlan_ieee80211_common::ChannelNumber,
2082                D,
2083                &mut self.new_primary_channel,
2084                decoder,
2085                offset + 0,
2086                _depth
2087            )?;
2088            fidl::decode!(
2089                fidl_fuchsia_wlan_ieee80211_common::ChannelBandwidth,
2090                D,
2091                &mut self.bandwidth,
2092                decoder,
2093                offset + 4,
2094                _depth
2095            )?;
2096            fidl::decode!(
2097                fidl_fuchsia_wlan_ieee80211_common::ChannelNumber,
2098                D,
2099                &mut self.vht_secondary_80_channel,
2100                decoder,
2101                offset + 8,
2102                _depth
2103            )?;
2104            Ok(())
2105        }
2106    }
2107
2108    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnChannelSwitchRequest {
2109        type Borrowed<'a> = &'a Self;
2110        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2111            value
2112        }
2113    }
2114
2115    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcOnChannelSwitchRequest {
2116        type Owned = Self;
2117
2118        #[inline(always)]
2119        fn inline_align(_context: fidl::encoding::Context) -> usize {
2120            4
2121        }
2122
2123        #[inline(always)]
2124        fn inline_size(_context: fidl::encoding::Context) -> usize {
2125            12
2126        }
2127    }
2128
2129    unsafe impl<D: fidl::encoding::ResourceDialect>
2130        fidl::encoding::Encode<WlanFullmacImplIfcOnChannelSwitchRequest, D>
2131        for &WlanFullmacImplIfcOnChannelSwitchRequest
2132    {
2133        #[inline]
2134        unsafe fn encode(
2135            self,
2136            encoder: &mut fidl::encoding::Encoder<'_, D>,
2137            offset: usize,
2138            _depth: fidl::encoding::Depth,
2139        ) -> fidl::Result<()> {
2140            encoder.debug_check_bounds::<WlanFullmacImplIfcOnChannelSwitchRequest>(offset);
2141            // Delegate to tuple encoding.
2142            fidl::encoding::Encode::<WlanFullmacImplIfcOnChannelSwitchRequest, D>::encode(
2143                (<WlanFullmacChannelSwitchInfo as fidl::encoding::ValueTypeMarker>::borrow(
2144                    &self.ind,
2145                ),),
2146                encoder,
2147                offset,
2148                _depth,
2149            )
2150        }
2151    }
2152    unsafe impl<
2153        D: fidl::encoding::ResourceDialect,
2154        T0: fidl::encoding::Encode<WlanFullmacChannelSwitchInfo, D>,
2155    > fidl::encoding::Encode<WlanFullmacImplIfcOnChannelSwitchRequest, D> for (T0,)
2156    {
2157        #[inline]
2158        unsafe fn encode(
2159            self,
2160            encoder: &mut fidl::encoding::Encoder<'_, D>,
2161            offset: usize,
2162            depth: fidl::encoding::Depth,
2163        ) -> fidl::Result<()> {
2164            encoder.debug_check_bounds::<WlanFullmacImplIfcOnChannelSwitchRequest>(offset);
2165            // Zero out padding regions. There's no need to apply masks
2166            // because the unmasked parts will be overwritten by fields.
2167            // Write the fields.
2168            self.0.encode(encoder, offset + 0, depth)?;
2169            Ok(())
2170        }
2171    }
2172
2173    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2174        for WlanFullmacImplIfcOnChannelSwitchRequest
2175    {
2176        #[inline(always)]
2177        fn new_empty() -> Self {
2178            Self { ind: fidl::new_empty!(WlanFullmacChannelSwitchInfo, D) }
2179        }
2180
2181        #[inline]
2182        unsafe fn decode(
2183            &mut self,
2184            decoder: &mut fidl::encoding::Decoder<'_, D>,
2185            offset: usize,
2186            _depth: fidl::encoding::Depth,
2187        ) -> fidl::Result<()> {
2188            decoder.debug_check_bounds::<Self>(offset);
2189            // Verify that padding bytes are zero.
2190            fidl::decode!(
2191                WlanFullmacChannelSwitchInfo,
2192                D,
2193                &mut self.ind,
2194                decoder,
2195                offset + 0,
2196                _depth
2197            )?;
2198            Ok(())
2199        }
2200    }
2201
2202    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnWmmStatusRespRequest {
2203        type Borrowed<'a> = &'a Self;
2204        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2205            value
2206        }
2207    }
2208
2209    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcOnWmmStatusRespRequest {
2210        type Owned = Self;
2211
2212        #[inline(always)]
2213        fn inline_align(_context: fidl::encoding::Context) -> usize {
2214            4
2215        }
2216
2217        #[inline(always)]
2218        fn inline_size(_context: fidl::encoding::Context) -> usize {
2219            40
2220        }
2221    }
2222
2223    unsafe impl<D: fidl::encoding::ResourceDialect>
2224        fidl::encoding::Encode<WlanFullmacImplIfcOnWmmStatusRespRequest, D>
2225        for &WlanFullmacImplIfcOnWmmStatusRespRequest
2226    {
2227        #[inline]
2228        unsafe fn encode(
2229            self,
2230            encoder: &mut fidl::encoding::Encoder<'_, D>,
2231            offset: usize,
2232            _depth: fidl::encoding::Depth,
2233        ) -> fidl::Result<()> {
2234            encoder.debug_check_bounds::<WlanFullmacImplIfcOnWmmStatusRespRequest>(offset);
2235            // Delegate to tuple encoding.
2236            fidl::encoding::Encode::<WlanFullmacImplIfcOnWmmStatusRespRequest, D>::encode(
2237                (
2238                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(&self.status),
2239                    <fidl_fuchsia_wlan_driver_common::WlanWmmParameters as fidl::encoding::ValueTypeMarker>::borrow(&self.wmm_params),
2240                ),
2241                encoder, offset, _depth
2242            )
2243        }
2244    }
2245    unsafe impl<
2246        D: fidl::encoding::ResourceDialect,
2247        T0: fidl::encoding::Encode<i32, D>,
2248        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_driver_common::WlanWmmParameters, D>,
2249    > fidl::encoding::Encode<WlanFullmacImplIfcOnWmmStatusRespRequest, D> for (T0, T1)
2250    {
2251        #[inline]
2252        unsafe fn encode(
2253            self,
2254            encoder: &mut fidl::encoding::Encoder<'_, D>,
2255            offset: usize,
2256            depth: fidl::encoding::Depth,
2257        ) -> fidl::Result<()> {
2258            encoder.debug_check_bounds::<WlanFullmacImplIfcOnWmmStatusRespRequest>(offset);
2259            // Zero out padding regions. There's no need to apply masks
2260            // because the unmasked parts will be overwritten by fields.
2261            unsafe {
2262                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(36);
2263                (ptr as *mut u32).write_unaligned(0);
2264            }
2265            // Write the fields.
2266            self.0.encode(encoder, offset + 0, depth)?;
2267            self.1.encode(encoder, offset + 4, depth)?;
2268            Ok(())
2269        }
2270    }
2271
2272    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2273        for WlanFullmacImplIfcOnWmmStatusRespRequest
2274    {
2275        #[inline(always)]
2276        fn new_empty() -> Self {
2277            Self {
2278                status: fidl::new_empty!(i32, D),
2279                wmm_params: fidl::new_empty!(fidl_fuchsia_wlan_driver_common::WlanWmmParameters, D),
2280            }
2281        }
2282
2283        #[inline]
2284        unsafe fn decode(
2285            &mut self,
2286            decoder: &mut fidl::encoding::Decoder<'_, D>,
2287            offset: usize,
2288            _depth: fidl::encoding::Depth,
2289        ) -> fidl::Result<()> {
2290            decoder.debug_check_bounds::<Self>(offset);
2291            // Verify that padding bytes are zero.
2292            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(36) };
2293            let padval = unsafe { (ptr as *const u32).read_unaligned() };
2294            let mask = 0xffff0000u32;
2295            let maskedval = padval & mask;
2296            if maskedval != 0 {
2297                return Err(fidl::Error::NonZeroPadding {
2298                    padding_start: offset + 36 + ((mask as u64).trailing_zeros() / 8) as usize,
2299                });
2300            }
2301            fidl::decode!(i32, D, &mut self.status, decoder, offset + 0, _depth)?;
2302            fidl::decode!(
2303                fidl_fuchsia_wlan_driver_common::WlanWmmParameters,
2304                D,
2305                &mut self.wmm_params,
2306                decoder,
2307                offset + 4,
2308                _depth
2309            )?;
2310            Ok(())
2311        }
2312    }
2313
2314    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcSaeFrameRxRequest {
2315        type Borrowed<'a> = &'a Self;
2316        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2317            value
2318        }
2319    }
2320
2321    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcSaeFrameRxRequest {
2322        type Owned = Self;
2323
2324        #[inline(always)]
2325        fn inline_align(_context: fidl::encoding::Context) -> usize {
2326            8
2327        }
2328
2329        #[inline(always)]
2330        fn inline_size(_context: fidl::encoding::Context) -> usize {
2331            16
2332        }
2333    }
2334
2335    unsafe impl<D: fidl::encoding::ResourceDialect>
2336        fidl::encoding::Encode<WlanFullmacImplIfcSaeFrameRxRequest, D>
2337        for &WlanFullmacImplIfcSaeFrameRxRequest
2338    {
2339        #[inline]
2340        unsafe fn encode(
2341            self,
2342            encoder: &mut fidl::encoding::Encoder<'_, D>,
2343            offset: usize,
2344            _depth: fidl::encoding::Depth,
2345        ) -> fidl::Result<()> {
2346            encoder.debug_check_bounds::<WlanFullmacImplIfcSaeFrameRxRequest>(offset);
2347            // Delegate to tuple encoding.
2348            fidl::encoding::Encode::<WlanFullmacImplIfcSaeFrameRxRequest, D>::encode(
2349                (<SaeFrame as fidl::encoding::ValueTypeMarker>::borrow(&self.frame),),
2350                encoder,
2351                offset,
2352                _depth,
2353            )
2354        }
2355    }
2356    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SaeFrame, D>>
2357        fidl::encoding::Encode<WlanFullmacImplIfcSaeFrameRxRequest, D> for (T0,)
2358    {
2359        #[inline]
2360        unsafe fn encode(
2361            self,
2362            encoder: &mut fidl::encoding::Encoder<'_, D>,
2363            offset: usize,
2364            depth: fidl::encoding::Depth,
2365        ) -> fidl::Result<()> {
2366            encoder.debug_check_bounds::<WlanFullmacImplIfcSaeFrameRxRequest>(offset);
2367            // Zero out padding regions. There's no need to apply masks
2368            // because the unmasked parts will be overwritten by fields.
2369            // Write the fields.
2370            self.0.encode(encoder, offset + 0, depth)?;
2371            Ok(())
2372        }
2373    }
2374
2375    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2376        for WlanFullmacImplIfcSaeFrameRxRequest
2377    {
2378        #[inline(always)]
2379        fn new_empty() -> Self {
2380            Self { frame: fidl::new_empty!(SaeFrame, D) }
2381        }
2382
2383        #[inline]
2384        unsafe fn decode(
2385            &mut self,
2386            decoder: &mut fidl::encoding::Decoder<'_, D>,
2387            offset: usize,
2388            _depth: fidl::encoding::Depth,
2389        ) -> fidl::Result<()> {
2390            decoder.debug_check_bounds::<Self>(offset);
2391            // Verify that padding bytes are zero.
2392            fidl::decode!(SaeFrame, D, &mut self.frame, decoder, offset + 0, _depth)?;
2393            Ok(())
2394        }
2395    }
2396
2397    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcSignalReportRequest {
2398        type Borrowed<'a> = &'a Self;
2399        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2400            value
2401        }
2402    }
2403
2404    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcSignalReportRequest {
2405        type Owned = Self;
2406
2407        #[inline(always)]
2408        fn inline_align(_context: fidl::encoding::Context) -> usize {
2409            4
2410        }
2411
2412        #[inline(always)]
2413        fn inline_size(_context: fidl::encoding::Context) -> usize {
2414            8
2415        }
2416    }
2417
2418    unsafe impl<D: fidl::encoding::ResourceDialect>
2419        fidl::encoding::Encode<WlanFullmacImplIfcSignalReportRequest, D>
2420        for &WlanFullmacImplIfcSignalReportRequest
2421    {
2422        #[inline]
2423        unsafe fn encode(
2424            self,
2425            encoder: &mut fidl::encoding::Encoder<'_, D>,
2426            offset: usize,
2427            _depth: fidl::encoding::Depth,
2428        ) -> fidl::Result<()> {
2429            encoder.debug_check_bounds::<WlanFullmacImplIfcSignalReportRequest>(offset);
2430            unsafe {
2431                // Copy the object into the buffer.
2432                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2433                (buf_ptr as *mut WlanFullmacImplIfcSignalReportRequest)
2434                    .write_unaligned((self as *const WlanFullmacImplIfcSignalReportRequest).read());
2435                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
2436                // done second because the memcpy will write garbage to these bytes.
2437                let padding_ptr = buf_ptr.offset(0) as *mut u32;
2438                let padding_mask = 0xffff0000u32;
2439                padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
2440            }
2441            Ok(())
2442        }
2443    }
2444    unsafe impl<
2445        D: fidl::encoding::ResourceDialect,
2446        T0: fidl::encoding::Encode<WlanFullmacSignalReportIndication, D>,
2447    > fidl::encoding::Encode<WlanFullmacImplIfcSignalReportRequest, D> for (T0,)
2448    {
2449        #[inline]
2450        unsafe fn encode(
2451            self,
2452            encoder: &mut fidl::encoding::Encoder<'_, D>,
2453            offset: usize,
2454            depth: fidl::encoding::Depth,
2455        ) -> fidl::Result<()> {
2456            encoder.debug_check_bounds::<WlanFullmacImplIfcSignalReportRequest>(offset);
2457            // Zero out padding regions. There's no need to apply masks
2458            // because the unmasked parts will be overwritten by fields.
2459            // Write the fields.
2460            self.0.encode(encoder, offset + 0, depth)?;
2461            Ok(())
2462        }
2463    }
2464
2465    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2466        for WlanFullmacImplIfcSignalReportRequest
2467    {
2468        #[inline(always)]
2469        fn new_empty() -> Self {
2470            Self { ind: fidl::new_empty!(WlanFullmacSignalReportIndication, D) }
2471        }
2472
2473        #[inline]
2474        unsafe fn decode(
2475            &mut self,
2476            decoder: &mut fidl::encoding::Decoder<'_, D>,
2477            offset: usize,
2478            _depth: fidl::encoding::Depth,
2479        ) -> fidl::Result<()> {
2480            decoder.debug_check_bounds::<Self>(offset);
2481            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2482            // Verify that padding bytes are zero.
2483            let ptr = unsafe { buf_ptr.offset(0) };
2484            let padval = unsafe { (ptr as *const u32).read_unaligned() };
2485            let mask = 0xffff0000u32;
2486            let maskedval = padval & mask;
2487            if maskedval != 0 {
2488                return Err(fidl::Error::NonZeroPadding {
2489                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2490                });
2491            }
2492            // Copy from the buffer into the object.
2493            unsafe {
2494                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
2495            }
2496            Ok(())
2497        }
2498    }
2499
2500    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSaeFrameTxRequest {
2501        type Borrowed<'a> = &'a Self;
2502        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2503            value
2504        }
2505    }
2506
2507    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSaeFrameTxRequest {
2508        type Owned = Self;
2509
2510        #[inline(always)]
2511        fn inline_align(_context: fidl::encoding::Context) -> usize {
2512            8
2513        }
2514
2515        #[inline(always)]
2516        fn inline_size(_context: fidl::encoding::Context) -> usize {
2517            16
2518        }
2519    }
2520
2521    unsafe impl<D: fidl::encoding::ResourceDialect>
2522        fidl::encoding::Encode<WlanFullmacImplSaeFrameTxRequest, D>
2523        for &WlanFullmacImplSaeFrameTxRequest
2524    {
2525        #[inline]
2526        unsafe fn encode(
2527            self,
2528            encoder: &mut fidl::encoding::Encoder<'_, D>,
2529            offset: usize,
2530            _depth: fidl::encoding::Depth,
2531        ) -> fidl::Result<()> {
2532            encoder.debug_check_bounds::<WlanFullmacImplSaeFrameTxRequest>(offset);
2533            // Delegate to tuple encoding.
2534            fidl::encoding::Encode::<WlanFullmacImplSaeFrameTxRequest, D>::encode(
2535                (<SaeFrame as fidl::encoding::ValueTypeMarker>::borrow(&self.frame),),
2536                encoder,
2537                offset,
2538                _depth,
2539            )
2540        }
2541    }
2542    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SaeFrame, D>>
2543        fidl::encoding::Encode<WlanFullmacImplSaeFrameTxRequest, D> for (T0,)
2544    {
2545        #[inline]
2546        unsafe fn encode(
2547            self,
2548            encoder: &mut fidl::encoding::Encoder<'_, D>,
2549            offset: usize,
2550            depth: fidl::encoding::Depth,
2551        ) -> fidl::Result<()> {
2552            encoder.debug_check_bounds::<WlanFullmacImplSaeFrameTxRequest>(offset);
2553            // Zero out padding regions. There's no need to apply masks
2554            // because the unmasked parts will be overwritten by fields.
2555            // Write the fields.
2556            self.0.encode(encoder, offset + 0, depth)?;
2557            Ok(())
2558        }
2559    }
2560
2561    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2562        for WlanFullmacImplSaeFrameTxRequest
2563    {
2564        #[inline(always)]
2565        fn new_empty() -> Self {
2566            Self { frame: fidl::new_empty!(SaeFrame, D) }
2567        }
2568
2569        #[inline]
2570        unsafe fn decode(
2571            &mut self,
2572            decoder: &mut fidl::encoding::Decoder<'_, D>,
2573            offset: usize,
2574            _depth: fidl::encoding::Depth,
2575        ) -> fidl::Result<()> {
2576            decoder.debug_check_bounds::<Self>(offset);
2577            // Verify that padding bytes are zero.
2578            fidl::decode!(SaeFrame, D, &mut self.frame, decoder, offset + 0, _depth)?;
2579            Ok(())
2580        }
2581    }
2582
2583    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSetKeysResponse {
2584        type Borrowed<'a> = &'a Self;
2585        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2586            value
2587        }
2588    }
2589
2590    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSetKeysResponse {
2591        type Owned = Self;
2592
2593        #[inline(always)]
2594        fn inline_align(_context: fidl::encoding::Context) -> usize {
2595            8
2596        }
2597
2598        #[inline(always)]
2599        fn inline_size(_context: fidl::encoding::Context) -> usize {
2600            16
2601        }
2602    }
2603
2604    unsafe impl<D: fidl::encoding::ResourceDialect>
2605        fidl::encoding::Encode<WlanFullmacImplSetKeysResponse, D>
2606        for &WlanFullmacImplSetKeysResponse
2607    {
2608        #[inline]
2609        unsafe fn encode(
2610            self,
2611            encoder: &mut fidl::encoding::Encoder<'_, D>,
2612            offset: usize,
2613            _depth: fidl::encoding::Depth,
2614        ) -> fidl::Result<()> {
2615            encoder.debug_check_bounds::<WlanFullmacImplSetKeysResponse>(offset);
2616            // Delegate to tuple encoding.
2617            fidl::encoding::Encode::<WlanFullmacImplSetKeysResponse, D>::encode(
2618                (<WlanFullmacSetKeysResp as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
2619                encoder,
2620                offset,
2621                _depth,
2622            )
2623        }
2624    }
2625    unsafe impl<
2626        D: fidl::encoding::ResourceDialect,
2627        T0: fidl::encoding::Encode<WlanFullmacSetKeysResp, D>,
2628    > fidl::encoding::Encode<WlanFullmacImplSetKeysResponse, D> for (T0,)
2629    {
2630        #[inline]
2631        unsafe fn encode(
2632            self,
2633            encoder: &mut fidl::encoding::Encoder<'_, D>,
2634            offset: usize,
2635            depth: fidl::encoding::Depth,
2636        ) -> fidl::Result<()> {
2637            encoder.debug_check_bounds::<WlanFullmacImplSetKeysResponse>(offset);
2638            // Zero out padding regions. There's no need to apply masks
2639            // because the unmasked parts will be overwritten by fields.
2640            // Write the fields.
2641            self.0.encode(encoder, offset + 0, depth)?;
2642            Ok(())
2643        }
2644    }
2645
2646    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2647        for WlanFullmacImplSetKeysResponse
2648    {
2649        #[inline(always)]
2650        fn new_empty() -> Self {
2651            Self { resp: fidl::new_empty!(WlanFullmacSetKeysResp, D) }
2652        }
2653
2654        #[inline]
2655        unsafe fn decode(
2656            &mut self,
2657            decoder: &mut fidl::encoding::Decoder<'_, D>,
2658            offset: usize,
2659            _depth: fidl::encoding::Depth,
2660        ) -> fidl::Result<()> {
2661            decoder.debug_check_bounds::<Self>(offset);
2662            // Verify that padding bytes are zero.
2663            fidl::decode!(WlanFullmacSetKeysResp, D, &mut self.resp, decoder, offset + 0, _depth)?;
2664            Ok(())
2665        }
2666    }
2667
2668    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSetMacAddressRequest {
2669        type Borrowed<'a> = &'a Self;
2670        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2671            value
2672        }
2673    }
2674
2675    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSetMacAddressRequest {
2676        type Owned = Self;
2677
2678        #[inline(always)]
2679        fn inline_align(_context: fidl::encoding::Context) -> usize {
2680            1
2681        }
2682
2683        #[inline(always)]
2684        fn inline_size(_context: fidl::encoding::Context) -> usize {
2685            6
2686        }
2687        #[inline(always)]
2688        fn encode_is_copy() -> bool {
2689            true
2690        }
2691
2692        #[inline(always)]
2693        fn decode_is_copy() -> bool {
2694            true
2695        }
2696    }
2697
2698    unsafe impl<D: fidl::encoding::ResourceDialect>
2699        fidl::encoding::Encode<WlanFullmacImplSetMacAddressRequest, D>
2700        for &WlanFullmacImplSetMacAddressRequest
2701    {
2702        #[inline]
2703        unsafe fn encode(
2704            self,
2705            encoder: &mut fidl::encoding::Encoder<'_, D>,
2706            offset: usize,
2707            _depth: fidl::encoding::Depth,
2708        ) -> fidl::Result<()> {
2709            encoder.debug_check_bounds::<WlanFullmacImplSetMacAddressRequest>(offset);
2710            unsafe {
2711                // Copy the object into the buffer.
2712                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2713                (buf_ptr as *mut WlanFullmacImplSetMacAddressRequest)
2714                    .write_unaligned((self as *const WlanFullmacImplSetMacAddressRequest).read());
2715                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
2716                // done second because the memcpy will write garbage to these bytes.
2717            }
2718            Ok(())
2719        }
2720    }
2721    unsafe impl<
2722        D: fidl::encoding::ResourceDialect,
2723        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2724    > fidl::encoding::Encode<WlanFullmacImplSetMacAddressRequest, D> for (T0,)
2725    {
2726        #[inline]
2727        unsafe fn encode(
2728            self,
2729            encoder: &mut fidl::encoding::Encoder<'_, D>,
2730            offset: usize,
2731            depth: fidl::encoding::Depth,
2732        ) -> fidl::Result<()> {
2733            encoder.debug_check_bounds::<WlanFullmacImplSetMacAddressRequest>(offset);
2734            // Zero out padding regions. There's no need to apply masks
2735            // because the unmasked parts will be overwritten by fields.
2736            // Write the fields.
2737            self.0.encode(encoder, offset + 0, depth)?;
2738            Ok(())
2739        }
2740    }
2741
2742    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2743        for WlanFullmacImplSetMacAddressRequest
2744    {
2745        #[inline(always)]
2746        fn new_empty() -> Self {
2747            Self { mac_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
2748        }
2749
2750        #[inline]
2751        unsafe fn decode(
2752            &mut self,
2753            decoder: &mut fidl::encoding::Decoder<'_, D>,
2754            offset: usize,
2755            _depth: fidl::encoding::Depth,
2756        ) -> fidl::Result<()> {
2757            decoder.debug_check_bounds::<Self>(offset);
2758            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2759            // Verify that padding bytes are zero.
2760            // Copy from the buffer into the object.
2761            unsafe {
2762                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
2763            }
2764            Ok(())
2765        }
2766    }
2767
2768    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplGetIfaceHistogramStatsResponse {
2769        type Borrowed<'a> = &'a Self;
2770        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2771            value
2772        }
2773    }
2774
2775    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplGetIfaceHistogramStatsResponse {
2776        type Owned = Self;
2777
2778        #[inline(always)]
2779        fn inline_align(_context: fidl::encoding::Context) -> usize {
2780            8
2781        }
2782
2783        #[inline(always)]
2784        fn inline_size(_context: fidl::encoding::Context) -> usize {
2785            16
2786        }
2787    }
2788
2789    unsafe impl<D: fidl::encoding::ResourceDialect>
2790        fidl::encoding::Encode<WlanFullmacImplGetIfaceHistogramStatsResponse, D>
2791        for &WlanFullmacImplGetIfaceHistogramStatsResponse
2792    {
2793        #[inline]
2794        unsafe fn encode(
2795            self,
2796            encoder: &mut fidl::encoding::Encoder<'_, D>,
2797            offset: usize,
2798            _depth: fidl::encoding::Depth,
2799        ) -> fidl::Result<()> {
2800            encoder.debug_check_bounds::<WlanFullmacImplGetIfaceHistogramStatsResponse>(offset);
2801            // Delegate to tuple encoding.
2802            fidl::encoding::Encode::<WlanFullmacImplGetIfaceHistogramStatsResponse, D>::encode(
2803                (
2804                    <fidl_fuchsia_wlan_stats_common::IfaceHistogramStats as fidl::encoding::ValueTypeMarker>::borrow(&self.stats),
2805                ),
2806                encoder, offset, _depth
2807            )
2808        }
2809    }
2810    unsafe impl<
2811        D: fidl::encoding::ResourceDialect,
2812        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_stats_common::IfaceHistogramStats, D>,
2813    > fidl::encoding::Encode<WlanFullmacImplGetIfaceHistogramStatsResponse, D> for (T0,)
2814    {
2815        #[inline]
2816        unsafe fn encode(
2817            self,
2818            encoder: &mut fidl::encoding::Encoder<'_, D>,
2819            offset: usize,
2820            depth: fidl::encoding::Depth,
2821        ) -> fidl::Result<()> {
2822            encoder.debug_check_bounds::<WlanFullmacImplGetIfaceHistogramStatsResponse>(offset);
2823            // Zero out padding regions. There's no need to apply masks
2824            // because the unmasked parts will be overwritten by fields.
2825            // Write the fields.
2826            self.0.encode(encoder, offset + 0, depth)?;
2827            Ok(())
2828        }
2829    }
2830
2831    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2832        for WlanFullmacImplGetIfaceHistogramStatsResponse
2833    {
2834        #[inline(always)]
2835        fn new_empty() -> Self {
2836            Self { stats: fidl::new_empty!(fidl_fuchsia_wlan_stats_common::IfaceHistogramStats, D) }
2837        }
2838
2839        #[inline]
2840        unsafe fn decode(
2841            &mut self,
2842            decoder: &mut fidl::encoding::Decoder<'_, D>,
2843            offset: usize,
2844            _depth: fidl::encoding::Depth,
2845        ) -> fidl::Result<()> {
2846            decoder.debug_check_bounds::<Self>(offset);
2847            // Verify that padding bytes are zero.
2848            fidl::decode!(
2849                fidl_fuchsia_wlan_stats_common::IfaceHistogramStats,
2850                D,
2851                &mut self.stats,
2852                decoder,
2853                offset + 0,
2854                _depth
2855            )?;
2856            Ok(())
2857        }
2858    }
2859
2860    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplGetIfaceStatsResponse {
2861        type Borrowed<'a> = &'a Self;
2862        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2863            value
2864        }
2865    }
2866
2867    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplGetIfaceStatsResponse {
2868        type Owned = Self;
2869
2870        #[inline(always)]
2871        fn inline_align(_context: fidl::encoding::Context) -> usize {
2872            8
2873        }
2874
2875        #[inline(always)]
2876        fn inline_size(_context: fidl::encoding::Context) -> usize {
2877            16
2878        }
2879    }
2880
2881    unsafe impl<D: fidl::encoding::ResourceDialect>
2882        fidl::encoding::Encode<WlanFullmacImplGetIfaceStatsResponse, D>
2883        for &WlanFullmacImplGetIfaceStatsResponse
2884    {
2885        #[inline]
2886        unsafe fn encode(
2887            self,
2888            encoder: &mut fidl::encoding::Encoder<'_, D>,
2889            offset: usize,
2890            _depth: fidl::encoding::Depth,
2891        ) -> fidl::Result<()> {
2892            encoder.debug_check_bounds::<WlanFullmacImplGetIfaceStatsResponse>(offset);
2893            // Delegate to tuple encoding.
2894            fidl::encoding::Encode::<WlanFullmacImplGetIfaceStatsResponse, D>::encode(
2895                (
2896                    <fidl_fuchsia_wlan_stats_common::IfaceStats as fidl::encoding::ValueTypeMarker>::borrow(&self.stats),
2897                ),
2898                encoder, offset, _depth
2899            )
2900        }
2901    }
2902    unsafe impl<
2903        D: fidl::encoding::ResourceDialect,
2904        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_stats_common::IfaceStats, D>,
2905    > fidl::encoding::Encode<WlanFullmacImplGetIfaceStatsResponse, D> for (T0,)
2906    {
2907        #[inline]
2908        unsafe fn encode(
2909            self,
2910            encoder: &mut fidl::encoding::Encoder<'_, D>,
2911            offset: usize,
2912            depth: fidl::encoding::Depth,
2913        ) -> fidl::Result<()> {
2914            encoder.debug_check_bounds::<WlanFullmacImplGetIfaceStatsResponse>(offset);
2915            // Zero out padding regions. There's no need to apply masks
2916            // because the unmasked parts will be overwritten by fields.
2917            // Write the fields.
2918            self.0.encode(encoder, offset + 0, depth)?;
2919            Ok(())
2920        }
2921    }
2922
2923    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2924        for WlanFullmacImplGetIfaceStatsResponse
2925    {
2926        #[inline(always)]
2927        fn new_empty() -> Self {
2928            Self { stats: fidl::new_empty!(fidl_fuchsia_wlan_stats_common::IfaceStats, D) }
2929        }
2930
2931        #[inline]
2932        unsafe fn decode(
2933            &mut self,
2934            decoder: &mut fidl::encoding::Decoder<'_, D>,
2935            offset: usize,
2936            _depth: fidl::encoding::Depth,
2937        ) -> fidl::Result<()> {
2938            decoder.debug_check_bounds::<Self>(offset);
2939            // Verify that padding bytes are zero.
2940            fidl::decode!(
2941                fidl_fuchsia_wlan_stats_common::IfaceStats,
2942                D,
2943                &mut self.stats,
2944                decoder,
2945                offset + 0,
2946                _depth
2947            )?;
2948            Ok(())
2949        }
2950    }
2951
2952    impl fidl::encoding::ValueTypeMarker for WlanFullmacRssiStats {
2953        type Borrowed<'a> = &'a Self;
2954        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2955            value
2956        }
2957    }
2958
2959    unsafe impl fidl::encoding::TypeMarker for WlanFullmacRssiStats {
2960        type Owned = Self;
2961
2962        #[inline(always)]
2963        fn inline_align(_context: fidl::encoding::Context) -> usize {
2964            8
2965        }
2966
2967        #[inline(always)]
2968        fn inline_size(_context: fidl::encoding::Context) -> usize {
2969            16
2970        }
2971    }
2972
2973    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WlanFullmacRssiStats, D>
2974        for &WlanFullmacRssiStats
2975    {
2976        #[inline]
2977        unsafe fn encode(
2978            self,
2979            encoder: &mut fidl::encoding::Encoder<'_, D>,
2980            offset: usize,
2981            _depth: fidl::encoding::Depth,
2982        ) -> fidl::Result<()> {
2983            encoder.debug_check_bounds::<WlanFullmacRssiStats>(offset);
2984            // Delegate to tuple encoding.
2985            fidl::encoding::Encode::<WlanFullmacRssiStats, D>::encode(
2986                (
2987                    <fidl::encoding::UnboundedVector<u64> as fidl::encoding::ValueTypeMarker>::borrow(&self.hist),
2988                ),
2989                encoder, offset, _depth
2990            )
2991        }
2992    }
2993    unsafe impl<
2994        D: fidl::encoding::ResourceDialect,
2995        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u64>, D>,
2996    > fidl::encoding::Encode<WlanFullmacRssiStats, D> for (T0,)
2997    {
2998        #[inline]
2999        unsafe fn encode(
3000            self,
3001            encoder: &mut fidl::encoding::Encoder<'_, D>,
3002            offset: usize,
3003            depth: fidl::encoding::Depth,
3004        ) -> fidl::Result<()> {
3005            encoder.debug_check_bounds::<WlanFullmacRssiStats>(offset);
3006            // Zero out padding regions. There's no need to apply masks
3007            // because the unmasked parts will be overwritten by fields.
3008            // Write the fields.
3009            self.0.encode(encoder, offset + 0, depth)?;
3010            Ok(())
3011        }
3012    }
3013
3014    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanFullmacRssiStats {
3015        #[inline(always)]
3016        fn new_empty() -> Self {
3017            Self { hist: fidl::new_empty!(fidl::encoding::UnboundedVector<u64>, D) }
3018        }
3019
3020        #[inline]
3021        unsafe fn decode(
3022            &mut self,
3023            decoder: &mut fidl::encoding::Decoder<'_, D>,
3024            offset: usize,
3025            _depth: fidl::encoding::Depth,
3026        ) -> fidl::Result<()> {
3027            decoder.debug_check_bounds::<Self>(offset);
3028            // Verify that padding bytes are zero.
3029            fidl::decode!(
3030                fidl::encoding::UnboundedVector<u64>,
3031                D,
3032                &mut self.hist,
3033                decoder,
3034                offset + 0,
3035                _depth
3036            )?;
3037            Ok(())
3038        }
3039    }
3040
3041    impl fidl::encoding::ValueTypeMarker for WlanFullmacSetKeysResp {
3042        type Borrowed<'a> = &'a Self;
3043        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3044            value
3045        }
3046    }
3047
3048    unsafe impl fidl::encoding::TypeMarker for WlanFullmacSetKeysResp {
3049        type Owned = Self;
3050
3051        #[inline(always)]
3052        fn inline_align(_context: fidl::encoding::Context) -> usize {
3053            8
3054        }
3055
3056        #[inline(always)]
3057        fn inline_size(_context: fidl::encoding::Context) -> usize {
3058            16
3059        }
3060    }
3061
3062    unsafe impl<D: fidl::encoding::ResourceDialect>
3063        fidl::encoding::Encode<WlanFullmacSetKeysResp, D> for &WlanFullmacSetKeysResp
3064    {
3065        #[inline]
3066        unsafe fn encode(
3067            self,
3068            encoder: &mut fidl::encoding::Encoder<'_, D>,
3069            offset: usize,
3070            _depth: fidl::encoding::Depth,
3071        ) -> fidl::Result<()> {
3072            encoder.debug_check_bounds::<WlanFullmacSetKeysResp>(offset);
3073            // Delegate to tuple encoding.
3074            fidl::encoding::Encode::<WlanFullmacSetKeysResp, D>::encode(
3075                (<fidl::encoding::Vector<i32, 4> as fidl::encoding::ValueTypeMarker>::borrow(
3076                    &self.statuslist,
3077                ),),
3078                encoder,
3079                offset,
3080                _depth,
3081            )
3082        }
3083    }
3084    unsafe impl<
3085        D: fidl::encoding::ResourceDialect,
3086        T0: fidl::encoding::Encode<fidl::encoding::Vector<i32, 4>, D>,
3087    > fidl::encoding::Encode<WlanFullmacSetKeysResp, D> for (T0,)
3088    {
3089        #[inline]
3090        unsafe fn encode(
3091            self,
3092            encoder: &mut fidl::encoding::Encoder<'_, D>,
3093            offset: usize,
3094            depth: fidl::encoding::Depth,
3095        ) -> fidl::Result<()> {
3096            encoder.debug_check_bounds::<WlanFullmacSetKeysResp>(offset);
3097            // Zero out padding regions. There's no need to apply masks
3098            // because the unmasked parts will be overwritten by fields.
3099            // Write the fields.
3100            self.0.encode(encoder, offset + 0, depth)?;
3101            Ok(())
3102        }
3103    }
3104
3105    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3106        for WlanFullmacSetKeysResp
3107    {
3108        #[inline(always)]
3109        fn new_empty() -> Self {
3110            Self { statuslist: fidl::new_empty!(fidl::encoding::Vector<i32, 4>, D) }
3111        }
3112
3113        #[inline]
3114        unsafe fn decode(
3115            &mut self,
3116            decoder: &mut fidl::encoding::Decoder<'_, D>,
3117            offset: usize,
3118            _depth: fidl::encoding::Depth,
3119        ) -> fidl::Result<()> {
3120            decoder.debug_check_bounds::<Self>(offset);
3121            // Verify that padding bytes are zero.
3122            fidl::decode!(fidl::encoding::Vector<i32, 4>, D, &mut self.statuslist, decoder, offset + 0, _depth)?;
3123            Ok(())
3124        }
3125    }
3126
3127    impl fidl::encoding::ValueTypeMarker for WlanFullmacSignalReportIndication {
3128        type Borrowed<'a> = &'a Self;
3129        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3130            value
3131        }
3132    }
3133
3134    unsafe impl fidl::encoding::TypeMarker for WlanFullmacSignalReportIndication {
3135        type Owned = Self;
3136
3137        #[inline(always)]
3138        fn inline_align(_context: fidl::encoding::Context) -> usize {
3139            4
3140        }
3141
3142        #[inline(always)]
3143        fn inline_size(_context: fidl::encoding::Context) -> usize {
3144            8
3145        }
3146    }
3147
3148    unsafe impl<D: fidl::encoding::ResourceDialect>
3149        fidl::encoding::Encode<WlanFullmacSignalReportIndication, D>
3150        for &WlanFullmacSignalReportIndication
3151    {
3152        #[inline]
3153        unsafe fn encode(
3154            self,
3155            encoder: &mut fidl::encoding::Encoder<'_, D>,
3156            offset: usize,
3157            _depth: fidl::encoding::Depth,
3158        ) -> fidl::Result<()> {
3159            encoder.debug_check_bounds::<WlanFullmacSignalReportIndication>(offset);
3160            unsafe {
3161                // Copy the object into the buffer.
3162                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
3163                (buf_ptr as *mut WlanFullmacSignalReportIndication)
3164                    .write_unaligned((self as *const WlanFullmacSignalReportIndication).read());
3165                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
3166                // done second because the memcpy will write garbage to these bytes.
3167                let padding_ptr = buf_ptr.offset(0) as *mut u32;
3168                let padding_mask = 0xffff0000u32;
3169                padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
3170            }
3171            Ok(())
3172        }
3173    }
3174    unsafe impl<
3175        D: fidl::encoding::ResourceDialect,
3176        T0: fidl::encoding::Encode<i8, D>,
3177        T1: fidl::encoding::Encode<i8, D>,
3178        T2: fidl::encoding::Encode<u32, D>,
3179    > fidl::encoding::Encode<WlanFullmacSignalReportIndication, D> for (T0, T1, T2)
3180    {
3181        #[inline]
3182        unsafe fn encode(
3183            self,
3184            encoder: &mut fidl::encoding::Encoder<'_, D>,
3185            offset: usize,
3186            depth: fidl::encoding::Depth,
3187        ) -> fidl::Result<()> {
3188            encoder.debug_check_bounds::<WlanFullmacSignalReportIndication>(offset);
3189            // Zero out padding regions. There's no need to apply masks
3190            // because the unmasked parts will be overwritten by fields.
3191            unsafe {
3192                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
3193                (ptr as *mut u32).write_unaligned(0);
3194            }
3195            // Write the fields.
3196            self.0.encode(encoder, offset + 0, depth)?;
3197            self.1.encode(encoder, offset + 1, depth)?;
3198            self.2.encode(encoder, offset + 4, depth)?;
3199            Ok(())
3200        }
3201    }
3202
3203    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3204        for WlanFullmacSignalReportIndication
3205    {
3206        #[inline(always)]
3207        fn new_empty() -> Self {
3208            Self {
3209                rssi_dbm: fidl::new_empty!(i8, D),
3210                snr_db: fidl::new_empty!(i8, D),
3211                tx_rate_500kbps: fidl::new_empty!(u32, D),
3212            }
3213        }
3214
3215        #[inline]
3216        unsafe fn decode(
3217            &mut self,
3218            decoder: &mut fidl::encoding::Decoder<'_, D>,
3219            offset: usize,
3220            _depth: fidl::encoding::Depth,
3221        ) -> fidl::Result<()> {
3222            decoder.debug_check_bounds::<Self>(offset);
3223            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
3224            // Verify that padding bytes are zero.
3225            let ptr = unsafe { buf_ptr.offset(0) };
3226            let padval = unsafe { (ptr as *const u32).read_unaligned() };
3227            let mask = 0xffff0000u32;
3228            let maskedval = padval & mask;
3229            if maskedval != 0 {
3230                return Err(fidl::Error::NonZeroPadding {
3231                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
3232                });
3233            }
3234            // Copy from the buffer into the object.
3235            unsafe {
3236                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
3237            }
3238            Ok(())
3239        }
3240    }
3241
3242    impl BandCapability {
3243        #[inline(always)]
3244        fn max_ordinal_present(&self) -> u64 {
3245            if let Some(_) = self.primary_channels {
3246                return 5;
3247            }
3248            if let Some(_) = self.vht_caps {
3249                return 4;
3250            }
3251            if let Some(_) = self.ht_caps {
3252                return 3;
3253            }
3254            if let Some(_) = self.basic_rates {
3255                return 2;
3256            }
3257            if let Some(_) = self.band {
3258                return 1;
3259            }
3260            0
3261        }
3262    }
3263
3264    impl fidl::encoding::ValueTypeMarker for BandCapability {
3265        type Borrowed<'a> = &'a Self;
3266        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3267            value
3268        }
3269    }
3270
3271    unsafe impl fidl::encoding::TypeMarker for BandCapability {
3272        type Owned = Self;
3273
3274        #[inline(always)]
3275        fn inline_align(_context: fidl::encoding::Context) -> usize {
3276            8
3277        }
3278
3279        #[inline(always)]
3280        fn inline_size(_context: fidl::encoding::Context) -> usize {
3281            16
3282        }
3283    }
3284
3285    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BandCapability, D>
3286        for &BandCapability
3287    {
3288        unsafe fn encode(
3289            self,
3290            encoder: &mut fidl::encoding::Encoder<'_, D>,
3291            offset: usize,
3292            mut depth: fidl::encoding::Depth,
3293        ) -> fidl::Result<()> {
3294            encoder.debug_check_bounds::<BandCapability>(offset);
3295            // Vector header
3296            let max_ordinal: u64 = self.max_ordinal_present();
3297            encoder.write_num(max_ordinal, offset);
3298            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3299            // Calling encoder.out_of_line_offset(0) is not allowed.
3300            if max_ordinal == 0 {
3301                return Ok(());
3302            }
3303            depth.increment()?;
3304            let envelope_size = 8;
3305            let bytes_len = max_ordinal as usize * envelope_size;
3306            #[allow(unused_variables)]
3307            let offset = encoder.out_of_line_offset(bytes_len);
3308            let mut _prev_end_offset: usize = 0;
3309            if 1 > max_ordinal {
3310                return Ok(());
3311            }
3312
3313            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3314            // are envelope_size bytes.
3315            let cur_offset: usize = (1 - 1) * envelope_size;
3316
3317            // Zero reserved fields.
3318            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3319
3320            // Safety:
3321            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3322            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3323            //   envelope_size bytes, there is always sufficient room.
3324            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::WlanBand, D>(
3325            self.band.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::WlanBand as fidl::encoding::ValueTypeMarker>::borrow),
3326            encoder, offset + cur_offset, depth
3327        )?;
3328
3329            _prev_end_offset = cur_offset + envelope_size;
3330            if 2 > max_ordinal {
3331                return Ok(());
3332            }
3333
3334            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3335            // are envelope_size bytes.
3336            let cur_offset: usize = (2 - 1) * envelope_size;
3337
3338            // Zero reserved fields.
3339            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3340
3341            // Safety:
3342            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3343            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3344            //   envelope_size bytes, there is always sufficient room.
3345            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 12>, D>(
3346                self.basic_rates.as_ref().map(
3347                    <fidl::encoding::Vector<u8, 12> as fidl::encoding::ValueTypeMarker>::borrow,
3348                ),
3349                encoder,
3350                offset + cur_offset,
3351                depth,
3352            )?;
3353
3354            _prev_end_offset = cur_offset + envelope_size;
3355            if 3 > max_ordinal {
3356                return Ok(());
3357            }
3358
3359            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3360            // are envelope_size bytes.
3361            let cur_offset: usize = (3 - 1) * envelope_size;
3362
3363            // Zero reserved fields.
3364            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3365
3366            // Safety:
3367            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3368            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3369            //   envelope_size bytes, there is always sufficient room.
3370            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::HtCapabilities, D>(
3371            self.ht_caps.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::HtCapabilities as fidl::encoding::ValueTypeMarker>::borrow),
3372            encoder, offset + cur_offset, depth
3373        )?;
3374
3375            _prev_end_offset = cur_offset + envelope_size;
3376            if 4 > max_ordinal {
3377                return Ok(());
3378            }
3379
3380            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3381            // are envelope_size bytes.
3382            let cur_offset: usize = (4 - 1) * envelope_size;
3383
3384            // Zero reserved fields.
3385            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3386
3387            // Safety:
3388            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3389            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3390            //   envelope_size bytes, there is always sufficient room.
3391            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities, D>(
3392            self.vht_caps.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities as fidl::encoding::ValueTypeMarker>::borrow),
3393            encoder, offset + cur_offset, depth
3394        )?;
3395
3396            _prev_end_offset = cur_offset + envelope_size;
3397            if 5 > max_ordinal {
3398                return Ok(());
3399            }
3400
3401            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3402            // are envelope_size bytes.
3403            let cur_offset: usize = (5 - 1) * envelope_size;
3404
3405            // Zero reserved fields.
3406            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3407
3408            // Safety:
3409            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3410            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3411            //   envelope_size bytes, there is always sufficient room.
3412            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, 256>, D>(
3413            self.primary_channels.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, 256> as fidl::encoding::ValueTypeMarker>::borrow),
3414            encoder, offset + cur_offset, depth
3415        )?;
3416
3417            _prev_end_offset = cur_offset + envelope_size;
3418
3419            Ok(())
3420        }
3421    }
3422
3423    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BandCapability {
3424        #[inline(always)]
3425        fn new_empty() -> Self {
3426            Self::default()
3427        }
3428
3429        unsafe fn decode(
3430            &mut self,
3431            decoder: &mut fidl::encoding::Decoder<'_, D>,
3432            offset: usize,
3433            mut depth: fidl::encoding::Depth,
3434        ) -> fidl::Result<()> {
3435            decoder.debug_check_bounds::<Self>(offset);
3436            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3437                None => return Err(fidl::Error::NotNullable),
3438                Some(len) => len,
3439            };
3440            // Calling decoder.out_of_line_offset(0) is not allowed.
3441            if len == 0 {
3442                return Ok(());
3443            };
3444            depth.increment()?;
3445            let envelope_size = 8;
3446            let bytes_len = len * envelope_size;
3447            let offset = decoder.out_of_line_offset(bytes_len)?;
3448            // Decode the envelope for each type.
3449            let mut _next_ordinal_to_read = 0;
3450            let mut next_offset = offset;
3451            let end_offset = offset + bytes_len;
3452            _next_ordinal_to_read += 1;
3453            if next_offset >= end_offset {
3454                return Ok(());
3455            }
3456
3457            // Decode unknown envelopes for gaps in ordinals.
3458            while _next_ordinal_to_read < 1 {
3459                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3460                _next_ordinal_to_read += 1;
3461                next_offset += envelope_size;
3462            }
3463
3464            let next_out_of_line = decoder.next_out_of_line();
3465            let handles_before = decoder.remaining_handles();
3466            if let Some((inlined, num_bytes, num_handles)) =
3467                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3468            {
3469                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::WlanBand as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3470                if inlined != (member_inline_size <= 4) {
3471                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3472                }
3473                let inner_offset;
3474                let mut inner_depth = depth.clone();
3475                if inlined {
3476                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3477                    inner_offset = next_offset;
3478                } else {
3479                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3480                    inner_depth.increment()?;
3481                }
3482                let val_ref = self.band.get_or_insert_with(|| {
3483                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::WlanBand, D)
3484                });
3485                fidl::decode!(
3486                    fidl_fuchsia_wlan_ieee80211_common::WlanBand,
3487                    D,
3488                    val_ref,
3489                    decoder,
3490                    inner_offset,
3491                    inner_depth
3492                )?;
3493                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3494                {
3495                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3496                }
3497                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3498                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3499                }
3500            }
3501
3502            next_offset += envelope_size;
3503            _next_ordinal_to_read += 1;
3504            if next_offset >= end_offset {
3505                return Ok(());
3506            }
3507
3508            // Decode unknown envelopes for gaps in ordinals.
3509            while _next_ordinal_to_read < 2 {
3510                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3511                _next_ordinal_to_read += 1;
3512                next_offset += envelope_size;
3513            }
3514
3515            let next_out_of_line = decoder.next_out_of_line();
3516            let handles_before = decoder.remaining_handles();
3517            if let Some((inlined, num_bytes, num_handles)) =
3518                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3519            {
3520                let member_inline_size =
3521                    <fidl::encoding::Vector<u8, 12> as fidl::encoding::TypeMarker>::inline_size(
3522                        decoder.context,
3523                    );
3524                if inlined != (member_inline_size <= 4) {
3525                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3526                }
3527                let inner_offset;
3528                let mut inner_depth = depth.clone();
3529                if inlined {
3530                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3531                    inner_offset = next_offset;
3532                } else {
3533                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3534                    inner_depth.increment()?;
3535                }
3536                let val_ref = self
3537                    .basic_rates
3538                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 12>, D));
3539                fidl::decode!(fidl::encoding::Vector<u8, 12>, D, val_ref, decoder, inner_offset, inner_depth)?;
3540                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3541                {
3542                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3543                }
3544                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3545                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3546                }
3547            }
3548
3549            next_offset += envelope_size;
3550            _next_ordinal_to_read += 1;
3551            if next_offset >= end_offset {
3552                return Ok(());
3553            }
3554
3555            // Decode unknown envelopes for gaps in ordinals.
3556            while _next_ordinal_to_read < 3 {
3557                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3558                _next_ordinal_to_read += 1;
3559                next_offset += envelope_size;
3560            }
3561
3562            let next_out_of_line = decoder.next_out_of_line();
3563            let handles_before = decoder.remaining_handles();
3564            if let Some((inlined, num_bytes, num_handles)) =
3565                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3566            {
3567                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::HtCapabilities as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3568                if inlined != (member_inline_size <= 4) {
3569                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3570                }
3571                let inner_offset;
3572                let mut inner_depth = depth.clone();
3573                if inlined {
3574                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3575                    inner_offset = next_offset;
3576                } else {
3577                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3578                    inner_depth.increment()?;
3579                }
3580                let val_ref = self.ht_caps.get_or_insert_with(|| {
3581                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::HtCapabilities, D)
3582                });
3583                fidl::decode!(
3584                    fidl_fuchsia_wlan_ieee80211_common::HtCapabilities,
3585                    D,
3586                    val_ref,
3587                    decoder,
3588                    inner_offset,
3589                    inner_depth
3590                )?;
3591                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3592                {
3593                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3594                }
3595                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3596                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3597                }
3598            }
3599
3600            next_offset += envelope_size;
3601            _next_ordinal_to_read += 1;
3602            if next_offset >= end_offset {
3603                return Ok(());
3604            }
3605
3606            // Decode unknown envelopes for gaps in ordinals.
3607            while _next_ordinal_to_read < 4 {
3608                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3609                _next_ordinal_to_read += 1;
3610                next_offset += envelope_size;
3611            }
3612
3613            let next_out_of_line = decoder.next_out_of_line();
3614            let handles_before = decoder.remaining_handles();
3615            if let Some((inlined, num_bytes, num_handles)) =
3616                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3617            {
3618                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3619                if inlined != (member_inline_size <= 4) {
3620                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3621                }
3622                let inner_offset;
3623                let mut inner_depth = depth.clone();
3624                if inlined {
3625                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3626                    inner_offset = next_offset;
3627                } else {
3628                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3629                    inner_depth.increment()?;
3630                }
3631                let val_ref = self.vht_caps.get_or_insert_with(|| {
3632                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities, D)
3633                });
3634                fidl::decode!(
3635                    fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities,
3636                    D,
3637                    val_ref,
3638                    decoder,
3639                    inner_offset,
3640                    inner_depth
3641                )?;
3642                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3643                {
3644                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3645                }
3646                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3647                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3648                }
3649            }
3650
3651            next_offset += envelope_size;
3652            _next_ordinal_to_read += 1;
3653            if next_offset >= end_offset {
3654                return Ok(());
3655            }
3656
3657            // Decode unknown envelopes for gaps in ordinals.
3658            while _next_ordinal_to_read < 5 {
3659                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3660                _next_ordinal_to_read += 1;
3661                next_offset += envelope_size;
3662            }
3663
3664            let next_out_of_line = decoder.next_out_of_line();
3665            let handles_before = decoder.remaining_handles();
3666            if let Some((inlined, num_bytes, num_handles)) =
3667                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3668            {
3669                let member_inline_size = <fidl::encoding::Vector<
3670                    fidl_fuchsia_wlan_ieee80211_common::ChannelNumber,
3671                    256,
3672                > as fidl::encoding::TypeMarker>::inline_size(
3673                    decoder.context
3674                );
3675                if inlined != (member_inline_size <= 4) {
3676                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3677                }
3678                let inner_offset;
3679                let mut inner_depth = depth.clone();
3680                if inlined {
3681                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3682                    inner_offset = next_offset;
3683                } else {
3684                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3685                    inner_depth.increment()?;
3686                }
3687                let val_ref =
3688                self.primary_channels.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, 256>, D));
3689                fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, 256>, D, val_ref, decoder, inner_offset, inner_depth)?;
3690                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3691                {
3692                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3693                }
3694                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3695                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3696                }
3697            }
3698
3699            next_offset += envelope_size;
3700
3701            // Decode the remaining unknown envelopes.
3702            while next_offset < end_offset {
3703                _next_ordinal_to_read += 1;
3704                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3705                next_offset += envelope_size;
3706            }
3707
3708            Ok(())
3709        }
3710    }
3711
3712    impl SaeFrame {
3713        #[inline(always)]
3714        fn max_ordinal_present(&self) -> u64 {
3715            if let Some(_) = self.sae_fields {
3716                return 4;
3717            }
3718            if let Some(_) = self.seq_num {
3719                return 3;
3720            }
3721            if let Some(_) = self.status_code {
3722                return 2;
3723            }
3724            if let Some(_) = self.peer_sta_address {
3725                return 1;
3726            }
3727            0
3728        }
3729    }
3730
3731    impl fidl::encoding::ValueTypeMarker for SaeFrame {
3732        type Borrowed<'a> = &'a Self;
3733        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3734            value
3735        }
3736    }
3737
3738    unsafe impl fidl::encoding::TypeMarker for SaeFrame {
3739        type Owned = Self;
3740
3741        #[inline(always)]
3742        fn inline_align(_context: fidl::encoding::Context) -> usize {
3743            8
3744        }
3745
3746        #[inline(always)]
3747        fn inline_size(_context: fidl::encoding::Context) -> usize {
3748            16
3749        }
3750    }
3751
3752    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SaeFrame, D> for &SaeFrame {
3753        unsafe fn encode(
3754            self,
3755            encoder: &mut fidl::encoding::Encoder<'_, D>,
3756            offset: usize,
3757            mut depth: fidl::encoding::Depth,
3758        ) -> fidl::Result<()> {
3759            encoder.debug_check_bounds::<SaeFrame>(offset);
3760            // Vector header
3761            let max_ordinal: u64 = self.max_ordinal_present();
3762            encoder.write_num(max_ordinal, offset);
3763            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3764            // Calling encoder.out_of_line_offset(0) is not allowed.
3765            if max_ordinal == 0 {
3766                return Ok(());
3767            }
3768            depth.increment()?;
3769            let envelope_size = 8;
3770            let bytes_len = max_ordinal as usize * envelope_size;
3771            #[allow(unused_variables)]
3772            let offset = encoder.out_of_line_offset(bytes_len);
3773            let mut _prev_end_offset: usize = 0;
3774            if 1 > max_ordinal {
3775                return Ok(());
3776            }
3777
3778            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3779            // are envelope_size bytes.
3780            let cur_offset: usize = (1 - 1) * envelope_size;
3781
3782            // Zero reserved fields.
3783            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3784
3785            // Safety:
3786            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3787            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3788            //   envelope_size bytes, there is always sufficient room.
3789            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
3790                self.peer_sta_address
3791                    .as_ref()
3792                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
3793                encoder,
3794                offset + cur_offset,
3795                depth,
3796            )?;
3797
3798            _prev_end_offset = cur_offset + envelope_size;
3799            if 2 > max_ordinal {
3800                return Ok(());
3801            }
3802
3803            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3804            // are envelope_size bytes.
3805            let cur_offset: usize = (2 - 1) * envelope_size;
3806
3807            // Zero reserved fields.
3808            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3809
3810            // Safety:
3811            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3812            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3813            //   envelope_size bytes, there is always sufficient room.
3814            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::StatusCode, D>(
3815            self.status_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
3816            encoder, offset + cur_offset, depth
3817        )?;
3818
3819            _prev_end_offset = cur_offset + envelope_size;
3820            if 3 > max_ordinal {
3821                return Ok(());
3822            }
3823
3824            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3825            // are envelope_size bytes.
3826            let cur_offset: usize = (3 - 1) * envelope_size;
3827
3828            // Zero reserved fields.
3829            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3830
3831            // Safety:
3832            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3833            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3834            //   envelope_size bytes, there is always sufficient room.
3835            fidl::encoding::encode_in_envelope_optional::<u16, D>(
3836                self.seq_num.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
3837                encoder,
3838                offset + cur_offset,
3839                depth,
3840            )?;
3841
3842            _prev_end_offset = cur_offset + envelope_size;
3843            if 4 > max_ordinal {
3844                return Ok(());
3845            }
3846
3847            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3848            // are envelope_size bytes.
3849            let cur_offset: usize = (4 - 1) * envelope_size;
3850
3851            // Zero reserved fields.
3852            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3853
3854            // Safety:
3855            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3856            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3857            //   envelope_size bytes, there is always sufficient room.
3858            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
3859            self.sae_fields.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
3860            encoder, offset + cur_offset, depth
3861        )?;
3862
3863            _prev_end_offset = cur_offset + envelope_size;
3864
3865            Ok(())
3866        }
3867    }
3868
3869    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SaeFrame {
3870        #[inline(always)]
3871        fn new_empty() -> Self {
3872            Self::default()
3873        }
3874
3875        unsafe fn decode(
3876            &mut self,
3877            decoder: &mut fidl::encoding::Decoder<'_, D>,
3878            offset: usize,
3879            mut depth: fidl::encoding::Depth,
3880        ) -> fidl::Result<()> {
3881            decoder.debug_check_bounds::<Self>(offset);
3882            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3883                None => return Err(fidl::Error::NotNullable),
3884                Some(len) => len,
3885            };
3886            // Calling decoder.out_of_line_offset(0) is not allowed.
3887            if len == 0 {
3888                return Ok(());
3889            };
3890            depth.increment()?;
3891            let envelope_size = 8;
3892            let bytes_len = len * envelope_size;
3893            let offset = decoder.out_of_line_offset(bytes_len)?;
3894            // Decode the envelope for each type.
3895            let mut _next_ordinal_to_read = 0;
3896            let mut next_offset = offset;
3897            let end_offset = offset + bytes_len;
3898            _next_ordinal_to_read += 1;
3899            if next_offset >= end_offset {
3900                return Ok(());
3901            }
3902
3903            // Decode unknown envelopes for gaps in ordinals.
3904            while _next_ordinal_to_read < 1 {
3905                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3906                _next_ordinal_to_read += 1;
3907                next_offset += envelope_size;
3908            }
3909
3910            let next_out_of_line = decoder.next_out_of_line();
3911            let handles_before = decoder.remaining_handles();
3912            if let Some((inlined, num_bytes, num_handles)) =
3913                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3914            {
3915                let member_inline_size =
3916                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
3917                        decoder.context,
3918                    );
3919                if inlined != (member_inline_size <= 4) {
3920                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3921                }
3922                let inner_offset;
3923                let mut inner_depth = depth.clone();
3924                if inlined {
3925                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3926                    inner_offset = next_offset;
3927                } else {
3928                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3929                    inner_depth.increment()?;
3930                }
3931                let val_ref = self
3932                    .peer_sta_address
3933                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
3934                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
3935                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3936                {
3937                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3938                }
3939                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3940                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3941                }
3942            }
3943
3944            next_offset += envelope_size;
3945            _next_ordinal_to_read += 1;
3946            if next_offset >= end_offset {
3947                return Ok(());
3948            }
3949
3950            // Decode unknown envelopes for gaps in ordinals.
3951            while _next_ordinal_to_read < 2 {
3952                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3953                _next_ordinal_to_read += 1;
3954                next_offset += envelope_size;
3955            }
3956
3957            let next_out_of_line = decoder.next_out_of_line();
3958            let handles_before = decoder.remaining_handles();
3959            if let Some((inlined, num_bytes, num_handles)) =
3960                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3961            {
3962                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3963                if inlined != (member_inline_size <= 4) {
3964                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3965                }
3966                let inner_offset;
3967                let mut inner_depth = depth.clone();
3968                if inlined {
3969                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3970                    inner_offset = next_offset;
3971                } else {
3972                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3973                    inner_depth.increment()?;
3974                }
3975                let val_ref = self.status_code.get_or_insert_with(|| {
3976                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::StatusCode, D)
3977                });
3978                fidl::decode!(
3979                    fidl_fuchsia_wlan_ieee80211_common::StatusCode,
3980                    D,
3981                    val_ref,
3982                    decoder,
3983                    inner_offset,
3984                    inner_depth
3985                )?;
3986                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3987                {
3988                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3989                }
3990                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3991                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3992                }
3993            }
3994
3995            next_offset += envelope_size;
3996            _next_ordinal_to_read += 1;
3997            if next_offset >= end_offset {
3998                return Ok(());
3999            }
4000
4001            // Decode unknown envelopes for gaps in ordinals.
4002            while _next_ordinal_to_read < 3 {
4003                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4004                _next_ordinal_to_read += 1;
4005                next_offset += envelope_size;
4006            }
4007
4008            let next_out_of_line = decoder.next_out_of_line();
4009            let handles_before = decoder.remaining_handles();
4010            if let Some((inlined, num_bytes, num_handles)) =
4011                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4012            {
4013                let member_inline_size =
4014                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4015                if inlined != (member_inline_size <= 4) {
4016                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4017                }
4018                let inner_offset;
4019                let mut inner_depth = depth.clone();
4020                if inlined {
4021                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4022                    inner_offset = next_offset;
4023                } else {
4024                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4025                    inner_depth.increment()?;
4026                }
4027                let val_ref = self.seq_num.get_or_insert_with(|| fidl::new_empty!(u16, D));
4028                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
4029                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4030                {
4031                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4032                }
4033                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4034                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4035                }
4036            }
4037
4038            next_offset += envelope_size;
4039            _next_ordinal_to_read += 1;
4040            if next_offset >= end_offset {
4041                return Ok(());
4042            }
4043
4044            // Decode unknown envelopes for gaps in ordinals.
4045            while _next_ordinal_to_read < 4 {
4046                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4047                _next_ordinal_to_read += 1;
4048                next_offset += envelope_size;
4049            }
4050
4051            let next_out_of_line = decoder.next_out_of_line();
4052            let handles_before = decoder.remaining_handles();
4053            if let Some((inlined, num_bytes, num_handles)) =
4054                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4055            {
4056                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4057                if inlined != (member_inline_size <= 4) {
4058                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4059                }
4060                let inner_offset;
4061                let mut inner_depth = depth.clone();
4062                if inlined {
4063                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4064                    inner_offset = next_offset;
4065                } else {
4066                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4067                    inner_depth.increment()?;
4068                }
4069                let val_ref = self.sae_fields.get_or_insert_with(|| {
4070                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
4071                });
4072                fidl::decode!(
4073                    fidl::encoding::UnboundedVector<u8>,
4074                    D,
4075                    val_ref,
4076                    decoder,
4077                    inner_offset,
4078                    inner_depth
4079                )?;
4080                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4081                {
4082                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4083                }
4084                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4085                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4086                }
4087            }
4088
4089            next_offset += envelope_size;
4090
4091            // Decode the remaining unknown envelopes.
4092            while next_offset < end_offset {
4093                _next_ordinal_to_read += 1;
4094                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4095                next_offset += envelope_size;
4096            }
4097
4098            Ok(())
4099        }
4100    }
4101
4102    impl WlanFullmacImplAssocRespRequest {
4103        #[inline(always)]
4104        fn max_ordinal_present(&self) -> u64 {
4105            if let Some(_) = self.association_id {
4106                return 3;
4107            }
4108            if let Some(_) = self.result_code {
4109                return 2;
4110            }
4111            if let Some(_) = self.peer_sta_address {
4112                return 1;
4113            }
4114            0
4115        }
4116    }
4117
4118    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplAssocRespRequest {
4119        type Borrowed<'a> = &'a Self;
4120        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4121            value
4122        }
4123    }
4124
4125    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplAssocRespRequest {
4126        type Owned = Self;
4127
4128        #[inline(always)]
4129        fn inline_align(_context: fidl::encoding::Context) -> usize {
4130            8
4131        }
4132
4133        #[inline(always)]
4134        fn inline_size(_context: fidl::encoding::Context) -> usize {
4135            16
4136        }
4137    }
4138
4139    unsafe impl<D: fidl::encoding::ResourceDialect>
4140        fidl::encoding::Encode<WlanFullmacImplAssocRespRequest, D>
4141        for &WlanFullmacImplAssocRespRequest
4142    {
4143        unsafe fn encode(
4144            self,
4145            encoder: &mut fidl::encoding::Encoder<'_, D>,
4146            offset: usize,
4147            mut depth: fidl::encoding::Depth,
4148        ) -> fidl::Result<()> {
4149            encoder.debug_check_bounds::<WlanFullmacImplAssocRespRequest>(offset);
4150            // Vector header
4151            let max_ordinal: u64 = self.max_ordinal_present();
4152            encoder.write_num(max_ordinal, offset);
4153            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4154            // Calling encoder.out_of_line_offset(0) is not allowed.
4155            if max_ordinal == 0 {
4156                return Ok(());
4157            }
4158            depth.increment()?;
4159            let envelope_size = 8;
4160            let bytes_len = max_ordinal as usize * envelope_size;
4161            #[allow(unused_variables)]
4162            let offset = encoder.out_of_line_offset(bytes_len);
4163            let mut _prev_end_offset: usize = 0;
4164            if 1 > max_ordinal {
4165                return Ok(());
4166            }
4167
4168            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4169            // are envelope_size bytes.
4170            let cur_offset: usize = (1 - 1) * envelope_size;
4171
4172            // Zero reserved fields.
4173            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4174
4175            // Safety:
4176            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4177            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4178            //   envelope_size bytes, there is always sufficient room.
4179            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
4180                self.peer_sta_address
4181                    .as_ref()
4182                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
4183                encoder,
4184                offset + cur_offset,
4185                depth,
4186            )?;
4187
4188            _prev_end_offset = cur_offset + envelope_size;
4189            if 2 > max_ordinal {
4190                return Ok(());
4191            }
4192
4193            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4194            // are envelope_size bytes.
4195            let cur_offset: usize = (2 - 1) * envelope_size;
4196
4197            // Zero reserved fields.
4198            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4199
4200            // Safety:
4201            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4202            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4203            //   envelope_size bytes, there is always sufficient room.
4204            fidl::encoding::encode_in_envelope_optional::<WlanAssocResult, D>(
4205                self.result_code
4206                    .as_ref()
4207                    .map(<WlanAssocResult as fidl::encoding::ValueTypeMarker>::borrow),
4208                encoder,
4209                offset + cur_offset,
4210                depth,
4211            )?;
4212
4213            _prev_end_offset = cur_offset + envelope_size;
4214            if 3 > max_ordinal {
4215                return Ok(());
4216            }
4217
4218            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4219            // are envelope_size bytes.
4220            let cur_offset: usize = (3 - 1) * envelope_size;
4221
4222            // Zero reserved fields.
4223            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4224
4225            // Safety:
4226            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4227            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4228            //   envelope_size bytes, there is always sufficient room.
4229            fidl::encoding::encode_in_envelope_optional::<u16, D>(
4230                self.association_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
4231                encoder,
4232                offset + cur_offset,
4233                depth,
4234            )?;
4235
4236            _prev_end_offset = cur_offset + envelope_size;
4237
4238            Ok(())
4239        }
4240    }
4241
4242    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4243        for WlanFullmacImplAssocRespRequest
4244    {
4245        #[inline(always)]
4246        fn new_empty() -> Self {
4247            Self::default()
4248        }
4249
4250        unsafe fn decode(
4251            &mut self,
4252            decoder: &mut fidl::encoding::Decoder<'_, D>,
4253            offset: usize,
4254            mut depth: fidl::encoding::Depth,
4255        ) -> fidl::Result<()> {
4256            decoder.debug_check_bounds::<Self>(offset);
4257            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4258                None => return Err(fidl::Error::NotNullable),
4259                Some(len) => len,
4260            };
4261            // Calling decoder.out_of_line_offset(0) is not allowed.
4262            if len == 0 {
4263                return Ok(());
4264            };
4265            depth.increment()?;
4266            let envelope_size = 8;
4267            let bytes_len = len * envelope_size;
4268            let offset = decoder.out_of_line_offset(bytes_len)?;
4269            // Decode the envelope for each type.
4270            let mut _next_ordinal_to_read = 0;
4271            let mut next_offset = offset;
4272            let end_offset = offset + bytes_len;
4273            _next_ordinal_to_read += 1;
4274            if next_offset >= end_offset {
4275                return Ok(());
4276            }
4277
4278            // Decode unknown envelopes for gaps in ordinals.
4279            while _next_ordinal_to_read < 1 {
4280                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4281                _next_ordinal_to_read += 1;
4282                next_offset += envelope_size;
4283            }
4284
4285            let next_out_of_line = decoder.next_out_of_line();
4286            let handles_before = decoder.remaining_handles();
4287            if let Some((inlined, num_bytes, num_handles)) =
4288                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4289            {
4290                let member_inline_size =
4291                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
4292                        decoder.context,
4293                    );
4294                if inlined != (member_inline_size <= 4) {
4295                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4296                }
4297                let inner_offset;
4298                let mut inner_depth = depth.clone();
4299                if inlined {
4300                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4301                    inner_offset = next_offset;
4302                } else {
4303                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4304                    inner_depth.increment()?;
4305                }
4306                let val_ref = self
4307                    .peer_sta_address
4308                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
4309                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
4310                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4311                {
4312                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4313                }
4314                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4315                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4316                }
4317            }
4318
4319            next_offset += envelope_size;
4320            _next_ordinal_to_read += 1;
4321            if next_offset >= end_offset {
4322                return Ok(());
4323            }
4324
4325            // Decode unknown envelopes for gaps in ordinals.
4326            while _next_ordinal_to_read < 2 {
4327                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4328                _next_ordinal_to_read += 1;
4329                next_offset += envelope_size;
4330            }
4331
4332            let next_out_of_line = decoder.next_out_of_line();
4333            let handles_before = decoder.remaining_handles();
4334            if let Some((inlined, num_bytes, num_handles)) =
4335                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4336            {
4337                let member_inline_size =
4338                    <WlanAssocResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4339                if inlined != (member_inline_size <= 4) {
4340                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4341                }
4342                let inner_offset;
4343                let mut inner_depth = depth.clone();
4344                if inlined {
4345                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4346                    inner_offset = next_offset;
4347                } else {
4348                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4349                    inner_depth.increment()?;
4350                }
4351                let val_ref =
4352                    self.result_code.get_or_insert_with(|| fidl::new_empty!(WlanAssocResult, D));
4353                fidl::decode!(WlanAssocResult, D, val_ref, decoder, inner_offset, inner_depth)?;
4354                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4355                {
4356                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4357                }
4358                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4359                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4360                }
4361            }
4362
4363            next_offset += envelope_size;
4364            _next_ordinal_to_read += 1;
4365            if next_offset >= end_offset {
4366                return Ok(());
4367            }
4368
4369            // Decode unknown envelopes for gaps in ordinals.
4370            while _next_ordinal_to_read < 3 {
4371                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4372                _next_ordinal_to_read += 1;
4373                next_offset += envelope_size;
4374            }
4375
4376            let next_out_of_line = decoder.next_out_of_line();
4377            let handles_before = decoder.remaining_handles();
4378            if let Some((inlined, num_bytes, num_handles)) =
4379                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4380            {
4381                let member_inline_size =
4382                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4383                if inlined != (member_inline_size <= 4) {
4384                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4385                }
4386                let inner_offset;
4387                let mut inner_depth = depth.clone();
4388                if inlined {
4389                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4390                    inner_offset = next_offset;
4391                } else {
4392                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4393                    inner_depth.increment()?;
4394                }
4395                let val_ref = self.association_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
4396                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
4397                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4398                {
4399                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4400                }
4401                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4402                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4403                }
4404            }
4405
4406            next_offset += envelope_size;
4407
4408            // Decode the remaining unknown envelopes.
4409            while next_offset < end_offset {
4410                _next_ordinal_to_read += 1;
4411                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4412                next_offset += envelope_size;
4413            }
4414
4415            Ok(())
4416        }
4417    }
4418
4419    impl WlanFullmacImplAuthRespRequest {
4420        #[inline(always)]
4421        fn max_ordinal_present(&self) -> u64 {
4422            if let Some(_) = self.result_code {
4423                return 2;
4424            }
4425            if let Some(_) = self.peer_sta_address {
4426                return 1;
4427            }
4428            0
4429        }
4430    }
4431
4432    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplAuthRespRequest {
4433        type Borrowed<'a> = &'a Self;
4434        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4435            value
4436        }
4437    }
4438
4439    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplAuthRespRequest {
4440        type Owned = Self;
4441
4442        #[inline(always)]
4443        fn inline_align(_context: fidl::encoding::Context) -> usize {
4444            8
4445        }
4446
4447        #[inline(always)]
4448        fn inline_size(_context: fidl::encoding::Context) -> usize {
4449            16
4450        }
4451    }
4452
4453    unsafe impl<D: fidl::encoding::ResourceDialect>
4454        fidl::encoding::Encode<WlanFullmacImplAuthRespRequest, D>
4455        for &WlanFullmacImplAuthRespRequest
4456    {
4457        unsafe fn encode(
4458            self,
4459            encoder: &mut fidl::encoding::Encoder<'_, D>,
4460            offset: usize,
4461            mut depth: fidl::encoding::Depth,
4462        ) -> fidl::Result<()> {
4463            encoder.debug_check_bounds::<WlanFullmacImplAuthRespRequest>(offset);
4464            // Vector header
4465            let max_ordinal: u64 = self.max_ordinal_present();
4466            encoder.write_num(max_ordinal, offset);
4467            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4468            // Calling encoder.out_of_line_offset(0) is not allowed.
4469            if max_ordinal == 0 {
4470                return Ok(());
4471            }
4472            depth.increment()?;
4473            let envelope_size = 8;
4474            let bytes_len = max_ordinal as usize * envelope_size;
4475            #[allow(unused_variables)]
4476            let offset = encoder.out_of_line_offset(bytes_len);
4477            let mut _prev_end_offset: usize = 0;
4478            if 1 > max_ordinal {
4479                return Ok(());
4480            }
4481
4482            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4483            // are envelope_size bytes.
4484            let cur_offset: usize = (1 - 1) * envelope_size;
4485
4486            // Zero reserved fields.
4487            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4488
4489            // Safety:
4490            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4491            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4492            //   envelope_size bytes, there is always sufficient room.
4493            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
4494                self.peer_sta_address
4495                    .as_ref()
4496                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
4497                encoder,
4498                offset + cur_offset,
4499                depth,
4500            )?;
4501
4502            _prev_end_offset = cur_offset + envelope_size;
4503            if 2 > max_ordinal {
4504                return Ok(());
4505            }
4506
4507            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4508            // are envelope_size bytes.
4509            let cur_offset: usize = (2 - 1) * envelope_size;
4510
4511            // Zero reserved fields.
4512            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4513
4514            // Safety:
4515            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4516            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4517            //   envelope_size bytes, there is always sufficient room.
4518            fidl::encoding::encode_in_envelope_optional::<WlanAuthResult, D>(
4519                self.result_code
4520                    .as_ref()
4521                    .map(<WlanAuthResult as fidl::encoding::ValueTypeMarker>::borrow),
4522                encoder,
4523                offset + cur_offset,
4524                depth,
4525            )?;
4526
4527            _prev_end_offset = cur_offset + envelope_size;
4528
4529            Ok(())
4530        }
4531    }
4532
4533    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4534        for WlanFullmacImplAuthRespRequest
4535    {
4536        #[inline(always)]
4537        fn new_empty() -> Self {
4538            Self::default()
4539        }
4540
4541        unsafe fn decode(
4542            &mut self,
4543            decoder: &mut fidl::encoding::Decoder<'_, D>,
4544            offset: usize,
4545            mut depth: fidl::encoding::Depth,
4546        ) -> fidl::Result<()> {
4547            decoder.debug_check_bounds::<Self>(offset);
4548            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4549                None => return Err(fidl::Error::NotNullable),
4550                Some(len) => len,
4551            };
4552            // Calling decoder.out_of_line_offset(0) is not allowed.
4553            if len == 0 {
4554                return Ok(());
4555            };
4556            depth.increment()?;
4557            let envelope_size = 8;
4558            let bytes_len = len * envelope_size;
4559            let offset = decoder.out_of_line_offset(bytes_len)?;
4560            // Decode the envelope for each type.
4561            let mut _next_ordinal_to_read = 0;
4562            let mut next_offset = offset;
4563            let end_offset = offset + bytes_len;
4564            _next_ordinal_to_read += 1;
4565            if next_offset >= end_offset {
4566                return Ok(());
4567            }
4568
4569            // Decode unknown envelopes for gaps in ordinals.
4570            while _next_ordinal_to_read < 1 {
4571                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4572                _next_ordinal_to_read += 1;
4573                next_offset += envelope_size;
4574            }
4575
4576            let next_out_of_line = decoder.next_out_of_line();
4577            let handles_before = decoder.remaining_handles();
4578            if let Some((inlined, num_bytes, num_handles)) =
4579                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4580            {
4581                let member_inline_size =
4582                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
4583                        decoder.context,
4584                    );
4585                if inlined != (member_inline_size <= 4) {
4586                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4587                }
4588                let inner_offset;
4589                let mut inner_depth = depth.clone();
4590                if inlined {
4591                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4592                    inner_offset = next_offset;
4593                } else {
4594                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4595                    inner_depth.increment()?;
4596                }
4597                let val_ref = self
4598                    .peer_sta_address
4599                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
4600                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
4601                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4602                {
4603                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4604                }
4605                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4606                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4607                }
4608            }
4609
4610            next_offset += envelope_size;
4611            _next_ordinal_to_read += 1;
4612            if next_offset >= end_offset {
4613                return Ok(());
4614            }
4615
4616            // Decode unknown envelopes for gaps in ordinals.
4617            while _next_ordinal_to_read < 2 {
4618                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4619                _next_ordinal_to_read += 1;
4620                next_offset += envelope_size;
4621            }
4622
4623            let next_out_of_line = decoder.next_out_of_line();
4624            let handles_before = decoder.remaining_handles();
4625            if let Some((inlined, num_bytes, num_handles)) =
4626                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4627            {
4628                let member_inline_size =
4629                    <WlanAuthResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4630                if inlined != (member_inline_size <= 4) {
4631                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4632                }
4633                let inner_offset;
4634                let mut inner_depth = depth.clone();
4635                if inlined {
4636                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4637                    inner_offset = next_offset;
4638                } else {
4639                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4640                    inner_depth.increment()?;
4641                }
4642                let val_ref =
4643                    self.result_code.get_or_insert_with(|| fidl::new_empty!(WlanAuthResult, D));
4644                fidl::decode!(WlanAuthResult, D, val_ref, decoder, inner_offset, inner_depth)?;
4645                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4646                {
4647                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4648                }
4649                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4650                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4651                }
4652            }
4653
4654            next_offset += envelope_size;
4655
4656            // Decode the remaining unknown envelopes.
4657            while next_offset < end_offset {
4658                _next_ordinal_to_read += 1;
4659                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4660                next_offset += envelope_size;
4661            }
4662
4663            Ok(())
4664        }
4665    }
4666
4667    impl WlanFullmacImplConnectRequest {
4668        #[inline(always)]
4669        fn max_ordinal_present(&self) -> u64 {
4670            if let Some(_) = self.owe_public_key {
4671                return 8;
4672            }
4673            if let Some(_) = self.wep_key_desc {
4674                return 7;
4675            }
4676            if let Some(_) = self.security_ie {
4677                return 6;
4678            }
4679            if let Some(_) = self.wep_key {
4680                return 5;
4681            }
4682            if let Some(_) = self.sae_password {
4683                return 4;
4684            }
4685            if let Some(_) = self.auth_type {
4686                return 3;
4687            }
4688            if let Some(_) = self.connect_failure_timeout {
4689                return 2;
4690            }
4691            if let Some(_) = self.selected_bss {
4692                return 1;
4693            }
4694            0
4695        }
4696    }
4697
4698    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplConnectRequest {
4699        type Borrowed<'a> = &'a Self;
4700        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4701            value
4702        }
4703    }
4704
4705    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplConnectRequest {
4706        type Owned = Self;
4707
4708        #[inline(always)]
4709        fn inline_align(_context: fidl::encoding::Context) -> usize {
4710            8
4711        }
4712
4713        #[inline(always)]
4714        fn inline_size(_context: fidl::encoding::Context) -> usize {
4715            16
4716        }
4717    }
4718
4719    unsafe impl<D: fidl::encoding::ResourceDialect>
4720        fidl::encoding::Encode<WlanFullmacImplConnectRequest, D>
4721        for &WlanFullmacImplConnectRequest
4722    {
4723        unsafe fn encode(
4724            self,
4725            encoder: &mut fidl::encoding::Encoder<'_, D>,
4726            offset: usize,
4727            mut depth: fidl::encoding::Depth,
4728        ) -> fidl::Result<()> {
4729            encoder.debug_check_bounds::<WlanFullmacImplConnectRequest>(offset);
4730            // Vector header
4731            let max_ordinal: u64 = self.max_ordinal_present();
4732            encoder.write_num(max_ordinal, offset);
4733            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4734            // Calling encoder.out_of_line_offset(0) is not allowed.
4735            if max_ordinal == 0 {
4736                return Ok(());
4737            }
4738            depth.increment()?;
4739            let envelope_size = 8;
4740            let bytes_len = max_ordinal as usize * envelope_size;
4741            #[allow(unused_variables)]
4742            let offset = encoder.out_of_line_offset(bytes_len);
4743            let mut _prev_end_offset: usize = 0;
4744            if 1 > max_ordinal {
4745                return Ok(());
4746            }
4747
4748            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4749            // are envelope_size bytes.
4750            let cur_offset: usize = (1 - 1) * envelope_size;
4751
4752            // Zero reserved fields.
4753            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4754
4755            // Safety:
4756            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4757            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4758            //   envelope_size bytes, there is always sufficient room.
4759            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::BssDescription, D>(
4760            self.selected_bss.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow),
4761            encoder, offset + cur_offset, depth
4762        )?;
4763
4764            _prev_end_offset = cur_offset + envelope_size;
4765            if 2 > max_ordinal {
4766                return Ok(());
4767            }
4768
4769            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4770            // are envelope_size bytes.
4771            let cur_offset: usize = (2 - 1) * envelope_size;
4772
4773            // Zero reserved fields.
4774            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4775
4776            // Safety:
4777            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4778            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4779            //   envelope_size bytes, there is always sufficient room.
4780            fidl::encoding::encode_in_envelope_optional::<u32, D>(
4781                self.connect_failure_timeout
4782                    .as_ref()
4783                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
4784                encoder,
4785                offset + cur_offset,
4786                depth,
4787            )?;
4788
4789            _prev_end_offset = cur_offset + envelope_size;
4790            if 3 > max_ordinal {
4791                return Ok(());
4792            }
4793
4794            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4795            // are envelope_size bytes.
4796            let cur_offset: usize = (3 - 1) * envelope_size;
4797
4798            // Zero reserved fields.
4799            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4800
4801            // Safety:
4802            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4803            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4804            //   envelope_size bytes, there is always sufficient room.
4805            fidl::encoding::encode_in_envelope_optional::<WlanAuthType, D>(
4806                self.auth_type
4807                    .as_ref()
4808                    .map(<WlanAuthType as fidl::encoding::ValueTypeMarker>::borrow),
4809                encoder,
4810                offset + cur_offset,
4811                depth,
4812            )?;
4813
4814            _prev_end_offset = cur_offset + envelope_size;
4815            if 4 > max_ordinal {
4816                return Ok(());
4817            }
4818
4819            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4820            // are envelope_size bytes.
4821            let cur_offset: usize = (4 - 1) * envelope_size;
4822
4823            // Zero reserved fields.
4824            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4825
4826            // Safety:
4827            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4828            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4829            //   envelope_size bytes, there is always sufficient room.
4830            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
4831            self.sae_password.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
4832            encoder, offset + cur_offset, depth
4833        )?;
4834
4835            _prev_end_offset = cur_offset + envelope_size;
4836            if 5 > max_ordinal {
4837                return Ok(());
4838            }
4839
4840            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4841            // are envelope_size bytes.
4842            let cur_offset: usize = (5 - 1) * envelope_size;
4843
4844            // Zero reserved fields.
4845            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4846
4847            // Safety:
4848            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4849            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4850            //   envelope_size bytes, there is always sufficient room.
4851            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_driver_common::WlanKeyConfig, D>(
4852            self.wep_key.as_ref().map(<fidl_fuchsia_wlan_driver_common::WlanKeyConfig as fidl::encoding::ValueTypeMarker>::borrow),
4853            encoder, offset + cur_offset, depth
4854        )?;
4855
4856            _prev_end_offset = cur_offset + envelope_size;
4857            if 6 > max_ordinal {
4858                return Ok(());
4859            }
4860
4861            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4862            // are envelope_size bytes.
4863            let cur_offset: usize = (6 - 1) * envelope_size;
4864
4865            // Zero reserved fields.
4866            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4867
4868            // Safety:
4869            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4870            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4871            //   envelope_size bytes, there is always sufficient room.
4872            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 257>, D>(
4873                self.security_ie.as_ref().map(
4874                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::ValueTypeMarker>::borrow,
4875                ),
4876                encoder,
4877                offset + cur_offset,
4878                depth,
4879            )?;
4880
4881            _prev_end_offset = cur_offset + envelope_size;
4882            if 7 > max_ordinal {
4883                return Ok(());
4884            }
4885
4886            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4887            // are envelope_size bytes.
4888            let cur_offset: usize = (7 - 1) * envelope_size;
4889
4890            // Zero reserved fields.
4891            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4892
4893            // Safety:
4894            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4895            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4896            //   envelope_size bytes, there is always sufficient room.
4897            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor, D>(
4898            self.wep_key_desc.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor as fidl::encoding::ValueTypeMarker>::borrow),
4899            encoder, offset + cur_offset, depth
4900        )?;
4901
4902            _prev_end_offset = cur_offset + envelope_size;
4903            if 8 > max_ordinal {
4904                return Ok(());
4905            }
4906
4907            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4908            // are envelope_size bytes.
4909            let cur_offset: usize = (8 - 1) * envelope_size;
4910
4911            // Zero reserved fields.
4912            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4913
4914            // Safety:
4915            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4916            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4917            //   envelope_size bytes, there is always sufficient room.
4918            fidl::encoding::encode_in_envelope_optional::<WlanFullmacOwePublicKey, D>(
4919                self.owe_public_key
4920                    .as_ref()
4921                    .map(<WlanFullmacOwePublicKey as fidl::encoding::ValueTypeMarker>::borrow),
4922                encoder,
4923                offset + cur_offset,
4924                depth,
4925            )?;
4926
4927            _prev_end_offset = cur_offset + envelope_size;
4928
4929            Ok(())
4930        }
4931    }
4932
4933    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4934        for WlanFullmacImplConnectRequest
4935    {
4936        #[inline(always)]
4937        fn new_empty() -> Self {
4938            Self::default()
4939        }
4940
4941        unsafe fn decode(
4942            &mut self,
4943            decoder: &mut fidl::encoding::Decoder<'_, D>,
4944            offset: usize,
4945            mut depth: fidl::encoding::Depth,
4946        ) -> fidl::Result<()> {
4947            decoder.debug_check_bounds::<Self>(offset);
4948            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4949                None => return Err(fidl::Error::NotNullable),
4950                Some(len) => len,
4951            };
4952            // Calling decoder.out_of_line_offset(0) is not allowed.
4953            if len == 0 {
4954                return Ok(());
4955            };
4956            depth.increment()?;
4957            let envelope_size = 8;
4958            let bytes_len = len * envelope_size;
4959            let offset = decoder.out_of_line_offset(bytes_len)?;
4960            // Decode the envelope for each type.
4961            let mut _next_ordinal_to_read = 0;
4962            let mut next_offset = offset;
4963            let end_offset = offset + bytes_len;
4964            _next_ordinal_to_read += 1;
4965            if next_offset >= end_offset {
4966                return Ok(());
4967            }
4968
4969            // Decode unknown envelopes for gaps in ordinals.
4970            while _next_ordinal_to_read < 1 {
4971                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4972                _next_ordinal_to_read += 1;
4973                next_offset += envelope_size;
4974            }
4975
4976            let next_out_of_line = decoder.next_out_of_line();
4977            let handles_before = decoder.remaining_handles();
4978            if let Some((inlined, num_bytes, num_handles)) =
4979                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4980            {
4981                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::BssDescription as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4982                if inlined != (member_inline_size <= 4) {
4983                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4984                }
4985                let inner_offset;
4986                let mut inner_depth = depth.clone();
4987                if inlined {
4988                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4989                    inner_offset = next_offset;
4990                } else {
4991                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4992                    inner_depth.increment()?;
4993                }
4994                let val_ref = self.selected_bss.get_or_insert_with(|| {
4995                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::BssDescription, D)
4996                });
4997                fidl::decode!(
4998                    fidl_fuchsia_wlan_ieee80211_common::BssDescription,
4999                    D,
5000                    val_ref,
5001                    decoder,
5002                    inner_offset,
5003                    inner_depth
5004                )?;
5005                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5006                {
5007                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5008                }
5009                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5010                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5011                }
5012            }
5013
5014            next_offset += envelope_size;
5015            _next_ordinal_to_read += 1;
5016            if next_offset >= end_offset {
5017                return Ok(());
5018            }
5019
5020            // Decode unknown envelopes for gaps in ordinals.
5021            while _next_ordinal_to_read < 2 {
5022                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5023                _next_ordinal_to_read += 1;
5024                next_offset += envelope_size;
5025            }
5026
5027            let next_out_of_line = decoder.next_out_of_line();
5028            let handles_before = decoder.remaining_handles();
5029            if let Some((inlined, num_bytes, num_handles)) =
5030                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5031            {
5032                let member_inline_size =
5033                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5034                if inlined != (member_inline_size <= 4) {
5035                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5036                }
5037                let inner_offset;
5038                let mut inner_depth = depth.clone();
5039                if inlined {
5040                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5041                    inner_offset = next_offset;
5042                } else {
5043                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5044                    inner_depth.increment()?;
5045                }
5046                let val_ref =
5047                    self.connect_failure_timeout.get_or_insert_with(|| fidl::new_empty!(u32, D));
5048                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
5049                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5050                {
5051                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5052                }
5053                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5054                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5055                }
5056            }
5057
5058            next_offset += envelope_size;
5059            _next_ordinal_to_read += 1;
5060            if next_offset >= end_offset {
5061                return Ok(());
5062            }
5063
5064            // Decode unknown envelopes for gaps in ordinals.
5065            while _next_ordinal_to_read < 3 {
5066                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5067                _next_ordinal_to_read += 1;
5068                next_offset += envelope_size;
5069            }
5070
5071            let next_out_of_line = decoder.next_out_of_line();
5072            let handles_before = decoder.remaining_handles();
5073            if let Some((inlined, num_bytes, num_handles)) =
5074                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5075            {
5076                let member_inline_size =
5077                    <WlanAuthType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5078                if inlined != (member_inline_size <= 4) {
5079                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5080                }
5081                let inner_offset;
5082                let mut inner_depth = depth.clone();
5083                if inlined {
5084                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5085                    inner_offset = next_offset;
5086                } else {
5087                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5088                    inner_depth.increment()?;
5089                }
5090                let val_ref =
5091                    self.auth_type.get_or_insert_with(|| fidl::new_empty!(WlanAuthType, D));
5092                fidl::decode!(WlanAuthType, D, val_ref, decoder, inner_offset, inner_depth)?;
5093                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5094                {
5095                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5096                }
5097                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5098                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5099                }
5100            }
5101
5102            next_offset += envelope_size;
5103            _next_ordinal_to_read += 1;
5104            if next_offset >= end_offset {
5105                return Ok(());
5106            }
5107
5108            // Decode unknown envelopes for gaps in ordinals.
5109            while _next_ordinal_to_read < 4 {
5110                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5111                _next_ordinal_to_read += 1;
5112                next_offset += envelope_size;
5113            }
5114
5115            let next_out_of_line = decoder.next_out_of_line();
5116            let handles_before = decoder.remaining_handles();
5117            if let Some((inlined, num_bytes, num_handles)) =
5118                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5119            {
5120                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5121                if inlined != (member_inline_size <= 4) {
5122                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5123                }
5124                let inner_offset;
5125                let mut inner_depth = depth.clone();
5126                if inlined {
5127                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5128                    inner_offset = next_offset;
5129                } else {
5130                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5131                    inner_depth.increment()?;
5132                }
5133                let val_ref = self.sae_password.get_or_insert_with(|| {
5134                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
5135                });
5136                fidl::decode!(
5137                    fidl::encoding::UnboundedVector<u8>,
5138                    D,
5139                    val_ref,
5140                    decoder,
5141                    inner_offset,
5142                    inner_depth
5143                )?;
5144                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5145                {
5146                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5147                }
5148                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5149                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5150                }
5151            }
5152
5153            next_offset += envelope_size;
5154            _next_ordinal_to_read += 1;
5155            if next_offset >= end_offset {
5156                return Ok(());
5157            }
5158
5159            // Decode unknown envelopes for gaps in ordinals.
5160            while _next_ordinal_to_read < 5 {
5161                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5162                _next_ordinal_to_read += 1;
5163                next_offset += envelope_size;
5164            }
5165
5166            let next_out_of_line = decoder.next_out_of_line();
5167            let handles_before = decoder.remaining_handles();
5168            if let Some((inlined, num_bytes, num_handles)) =
5169                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5170            {
5171                let member_inline_size = <fidl_fuchsia_wlan_driver_common::WlanKeyConfig as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5172                if inlined != (member_inline_size <= 4) {
5173                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5174                }
5175                let inner_offset;
5176                let mut inner_depth = depth.clone();
5177                if inlined {
5178                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5179                    inner_offset = next_offset;
5180                } else {
5181                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5182                    inner_depth.increment()?;
5183                }
5184                let val_ref = self.wep_key.get_or_insert_with(|| {
5185                    fidl::new_empty!(fidl_fuchsia_wlan_driver_common::WlanKeyConfig, D)
5186                });
5187                fidl::decode!(
5188                    fidl_fuchsia_wlan_driver_common::WlanKeyConfig,
5189                    D,
5190                    val_ref,
5191                    decoder,
5192                    inner_offset,
5193                    inner_depth
5194                )?;
5195                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5196                {
5197                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5198                }
5199                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5200                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5201                }
5202            }
5203
5204            next_offset += envelope_size;
5205            _next_ordinal_to_read += 1;
5206            if next_offset >= end_offset {
5207                return Ok(());
5208            }
5209
5210            // Decode unknown envelopes for gaps in ordinals.
5211            while _next_ordinal_to_read < 6 {
5212                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5213                _next_ordinal_to_read += 1;
5214                next_offset += envelope_size;
5215            }
5216
5217            let next_out_of_line = decoder.next_out_of_line();
5218            let handles_before = decoder.remaining_handles();
5219            if let Some((inlined, num_bytes, num_handles)) =
5220                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5221            {
5222                let member_inline_size =
5223                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::TypeMarker>::inline_size(
5224                        decoder.context,
5225                    );
5226                if inlined != (member_inline_size <= 4) {
5227                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5228                }
5229                let inner_offset;
5230                let mut inner_depth = depth.clone();
5231                if inlined {
5232                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5233                    inner_offset = next_offset;
5234                } else {
5235                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5236                    inner_depth.increment()?;
5237                }
5238                let val_ref = self
5239                    .security_ie
5240                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 257>, D));
5241                fidl::decode!(fidl::encoding::Vector<u8, 257>, D, val_ref, decoder, inner_offset, inner_depth)?;
5242                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5243                {
5244                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5245                }
5246                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5247                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5248                }
5249            }
5250
5251            next_offset += envelope_size;
5252            _next_ordinal_to_read += 1;
5253            if next_offset >= end_offset {
5254                return Ok(());
5255            }
5256
5257            // Decode unknown envelopes for gaps in ordinals.
5258            while _next_ordinal_to_read < 7 {
5259                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5260                _next_ordinal_to_read += 1;
5261                next_offset += envelope_size;
5262            }
5263
5264            let next_out_of_line = decoder.next_out_of_line();
5265            let handles_before = decoder.remaining_handles();
5266            if let Some((inlined, num_bytes, num_handles)) =
5267                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5268            {
5269                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5270                if inlined != (member_inline_size <= 4) {
5271                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5272                }
5273                let inner_offset;
5274                let mut inner_depth = depth.clone();
5275                if inlined {
5276                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5277                    inner_offset = next_offset;
5278                } else {
5279                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5280                    inner_depth.increment()?;
5281                }
5282                let val_ref = self.wep_key_desc.get_or_insert_with(|| {
5283                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor, D)
5284                });
5285                fidl::decode!(
5286                    fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor,
5287                    D,
5288                    val_ref,
5289                    decoder,
5290                    inner_offset,
5291                    inner_depth
5292                )?;
5293                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5294                {
5295                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5296                }
5297                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5298                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5299                }
5300            }
5301
5302            next_offset += envelope_size;
5303            _next_ordinal_to_read += 1;
5304            if next_offset >= end_offset {
5305                return Ok(());
5306            }
5307
5308            // Decode unknown envelopes for gaps in ordinals.
5309            while _next_ordinal_to_read < 8 {
5310                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5311                _next_ordinal_to_read += 1;
5312                next_offset += envelope_size;
5313            }
5314
5315            let next_out_of_line = decoder.next_out_of_line();
5316            let handles_before = decoder.remaining_handles();
5317            if let Some((inlined, num_bytes, num_handles)) =
5318                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5319            {
5320                let member_inline_size =
5321                    <WlanFullmacOwePublicKey as fidl::encoding::TypeMarker>::inline_size(
5322                        decoder.context,
5323                    );
5324                if inlined != (member_inline_size <= 4) {
5325                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5326                }
5327                let inner_offset;
5328                let mut inner_depth = depth.clone();
5329                if inlined {
5330                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5331                    inner_offset = next_offset;
5332                } else {
5333                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5334                    inner_depth.increment()?;
5335                }
5336                let val_ref = self
5337                    .owe_public_key
5338                    .get_or_insert_with(|| fidl::new_empty!(WlanFullmacOwePublicKey, D));
5339                fidl::decode!(
5340                    WlanFullmacOwePublicKey,
5341                    D,
5342                    val_ref,
5343                    decoder,
5344                    inner_offset,
5345                    inner_depth
5346                )?;
5347                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5348                {
5349                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5350                }
5351                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5352                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5353                }
5354            }
5355
5356            next_offset += envelope_size;
5357
5358            // Decode the remaining unknown envelopes.
5359            while next_offset < end_offset {
5360                _next_ordinal_to_read += 1;
5361                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5362                next_offset += envelope_size;
5363            }
5364
5365            Ok(())
5366        }
5367    }
5368
5369    impl WlanFullmacImplDeauthRequest {
5370        #[inline(always)]
5371        fn max_ordinal_present(&self) -> u64 {
5372            if let Some(_) = self.reason_code {
5373                return 2;
5374            }
5375            if let Some(_) = self.peer_sta_address {
5376                return 1;
5377            }
5378            0
5379        }
5380    }
5381
5382    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplDeauthRequest {
5383        type Borrowed<'a> = &'a Self;
5384        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5385            value
5386        }
5387    }
5388
5389    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplDeauthRequest {
5390        type Owned = Self;
5391
5392        #[inline(always)]
5393        fn inline_align(_context: fidl::encoding::Context) -> usize {
5394            8
5395        }
5396
5397        #[inline(always)]
5398        fn inline_size(_context: fidl::encoding::Context) -> usize {
5399            16
5400        }
5401    }
5402
5403    unsafe impl<D: fidl::encoding::ResourceDialect>
5404        fidl::encoding::Encode<WlanFullmacImplDeauthRequest, D> for &WlanFullmacImplDeauthRequest
5405    {
5406        unsafe fn encode(
5407            self,
5408            encoder: &mut fidl::encoding::Encoder<'_, D>,
5409            offset: usize,
5410            mut depth: fidl::encoding::Depth,
5411        ) -> fidl::Result<()> {
5412            encoder.debug_check_bounds::<WlanFullmacImplDeauthRequest>(offset);
5413            // Vector header
5414            let max_ordinal: u64 = self.max_ordinal_present();
5415            encoder.write_num(max_ordinal, offset);
5416            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5417            // Calling encoder.out_of_line_offset(0) is not allowed.
5418            if max_ordinal == 0 {
5419                return Ok(());
5420            }
5421            depth.increment()?;
5422            let envelope_size = 8;
5423            let bytes_len = max_ordinal as usize * envelope_size;
5424            #[allow(unused_variables)]
5425            let offset = encoder.out_of_line_offset(bytes_len);
5426            let mut _prev_end_offset: usize = 0;
5427            if 1 > max_ordinal {
5428                return Ok(());
5429            }
5430
5431            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5432            // are envelope_size bytes.
5433            let cur_offset: usize = (1 - 1) * envelope_size;
5434
5435            // Zero reserved fields.
5436            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5437
5438            // Safety:
5439            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5440            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5441            //   envelope_size bytes, there is always sufficient room.
5442            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5443                self.peer_sta_address
5444                    .as_ref()
5445                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5446                encoder,
5447                offset + cur_offset,
5448                depth,
5449            )?;
5450
5451            _prev_end_offset = cur_offset + envelope_size;
5452            if 2 > max_ordinal {
5453                return Ok(());
5454            }
5455
5456            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5457            // are envelope_size bytes.
5458            let cur_offset: usize = (2 - 1) * envelope_size;
5459
5460            // Zero reserved fields.
5461            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5462
5463            // Safety:
5464            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5465            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5466            //   envelope_size bytes, there is always sufficient room.
5467            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D>(
5468            self.reason_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow),
5469            encoder, offset + cur_offset, depth
5470        )?;
5471
5472            _prev_end_offset = cur_offset + envelope_size;
5473
5474            Ok(())
5475        }
5476    }
5477
5478    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5479        for WlanFullmacImplDeauthRequest
5480    {
5481        #[inline(always)]
5482        fn new_empty() -> Self {
5483            Self::default()
5484        }
5485
5486        unsafe fn decode(
5487            &mut self,
5488            decoder: &mut fidl::encoding::Decoder<'_, D>,
5489            offset: usize,
5490            mut depth: fidl::encoding::Depth,
5491        ) -> fidl::Result<()> {
5492            decoder.debug_check_bounds::<Self>(offset);
5493            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5494                None => return Err(fidl::Error::NotNullable),
5495                Some(len) => len,
5496            };
5497            // Calling decoder.out_of_line_offset(0) is not allowed.
5498            if len == 0 {
5499                return Ok(());
5500            };
5501            depth.increment()?;
5502            let envelope_size = 8;
5503            let bytes_len = len * envelope_size;
5504            let offset = decoder.out_of_line_offset(bytes_len)?;
5505            // Decode the envelope for each type.
5506            let mut _next_ordinal_to_read = 0;
5507            let mut next_offset = offset;
5508            let end_offset = offset + bytes_len;
5509            _next_ordinal_to_read += 1;
5510            if next_offset >= end_offset {
5511                return Ok(());
5512            }
5513
5514            // Decode unknown envelopes for gaps in ordinals.
5515            while _next_ordinal_to_read < 1 {
5516                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5517                _next_ordinal_to_read += 1;
5518                next_offset += envelope_size;
5519            }
5520
5521            let next_out_of_line = decoder.next_out_of_line();
5522            let handles_before = decoder.remaining_handles();
5523            if let Some((inlined, num_bytes, num_handles)) =
5524                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5525            {
5526                let member_inline_size =
5527                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
5528                        decoder.context,
5529                    );
5530                if inlined != (member_inline_size <= 4) {
5531                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5532                }
5533                let inner_offset;
5534                let mut inner_depth = depth.clone();
5535                if inlined {
5536                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5537                    inner_offset = next_offset;
5538                } else {
5539                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5540                    inner_depth.increment()?;
5541                }
5542                let val_ref = self
5543                    .peer_sta_address
5544                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
5545                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
5546                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5547                {
5548                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5549                }
5550                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5551                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5552                }
5553            }
5554
5555            next_offset += envelope_size;
5556            _next_ordinal_to_read += 1;
5557            if next_offset >= end_offset {
5558                return Ok(());
5559            }
5560
5561            // Decode unknown envelopes for gaps in ordinals.
5562            while _next_ordinal_to_read < 2 {
5563                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5564                _next_ordinal_to_read += 1;
5565                next_offset += envelope_size;
5566            }
5567
5568            let next_out_of_line = decoder.next_out_of_line();
5569            let handles_before = decoder.remaining_handles();
5570            if let Some((inlined, num_bytes, num_handles)) =
5571                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5572            {
5573                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5574                if inlined != (member_inline_size <= 4) {
5575                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5576                }
5577                let inner_offset;
5578                let mut inner_depth = depth.clone();
5579                if inlined {
5580                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5581                    inner_offset = next_offset;
5582                } else {
5583                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5584                    inner_depth.increment()?;
5585                }
5586                let val_ref = self.reason_code.get_or_insert_with(|| {
5587                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D)
5588                });
5589                fidl::decode!(
5590                    fidl_fuchsia_wlan_ieee80211_common::ReasonCode,
5591                    D,
5592                    val_ref,
5593                    decoder,
5594                    inner_offset,
5595                    inner_depth
5596                )?;
5597                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5598                {
5599                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5600                }
5601                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5602                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5603                }
5604            }
5605
5606            next_offset += envelope_size;
5607
5608            // Decode the remaining unknown envelopes.
5609            while next_offset < end_offset {
5610                _next_ordinal_to_read += 1;
5611                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5612                next_offset += envelope_size;
5613            }
5614
5615            Ok(())
5616        }
5617    }
5618
5619    impl WlanFullmacImplDisassocRequest {
5620        #[inline(always)]
5621        fn max_ordinal_present(&self) -> u64 {
5622            if let Some(_) = self.reason_code {
5623                return 2;
5624            }
5625            if let Some(_) = self.peer_sta_address {
5626                return 1;
5627            }
5628            0
5629        }
5630    }
5631
5632    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplDisassocRequest {
5633        type Borrowed<'a> = &'a Self;
5634        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5635            value
5636        }
5637    }
5638
5639    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplDisassocRequest {
5640        type Owned = Self;
5641
5642        #[inline(always)]
5643        fn inline_align(_context: fidl::encoding::Context) -> usize {
5644            8
5645        }
5646
5647        #[inline(always)]
5648        fn inline_size(_context: fidl::encoding::Context) -> usize {
5649            16
5650        }
5651    }
5652
5653    unsafe impl<D: fidl::encoding::ResourceDialect>
5654        fidl::encoding::Encode<WlanFullmacImplDisassocRequest, D>
5655        for &WlanFullmacImplDisassocRequest
5656    {
5657        unsafe fn encode(
5658            self,
5659            encoder: &mut fidl::encoding::Encoder<'_, D>,
5660            offset: usize,
5661            mut depth: fidl::encoding::Depth,
5662        ) -> fidl::Result<()> {
5663            encoder.debug_check_bounds::<WlanFullmacImplDisassocRequest>(offset);
5664            // Vector header
5665            let max_ordinal: u64 = self.max_ordinal_present();
5666            encoder.write_num(max_ordinal, offset);
5667            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5668            // Calling encoder.out_of_line_offset(0) is not allowed.
5669            if max_ordinal == 0 {
5670                return Ok(());
5671            }
5672            depth.increment()?;
5673            let envelope_size = 8;
5674            let bytes_len = max_ordinal as usize * envelope_size;
5675            #[allow(unused_variables)]
5676            let offset = encoder.out_of_line_offset(bytes_len);
5677            let mut _prev_end_offset: usize = 0;
5678            if 1 > max_ordinal {
5679                return Ok(());
5680            }
5681
5682            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5683            // are envelope_size bytes.
5684            let cur_offset: usize = (1 - 1) * envelope_size;
5685
5686            // Zero reserved fields.
5687            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5688
5689            // Safety:
5690            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5691            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5692            //   envelope_size bytes, there is always sufficient room.
5693            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5694                self.peer_sta_address
5695                    .as_ref()
5696                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5697                encoder,
5698                offset + cur_offset,
5699                depth,
5700            )?;
5701
5702            _prev_end_offset = cur_offset + envelope_size;
5703            if 2 > max_ordinal {
5704                return Ok(());
5705            }
5706
5707            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5708            // are envelope_size bytes.
5709            let cur_offset: usize = (2 - 1) * envelope_size;
5710
5711            // Zero reserved fields.
5712            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5713
5714            // Safety:
5715            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5716            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5717            //   envelope_size bytes, there is always sufficient room.
5718            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D>(
5719            self.reason_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow),
5720            encoder, offset + cur_offset, depth
5721        )?;
5722
5723            _prev_end_offset = cur_offset + envelope_size;
5724
5725            Ok(())
5726        }
5727    }
5728
5729    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5730        for WlanFullmacImplDisassocRequest
5731    {
5732        #[inline(always)]
5733        fn new_empty() -> Self {
5734            Self::default()
5735        }
5736
5737        unsafe fn decode(
5738            &mut self,
5739            decoder: &mut fidl::encoding::Decoder<'_, D>,
5740            offset: usize,
5741            mut depth: fidl::encoding::Depth,
5742        ) -> fidl::Result<()> {
5743            decoder.debug_check_bounds::<Self>(offset);
5744            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5745                None => return Err(fidl::Error::NotNullable),
5746                Some(len) => len,
5747            };
5748            // Calling decoder.out_of_line_offset(0) is not allowed.
5749            if len == 0 {
5750                return Ok(());
5751            };
5752            depth.increment()?;
5753            let envelope_size = 8;
5754            let bytes_len = len * envelope_size;
5755            let offset = decoder.out_of_line_offset(bytes_len)?;
5756            // Decode the envelope for each type.
5757            let mut _next_ordinal_to_read = 0;
5758            let mut next_offset = offset;
5759            let end_offset = offset + bytes_len;
5760            _next_ordinal_to_read += 1;
5761            if next_offset >= end_offset {
5762                return Ok(());
5763            }
5764
5765            // Decode unknown envelopes for gaps in ordinals.
5766            while _next_ordinal_to_read < 1 {
5767                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5768                _next_ordinal_to_read += 1;
5769                next_offset += envelope_size;
5770            }
5771
5772            let next_out_of_line = decoder.next_out_of_line();
5773            let handles_before = decoder.remaining_handles();
5774            if let Some((inlined, num_bytes, num_handles)) =
5775                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5776            {
5777                let member_inline_size =
5778                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
5779                        decoder.context,
5780                    );
5781                if inlined != (member_inline_size <= 4) {
5782                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5783                }
5784                let inner_offset;
5785                let mut inner_depth = depth.clone();
5786                if inlined {
5787                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5788                    inner_offset = next_offset;
5789                } else {
5790                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5791                    inner_depth.increment()?;
5792                }
5793                let val_ref = self
5794                    .peer_sta_address
5795                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
5796                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
5797                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5798                {
5799                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5800                }
5801                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5802                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5803                }
5804            }
5805
5806            next_offset += envelope_size;
5807            _next_ordinal_to_read += 1;
5808            if next_offset >= end_offset {
5809                return Ok(());
5810            }
5811
5812            // Decode unknown envelopes for gaps in ordinals.
5813            while _next_ordinal_to_read < 2 {
5814                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5815                _next_ordinal_to_read += 1;
5816                next_offset += envelope_size;
5817            }
5818
5819            let next_out_of_line = decoder.next_out_of_line();
5820            let handles_before = decoder.remaining_handles();
5821            if let Some((inlined, num_bytes, num_handles)) =
5822                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5823            {
5824                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5825                if inlined != (member_inline_size <= 4) {
5826                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5827                }
5828                let inner_offset;
5829                let mut inner_depth = depth.clone();
5830                if inlined {
5831                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5832                    inner_offset = next_offset;
5833                } else {
5834                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5835                    inner_depth.increment()?;
5836                }
5837                let val_ref = self.reason_code.get_or_insert_with(|| {
5838                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D)
5839                });
5840                fidl::decode!(
5841                    fidl_fuchsia_wlan_ieee80211_common::ReasonCode,
5842                    D,
5843                    val_ref,
5844                    decoder,
5845                    inner_offset,
5846                    inner_depth
5847                )?;
5848                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5849                {
5850                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5851                }
5852                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5853                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5854                }
5855            }
5856
5857            next_offset += envelope_size;
5858
5859            // Decode the remaining unknown envelopes.
5860            while next_offset < end_offset {
5861                _next_ordinal_to_read += 1;
5862                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5863                next_offset += envelope_size;
5864            }
5865
5866            Ok(())
5867        }
5868    }
5869
5870    impl WlanFullmacImplEapolTxRequest {
5871        #[inline(always)]
5872        fn max_ordinal_present(&self) -> u64 {
5873            if let Some(_) = self.data {
5874                return 3;
5875            }
5876            if let Some(_) = self.dst_addr {
5877                return 2;
5878            }
5879            if let Some(_) = self.src_addr {
5880                return 1;
5881            }
5882            0
5883        }
5884    }
5885
5886    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplEapolTxRequest {
5887        type Borrowed<'a> = &'a Self;
5888        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5889            value
5890        }
5891    }
5892
5893    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplEapolTxRequest {
5894        type Owned = Self;
5895
5896        #[inline(always)]
5897        fn inline_align(_context: fidl::encoding::Context) -> usize {
5898            8
5899        }
5900
5901        #[inline(always)]
5902        fn inline_size(_context: fidl::encoding::Context) -> usize {
5903            16
5904        }
5905    }
5906
5907    unsafe impl<D: fidl::encoding::ResourceDialect>
5908        fidl::encoding::Encode<WlanFullmacImplEapolTxRequest, D>
5909        for &WlanFullmacImplEapolTxRequest
5910    {
5911        unsafe fn encode(
5912            self,
5913            encoder: &mut fidl::encoding::Encoder<'_, D>,
5914            offset: usize,
5915            mut depth: fidl::encoding::Depth,
5916        ) -> fidl::Result<()> {
5917            encoder.debug_check_bounds::<WlanFullmacImplEapolTxRequest>(offset);
5918            // Vector header
5919            let max_ordinal: u64 = self.max_ordinal_present();
5920            encoder.write_num(max_ordinal, offset);
5921            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5922            // Calling encoder.out_of_line_offset(0) is not allowed.
5923            if max_ordinal == 0 {
5924                return Ok(());
5925            }
5926            depth.increment()?;
5927            let envelope_size = 8;
5928            let bytes_len = max_ordinal as usize * envelope_size;
5929            #[allow(unused_variables)]
5930            let offset = encoder.out_of_line_offset(bytes_len);
5931            let mut _prev_end_offset: usize = 0;
5932            if 1 > max_ordinal {
5933                return Ok(());
5934            }
5935
5936            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5937            // are envelope_size bytes.
5938            let cur_offset: usize = (1 - 1) * envelope_size;
5939
5940            // Zero reserved fields.
5941            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5942
5943            // Safety:
5944            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5945            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5946            //   envelope_size bytes, there is always sufficient room.
5947            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5948                self.src_addr
5949                    .as_ref()
5950                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5951                encoder,
5952                offset + cur_offset,
5953                depth,
5954            )?;
5955
5956            _prev_end_offset = cur_offset + envelope_size;
5957            if 2 > max_ordinal {
5958                return Ok(());
5959            }
5960
5961            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5962            // are envelope_size bytes.
5963            let cur_offset: usize = (2 - 1) * envelope_size;
5964
5965            // Zero reserved fields.
5966            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5967
5968            // Safety:
5969            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5970            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5971            //   envelope_size bytes, there is always sufficient room.
5972            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5973                self.dst_addr
5974                    .as_ref()
5975                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5976                encoder,
5977                offset + cur_offset,
5978                depth,
5979            )?;
5980
5981            _prev_end_offset = cur_offset + envelope_size;
5982            if 3 > max_ordinal {
5983                return Ok(());
5984            }
5985
5986            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5987            // are envelope_size bytes.
5988            let cur_offset: usize = (3 - 1) * envelope_size;
5989
5990            // Zero reserved fields.
5991            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5992
5993            // Safety:
5994            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5995            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5996            //   envelope_size bytes, there is always sufficient room.
5997            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
5998            self.data.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
5999            encoder, offset + cur_offset, depth
6000        )?;
6001
6002            _prev_end_offset = cur_offset + envelope_size;
6003
6004            Ok(())
6005        }
6006    }
6007
6008    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6009        for WlanFullmacImplEapolTxRequest
6010    {
6011        #[inline(always)]
6012        fn new_empty() -> Self {
6013            Self::default()
6014        }
6015
6016        unsafe fn decode(
6017            &mut self,
6018            decoder: &mut fidl::encoding::Decoder<'_, D>,
6019            offset: usize,
6020            mut depth: fidl::encoding::Depth,
6021        ) -> fidl::Result<()> {
6022            decoder.debug_check_bounds::<Self>(offset);
6023            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6024                None => return Err(fidl::Error::NotNullable),
6025                Some(len) => len,
6026            };
6027            // Calling decoder.out_of_line_offset(0) is not allowed.
6028            if len == 0 {
6029                return Ok(());
6030            };
6031            depth.increment()?;
6032            let envelope_size = 8;
6033            let bytes_len = len * envelope_size;
6034            let offset = decoder.out_of_line_offset(bytes_len)?;
6035            // Decode the envelope for each type.
6036            let mut _next_ordinal_to_read = 0;
6037            let mut next_offset = offset;
6038            let end_offset = offset + bytes_len;
6039            _next_ordinal_to_read += 1;
6040            if next_offset >= end_offset {
6041                return Ok(());
6042            }
6043
6044            // Decode unknown envelopes for gaps in ordinals.
6045            while _next_ordinal_to_read < 1 {
6046                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6047                _next_ordinal_to_read += 1;
6048                next_offset += envelope_size;
6049            }
6050
6051            let next_out_of_line = decoder.next_out_of_line();
6052            let handles_before = decoder.remaining_handles();
6053            if let Some((inlined, num_bytes, num_handles)) =
6054                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6055            {
6056                let member_inline_size =
6057                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
6058                        decoder.context,
6059                    );
6060                if inlined != (member_inline_size <= 4) {
6061                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6062                }
6063                let inner_offset;
6064                let mut inner_depth = depth.clone();
6065                if inlined {
6066                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6067                    inner_offset = next_offset;
6068                } else {
6069                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6070                    inner_depth.increment()?;
6071                }
6072                let val_ref = self
6073                    .src_addr
6074                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
6075                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
6076                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6077                {
6078                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6079                }
6080                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6081                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6082                }
6083            }
6084
6085            next_offset += envelope_size;
6086            _next_ordinal_to_read += 1;
6087            if next_offset >= end_offset {
6088                return Ok(());
6089            }
6090
6091            // Decode unknown envelopes for gaps in ordinals.
6092            while _next_ordinal_to_read < 2 {
6093                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6094                _next_ordinal_to_read += 1;
6095                next_offset += envelope_size;
6096            }
6097
6098            let next_out_of_line = decoder.next_out_of_line();
6099            let handles_before = decoder.remaining_handles();
6100            if let Some((inlined, num_bytes, num_handles)) =
6101                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6102            {
6103                let member_inline_size =
6104                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
6105                        decoder.context,
6106                    );
6107                if inlined != (member_inline_size <= 4) {
6108                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6109                }
6110                let inner_offset;
6111                let mut inner_depth = depth.clone();
6112                if inlined {
6113                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6114                    inner_offset = next_offset;
6115                } else {
6116                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6117                    inner_depth.increment()?;
6118                }
6119                let val_ref = self
6120                    .dst_addr
6121                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
6122                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
6123                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6124                {
6125                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6126                }
6127                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6128                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6129                }
6130            }
6131
6132            next_offset += envelope_size;
6133            _next_ordinal_to_read += 1;
6134            if next_offset >= end_offset {
6135                return Ok(());
6136            }
6137
6138            // Decode unknown envelopes for gaps in ordinals.
6139            while _next_ordinal_to_read < 3 {
6140                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6141                _next_ordinal_to_read += 1;
6142                next_offset += envelope_size;
6143            }
6144
6145            let next_out_of_line = decoder.next_out_of_line();
6146            let handles_before = decoder.remaining_handles();
6147            if let Some((inlined, num_bytes, num_handles)) =
6148                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6149            {
6150                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6151                if inlined != (member_inline_size <= 4) {
6152                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6153                }
6154                let inner_offset;
6155                let mut inner_depth = depth.clone();
6156                if inlined {
6157                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6158                    inner_offset = next_offset;
6159                } else {
6160                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6161                    inner_depth.increment()?;
6162                }
6163                let val_ref = self.data.get_or_insert_with(|| {
6164                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
6165                });
6166                fidl::decode!(
6167                    fidl::encoding::UnboundedVector<u8>,
6168                    D,
6169                    val_ref,
6170                    decoder,
6171                    inner_offset,
6172                    inner_depth
6173                )?;
6174                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6175                {
6176                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6177                }
6178                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6179                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6180                }
6181            }
6182
6183            next_offset += envelope_size;
6184
6185            // Decode the remaining unknown envelopes.
6186            while next_offset < end_offset {
6187                _next_ordinal_to_read += 1;
6188                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6189                next_offset += envelope_size;
6190            }
6191
6192            Ok(())
6193        }
6194    }
6195
6196    impl WlanFullmacImplIfcAssocIndRequest {
6197        #[inline(always)]
6198        fn max_ordinal_present(&self) -> u64 {
6199            if let Some(_) = self.vendor_ie {
6200                return 5;
6201            }
6202            if let Some(_) = self.rsne {
6203                return 4;
6204            }
6205            if let Some(_) = self.ssid {
6206                return 3;
6207            }
6208            if let Some(_) = self.listen_interval {
6209                return 2;
6210            }
6211            if let Some(_) = self.peer_sta_address {
6212                return 1;
6213            }
6214            0
6215        }
6216    }
6217
6218    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcAssocIndRequest {
6219        type Borrowed<'a> = &'a Self;
6220        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6221            value
6222        }
6223    }
6224
6225    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcAssocIndRequest {
6226        type Owned = Self;
6227
6228        #[inline(always)]
6229        fn inline_align(_context: fidl::encoding::Context) -> usize {
6230            8
6231        }
6232
6233        #[inline(always)]
6234        fn inline_size(_context: fidl::encoding::Context) -> usize {
6235            16
6236        }
6237    }
6238
6239    unsafe impl<D: fidl::encoding::ResourceDialect>
6240        fidl::encoding::Encode<WlanFullmacImplIfcAssocIndRequest, D>
6241        for &WlanFullmacImplIfcAssocIndRequest
6242    {
6243        unsafe fn encode(
6244            self,
6245            encoder: &mut fidl::encoding::Encoder<'_, D>,
6246            offset: usize,
6247            mut depth: fidl::encoding::Depth,
6248        ) -> fidl::Result<()> {
6249            encoder.debug_check_bounds::<WlanFullmacImplIfcAssocIndRequest>(offset);
6250            // Vector header
6251            let max_ordinal: u64 = self.max_ordinal_present();
6252            encoder.write_num(max_ordinal, offset);
6253            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6254            // Calling encoder.out_of_line_offset(0) is not allowed.
6255            if max_ordinal == 0 {
6256                return Ok(());
6257            }
6258            depth.increment()?;
6259            let envelope_size = 8;
6260            let bytes_len = max_ordinal as usize * envelope_size;
6261            #[allow(unused_variables)]
6262            let offset = encoder.out_of_line_offset(bytes_len);
6263            let mut _prev_end_offset: usize = 0;
6264            if 1 > max_ordinal {
6265                return Ok(());
6266            }
6267
6268            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6269            // are envelope_size bytes.
6270            let cur_offset: usize = (1 - 1) * envelope_size;
6271
6272            // Zero reserved fields.
6273            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6274
6275            // Safety:
6276            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6277            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6278            //   envelope_size bytes, there is always sufficient room.
6279            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
6280                self.peer_sta_address
6281                    .as_ref()
6282                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
6283                encoder,
6284                offset + cur_offset,
6285                depth,
6286            )?;
6287
6288            _prev_end_offset = cur_offset + envelope_size;
6289            if 2 > max_ordinal {
6290                return Ok(());
6291            }
6292
6293            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6294            // are envelope_size bytes.
6295            let cur_offset: usize = (2 - 1) * envelope_size;
6296
6297            // Zero reserved fields.
6298            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6299
6300            // Safety:
6301            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6302            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6303            //   envelope_size bytes, there is always sufficient room.
6304            fidl::encoding::encode_in_envelope_optional::<u16, D>(
6305                self.listen_interval.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
6306                encoder,
6307                offset + cur_offset,
6308                depth,
6309            )?;
6310
6311            _prev_end_offset = cur_offset + envelope_size;
6312            if 3 > max_ordinal {
6313                return Ok(());
6314            }
6315
6316            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6317            // are envelope_size bytes.
6318            let cur_offset: usize = (3 - 1) * envelope_size;
6319
6320            // Zero reserved fields.
6321            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6322
6323            // Safety:
6324            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6325            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6326            //   envelope_size bytes, there is always sufficient room.
6327            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
6328                self.ssid.as_ref().map(
6329                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
6330                ),
6331                encoder,
6332                offset + cur_offset,
6333                depth,
6334            )?;
6335
6336            _prev_end_offset = cur_offset + envelope_size;
6337            if 4 > max_ordinal {
6338                return Ok(());
6339            }
6340
6341            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6342            // are envelope_size bytes.
6343            let cur_offset: usize = (4 - 1) * envelope_size;
6344
6345            // Zero reserved fields.
6346            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6347
6348            // Safety:
6349            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6350            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6351            //   envelope_size bytes, there is always sufficient room.
6352            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 257>, D>(
6353                self.rsne.as_ref().map(
6354                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::ValueTypeMarker>::borrow,
6355                ),
6356                encoder,
6357                offset + cur_offset,
6358                depth,
6359            )?;
6360
6361            _prev_end_offset = cur_offset + envelope_size;
6362            if 5 > max_ordinal {
6363                return Ok(());
6364            }
6365
6366            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6367            // are envelope_size bytes.
6368            let cur_offset: usize = (5 - 1) * envelope_size;
6369
6370            // Zero reserved fields.
6371            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6372
6373            // Safety:
6374            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6375            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6376            //   envelope_size bytes, there is always sufficient room.
6377            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 514>, D>(
6378                self.vendor_ie.as_ref().map(
6379                    <fidl::encoding::Vector<u8, 514> as fidl::encoding::ValueTypeMarker>::borrow,
6380                ),
6381                encoder,
6382                offset + cur_offset,
6383                depth,
6384            )?;
6385
6386            _prev_end_offset = cur_offset + envelope_size;
6387
6388            Ok(())
6389        }
6390    }
6391
6392    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6393        for WlanFullmacImplIfcAssocIndRequest
6394    {
6395        #[inline(always)]
6396        fn new_empty() -> Self {
6397            Self::default()
6398        }
6399
6400        unsafe fn decode(
6401            &mut self,
6402            decoder: &mut fidl::encoding::Decoder<'_, D>,
6403            offset: usize,
6404            mut depth: fidl::encoding::Depth,
6405        ) -> fidl::Result<()> {
6406            decoder.debug_check_bounds::<Self>(offset);
6407            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6408                None => return Err(fidl::Error::NotNullable),
6409                Some(len) => len,
6410            };
6411            // Calling decoder.out_of_line_offset(0) is not allowed.
6412            if len == 0 {
6413                return Ok(());
6414            };
6415            depth.increment()?;
6416            let envelope_size = 8;
6417            let bytes_len = len * envelope_size;
6418            let offset = decoder.out_of_line_offset(bytes_len)?;
6419            // Decode the envelope for each type.
6420            let mut _next_ordinal_to_read = 0;
6421            let mut next_offset = offset;
6422            let end_offset = offset + bytes_len;
6423            _next_ordinal_to_read += 1;
6424            if next_offset >= end_offset {
6425                return Ok(());
6426            }
6427
6428            // Decode unknown envelopes for gaps in ordinals.
6429            while _next_ordinal_to_read < 1 {
6430                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6431                _next_ordinal_to_read += 1;
6432                next_offset += envelope_size;
6433            }
6434
6435            let next_out_of_line = decoder.next_out_of_line();
6436            let handles_before = decoder.remaining_handles();
6437            if let Some((inlined, num_bytes, num_handles)) =
6438                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6439            {
6440                let member_inline_size =
6441                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
6442                        decoder.context,
6443                    );
6444                if inlined != (member_inline_size <= 4) {
6445                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6446                }
6447                let inner_offset;
6448                let mut inner_depth = depth.clone();
6449                if inlined {
6450                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6451                    inner_offset = next_offset;
6452                } else {
6453                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6454                    inner_depth.increment()?;
6455                }
6456                let val_ref = self
6457                    .peer_sta_address
6458                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
6459                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
6460                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6461                {
6462                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6463                }
6464                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6465                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6466                }
6467            }
6468
6469            next_offset += envelope_size;
6470            _next_ordinal_to_read += 1;
6471            if next_offset >= end_offset {
6472                return Ok(());
6473            }
6474
6475            // Decode unknown envelopes for gaps in ordinals.
6476            while _next_ordinal_to_read < 2 {
6477                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6478                _next_ordinal_to_read += 1;
6479                next_offset += envelope_size;
6480            }
6481
6482            let next_out_of_line = decoder.next_out_of_line();
6483            let handles_before = decoder.remaining_handles();
6484            if let Some((inlined, num_bytes, num_handles)) =
6485                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6486            {
6487                let member_inline_size =
6488                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6489                if inlined != (member_inline_size <= 4) {
6490                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6491                }
6492                let inner_offset;
6493                let mut inner_depth = depth.clone();
6494                if inlined {
6495                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6496                    inner_offset = next_offset;
6497                } else {
6498                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6499                    inner_depth.increment()?;
6500                }
6501                let val_ref = self.listen_interval.get_or_insert_with(|| fidl::new_empty!(u16, D));
6502                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
6503                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6504                {
6505                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6506                }
6507                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6508                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6509                }
6510            }
6511
6512            next_offset += envelope_size;
6513            _next_ordinal_to_read += 1;
6514            if next_offset >= end_offset {
6515                return Ok(());
6516            }
6517
6518            // Decode unknown envelopes for gaps in ordinals.
6519            while _next_ordinal_to_read < 3 {
6520                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6521                _next_ordinal_to_read += 1;
6522                next_offset += envelope_size;
6523            }
6524
6525            let next_out_of_line = decoder.next_out_of_line();
6526            let handles_before = decoder.remaining_handles();
6527            if let Some((inlined, num_bytes, num_handles)) =
6528                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6529            {
6530                let member_inline_size =
6531                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
6532                        decoder.context,
6533                    );
6534                if inlined != (member_inline_size <= 4) {
6535                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6536                }
6537                let inner_offset;
6538                let mut inner_depth = depth.clone();
6539                if inlined {
6540                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6541                    inner_offset = next_offset;
6542                } else {
6543                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6544                    inner_depth.increment()?;
6545                }
6546                let val_ref = self
6547                    .ssid
6548                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
6549                fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
6550                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6551                {
6552                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6553                }
6554                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6555                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6556                }
6557            }
6558
6559            next_offset += envelope_size;
6560            _next_ordinal_to_read += 1;
6561            if next_offset >= end_offset {
6562                return Ok(());
6563            }
6564
6565            // Decode unknown envelopes for gaps in ordinals.
6566            while _next_ordinal_to_read < 4 {
6567                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6568                _next_ordinal_to_read += 1;
6569                next_offset += envelope_size;
6570            }
6571
6572            let next_out_of_line = decoder.next_out_of_line();
6573            let handles_before = decoder.remaining_handles();
6574            if let Some((inlined, num_bytes, num_handles)) =
6575                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6576            {
6577                let member_inline_size =
6578                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::TypeMarker>::inline_size(
6579                        decoder.context,
6580                    );
6581                if inlined != (member_inline_size <= 4) {
6582                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6583                }
6584                let inner_offset;
6585                let mut inner_depth = depth.clone();
6586                if inlined {
6587                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6588                    inner_offset = next_offset;
6589                } else {
6590                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6591                    inner_depth.increment()?;
6592                }
6593                let val_ref = self
6594                    .rsne
6595                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 257>, D));
6596                fidl::decode!(fidl::encoding::Vector<u8, 257>, D, val_ref, decoder, inner_offset, inner_depth)?;
6597                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6598                {
6599                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6600                }
6601                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6602                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6603                }
6604            }
6605
6606            next_offset += envelope_size;
6607            _next_ordinal_to_read += 1;
6608            if next_offset >= end_offset {
6609                return Ok(());
6610            }
6611
6612            // Decode unknown envelopes for gaps in ordinals.
6613            while _next_ordinal_to_read < 5 {
6614                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6615                _next_ordinal_to_read += 1;
6616                next_offset += envelope_size;
6617            }
6618
6619            let next_out_of_line = decoder.next_out_of_line();
6620            let handles_before = decoder.remaining_handles();
6621            if let Some((inlined, num_bytes, num_handles)) =
6622                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6623            {
6624                let member_inline_size =
6625                    <fidl::encoding::Vector<u8, 514> as fidl::encoding::TypeMarker>::inline_size(
6626                        decoder.context,
6627                    );
6628                if inlined != (member_inline_size <= 4) {
6629                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6630                }
6631                let inner_offset;
6632                let mut inner_depth = depth.clone();
6633                if inlined {
6634                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6635                    inner_offset = next_offset;
6636                } else {
6637                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6638                    inner_depth.increment()?;
6639                }
6640                let val_ref = self
6641                    .vendor_ie
6642                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 514>, D));
6643                fidl::decode!(fidl::encoding::Vector<u8, 514>, D, val_ref, decoder, inner_offset, inner_depth)?;
6644                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6645                {
6646                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6647                }
6648                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6649                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6650                }
6651            }
6652
6653            next_offset += envelope_size;
6654
6655            // Decode the remaining unknown envelopes.
6656            while next_offset < end_offset {
6657                _next_ordinal_to_read += 1;
6658                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6659                next_offset += envelope_size;
6660            }
6661
6662            Ok(())
6663        }
6664    }
6665
6666    impl WlanFullmacImplIfcAuthIndRequest {
6667        #[inline(always)]
6668        fn max_ordinal_present(&self) -> u64 {
6669            if let Some(_) = self.auth_type {
6670                return 2;
6671            }
6672            if let Some(_) = self.peer_sta_address {
6673                return 1;
6674            }
6675            0
6676        }
6677    }
6678
6679    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcAuthIndRequest {
6680        type Borrowed<'a> = &'a Self;
6681        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6682            value
6683        }
6684    }
6685
6686    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcAuthIndRequest {
6687        type Owned = Self;
6688
6689        #[inline(always)]
6690        fn inline_align(_context: fidl::encoding::Context) -> usize {
6691            8
6692        }
6693
6694        #[inline(always)]
6695        fn inline_size(_context: fidl::encoding::Context) -> usize {
6696            16
6697        }
6698    }
6699
6700    unsafe impl<D: fidl::encoding::ResourceDialect>
6701        fidl::encoding::Encode<WlanFullmacImplIfcAuthIndRequest, D>
6702        for &WlanFullmacImplIfcAuthIndRequest
6703    {
6704        unsafe fn encode(
6705            self,
6706            encoder: &mut fidl::encoding::Encoder<'_, D>,
6707            offset: usize,
6708            mut depth: fidl::encoding::Depth,
6709        ) -> fidl::Result<()> {
6710            encoder.debug_check_bounds::<WlanFullmacImplIfcAuthIndRequest>(offset);
6711            // Vector header
6712            let max_ordinal: u64 = self.max_ordinal_present();
6713            encoder.write_num(max_ordinal, offset);
6714            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6715            // Calling encoder.out_of_line_offset(0) is not allowed.
6716            if max_ordinal == 0 {
6717                return Ok(());
6718            }
6719            depth.increment()?;
6720            let envelope_size = 8;
6721            let bytes_len = max_ordinal as usize * envelope_size;
6722            #[allow(unused_variables)]
6723            let offset = encoder.out_of_line_offset(bytes_len);
6724            let mut _prev_end_offset: usize = 0;
6725            if 1 > max_ordinal {
6726                return Ok(());
6727            }
6728
6729            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6730            // are envelope_size bytes.
6731            let cur_offset: usize = (1 - 1) * envelope_size;
6732
6733            // Zero reserved fields.
6734            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6735
6736            // Safety:
6737            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6738            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6739            //   envelope_size bytes, there is always sufficient room.
6740            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
6741                self.peer_sta_address
6742                    .as_ref()
6743                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
6744                encoder,
6745                offset + cur_offset,
6746                depth,
6747            )?;
6748
6749            _prev_end_offset = cur_offset + envelope_size;
6750            if 2 > max_ordinal {
6751                return Ok(());
6752            }
6753
6754            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6755            // are envelope_size bytes.
6756            let cur_offset: usize = (2 - 1) * envelope_size;
6757
6758            // Zero reserved fields.
6759            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6760
6761            // Safety:
6762            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6763            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6764            //   envelope_size bytes, there is always sufficient room.
6765            fidl::encoding::encode_in_envelope_optional::<WlanAuthType, D>(
6766                self.auth_type
6767                    .as_ref()
6768                    .map(<WlanAuthType as fidl::encoding::ValueTypeMarker>::borrow),
6769                encoder,
6770                offset + cur_offset,
6771                depth,
6772            )?;
6773
6774            _prev_end_offset = cur_offset + envelope_size;
6775
6776            Ok(())
6777        }
6778    }
6779
6780    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6781        for WlanFullmacImplIfcAuthIndRequest
6782    {
6783        #[inline(always)]
6784        fn new_empty() -> Self {
6785            Self::default()
6786        }
6787
6788        unsafe fn decode(
6789            &mut self,
6790            decoder: &mut fidl::encoding::Decoder<'_, D>,
6791            offset: usize,
6792            mut depth: fidl::encoding::Depth,
6793        ) -> fidl::Result<()> {
6794            decoder.debug_check_bounds::<Self>(offset);
6795            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6796                None => return Err(fidl::Error::NotNullable),
6797                Some(len) => len,
6798            };
6799            // Calling decoder.out_of_line_offset(0) is not allowed.
6800            if len == 0 {
6801                return Ok(());
6802            };
6803            depth.increment()?;
6804            let envelope_size = 8;
6805            let bytes_len = len * envelope_size;
6806            let offset = decoder.out_of_line_offset(bytes_len)?;
6807            // Decode the envelope for each type.
6808            let mut _next_ordinal_to_read = 0;
6809            let mut next_offset = offset;
6810            let end_offset = offset + bytes_len;
6811            _next_ordinal_to_read += 1;
6812            if next_offset >= end_offset {
6813                return Ok(());
6814            }
6815
6816            // Decode unknown envelopes for gaps in ordinals.
6817            while _next_ordinal_to_read < 1 {
6818                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6819                _next_ordinal_to_read += 1;
6820                next_offset += envelope_size;
6821            }
6822
6823            let next_out_of_line = decoder.next_out_of_line();
6824            let handles_before = decoder.remaining_handles();
6825            if let Some((inlined, num_bytes, num_handles)) =
6826                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6827            {
6828                let member_inline_size =
6829                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
6830                        decoder.context,
6831                    );
6832                if inlined != (member_inline_size <= 4) {
6833                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6834                }
6835                let inner_offset;
6836                let mut inner_depth = depth.clone();
6837                if inlined {
6838                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6839                    inner_offset = next_offset;
6840                } else {
6841                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6842                    inner_depth.increment()?;
6843                }
6844                let val_ref = self
6845                    .peer_sta_address
6846                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
6847                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
6848                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6849                {
6850                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6851                }
6852                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6853                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6854                }
6855            }
6856
6857            next_offset += envelope_size;
6858            _next_ordinal_to_read += 1;
6859            if next_offset >= end_offset {
6860                return Ok(());
6861            }
6862
6863            // Decode unknown envelopes for gaps in ordinals.
6864            while _next_ordinal_to_read < 2 {
6865                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6866                _next_ordinal_to_read += 1;
6867                next_offset += envelope_size;
6868            }
6869
6870            let next_out_of_line = decoder.next_out_of_line();
6871            let handles_before = decoder.remaining_handles();
6872            if let Some((inlined, num_bytes, num_handles)) =
6873                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6874            {
6875                let member_inline_size =
6876                    <WlanAuthType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6877                if inlined != (member_inline_size <= 4) {
6878                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6879                }
6880                let inner_offset;
6881                let mut inner_depth = depth.clone();
6882                if inlined {
6883                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6884                    inner_offset = next_offset;
6885                } else {
6886                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6887                    inner_depth.increment()?;
6888                }
6889                let val_ref =
6890                    self.auth_type.get_or_insert_with(|| fidl::new_empty!(WlanAuthType, D));
6891                fidl::decode!(WlanAuthType, D, val_ref, decoder, inner_offset, inner_depth)?;
6892                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6893                {
6894                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6895                }
6896                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6897                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6898                }
6899            }
6900
6901            next_offset += envelope_size;
6902
6903            // Decode the remaining unknown envelopes.
6904            while next_offset < end_offset {
6905                _next_ordinal_to_read += 1;
6906                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6907                next_offset += envelope_size;
6908            }
6909
6910            Ok(())
6911        }
6912    }
6913
6914    impl WlanFullmacImplIfcConnectConfRequest {
6915        #[inline(always)]
6916        fn max_ordinal_present(&self) -> u64 {
6917            if let Some(_) = self.association_ies {
6918                return 4;
6919            }
6920            if let Some(_) = self.association_id {
6921                return 3;
6922            }
6923            if let Some(_) = self.result_code {
6924                return 2;
6925            }
6926            if let Some(_) = self.peer_sta_address {
6927                return 1;
6928            }
6929            0
6930        }
6931    }
6932
6933    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcConnectConfRequest {
6934        type Borrowed<'a> = &'a Self;
6935        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6936            value
6937        }
6938    }
6939
6940    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcConnectConfRequest {
6941        type Owned = Self;
6942
6943        #[inline(always)]
6944        fn inline_align(_context: fidl::encoding::Context) -> usize {
6945            8
6946        }
6947
6948        #[inline(always)]
6949        fn inline_size(_context: fidl::encoding::Context) -> usize {
6950            16
6951        }
6952    }
6953
6954    unsafe impl<D: fidl::encoding::ResourceDialect>
6955        fidl::encoding::Encode<WlanFullmacImplIfcConnectConfRequest, D>
6956        for &WlanFullmacImplIfcConnectConfRequest
6957    {
6958        unsafe fn encode(
6959            self,
6960            encoder: &mut fidl::encoding::Encoder<'_, D>,
6961            offset: usize,
6962            mut depth: fidl::encoding::Depth,
6963        ) -> fidl::Result<()> {
6964            encoder.debug_check_bounds::<WlanFullmacImplIfcConnectConfRequest>(offset);
6965            // Vector header
6966            let max_ordinal: u64 = self.max_ordinal_present();
6967            encoder.write_num(max_ordinal, offset);
6968            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6969            // Calling encoder.out_of_line_offset(0) is not allowed.
6970            if max_ordinal == 0 {
6971                return Ok(());
6972            }
6973            depth.increment()?;
6974            let envelope_size = 8;
6975            let bytes_len = max_ordinal as usize * envelope_size;
6976            #[allow(unused_variables)]
6977            let offset = encoder.out_of_line_offset(bytes_len);
6978            let mut _prev_end_offset: usize = 0;
6979            if 1 > max_ordinal {
6980                return Ok(());
6981            }
6982
6983            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6984            // are envelope_size bytes.
6985            let cur_offset: usize = (1 - 1) * envelope_size;
6986
6987            // Zero reserved fields.
6988            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6989
6990            // Safety:
6991            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6992            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6993            //   envelope_size bytes, there is always sufficient room.
6994            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
6995                self.peer_sta_address
6996                    .as_ref()
6997                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
6998                encoder,
6999                offset + cur_offset,
7000                depth,
7001            )?;
7002
7003            _prev_end_offset = cur_offset + envelope_size;
7004            if 2 > max_ordinal {
7005                return Ok(());
7006            }
7007
7008            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7009            // are envelope_size bytes.
7010            let cur_offset: usize = (2 - 1) * envelope_size;
7011
7012            // Zero reserved fields.
7013            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7014
7015            // Safety:
7016            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7017            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7018            //   envelope_size bytes, there is always sufficient room.
7019            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::StatusCode, D>(
7020            self.result_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
7021            encoder, offset + cur_offset, depth
7022        )?;
7023
7024            _prev_end_offset = cur_offset + envelope_size;
7025            if 3 > max_ordinal {
7026                return Ok(());
7027            }
7028
7029            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7030            // are envelope_size bytes.
7031            let cur_offset: usize = (3 - 1) * envelope_size;
7032
7033            // Zero reserved fields.
7034            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7035
7036            // Safety:
7037            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7038            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7039            //   envelope_size bytes, there is always sufficient room.
7040            fidl::encoding::encode_in_envelope_optional::<u16, D>(
7041                self.association_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
7042                encoder,
7043                offset + cur_offset,
7044                depth,
7045            )?;
7046
7047            _prev_end_offset = cur_offset + envelope_size;
7048            if 4 > max_ordinal {
7049                return Ok(());
7050            }
7051
7052            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7053            // are envelope_size bytes.
7054            let cur_offset: usize = (4 - 1) * envelope_size;
7055
7056            // Zero reserved fields.
7057            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7058
7059            // Safety:
7060            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7061            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7062            //   envelope_size bytes, there is always sufficient room.
7063            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
7064            self.association_ies.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
7065            encoder, offset + cur_offset, depth
7066        )?;
7067
7068            _prev_end_offset = cur_offset + envelope_size;
7069
7070            Ok(())
7071        }
7072    }
7073
7074    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7075        for WlanFullmacImplIfcConnectConfRequest
7076    {
7077        #[inline(always)]
7078        fn new_empty() -> Self {
7079            Self::default()
7080        }
7081
7082        unsafe fn decode(
7083            &mut self,
7084            decoder: &mut fidl::encoding::Decoder<'_, D>,
7085            offset: usize,
7086            mut depth: fidl::encoding::Depth,
7087        ) -> fidl::Result<()> {
7088            decoder.debug_check_bounds::<Self>(offset);
7089            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7090                None => return Err(fidl::Error::NotNullable),
7091                Some(len) => len,
7092            };
7093            // Calling decoder.out_of_line_offset(0) is not allowed.
7094            if len == 0 {
7095                return Ok(());
7096            };
7097            depth.increment()?;
7098            let envelope_size = 8;
7099            let bytes_len = len * envelope_size;
7100            let offset = decoder.out_of_line_offset(bytes_len)?;
7101            // Decode the envelope for each type.
7102            let mut _next_ordinal_to_read = 0;
7103            let mut next_offset = offset;
7104            let end_offset = offset + bytes_len;
7105            _next_ordinal_to_read += 1;
7106            if next_offset >= end_offset {
7107                return Ok(());
7108            }
7109
7110            // Decode unknown envelopes for gaps in ordinals.
7111            while _next_ordinal_to_read < 1 {
7112                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7113                _next_ordinal_to_read += 1;
7114                next_offset += envelope_size;
7115            }
7116
7117            let next_out_of_line = decoder.next_out_of_line();
7118            let handles_before = decoder.remaining_handles();
7119            if let Some((inlined, num_bytes, num_handles)) =
7120                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7121            {
7122                let member_inline_size =
7123                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
7124                        decoder.context,
7125                    );
7126                if inlined != (member_inline_size <= 4) {
7127                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7128                }
7129                let inner_offset;
7130                let mut inner_depth = depth.clone();
7131                if inlined {
7132                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7133                    inner_offset = next_offset;
7134                } else {
7135                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7136                    inner_depth.increment()?;
7137                }
7138                let val_ref = self
7139                    .peer_sta_address
7140                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
7141                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
7142                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7143                {
7144                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7145                }
7146                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7147                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7148                }
7149            }
7150
7151            next_offset += envelope_size;
7152            _next_ordinal_to_read += 1;
7153            if next_offset >= end_offset {
7154                return Ok(());
7155            }
7156
7157            // Decode unknown envelopes for gaps in ordinals.
7158            while _next_ordinal_to_read < 2 {
7159                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7160                _next_ordinal_to_read += 1;
7161                next_offset += envelope_size;
7162            }
7163
7164            let next_out_of_line = decoder.next_out_of_line();
7165            let handles_before = decoder.remaining_handles();
7166            if let Some((inlined, num_bytes, num_handles)) =
7167                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7168            {
7169                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7170                if inlined != (member_inline_size <= 4) {
7171                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7172                }
7173                let inner_offset;
7174                let mut inner_depth = depth.clone();
7175                if inlined {
7176                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7177                    inner_offset = next_offset;
7178                } else {
7179                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7180                    inner_depth.increment()?;
7181                }
7182                let val_ref = self.result_code.get_or_insert_with(|| {
7183                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::StatusCode, D)
7184                });
7185                fidl::decode!(
7186                    fidl_fuchsia_wlan_ieee80211_common::StatusCode,
7187                    D,
7188                    val_ref,
7189                    decoder,
7190                    inner_offset,
7191                    inner_depth
7192                )?;
7193                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7194                {
7195                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7196                }
7197                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7198                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7199                }
7200            }
7201
7202            next_offset += envelope_size;
7203            _next_ordinal_to_read += 1;
7204            if next_offset >= end_offset {
7205                return Ok(());
7206            }
7207
7208            // Decode unknown envelopes for gaps in ordinals.
7209            while _next_ordinal_to_read < 3 {
7210                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7211                _next_ordinal_to_read += 1;
7212                next_offset += envelope_size;
7213            }
7214
7215            let next_out_of_line = decoder.next_out_of_line();
7216            let handles_before = decoder.remaining_handles();
7217            if let Some((inlined, num_bytes, num_handles)) =
7218                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7219            {
7220                let member_inline_size =
7221                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7222                if inlined != (member_inline_size <= 4) {
7223                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7224                }
7225                let inner_offset;
7226                let mut inner_depth = depth.clone();
7227                if inlined {
7228                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7229                    inner_offset = next_offset;
7230                } else {
7231                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7232                    inner_depth.increment()?;
7233                }
7234                let val_ref = self.association_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
7235                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
7236                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7237                {
7238                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7239                }
7240                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7241                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7242                }
7243            }
7244
7245            next_offset += envelope_size;
7246            _next_ordinal_to_read += 1;
7247            if next_offset >= end_offset {
7248                return Ok(());
7249            }
7250
7251            // Decode unknown envelopes for gaps in ordinals.
7252            while _next_ordinal_to_read < 4 {
7253                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7254                _next_ordinal_to_read += 1;
7255                next_offset += envelope_size;
7256            }
7257
7258            let next_out_of_line = decoder.next_out_of_line();
7259            let handles_before = decoder.remaining_handles();
7260            if let Some((inlined, num_bytes, num_handles)) =
7261                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7262            {
7263                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7264                if inlined != (member_inline_size <= 4) {
7265                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7266                }
7267                let inner_offset;
7268                let mut inner_depth = depth.clone();
7269                if inlined {
7270                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7271                    inner_offset = next_offset;
7272                } else {
7273                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7274                    inner_depth.increment()?;
7275                }
7276                let val_ref = self.association_ies.get_or_insert_with(|| {
7277                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
7278                });
7279                fidl::decode!(
7280                    fidl::encoding::UnboundedVector<u8>,
7281                    D,
7282                    val_ref,
7283                    decoder,
7284                    inner_offset,
7285                    inner_depth
7286                )?;
7287                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7288                {
7289                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7290                }
7291                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7292                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7293                }
7294            }
7295
7296            next_offset += envelope_size;
7297
7298            // Decode the remaining unknown envelopes.
7299            while next_offset < end_offset {
7300                _next_ordinal_to_read += 1;
7301                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7302                next_offset += envelope_size;
7303            }
7304
7305            Ok(())
7306        }
7307    }
7308
7309    impl WlanFullmacImplIfcDeauthConfRequest {
7310        #[inline(always)]
7311        fn max_ordinal_present(&self) -> u64 {
7312            if let Some(_) = self.peer_sta_address {
7313                return 1;
7314            }
7315            0
7316        }
7317    }
7318
7319    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcDeauthConfRequest {
7320        type Borrowed<'a> = &'a Self;
7321        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7322            value
7323        }
7324    }
7325
7326    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcDeauthConfRequest {
7327        type Owned = Self;
7328
7329        #[inline(always)]
7330        fn inline_align(_context: fidl::encoding::Context) -> usize {
7331            8
7332        }
7333
7334        #[inline(always)]
7335        fn inline_size(_context: fidl::encoding::Context) -> usize {
7336            16
7337        }
7338    }
7339
7340    unsafe impl<D: fidl::encoding::ResourceDialect>
7341        fidl::encoding::Encode<WlanFullmacImplIfcDeauthConfRequest, D>
7342        for &WlanFullmacImplIfcDeauthConfRequest
7343    {
7344        unsafe fn encode(
7345            self,
7346            encoder: &mut fidl::encoding::Encoder<'_, D>,
7347            offset: usize,
7348            mut depth: fidl::encoding::Depth,
7349        ) -> fidl::Result<()> {
7350            encoder.debug_check_bounds::<WlanFullmacImplIfcDeauthConfRequest>(offset);
7351            // Vector header
7352            let max_ordinal: u64 = self.max_ordinal_present();
7353            encoder.write_num(max_ordinal, offset);
7354            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7355            // Calling encoder.out_of_line_offset(0) is not allowed.
7356            if max_ordinal == 0 {
7357                return Ok(());
7358            }
7359            depth.increment()?;
7360            let envelope_size = 8;
7361            let bytes_len = max_ordinal as usize * envelope_size;
7362            #[allow(unused_variables)]
7363            let offset = encoder.out_of_line_offset(bytes_len);
7364            let mut _prev_end_offset: usize = 0;
7365            if 1 > max_ordinal {
7366                return Ok(());
7367            }
7368
7369            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7370            // are envelope_size bytes.
7371            let cur_offset: usize = (1 - 1) * envelope_size;
7372
7373            // Zero reserved fields.
7374            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7375
7376            // Safety:
7377            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7378            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7379            //   envelope_size bytes, there is always sufficient room.
7380            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
7381                self.peer_sta_address
7382                    .as_ref()
7383                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
7384                encoder,
7385                offset + cur_offset,
7386                depth,
7387            )?;
7388
7389            _prev_end_offset = cur_offset + envelope_size;
7390
7391            Ok(())
7392        }
7393    }
7394
7395    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7396        for WlanFullmacImplIfcDeauthConfRequest
7397    {
7398        #[inline(always)]
7399        fn new_empty() -> Self {
7400            Self::default()
7401        }
7402
7403        unsafe fn decode(
7404            &mut self,
7405            decoder: &mut fidl::encoding::Decoder<'_, D>,
7406            offset: usize,
7407            mut depth: fidl::encoding::Depth,
7408        ) -> fidl::Result<()> {
7409            decoder.debug_check_bounds::<Self>(offset);
7410            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7411                None => return Err(fidl::Error::NotNullable),
7412                Some(len) => len,
7413            };
7414            // Calling decoder.out_of_line_offset(0) is not allowed.
7415            if len == 0 {
7416                return Ok(());
7417            };
7418            depth.increment()?;
7419            let envelope_size = 8;
7420            let bytes_len = len * envelope_size;
7421            let offset = decoder.out_of_line_offset(bytes_len)?;
7422            // Decode the envelope for each type.
7423            let mut _next_ordinal_to_read = 0;
7424            let mut next_offset = offset;
7425            let end_offset = offset + bytes_len;
7426            _next_ordinal_to_read += 1;
7427            if next_offset >= end_offset {
7428                return Ok(());
7429            }
7430
7431            // Decode unknown envelopes for gaps in ordinals.
7432            while _next_ordinal_to_read < 1 {
7433                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7434                _next_ordinal_to_read += 1;
7435                next_offset += envelope_size;
7436            }
7437
7438            let next_out_of_line = decoder.next_out_of_line();
7439            let handles_before = decoder.remaining_handles();
7440            if let Some((inlined, num_bytes, num_handles)) =
7441                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7442            {
7443                let member_inline_size =
7444                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
7445                        decoder.context,
7446                    );
7447                if inlined != (member_inline_size <= 4) {
7448                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7449                }
7450                let inner_offset;
7451                let mut inner_depth = depth.clone();
7452                if inlined {
7453                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7454                    inner_offset = next_offset;
7455                } else {
7456                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7457                    inner_depth.increment()?;
7458                }
7459                let val_ref = self
7460                    .peer_sta_address
7461                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
7462                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
7463                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7464                {
7465                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7466                }
7467                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7468                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7469                }
7470            }
7471
7472            next_offset += envelope_size;
7473
7474            // Decode the remaining unknown envelopes.
7475            while next_offset < end_offset {
7476                _next_ordinal_to_read += 1;
7477                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7478                next_offset += envelope_size;
7479            }
7480
7481            Ok(())
7482        }
7483    }
7484
7485    impl WlanFullmacImplIfcDeauthIndRequest {
7486        #[inline(always)]
7487        fn max_ordinal_present(&self) -> u64 {
7488            if let Some(_) = self.locally_initiated {
7489                return 3;
7490            }
7491            if let Some(_) = self.reason_code {
7492                return 2;
7493            }
7494            if let Some(_) = self.peer_sta_address {
7495                return 1;
7496            }
7497            0
7498        }
7499    }
7500
7501    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcDeauthIndRequest {
7502        type Borrowed<'a> = &'a Self;
7503        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7504            value
7505        }
7506    }
7507
7508    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcDeauthIndRequest {
7509        type Owned = Self;
7510
7511        #[inline(always)]
7512        fn inline_align(_context: fidl::encoding::Context) -> usize {
7513            8
7514        }
7515
7516        #[inline(always)]
7517        fn inline_size(_context: fidl::encoding::Context) -> usize {
7518            16
7519        }
7520    }
7521
7522    unsafe impl<D: fidl::encoding::ResourceDialect>
7523        fidl::encoding::Encode<WlanFullmacImplIfcDeauthIndRequest, D>
7524        for &WlanFullmacImplIfcDeauthIndRequest
7525    {
7526        unsafe fn encode(
7527            self,
7528            encoder: &mut fidl::encoding::Encoder<'_, D>,
7529            offset: usize,
7530            mut depth: fidl::encoding::Depth,
7531        ) -> fidl::Result<()> {
7532            encoder.debug_check_bounds::<WlanFullmacImplIfcDeauthIndRequest>(offset);
7533            // Vector header
7534            let max_ordinal: u64 = self.max_ordinal_present();
7535            encoder.write_num(max_ordinal, offset);
7536            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7537            // Calling encoder.out_of_line_offset(0) is not allowed.
7538            if max_ordinal == 0 {
7539                return Ok(());
7540            }
7541            depth.increment()?;
7542            let envelope_size = 8;
7543            let bytes_len = max_ordinal as usize * envelope_size;
7544            #[allow(unused_variables)]
7545            let offset = encoder.out_of_line_offset(bytes_len);
7546            let mut _prev_end_offset: usize = 0;
7547            if 1 > max_ordinal {
7548                return Ok(());
7549            }
7550
7551            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7552            // are envelope_size bytes.
7553            let cur_offset: usize = (1 - 1) * envelope_size;
7554
7555            // Zero reserved fields.
7556            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7557
7558            // Safety:
7559            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7560            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7561            //   envelope_size bytes, there is always sufficient room.
7562            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
7563                self.peer_sta_address
7564                    .as_ref()
7565                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
7566                encoder,
7567                offset + cur_offset,
7568                depth,
7569            )?;
7570
7571            _prev_end_offset = cur_offset + envelope_size;
7572            if 2 > max_ordinal {
7573                return Ok(());
7574            }
7575
7576            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7577            // are envelope_size bytes.
7578            let cur_offset: usize = (2 - 1) * envelope_size;
7579
7580            // Zero reserved fields.
7581            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7582
7583            // Safety:
7584            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7585            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7586            //   envelope_size bytes, there is always sufficient room.
7587            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D>(
7588            self.reason_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow),
7589            encoder, offset + cur_offset, depth
7590        )?;
7591
7592            _prev_end_offset = cur_offset + envelope_size;
7593            if 3 > max_ordinal {
7594                return Ok(());
7595            }
7596
7597            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7598            // are envelope_size bytes.
7599            let cur_offset: usize = (3 - 1) * envelope_size;
7600
7601            // Zero reserved fields.
7602            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7603
7604            // Safety:
7605            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7606            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7607            //   envelope_size bytes, there is always sufficient room.
7608            fidl::encoding::encode_in_envelope_optional::<bool, D>(
7609                self.locally_initiated
7610                    .as_ref()
7611                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
7612                encoder,
7613                offset + cur_offset,
7614                depth,
7615            )?;
7616
7617            _prev_end_offset = cur_offset + envelope_size;
7618
7619            Ok(())
7620        }
7621    }
7622
7623    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7624        for WlanFullmacImplIfcDeauthIndRequest
7625    {
7626        #[inline(always)]
7627        fn new_empty() -> Self {
7628            Self::default()
7629        }
7630
7631        unsafe fn decode(
7632            &mut self,
7633            decoder: &mut fidl::encoding::Decoder<'_, D>,
7634            offset: usize,
7635            mut depth: fidl::encoding::Depth,
7636        ) -> fidl::Result<()> {
7637            decoder.debug_check_bounds::<Self>(offset);
7638            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7639                None => return Err(fidl::Error::NotNullable),
7640                Some(len) => len,
7641            };
7642            // Calling decoder.out_of_line_offset(0) is not allowed.
7643            if len == 0 {
7644                return Ok(());
7645            };
7646            depth.increment()?;
7647            let envelope_size = 8;
7648            let bytes_len = len * envelope_size;
7649            let offset = decoder.out_of_line_offset(bytes_len)?;
7650            // Decode the envelope for each type.
7651            let mut _next_ordinal_to_read = 0;
7652            let mut next_offset = offset;
7653            let end_offset = offset + bytes_len;
7654            _next_ordinal_to_read += 1;
7655            if next_offset >= end_offset {
7656                return Ok(());
7657            }
7658
7659            // Decode unknown envelopes for gaps in ordinals.
7660            while _next_ordinal_to_read < 1 {
7661                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7662                _next_ordinal_to_read += 1;
7663                next_offset += envelope_size;
7664            }
7665
7666            let next_out_of_line = decoder.next_out_of_line();
7667            let handles_before = decoder.remaining_handles();
7668            if let Some((inlined, num_bytes, num_handles)) =
7669                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7670            {
7671                let member_inline_size =
7672                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
7673                        decoder.context,
7674                    );
7675                if inlined != (member_inline_size <= 4) {
7676                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7677                }
7678                let inner_offset;
7679                let mut inner_depth = depth.clone();
7680                if inlined {
7681                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7682                    inner_offset = next_offset;
7683                } else {
7684                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7685                    inner_depth.increment()?;
7686                }
7687                let val_ref = self
7688                    .peer_sta_address
7689                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
7690                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
7691                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7692                {
7693                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7694                }
7695                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7696                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7697                }
7698            }
7699
7700            next_offset += envelope_size;
7701            _next_ordinal_to_read += 1;
7702            if next_offset >= end_offset {
7703                return Ok(());
7704            }
7705
7706            // Decode unknown envelopes for gaps in ordinals.
7707            while _next_ordinal_to_read < 2 {
7708                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7709                _next_ordinal_to_read += 1;
7710                next_offset += envelope_size;
7711            }
7712
7713            let next_out_of_line = decoder.next_out_of_line();
7714            let handles_before = decoder.remaining_handles();
7715            if let Some((inlined, num_bytes, num_handles)) =
7716                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7717            {
7718                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7719                if inlined != (member_inline_size <= 4) {
7720                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7721                }
7722                let inner_offset;
7723                let mut inner_depth = depth.clone();
7724                if inlined {
7725                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7726                    inner_offset = next_offset;
7727                } else {
7728                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7729                    inner_depth.increment()?;
7730                }
7731                let val_ref = self.reason_code.get_or_insert_with(|| {
7732                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D)
7733                });
7734                fidl::decode!(
7735                    fidl_fuchsia_wlan_ieee80211_common::ReasonCode,
7736                    D,
7737                    val_ref,
7738                    decoder,
7739                    inner_offset,
7740                    inner_depth
7741                )?;
7742                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7743                {
7744                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7745                }
7746                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7747                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7748                }
7749            }
7750
7751            next_offset += envelope_size;
7752            _next_ordinal_to_read += 1;
7753            if next_offset >= end_offset {
7754                return Ok(());
7755            }
7756
7757            // Decode unknown envelopes for gaps in ordinals.
7758            while _next_ordinal_to_read < 3 {
7759                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7760                _next_ordinal_to_read += 1;
7761                next_offset += envelope_size;
7762            }
7763
7764            let next_out_of_line = decoder.next_out_of_line();
7765            let handles_before = decoder.remaining_handles();
7766            if let Some((inlined, num_bytes, num_handles)) =
7767                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7768            {
7769                let member_inline_size =
7770                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7771                if inlined != (member_inline_size <= 4) {
7772                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7773                }
7774                let inner_offset;
7775                let mut inner_depth = depth.clone();
7776                if inlined {
7777                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7778                    inner_offset = next_offset;
7779                } else {
7780                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7781                    inner_depth.increment()?;
7782                }
7783                let val_ref =
7784                    self.locally_initiated.get_or_insert_with(|| fidl::new_empty!(bool, D));
7785                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
7786                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7787                {
7788                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7789                }
7790                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7791                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7792                }
7793            }
7794
7795            next_offset += envelope_size;
7796
7797            // Decode the remaining unknown envelopes.
7798            while next_offset < end_offset {
7799                _next_ordinal_to_read += 1;
7800                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7801                next_offset += envelope_size;
7802            }
7803
7804            Ok(())
7805        }
7806    }
7807
7808    impl WlanFullmacImplIfcDisassocConfRequest {
7809        #[inline(always)]
7810        fn max_ordinal_present(&self) -> u64 {
7811            if let Some(_) = self.status {
7812                return 1;
7813            }
7814            0
7815        }
7816    }
7817
7818    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcDisassocConfRequest {
7819        type Borrowed<'a> = &'a Self;
7820        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7821            value
7822        }
7823    }
7824
7825    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcDisassocConfRequest {
7826        type Owned = Self;
7827
7828        #[inline(always)]
7829        fn inline_align(_context: fidl::encoding::Context) -> usize {
7830            8
7831        }
7832
7833        #[inline(always)]
7834        fn inline_size(_context: fidl::encoding::Context) -> usize {
7835            16
7836        }
7837    }
7838
7839    unsafe impl<D: fidl::encoding::ResourceDialect>
7840        fidl::encoding::Encode<WlanFullmacImplIfcDisassocConfRequest, D>
7841        for &WlanFullmacImplIfcDisassocConfRequest
7842    {
7843        unsafe fn encode(
7844            self,
7845            encoder: &mut fidl::encoding::Encoder<'_, D>,
7846            offset: usize,
7847            mut depth: fidl::encoding::Depth,
7848        ) -> fidl::Result<()> {
7849            encoder.debug_check_bounds::<WlanFullmacImplIfcDisassocConfRequest>(offset);
7850            // Vector header
7851            let max_ordinal: u64 = self.max_ordinal_present();
7852            encoder.write_num(max_ordinal, offset);
7853            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7854            // Calling encoder.out_of_line_offset(0) is not allowed.
7855            if max_ordinal == 0 {
7856                return Ok(());
7857            }
7858            depth.increment()?;
7859            let envelope_size = 8;
7860            let bytes_len = max_ordinal as usize * envelope_size;
7861            #[allow(unused_variables)]
7862            let offset = encoder.out_of_line_offset(bytes_len);
7863            let mut _prev_end_offset: usize = 0;
7864            if 1 > max_ordinal {
7865                return Ok(());
7866            }
7867
7868            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7869            // are envelope_size bytes.
7870            let cur_offset: usize = (1 - 1) * envelope_size;
7871
7872            // Zero reserved fields.
7873            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7874
7875            // Safety:
7876            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7877            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7878            //   envelope_size bytes, there is always sufficient room.
7879            fidl::encoding::encode_in_envelope_optional::<i32, D>(
7880                self.status.as_ref().map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
7881                encoder,
7882                offset + cur_offset,
7883                depth,
7884            )?;
7885
7886            _prev_end_offset = cur_offset + envelope_size;
7887
7888            Ok(())
7889        }
7890    }
7891
7892    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7893        for WlanFullmacImplIfcDisassocConfRequest
7894    {
7895        #[inline(always)]
7896        fn new_empty() -> Self {
7897            Self::default()
7898        }
7899
7900        unsafe fn decode(
7901            &mut self,
7902            decoder: &mut fidl::encoding::Decoder<'_, D>,
7903            offset: usize,
7904            mut depth: fidl::encoding::Depth,
7905        ) -> fidl::Result<()> {
7906            decoder.debug_check_bounds::<Self>(offset);
7907            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7908                None => return Err(fidl::Error::NotNullable),
7909                Some(len) => len,
7910            };
7911            // Calling decoder.out_of_line_offset(0) is not allowed.
7912            if len == 0 {
7913                return Ok(());
7914            };
7915            depth.increment()?;
7916            let envelope_size = 8;
7917            let bytes_len = len * envelope_size;
7918            let offset = decoder.out_of_line_offset(bytes_len)?;
7919            // Decode the envelope for each type.
7920            let mut _next_ordinal_to_read = 0;
7921            let mut next_offset = offset;
7922            let end_offset = offset + bytes_len;
7923            _next_ordinal_to_read += 1;
7924            if next_offset >= end_offset {
7925                return Ok(());
7926            }
7927
7928            // Decode unknown envelopes for gaps in ordinals.
7929            while _next_ordinal_to_read < 1 {
7930                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7931                _next_ordinal_to_read += 1;
7932                next_offset += envelope_size;
7933            }
7934
7935            let next_out_of_line = decoder.next_out_of_line();
7936            let handles_before = decoder.remaining_handles();
7937            if let Some((inlined, num_bytes, num_handles)) =
7938                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7939            {
7940                let member_inline_size =
7941                    <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7942                if inlined != (member_inline_size <= 4) {
7943                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7944                }
7945                let inner_offset;
7946                let mut inner_depth = depth.clone();
7947                if inlined {
7948                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7949                    inner_offset = next_offset;
7950                } else {
7951                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7952                    inner_depth.increment()?;
7953                }
7954                let val_ref = self.status.get_or_insert_with(|| fidl::new_empty!(i32, D));
7955                fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
7956                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7957                {
7958                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7959                }
7960                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7961                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7962                }
7963            }
7964
7965            next_offset += envelope_size;
7966
7967            // Decode the remaining unknown envelopes.
7968            while next_offset < end_offset {
7969                _next_ordinal_to_read += 1;
7970                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7971                next_offset += envelope_size;
7972            }
7973
7974            Ok(())
7975        }
7976    }
7977
7978    impl WlanFullmacImplIfcDisassocIndRequest {
7979        #[inline(always)]
7980        fn max_ordinal_present(&self) -> u64 {
7981            if let Some(_) = self.locally_initiated {
7982                return 3;
7983            }
7984            if let Some(_) = self.reason_code {
7985                return 2;
7986            }
7987            if let Some(_) = self.peer_sta_address {
7988                return 1;
7989            }
7990            0
7991        }
7992    }
7993
7994    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcDisassocIndRequest {
7995        type Borrowed<'a> = &'a Self;
7996        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7997            value
7998        }
7999    }
8000
8001    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcDisassocIndRequest {
8002        type Owned = Self;
8003
8004        #[inline(always)]
8005        fn inline_align(_context: fidl::encoding::Context) -> usize {
8006            8
8007        }
8008
8009        #[inline(always)]
8010        fn inline_size(_context: fidl::encoding::Context) -> usize {
8011            16
8012        }
8013    }
8014
8015    unsafe impl<D: fidl::encoding::ResourceDialect>
8016        fidl::encoding::Encode<WlanFullmacImplIfcDisassocIndRequest, D>
8017        for &WlanFullmacImplIfcDisassocIndRequest
8018    {
8019        unsafe fn encode(
8020            self,
8021            encoder: &mut fidl::encoding::Encoder<'_, D>,
8022            offset: usize,
8023            mut depth: fidl::encoding::Depth,
8024        ) -> fidl::Result<()> {
8025            encoder.debug_check_bounds::<WlanFullmacImplIfcDisassocIndRequest>(offset);
8026            // Vector header
8027            let max_ordinal: u64 = self.max_ordinal_present();
8028            encoder.write_num(max_ordinal, offset);
8029            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8030            // Calling encoder.out_of_line_offset(0) is not allowed.
8031            if max_ordinal == 0 {
8032                return Ok(());
8033            }
8034            depth.increment()?;
8035            let envelope_size = 8;
8036            let bytes_len = max_ordinal as usize * envelope_size;
8037            #[allow(unused_variables)]
8038            let offset = encoder.out_of_line_offset(bytes_len);
8039            let mut _prev_end_offset: usize = 0;
8040            if 1 > max_ordinal {
8041                return Ok(());
8042            }
8043
8044            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8045            // are envelope_size bytes.
8046            let cur_offset: usize = (1 - 1) * envelope_size;
8047
8048            // Zero reserved fields.
8049            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8050
8051            // Safety:
8052            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8053            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8054            //   envelope_size bytes, there is always sufficient room.
8055            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
8056                self.peer_sta_address
8057                    .as_ref()
8058                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
8059                encoder,
8060                offset + cur_offset,
8061                depth,
8062            )?;
8063
8064            _prev_end_offset = cur_offset + envelope_size;
8065            if 2 > max_ordinal {
8066                return Ok(());
8067            }
8068
8069            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8070            // are envelope_size bytes.
8071            let cur_offset: usize = (2 - 1) * envelope_size;
8072
8073            // Zero reserved fields.
8074            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8075
8076            // Safety:
8077            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8078            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8079            //   envelope_size bytes, there is always sufficient room.
8080            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D>(
8081            self.reason_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow),
8082            encoder, offset + cur_offset, depth
8083        )?;
8084
8085            _prev_end_offset = cur_offset + envelope_size;
8086            if 3 > max_ordinal {
8087                return Ok(());
8088            }
8089
8090            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8091            // are envelope_size bytes.
8092            let cur_offset: usize = (3 - 1) * envelope_size;
8093
8094            // Zero reserved fields.
8095            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8096
8097            // Safety:
8098            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8099            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8100            //   envelope_size bytes, there is always sufficient room.
8101            fidl::encoding::encode_in_envelope_optional::<bool, D>(
8102                self.locally_initiated
8103                    .as_ref()
8104                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
8105                encoder,
8106                offset + cur_offset,
8107                depth,
8108            )?;
8109
8110            _prev_end_offset = cur_offset + envelope_size;
8111
8112            Ok(())
8113        }
8114    }
8115
8116    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8117        for WlanFullmacImplIfcDisassocIndRequest
8118    {
8119        #[inline(always)]
8120        fn new_empty() -> Self {
8121            Self::default()
8122        }
8123
8124        unsafe fn decode(
8125            &mut self,
8126            decoder: &mut fidl::encoding::Decoder<'_, D>,
8127            offset: usize,
8128            mut depth: fidl::encoding::Depth,
8129        ) -> fidl::Result<()> {
8130            decoder.debug_check_bounds::<Self>(offset);
8131            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8132                None => return Err(fidl::Error::NotNullable),
8133                Some(len) => len,
8134            };
8135            // Calling decoder.out_of_line_offset(0) is not allowed.
8136            if len == 0 {
8137                return Ok(());
8138            };
8139            depth.increment()?;
8140            let envelope_size = 8;
8141            let bytes_len = len * envelope_size;
8142            let offset = decoder.out_of_line_offset(bytes_len)?;
8143            // Decode the envelope for each type.
8144            let mut _next_ordinal_to_read = 0;
8145            let mut next_offset = offset;
8146            let end_offset = offset + bytes_len;
8147            _next_ordinal_to_read += 1;
8148            if next_offset >= end_offset {
8149                return Ok(());
8150            }
8151
8152            // Decode unknown envelopes for gaps in ordinals.
8153            while _next_ordinal_to_read < 1 {
8154                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8155                _next_ordinal_to_read += 1;
8156                next_offset += envelope_size;
8157            }
8158
8159            let next_out_of_line = decoder.next_out_of_line();
8160            let handles_before = decoder.remaining_handles();
8161            if let Some((inlined, num_bytes, num_handles)) =
8162                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8163            {
8164                let member_inline_size =
8165                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
8166                        decoder.context,
8167                    );
8168                if inlined != (member_inline_size <= 4) {
8169                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8170                }
8171                let inner_offset;
8172                let mut inner_depth = depth.clone();
8173                if inlined {
8174                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8175                    inner_offset = next_offset;
8176                } else {
8177                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8178                    inner_depth.increment()?;
8179                }
8180                let val_ref = self
8181                    .peer_sta_address
8182                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
8183                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
8184                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8185                {
8186                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8187                }
8188                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8189                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8190                }
8191            }
8192
8193            next_offset += envelope_size;
8194            _next_ordinal_to_read += 1;
8195            if next_offset >= end_offset {
8196                return Ok(());
8197            }
8198
8199            // Decode unknown envelopes for gaps in ordinals.
8200            while _next_ordinal_to_read < 2 {
8201                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8202                _next_ordinal_to_read += 1;
8203                next_offset += envelope_size;
8204            }
8205
8206            let next_out_of_line = decoder.next_out_of_line();
8207            let handles_before = decoder.remaining_handles();
8208            if let Some((inlined, num_bytes, num_handles)) =
8209                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8210            {
8211                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8212                if inlined != (member_inline_size <= 4) {
8213                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8214                }
8215                let inner_offset;
8216                let mut inner_depth = depth.clone();
8217                if inlined {
8218                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8219                    inner_offset = next_offset;
8220                } else {
8221                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8222                    inner_depth.increment()?;
8223                }
8224                let val_ref = self.reason_code.get_or_insert_with(|| {
8225                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D)
8226                });
8227                fidl::decode!(
8228                    fidl_fuchsia_wlan_ieee80211_common::ReasonCode,
8229                    D,
8230                    val_ref,
8231                    decoder,
8232                    inner_offset,
8233                    inner_depth
8234                )?;
8235                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8236                {
8237                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8238                }
8239                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8240                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8241                }
8242            }
8243
8244            next_offset += envelope_size;
8245            _next_ordinal_to_read += 1;
8246            if next_offset >= end_offset {
8247                return Ok(());
8248            }
8249
8250            // Decode unknown envelopes for gaps in ordinals.
8251            while _next_ordinal_to_read < 3 {
8252                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8253                _next_ordinal_to_read += 1;
8254                next_offset += envelope_size;
8255            }
8256
8257            let next_out_of_line = decoder.next_out_of_line();
8258            let handles_before = decoder.remaining_handles();
8259            if let Some((inlined, num_bytes, num_handles)) =
8260                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8261            {
8262                let member_inline_size =
8263                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8264                if inlined != (member_inline_size <= 4) {
8265                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8266                }
8267                let inner_offset;
8268                let mut inner_depth = depth.clone();
8269                if inlined {
8270                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8271                    inner_offset = next_offset;
8272                } else {
8273                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8274                    inner_depth.increment()?;
8275                }
8276                let val_ref =
8277                    self.locally_initiated.get_or_insert_with(|| fidl::new_empty!(bool, D));
8278                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
8279                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8280                {
8281                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8282                }
8283                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8284                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8285                }
8286            }
8287
8288            next_offset += envelope_size;
8289
8290            // Decode the remaining unknown envelopes.
8291            while next_offset < end_offset {
8292                _next_ordinal_to_read += 1;
8293                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8294                next_offset += envelope_size;
8295            }
8296
8297            Ok(())
8298        }
8299    }
8300
8301    impl WlanFullmacImplIfcEapolConfRequest {
8302        #[inline(always)]
8303        fn max_ordinal_present(&self) -> u64 {
8304            if let Some(_) = self.dst_addr {
8305                return 2;
8306            }
8307            if let Some(_) = self.result_code {
8308                return 1;
8309            }
8310            0
8311        }
8312    }
8313
8314    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcEapolConfRequest {
8315        type Borrowed<'a> = &'a Self;
8316        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8317            value
8318        }
8319    }
8320
8321    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcEapolConfRequest {
8322        type Owned = Self;
8323
8324        #[inline(always)]
8325        fn inline_align(_context: fidl::encoding::Context) -> usize {
8326            8
8327        }
8328
8329        #[inline(always)]
8330        fn inline_size(_context: fidl::encoding::Context) -> usize {
8331            16
8332        }
8333    }
8334
8335    unsafe impl<D: fidl::encoding::ResourceDialect>
8336        fidl::encoding::Encode<WlanFullmacImplIfcEapolConfRequest, D>
8337        for &WlanFullmacImplIfcEapolConfRequest
8338    {
8339        unsafe fn encode(
8340            self,
8341            encoder: &mut fidl::encoding::Encoder<'_, D>,
8342            offset: usize,
8343            mut depth: fidl::encoding::Depth,
8344        ) -> fidl::Result<()> {
8345            encoder.debug_check_bounds::<WlanFullmacImplIfcEapolConfRequest>(offset);
8346            // Vector header
8347            let max_ordinal: u64 = self.max_ordinal_present();
8348            encoder.write_num(max_ordinal, offset);
8349            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8350            // Calling encoder.out_of_line_offset(0) is not allowed.
8351            if max_ordinal == 0 {
8352                return Ok(());
8353            }
8354            depth.increment()?;
8355            let envelope_size = 8;
8356            let bytes_len = max_ordinal as usize * envelope_size;
8357            #[allow(unused_variables)]
8358            let offset = encoder.out_of_line_offset(bytes_len);
8359            let mut _prev_end_offset: usize = 0;
8360            if 1 > max_ordinal {
8361                return Ok(());
8362            }
8363
8364            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8365            // are envelope_size bytes.
8366            let cur_offset: usize = (1 - 1) * envelope_size;
8367
8368            // Zero reserved fields.
8369            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8370
8371            // Safety:
8372            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8373            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8374            //   envelope_size bytes, there is always sufficient room.
8375            fidl::encoding::encode_in_envelope_optional::<EapolTxResult, D>(
8376                self.result_code
8377                    .as_ref()
8378                    .map(<EapolTxResult as fidl::encoding::ValueTypeMarker>::borrow),
8379                encoder,
8380                offset + cur_offset,
8381                depth,
8382            )?;
8383
8384            _prev_end_offset = cur_offset + envelope_size;
8385            if 2 > max_ordinal {
8386                return Ok(());
8387            }
8388
8389            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8390            // are envelope_size bytes.
8391            let cur_offset: usize = (2 - 1) * envelope_size;
8392
8393            // Zero reserved fields.
8394            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8395
8396            // Safety:
8397            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8398            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8399            //   envelope_size bytes, there is always sufficient room.
8400            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
8401                self.dst_addr
8402                    .as_ref()
8403                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
8404                encoder,
8405                offset + cur_offset,
8406                depth,
8407            )?;
8408
8409            _prev_end_offset = cur_offset + envelope_size;
8410
8411            Ok(())
8412        }
8413    }
8414
8415    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8416        for WlanFullmacImplIfcEapolConfRequest
8417    {
8418        #[inline(always)]
8419        fn new_empty() -> Self {
8420            Self::default()
8421        }
8422
8423        unsafe fn decode(
8424            &mut self,
8425            decoder: &mut fidl::encoding::Decoder<'_, D>,
8426            offset: usize,
8427            mut depth: fidl::encoding::Depth,
8428        ) -> fidl::Result<()> {
8429            decoder.debug_check_bounds::<Self>(offset);
8430            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8431                None => return Err(fidl::Error::NotNullable),
8432                Some(len) => len,
8433            };
8434            // Calling decoder.out_of_line_offset(0) is not allowed.
8435            if len == 0 {
8436                return Ok(());
8437            };
8438            depth.increment()?;
8439            let envelope_size = 8;
8440            let bytes_len = len * envelope_size;
8441            let offset = decoder.out_of_line_offset(bytes_len)?;
8442            // Decode the envelope for each type.
8443            let mut _next_ordinal_to_read = 0;
8444            let mut next_offset = offset;
8445            let end_offset = offset + bytes_len;
8446            _next_ordinal_to_read += 1;
8447            if next_offset >= end_offset {
8448                return Ok(());
8449            }
8450
8451            // Decode unknown envelopes for gaps in ordinals.
8452            while _next_ordinal_to_read < 1 {
8453                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8454                _next_ordinal_to_read += 1;
8455                next_offset += envelope_size;
8456            }
8457
8458            let next_out_of_line = decoder.next_out_of_line();
8459            let handles_before = decoder.remaining_handles();
8460            if let Some((inlined, num_bytes, num_handles)) =
8461                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8462            {
8463                let member_inline_size =
8464                    <EapolTxResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8465                if inlined != (member_inline_size <= 4) {
8466                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8467                }
8468                let inner_offset;
8469                let mut inner_depth = depth.clone();
8470                if inlined {
8471                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8472                    inner_offset = next_offset;
8473                } else {
8474                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8475                    inner_depth.increment()?;
8476                }
8477                let val_ref =
8478                    self.result_code.get_or_insert_with(|| fidl::new_empty!(EapolTxResult, D));
8479                fidl::decode!(EapolTxResult, D, val_ref, decoder, inner_offset, inner_depth)?;
8480                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8481                {
8482                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8483                }
8484                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8485                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8486                }
8487            }
8488
8489            next_offset += envelope_size;
8490            _next_ordinal_to_read += 1;
8491            if next_offset >= end_offset {
8492                return Ok(());
8493            }
8494
8495            // Decode unknown envelopes for gaps in ordinals.
8496            while _next_ordinal_to_read < 2 {
8497                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8498                _next_ordinal_to_read += 1;
8499                next_offset += envelope_size;
8500            }
8501
8502            let next_out_of_line = decoder.next_out_of_line();
8503            let handles_before = decoder.remaining_handles();
8504            if let Some((inlined, num_bytes, num_handles)) =
8505                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8506            {
8507                let member_inline_size =
8508                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
8509                        decoder.context,
8510                    );
8511                if inlined != (member_inline_size <= 4) {
8512                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8513                }
8514                let inner_offset;
8515                let mut inner_depth = depth.clone();
8516                if inlined {
8517                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8518                    inner_offset = next_offset;
8519                } else {
8520                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8521                    inner_depth.increment()?;
8522                }
8523                let val_ref = self
8524                    .dst_addr
8525                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
8526                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
8527                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8528                {
8529                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8530                }
8531                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8532                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8533                }
8534            }
8535
8536            next_offset += envelope_size;
8537
8538            // Decode the remaining unknown envelopes.
8539            while next_offset < end_offset {
8540                _next_ordinal_to_read += 1;
8541                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8542                next_offset += envelope_size;
8543            }
8544
8545            Ok(())
8546        }
8547    }
8548
8549    impl WlanFullmacImplIfcEapolIndRequest {
8550        #[inline(always)]
8551        fn max_ordinal_present(&self) -> u64 {
8552            if let Some(_) = self.data {
8553                return 3;
8554            }
8555            if let Some(_) = self.dst_addr {
8556                return 2;
8557            }
8558            if let Some(_) = self.src_addr {
8559                return 1;
8560            }
8561            0
8562        }
8563    }
8564
8565    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcEapolIndRequest {
8566        type Borrowed<'a> = &'a Self;
8567        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8568            value
8569        }
8570    }
8571
8572    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcEapolIndRequest {
8573        type Owned = Self;
8574
8575        #[inline(always)]
8576        fn inline_align(_context: fidl::encoding::Context) -> usize {
8577            8
8578        }
8579
8580        #[inline(always)]
8581        fn inline_size(_context: fidl::encoding::Context) -> usize {
8582            16
8583        }
8584    }
8585
8586    unsafe impl<D: fidl::encoding::ResourceDialect>
8587        fidl::encoding::Encode<WlanFullmacImplIfcEapolIndRequest, D>
8588        for &WlanFullmacImplIfcEapolIndRequest
8589    {
8590        unsafe fn encode(
8591            self,
8592            encoder: &mut fidl::encoding::Encoder<'_, D>,
8593            offset: usize,
8594            mut depth: fidl::encoding::Depth,
8595        ) -> fidl::Result<()> {
8596            encoder.debug_check_bounds::<WlanFullmacImplIfcEapolIndRequest>(offset);
8597            // Vector header
8598            let max_ordinal: u64 = self.max_ordinal_present();
8599            encoder.write_num(max_ordinal, offset);
8600            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8601            // Calling encoder.out_of_line_offset(0) is not allowed.
8602            if max_ordinal == 0 {
8603                return Ok(());
8604            }
8605            depth.increment()?;
8606            let envelope_size = 8;
8607            let bytes_len = max_ordinal as usize * envelope_size;
8608            #[allow(unused_variables)]
8609            let offset = encoder.out_of_line_offset(bytes_len);
8610            let mut _prev_end_offset: usize = 0;
8611            if 1 > max_ordinal {
8612                return Ok(());
8613            }
8614
8615            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8616            // are envelope_size bytes.
8617            let cur_offset: usize = (1 - 1) * envelope_size;
8618
8619            // Zero reserved fields.
8620            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8621
8622            // Safety:
8623            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8624            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8625            //   envelope_size bytes, there is always sufficient room.
8626            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
8627                self.src_addr
8628                    .as_ref()
8629                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
8630                encoder,
8631                offset + cur_offset,
8632                depth,
8633            )?;
8634
8635            _prev_end_offset = cur_offset + envelope_size;
8636            if 2 > max_ordinal {
8637                return Ok(());
8638            }
8639
8640            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8641            // are envelope_size bytes.
8642            let cur_offset: usize = (2 - 1) * envelope_size;
8643
8644            // Zero reserved fields.
8645            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8646
8647            // Safety:
8648            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8649            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8650            //   envelope_size bytes, there is always sufficient room.
8651            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
8652                self.dst_addr
8653                    .as_ref()
8654                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
8655                encoder,
8656                offset + cur_offset,
8657                depth,
8658            )?;
8659
8660            _prev_end_offset = cur_offset + envelope_size;
8661            if 3 > max_ordinal {
8662                return Ok(());
8663            }
8664
8665            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8666            // are envelope_size bytes.
8667            let cur_offset: usize = (3 - 1) * envelope_size;
8668
8669            // Zero reserved fields.
8670            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8671
8672            // Safety:
8673            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8674            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8675            //   envelope_size bytes, there is always sufficient room.
8676            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
8677            self.data.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
8678            encoder, offset + cur_offset, depth
8679        )?;
8680
8681            _prev_end_offset = cur_offset + envelope_size;
8682
8683            Ok(())
8684        }
8685    }
8686
8687    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8688        for WlanFullmacImplIfcEapolIndRequest
8689    {
8690        #[inline(always)]
8691        fn new_empty() -> Self {
8692            Self::default()
8693        }
8694
8695        unsafe fn decode(
8696            &mut self,
8697            decoder: &mut fidl::encoding::Decoder<'_, D>,
8698            offset: usize,
8699            mut depth: fidl::encoding::Depth,
8700        ) -> fidl::Result<()> {
8701            decoder.debug_check_bounds::<Self>(offset);
8702            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8703                None => return Err(fidl::Error::NotNullable),
8704                Some(len) => len,
8705            };
8706            // Calling decoder.out_of_line_offset(0) is not allowed.
8707            if len == 0 {
8708                return Ok(());
8709            };
8710            depth.increment()?;
8711            let envelope_size = 8;
8712            let bytes_len = len * envelope_size;
8713            let offset = decoder.out_of_line_offset(bytes_len)?;
8714            // Decode the envelope for each type.
8715            let mut _next_ordinal_to_read = 0;
8716            let mut next_offset = offset;
8717            let end_offset = offset + bytes_len;
8718            _next_ordinal_to_read += 1;
8719            if next_offset >= end_offset {
8720                return Ok(());
8721            }
8722
8723            // Decode unknown envelopes for gaps in ordinals.
8724            while _next_ordinal_to_read < 1 {
8725                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8726                _next_ordinal_to_read += 1;
8727                next_offset += envelope_size;
8728            }
8729
8730            let next_out_of_line = decoder.next_out_of_line();
8731            let handles_before = decoder.remaining_handles();
8732            if let Some((inlined, num_bytes, num_handles)) =
8733                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8734            {
8735                let member_inline_size =
8736                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
8737                        decoder.context,
8738                    );
8739                if inlined != (member_inline_size <= 4) {
8740                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8741                }
8742                let inner_offset;
8743                let mut inner_depth = depth.clone();
8744                if inlined {
8745                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8746                    inner_offset = next_offset;
8747                } else {
8748                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8749                    inner_depth.increment()?;
8750                }
8751                let val_ref = self
8752                    .src_addr
8753                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
8754                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
8755                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8756                {
8757                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8758                }
8759                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8760                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8761                }
8762            }
8763
8764            next_offset += envelope_size;
8765            _next_ordinal_to_read += 1;
8766            if next_offset >= end_offset {
8767                return Ok(());
8768            }
8769
8770            // Decode unknown envelopes for gaps in ordinals.
8771            while _next_ordinal_to_read < 2 {
8772                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8773                _next_ordinal_to_read += 1;
8774                next_offset += envelope_size;
8775            }
8776
8777            let next_out_of_line = decoder.next_out_of_line();
8778            let handles_before = decoder.remaining_handles();
8779            if let Some((inlined, num_bytes, num_handles)) =
8780                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8781            {
8782                let member_inline_size =
8783                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
8784                        decoder.context,
8785                    );
8786                if inlined != (member_inline_size <= 4) {
8787                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8788                }
8789                let inner_offset;
8790                let mut inner_depth = depth.clone();
8791                if inlined {
8792                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8793                    inner_offset = next_offset;
8794                } else {
8795                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8796                    inner_depth.increment()?;
8797                }
8798                let val_ref = self
8799                    .dst_addr
8800                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
8801                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
8802                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8803                {
8804                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8805                }
8806                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8807                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8808                }
8809            }
8810
8811            next_offset += envelope_size;
8812            _next_ordinal_to_read += 1;
8813            if next_offset >= end_offset {
8814                return Ok(());
8815            }
8816
8817            // Decode unknown envelopes for gaps in ordinals.
8818            while _next_ordinal_to_read < 3 {
8819                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8820                _next_ordinal_to_read += 1;
8821                next_offset += envelope_size;
8822            }
8823
8824            let next_out_of_line = decoder.next_out_of_line();
8825            let handles_before = decoder.remaining_handles();
8826            if let Some((inlined, num_bytes, num_handles)) =
8827                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8828            {
8829                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8830                if inlined != (member_inline_size <= 4) {
8831                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8832                }
8833                let inner_offset;
8834                let mut inner_depth = depth.clone();
8835                if inlined {
8836                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8837                    inner_offset = next_offset;
8838                } else {
8839                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8840                    inner_depth.increment()?;
8841                }
8842                let val_ref = self.data.get_or_insert_with(|| {
8843                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
8844                });
8845                fidl::decode!(
8846                    fidl::encoding::UnboundedVector<u8>,
8847                    D,
8848                    val_ref,
8849                    decoder,
8850                    inner_offset,
8851                    inner_depth
8852                )?;
8853                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8854                {
8855                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8856                }
8857                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8858                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8859                }
8860            }
8861
8862            next_offset += envelope_size;
8863
8864            // Decode the remaining unknown envelopes.
8865            while next_offset < end_offset {
8866                _next_ordinal_to_read += 1;
8867                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8868                next_offset += envelope_size;
8869            }
8870
8871            Ok(())
8872        }
8873    }
8874
8875    impl WlanFullmacImplIfcOnPmkAvailableRequest {
8876        #[inline(always)]
8877        fn max_ordinal_present(&self) -> u64 {
8878            if let Some(_) = self.pmkid {
8879                return 2;
8880            }
8881            if let Some(_) = self.pmk {
8882                return 1;
8883            }
8884            0
8885        }
8886    }
8887
8888    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnPmkAvailableRequest {
8889        type Borrowed<'a> = &'a Self;
8890        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8891            value
8892        }
8893    }
8894
8895    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcOnPmkAvailableRequest {
8896        type Owned = Self;
8897
8898        #[inline(always)]
8899        fn inline_align(_context: fidl::encoding::Context) -> usize {
8900            8
8901        }
8902
8903        #[inline(always)]
8904        fn inline_size(_context: fidl::encoding::Context) -> usize {
8905            16
8906        }
8907    }
8908
8909    unsafe impl<D: fidl::encoding::ResourceDialect>
8910        fidl::encoding::Encode<WlanFullmacImplIfcOnPmkAvailableRequest, D>
8911        for &WlanFullmacImplIfcOnPmkAvailableRequest
8912    {
8913        unsafe fn encode(
8914            self,
8915            encoder: &mut fidl::encoding::Encoder<'_, D>,
8916            offset: usize,
8917            mut depth: fidl::encoding::Depth,
8918        ) -> fidl::Result<()> {
8919            encoder.debug_check_bounds::<WlanFullmacImplIfcOnPmkAvailableRequest>(offset);
8920            // Vector header
8921            let max_ordinal: u64 = self.max_ordinal_present();
8922            encoder.write_num(max_ordinal, offset);
8923            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8924            // Calling encoder.out_of_line_offset(0) is not allowed.
8925            if max_ordinal == 0 {
8926                return Ok(());
8927            }
8928            depth.increment()?;
8929            let envelope_size = 8;
8930            let bytes_len = max_ordinal as usize * envelope_size;
8931            #[allow(unused_variables)]
8932            let offset = encoder.out_of_line_offset(bytes_len);
8933            let mut _prev_end_offset: usize = 0;
8934            if 1 > max_ordinal {
8935                return Ok(());
8936            }
8937
8938            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8939            // are envelope_size bytes.
8940            let cur_offset: usize = (1 - 1) * envelope_size;
8941
8942            // Zero reserved fields.
8943            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8944
8945            // Safety:
8946            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8947            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8948            //   envelope_size bytes, there is always sufficient room.
8949            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
8950            self.pmk.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
8951            encoder, offset + cur_offset, depth
8952        )?;
8953
8954            _prev_end_offset = cur_offset + envelope_size;
8955            if 2 > max_ordinal {
8956                return Ok(());
8957            }
8958
8959            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8960            // are envelope_size bytes.
8961            let cur_offset: usize = (2 - 1) * envelope_size;
8962
8963            // Zero reserved fields.
8964            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8965
8966            // Safety:
8967            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8968            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8969            //   envelope_size bytes, there is always sufficient room.
8970            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
8971            self.pmkid.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
8972            encoder, offset + cur_offset, depth
8973        )?;
8974
8975            _prev_end_offset = cur_offset + envelope_size;
8976
8977            Ok(())
8978        }
8979    }
8980
8981    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8982        for WlanFullmacImplIfcOnPmkAvailableRequest
8983    {
8984        #[inline(always)]
8985        fn new_empty() -> Self {
8986            Self::default()
8987        }
8988
8989        unsafe fn decode(
8990            &mut self,
8991            decoder: &mut fidl::encoding::Decoder<'_, D>,
8992            offset: usize,
8993            mut depth: fidl::encoding::Depth,
8994        ) -> fidl::Result<()> {
8995            decoder.debug_check_bounds::<Self>(offset);
8996            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8997                None => return Err(fidl::Error::NotNullable),
8998                Some(len) => len,
8999            };
9000            // Calling decoder.out_of_line_offset(0) is not allowed.
9001            if len == 0 {
9002                return Ok(());
9003            };
9004            depth.increment()?;
9005            let envelope_size = 8;
9006            let bytes_len = len * envelope_size;
9007            let offset = decoder.out_of_line_offset(bytes_len)?;
9008            // Decode the envelope for each type.
9009            let mut _next_ordinal_to_read = 0;
9010            let mut next_offset = offset;
9011            let end_offset = offset + bytes_len;
9012            _next_ordinal_to_read += 1;
9013            if next_offset >= end_offset {
9014                return Ok(());
9015            }
9016
9017            // Decode unknown envelopes for gaps in ordinals.
9018            while _next_ordinal_to_read < 1 {
9019                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9020                _next_ordinal_to_read += 1;
9021                next_offset += envelope_size;
9022            }
9023
9024            let next_out_of_line = decoder.next_out_of_line();
9025            let handles_before = decoder.remaining_handles();
9026            if let Some((inlined, num_bytes, num_handles)) =
9027                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9028            {
9029                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9030                if inlined != (member_inline_size <= 4) {
9031                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9032                }
9033                let inner_offset;
9034                let mut inner_depth = depth.clone();
9035                if inlined {
9036                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9037                    inner_offset = next_offset;
9038                } else {
9039                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9040                    inner_depth.increment()?;
9041                }
9042                let val_ref = self.pmk.get_or_insert_with(|| {
9043                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
9044                });
9045                fidl::decode!(
9046                    fidl::encoding::UnboundedVector<u8>,
9047                    D,
9048                    val_ref,
9049                    decoder,
9050                    inner_offset,
9051                    inner_depth
9052                )?;
9053                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9054                {
9055                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9056                }
9057                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9058                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9059                }
9060            }
9061
9062            next_offset += envelope_size;
9063            _next_ordinal_to_read += 1;
9064            if next_offset >= end_offset {
9065                return Ok(());
9066            }
9067
9068            // Decode unknown envelopes for gaps in ordinals.
9069            while _next_ordinal_to_read < 2 {
9070                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9071                _next_ordinal_to_read += 1;
9072                next_offset += envelope_size;
9073            }
9074
9075            let next_out_of_line = decoder.next_out_of_line();
9076            let handles_before = decoder.remaining_handles();
9077            if let Some((inlined, num_bytes, num_handles)) =
9078                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9079            {
9080                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9081                if inlined != (member_inline_size <= 4) {
9082                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9083                }
9084                let inner_offset;
9085                let mut inner_depth = depth.clone();
9086                if inlined {
9087                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9088                    inner_offset = next_offset;
9089                } else {
9090                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9091                    inner_depth.increment()?;
9092                }
9093                let val_ref = self.pmkid.get_or_insert_with(|| {
9094                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
9095                });
9096                fidl::decode!(
9097                    fidl::encoding::UnboundedVector<u8>,
9098                    D,
9099                    val_ref,
9100                    decoder,
9101                    inner_offset,
9102                    inner_depth
9103                )?;
9104                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9105                {
9106                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9107                }
9108                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9109                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9110                }
9111            }
9112
9113            next_offset += envelope_size;
9114
9115            // Decode the remaining unknown envelopes.
9116            while next_offset < end_offset {
9117                _next_ordinal_to_read += 1;
9118                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9119                next_offset += envelope_size;
9120            }
9121
9122            Ok(())
9123        }
9124    }
9125
9126    impl WlanFullmacImplIfcOnRssiThresholdBreachedRequest {
9127        #[inline(always)]
9128        fn max_ordinal_present(&self) -> u64 {
9129            if let Some(_) = self.cur_rssi_dbm {
9130                return 1;
9131            }
9132            0
9133        }
9134    }
9135
9136    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnRssiThresholdBreachedRequest {
9137        type Borrowed<'a> = &'a Self;
9138        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9139            value
9140        }
9141    }
9142
9143    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcOnRssiThresholdBreachedRequest {
9144        type Owned = Self;
9145
9146        #[inline(always)]
9147        fn inline_align(_context: fidl::encoding::Context) -> usize {
9148            8
9149        }
9150
9151        #[inline(always)]
9152        fn inline_size(_context: fidl::encoding::Context) -> usize {
9153            16
9154        }
9155    }
9156
9157    unsafe impl<D: fidl::encoding::ResourceDialect>
9158        fidl::encoding::Encode<WlanFullmacImplIfcOnRssiThresholdBreachedRequest, D>
9159        for &WlanFullmacImplIfcOnRssiThresholdBreachedRequest
9160    {
9161        unsafe fn encode(
9162            self,
9163            encoder: &mut fidl::encoding::Encoder<'_, D>,
9164            offset: usize,
9165            mut depth: fidl::encoding::Depth,
9166        ) -> fidl::Result<()> {
9167            encoder.debug_check_bounds::<WlanFullmacImplIfcOnRssiThresholdBreachedRequest>(offset);
9168            // Vector header
9169            let max_ordinal: u64 = self.max_ordinal_present();
9170            encoder.write_num(max_ordinal, offset);
9171            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9172            // Calling encoder.out_of_line_offset(0) is not allowed.
9173            if max_ordinal == 0 {
9174                return Ok(());
9175            }
9176            depth.increment()?;
9177            let envelope_size = 8;
9178            let bytes_len = max_ordinal as usize * envelope_size;
9179            #[allow(unused_variables)]
9180            let offset = encoder.out_of_line_offset(bytes_len);
9181            let mut _prev_end_offset: usize = 0;
9182            if 1 > max_ordinal {
9183                return Ok(());
9184            }
9185
9186            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9187            // are envelope_size bytes.
9188            let cur_offset: usize = (1 - 1) * envelope_size;
9189
9190            // Zero reserved fields.
9191            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9192
9193            // Safety:
9194            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9195            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9196            //   envelope_size bytes, there is always sufficient room.
9197            fidl::encoding::encode_in_envelope_optional::<i8, D>(
9198                self.cur_rssi_dbm.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
9199                encoder,
9200                offset + cur_offset,
9201                depth,
9202            )?;
9203
9204            _prev_end_offset = cur_offset + envelope_size;
9205
9206            Ok(())
9207        }
9208    }
9209
9210    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9211        for WlanFullmacImplIfcOnRssiThresholdBreachedRequest
9212    {
9213        #[inline(always)]
9214        fn new_empty() -> Self {
9215            Self::default()
9216        }
9217
9218        unsafe fn decode(
9219            &mut self,
9220            decoder: &mut fidl::encoding::Decoder<'_, D>,
9221            offset: usize,
9222            mut depth: fidl::encoding::Depth,
9223        ) -> fidl::Result<()> {
9224            decoder.debug_check_bounds::<Self>(offset);
9225            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9226                None => return Err(fidl::Error::NotNullable),
9227                Some(len) => len,
9228            };
9229            // Calling decoder.out_of_line_offset(0) is not allowed.
9230            if len == 0 {
9231                return Ok(());
9232            };
9233            depth.increment()?;
9234            let envelope_size = 8;
9235            let bytes_len = len * envelope_size;
9236            let offset = decoder.out_of_line_offset(bytes_len)?;
9237            // Decode the envelope for each type.
9238            let mut _next_ordinal_to_read = 0;
9239            let mut next_offset = offset;
9240            let end_offset = offset + bytes_len;
9241            _next_ordinal_to_read += 1;
9242            if next_offset >= end_offset {
9243                return Ok(());
9244            }
9245
9246            // Decode unknown envelopes for gaps in ordinals.
9247            while _next_ordinal_to_read < 1 {
9248                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9249                _next_ordinal_to_read += 1;
9250                next_offset += envelope_size;
9251            }
9252
9253            let next_out_of_line = decoder.next_out_of_line();
9254            let handles_before = decoder.remaining_handles();
9255            if let Some((inlined, num_bytes, num_handles)) =
9256                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9257            {
9258                let member_inline_size =
9259                    <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9260                if inlined != (member_inline_size <= 4) {
9261                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9262                }
9263                let inner_offset;
9264                let mut inner_depth = depth.clone();
9265                if inlined {
9266                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9267                    inner_offset = next_offset;
9268                } else {
9269                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9270                    inner_depth.increment()?;
9271                }
9272                let val_ref = self.cur_rssi_dbm.get_or_insert_with(|| fidl::new_empty!(i8, D));
9273                fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
9274                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9275                {
9276                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9277                }
9278                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9279                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9280                }
9281            }
9282
9283            next_offset += envelope_size;
9284
9285            // Decode the remaining unknown envelopes.
9286            while next_offset < end_offset {
9287                _next_ordinal_to_read += 1;
9288                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9289                next_offset += envelope_size;
9290            }
9291
9292            Ok(())
9293        }
9294    }
9295
9296    impl WlanFullmacImplIfcOnScanEndRequest {
9297        #[inline(always)]
9298        fn max_ordinal_present(&self) -> u64 {
9299            if let Some(_) = self.code {
9300                return 2;
9301            }
9302            if let Some(_) = self.txn_id {
9303                return 1;
9304            }
9305            0
9306        }
9307    }
9308
9309    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnScanEndRequest {
9310        type Borrowed<'a> = &'a Self;
9311        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9312            value
9313        }
9314    }
9315
9316    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcOnScanEndRequest {
9317        type Owned = Self;
9318
9319        #[inline(always)]
9320        fn inline_align(_context: fidl::encoding::Context) -> usize {
9321            8
9322        }
9323
9324        #[inline(always)]
9325        fn inline_size(_context: fidl::encoding::Context) -> usize {
9326            16
9327        }
9328    }
9329
9330    unsafe impl<D: fidl::encoding::ResourceDialect>
9331        fidl::encoding::Encode<WlanFullmacImplIfcOnScanEndRequest, D>
9332        for &WlanFullmacImplIfcOnScanEndRequest
9333    {
9334        unsafe fn encode(
9335            self,
9336            encoder: &mut fidl::encoding::Encoder<'_, D>,
9337            offset: usize,
9338            mut depth: fidl::encoding::Depth,
9339        ) -> fidl::Result<()> {
9340            encoder.debug_check_bounds::<WlanFullmacImplIfcOnScanEndRequest>(offset);
9341            // Vector header
9342            let max_ordinal: u64 = self.max_ordinal_present();
9343            encoder.write_num(max_ordinal, offset);
9344            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9345            // Calling encoder.out_of_line_offset(0) is not allowed.
9346            if max_ordinal == 0 {
9347                return Ok(());
9348            }
9349            depth.increment()?;
9350            let envelope_size = 8;
9351            let bytes_len = max_ordinal as usize * envelope_size;
9352            #[allow(unused_variables)]
9353            let offset = encoder.out_of_line_offset(bytes_len);
9354            let mut _prev_end_offset: usize = 0;
9355            if 1 > max_ordinal {
9356                return Ok(());
9357            }
9358
9359            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9360            // are envelope_size bytes.
9361            let cur_offset: usize = (1 - 1) * envelope_size;
9362
9363            // Zero reserved fields.
9364            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9365
9366            // Safety:
9367            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9368            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9369            //   envelope_size bytes, there is always sufficient room.
9370            fidl::encoding::encode_in_envelope_optional::<u64, D>(
9371                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
9372                encoder,
9373                offset + cur_offset,
9374                depth,
9375            )?;
9376
9377            _prev_end_offset = cur_offset + envelope_size;
9378            if 2 > max_ordinal {
9379                return Ok(());
9380            }
9381
9382            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9383            // are envelope_size bytes.
9384            let cur_offset: usize = (2 - 1) * envelope_size;
9385
9386            // Zero reserved fields.
9387            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9388
9389            // Safety:
9390            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9391            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9392            //   envelope_size bytes, there is always sufficient room.
9393            fidl::encoding::encode_in_envelope_optional::<WlanScanResult, D>(
9394                self.code.as_ref().map(<WlanScanResult as fidl::encoding::ValueTypeMarker>::borrow),
9395                encoder,
9396                offset + cur_offset,
9397                depth,
9398            )?;
9399
9400            _prev_end_offset = cur_offset + envelope_size;
9401
9402            Ok(())
9403        }
9404    }
9405
9406    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9407        for WlanFullmacImplIfcOnScanEndRequest
9408    {
9409        #[inline(always)]
9410        fn new_empty() -> Self {
9411            Self::default()
9412        }
9413
9414        unsafe fn decode(
9415            &mut self,
9416            decoder: &mut fidl::encoding::Decoder<'_, D>,
9417            offset: usize,
9418            mut depth: fidl::encoding::Depth,
9419        ) -> fidl::Result<()> {
9420            decoder.debug_check_bounds::<Self>(offset);
9421            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9422                None => return Err(fidl::Error::NotNullable),
9423                Some(len) => len,
9424            };
9425            // Calling decoder.out_of_line_offset(0) is not allowed.
9426            if len == 0 {
9427                return Ok(());
9428            };
9429            depth.increment()?;
9430            let envelope_size = 8;
9431            let bytes_len = len * envelope_size;
9432            let offset = decoder.out_of_line_offset(bytes_len)?;
9433            // Decode the envelope for each type.
9434            let mut _next_ordinal_to_read = 0;
9435            let mut next_offset = offset;
9436            let end_offset = offset + bytes_len;
9437            _next_ordinal_to_read += 1;
9438            if next_offset >= end_offset {
9439                return Ok(());
9440            }
9441
9442            // Decode unknown envelopes for gaps in ordinals.
9443            while _next_ordinal_to_read < 1 {
9444                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9445                _next_ordinal_to_read += 1;
9446                next_offset += envelope_size;
9447            }
9448
9449            let next_out_of_line = decoder.next_out_of_line();
9450            let handles_before = decoder.remaining_handles();
9451            if let Some((inlined, num_bytes, num_handles)) =
9452                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9453            {
9454                let member_inline_size =
9455                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9456                if inlined != (member_inline_size <= 4) {
9457                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9458                }
9459                let inner_offset;
9460                let mut inner_depth = depth.clone();
9461                if inlined {
9462                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9463                    inner_offset = next_offset;
9464                } else {
9465                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9466                    inner_depth.increment()?;
9467                }
9468                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
9469                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
9470                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9471                {
9472                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9473                }
9474                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9475                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9476                }
9477            }
9478
9479            next_offset += envelope_size;
9480            _next_ordinal_to_read += 1;
9481            if next_offset >= end_offset {
9482                return Ok(());
9483            }
9484
9485            // Decode unknown envelopes for gaps in ordinals.
9486            while _next_ordinal_to_read < 2 {
9487                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9488                _next_ordinal_to_read += 1;
9489                next_offset += envelope_size;
9490            }
9491
9492            let next_out_of_line = decoder.next_out_of_line();
9493            let handles_before = decoder.remaining_handles();
9494            if let Some((inlined, num_bytes, num_handles)) =
9495                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9496            {
9497                let member_inline_size =
9498                    <WlanScanResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9499                if inlined != (member_inline_size <= 4) {
9500                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9501                }
9502                let inner_offset;
9503                let mut inner_depth = depth.clone();
9504                if inlined {
9505                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9506                    inner_offset = next_offset;
9507                } else {
9508                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9509                    inner_depth.increment()?;
9510                }
9511                let val_ref = self.code.get_or_insert_with(|| fidl::new_empty!(WlanScanResult, D));
9512                fidl::decode!(WlanScanResult, D, val_ref, decoder, inner_offset, inner_depth)?;
9513                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9514                {
9515                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9516                }
9517                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9518                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9519                }
9520            }
9521
9522            next_offset += envelope_size;
9523
9524            // Decode the remaining unknown envelopes.
9525            while next_offset < end_offset {
9526                _next_ordinal_to_read += 1;
9527                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9528                next_offset += envelope_size;
9529            }
9530
9531            Ok(())
9532        }
9533    }
9534
9535    impl WlanFullmacImplIfcOnScanResultRequest {
9536        #[inline(always)]
9537        fn max_ordinal_present(&self) -> u64 {
9538            if let Some(_) = self.bss {
9539                return 3;
9540            }
9541            if let Some(_) = self.timestamp_nanos {
9542                return 2;
9543            }
9544            if let Some(_) = self.txn_id {
9545                return 1;
9546            }
9547            0
9548        }
9549    }
9550
9551    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnScanResultRequest {
9552        type Borrowed<'a> = &'a Self;
9553        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9554            value
9555        }
9556    }
9557
9558    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcOnScanResultRequest {
9559        type Owned = Self;
9560
9561        #[inline(always)]
9562        fn inline_align(_context: fidl::encoding::Context) -> usize {
9563            8
9564        }
9565
9566        #[inline(always)]
9567        fn inline_size(_context: fidl::encoding::Context) -> usize {
9568            16
9569        }
9570    }
9571
9572    unsafe impl<D: fidl::encoding::ResourceDialect>
9573        fidl::encoding::Encode<WlanFullmacImplIfcOnScanResultRequest, D>
9574        for &WlanFullmacImplIfcOnScanResultRequest
9575    {
9576        unsafe fn encode(
9577            self,
9578            encoder: &mut fidl::encoding::Encoder<'_, D>,
9579            offset: usize,
9580            mut depth: fidl::encoding::Depth,
9581        ) -> fidl::Result<()> {
9582            encoder.debug_check_bounds::<WlanFullmacImplIfcOnScanResultRequest>(offset);
9583            // Vector header
9584            let max_ordinal: u64 = self.max_ordinal_present();
9585            encoder.write_num(max_ordinal, offset);
9586            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9587            // Calling encoder.out_of_line_offset(0) is not allowed.
9588            if max_ordinal == 0 {
9589                return Ok(());
9590            }
9591            depth.increment()?;
9592            let envelope_size = 8;
9593            let bytes_len = max_ordinal as usize * envelope_size;
9594            #[allow(unused_variables)]
9595            let offset = encoder.out_of_line_offset(bytes_len);
9596            let mut _prev_end_offset: usize = 0;
9597            if 1 > max_ordinal {
9598                return Ok(());
9599            }
9600
9601            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9602            // are envelope_size bytes.
9603            let cur_offset: usize = (1 - 1) * envelope_size;
9604
9605            // Zero reserved fields.
9606            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9607
9608            // Safety:
9609            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9610            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9611            //   envelope_size bytes, there is always sufficient room.
9612            fidl::encoding::encode_in_envelope_optional::<u64, D>(
9613                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
9614                encoder,
9615                offset + cur_offset,
9616                depth,
9617            )?;
9618
9619            _prev_end_offset = cur_offset + envelope_size;
9620            if 2 > max_ordinal {
9621                return Ok(());
9622            }
9623
9624            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9625            // are envelope_size bytes.
9626            let cur_offset: usize = (2 - 1) * envelope_size;
9627
9628            // Zero reserved fields.
9629            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9630
9631            // Safety:
9632            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9633            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9634            //   envelope_size bytes, there is always sufficient room.
9635            fidl::encoding::encode_in_envelope_optional::<i64, D>(
9636                self.timestamp_nanos.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
9637                encoder,
9638                offset + cur_offset,
9639                depth,
9640            )?;
9641
9642            _prev_end_offset = cur_offset + envelope_size;
9643            if 3 > max_ordinal {
9644                return Ok(());
9645            }
9646
9647            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9648            // are envelope_size bytes.
9649            let cur_offset: usize = (3 - 1) * envelope_size;
9650
9651            // Zero reserved fields.
9652            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9653
9654            // Safety:
9655            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9656            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9657            //   envelope_size bytes, there is always sufficient room.
9658            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::BssDescription, D>(
9659            self.bss.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow),
9660            encoder, offset + cur_offset, depth
9661        )?;
9662
9663            _prev_end_offset = cur_offset + envelope_size;
9664
9665            Ok(())
9666        }
9667    }
9668
9669    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9670        for WlanFullmacImplIfcOnScanResultRequest
9671    {
9672        #[inline(always)]
9673        fn new_empty() -> Self {
9674            Self::default()
9675        }
9676
9677        unsafe fn decode(
9678            &mut self,
9679            decoder: &mut fidl::encoding::Decoder<'_, D>,
9680            offset: usize,
9681            mut depth: fidl::encoding::Depth,
9682        ) -> fidl::Result<()> {
9683            decoder.debug_check_bounds::<Self>(offset);
9684            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9685                None => return Err(fidl::Error::NotNullable),
9686                Some(len) => len,
9687            };
9688            // Calling decoder.out_of_line_offset(0) is not allowed.
9689            if len == 0 {
9690                return Ok(());
9691            };
9692            depth.increment()?;
9693            let envelope_size = 8;
9694            let bytes_len = len * envelope_size;
9695            let offset = decoder.out_of_line_offset(bytes_len)?;
9696            // Decode the envelope for each type.
9697            let mut _next_ordinal_to_read = 0;
9698            let mut next_offset = offset;
9699            let end_offset = offset + bytes_len;
9700            _next_ordinal_to_read += 1;
9701            if next_offset >= end_offset {
9702                return Ok(());
9703            }
9704
9705            // Decode unknown envelopes for gaps in ordinals.
9706            while _next_ordinal_to_read < 1 {
9707                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9708                _next_ordinal_to_read += 1;
9709                next_offset += envelope_size;
9710            }
9711
9712            let next_out_of_line = decoder.next_out_of_line();
9713            let handles_before = decoder.remaining_handles();
9714            if let Some((inlined, num_bytes, num_handles)) =
9715                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9716            {
9717                let member_inline_size =
9718                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9719                if inlined != (member_inline_size <= 4) {
9720                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9721                }
9722                let inner_offset;
9723                let mut inner_depth = depth.clone();
9724                if inlined {
9725                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9726                    inner_offset = next_offset;
9727                } else {
9728                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9729                    inner_depth.increment()?;
9730                }
9731                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
9732                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
9733                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9734                {
9735                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9736                }
9737                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9738                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9739                }
9740            }
9741
9742            next_offset += envelope_size;
9743            _next_ordinal_to_read += 1;
9744            if next_offset >= end_offset {
9745                return Ok(());
9746            }
9747
9748            // Decode unknown envelopes for gaps in ordinals.
9749            while _next_ordinal_to_read < 2 {
9750                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9751                _next_ordinal_to_read += 1;
9752                next_offset += envelope_size;
9753            }
9754
9755            let next_out_of_line = decoder.next_out_of_line();
9756            let handles_before = decoder.remaining_handles();
9757            if let Some((inlined, num_bytes, num_handles)) =
9758                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9759            {
9760                let member_inline_size =
9761                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9762                if inlined != (member_inline_size <= 4) {
9763                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9764                }
9765                let inner_offset;
9766                let mut inner_depth = depth.clone();
9767                if inlined {
9768                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9769                    inner_offset = next_offset;
9770                } else {
9771                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9772                    inner_depth.increment()?;
9773                }
9774                let val_ref = self.timestamp_nanos.get_or_insert_with(|| fidl::new_empty!(i64, D));
9775                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
9776                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9777                {
9778                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9779                }
9780                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9781                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9782                }
9783            }
9784
9785            next_offset += envelope_size;
9786            _next_ordinal_to_read += 1;
9787            if next_offset >= end_offset {
9788                return Ok(());
9789            }
9790
9791            // Decode unknown envelopes for gaps in ordinals.
9792            while _next_ordinal_to_read < 3 {
9793                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9794                _next_ordinal_to_read += 1;
9795                next_offset += envelope_size;
9796            }
9797
9798            let next_out_of_line = decoder.next_out_of_line();
9799            let handles_before = decoder.remaining_handles();
9800            if let Some((inlined, num_bytes, num_handles)) =
9801                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9802            {
9803                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::BssDescription as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9804                if inlined != (member_inline_size <= 4) {
9805                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9806                }
9807                let inner_offset;
9808                let mut inner_depth = depth.clone();
9809                if inlined {
9810                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9811                    inner_offset = next_offset;
9812                } else {
9813                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9814                    inner_depth.increment()?;
9815                }
9816                let val_ref = self.bss.get_or_insert_with(|| {
9817                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::BssDescription, D)
9818                });
9819                fidl::decode!(
9820                    fidl_fuchsia_wlan_ieee80211_common::BssDescription,
9821                    D,
9822                    val_ref,
9823                    decoder,
9824                    inner_offset,
9825                    inner_depth
9826                )?;
9827                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9828                {
9829                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9830                }
9831                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9832                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9833                }
9834            }
9835
9836            next_offset += envelope_size;
9837
9838            // Decode the remaining unknown envelopes.
9839            while next_offset < end_offset {
9840                _next_ordinal_to_read += 1;
9841                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9842                next_offset += envelope_size;
9843            }
9844
9845            Ok(())
9846        }
9847    }
9848
9849    impl WlanFullmacImplIfcOnScheduledScanMatchesAvailableRequest {
9850        #[inline(always)]
9851        fn max_ordinal_present(&self) -> u64 {
9852            if let Some(_) = self.txn_id {
9853                return 1;
9854            }
9855            0
9856        }
9857    }
9858
9859    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnScheduledScanMatchesAvailableRequest {
9860        type Borrowed<'a> = &'a Self;
9861        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9862            value
9863        }
9864    }
9865
9866    unsafe impl fidl::encoding::TypeMarker
9867        for WlanFullmacImplIfcOnScheduledScanMatchesAvailableRequest
9868    {
9869        type Owned = Self;
9870
9871        #[inline(always)]
9872        fn inline_align(_context: fidl::encoding::Context) -> usize {
9873            8
9874        }
9875
9876        #[inline(always)]
9877        fn inline_size(_context: fidl::encoding::Context) -> usize {
9878            16
9879        }
9880    }
9881
9882    unsafe impl<D: fidl::encoding::ResourceDialect>
9883        fidl::encoding::Encode<WlanFullmacImplIfcOnScheduledScanMatchesAvailableRequest, D>
9884        for &WlanFullmacImplIfcOnScheduledScanMatchesAvailableRequest
9885    {
9886        unsafe fn encode(
9887            self,
9888            encoder: &mut fidl::encoding::Encoder<'_, D>,
9889            offset: usize,
9890            mut depth: fidl::encoding::Depth,
9891        ) -> fidl::Result<()> {
9892            encoder.debug_check_bounds::<WlanFullmacImplIfcOnScheduledScanMatchesAvailableRequest>(
9893                offset,
9894            );
9895            // Vector header
9896            let max_ordinal: u64 = self.max_ordinal_present();
9897            encoder.write_num(max_ordinal, offset);
9898            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9899            // Calling encoder.out_of_line_offset(0) is not allowed.
9900            if max_ordinal == 0 {
9901                return Ok(());
9902            }
9903            depth.increment()?;
9904            let envelope_size = 8;
9905            let bytes_len = max_ordinal as usize * envelope_size;
9906            #[allow(unused_variables)]
9907            let offset = encoder.out_of_line_offset(bytes_len);
9908            let mut _prev_end_offset: usize = 0;
9909            if 1 > max_ordinal {
9910                return Ok(());
9911            }
9912
9913            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9914            // are envelope_size bytes.
9915            let cur_offset: usize = (1 - 1) * envelope_size;
9916
9917            // Zero reserved fields.
9918            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9919
9920            // Safety:
9921            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9922            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9923            //   envelope_size bytes, there is always sufficient room.
9924            fidl::encoding::encode_in_envelope_optional::<u64, D>(
9925                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
9926                encoder,
9927                offset + cur_offset,
9928                depth,
9929            )?;
9930
9931            _prev_end_offset = cur_offset + envelope_size;
9932
9933            Ok(())
9934        }
9935    }
9936
9937    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9938        for WlanFullmacImplIfcOnScheduledScanMatchesAvailableRequest
9939    {
9940        #[inline(always)]
9941        fn new_empty() -> Self {
9942            Self::default()
9943        }
9944
9945        unsafe fn decode(
9946            &mut self,
9947            decoder: &mut fidl::encoding::Decoder<'_, D>,
9948            offset: usize,
9949            mut depth: fidl::encoding::Depth,
9950        ) -> fidl::Result<()> {
9951            decoder.debug_check_bounds::<Self>(offset);
9952            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9953                None => return Err(fidl::Error::NotNullable),
9954                Some(len) => len,
9955            };
9956            // Calling decoder.out_of_line_offset(0) is not allowed.
9957            if len == 0 {
9958                return Ok(());
9959            };
9960            depth.increment()?;
9961            let envelope_size = 8;
9962            let bytes_len = len * envelope_size;
9963            let offset = decoder.out_of_line_offset(bytes_len)?;
9964            // Decode the envelope for each type.
9965            let mut _next_ordinal_to_read = 0;
9966            let mut next_offset = offset;
9967            let end_offset = offset + bytes_len;
9968            _next_ordinal_to_read += 1;
9969            if next_offset >= end_offset {
9970                return Ok(());
9971            }
9972
9973            // Decode unknown envelopes for gaps in ordinals.
9974            while _next_ordinal_to_read < 1 {
9975                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9976                _next_ordinal_to_read += 1;
9977                next_offset += envelope_size;
9978            }
9979
9980            let next_out_of_line = decoder.next_out_of_line();
9981            let handles_before = decoder.remaining_handles();
9982            if let Some((inlined, num_bytes, num_handles)) =
9983                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9984            {
9985                let member_inline_size =
9986                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9987                if inlined != (member_inline_size <= 4) {
9988                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9989                }
9990                let inner_offset;
9991                let mut inner_depth = depth.clone();
9992                if inlined {
9993                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9994                    inner_offset = next_offset;
9995                } else {
9996                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9997                    inner_depth.increment()?;
9998                }
9999                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
10000                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
10001                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10002                {
10003                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10004                }
10005                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10006                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10007                }
10008            }
10009
10010            next_offset += envelope_size;
10011
10012            // Decode the remaining unknown envelopes.
10013            while next_offset < end_offset {
10014                _next_ordinal_to_read += 1;
10015                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10016                next_offset += envelope_size;
10017            }
10018
10019            Ok(())
10020        }
10021    }
10022
10023    impl WlanFullmacImplIfcOnScheduledScanStoppedByFirmwareRequest {
10024        #[inline(always)]
10025        fn max_ordinal_present(&self) -> u64 {
10026            if let Some(_) = self.txn_id {
10027                return 1;
10028            }
10029            0
10030        }
10031    }
10032
10033    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnScheduledScanStoppedByFirmwareRequest {
10034        type Borrowed<'a> = &'a Self;
10035        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10036            value
10037        }
10038    }
10039
10040    unsafe impl fidl::encoding::TypeMarker
10041        for WlanFullmacImplIfcOnScheduledScanStoppedByFirmwareRequest
10042    {
10043        type Owned = Self;
10044
10045        #[inline(always)]
10046        fn inline_align(_context: fidl::encoding::Context) -> usize {
10047            8
10048        }
10049
10050        #[inline(always)]
10051        fn inline_size(_context: fidl::encoding::Context) -> usize {
10052            16
10053        }
10054    }
10055
10056    unsafe impl<D: fidl::encoding::ResourceDialect>
10057        fidl::encoding::Encode<WlanFullmacImplIfcOnScheduledScanStoppedByFirmwareRequest, D>
10058        for &WlanFullmacImplIfcOnScheduledScanStoppedByFirmwareRequest
10059    {
10060        unsafe fn encode(
10061            self,
10062            encoder: &mut fidl::encoding::Encoder<'_, D>,
10063            offset: usize,
10064            mut depth: fidl::encoding::Depth,
10065        ) -> fidl::Result<()> {
10066            encoder
10067                .debug_check_bounds::<WlanFullmacImplIfcOnScheduledScanStoppedByFirmwareRequest>(
10068                    offset,
10069                );
10070            // Vector header
10071            let max_ordinal: u64 = self.max_ordinal_present();
10072            encoder.write_num(max_ordinal, offset);
10073            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10074            // Calling encoder.out_of_line_offset(0) is not allowed.
10075            if max_ordinal == 0 {
10076                return Ok(());
10077            }
10078            depth.increment()?;
10079            let envelope_size = 8;
10080            let bytes_len = max_ordinal as usize * envelope_size;
10081            #[allow(unused_variables)]
10082            let offset = encoder.out_of_line_offset(bytes_len);
10083            let mut _prev_end_offset: usize = 0;
10084            if 1 > max_ordinal {
10085                return Ok(());
10086            }
10087
10088            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10089            // are envelope_size bytes.
10090            let cur_offset: usize = (1 - 1) * envelope_size;
10091
10092            // Zero reserved fields.
10093            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10094
10095            // Safety:
10096            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10097            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10098            //   envelope_size bytes, there is always sufficient room.
10099            fidl::encoding::encode_in_envelope_optional::<u64, D>(
10100                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
10101                encoder,
10102                offset + cur_offset,
10103                depth,
10104            )?;
10105
10106            _prev_end_offset = cur_offset + envelope_size;
10107
10108            Ok(())
10109        }
10110    }
10111
10112    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10113        for WlanFullmacImplIfcOnScheduledScanStoppedByFirmwareRequest
10114    {
10115        #[inline(always)]
10116        fn new_empty() -> Self {
10117            Self::default()
10118        }
10119
10120        unsafe fn decode(
10121            &mut self,
10122            decoder: &mut fidl::encoding::Decoder<'_, D>,
10123            offset: usize,
10124            mut depth: fidl::encoding::Depth,
10125        ) -> fidl::Result<()> {
10126            decoder.debug_check_bounds::<Self>(offset);
10127            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10128                None => return Err(fidl::Error::NotNullable),
10129                Some(len) => len,
10130            };
10131            // Calling decoder.out_of_line_offset(0) is not allowed.
10132            if len == 0 {
10133                return Ok(());
10134            };
10135            depth.increment()?;
10136            let envelope_size = 8;
10137            let bytes_len = len * envelope_size;
10138            let offset = decoder.out_of_line_offset(bytes_len)?;
10139            // Decode the envelope for each type.
10140            let mut _next_ordinal_to_read = 0;
10141            let mut next_offset = offset;
10142            let end_offset = offset + bytes_len;
10143            _next_ordinal_to_read += 1;
10144            if next_offset >= end_offset {
10145                return Ok(());
10146            }
10147
10148            // Decode unknown envelopes for gaps in ordinals.
10149            while _next_ordinal_to_read < 1 {
10150                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10151                _next_ordinal_to_read += 1;
10152                next_offset += envelope_size;
10153            }
10154
10155            let next_out_of_line = decoder.next_out_of_line();
10156            let handles_before = decoder.remaining_handles();
10157            if let Some((inlined, num_bytes, num_handles)) =
10158                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10159            {
10160                let member_inline_size =
10161                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10162                if inlined != (member_inline_size <= 4) {
10163                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10164                }
10165                let inner_offset;
10166                let mut inner_depth = depth.clone();
10167                if inlined {
10168                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10169                    inner_offset = next_offset;
10170                } else {
10171                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10172                    inner_depth.increment()?;
10173                }
10174                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
10175                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
10176                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10177                {
10178                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10179                }
10180                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10181                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10182                }
10183            }
10184
10185            next_offset += envelope_size;
10186
10187            // Decode the remaining unknown envelopes.
10188            while next_offset < end_offset {
10189                _next_ordinal_to_read += 1;
10190                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10191                next_offset += envelope_size;
10192            }
10193
10194            Ok(())
10195        }
10196    }
10197
10198    impl WlanFullmacImplIfcRoamConfRequest {
10199        #[inline(always)]
10200        fn max_ordinal_present(&self) -> u64 {
10201            if let Some(_) = self.association_ies {
10202                return 6;
10203            }
10204            if let Some(_) = self.association_id {
10205                return 5;
10206            }
10207            if let Some(_) = self.target_bss_authenticated {
10208                return 4;
10209            }
10210            if let Some(_) = self.original_association_maintained {
10211                return 3;
10212            }
10213            if let Some(_) = self.status_code {
10214                return 2;
10215            }
10216            if let Some(_) = self.selected_bssid {
10217                return 1;
10218            }
10219            0
10220        }
10221    }
10222
10223    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcRoamConfRequest {
10224        type Borrowed<'a> = &'a Self;
10225        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10226            value
10227        }
10228    }
10229
10230    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcRoamConfRequest {
10231        type Owned = Self;
10232
10233        #[inline(always)]
10234        fn inline_align(_context: fidl::encoding::Context) -> usize {
10235            8
10236        }
10237
10238        #[inline(always)]
10239        fn inline_size(_context: fidl::encoding::Context) -> usize {
10240            16
10241        }
10242    }
10243
10244    unsafe impl<D: fidl::encoding::ResourceDialect>
10245        fidl::encoding::Encode<WlanFullmacImplIfcRoamConfRequest, D>
10246        for &WlanFullmacImplIfcRoamConfRequest
10247    {
10248        unsafe fn encode(
10249            self,
10250            encoder: &mut fidl::encoding::Encoder<'_, D>,
10251            offset: usize,
10252            mut depth: fidl::encoding::Depth,
10253        ) -> fidl::Result<()> {
10254            encoder.debug_check_bounds::<WlanFullmacImplIfcRoamConfRequest>(offset);
10255            // Vector header
10256            let max_ordinal: u64 = self.max_ordinal_present();
10257            encoder.write_num(max_ordinal, offset);
10258            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10259            // Calling encoder.out_of_line_offset(0) is not allowed.
10260            if max_ordinal == 0 {
10261                return Ok(());
10262            }
10263            depth.increment()?;
10264            let envelope_size = 8;
10265            let bytes_len = max_ordinal as usize * envelope_size;
10266            #[allow(unused_variables)]
10267            let offset = encoder.out_of_line_offset(bytes_len);
10268            let mut _prev_end_offset: usize = 0;
10269            if 1 > max_ordinal {
10270                return Ok(());
10271            }
10272
10273            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10274            // are envelope_size bytes.
10275            let cur_offset: usize = (1 - 1) * envelope_size;
10276
10277            // Zero reserved fields.
10278            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10279
10280            // Safety:
10281            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10282            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10283            //   envelope_size bytes, there is always sufficient room.
10284            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
10285                self.selected_bssid
10286                    .as_ref()
10287                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
10288                encoder,
10289                offset + cur_offset,
10290                depth,
10291            )?;
10292
10293            _prev_end_offset = cur_offset + envelope_size;
10294            if 2 > max_ordinal {
10295                return Ok(());
10296            }
10297
10298            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10299            // are envelope_size bytes.
10300            let cur_offset: usize = (2 - 1) * envelope_size;
10301
10302            // Zero reserved fields.
10303            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10304
10305            // Safety:
10306            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10307            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10308            //   envelope_size bytes, there is always sufficient room.
10309            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::StatusCode, D>(
10310            self.status_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
10311            encoder, offset + cur_offset, depth
10312        )?;
10313
10314            _prev_end_offset = cur_offset + envelope_size;
10315            if 3 > max_ordinal {
10316                return Ok(());
10317            }
10318
10319            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10320            // are envelope_size bytes.
10321            let cur_offset: usize = (3 - 1) * envelope_size;
10322
10323            // Zero reserved fields.
10324            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10325
10326            // Safety:
10327            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10328            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10329            //   envelope_size bytes, there is always sufficient room.
10330            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10331                self.original_association_maintained
10332                    .as_ref()
10333                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10334                encoder,
10335                offset + cur_offset,
10336                depth,
10337            )?;
10338
10339            _prev_end_offset = cur_offset + envelope_size;
10340            if 4 > max_ordinal {
10341                return Ok(());
10342            }
10343
10344            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10345            // are envelope_size bytes.
10346            let cur_offset: usize = (4 - 1) * envelope_size;
10347
10348            // Zero reserved fields.
10349            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10350
10351            // Safety:
10352            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10353            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10354            //   envelope_size bytes, there is always sufficient room.
10355            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10356                self.target_bss_authenticated
10357                    .as_ref()
10358                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10359                encoder,
10360                offset + cur_offset,
10361                depth,
10362            )?;
10363
10364            _prev_end_offset = cur_offset + envelope_size;
10365            if 5 > max_ordinal {
10366                return Ok(());
10367            }
10368
10369            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10370            // are envelope_size bytes.
10371            let cur_offset: usize = (5 - 1) * envelope_size;
10372
10373            // Zero reserved fields.
10374            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10375
10376            // Safety:
10377            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10378            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10379            //   envelope_size bytes, there is always sufficient room.
10380            fidl::encoding::encode_in_envelope_optional::<u16, D>(
10381                self.association_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
10382                encoder,
10383                offset + cur_offset,
10384                depth,
10385            )?;
10386
10387            _prev_end_offset = cur_offset + envelope_size;
10388            if 6 > max_ordinal {
10389                return Ok(());
10390            }
10391
10392            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10393            // are envelope_size bytes.
10394            let cur_offset: usize = (6 - 1) * envelope_size;
10395
10396            // Zero reserved fields.
10397            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10398
10399            // Safety:
10400            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10401            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10402            //   envelope_size bytes, there is always sufficient room.
10403            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
10404            self.association_ies.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
10405            encoder, offset + cur_offset, depth
10406        )?;
10407
10408            _prev_end_offset = cur_offset + envelope_size;
10409
10410            Ok(())
10411        }
10412    }
10413
10414    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10415        for WlanFullmacImplIfcRoamConfRequest
10416    {
10417        #[inline(always)]
10418        fn new_empty() -> Self {
10419            Self::default()
10420        }
10421
10422        unsafe fn decode(
10423            &mut self,
10424            decoder: &mut fidl::encoding::Decoder<'_, D>,
10425            offset: usize,
10426            mut depth: fidl::encoding::Depth,
10427        ) -> fidl::Result<()> {
10428            decoder.debug_check_bounds::<Self>(offset);
10429            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10430                None => return Err(fidl::Error::NotNullable),
10431                Some(len) => len,
10432            };
10433            // Calling decoder.out_of_line_offset(0) is not allowed.
10434            if len == 0 {
10435                return Ok(());
10436            };
10437            depth.increment()?;
10438            let envelope_size = 8;
10439            let bytes_len = len * envelope_size;
10440            let offset = decoder.out_of_line_offset(bytes_len)?;
10441            // Decode the envelope for each type.
10442            let mut _next_ordinal_to_read = 0;
10443            let mut next_offset = offset;
10444            let end_offset = offset + bytes_len;
10445            _next_ordinal_to_read += 1;
10446            if next_offset >= end_offset {
10447                return Ok(());
10448            }
10449
10450            // Decode unknown envelopes for gaps in ordinals.
10451            while _next_ordinal_to_read < 1 {
10452                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10453                _next_ordinal_to_read += 1;
10454                next_offset += envelope_size;
10455            }
10456
10457            let next_out_of_line = decoder.next_out_of_line();
10458            let handles_before = decoder.remaining_handles();
10459            if let Some((inlined, num_bytes, num_handles)) =
10460                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10461            {
10462                let member_inline_size =
10463                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
10464                        decoder.context,
10465                    );
10466                if inlined != (member_inline_size <= 4) {
10467                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10468                }
10469                let inner_offset;
10470                let mut inner_depth = depth.clone();
10471                if inlined {
10472                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10473                    inner_offset = next_offset;
10474                } else {
10475                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10476                    inner_depth.increment()?;
10477                }
10478                let val_ref = self
10479                    .selected_bssid
10480                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
10481                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
10482                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10483                {
10484                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10485                }
10486                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10487                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10488                }
10489            }
10490
10491            next_offset += envelope_size;
10492            _next_ordinal_to_read += 1;
10493            if next_offset >= end_offset {
10494                return Ok(());
10495            }
10496
10497            // Decode unknown envelopes for gaps in ordinals.
10498            while _next_ordinal_to_read < 2 {
10499                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10500                _next_ordinal_to_read += 1;
10501                next_offset += envelope_size;
10502            }
10503
10504            let next_out_of_line = decoder.next_out_of_line();
10505            let handles_before = decoder.remaining_handles();
10506            if let Some((inlined, num_bytes, num_handles)) =
10507                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10508            {
10509                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10510                if inlined != (member_inline_size <= 4) {
10511                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10512                }
10513                let inner_offset;
10514                let mut inner_depth = depth.clone();
10515                if inlined {
10516                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10517                    inner_offset = next_offset;
10518                } else {
10519                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10520                    inner_depth.increment()?;
10521                }
10522                let val_ref = self.status_code.get_or_insert_with(|| {
10523                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::StatusCode, D)
10524                });
10525                fidl::decode!(
10526                    fidl_fuchsia_wlan_ieee80211_common::StatusCode,
10527                    D,
10528                    val_ref,
10529                    decoder,
10530                    inner_offset,
10531                    inner_depth
10532                )?;
10533                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10534                {
10535                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10536                }
10537                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10538                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10539                }
10540            }
10541
10542            next_offset += envelope_size;
10543            _next_ordinal_to_read += 1;
10544            if next_offset >= end_offset {
10545                return Ok(());
10546            }
10547
10548            // Decode unknown envelopes for gaps in ordinals.
10549            while _next_ordinal_to_read < 3 {
10550                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10551                _next_ordinal_to_read += 1;
10552                next_offset += envelope_size;
10553            }
10554
10555            let next_out_of_line = decoder.next_out_of_line();
10556            let handles_before = decoder.remaining_handles();
10557            if let Some((inlined, num_bytes, num_handles)) =
10558                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10559            {
10560                let member_inline_size =
10561                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10562                if inlined != (member_inline_size <= 4) {
10563                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10564                }
10565                let inner_offset;
10566                let mut inner_depth = depth.clone();
10567                if inlined {
10568                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10569                    inner_offset = next_offset;
10570                } else {
10571                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10572                    inner_depth.increment()?;
10573                }
10574                let val_ref = self
10575                    .original_association_maintained
10576                    .get_or_insert_with(|| fidl::new_empty!(bool, D));
10577                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10578                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10579                {
10580                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10581                }
10582                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10583                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10584                }
10585            }
10586
10587            next_offset += envelope_size;
10588            _next_ordinal_to_read += 1;
10589            if next_offset >= end_offset {
10590                return Ok(());
10591            }
10592
10593            // Decode unknown envelopes for gaps in ordinals.
10594            while _next_ordinal_to_read < 4 {
10595                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10596                _next_ordinal_to_read += 1;
10597                next_offset += envelope_size;
10598            }
10599
10600            let next_out_of_line = decoder.next_out_of_line();
10601            let handles_before = decoder.remaining_handles();
10602            if let Some((inlined, num_bytes, num_handles)) =
10603                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10604            {
10605                let member_inline_size =
10606                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10607                if inlined != (member_inline_size <= 4) {
10608                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10609                }
10610                let inner_offset;
10611                let mut inner_depth = depth.clone();
10612                if inlined {
10613                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10614                    inner_offset = next_offset;
10615                } else {
10616                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10617                    inner_depth.increment()?;
10618                }
10619                let val_ref =
10620                    self.target_bss_authenticated.get_or_insert_with(|| fidl::new_empty!(bool, D));
10621                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10622                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10623                {
10624                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10625                }
10626                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10627                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10628                }
10629            }
10630
10631            next_offset += envelope_size;
10632            _next_ordinal_to_read += 1;
10633            if next_offset >= end_offset {
10634                return Ok(());
10635            }
10636
10637            // Decode unknown envelopes for gaps in ordinals.
10638            while _next_ordinal_to_read < 5 {
10639                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10640                _next_ordinal_to_read += 1;
10641                next_offset += envelope_size;
10642            }
10643
10644            let next_out_of_line = decoder.next_out_of_line();
10645            let handles_before = decoder.remaining_handles();
10646            if let Some((inlined, num_bytes, num_handles)) =
10647                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10648            {
10649                let member_inline_size =
10650                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10651                if inlined != (member_inline_size <= 4) {
10652                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10653                }
10654                let inner_offset;
10655                let mut inner_depth = depth.clone();
10656                if inlined {
10657                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10658                    inner_offset = next_offset;
10659                } else {
10660                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10661                    inner_depth.increment()?;
10662                }
10663                let val_ref = self.association_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
10664                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
10665                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10666                {
10667                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10668                }
10669                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10670                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10671                }
10672            }
10673
10674            next_offset += envelope_size;
10675            _next_ordinal_to_read += 1;
10676            if next_offset >= end_offset {
10677                return Ok(());
10678            }
10679
10680            // Decode unknown envelopes for gaps in ordinals.
10681            while _next_ordinal_to_read < 6 {
10682                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10683                _next_ordinal_to_read += 1;
10684                next_offset += envelope_size;
10685            }
10686
10687            let next_out_of_line = decoder.next_out_of_line();
10688            let handles_before = decoder.remaining_handles();
10689            if let Some((inlined, num_bytes, num_handles)) =
10690                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10691            {
10692                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10693                if inlined != (member_inline_size <= 4) {
10694                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10695                }
10696                let inner_offset;
10697                let mut inner_depth = depth.clone();
10698                if inlined {
10699                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10700                    inner_offset = next_offset;
10701                } else {
10702                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10703                    inner_depth.increment()?;
10704                }
10705                let val_ref = self.association_ies.get_or_insert_with(|| {
10706                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
10707                });
10708                fidl::decode!(
10709                    fidl::encoding::UnboundedVector<u8>,
10710                    D,
10711                    val_ref,
10712                    decoder,
10713                    inner_offset,
10714                    inner_depth
10715                )?;
10716                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10717                {
10718                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10719                }
10720                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10721                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10722                }
10723            }
10724
10725            next_offset += envelope_size;
10726
10727            // Decode the remaining unknown envelopes.
10728            while next_offset < end_offset {
10729                _next_ordinal_to_read += 1;
10730                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10731                next_offset += envelope_size;
10732            }
10733
10734            Ok(())
10735        }
10736    }
10737
10738    impl WlanFullmacImplIfcRoamResultIndRequest {
10739        #[inline(always)]
10740        fn max_ordinal_present(&self) -> u64 {
10741            if let Some(_) = self.association_ies {
10742                return 6;
10743            }
10744            if let Some(_) = self.association_id {
10745                return 5;
10746            }
10747            if let Some(_) = self.target_bss_authenticated {
10748                return 4;
10749            }
10750            if let Some(_) = self.original_association_maintained {
10751                return 3;
10752            }
10753            if let Some(_) = self.status_code {
10754                return 2;
10755            }
10756            if let Some(_) = self.selected_bssid {
10757                return 1;
10758            }
10759            0
10760        }
10761    }
10762
10763    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcRoamResultIndRequest {
10764        type Borrowed<'a> = &'a Self;
10765        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10766            value
10767        }
10768    }
10769
10770    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcRoamResultIndRequest {
10771        type Owned = Self;
10772
10773        #[inline(always)]
10774        fn inline_align(_context: fidl::encoding::Context) -> usize {
10775            8
10776        }
10777
10778        #[inline(always)]
10779        fn inline_size(_context: fidl::encoding::Context) -> usize {
10780            16
10781        }
10782    }
10783
10784    unsafe impl<D: fidl::encoding::ResourceDialect>
10785        fidl::encoding::Encode<WlanFullmacImplIfcRoamResultIndRequest, D>
10786        for &WlanFullmacImplIfcRoamResultIndRequest
10787    {
10788        unsafe fn encode(
10789            self,
10790            encoder: &mut fidl::encoding::Encoder<'_, D>,
10791            offset: usize,
10792            mut depth: fidl::encoding::Depth,
10793        ) -> fidl::Result<()> {
10794            encoder.debug_check_bounds::<WlanFullmacImplIfcRoamResultIndRequest>(offset);
10795            // Vector header
10796            let max_ordinal: u64 = self.max_ordinal_present();
10797            encoder.write_num(max_ordinal, offset);
10798            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10799            // Calling encoder.out_of_line_offset(0) is not allowed.
10800            if max_ordinal == 0 {
10801                return Ok(());
10802            }
10803            depth.increment()?;
10804            let envelope_size = 8;
10805            let bytes_len = max_ordinal as usize * envelope_size;
10806            #[allow(unused_variables)]
10807            let offset = encoder.out_of_line_offset(bytes_len);
10808            let mut _prev_end_offset: usize = 0;
10809            if 1 > max_ordinal {
10810                return Ok(());
10811            }
10812
10813            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10814            // are envelope_size bytes.
10815            let cur_offset: usize = (1 - 1) * envelope_size;
10816
10817            // Zero reserved fields.
10818            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10819
10820            // Safety:
10821            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10822            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10823            //   envelope_size bytes, there is always sufficient room.
10824            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
10825                self.selected_bssid
10826                    .as_ref()
10827                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
10828                encoder,
10829                offset + cur_offset,
10830                depth,
10831            )?;
10832
10833            _prev_end_offset = cur_offset + envelope_size;
10834            if 2 > max_ordinal {
10835                return Ok(());
10836            }
10837
10838            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10839            // are envelope_size bytes.
10840            let cur_offset: usize = (2 - 1) * envelope_size;
10841
10842            // Zero reserved fields.
10843            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10844
10845            // Safety:
10846            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10847            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10848            //   envelope_size bytes, there is always sufficient room.
10849            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::StatusCode, D>(
10850            self.status_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
10851            encoder, offset + cur_offset, depth
10852        )?;
10853
10854            _prev_end_offset = cur_offset + envelope_size;
10855            if 3 > max_ordinal {
10856                return Ok(());
10857            }
10858
10859            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10860            // are envelope_size bytes.
10861            let cur_offset: usize = (3 - 1) * envelope_size;
10862
10863            // Zero reserved fields.
10864            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10865
10866            // Safety:
10867            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10868            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10869            //   envelope_size bytes, there is always sufficient room.
10870            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10871                self.original_association_maintained
10872                    .as_ref()
10873                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10874                encoder,
10875                offset + cur_offset,
10876                depth,
10877            )?;
10878
10879            _prev_end_offset = cur_offset + envelope_size;
10880            if 4 > max_ordinal {
10881                return Ok(());
10882            }
10883
10884            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10885            // are envelope_size bytes.
10886            let cur_offset: usize = (4 - 1) * envelope_size;
10887
10888            // Zero reserved fields.
10889            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10890
10891            // Safety:
10892            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10893            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10894            //   envelope_size bytes, there is always sufficient room.
10895            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10896                self.target_bss_authenticated
10897                    .as_ref()
10898                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10899                encoder,
10900                offset + cur_offset,
10901                depth,
10902            )?;
10903
10904            _prev_end_offset = cur_offset + envelope_size;
10905            if 5 > max_ordinal {
10906                return Ok(());
10907            }
10908
10909            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10910            // are envelope_size bytes.
10911            let cur_offset: usize = (5 - 1) * envelope_size;
10912
10913            // Zero reserved fields.
10914            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10915
10916            // Safety:
10917            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10918            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10919            //   envelope_size bytes, there is always sufficient room.
10920            fidl::encoding::encode_in_envelope_optional::<u16, D>(
10921                self.association_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
10922                encoder,
10923                offset + cur_offset,
10924                depth,
10925            )?;
10926
10927            _prev_end_offset = cur_offset + envelope_size;
10928            if 6 > max_ordinal {
10929                return Ok(());
10930            }
10931
10932            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10933            // are envelope_size bytes.
10934            let cur_offset: usize = (6 - 1) * envelope_size;
10935
10936            // Zero reserved fields.
10937            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10938
10939            // Safety:
10940            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10941            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10942            //   envelope_size bytes, there is always sufficient room.
10943            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
10944            self.association_ies.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
10945            encoder, offset + cur_offset, depth
10946        )?;
10947
10948            _prev_end_offset = cur_offset + envelope_size;
10949
10950            Ok(())
10951        }
10952    }
10953
10954    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10955        for WlanFullmacImplIfcRoamResultIndRequest
10956    {
10957        #[inline(always)]
10958        fn new_empty() -> Self {
10959            Self::default()
10960        }
10961
10962        unsafe fn decode(
10963            &mut self,
10964            decoder: &mut fidl::encoding::Decoder<'_, D>,
10965            offset: usize,
10966            mut depth: fidl::encoding::Depth,
10967        ) -> fidl::Result<()> {
10968            decoder.debug_check_bounds::<Self>(offset);
10969            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10970                None => return Err(fidl::Error::NotNullable),
10971                Some(len) => len,
10972            };
10973            // Calling decoder.out_of_line_offset(0) is not allowed.
10974            if len == 0 {
10975                return Ok(());
10976            };
10977            depth.increment()?;
10978            let envelope_size = 8;
10979            let bytes_len = len * envelope_size;
10980            let offset = decoder.out_of_line_offset(bytes_len)?;
10981            // Decode the envelope for each type.
10982            let mut _next_ordinal_to_read = 0;
10983            let mut next_offset = offset;
10984            let end_offset = offset + bytes_len;
10985            _next_ordinal_to_read += 1;
10986            if next_offset >= end_offset {
10987                return Ok(());
10988            }
10989
10990            // Decode unknown envelopes for gaps in ordinals.
10991            while _next_ordinal_to_read < 1 {
10992                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10993                _next_ordinal_to_read += 1;
10994                next_offset += envelope_size;
10995            }
10996
10997            let next_out_of_line = decoder.next_out_of_line();
10998            let handles_before = decoder.remaining_handles();
10999            if let Some((inlined, num_bytes, num_handles)) =
11000                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11001            {
11002                let member_inline_size =
11003                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
11004                        decoder.context,
11005                    );
11006                if inlined != (member_inline_size <= 4) {
11007                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11008                }
11009                let inner_offset;
11010                let mut inner_depth = depth.clone();
11011                if inlined {
11012                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11013                    inner_offset = next_offset;
11014                } else {
11015                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11016                    inner_depth.increment()?;
11017                }
11018                let val_ref = self
11019                    .selected_bssid
11020                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
11021                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
11022                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11023                {
11024                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11025                }
11026                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11027                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11028                }
11029            }
11030
11031            next_offset += envelope_size;
11032            _next_ordinal_to_read += 1;
11033            if next_offset >= end_offset {
11034                return Ok(());
11035            }
11036
11037            // Decode unknown envelopes for gaps in ordinals.
11038            while _next_ordinal_to_read < 2 {
11039                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11040                _next_ordinal_to_read += 1;
11041                next_offset += envelope_size;
11042            }
11043
11044            let next_out_of_line = decoder.next_out_of_line();
11045            let handles_before = decoder.remaining_handles();
11046            if let Some((inlined, num_bytes, num_handles)) =
11047                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11048            {
11049                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11050                if inlined != (member_inline_size <= 4) {
11051                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11052                }
11053                let inner_offset;
11054                let mut inner_depth = depth.clone();
11055                if inlined {
11056                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11057                    inner_offset = next_offset;
11058                } else {
11059                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11060                    inner_depth.increment()?;
11061                }
11062                let val_ref = self.status_code.get_or_insert_with(|| {
11063                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::StatusCode, D)
11064                });
11065                fidl::decode!(
11066                    fidl_fuchsia_wlan_ieee80211_common::StatusCode,
11067                    D,
11068                    val_ref,
11069                    decoder,
11070                    inner_offset,
11071                    inner_depth
11072                )?;
11073                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11074                {
11075                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11076                }
11077                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11078                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11079                }
11080            }
11081
11082            next_offset += envelope_size;
11083            _next_ordinal_to_read += 1;
11084            if next_offset >= end_offset {
11085                return Ok(());
11086            }
11087
11088            // Decode unknown envelopes for gaps in ordinals.
11089            while _next_ordinal_to_read < 3 {
11090                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11091                _next_ordinal_to_read += 1;
11092                next_offset += envelope_size;
11093            }
11094
11095            let next_out_of_line = decoder.next_out_of_line();
11096            let handles_before = decoder.remaining_handles();
11097            if let Some((inlined, num_bytes, num_handles)) =
11098                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11099            {
11100                let member_inline_size =
11101                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11102                if inlined != (member_inline_size <= 4) {
11103                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11104                }
11105                let inner_offset;
11106                let mut inner_depth = depth.clone();
11107                if inlined {
11108                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11109                    inner_offset = next_offset;
11110                } else {
11111                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11112                    inner_depth.increment()?;
11113                }
11114                let val_ref = self
11115                    .original_association_maintained
11116                    .get_or_insert_with(|| fidl::new_empty!(bool, D));
11117                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
11118                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11119                {
11120                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11121                }
11122                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11123                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11124                }
11125            }
11126
11127            next_offset += envelope_size;
11128            _next_ordinal_to_read += 1;
11129            if next_offset >= end_offset {
11130                return Ok(());
11131            }
11132
11133            // Decode unknown envelopes for gaps in ordinals.
11134            while _next_ordinal_to_read < 4 {
11135                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11136                _next_ordinal_to_read += 1;
11137                next_offset += envelope_size;
11138            }
11139
11140            let next_out_of_line = decoder.next_out_of_line();
11141            let handles_before = decoder.remaining_handles();
11142            if let Some((inlined, num_bytes, num_handles)) =
11143                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11144            {
11145                let member_inline_size =
11146                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11147                if inlined != (member_inline_size <= 4) {
11148                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11149                }
11150                let inner_offset;
11151                let mut inner_depth = depth.clone();
11152                if inlined {
11153                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11154                    inner_offset = next_offset;
11155                } else {
11156                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11157                    inner_depth.increment()?;
11158                }
11159                let val_ref =
11160                    self.target_bss_authenticated.get_or_insert_with(|| fidl::new_empty!(bool, D));
11161                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
11162                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11163                {
11164                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11165                }
11166                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11167                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11168                }
11169            }
11170
11171            next_offset += envelope_size;
11172            _next_ordinal_to_read += 1;
11173            if next_offset >= end_offset {
11174                return Ok(());
11175            }
11176
11177            // Decode unknown envelopes for gaps in ordinals.
11178            while _next_ordinal_to_read < 5 {
11179                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11180                _next_ordinal_to_read += 1;
11181                next_offset += envelope_size;
11182            }
11183
11184            let next_out_of_line = decoder.next_out_of_line();
11185            let handles_before = decoder.remaining_handles();
11186            if let Some((inlined, num_bytes, num_handles)) =
11187                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11188            {
11189                let member_inline_size =
11190                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11191                if inlined != (member_inline_size <= 4) {
11192                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11193                }
11194                let inner_offset;
11195                let mut inner_depth = depth.clone();
11196                if inlined {
11197                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11198                    inner_offset = next_offset;
11199                } else {
11200                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11201                    inner_depth.increment()?;
11202                }
11203                let val_ref = self.association_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
11204                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
11205                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11206                {
11207                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11208                }
11209                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11210                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11211                }
11212            }
11213
11214            next_offset += envelope_size;
11215            _next_ordinal_to_read += 1;
11216            if next_offset >= end_offset {
11217                return Ok(());
11218            }
11219
11220            // Decode unknown envelopes for gaps in ordinals.
11221            while _next_ordinal_to_read < 6 {
11222                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11223                _next_ordinal_to_read += 1;
11224                next_offset += envelope_size;
11225            }
11226
11227            let next_out_of_line = decoder.next_out_of_line();
11228            let handles_before = decoder.remaining_handles();
11229            if let Some((inlined, num_bytes, num_handles)) =
11230                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11231            {
11232                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11233                if inlined != (member_inline_size <= 4) {
11234                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11235                }
11236                let inner_offset;
11237                let mut inner_depth = depth.clone();
11238                if inlined {
11239                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11240                    inner_offset = next_offset;
11241                } else {
11242                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11243                    inner_depth.increment()?;
11244                }
11245                let val_ref = self.association_ies.get_or_insert_with(|| {
11246                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
11247                });
11248                fidl::decode!(
11249                    fidl::encoding::UnboundedVector<u8>,
11250                    D,
11251                    val_ref,
11252                    decoder,
11253                    inner_offset,
11254                    inner_depth
11255                )?;
11256                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11257                {
11258                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11259                }
11260                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11261                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11262                }
11263            }
11264
11265            next_offset += envelope_size;
11266
11267            // Decode the remaining unknown envelopes.
11268            while next_offset < end_offset {
11269                _next_ordinal_to_read += 1;
11270                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11271                next_offset += envelope_size;
11272            }
11273
11274            Ok(())
11275        }
11276    }
11277
11278    impl WlanFullmacImplIfcRoamStartIndRequest {
11279        #[inline(always)]
11280        fn max_ordinal_present(&self) -> u64 {
11281            if let Some(_) = self.original_association_maintained {
11282                return 3;
11283            }
11284            if let Some(_) = self.selected_bss {
11285                return 2;
11286            }
11287            if let Some(_) = self.selected_bssid {
11288                return 1;
11289            }
11290            0
11291        }
11292    }
11293
11294    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcRoamStartIndRequest {
11295        type Borrowed<'a> = &'a Self;
11296        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11297            value
11298        }
11299    }
11300
11301    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcRoamStartIndRequest {
11302        type Owned = Self;
11303
11304        #[inline(always)]
11305        fn inline_align(_context: fidl::encoding::Context) -> usize {
11306            8
11307        }
11308
11309        #[inline(always)]
11310        fn inline_size(_context: fidl::encoding::Context) -> usize {
11311            16
11312        }
11313    }
11314
11315    unsafe impl<D: fidl::encoding::ResourceDialect>
11316        fidl::encoding::Encode<WlanFullmacImplIfcRoamStartIndRequest, D>
11317        for &WlanFullmacImplIfcRoamStartIndRequest
11318    {
11319        unsafe fn encode(
11320            self,
11321            encoder: &mut fidl::encoding::Encoder<'_, D>,
11322            offset: usize,
11323            mut depth: fidl::encoding::Depth,
11324        ) -> fidl::Result<()> {
11325            encoder.debug_check_bounds::<WlanFullmacImplIfcRoamStartIndRequest>(offset);
11326            // Vector header
11327            let max_ordinal: u64 = self.max_ordinal_present();
11328            encoder.write_num(max_ordinal, offset);
11329            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11330            // Calling encoder.out_of_line_offset(0) is not allowed.
11331            if max_ordinal == 0 {
11332                return Ok(());
11333            }
11334            depth.increment()?;
11335            let envelope_size = 8;
11336            let bytes_len = max_ordinal as usize * envelope_size;
11337            #[allow(unused_variables)]
11338            let offset = encoder.out_of_line_offset(bytes_len);
11339            let mut _prev_end_offset: usize = 0;
11340            if 1 > max_ordinal {
11341                return Ok(());
11342            }
11343
11344            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11345            // are envelope_size bytes.
11346            let cur_offset: usize = (1 - 1) * envelope_size;
11347
11348            // Zero reserved fields.
11349            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11350
11351            // Safety:
11352            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11353            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11354            //   envelope_size bytes, there is always sufficient room.
11355            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
11356                self.selected_bssid
11357                    .as_ref()
11358                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
11359                encoder,
11360                offset + cur_offset,
11361                depth,
11362            )?;
11363
11364            _prev_end_offset = cur_offset + envelope_size;
11365            if 2 > max_ordinal {
11366                return Ok(());
11367            }
11368
11369            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11370            // are envelope_size bytes.
11371            let cur_offset: usize = (2 - 1) * envelope_size;
11372
11373            // Zero reserved fields.
11374            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11375
11376            // Safety:
11377            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11378            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11379            //   envelope_size bytes, there is always sufficient room.
11380            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::BssDescription, D>(
11381            self.selected_bss.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow),
11382            encoder, offset + cur_offset, depth
11383        )?;
11384
11385            _prev_end_offset = cur_offset + envelope_size;
11386            if 3 > max_ordinal {
11387                return Ok(());
11388            }
11389
11390            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11391            // are envelope_size bytes.
11392            let cur_offset: usize = (3 - 1) * envelope_size;
11393
11394            // Zero reserved fields.
11395            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11396
11397            // Safety:
11398            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11399            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11400            //   envelope_size bytes, there is always sufficient room.
11401            fidl::encoding::encode_in_envelope_optional::<bool, D>(
11402                self.original_association_maintained
11403                    .as_ref()
11404                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
11405                encoder,
11406                offset + cur_offset,
11407                depth,
11408            )?;
11409
11410            _prev_end_offset = cur_offset + envelope_size;
11411
11412            Ok(())
11413        }
11414    }
11415
11416    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11417        for WlanFullmacImplIfcRoamStartIndRequest
11418    {
11419        #[inline(always)]
11420        fn new_empty() -> Self {
11421            Self::default()
11422        }
11423
11424        unsafe fn decode(
11425            &mut self,
11426            decoder: &mut fidl::encoding::Decoder<'_, D>,
11427            offset: usize,
11428            mut depth: fidl::encoding::Depth,
11429        ) -> fidl::Result<()> {
11430            decoder.debug_check_bounds::<Self>(offset);
11431            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11432                None => return Err(fidl::Error::NotNullable),
11433                Some(len) => len,
11434            };
11435            // Calling decoder.out_of_line_offset(0) is not allowed.
11436            if len == 0 {
11437                return Ok(());
11438            };
11439            depth.increment()?;
11440            let envelope_size = 8;
11441            let bytes_len = len * envelope_size;
11442            let offset = decoder.out_of_line_offset(bytes_len)?;
11443            // Decode the envelope for each type.
11444            let mut _next_ordinal_to_read = 0;
11445            let mut next_offset = offset;
11446            let end_offset = offset + bytes_len;
11447            _next_ordinal_to_read += 1;
11448            if next_offset >= end_offset {
11449                return Ok(());
11450            }
11451
11452            // Decode unknown envelopes for gaps in ordinals.
11453            while _next_ordinal_to_read < 1 {
11454                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11455                _next_ordinal_to_read += 1;
11456                next_offset += envelope_size;
11457            }
11458
11459            let next_out_of_line = decoder.next_out_of_line();
11460            let handles_before = decoder.remaining_handles();
11461            if let Some((inlined, num_bytes, num_handles)) =
11462                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11463            {
11464                let member_inline_size =
11465                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
11466                        decoder.context,
11467                    );
11468                if inlined != (member_inline_size <= 4) {
11469                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11470                }
11471                let inner_offset;
11472                let mut inner_depth = depth.clone();
11473                if inlined {
11474                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11475                    inner_offset = next_offset;
11476                } else {
11477                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11478                    inner_depth.increment()?;
11479                }
11480                let val_ref = self
11481                    .selected_bssid
11482                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
11483                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
11484                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11485                {
11486                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11487                }
11488                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11489                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11490                }
11491            }
11492
11493            next_offset += envelope_size;
11494            _next_ordinal_to_read += 1;
11495            if next_offset >= end_offset {
11496                return Ok(());
11497            }
11498
11499            // Decode unknown envelopes for gaps in ordinals.
11500            while _next_ordinal_to_read < 2 {
11501                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11502                _next_ordinal_to_read += 1;
11503                next_offset += envelope_size;
11504            }
11505
11506            let next_out_of_line = decoder.next_out_of_line();
11507            let handles_before = decoder.remaining_handles();
11508            if let Some((inlined, num_bytes, num_handles)) =
11509                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11510            {
11511                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::BssDescription as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11512                if inlined != (member_inline_size <= 4) {
11513                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11514                }
11515                let inner_offset;
11516                let mut inner_depth = depth.clone();
11517                if inlined {
11518                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11519                    inner_offset = next_offset;
11520                } else {
11521                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11522                    inner_depth.increment()?;
11523                }
11524                let val_ref = self.selected_bss.get_or_insert_with(|| {
11525                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::BssDescription, D)
11526                });
11527                fidl::decode!(
11528                    fidl_fuchsia_wlan_ieee80211_common::BssDescription,
11529                    D,
11530                    val_ref,
11531                    decoder,
11532                    inner_offset,
11533                    inner_depth
11534                )?;
11535                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11536                {
11537                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11538                }
11539                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11540                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11541                }
11542            }
11543
11544            next_offset += envelope_size;
11545            _next_ordinal_to_read += 1;
11546            if next_offset >= end_offset {
11547                return Ok(());
11548            }
11549
11550            // Decode unknown envelopes for gaps in ordinals.
11551            while _next_ordinal_to_read < 3 {
11552                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11553                _next_ordinal_to_read += 1;
11554                next_offset += envelope_size;
11555            }
11556
11557            let next_out_of_line = decoder.next_out_of_line();
11558            let handles_before = decoder.remaining_handles();
11559            if let Some((inlined, num_bytes, num_handles)) =
11560                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11561            {
11562                let member_inline_size =
11563                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11564                if inlined != (member_inline_size <= 4) {
11565                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11566                }
11567                let inner_offset;
11568                let mut inner_depth = depth.clone();
11569                if inlined {
11570                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11571                    inner_offset = next_offset;
11572                } else {
11573                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11574                    inner_depth.increment()?;
11575                }
11576                let val_ref = self
11577                    .original_association_maintained
11578                    .get_or_insert_with(|| fidl::new_empty!(bool, D));
11579                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
11580                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11581                {
11582                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11583                }
11584                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11585                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11586                }
11587            }
11588
11589            next_offset += envelope_size;
11590
11591            // Decode the remaining unknown envelopes.
11592            while next_offset < end_offset {
11593                _next_ordinal_to_read += 1;
11594                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11595                next_offset += envelope_size;
11596            }
11597
11598            Ok(())
11599        }
11600    }
11601
11602    impl WlanFullmacImplIfcSaeHandshakeIndRequest {
11603        #[inline(always)]
11604        fn max_ordinal_present(&self) -> u64 {
11605            if let Some(_) = self.peer_sta_address {
11606                return 1;
11607            }
11608            0
11609        }
11610    }
11611
11612    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcSaeHandshakeIndRequest {
11613        type Borrowed<'a> = &'a Self;
11614        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11615            value
11616        }
11617    }
11618
11619    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcSaeHandshakeIndRequest {
11620        type Owned = Self;
11621
11622        #[inline(always)]
11623        fn inline_align(_context: fidl::encoding::Context) -> usize {
11624            8
11625        }
11626
11627        #[inline(always)]
11628        fn inline_size(_context: fidl::encoding::Context) -> usize {
11629            16
11630        }
11631    }
11632
11633    unsafe impl<D: fidl::encoding::ResourceDialect>
11634        fidl::encoding::Encode<WlanFullmacImplIfcSaeHandshakeIndRequest, D>
11635        for &WlanFullmacImplIfcSaeHandshakeIndRequest
11636    {
11637        unsafe fn encode(
11638            self,
11639            encoder: &mut fidl::encoding::Encoder<'_, D>,
11640            offset: usize,
11641            mut depth: fidl::encoding::Depth,
11642        ) -> fidl::Result<()> {
11643            encoder.debug_check_bounds::<WlanFullmacImplIfcSaeHandshakeIndRequest>(offset);
11644            // Vector header
11645            let max_ordinal: u64 = self.max_ordinal_present();
11646            encoder.write_num(max_ordinal, offset);
11647            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11648            // Calling encoder.out_of_line_offset(0) is not allowed.
11649            if max_ordinal == 0 {
11650                return Ok(());
11651            }
11652            depth.increment()?;
11653            let envelope_size = 8;
11654            let bytes_len = max_ordinal as usize * envelope_size;
11655            #[allow(unused_variables)]
11656            let offset = encoder.out_of_line_offset(bytes_len);
11657            let mut _prev_end_offset: usize = 0;
11658            if 1 > max_ordinal {
11659                return Ok(());
11660            }
11661
11662            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11663            // are envelope_size bytes.
11664            let cur_offset: usize = (1 - 1) * envelope_size;
11665
11666            // Zero reserved fields.
11667            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11668
11669            // Safety:
11670            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11671            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11672            //   envelope_size bytes, there is always sufficient room.
11673            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
11674                self.peer_sta_address
11675                    .as_ref()
11676                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
11677                encoder,
11678                offset + cur_offset,
11679                depth,
11680            )?;
11681
11682            _prev_end_offset = cur_offset + envelope_size;
11683
11684            Ok(())
11685        }
11686    }
11687
11688    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11689        for WlanFullmacImplIfcSaeHandshakeIndRequest
11690    {
11691        #[inline(always)]
11692        fn new_empty() -> Self {
11693            Self::default()
11694        }
11695
11696        unsafe fn decode(
11697            &mut self,
11698            decoder: &mut fidl::encoding::Decoder<'_, D>,
11699            offset: usize,
11700            mut depth: fidl::encoding::Depth,
11701        ) -> fidl::Result<()> {
11702            decoder.debug_check_bounds::<Self>(offset);
11703            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11704                None => return Err(fidl::Error::NotNullable),
11705                Some(len) => len,
11706            };
11707            // Calling decoder.out_of_line_offset(0) is not allowed.
11708            if len == 0 {
11709                return Ok(());
11710            };
11711            depth.increment()?;
11712            let envelope_size = 8;
11713            let bytes_len = len * envelope_size;
11714            let offset = decoder.out_of_line_offset(bytes_len)?;
11715            // Decode the envelope for each type.
11716            let mut _next_ordinal_to_read = 0;
11717            let mut next_offset = offset;
11718            let end_offset = offset + bytes_len;
11719            _next_ordinal_to_read += 1;
11720            if next_offset >= end_offset {
11721                return Ok(());
11722            }
11723
11724            // Decode unknown envelopes for gaps in ordinals.
11725            while _next_ordinal_to_read < 1 {
11726                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11727                _next_ordinal_to_read += 1;
11728                next_offset += envelope_size;
11729            }
11730
11731            let next_out_of_line = decoder.next_out_of_line();
11732            let handles_before = decoder.remaining_handles();
11733            if let Some((inlined, num_bytes, num_handles)) =
11734                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11735            {
11736                let member_inline_size =
11737                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
11738                        decoder.context,
11739                    );
11740                if inlined != (member_inline_size <= 4) {
11741                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11742                }
11743                let inner_offset;
11744                let mut inner_depth = depth.clone();
11745                if inlined {
11746                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11747                    inner_offset = next_offset;
11748                } else {
11749                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11750                    inner_depth.increment()?;
11751                }
11752                let val_ref = self
11753                    .peer_sta_address
11754                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
11755                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
11756                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11757                {
11758                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11759                }
11760                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11761                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11762                }
11763            }
11764
11765            next_offset += envelope_size;
11766
11767            // Decode the remaining unknown envelopes.
11768            while next_offset < end_offset {
11769                _next_ordinal_to_read += 1;
11770                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11771                next_offset += envelope_size;
11772            }
11773
11774            Ok(())
11775        }
11776    }
11777
11778    impl WlanFullmacImplIfcStartConfRequest {
11779        #[inline(always)]
11780        fn max_ordinal_present(&self) -> u64 {
11781            if let Some(_) = self.result_code {
11782                return 1;
11783            }
11784            0
11785        }
11786    }
11787
11788    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcStartConfRequest {
11789        type Borrowed<'a> = &'a Self;
11790        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11791            value
11792        }
11793    }
11794
11795    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcStartConfRequest {
11796        type Owned = Self;
11797
11798        #[inline(always)]
11799        fn inline_align(_context: fidl::encoding::Context) -> usize {
11800            8
11801        }
11802
11803        #[inline(always)]
11804        fn inline_size(_context: fidl::encoding::Context) -> usize {
11805            16
11806        }
11807    }
11808
11809    unsafe impl<D: fidl::encoding::ResourceDialect>
11810        fidl::encoding::Encode<WlanFullmacImplIfcStartConfRequest, D>
11811        for &WlanFullmacImplIfcStartConfRequest
11812    {
11813        unsafe fn encode(
11814            self,
11815            encoder: &mut fidl::encoding::Encoder<'_, D>,
11816            offset: usize,
11817            mut depth: fidl::encoding::Depth,
11818        ) -> fidl::Result<()> {
11819            encoder.debug_check_bounds::<WlanFullmacImplIfcStartConfRequest>(offset);
11820            // Vector header
11821            let max_ordinal: u64 = self.max_ordinal_present();
11822            encoder.write_num(max_ordinal, offset);
11823            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11824            // Calling encoder.out_of_line_offset(0) is not allowed.
11825            if max_ordinal == 0 {
11826                return Ok(());
11827            }
11828            depth.increment()?;
11829            let envelope_size = 8;
11830            let bytes_len = max_ordinal as usize * envelope_size;
11831            #[allow(unused_variables)]
11832            let offset = encoder.out_of_line_offset(bytes_len);
11833            let mut _prev_end_offset: usize = 0;
11834            if 1 > max_ordinal {
11835                return Ok(());
11836            }
11837
11838            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11839            // are envelope_size bytes.
11840            let cur_offset: usize = (1 - 1) * envelope_size;
11841
11842            // Zero reserved fields.
11843            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11844
11845            // Safety:
11846            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11847            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11848            //   envelope_size bytes, there is always sufficient room.
11849            fidl::encoding::encode_in_envelope_optional::<StartResult, D>(
11850                self.result_code
11851                    .as_ref()
11852                    .map(<StartResult as fidl::encoding::ValueTypeMarker>::borrow),
11853                encoder,
11854                offset + cur_offset,
11855                depth,
11856            )?;
11857
11858            _prev_end_offset = cur_offset + envelope_size;
11859
11860            Ok(())
11861        }
11862    }
11863
11864    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11865        for WlanFullmacImplIfcStartConfRequest
11866    {
11867        #[inline(always)]
11868        fn new_empty() -> Self {
11869            Self::default()
11870        }
11871
11872        unsafe fn decode(
11873            &mut self,
11874            decoder: &mut fidl::encoding::Decoder<'_, D>,
11875            offset: usize,
11876            mut depth: fidl::encoding::Depth,
11877        ) -> fidl::Result<()> {
11878            decoder.debug_check_bounds::<Self>(offset);
11879            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11880                None => return Err(fidl::Error::NotNullable),
11881                Some(len) => len,
11882            };
11883            // Calling decoder.out_of_line_offset(0) is not allowed.
11884            if len == 0 {
11885                return Ok(());
11886            };
11887            depth.increment()?;
11888            let envelope_size = 8;
11889            let bytes_len = len * envelope_size;
11890            let offset = decoder.out_of_line_offset(bytes_len)?;
11891            // Decode the envelope for each type.
11892            let mut _next_ordinal_to_read = 0;
11893            let mut next_offset = offset;
11894            let end_offset = offset + bytes_len;
11895            _next_ordinal_to_read += 1;
11896            if next_offset >= end_offset {
11897                return Ok(());
11898            }
11899
11900            // Decode unknown envelopes for gaps in ordinals.
11901            while _next_ordinal_to_read < 1 {
11902                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11903                _next_ordinal_to_read += 1;
11904                next_offset += envelope_size;
11905            }
11906
11907            let next_out_of_line = decoder.next_out_of_line();
11908            let handles_before = decoder.remaining_handles();
11909            if let Some((inlined, num_bytes, num_handles)) =
11910                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11911            {
11912                let member_inline_size =
11913                    <StartResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11914                if inlined != (member_inline_size <= 4) {
11915                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11916                }
11917                let inner_offset;
11918                let mut inner_depth = depth.clone();
11919                if inlined {
11920                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11921                    inner_offset = next_offset;
11922                } else {
11923                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11924                    inner_depth.increment()?;
11925                }
11926                let val_ref =
11927                    self.result_code.get_or_insert_with(|| fidl::new_empty!(StartResult, D));
11928                fidl::decode!(StartResult, D, val_ref, decoder, inner_offset, inner_depth)?;
11929                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11930                {
11931                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11932                }
11933                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11934                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11935                }
11936            }
11937
11938            next_offset += envelope_size;
11939
11940            // Decode the remaining unknown envelopes.
11941            while next_offset < end_offset {
11942                _next_ordinal_to_read += 1;
11943                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11944                next_offset += envelope_size;
11945            }
11946
11947            Ok(())
11948        }
11949    }
11950
11951    impl WlanFullmacImplIfcStopConfRequest {
11952        #[inline(always)]
11953        fn max_ordinal_present(&self) -> u64 {
11954            if let Some(_) = self.result_code {
11955                return 1;
11956            }
11957            0
11958        }
11959    }
11960
11961    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcStopConfRequest {
11962        type Borrowed<'a> = &'a Self;
11963        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11964            value
11965        }
11966    }
11967
11968    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcStopConfRequest {
11969        type Owned = Self;
11970
11971        #[inline(always)]
11972        fn inline_align(_context: fidl::encoding::Context) -> usize {
11973            8
11974        }
11975
11976        #[inline(always)]
11977        fn inline_size(_context: fidl::encoding::Context) -> usize {
11978            16
11979        }
11980    }
11981
11982    unsafe impl<D: fidl::encoding::ResourceDialect>
11983        fidl::encoding::Encode<WlanFullmacImplIfcStopConfRequest, D>
11984        for &WlanFullmacImplIfcStopConfRequest
11985    {
11986        unsafe fn encode(
11987            self,
11988            encoder: &mut fidl::encoding::Encoder<'_, D>,
11989            offset: usize,
11990            mut depth: fidl::encoding::Depth,
11991        ) -> fidl::Result<()> {
11992            encoder.debug_check_bounds::<WlanFullmacImplIfcStopConfRequest>(offset);
11993            // Vector header
11994            let max_ordinal: u64 = self.max_ordinal_present();
11995            encoder.write_num(max_ordinal, offset);
11996            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11997            // Calling encoder.out_of_line_offset(0) is not allowed.
11998            if max_ordinal == 0 {
11999                return Ok(());
12000            }
12001            depth.increment()?;
12002            let envelope_size = 8;
12003            let bytes_len = max_ordinal as usize * envelope_size;
12004            #[allow(unused_variables)]
12005            let offset = encoder.out_of_line_offset(bytes_len);
12006            let mut _prev_end_offset: usize = 0;
12007            if 1 > max_ordinal {
12008                return Ok(());
12009            }
12010
12011            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12012            // are envelope_size bytes.
12013            let cur_offset: usize = (1 - 1) * envelope_size;
12014
12015            // Zero reserved fields.
12016            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12017
12018            // Safety:
12019            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12020            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12021            //   envelope_size bytes, there is always sufficient room.
12022            fidl::encoding::encode_in_envelope_optional::<StopResult, D>(
12023                self.result_code
12024                    .as_ref()
12025                    .map(<StopResult as fidl::encoding::ValueTypeMarker>::borrow),
12026                encoder,
12027                offset + cur_offset,
12028                depth,
12029            )?;
12030
12031            _prev_end_offset = cur_offset + envelope_size;
12032
12033            Ok(())
12034        }
12035    }
12036
12037    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12038        for WlanFullmacImplIfcStopConfRequest
12039    {
12040        #[inline(always)]
12041        fn new_empty() -> Self {
12042            Self::default()
12043        }
12044
12045        unsafe fn decode(
12046            &mut self,
12047            decoder: &mut fidl::encoding::Decoder<'_, D>,
12048            offset: usize,
12049            mut depth: fidl::encoding::Depth,
12050        ) -> fidl::Result<()> {
12051            decoder.debug_check_bounds::<Self>(offset);
12052            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12053                None => return Err(fidl::Error::NotNullable),
12054                Some(len) => len,
12055            };
12056            // Calling decoder.out_of_line_offset(0) is not allowed.
12057            if len == 0 {
12058                return Ok(());
12059            };
12060            depth.increment()?;
12061            let envelope_size = 8;
12062            let bytes_len = len * envelope_size;
12063            let offset = decoder.out_of_line_offset(bytes_len)?;
12064            // Decode the envelope for each type.
12065            let mut _next_ordinal_to_read = 0;
12066            let mut next_offset = offset;
12067            let end_offset = offset + bytes_len;
12068            _next_ordinal_to_read += 1;
12069            if next_offset >= end_offset {
12070                return Ok(());
12071            }
12072
12073            // Decode unknown envelopes for gaps in ordinals.
12074            while _next_ordinal_to_read < 1 {
12075                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12076                _next_ordinal_to_read += 1;
12077                next_offset += envelope_size;
12078            }
12079
12080            let next_out_of_line = decoder.next_out_of_line();
12081            let handles_before = decoder.remaining_handles();
12082            if let Some((inlined, num_bytes, num_handles)) =
12083                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12084            {
12085                let member_inline_size =
12086                    <StopResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12087                if inlined != (member_inline_size <= 4) {
12088                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12089                }
12090                let inner_offset;
12091                let mut inner_depth = depth.clone();
12092                if inlined {
12093                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12094                    inner_offset = next_offset;
12095                } else {
12096                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12097                    inner_depth.increment()?;
12098                }
12099                let val_ref =
12100                    self.result_code.get_or_insert_with(|| fidl::new_empty!(StopResult, D));
12101                fidl::decode!(StopResult, D, val_ref, decoder, inner_offset, inner_depth)?;
12102                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12103                {
12104                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12105                }
12106                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12107                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12108                }
12109            }
12110
12111            next_offset += envelope_size;
12112
12113            // Decode the remaining unknown envelopes.
12114            while next_offset < end_offset {
12115                _next_ordinal_to_read += 1;
12116                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12117                next_offset += envelope_size;
12118            }
12119
12120            Ok(())
12121        }
12122    }
12123
12124    impl WlanFullmacImplInstallApfPacketFilterRequest {
12125        #[inline(always)]
12126        fn max_ordinal_present(&self) -> u64 {
12127            if let Some(_) = self.program {
12128                return 1;
12129            }
12130            0
12131        }
12132    }
12133
12134    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplInstallApfPacketFilterRequest {
12135        type Borrowed<'a> = &'a Self;
12136        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12137            value
12138        }
12139    }
12140
12141    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplInstallApfPacketFilterRequest {
12142        type Owned = Self;
12143
12144        #[inline(always)]
12145        fn inline_align(_context: fidl::encoding::Context) -> usize {
12146            8
12147        }
12148
12149        #[inline(always)]
12150        fn inline_size(_context: fidl::encoding::Context) -> usize {
12151            16
12152        }
12153    }
12154
12155    unsafe impl<D: fidl::encoding::ResourceDialect>
12156        fidl::encoding::Encode<WlanFullmacImplInstallApfPacketFilterRequest, D>
12157        for &WlanFullmacImplInstallApfPacketFilterRequest
12158    {
12159        unsafe fn encode(
12160            self,
12161            encoder: &mut fidl::encoding::Encoder<'_, D>,
12162            offset: usize,
12163            mut depth: fidl::encoding::Depth,
12164        ) -> fidl::Result<()> {
12165            encoder.debug_check_bounds::<WlanFullmacImplInstallApfPacketFilterRequest>(offset);
12166            // Vector header
12167            let max_ordinal: u64 = self.max_ordinal_present();
12168            encoder.write_num(max_ordinal, offset);
12169            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12170            // Calling encoder.out_of_line_offset(0) is not allowed.
12171            if max_ordinal == 0 {
12172                return Ok(());
12173            }
12174            depth.increment()?;
12175            let envelope_size = 8;
12176            let bytes_len = max_ordinal as usize * envelope_size;
12177            #[allow(unused_variables)]
12178            let offset = encoder.out_of_line_offset(bytes_len);
12179            let mut _prev_end_offset: usize = 0;
12180            if 1 > max_ordinal {
12181                return Ok(());
12182            }
12183
12184            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12185            // are envelope_size bytes.
12186            let cur_offset: usize = (1 - 1) * envelope_size;
12187
12188            // Zero reserved fields.
12189            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12190
12191            // Safety:
12192            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12193            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12194            //   envelope_size bytes, there is always sufficient room.
12195            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
12196            self.program.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
12197            encoder, offset + cur_offset, depth
12198        )?;
12199
12200            _prev_end_offset = cur_offset + envelope_size;
12201
12202            Ok(())
12203        }
12204    }
12205
12206    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12207        for WlanFullmacImplInstallApfPacketFilterRequest
12208    {
12209        #[inline(always)]
12210        fn new_empty() -> Self {
12211            Self::default()
12212        }
12213
12214        unsafe fn decode(
12215            &mut self,
12216            decoder: &mut fidl::encoding::Decoder<'_, D>,
12217            offset: usize,
12218            mut depth: fidl::encoding::Depth,
12219        ) -> fidl::Result<()> {
12220            decoder.debug_check_bounds::<Self>(offset);
12221            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12222                None => return Err(fidl::Error::NotNullable),
12223                Some(len) => len,
12224            };
12225            // Calling decoder.out_of_line_offset(0) is not allowed.
12226            if len == 0 {
12227                return Ok(());
12228            };
12229            depth.increment()?;
12230            let envelope_size = 8;
12231            let bytes_len = len * envelope_size;
12232            let offset = decoder.out_of_line_offset(bytes_len)?;
12233            // Decode the envelope for each type.
12234            let mut _next_ordinal_to_read = 0;
12235            let mut next_offset = offset;
12236            let end_offset = offset + bytes_len;
12237            _next_ordinal_to_read += 1;
12238            if next_offset >= end_offset {
12239                return Ok(());
12240            }
12241
12242            // Decode unknown envelopes for gaps in ordinals.
12243            while _next_ordinal_to_read < 1 {
12244                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12245                _next_ordinal_to_read += 1;
12246                next_offset += envelope_size;
12247            }
12248
12249            let next_out_of_line = decoder.next_out_of_line();
12250            let handles_before = decoder.remaining_handles();
12251            if let Some((inlined, num_bytes, num_handles)) =
12252                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12253            {
12254                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12255                if inlined != (member_inline_size <= 4) {
12256                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12257                }
12258                let inner_offset;
12259                let mut inner_depth = depth.clone();
12260                if inlined {
12261                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12262                    inner_offset = next_offset;
12263                } else {
12264                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12265                    inner_depth.increment()?;
12266                }
12267                let val_ref = self.program.get_or_insert_with(|| {
12268                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
12269                });
12270                fidl::decode!(
12271                    fidl::encoding::UnboundedVector<u8>,
12272                    D,
12273                    val_ref,
12274                    decoder,
12275                    inner_offset,
12276                    inner_depth
12277                )?;
12278                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12279                {
12280                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12281                }
12282                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12283                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12284                }
12285            }
12286
12287            next_offset += envelope_size;
12288
12289            // Decode the remaining unknown envelopes.
12290            while next_offset < end_offset {
12291                _next_ordinal_to_read += 1;
12292                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12293                next_offset += envelope_size;
12294            }
12295
12296            Ok(())
12297        }
12298    }
12299
12300    impl WlanFullmacImplOnLinkStateChangedRequest {
12301        #[inline(always)]
12302        fn max_ordinal_present(&self) -> u64 {
12303            if let Some(_) = self.online {
12304                return 1;
12305            }
12306            0
12307        }
12308    }
12309
12310    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplOnLinkStateChangedRequest {
12311        type Borrowed<'a> = &'a Self;
12312        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12313            value
12314        }
12315    }
12316
12317    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplOnLinkStateChangedRequest {
12318        type Owned = Self;
12319
12320        #[inline(always)]
12321        fn inline_align(_context: fidl::encoding::Context) -> usize {
12322            8
12323        }
12324
12325        #[inline(always)]
12326        fn inline_size(_context: fidl::encoding::Context) -> usize {
12327            16
12328        }
12329    }
12330
12331    unsafe impl<D: fidl::encoding::ResourceDialect>
12332        fidl::encoding::Encode<WlanFullmacImplOnLinkStateChangedRequest, D>
12333        for &WlanFullmacImplOnLinkStateChangedRequest
12334    {
12335        unsafe fn encode(
12336            self,
12337            encoder: &mut fidl::encoding::Encoder<'_, D>,
12338            offset: usize,
12339            mut depth: fidl::encoding::Depth,
12340        ) -> fidl::Result<()> {
12341            encoder.debug_check_bounds::<WlanFullmacImplOnLinkStateChangedRequest>(offset);
12342            // Vector header
12343            let max_ordinal: u64 = self.max_ordinal_present();
12344            encoder.write_num(max_ordinal, offset);
12345            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12346            // Calling encoder.out_of_line_offset(0) is not allowed.
12347            if max_ordinal == 0 {
12348                return Ok(());
12349            }
12350            depth.increment()?;
12351            let envelope_size = 8;
12352            let bytes_len = max_ordinal as usize * envelope_size;
12353            #[allow(unused_variables)]
12354            let offset = encoder.out_of_line_offset(bytes_len);
12355            let mut _prev_end_offset: usize = 0;
12356            if 1 > max_ordinal {
12357                return Ok(());
12358            }
12359
12360            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12361            // are envelope_size bytes.
12362            let cur_offset: usize = (1 - 1) * envelope_size;
12363
12364            // Zero reserved fields.
12365            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12366
12367            // Safety:
12368            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12369            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12370            //   envelope_size bytes, there is always sufficient room.
12371            fidl::encoding::encode_in_envelope_optional::<bool, D>(
12372                self.online.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
12373                encoder,
12374                offset + cur_offset,
12375                depth,
12376            )?;
12377
12378            _prev_end_offset = cur_offset + envelope_size;
12379
12380            Ok(())
12381        }
12382    }
12383
12384    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12385        for WlanFullmacImplOnLinkStateChangedRequest
12386    {
12387        #[inline(always)]
12388        fn new_empty() -> Self {
12389            Self::default()
12390        }
12391
12392        unsafe fn decode(
12393            &mut self,
12394            decoder: &mut fidl::encoding::Decoder<'_, D>,
12395            offset: usize,
12396            mut depth: fidl::encoding::Depth,
12397        ) -> fidl::Result<()> {
12398            decoder.debug_check_bounds::<Self>(offset);
12399            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12400                None => return Err(fidl::Error::NotNullable),
12401                Some(len) => len,
12402            };
12403            // Calling decoder.out_of_line_offset(0) is not allowed.
12404            if len == 0 {
12405                return Ok(());
12406            };
12407            depth.increment()?;
12408            let envelope_size = 8;
12409            let bytes_len = len * envelope_size;
12410            let offset = decoder.out_of_line_offset(bytes_len)?;
12411            // Decode the envelope for each type.
12412            let mut _next_ordinal_to_read = 0;
12413            let mut next_offset = offset;
12414            let end_offset = offset + bytes_len;
12415            _next_ordinal_to_read += 1;
12416            if next_offset >= end_offset {
12417                return Ok(());
12418            }
12419
12420            // Decode unknown envelopes for gaps in ordinals.
12421            while _next_ordinal_to_read < 1 {
12422                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12423                _next_ordinal_to_read += 1;
12424                next_offset += envelope_size;
12425            }
12426
12427            let next_out_of_line = decoder.next_out_of_line();
12428            let handles_before = decoder.remaining_handles();
12429            if let Some((inlined, num_bytes, num_handles)) =
12430                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12431            {
12432                let member_inline_size =
12433                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12434                if inlined != (member_inline_size <= 4) {
12435                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12436                }
12437                let inner_offset;
12438                let mut inner_depth = depth.clone();
12439                if inlined {
12440                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12441                    inner_offset = next_offset;
12442                } else {
12443                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12444                    inner_depth.increment()?;
12445                }
12446                let val_ref = self.online.get_or_insert_with(|| fidl::new_empty!(bool, D));
12447                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
12448                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12449                {
12450                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12451                }
12452                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12453                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12454                }
12455            }
12456
12457            next_offset += envelope_size;
12458
12459            // Decode the remaining unknown envelopes.
12460            while next_offset < end_offset {
12461                _next_ordinal_to_read += 1;
12462                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12463                next_offset += envelope_size;
12464            }
12465
12466            Ok(())
12467        }
12468    }
12469
12470    impl WlanFullmacImplReconnectRequest {
12471        #[inline(always)]
12472        fn max_ordinal_present(&self) -> u64 {
12473            if let Some(_) = self.peer_sta_address {
12474                return 1;
12475            }
12476            0
12477        }
12478    }
12479
12480    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplReconnectRequest {
12481        type Borrowed<'a> = &'a Self;
12482        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12483            value
12484        }
12485    }
12486
12487    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplReconnectRequest {
12488        type Owned = Self;
12489
12490        #[inline(always)]
12491        fn inline_align(_context: fidl::encoding::Context) -> usize {
12492            8
12493        }
12494
12495        #[inline(always)]
12496        fn inline_size(_context: fidl::encoding::Context) -> usize {
12497            16
12498        }
12499    }
12500
12501    unsafe impl<D: fidl::encoding::ResourceDialect>
12502        fidl::encoding::Encode<WlanFullmacImplReconnectRequest, D>
12503        for &WlanFullmacImplReconnectRequest
12504    {
12505        unsafe fn encode(
12506            self,
12507            encoder: &mut fidl::encoding::Encoder<'_, D>,
12508            offset: usize,
12509            mut depth: fidl::encoding::Depth,
12510        ) -> fidl::Result<()> {
12511            encoder.debug_check_bounds::<WlanFullmacImplReconnectRequest>(offset);
12512            // Vector header
12513            let max_ordinal: u64 = self.max_ordinal_present();
12514            encoder.write_num(max_ordinal, offset);
12515            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12516            // Calling encoder.out_of_line_offset(0) is not allowed.
12517            if max_ordinal == 0 {
12518                return Ok(());
12519            }
12520            depth.increment()?;
12521            let envelope_size = 8;
12522            let bytes_len = max_ordinal as usize * envelope_size;
12523            #[allow(unused_variables)]
12524            let offset = encoder.out_of_line_offset(bytes_len);
12525            let mut _prev_end_offset: usize = 0;
12526            if 1 > max_ordinal {
12527                return Ok(());
12528            }
12529
12530            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12531            // are envelope_size bytes.
12532            let cur_offset: usize = (1 - 1) * envelope_size;
12533
12534            // Zero reserved fields.
12535            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12536
12537            // Safety:
12538            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12539            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12540            //   envelope_size bytes, there is always sufficient room.
12541            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
12542                self.peer_sta_address
12543                    .as_ref()
12544                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
12545                encoder,
12546                offset + cur_offset,
12547                depth,
12548            )?;
12549
12550            _prev_end_offset = cur_offset + envelope_size;
12551
12552            Ok(())
12553        }
12554    }
12555
12556    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12557        for WlanFullmacImplReconnectRequest
12558    {
12559        #[inline(always)]
12560        fn new_empty() -> Self {
12561            Self::default()
12562        }
12563
12564        unsafe fn decode(
12565            &mut self,
12566            decoder: &mut fidl::encoding::Decoder<'_, D>,
12567            offset: usize,
12568            mut depth: fidl::encoding::Depth,
12569        ) -> fidl::Result<()> {
12570            decoder.debug_check_bounds::<Self>(offset);
12571            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12572                None => return Err(fidl::Error::NotNullable),
12573                Some(len) => len,
12574            };
12575            // Calling decoder.out_of_line_offset(0) is not allowed.
12576            if len == 0 {
12577                return Ok(());
12578            };
12579            depth.increment()?;
12580            let envelope_size = 8;
12581            let bytes_len = len * envelope_size;
12582            let offset = decoder.out_of_line_offset(bytes_len)?;
12583            // Decode the envelope for each type.
12584            let mut _next_ordinal_to_read = 0;
12585            let mut next_offset = offset;
12586            let end_offset = offset + bytes_len;
12587            _next_ordinal_to_read += 1;
12588            if next_offset >= end_offset {
12589                return Ok(());
12590            }
12591
12592            // Decode unknown envelopes for gaps in ordinals.
12593            while _next_ordinal_to_read < 1 {
12594                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12595                _next_ordinal_to_read += 1;
12596                next_offset += envelope_size;
12597            }
12598
12599            let next_out_of_line = decoder.next_out_of_line();
12600            let handles_before = decoder.remaining_handles();
12601            if let Some((inlined, num_bytes, num_handles)) =
12602                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12603            {
12604                let member_inline_size =
12605                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
12606                        decoder.context,
12607                    );
12608                if inlined != (member_inline_size <= 4) {
12609                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12610                }
12611                let inner_offset;
12612                let mut inner_depth = depth.clone();
12613                if inlined {
12614                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12615                    inner_offset = next_offset;
12616                } else {
12617                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12618                    inner_depth.increment()?;
12619                }
12620                let val_ref = self
12621                    .peer_sta_address
12622                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
12623                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
12624                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12625                {
12626                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12627                }
12628                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12629                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12630                }
12631            }
12632
12633            next_offset += envelope_size;
12634
12635            // Decode the remaining unknown envelopes.
12636            while next_offset < end_offset {
12637                _next_ordinal_to_read += 1;
12638                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12639                next_offset += envelope_size;
12640            }
12641
12642            Ok(())
12643        }
12644    }
12645
12646    impl WlanFullmacImplRoamRequest {
12647        #[inline(always)]
12648        fn max_ordinal_present(&self) -> u64 {
12649            if let Some(_) = self.selected_bss {
12650                return 1;
12651            }
12652            0
12653        }
12654    }
12655
12656    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplRoamRequest {
12657        type Borrowed<'a> = &'a Self;
12658        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12659            value
12660        }
12661    }
12662
12663    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplRoamRequest {
12664        type Owned = Self;
12665
12666        #[inline(always)]
12667        fn inline_align(_context: fidl::encoding::Context) -> usize {
12668            8
12669        }
12670
12671        #[inline(always)]
12672        fn inline_size(_context: fidl::encoding::Context) -> usize {
12673            16
12674        }
12675    }
12676
12677    unsafe impl<D: fidl::encoding::ResourceDialect>
12678        fidl::encoding::Encode<WlanFullmacImplRoamRequest, D> for &WlanFullmacImplRoamRequest
12679    {
12680        unsafe fn encode(
12681            self,
12682            encoder: &mut fidl::encoding::Encoder<'_, D>,
12683            offset: usize,
12684            mut depth: fidl::encoding::Depth,
12685        ) -> fidl::Result<()> {
12686            encoder.debug_check_bounds::<WlanFullmacImplRoamRequest>(offset);
12687            // Vector header
12688            let max_ordinal: u64 = self.max_ordinal_present();
12689            encoder.write_num(max_ordinal, offset);
12690            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12691            // Calling encoder.out_of_line_offset(0) is not allowed.
12692            if max_ordinal == 0 {
12693                return Ok(());
12694            }
12695            depth.increment()?;
12696            let envelope_size = 8;
12697            let bytes_len = max_ordinal as usize * envelope_size;
12698            #[allow(unused_variables)]
12699            let offset = encoder.out_of_line_offset(bytes_len);
12700            let mut _prev_end_offset: usize = 0;
12701            if 1 > max_ordinal {
12702                return Ok(());
12703            }
12704
12705            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12706            // are envelope_size bytes.
12707            let cur_offset: usize = (1 - 1) * envelope_size;
12708
12709            // Zero reserved fields.
12710            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12711
12712            // Safety:
12713            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12714            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12715            //   envelope_size bytes, there is always sufficient room.
12716            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::BssDescription, D>(
12717            self.selected_bss.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow),
12718            encoder, offset + cur_offset, depth
12719        )?;
12720
12721            _prev_end_offset = cur_offset + envelope_size;
12722
12723            Ok(())
12724        }
12725    }
12726
12727    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12728        for WlanFullmacImplRoamRequest
12729    {
12730        #[inline(always)]
12731        fn new_empty() -> Self {
12732            Self::default()
12733        }
12734
12735        unsafe fn decode(
12736            &mut self,
12737            decoder: &mut fidl::encoding::Decoder<'_, D>,
12738            offset: usize,
12739            mut depth: fidl::encoding::Depth,
12740        ) -> fidl::Result<()> {
12741            decoder.debug_check_bounds::<Self>(offset);
12742            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12743                None => return Err(fidl::Error::NotNullable),
12744                Some(len) => len,
12745            };
12746            // Calling decoder.out_of_line_offset(0) is not allowed.
12747            if len == 0 {
12748                return Ok(());
12749            };
12750            depth.increment()?;
12751            let envelope_size = 8;
12752            let bytes_len = len * envelope_size;
12753            let offset = decoder.out_of_line_offset(bytes_len)?;
12754            // Decode the envelope for each type.
12755            let mut _next_ordinal_to_read = 0;
12756            let mut next_offset = offset;
12757            let end_offset = offset + bytes_len;
12758            _next_ordinal_to_read += 1;
12759            if next_offset >= end_offset {
12760                return Ok(());
12761            }
12762
12763            // Decode unknown envelopes for gaps in ordinals.
12764            while _next_ordinal_to_read < 1 {
12765                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12766                _next_ordinal_to_read += 1;
12767                next_offset += envelope_size;
12768            }
12769
12770            let next_out_of_line = decoder.next_out_of_line();
12771            let handles_before = decoder.remaining_handles();
12772            if let Some((inlined, num_bytes, num_handles)) =
12773                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12774            {
12775                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::BssDescription as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12776                if inlined != (member_inline_size <= 4) {
12777                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12778                }
12779                let inner_offset;
12780                let mut inner_depth = depth.clone();
12781                if inlined {
12782                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12783                    inner_offset = next_offset;
12784                } else {
12785                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12786                    inner_depth.increment()?;
12787                }
12788                let val_ref = self.selected_bss.get_or_insert_with(|| {
12789                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::BssDescription, D)
12790                });
12791                fidl::decode!(
12792                    fidl_fuchsia_wlan_ieee80211_common::BssDescription,
12793                    D,
12794                    val_ref,
12795                    decoder,
12796                    inner_offset,
12797                    inner_depth
12798                )?;
12799                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12800                {
12801                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12802                }
12803                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12804                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12805                }
12806            }
12807
12808            next_offset += envelope_size;
12809
12810            // Decode the remaining unknown envelopes.
12811            while next_offset < end_offset {
12812                _next_ordinal_to_read += 1;
12813                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12814                next_offset += envelope_size;
12815            }
12816
12817            Ok(())
12818        }
12819    }
12820
12821    impl WlanFullmacImplSaeHandshakeRespRequest {
12822        #[inline(always)]
12823        fn max_ordinal_present(&self) -> u64 {
12824            if let Some(_) = self.status_code {
12825                return 2;
12826            }
12827            if let Some(_) = self.peer_sta_address {
12828                return 1;
12829            }
12830            0
12831        }
12832    }
12833
12834    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSaeHandshakeRespRequest {
12835        type Borrowed<'a> = &'a Self;
12836        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12837            value
12838        }
12839    }
12840
12841    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSaeHandshakeRespRequest {
12842        type Owned = Self;
12843
12844        #[inline(always)]
12845        fn inline_align(_context: fidl::encoding::Context) -> usize {
12846            8
12847        }
12848
12849        #[inline(always)]
12850        fn inline_size(_context: fidl::encoding::Context) -> usize {
12851            16
12852        }
12853    }
12854
12855    unsafe impl<D: fidl::encoding::ResourceDialect>
12856        fidl::encoding::Encode<WlanFullmacImplSaeHandshakeRespRequest, D>
12857        for &WlanFullmacImplSaeHandshakeRespRequest
12858    {
12859        unsafe fn encode(
12860            self,
12861            encoder: &mut fidl::encoding::Encoder<'_, D>,
12862            offset: usize,
12863            mut depth: fidl::encoding::Depth,
12864        ) -> fidl::Result<()> {
12865            encoder.debug_check_bounds::<WlanFullmacImplSaeHandshakeRespRequest>(offset);
12866            // Vector header
12867            let max_ordinal: u64 = self.max_ordinal_present();
12868            encoder.write_num(max_ordinal, offset);
12869            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12870            // Calling encoder.out_of_line_offset(0) is not allowed.
12871            if max_ordinal == 0 {
12872                return Ok(());
12873            }
12874            depth.increment()?;
12875            let envelope_size = 8;
12876            let bytes_len = max_ordinal as usize * envelope_size;
12877            #[allow(unused_variables)]
12878            let offset = encoder.out_of_line_offset(bytes_len);
12879            let mut _prev_end_offset: usize = 0;
12880            if 1 > max_ordinal {
12881                return Ok(());
12882            }
12883
12884            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12885            // are envelope_size bytes.
12886            let cur_offset: usize = (1 - 1) * envelope_size;
12887
12888            // Zero reserved fields.
12889            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12890
12891            // Safety:
12892            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12893            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12894            //   envelope_size bytes, there is always sufficient room.
12895            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
12896                self.peer_sta_address
12897                    .as_ref()
12898                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
12899                encoder,
12900                offset + cur_offset,
12901                depth,
12902            )?;
12903
12904            _prev_end_offset = cur_offset + envelope_size;
12905            if 2 > max_ordinal {
12906                return Ok(());
12907            }
12908
12909            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12910            // are envelope_size bytes.
12911            let cur_offset: usize = (2 - 1) * envelope_size;
12912
12913            // Zero reserved fields.
12914            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12915
12916            // Safety:
12917            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12918            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12919            //   envelope_size bytes, there is always sufficient room.
12920            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::StatusCode, D>(
12921            self.status_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
12922            encoder, offset + cur_offset, depth
12923        )?;
12924
12925            _prev_end_offset = cur_offset + envelope_size;
12926
12927            Ok(())
12928        }
12929    }
12930
12931    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12932        for WlanFullmacImplSaeHandshakeRespRequest
12933    {
12934        #[inline(always)]
12935        fn new_empty() -> Self {
12936            Self::default()
12937        }
12938
12939        unsafe fn decode(
12940            &mut self,
12941            decoder: &mut fidl::encoding::Decoder<'_, D>,
12942            offset: usize,
12943            mut depth: fidl::encoding::Depth,
12944        ) -> fidl::Result<()> {
12945            decoder.debug_check_bounds::<Self>(offset);
12946            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12947                None => return Err(fidl::Error::NotNullable),
12948                Some(len) => len,
12949            };
12950            // Calling decoder.out_of_line_offset(0) is not allowed.
12951            if len == 0 {
12952                return Ok(());
12953            };
12954            depth.increment()?;
12955            let envelope_size = 8;
12956            let bytes_len = len * envelope_size;
12957            let offset = decoder.out_of_line_offset(bytes_len)?;
12958            // Decode the envelope for each type.
12959            let mut _next_ordinal_to_read = 0;
12960            let mut next_offset = offset;
12961            let end_offset = offset + bytes_len;
12962            _next_ordinal_to_read += 1;
12963            if next_offset >= end_offset {
12964                return Ok(());
12965            }
12966
12967            // Decode unknown envelopes for gaps in ordinals.
12968            while _next_ordinal_to_read < 1 {
12969                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12970                _next_ordinal_to_read += 1;
12971                next_offset += envelope_size;
12972            }
12973
12974            let next_out_of_line = decoder.next_out_of_line();
12975            let handles_before = decoder.remaining_handles();
12976            if let Some((inlined, num_bytes, num_handles)) =
12977                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12978            {
12979                let member_inline_size =
12980                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
12981                        decoder.context,
12982                    );
12983                if inlined != (member_inline_size <= 4) {
12984                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12985                }
12986                let inner_offset;
12987                let mut inner_depth = depth.clone();
12988                if inlined {
12989                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12990                    inner_offset = next_offset;
12991                } else {
12992                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12993                    inner_depth.increment()?;
12994                }
12995                let val_ref = self
12996                    .peer_sta_address
12997                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
12998                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
12999                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13000                {
13001                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13002                }
13003                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13004                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13005                }
13006            }
13007
13008            next_offset += envelope_size;
13009            _next_ordinal_to_read += 1;
13010            if next_offset >= end_offset {
13011                return Ok(());
13012            }
13013
13014            // Decode unknown envelopes for gaps in ordinals.
13015            while _next_ordinal_to_read < 2 {
13016                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13017                _next_ordinal_to_read += 1;
13018                next_offset += envelope_size;
13019            }
13020
13021            let next_out_of_line = decoder.next_out_of_line();
13022            let handles_before = decoder.remaining_handles();
13023            if let Some((inlined, num_bytes, num_handles)) =
13024                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13025            {
13026                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13027                if inlined != (member_inline_size <= 4) {
13028                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13029                }
13030                let inner_offset;
13031                let mut inner_depth = depth.clone();
13032                if inlined {
13033                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13034                    inner_offset = next_offset;
13035                } else {
13036                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13037                    inner_depth.increment()?;
13038                }
13039                let val_ref = self.status_code.get_or_insert_with(|| {
13040                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::StatusCode, D)
13041                });
13042                fidl::decode!(
13043                    fidl_fuchsia_wlan_ieee80211_common::StatusCode,
13044                    D,
13045                    val_ref,
13046                    decoder,
13047                    inner_offset,
13048                    inner_depth
13049                )?;
13050                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13051                {
13052                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13053                }
13054                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13055                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13056                }
13057            }
13058
13059            next_offset += envelope_size;
13060
13061            // Decode the remaining unknown envelopes.
13062            while next_offset < end_offset {
13063                _next_ordinal_to_read += 1;
13064                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13065                next_offset += envelope_size;
13066            }
13067
13068            Ok(())
13069        }
13070    }
13071
13072    impl WlanFullmacImplSetApfPacketFilterEnabledRequest {
13073        #[inline(always)]
13074        fn max_ordinal_present(&self) -> u64 {
13075            if let Some(_) = self.enabled {
13076                return 1;
13077            }
13078            0
13079        }
13080    }
13081
13082    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSetApfPacketFilterEnabledRequest {
13083        type Borrowed<'a> = &'a Self;
13084        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13085            value
13086        }
13087    }
13088
13089    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSetApfPacketFilterEnabledRequest {
13090        type Owned = Self;
13091
13092        #[inline(always)]
13093        fn inline_align(_context: fidl::encoding::Context) -> usize {
13094            8
13095        }
13096
13097        #[inline(always)]
13098        fn inline_size(_context: fidl::encoding::Context) -> usize {
13099            16
13100        }
13101    }
13102
13103    unsafe impl<D: fidl::encoding::ResourceDialect>
13104        fidl::encoding::Encode<WlanFullmacImplSetApfPacketFilterEnabledRequest, D>
13105        for &WlanFullmacImplSetApfPacketFilterEnabledRequest
13106    {
13107        unsafe fn encode(
13108            self,
13109            encoder: &mut fidl::encoding::Encoder<'_, D>,
13110            offset: usize,
13111            mut depth: fidl::encoding::Depth,
13112        ) -> fidl::Result<()> {
13113            encoder.debug_check_bounds::<WlanFullmacImplSetApfPacketFilterEnabledRequest>(offset);
13114            // Vector header
13115            let max_ordinal: u64 = self.max_ordinal_present();
13116            encoder.write_num(max_ordinal, offset);
13117            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13118            // Calling encoder.out_of_line_offset(0) is not allowed.
13119            if max_ordinal == 0 {
13120                return Ok(());
13121            }
13122            depth.increment()?;
13123            let envelope_size = 8;
13124            let bytes_len = max_ordinal as usize * envelope_size;
13125            #[allow(unused_variables)]
13126            let offset = encoder.out_of_line_offset(bytes_len);
13127            let mut _prev_end_offset: usize = 0;
13128            if 1 > max_ordinal {
13129                return Ok(());
13130            }
13131
13132            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13133            // are envelope_size bytes.
13134            let cur_offset: usize = (1 - 1) * envelope_size;
13135
13136            // Zero reserved fields.
13137            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13138
13139            // Safety:
13140            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13141            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13142            //   envelope_size bytes, there is always sufficient room.
13143            fidl::encoding::encode_in_envelope_optional::<bool, D>(
13144                self.enabled.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
13145                encoder,
13146                offset + cur_offset,
13147                depth,
13148            )?;
13149
13150            _prev_end_offset = cur_offset + envelope_size;
13151
13152            Ok(())
13153        }
13154    }
13155
13156    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
13157        for WlanFullmacImplSetApfPacketFilterEnabledRequest
13158    {
13159        #[inline(always)]
13160        fn new_empty() -> Self {
13161            Self::default()
13162        }
13163
13164        unsafe fn decode(
13165            &mut self,
13166            decoder: &mut fidl::encoding::Decoder<'_, D>,
13167            offset: usize,
13168            mut depth: fidl::encoding::Depth,
13169        ) -> fidl::Result<()> {
13170            decoder.debug_check_bounds::<Self>(offset);
13171            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13172                None => return Err(fidl::Error::NotNullable),
13173                Some(len) => len,
13174            };
13175            // Calling decoder.out_of_line_offset(0) is not allowed.
13176            if len == 0 {
13177                return Ok(());
13178            };
13179            depth.increment()?;
13180            let envelope_size = 8;
13181            let bytes_len = len * envelope_size;
13182            let offset = decoder.out_of_line_offset(bytes_len)?;
13183            // Decode the envelope for each type.
13184            let mut _next_ordinal_to_read = 0;
13185            let mut next_offset = offset;
13186            let end_offset = offset + bytes_len;
13187            _next_ordinal_to_read += 1;
13188            if next_offset >= end_offset {
13189                return Ok(());
13190            }
13191
13192            // Decode unknown envelopes for gaps in ordinals.
13193            while _next_ordinal_to_read < 1 {
13194                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13195                _next_ordinal_to_read += 1;
13196                next_offset += envelope_size;
13197            }
13198
13199            let next_out_of_line = decoder.next_out_of_line();
13200            let handles_before = decoder.remaining_handles();
13201            if let Some((inlined, num_bytes, num_handles)) =
13202                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13203            {
13204                let member_inline_size =
13205                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13206                if inlined != (member_inline_size <= 4) {
13207                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13208                }
13209                let inner_offset;
13210                let mut inner_depth = depth.clone();
13211                if inlined {
13212                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13213                    inner_offset = next_offset;
13214                } else {
13215                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13216                    inner_depth.increment()?;
13217                }
13218                let val_ref = self.enabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
13219                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
13220                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13221                {
13222                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13223                }
13224                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13225                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13226                }
13227            }
13228
13229            next_offset += envelope_size;
13230
13231            // Decode the remaining unknown envelopes.
13232            while next_offset < end_offset {
13233                _next_ordinal_to_read += 1;
13234                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13235                next_offset += envelope_size;
13236            }
13237
13238            Ok(())
13239        }
13240    }
13241
13242    impl WlanFullmacImplSetKeysRequest {
13243        #[inline(always)]
13244        fn max_ordinal_present(&self) -> u64 {
13245            if let Some(_) = self.key_descriptors {
13246                return 2;
13247            }
13248            if let Some(_) = self.keylist {
13249                return 1;
13250            }
13251            0
13252        }
13253    }
13254
13255    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSetKeysRequest {
13256        type Borrowed<'a> = &'a Self;
13257        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13258            value
13259        }
13260    }
13261
13262    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSetKeysRequest {
13263        type Owned = Self;
13264
13265        #[inline(always)]
13266        fn inline_align(_context: fidl::encoding::Context) -> usize {
13267            8
13268        }
13269
13270        #[inline(always)]
13271        fn inline_size(_context: fidl::encoding::Context) -> usize {
13272            16
13273        }
13274    }
13275
13276    unsafe impl<D: fidl::encoding::ResourceDialect>
13277        fidl::encoding::Encode<WlanFullmacImplSetKeysRequest, D>
13278        for &WlanFullmacImplSetKeysRequest
13279    {
13280        unsafe fn encode(
13281            self,
13282            encoder: &mut fidl::encoding::Encoder<'_, D>,
13283            offset: usize,
13284            mut depth: fidl::encoding::Depth,
13285        ) -> fidl::Result<()> {
13286            encoder.debug_check_bounds::<WlanFullmacImplSetKeysRequest>(offset);
13287            // Vector header
13288            let max_ordinal: u64 = self.max_ordinal_present();
13289            encoder.write_num(max_ordinal, offset);
13290            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13291            // Calling encoder.out_of_line_offset(0) is not allowed.
13292            if max_ordinal == 0 {
13293                return Ok(());
13294            }
13295            depth.increment()?;
13296            let envelope_size = 8;
13297            let bytes_len = max_ordinal as usize * envelope_size;
13298            #[allow(unused_variables)]
13299            let offset = encoder.out_of_line_offset(bytes_len);
13300            let mut _prev_end_offset: usize = 0;
13301            if 1 > max_ordinal {
13302                return Ok(());
13303            }
13304
13305            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13306            // are envelope_size bytes.
13307            let cur_offset: usize = (1 - 1) * envelope_size;
13308
13309            // Zero reserved fields.
13310            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13311
13312            // Safety:
13313            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13314            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13315            //   envelope_size bytes, there is always sufficient room.
13316            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_wlan_driver_common::WlanKeyConfig, 4>, D>(
13317            self.keylist.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_wlan_driver_common::WlanKeyConfig, 4> as fidl::encoding::ValueTypeMarker>::borrow),
13318            encoder, offset + cur_offset, depth
13319        )?;
13320
13321            _prev_end_offset = cur_offset + envelope_size;
13322            if 2 > max_ordinal {
13323                return Ok(());
13324            }
13325
13326            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13327            // are envelope_size bytes.
13328            let cur_offset: usize = (2 - 1) * envelope_size;
13329
13330            // Zero reserved fields.
13331            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13332
13333            // Safety:
13334            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13335            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13336            //   envelope_size bytes, there is always sufficient room.
13337            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor, 4>, D>(
13338            self.key_descriptors.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor, 4> as fidl::encoding::ValueTypeMarker>::borrow),
13339            encoder, offset + cur_offset, depth
13340        )?;
13341
13342            _prev_end_offset = cur_offset + envelope_size;
13343
13344            Ok(())
13345        }
13346    }
13347
13348    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
13349        for WlanFullmacImplSetKeysRequest
13350    {
13351        #[inline(always)]
13352        fn new_empty() -> Self {
13353            Self::default()
13354        }
13355
13356        unsafe fn decode(
13357            &mut self,
13358            decoder: &mut fidl::encoding::Decoder<'_, D>,
13359            offset: usize,
13360            mut depth: fidl::encoding::Depth,
13361        ) -> fidl::Result<()> {
13362            decoder.debug_check_bounds::<Self>(offset);
13363            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13364                None => return Err(fidl::Error::NotNullable),
13365                Some(len) => len,
13366            };
13367            // Calling decoder.out_of_line_offset(0) is not allowed.
13368            if len == 0 {
13369                return Ok(());
13370            };
13371            depth.increment()?;
13372            let envelope_size = 8;
13373            let bytes_len = len * envelope_size;
13374            let offset = decoder.out_of_line_offset(bytes_len)?;
13375            // Decode the envelope for each type.
13376            let mut _next_ordinal_to_read = 0;
13377            let mut next_offset = offset;
13378            let end_offset = offset + bytes_len;
13379            _next_ordinal_to_read += 1;
13380            if next_offset >= end_offset {
13381                return Ok(());
13382            }
13383
13384            // Decode unknown envelopes for gaps in ordinals.
13385            while _next_ordinal_to_read < 1 {
13386                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13387                _next_ordinal_to_read += 1;
13388                next_offset += envelope_size;
13389            }
13390
13391            let next_out_of_line = decoder.next_out_of_line();
13392            let handles_before = decoder.remaining_handles();
13393            if let Some((inlined, num_bytes, num_handles)) =
13394                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13395            {
13396                let member_inline_size = <fidl::encoding::Vector<
13397                    fidl_fuchsia_wlan_driver_common::WlanKeyConfig,
13398                    4,
13399                > as fidl::encoding::TypeMarker>::inline_size(
13400                    decoder.context
13401                );
13402                if inlined != (member_inline_size <= 4) {
13403                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13404                }
13405                let inner_offset;
13406                let mut inner_depth = depth.clone();
13407                if inlined {
13408                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13409                    inner_offset = next_offset;
13410                } else {
13411                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13412                    inner_depth.increment()?;
13413                }
13414                let val_ref =
13415                self.keylist.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_wlan_driver_common::WlanKeyConfig, 4>, D));
13416                fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_wlan_driver_common::WlanKeyConfig, 4>, D, val_ref, decoder, inner_offset, inner_depth)?;
13417                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13418                {
13419                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13420                }
13421                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13422                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13423                }
13424            }
13425
13426            next_offset += envelope_size;
13427            _next_ordinal_to_read += 1;
13428            if next_offset >= end_offset {
13429                return Ok(());
13430            }
13431
13432            // Decode unknown envelopes for gaps in ordinals.
13433            while _next_ordinal_to_read < 2 {
13434                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13435                _next_ordinal_to_read += 1;
13436                next_offset += envelope_size;
13437            }
13438
13439            let next_out_of_line = decoder.next_out_of_line();
13440            let handles_before = decoder.remaining_handles();
13441            if let Some((inlined, num_bytes, num_handles)) =
13442                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13443            {
13444                let member_inline_size = <fidl::encoding::Vector<
13445                    fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor,
13446                    4,
13447                > as fidl::encoding::TypeMarker>::inline_size(
13448                    decoder.context
13449                );
13450                if inlined != (member_inline_size <= 4) {
13451                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13452                }
13453                let inner_offset;
13454                let mut inner_depth = depth.clone();
13455                if inlined {
13456                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13457                    inner_offset = next_offset;
13458                } else {
13459                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13460                    inner_depth.increment()?;
13461                }
13462                let val_ref =
13463                self.key_descriptors.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor, 4>, D));
13464                fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor, 4>, D, val_ref, decoder, inner_offset, inner_depth)?;
13465                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13466                {
13467                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13468                }
13469                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13470                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13471                }
13472            }
13473
13474            next_offset += envelope_size;
13475
13476            // Decode the remaining unknown envelopes.
13477            while next_offset < end_offset {
13478                _next_ordinal_to_read += 1;
13479                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13480                next_offset += envelope_size;
13481            }
13482
13483            Ok(())
13484        }
13485    }
13486
13487    impl WlanFullmacImplStartBssRequest {
13488        #[inline(always)]
13489        fn max_ordinal_present(&self) -> u64 {
13490            if let Some(_) = self.vendor_ie {
13491                return 7;
13492            }
13493            if let Some(_) = self.rsne {
13494                return 6;
13495            }
13496            if let Some(_) = self.primary {
13497                return 5;
13498            }
13499            if let Some(_) = self.dtim_period {
13500                return 4;
13501            }
13502            if let Some(_) = self.beacon_period {
13503                return 3;
13504            }
13505            if let Some(_) = self.bss_type {
13506                return 2;
13507            }
13508            if let Some(_) = self.ssid {
13509                return 1;
13510            }
13511            0
13512        }
13513    }
13514
13515    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplStartBssRequest {
13516        type Borrowed<'a> = &'a Self;
13517        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13518            value
13519        }
13520    }
13521
13522    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplStartBssRequest {
13523        type Owned = Self;
13524
13525        #[inline(always)]
13526        fn inline_align(_context: fidl::encoding::Context) -> usize {
13527            8
13528        }
13529
13530        #[inline(always)]
13531        fn inline_size(_context: fidl::encoding::Context) -> usize {
13532            16
13533        }
13534    }
13535
13536    unsafe impl<D: fidl::encoding::ResourceDialect>
13537        fidl::encoding::Encode<WlanFullmacImplStartBssRequest, D>
13538        for &WlanFullmacImplStartBssRequest
13539    {
13540        unsafe fn encode(
13541            self,
13542            encoder: &mut fidl::encoding::Encoder<'_, D>,
13543            offset: usize,
13544            mut depth: fidl::encoding::Depth,
13545        ) -> fidl::Result<()> {
13546            encoder.debug_check_bounds::<WlanFullmacImplStartBssRequest>(offset);
13547            // Vector header
13548            let max_ordinal: u64 = self.max_ordinal_present();
13549            encoder.write_num(max_ordinal, offset);
13550            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13551            // Calling encoder.out_of_line_offset(0) is not allowed.
13552            if max_ordinal == 0 {
13553                return Ok(());
13554            }
13555            depth.increment()?;
13556            let envelope_size = 8;
13557            let bytes_len = max_ordinal as usize * envelope_size;
13558            #[allow(unused_variables)]
13559            let offset = encoder.out_of_line_offset(bytes_len);
13560            let mut _prev_end_offset: usize = 0;
13561            if 1 > max_ordinal {
13562                return Ok(());
13563            }
13564
13565            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13566            // are envelope_size bytes.
13567            let cur_offset: usize = (1 - 1) * envelope_size;
13568
13569            // Zero reserved fields.
13570            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13571
13572            // Safety:
13573            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13574            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13575            //   envelope_size bytes, there is always sufficient room.
13576            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
13577                self.ssid.as_ref().map(
13578                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
13579                ),
13580                encoder,
13581                offset + cur_offset,
13582                depth,
13583            )?;
13584
13585            _prev_end_offset = cur_offset + envelope_size;
13586            if 2 > max_ordinal {
13587                return Ok(());
13588            }
13589
13590            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13591            // are envelope_size bytes.
13592            let cur_offset: usize = (2 - 1) * envelope_size;
13593
13594            // Zero reserved fields.
13595            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13596
13597            // Safety:
13598            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13599            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13600            //   envelope_size bytes, there is always sufficient room.
13601            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::BssType, D>(
13602            self.bss_type.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::BssType as fidl::encoding::ValueTypeMarker>::borrow),
13603            encoder, offset + cur_offset, depth
13604        )?;
13605
13606            _prev_end_offset = cur_offset + envelope_size;
13607            if 3 > max_ordinal {
13608                return Ok(());
13609            }
13610
13611            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13612            // are envelope_size bytes.
13613            let cur_offset: usize = (3 - 1) * envelope_size;
13614
13615            // Zero reserved fields.
13616            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13617
13618            // Safety:
13619            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13620            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13621            //   envelope_size bytes, there is always sufficient room.
13622            fidl::encoding::encode_in_envelope_optional::<u32, D>(
13623                self.beacon_period.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
13624                encoder,
13625                offset + cur_offset,
13626                depth,
13627            )?;
13628
13629            _prev_end_offset = cur_offset + envelope_size;
13630            if 4 > max_ordinal {
13631                return Ok(());
13632            }
13633
13634            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13635            // are envelope_size bytes.
13636            let cur_offset: usize = (4 - 1) * envelope_size;
13637
13638            // Zero reserved fields.
13639            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13640
13641            // Safety:
13642            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13643            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13644            //   envelope_size bytes, there is always sufficient room.
13645            fidl::encoding::encode_in_envelope_optional::<u32, D>(
13646                self.dtim_period.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
13647                encoder,
13648                offset + cur_offset,
13649                depth,
13650            )?;
13651
13652            _prev_end_offset = cur_offset + envelope_size;
13653            if 5 > max_ordinal {
13654                return Ok(());
13655            }
13656
13657            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13658            // are envelope_size bytes.
13659            let cur_offset: usize = (5 - 1) * envelope_size;
13660
13661            // Zero reserved fields.
13662            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13663
13664            // Safety:
13665            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13666            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13667            //   envelope_size bytes, there is always sufficient room.
13668            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, D>(
13669            self.primary.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber as fidl::encoding::ValueTypeMarker>::borrow),
13670            encoder, offset + cur_offset, depth
13671        )?;
13672
13673            _prev_end_offset = cur_offset + envelope_size;
13674            if 6 > max_ordinal {
13675                return Ok(());
13676            }
13677
13678            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13679            // are envelope_size bytes.
13680            let cur_offset: usize = (6 - 1) * envelope_size;
13681
13682            // Zero reserved fields.
13683            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13684
13685            // Safety:
13686            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13687            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13688            //   envelope_size bytes, there is always sufficient room.
13689            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 257>, D>(
13690                self.rsne.as_ref().map(
13691                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::ValueTypeMarker>::borrow,
13692                ),
13693                encoder,
13694                offset + cur_offset,
13695                depth,
13696            )?;
13697
13698            _prev_end_offset = cur_offset + envelope_size;
13699            if 7 > max_ordinal {
13700                return Ok(());
13701            }
13702
13703            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13704            // are envelope_size bytes.
13705            let cur_offset: usize = (7 - 1) * envelope_size;
13706
13707            // Zero reserved fields.
13708            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13709
13710            // Safety:
13711            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13712            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13713            //   envelope_size bytes, there is always sufficient room.
13714            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 514>, D>(
13715                self.vendor_ie.as_ref().map(
13716                    <fidl::encoding::Vector<u8, 514> as fidl::encoding::ValueTypeMarker>::borrow,
13717                ),
13718                encoder,
13719                offset + cur_offset,
13720                depth,
13721            )?;
13722
13723            _prev_end_offset = cur_offset + envelope_size;
13724
13725            Ok(())
13726        }
13727    }
13728
13729    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
13730        for WlanFullmacImplStartBssRequest
13731    {
13732        #[inline(always)]
13733        fn new_empty() -> Self {
13734            Self::default()
13735        }
13736
13737        unsafe fn decode(
13738            &mut self,
13739            decoder: &mut fidl::encoding::Decoder<'_, D>,
13740            offset: usize,
13741            mut depth: fidl::encoding::Depth,
13742        ) -> fidl::Result<()> {
13743            decoder.debug_check_bounds::<Self>(offset);
13744            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13745                None => return Err(fidl::Error::NotNullable),
13746                Some(len) => len,
13747            };
13748            // Calling decoder.out_of_line_offset(0) is not allowed.
13749            if len == 0 {
13750                return Ok(());
13751            };
13752            depth.increment()?;
13753            let envelope_size = 8;
13754            let bytes_len = len * envelope_size;
13755            let offset = decoder.out_of_line_offset(bytes_len)?;
13756            // Decode the envelope for each type.
13757            let mut _next_ordinal_to_read = 0;
13758            let mut next_offset = offset;
13759            let end_offset = offset + bytes_len;
13760            _next_ordinal_to_read += 1;
13761            if next_offset >= end_offset {
13762                return Ok(());
13763            }
13764
13765            // Decode unknown envelopes for gaps in ordinals.
13766            while _next_ordinal_to_read < 1 {
13767                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13768                _next_ordinal_to_read += 1;
13769                next_offset += envelope_size;
13770            }
13771
13772            let next_out_of_line = decoder.next_out_of_line();
13773            let handles_before = decoder.remaining_handles();
13774            if let Some((inlined, num_bytes, num_handles)) =
13775                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13776            {
13777                let member_inline_size =
13778                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
13779                        decoder.context,
13780                    );
13781                if inlined != (member_inline_size <= 4) {
13782                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13783                }
13784                let inner_offset;
13785                let mut inner_depth = depth.clone();
13786                if inlined {
13787                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13788                    inner_offset = next_offset;
13789                } else {
13790                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13791                    inner_depth.increment()?;
13792                }
13793                let val_ref = self
13794                    .ssid
13795                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
13796                fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
13797                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13798                {
13799                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13800                }
13801                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13802                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13803                }
13804            }
13805
13806            next_offset += envelope_size;
13807            _next_ordinal_to_read += 1;
13808            if next_offset >= end_offset {
13809                return Ok(());
13810            }
13811
13812            // Decode unknown envelopes for gaps in ordinals.
13813            while _next_ordinal_to_read < 2 {
13814                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13815                _next_ordinal_to_read += 1;
13816                next_offset += envelope_size;
13817            }
13818
13819            let next_out_of_line = decoder.next_out_of_line();
13820            let handles_before = decoder.remaining_handles();
13821            if let Some((inlined, num_bytes, num_handles)) =
13822                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13823            {
13824                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::BssType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13825                if inlined != (member_inline_size <= 4) {
13826                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13827                }
13828                let inner_offset;
13829                let mut inner_depth = depth.clone();
13830                if inlined {
13831                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13832                    inner_offset = next_offset;
13833                } else {
13834                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13835                    inner_depth.increment()?;
13836                }
13837                let val_ref = self.bss_type.get_or_insert_with(|| {
13838                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::BssType, D)
13839                });
13840                fidl::decode!(
13841                    fidl_fuchsia_wlan_ieee80211_common::BssType,
13842                    D,
13843                    val_ref,
13844                    decoder,
13845                    inner_offset,
13846                    inner_depth
13847                )?;
13848                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13849                {
13850                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13851                }
13852                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13853                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13854                }
13855            }
13856
13857            next_offset += envelope_size;
13858            _next_ordinal_to_read += 1;
13859            if next_offset >= end_offset {
13860                return Ok(());
13861            }
13862
13863            // Decode unknown envelopes for gaps in ordinals.
13864            while _next_ordinal_to_read < 3 {
13865                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13866                _next_ordinal_to_read += 1;
13867                next_offset += envelope_size;
13868            }
13869
13870            let next_out_of_line = decoder.next_out_of_line();
13871            let handles_before = decoder.remaining_handles();
13872            if let Some((inlined, num_bytes, num_handles)) =
13873                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13874            {
13875                let member_inline_size =
13876                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13877                if inlined != (member_inline_size <= 4) {
13878                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13879                }
13880                let inner_offset;
13881                let mut inner_depth = depth.clone();
13882                if inlined {
13883                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13884                    inner_offset = next_offset;
13885                } else {
13886                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13887                    inner_depth.increment()?;
13888                }
13889                let val_ref = self.beacon_period.get_or_insert_with(|| fidl::new_empty!(u32, D));
13890                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
13891                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13892                {
13893                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13894                }
13895                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13896                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13897                }
13898            }
13899
13900            next_offset += envelope_size;
13901            _next_ordinal_to_read += 1;
13902            if next_offset >= end_offset {
13903                return Ok(());
13904            }
13905
13906            // Decode unknown envelopes for gaps in ordinals.
13907            while _next_ordinal_to_read < 4 {
13908                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13909                _next_ordinal_to_read += 1;
13910                next_offset += envelope_size;
13911            }
13912
13913            let next_out_of_line = decoder.next_out_of_line();
13914            let handles_before = decoder.remaining_handles();
13915            if let Some((inlined, num_bytes, num_handles)) =
13916                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13917            {
13918                let member_inline_size =
13919                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13920                if inlined != (member_inline_size <= 4) {
13921                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13922                }
13923                let inner_offset;
13924                let mut inner_depth = depth.clone();
13925                if inlined {
13926                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13927                    inner_offset = next_offset;
13928                } else {
13929                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13930                    inner_depth.increment()?;
13931                }
13932                let val_ref = self.dtim_period.get_or_insert_with(|| fidl::new_empty!(u32, D));
13933                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
13934                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13935                {
13936                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13937                }
13938                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13939                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13940                }
13941            }
13942
13943            next_offset += envelope_size;
13944            _next_ordinal_to_read += 1;
13945            if next_offset >= end_offset {
13946                return Ok(());
13947            }
13948
13949            // Decode unknown envelopes for gaps in ordinals.
13950            while _next_ordinal_to_read < 5 {
13951                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13952                _next_ordinal_to_read += 1;
13953                next_offset += envelope_size;
13954            }
13955
13956            let next_out_of_line = decoder.next_out_of_line();
13957            let handles_before = decoder.remaining_handles();
13958            if let Some((inlined, num_bytes, num_handles)) =
13959                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13960            {
13961                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::ChannelNumber as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13962                if inlined != (member_inline_size <= 4) {
13963                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13964                }
13965                let inner_offset;
13966                let mut inner_depth = depth.clone();
13967                if inlined {
13968                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13969                    inner_offset = next_offset;
13970                } else {
13971                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13972                    inner_depth.increment()?;
13973                }
13974                let val_ref = self.primary.get_or_insert_with(|| {
13975                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, D)
13976                });
13977                fidl::decode!(
13978                    fidl_fuchsia_wlan_ieee80211_common::ChannelNumber,
13979                    D,
13980                    val_ref,
13981                    decoder,
13982                    inner_offset,
13983                    inner_depth
13984                )?;
13985                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13986                {
13987                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13988                }
13989                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13990                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13991                }
13992            }
13993
13994            next_offset += envelope_size;
13995            _next_ordinal_to_read += 1;
13996            if next_offset >= end_offset {
13997                return Ok(());
13998            }
13999
14000            // Decode unknown envelopes for gaps in ordinals.
14001            while _next_ordinal_to_read < 6 {
14002                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14003                _next_ordinal_to_read += 1;
14004                next_offset += envelope_size;
14005            }
14006
14007            let next_out_of_line = decoder.next_out_of_line();
14008            let handles_before = decoder.remaining_handles();
14009            if let Some((inlined, num_bytes, num_handles)) =
14010                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14011            {
14012                let member_inline_size =
14013                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::TypeMarker>::inline_size(
14014                        decoder.context,
14015                    );
14016                if inlined != (member_inline_size <= 4) {
14017                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14018                }
14019                let inner_offset;
14020                let mut inner_depth = depth.clone();
14021                if inlined {
14022                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14023                    inner_offset = next_offset;
14024                } else {
14025                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14026                    inner_depth.increment()?;
14027                }
14028                let val_ref = self
14029                    .rsne
14030                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 257>, D));
14031                fidl::decode!(fidl::encoding::Vector<u8, 257>, D, val_ref, decoder, inner_offset, inner_depth)?;
14032                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14033                {
14034                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14035                }
14036                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14037                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14038                }
14039            }
14040
14041            next_offset += envelope_size;
14042            _next_ordinal_to_read += 1;
14043            if next_offset >= end_offset {
14044                return Ok(());
14045            }
14046
14047            // Decode unknown envelopes for gaps in ordinals.
14048            while _next_ordinal_to_read < 7 {
14049                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14050                _next_ordinal_to_read += 1;
14051                next_offset += envelope_size;
14052            }
14053
14054            let next_out_of_line = decoder.next_out_of_line();
14055            let handles_before = decoder.remaining_handles();
14056            if let Some((inlined, num_bytes, num_handles)) =
14057                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14058            {
14059                let member_inline_size =
14060                    <fidl::encoding::Vector<u8, 514> as fidl::encoding::TypeMarker>::inline_size(
14061                        decoder.context,
14062                    );
14063                if inlined != (member_inline_size <= 4) {
14064                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14065                }
14066                let inner_offset;
14067                let mut inner_depth = depth.clone();
14068                if inlined {
14069                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14070                    inner_offset = next_offset;
14071                } else {
14072                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14073                    inner_depth.increment()?;
14074                }
14075                let val_ref = self
14076                    .vendor_ie
14077                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 514>, D));
14078                fidl::decode!(fidl::encoding::Vector<u8, 514>, D, val_ref, decoder, inner_offset, inner_depth)?;
14079                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14080                {
14081                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14082                }
14083                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14084                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14085                }
14086            }
14087
14088            next_offset += envelope_size;
14089
14090            // Decode the remaining unknown envelopes.
14091            while next_offset < end_offset {
14092                _next_ordinal_to_read += 1;
14093                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14094                next_offset += envelope_size;
14095            }
14096
14097            Ok(())
14098        }
14099    }
14100
14101    impl WlanFullmacImplStartRssiMonitorRequest {
14102        #[inline(always)]
14103        fn max_ordinal_present(&self) -> u64 {
14104            if let Some(_) = self.max_rssi_dbm {
14105                return 2;
14106            }
14107            if let Some(_) = self.min_rssi_dbm {
14108                return 1;
14109            }
14110            0
14111        }
14112    }
14113
14114    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplStartRssiMonitorRequest {
14115        type Borrowed<'a> = &'a Self;
14116        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14117            value
14118        }
14119    }
14120
14121    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplStartRssiMonitorRequest {
14122        type Owned = Self;
14123
14124        #[inline(always)]
14125        fn inline_align(_context: fidl::encoding::Context) -> usize {
14126            8
14127        }
14128
14129        #[inline(always)]
14130        fn inline_size(_context: fidl::encoding::Context) -> usize {
14131            16
14132        }
14133    }
14134
14135    unsafe impl<D: fidl::encoding::ResourceDialect>
14136        fidl::encoding::Encode<WlanFullmacImplStartRssiMonitorRequest, D>
14137        for &WlanFullmacImplStartRssiMonitorRequest
14138    {
14139        unsafe fn encode(
14140            self,
14141            encoder: &mut fidl::encoding::Encoder<'_, D>,
14142            offset: usize,
14143            mut depth: fidl::encoding::Depth,
14144        ) -> fidl::Result<()> {
14145            encoder.debug_check_bounds::<WlanFullmacImplStartRssiMonitorRequest>(offset);
14146            // Vector header
14147            let max_ordinal: u64 = self.max_ordinal_present();
14148            encoder.write_num(max_ordinal, offset);
14149            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14150            // Calling encoder.out_of_line_offset(0) is not allowed.
14151            if max_ordinal == 0 {
14152                return Ok(());
14153            }
14154            depth.increment()?;
14155            let envelope_size = 8;
14156            let bytes_len = max_ordinal as usize * envelope_size;
14157            #[allow(unused_variables)]
14158            let offset = encoder.out_of_line_offset(bytes_len);
14159            let mut _prev_end_offset: usize = 0;
14160            if 1 > max_ordinal {
14161                return Ok(());
14162            }
14163
14164            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14165            // are envelope_size bytes.
14166            let cur_offset: usize = (1 - 1) * envelope_size;
14167
14168            // Zero reserved fields.
14169            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14170
14171            // Safety:
14172            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14173            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14174            //   envelope_size bytes, there is always sufficient room.
14175            fidl::encoding::encode_in_envelope_optional::<i8, D>(
14176                self.min_rssi_dbm.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
14177                encoder,
14178                offset + cur_offset,
14179                depth,
14180            )?;
14181
14182            _prev_end_offset = cur_offset + envelope_size;
14183            if 2 > max_ordinal {
14184                return Ok(());
14185            }
14186
14187            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14188            // are envelope_size bytes.
14189            let cur_offset: usize = (2 - 1) * envelope_size;
14190
14191            // Zero reserved fields.
14192            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14193
14194            // Safety:
14195            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14196            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14197            //   envelope_size bytes, there is always sufficient room.
14198            fidl::encoding::encode_in_envelope_optional::<i8, D>(
14199                self.max_rssi_dbm.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
14200                encoder,
14201                offset + cur_offset,
14202                depth,
14203            )?;
14204
14205            _prev_end_offset = cur_offset + envelope_size;
14206
14207            Ok(())
14208        }
14209    }
14210
14211    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14212        for WlanFullmacImplStartRssiMonitorRequest
14213    {
14214        #[inline(always)]
14215        fn new_empty() -> Self {
14216            Self::default()
14217        }
14218
14219        unsafe fn decode(
14220            &mut self,
14221            decoder: &mut fidl::encoding::Decoder<'_, D>,
14222            offset: usize,
14223            mut depth: fidl::encoding::Depth,
14224        ) -> fidl::Result<()> {
14225            decoder.debug_check_bounds::<Self>(offset);
14226            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14227                None => return Err(fidl::Error::NotNullable),
14228                Some(len) => len,
14229            };
14230            // Calling decoder.out_of_line_offset(0) is not allowed.
14231            if len == 0 {
14232                return Ok(());
14233            };
14234            depth.increment()?;
14235            let envelope_size = 8;
14236            let bytes_len = len * envelope_size;
14237            let offset = decoder.out_of_line_offset(bytes_len)?;
14238            // Decode the envelope for each type.
14239            let mut _next_ordinal_to_read = 0;
14240            let mut next_offset = offset;
14241            let end_offset = offset + bytes_len;
14242            _next_ordinal_to_read += 1;
14243            if next_offset >= end_offset {
14244                return Ok(());
14245            }
14246
14247            // Decode unknown envelopes for gaps in ordinals.
14248            while _next_ordinal_to_read < 1 {
14249                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14250                _next_ordinal_to_read += 1;
14251                next_offset += envelope_size;
14252            }
14253
14254            let next_out_of_line = decoder.next_out_of_line();
14255            let handles_before = decoder.remaining_handles();
14256            if let Some((inlined, num_bytes, num_handles)) =
14257                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14258            {
14259                let member_inline_size =
14260                    <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14261                if inlined != (member_inline_size <= 4) {
14262                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14263                }
14264                let inner_offset;
14265                let mut inner_depth = depth.clone();
14266                if inlined {
14267                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14268                    inner_offset = next_offset;
14269                } else {
14270                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14271                    inner_depth.increment()?;
14272                }
14273                let val_ref = self.min_rssi_dbm.get_or_insert_with(|| fidl::new_empty!(i8, D));
14274                fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
14275                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14276                {
14277                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14278                }
14279                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14280                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14281                }
14282            }
14283
14284            next_offset += envelope_size;
14285            _next_ordinal_to_read += 1;
14286            if next_offset >= end_offset {
14287                return Ok(());
14288            }
14289
14290            // Decode unknown envelopes for gaps in ordinals.
14291            while _next_ordinal_to_read < 2 {
14292                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14293                _next_ordinal_to_read += 1;
14294                next_offset += envelope_size;
14295            }
14296
14297            let next_out_of_line = decoder.next_out_of_line();
14298            let handles_before = decoder.remaining_handles();
14299            if let Some((inlined, num_bytes, num_handles)) =
14300                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14301            {
14302                let member_inline_size =
14303                    <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14304                if inlined != (member_inline_size <= 4) {
14305                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14306                }
14307                let inner_offset;
14308                let mut inner_depth = depth.clone();
14309                if inlined {
14310                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14311                    inner_offset = next_offset;
14312                } else {
14313                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14314                    inner_depth.increment()?;
14315                }
14316                let val_ref = self.max_rssi_dbm.get_or_insert_with(|| fidl::new_empty!(i8, D));
14317                fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
14318                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14319                {
14320                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14321                }
14322                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14323                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14324                }
14325            }
14326
14327            next_offset += envelope_size;
14328
14329            // Decode the remaining unknown envelopes.
14330            while next_offset < end_offset {
14331                _next_ordinal_to_read += 1;
14332                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14333                next_offset += envelope_size;
14334            }
14335
14336            Ok(())
14337        }
14338    }
14339
14340    impl WlanFullmacImplStartScanRequest {
14341        #[inline(always)]
14342        fn max_ordinal_present(&self) -> u64 {
14343            if let Some(_) = self.max_channel_time {
14344                return 6;
14345            }
14346            if let Some(_) = self.min_channel_time {
14347                return 5;
14348            }
14349            if let Some(_) = self.ssids {
14350                return 4;
14351            }
14352            if let Some(_) = self.channels {
14353                return 3;
14354            }
14355            if let Some(_) = self.scan_type {
14356                return 2;
14357            }
14358            if let Some(_) = self.txn_id {
14359                return 1;
14360            }
14361            0
14362        }
14363    }
14364
14365    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplStartScanRequest {
14366        type Borrowed<'a> = &'a Self;
14367        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14368            value
14369        }
14370    }
14371
14372    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplStartScanRequest {
14373        type Owned = Self;
14374
14375        #[inline(always)]
14376        fn inline_align(_context: fidl::encoding::Context) -> usize {
14377            8
14378        }
14379
14380        #[inline(always)]
14381        fn inline_size(_context: fidl::encoding::Context) -> usize {
14382            16
14383        }
14384    }
14385
14386    unsafe impl<D: fidl::encoding::ResourceDialect>
14387        fidl::encoding::Encode<WlanFullmacImplStartScanRequest, D>
14388        for &WlanFullmacImplStartScanRequest
14389    {
14390        unsafe fn encode(
14391            self,
14392            encoder: &mut fidl::encoding::Encoder<'_, D>,
14393            offset: usize,
14394            mut depth: fidl::encoding::Depth,
14395        ) -> fidl::Result<()> {
14396            encoder.debug_check_bounds::<WlanFullmacImplStartScanRequest>(offset);
14397            // Vector header
14398            let max_ordinal: u64 = self.max_ordinal_present();
14399            encoder.write_num(max_ordinal, offset);
14400            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14401            // Calling encoder.out_of_line_offset(0) is not allowed.
14402            if max_ordinal == 0 {
14403                return Ok(());
14404            }
14405            depth.increment()?;
14406            let envelope_size = 8;
14407            let bytes_len = max_ordinal as usize * envelope_size;
14408            #[allow(unused_variables)]
14409            let offset = encoder.out_of_line_offset(bytes_len);
14410            let mut _prev_end_offset: usize = 0;
14411            if 1 > max_ordinal {
14412                return Ok(());
14413            }
14414
14415            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14416            // are envelope_size bytes.
14417            let cur_offset: usize = (1 - 1) * envelope_size;
14418
14419            // Zero reserved fields.
14420            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14421
14422            // Safety:
14423            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14424            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14425            //   envelope_size bytes, there is always sufficient room.
14426            fidl::encoding::encode_in_envelope_optional::<u64, D>(
14427                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
14428                encoder,
14429                offset + cur_offset,
14430                depth,
14431            )?;
14432
14433            _prev_end_offset = cur_offset + envelope_size;
14434            if 2 > max_ordinal {
14435                return Ok(());
14436            }
14437
14438            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14439            // are envelope_size bytes.
14440            let cur_offset: usize = (2 - 1) * envelope_size;
14441
14442            // Zero reserved fields.
14443            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14444
14445            // Safety:
14446            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14447            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14448            //   envelope_size bytes, there is always sufficient room.
14449            fidl::encoding::encode_in_envelope_optional::<WlanScanType, D>(
14450                self.scan_type
14451                    .as_ref()
14452                    .map(<WlanScanType as fidl::encoding::ValueTypeMarker>::borrow),
14453                encoder,
14454                offset + cur_offset,
14455                depth,
14456            )?;
14457
14458            _prev_end_offset = cur_offset + envelope_size;
14459            if 3 > max_ordinal {
14460                return Ok(());
14461            }
14462
14463            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14464            // are envelope_size bytes.
14465            let cur_offset: usize = (3 - 1) * envelope_size;
14466
14467            // Zero reserved fields.
14468            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14469
14470            // Safety:
14471            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14472            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14473            //   envelope_size bytes, there is always sufficient room.
14474            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, 256>, D>(
14475            self.channels.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, 256> as fidl::encoding::ValueTypeMarker>::borrow),
14476            encoder, offset + cur_offset, depth
14477        )?;
14478
14479            _prev_end_offset = cur_offset + envelope_size;
14480            if 4 > max_ordinal {
14481                return Ok(());
14482            }
14483
14484            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14485            // are envelope_size bytes.
14486            let cur_offset: usize = (4 - 1) * envelope_size;
14487
14488            // Zero reserved fields.
14489            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14490
14491            // Safety:
14492            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14493            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14494            //   envelope_size bytes, there is always sufficient room.
14495            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>, D>(
14496            self.ssids.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>> as fidl::encoding::ValueTypeMarker>::borrow),
14497            encoder, offset + cur_offset, depth
14498        )?;
14499
14500            _prev_end_offset = cur_offset + envelope_size;
14501            if 5 > max_ordinal {
14502                return Ok(());
14503            }
14504
14505            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14506            // are envelope_size bytes.
14507            let cur_offset: usize = (5 - 1) * envelope_size;
14508
14509            // Zero reserved fields.
14510            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14511
14512            // Safety:
14513            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14514            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14515            //   envelope_size bytes, there is always sufficient room.
14516            fidl::encoding::encode_in_envelope_optional::<u32, D>(
14517                self.min_channel_time
14518                    .as_ref()
14519                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
14520                encoder,
14521                offset + cur_offset,
14522                depth,
14523            )?;
14524
14525            _prev_end_offset = cur_offset + envelope_size;
14526            if 6 > max_ordinal {
14527                return Ok(());
14528            }
14529
14530            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14531            // are envelope_size bytes.
14532            let cur_offset: usize = (6 - 1) * envelope_size;
14533
14534            // Zero reserved fields.
14535            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14536
14537            // Safety:
14538            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14539            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14540            //   envelope_size bytes, there is always sufficient room.
14541            fidl::encoding::encode_in_envelope_optional::<u32, D>(
14542                self.max_channel_time
14543                    .as_ref()
14544                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
14545                encoder,
14546                offset + cur_offset,
14547                depth,
14548            )?;
14549
14550            _prev_end_offset = cur_offset + envelope_size;
14551
14552            Ok(())
14553        }
14554    }
14555
14556    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14557        for WlanFullmacImplStartScanRequest
14558    {
14559        #[inline(always)]
14560        fn new_empty() -> Self {
14561            Self::default()
14562        }
14563
14564        unsafe fn decode(
14565            &mut self,
14566            decoder: &mut fidl::encoding::Decoder<'_, D>,
14567            offset: usize,
14568            mut depth: fidl::encoding::Depth,
14569        ) -> fidl::Result<()> {
14570            decoder.debug_check_bounds::<Self>(offset);
14571            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14572                None => return Err(fidl::Error::NotNullable),
14573                Some(len) => len,
14574            };
14575            // Calling decoder.out_of_line_offset(0) is not allowed.
14576            if len == 0 {
14577                return Ok(());
14578            };
14579            depth.increment()?;
14580            let envelope_size = 8;
14581            let bytes_len = len * envelope_size;
14582            let offset = decoder.out_of_line_offset(bytes_len)?;
14583            // Decode the envelope for each type.
14584            let mut _next_ordinal_to_read = 0;
14585            let mut next_offset = offset;
14586            let end_offset = offset + bytes_len;
14587            _next_ordinal_to_read += 1;
14588            if next_offset >= end_offset {
14589                return Ok(());
14590            }
14591
14592            // Decode unknown envelopes for gaps in ordinals.
14593            while _next_ordinal_to_read < 1 {
14594                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14595                _next_ordinal_to_read += 1;
14596                next_offset += envelope_size;
14597            }
14598
14599            let next_out_of_line = decoder.next_out_of_line();
14600            let handles_before = decoder.remaining_handles();
14601            if let Some((inlined, num_bytes, num_handles)) =
14602                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14603            {
14604                let member_inline_size =
14605                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14606                if inlined != (member_inline_size <= 4) {
14607                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14608                }
14609                let inner_offset;
14610                let mut inner_depth = depth.clone();
14611                if inlined {
14612                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14613                    inner_offset = next_offset;
14614                } else {
14615                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14616                    inner_depth.increment()?;
14617                }
14618                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
14619                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
14620                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14621                {
14622                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14623                }
14624                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14625                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14626                }
14627            }
14628
14629            next_offset += envelope_size;
14630            _next_ordinal_to_read += 1;
14631            if next_offset >= end_offset {
14632                return Ok(());
14633            }
14634
14635            // Decode unknown envelopes for gaps in ordinals.
14636            while _next_ordinal_to_read < 2 {
14637                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14638                _next_ordinal_to_read += 1;
14639                next_offset += envelope_size;
14640            }
14641
14642            let next_out_of_line = decoder.next_out_of_line();
14643            let handles_before = decoder.remaining_handles();
14644            if let Some((inlined, num_bytes, num_handles)) =
14645                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14646            {
14647                let member_inline_size =
14648                    <WlanScanType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14649                if inlined != (member_inline_size <= 4) {
14650                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14651                }
14652                let inner_offset;
14653                let mut inner_depth = depth.clone();
14654                if inlined {
14655                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14656                    inner_offset = next_offset;
14657                } else {
14658                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14659                    inner_depth.increment()?;
14660                }
14661                let val_ref =
14662                    self.scan_type.get_or_insert_with(|| fidl::new_empty!(WlanScanType, D));
14663                fidl::decode!(WlanScanType, D, val_ref, decoder, inner_offset, inner_depth)?;
14664                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14665                {
14666                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14667                }
14668                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14669                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14670                }
14671            }
14672
14673            next_offset += envelope_size;
14674            _next_ordinal_to_read += 1;
14675            if next_offset >= end_offset {
14676                return Ok(());
14677            }
14678
14679            // Decode unknown envelopes for gaps in ordinals.
14680            while _next_ordinal_to_read < 3 {
14681                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14682                _next_ordinal_to_read += 1;
14683                next_offset += envelope_size;
14684            }
14685
14686            let next_out_of_line = decoder.next_out_of_line();
14687            let handles_before = decoder.remaining_handles();
14688            if let Some((inlined, num_bytes, num_handles)) =
14689                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14690            {
14691                let member_inline_size = <fidl::encoding::Vector<
14692                    fidl_fuchsia_wlan_ieee80211_common::ChannelNumber,
14693                    256,
14694                > as fidl::encoding::TypeMarker>::inline_size(
14695                    decoder.context
14696                );
14697                if inlined != (member_inline_size <= 4) {
14698                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14699                }
14700                let inner_offset;
14701                let mut inner_depth = depth.clone();
14702                if inlined {
14703                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14704                    inner_offset = next_offset;
14705                } else {
14706                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14707                    inner_depth.increment()?;
14708                }
14709                let val_ref =
14710                self.channels.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, 256>, D));
14711                fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, 256>, D, val_ref, decoder, inner_offset, inner_depth)?;
14712                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14713                {
14714                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14715                }
14716                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14717                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14718                }
14719            }
14720
14721            next_offset += envelope_size;
14722            _next_ordinal_to_read += 1;
14723            if next_offset >= end_offset {
14724                return Ok(());
14725            }
14726
14727            // Decode unknown envelopes for gaps in ordinals.
14728            while _next_ordinal_to_read < 4 {
14729                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14730                _next_ordinal_to_read += 1;
14731                next_offset += envelope_size;
14732            }
14733
14734            let next_out_of_line = decoder.next_out_of_line();
14735            let handles_before = decoder.remaining_handles();
14736            if let Some((inlined, num_bytes, num_handles)) =
14737                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14738            {
14739                let member_inline_size = <fidl::encoding::UnboundedVector<
14740                    fidl::encoding::Vector<u8, 32>,
14741                > as fidl::encoding::TypeMarker>::inline_size(
14742                    decoder.context
14743                );
14744                if inlined != (member_inline_size <= 4) {
14745                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14746                }
14747                let inner_offset;
14748                let mut inner_depth = depth.clone();
14749                if inlined {
14750                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14751                    inner_offset = next_offset;
14752                } else {
14753                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14754                    inner_depth.increment()?;
14755                }
14756                let val_ref = self.ssids.get_or_insert_with(|| {
14757                    fidl::new_empty!(
14758                        fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>,
14759                        D
14760                    )
14761                });
14762                fidl::decode!(
14763                    fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>,
14764                    D,
14765                    val_ref,
14766                    decoder,
14767                    inner_offset,
14768                    inner_depth
14769                )?;
14770                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14771                {
14772                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14773                }
14774                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14775                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14776                }
14777            }
14778
14779            next_offset += envelope_size;
14780            _next_ordinal_to_read += 1;
14781            if next_offset >= end_offset {
14782                return Ok(());
14783            }
14784
14785            // Decode unknown envelopes for gaps in ordinals.
14786            while _next_ordinal_to_read < 5 {
14787                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14788                _next_ordinal_to_read += 1;
14789                next_offset += envelope_size;
14790            }
14791
14792            let next_out_of_line = decoder.next_out_of_line();
14793            let handles_before = decoder.remaining_handles();
14794            if let Some((inlined, num_bytes, num_handles)) =
14795                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14796            {
14797                let member_inline_size =
14798                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14799                if inlined != (member_inline_size <= 4) {
14800                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14801                }
14802                let inner_offset;
14803                let mut inner_depth = depth.clone();
14804                if inlined {
14805                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14806                    inner_offset = next_offset;
14807                } else {
14808                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14809                    inner_depth.increment()?;
14810                }
14811                let val_ref = self.min_channel_time.get_or_insert_with(|| fidl::new_empty!(u32, D));
14812                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
14813                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14814                {
14815                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14816                }
14817                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14818                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14819                }
14820            }
14821
14822            next_offset += envelope_size;
14823            _next_ordinal_to_read += 1;
14824            if next_offset >= end_offset {
14825                return Ok(());
14826            }
14827
14828            // Decode unknown envelopes for gaps in ordinals.
14829            while _next_ordinal_to_read < 6 {
14830                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14831                _next_ordinal_to_read += 1;
14832                next_offset += envelope_size;
14833            }
14834
14835            let next_out_of_line = decoder.next_out_of_line();
14836            let handles_before = decoder.remaining_handles();
14837            if let Some((inlined, num_bytes, num_handles)) =
14838                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14839            {
14840                let member_inline_size =
14841                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14842                if inlined != (member_inline_size <= 4) {
14843                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14844                }
14845                let inner_offset;
14846                let mut inner_depth = depth.clone();
14847                if inlined {
14848                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14849                    inner_offset = next_offset;
14850                } else {
14851                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14852                    inner_depth.increment()?;
14853                }
14854                let val_ref = self.max_channel_time.get_or_insert_with(|| fidl::new_empty!(u32, D));
14855                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
14856                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14857                {
14858                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14859                }
14860                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14861                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14862                }
14863            }
14864
14865            next_offset += envelope_size;
14866
14867            // Decode the remaining unknown envelopes.
14868            while next_offset < end_offset {
14869                _next_ordinal_to_read += 1;
14870                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14871                next_offset += envelope_size;
14872            }
14873
14874            Ok(())
14875        }
14876    }
14877
14878    impl WlanFullmacImplStartScheduledScanRequest {
14879        #[inline(always)]
14880        fn max_ordinal_present(&self) -> u64 {
14881            if let Some(_) = self.req {
14882                return 2;
14883            }
14884            if let Some(_) = self.txn_id {
14885                return 1;
14886            }
14887            0
14888        }
14889    }
14890
14891    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplStartScheduledScanRequest {
14892        type Borrowed<'a> = &'a Self;
14893        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14894            value
14895        }
14896    }
14897
14898    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplStartScheduledScanRequest {
14899        type Owned = Self;
14900
14901        #[inline(always)]
14902        fn inline_align(_context: fidl::encoding::Context) -> usize {
14903            8
14904        }
14905
14906        #[inline(always)]
14907        fn inline_size(_context: fidl::encoding::Context) -> usize {
14908            16
14909        }
14910    }
14911
14912    unsafe impl<D: fidl::encoding::ResourceDialect>
14913        fidl::encoding::Encode<WlanFullmacImplStartScheduledScanRequest, D>
14914        for &WlanFullmacImplStartScheduledScanRequest
14915    {
14916        unsafe fn encode(
14917            self,
14918            encoder: &mut fidl::encoding::Encoder<'_, D>,
14919            offset: usize,
14920            mut depth: fidl::encoding::Depth,
14921        ) -> fidl::Result<()> {
14922            encoder.debug_check_bounds::<WlanFullmacImplStartScheduledScanRequest>(offset);
14923            // Vector header
14924            let max_ordinal: u64 = self.max_ordinal_present();
14925            encoder.write_num(max_ordinal, offset);
14926            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14927            // Calling encoder.out_of_line_offset(0) is not allowed.
14928            if max_ordinal == 0 {
14929                return Ok(());
14930            }
14931            depth.increment()?;
14932            let envelope_size = 8;
14933            let bytes_len = max_ordinal as usize * envelope_size;
14934            #[allow(unused_variables)]
14935            let offset = encoder.out_of_line_offset(bytes_len);
14936            let mut _prev_end_offset: usize = 0;
14937            if 1 > max_ordinal {
14938                return Ok(());
14939            }
14940
14941            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14942            // are envelope_size bytes.
14943            let cur_offset: usize = (1 - 1) * envelope_size;
14944
14945            // Zero reserved fields.
14946            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14947
14948            // Safety:
14949            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14950            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14951            //   envelope_size bytes, there is always sufficient room.
14952            fidl::encoding::encode_in_envelope_optional::<u64, D>(
14953                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
14954                encoder,
14955                offset + cur_offset,
14956                depth,
14957            )?;
14958
14959            _prev_end_offset = cur_offset + envelope_size;
14960            if 2 > max_ordinal {
14961                return Ok(());
14962            }
14963
14964            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14965            // are envelope_size bytes.
14966            let cur_offset: usize = (2 - 1) * envelope_size;
14967
14968            // Zero reserved fields.
14969            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14970
14971            // Safety:
14972            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14973            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14974            //   envelope_size bytes, there is always sufficient room.
14975            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common_common::ScheduledScanRequest, D>(
14976            self.req.as_ref().map(<fidl_fuchsia_wlan_common_common::ScheduledScanRequest as fidl::encoding::ValueTypeMarker>::borrow),
14977            encoder, offset + cur_offset, depth
14978        )?;
14979
14980            _prev_end_offset = cur_offset + envelope_size;
14981
14982            Ok(())
14983        }
14984    }
14985
14986    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14987        for WlanFullmacImplStartScheduledScanRequest
14988    {
14989        #[inline(always)]
14990        fn new_empty() -> Self {
14991            Self::default()
14992        }
14993
14994        unsafe fn decode(
14995            &mut self,
14996            decoder: &mut fidl::encoding::Decoder<'_, D>,
14997            offset: usize,
14998            mut depth: fidl::encoding::Depth,
14999        ) -> fidl::Result<()> {
15000            decoder.debug_check_bounds::<Self>(offset);
15001            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15002                None => return Err(fidl::Error::NotNullable),
15003                Some(len) => len,
15004            };
15005            // Calling decoder.out_of_line_offset(0) is not allowed.
15006            if len == 0 {
15007                return Ok(());
15008            };
15009            depth.increment()?;
15010            let envelope_size = 8;
15011            let bytes_len = len * envelope_size;
15012            let offset = decoder.out_of_line_offset(bytes_len)?;
15013            // Decode the envelope for each type.
15014            let mut _next_ordinal_to_read = 0;
15015            let mut next_offset = offset;
15016            let end_offset = offset + bytes_len;
15017            _next_ordinal_to_read += 1;
15018            if next_offset >= end_offset {
15019                return Ok(());
15020            }
15021
15022            // Decode unknown envelopes for gaps in ordinals.
15023            while _next_ordinal_to_read < 1 {
15024                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15025                _next_ordinal_to_read += 1;
15026                next_offset += envelope_size;
15027            }
15028
15029            let next_out_of_line = decoder.next_out_of_line();
15030            let handles_before = decoder.remaining_handles();
15031            if let Some((inlined, num_bytes, num_handles)) =
15032                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15033            {
15034                let member_inline_size =
15035                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15036                if inlined != (member_inline_size <= 4) {
15037                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15038                }
15039                let inner_offset;
15040                let mut inner_depth = depth.clone();
15041                if inlined {
15042                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15043                    inner_offset = next_offset;
15044                } else {
15045                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15046                    inner_depth.increment()?;
15047                }
15048                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
15049                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
15050                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15051                {
15052                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15053                }
15054                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15055                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15056                }
15057            }
15058
15059            next_offset += envelope_size;
15060            _next_ordinal_to_read += 1;
15061            if next_offset >= end_offset {
15062                return Ok(());
15063            }
15064
15065            // Decode unknown envelopes for gaps in ordinals.
15066            while _next_ordinal_to_read < 2 {
15067                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15068                _next_ordinal_to_read += 1;
15069                next_offset += envelope_size;
15070            }
15071
15072            let next_out_of_line = decoder.next_out_of_line();
15073            let handles_before = decoder.remaining_handles();
15074            if let Some((inlined, num_bytes, num_handles)) =
15075                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15076            {
15077                let member_inline_size = <fidl_fuchsia_wlan_common_common::ScheduledScanRequest as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15078                if inlined != (member_inline_size <= 4) {
15079                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15080                }
15081                let inner_offset;
15082                let mut inner_depth = depth.clone();
15083                if inlined {
15084                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15085                    inner_offset = next_offset;
15086                } else {
15087                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15088                    inner_depth.increment()?;
15089                }
15090                let val_ref = self.req.get_or_insert_with(|| {
15091                    fidl::new_empty!(fidl_fuchsia_wlan_common_common::ScheduledScanRequest, D)
15092                });
15093                fidl::decode!(
15094                    fidl_fuchsia_wlan_common_common::ScheduledScanRequest,
15095                    D,
15096                    val_ref,
15097                    decoder,
15098                    inner_offset,
15099                    inner_depth
15100                )?;
15101                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15102                {
15103                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15104                }
15105                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15106                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15107                }
15108            }
15109
15110            next_offset += envelope_size;
15111
15112            // Decode the remaining unknown envelopes.
15113            while next_offset < end_offset {
15114                _next_ordinal_to_read += 1;
15115                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15116                next_offset += envelope_size;
15117            }
15118
15119            Ok(())
15120        }
15121    }
15122
15123    impl WlanFullmacImplStopBssRequest {
15124        #[inline(always)]
15125        fn max_ordinal_present(&self) -> u64 {
15126            if let Some(_) = self.ssid {
15127                return 1;
15128            }
15129            0
15130        }
15131    }
15132
15133    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplStopBssRequest {
15134        type Borrowed<'a> = &'a Self;
15135        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15136            value
15137        }
15138    }
15139
15140    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplStopBssRequest {
15141        type Owned = Self;
15142
15143        #[inline(always)]
15144        fn inline_align(_context: fidl::encoding::Context) -> usize {
15145            8
15146        }
15147
15148        #[inline(always)]
15149        fn inline_size(_context: fidl::encoding::Context) -> usize {
15150            16
15151        }
15152    }
15153
15154    unsafe impl<D: fidl::encoding::ResourceDialect>
15155        fidl::encoding::Encode<WlanFullmacImplStopBssRequest, D>
15156        for &WlanFullmacImplStopBssRequest
15157    {
15158        unsafe fn encode(
15159            self,
15160            encoder: &mut fidl::encoding::Encoder<'_, D>,
15161            offset: usize,
15162            mut depth: fidl::encoding::Depth,
15163        ) -> fidl::Result<()> {
15164            encoder.debug_check_bounds::<WlanFullmacImplStopBssRequest>(offset);
15165            // Vector header
15166            let max_ordinal: u64 = self.max_ordinal_present();
15167            encoder.write_num(max_ordinal, offset);
15168            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15169            // Calling encoder.out_of_line_offset(0) is not allowed.
15170            if max_ordinal == 0 {
15171                return Ok(());
15172            }
15173            depth.increment()?;
15174            let envelope_size = 8;
15175            let bytes_len = max_ordinal as usize * envelope_size;
15176            #[allow(unused_variables)]
15177            let offset = encoder.out_of_line_offset(bytes_len);
15178            let mut _prev_end_offset: usize = 0;
15179            if 1 > max_ordinal {
15180                return Ok(());
15181            }
15182
15183            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15184            // are envelope_size bytes.
15185            let cur_offset: usize = (1 - 1) * envelope_size;
15186
15187            // Zero reserved fields.
15188            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15189
15190            // Safety:
15191            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15192            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15193            //   envelope_size bytes, there is always sufficient room.
15194            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
15195                self.ssid.as_ref().map(
15196                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
15197                ),
15198                encoder,
15199                offset + cur_offset,
15200                depth,
15201            )?;
15202
15203            _prev_end_offset = cur_offset + envelope_size;
15204
15205            Ok(())
15206        }
15207    }
15208
15209    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
15210        for WlanFullmacImplStopBssRequest
15211    {
15212        #[inline(always)]
15213        fn new_empty() -> Self {
15214            Self::default()
15215        }
15216
15217        unsafe fn decode(
15218            &mut self,
15219            decoder: &mut fidl::encoding::Decoder<'_, D>,
15220            offset: usize,
15221            mut depth: fidl::encoding::Depth,
15222        ) -> fidl::Result<()> {
15223            decoder.debug_check_bounds::<Self>(offset);
15224            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15225                None => return Err(fidl::Error::NotNullable),
15226                Some(len) => len,
15227            };
15228            // Calling decoder.out_of_line_offset(0) is not allowed.
15229            if len == 0 {
15230                return Ok(());
15231            };
15232            depth.increment()?;
15233            let envelope_size = 8;
15234            let bytes_len = len * envelope_size;
15235            let offset = decoder.out_of_line_offset(bytes_len)?;
15236            // Decode the envelope for each type.
15237            let mut _next_ordinal_to_read = 0;
15238            let mut next_offset = offset;
15239            let end_offset = offset + bytes_len;
15240            _next_ordinal_to_read += 1;
15241            if next_offset >= end_offset {
15242                return Ok(());
15243            }
15244
15245            // Decode unknown envelopes for gaps in ordinals.
15246            while _next_ordinal_to_read < 1 {
15247                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15248                _next_ordinal_to_read += 1;
15249                next_offset += envelope_size;
15250            }
15251
15252            let next_out_of_line = decoder.next_out_of_line();
15253            let handles_before = decoder.remaining_handles();
15254            if let Some((inlined, num_bytes, num_handles)) =
15255                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15256            {
15257                let member_inline_size =
15258                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
15259                        decoder.context,
15260                    );
15261                if inlined != (member_inline_size <= 4) {
15262                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15263                }
15264                let inner_offset;
15265                let mut inner_depth = depth.clone();
15266                if inlined {
15267                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15268                    inner_offset = next_offset;
15269                } else {
15270                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15271                    inner_depth.increment()?;
15272                }
15273                let val_ref = self
15274                    .ssid
15275                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
15276                fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
15277                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15278                {
15279                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15280                }
15281                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15282                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15283                }
15284            }
15285
15286            next_offset += envelope_size;
15287
15288            // Decode the remaining unknown envelopes.
15289            while next_offset < end_offset {
15290                _next_ordinal_to_read += 1;
15291                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15292                next_offset += envelope_size;
15293            }
15294
15295            Ok(())
15296        }
15297    }
15298
15299    impl WlanFullmacImplStopScheduledScanRequest {
15300        #[inline(always)]
15301        fn max_ordinal_present(&self) -> u64 {
15302            if let Some(_) = self.txn_id {
15303                return 1;
15304            }
15305            0
15306        }
15307    }
15308
15309    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplStopScheduledScanRequest {
15310        type Borrowed<'a> = &'a Self;
15311        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15312            value
15313        }
15314    }
15315
15316    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplStopScheduledScanRequest {
15317        type Owned = Self;
15318
15319        #[inline(always)]
15320        fn inline_align(_context: fidl::encoding::Context) -> usize {
15321            8
15322        }
15323
15324        #[inline(always)]
15325        fn inline_size(_context: fidl::encoding::Context) -> usize {
15326            16
15327        }
15328    }
15329
15330    unsafe impl<D: fidl::encoding::ResourceDialect>
15331        fidl::encoding::Encode<WlanFullmacImplStopScheduledScanRequest, D>
15332        for &WlanFullmacImplStopScheduledScanRequest
15333    {
15334        unsafe fn encode(
15335            self,
15336            encoder: &mut fidl::encoding::Encoder<'_, D>,
15337            offset: usize,
15338            mut depth: fidl::encoding::Depth,
15339        ) -> fidl::Result<()> {
15340            encoder.debug_check_bounds::<WlanFullmacImplStopScheduledScanRequest>(offset);
15341            // Vector header
15342            let max_ordinal: u64 = self.max_ordinal_present();
15343            encoder.write_num(max_ordinal, offset);
15344            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15345            // Calling encoder.out_of_line_offset(0) is not allowed.
15346            if max_ordinal == 0 {
15347                return Ok(());
15348            }
15349            depth.increment()?;
15350            let envelope_size = 8;
15351            let bytes_len = max_ordinal as usize * envelope_size;
15352            #[allow(unused_variables)]
15353            let offset = encoder.out_of_line_offset(bytes_len);
15354            let mut _prev_end_offset: usize = 0;
15355            if 1 > max_ordinal {
15356                return Ok(());
15357            }
15358
15359            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15360            // are envelope_size bytes.
15361            let cur_offset: usize = (1 - 1) * envelope_size;
15362
15363            // Zero reserved fields.
15364            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15365
15366            // Safety:
15367            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15368            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15369            //   envelope_size bytes, there is always sufficient room.
15370            fidl::encoding::encode_in_envelope_optional::<u64, D>(
15371                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
15372                encoder,
15373                offset + cur_offset,
15374                depth,
15375            )?;
15376
15377            _prev_end_offset = cur_offset + envelope_size;
15378
15379            Ok(())
15380        }
15381    }
15382
15383    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
15384        for WlanFullmacImplStopScheduledScanRequest
15385    {
15386        #[inline(always)]
15387        fn new_empty() -> Self {
15388            Self::default()
15389        }
15390
15391        unsafe fn decode(
15392            &mut self,
15393            decoder: &mut fidl::encoding::Decoder<'_, D>,
15394            offset: usize,
15395            mut depth: fidl::encoding::Depth,
15396        ) -> fidl::Result<()> {
15397            decoder.debug_check_bounds::<Self>(offset);
15398            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15399                None => return Err(fidl::Error::NotNullable),
15400                Some(len) => len,
15401            };
15402            // Calling decoder.out_of_line_offset(0) is not allowed.
15403            if len == 0 {
15404                return Ok(());
15405            };
15406            depth.increment()?;
15407            let envelope_size = 8;
15408            let bytes_len = len * envelope_size;
15409            let offset = decoder.out_of_line_offset(bytes_len)?;
15410            // Decode the envelope for each type.
15411            let mut _next_ordinal_to_read = 0;
15412            let mut next_offset = offset;
15413            let end_offset = offset + bytes_len;
15414            _next_ordinal_to_read += 1;
15415            if next_offset >= end_offset {
15416                return Ok(());
15417            }
15418
15419            // Decode unknown envelopes for gaps in ordinals.
15420            while _next_ordinal_to_read < 1 {
15421                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15422                _next_ordinal_to_read += 1;
15423                next_offset += envelope_size;
15424            }
15425
15426            let next_out_of_line = decoder.next_out_of_line();
15427            let handles_before = decoder.remaining_handles();
15428            if let Some((inlined, num_bytes, num_handles)) =
15429                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15430            {
15431                let member_inline_size =
15432                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15433                if inlined != (member_inline_size <= 4) {
15434                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15435                }
15436                let inner_offset;
15437                let mut inner_depth = depth.clone();
15438                if inlined {
15439                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15440                    inner_offset = next_offset;
15441                } else {
15442                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15443                    inner_depth.increment()?;
15444                }
15445                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
15446                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
15447                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15448                {
15449                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15450                }
15451                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15452                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15453                }
15454            }
15455
15456            next_offset += envelope_size;
15457
15458            // Decode the remaining unknown envelopes.
15459            while next_offset < end_offset {
15460                _next_ordinal_to_read += 1;
15461                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15462                next_offset += envelope_size;
15463            }
15464
15465            Ok(())
15466        }
15467    }
15468
15469    impl WlanFullmacImplGetApfPacketFilterEnabledResponse {
15470        #[inline(always)]
15471        fn max_ordinal_present(&self) -> u64 {
15472            if let Some(_) = self.enabled {
15473                return 1;
15474            }
15475            0
15476        }
15477    }
15478
15479    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplGetApfPacketFilterEnabledResponse {
15480        type Borrowed<'a> = &'a Self;
15481        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15482            value
15483        }
15484    }
15485
15486    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplGetApfPacketFilterEnabledResponse {
15487        type Owned = Self;
15488
15489        #[inline(always)]
15490        fn inline_align(_context: fidl::encoding::Context) -> usize {
15491            8
15492        }
15493
15494        #[inline(always)]
15495        fn inline_size(_context: fidl::encoding::Context) -> usize {
15496            16
15497        }
15498    }
15499
15500    unsafe impl<D: fidl::encoding::ResourceDialect>
15501        fidl::encoding::Encode<WlanFullmacImplGetApfPacketFilterEnabledResponse, D>
15502        for &WlanFullmacImplGetApfPacketFilterEnabledResponse
15503    {
15504        unsafe fn encode(
15505            self,
15506            encoder: &mut fidl::encoding::Encoder<'_, D>,
15507            offset: usize,
15508            mut depth: fidl::encoding::Depth,
15509        ) -> fidl::Result<()> {
15510            encoder.debug_check_bounds::<WlanFullmacImplGetApfPacketFilterEnabledResponse>(offset);
15511            // Vector header
15512            let max_ordinal: u64 = self.max_ordinal_present();
15513            encoder.write_num(max_ordinal, offset);
15514            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15515            // Calling encoder.out_of_line_offset(0) is not allowed.
15516            if max_ordinal == 0 {
15517                return Ok(());
15518            }
15519            depth.increment()?;
15520            let envelope_size = 8;
15521            let bytes_len = max_ordinal as usize * envelope_size;
15522            #[allow(unused_variables)]
15523            let offset = encoder.out_of_line_offset(bytes_len);
15524            let mut _prev_end_offset: usize = 0;
15525            if 1 > max_ordinal {
15526                return Ok(());
15527            }
15528
15529            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15530            // are envelope_size bytes.
15531            let cur_offset: usize = (1 - 1) * envelope_size;
15532
15533            // Zero reserved fields.
15534            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15535
15536            // Safety:
15537            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15538            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15539            //   envelope_size bytes, there is always sufficient room.
15540            fidl::encoding::encode_in_envelope_optional::<bool, D>(
15541                self.enabled.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
15542                encoder,
15543                offset + cur_offset,
15544                depth,
15545            )?;
15546
15547            _prev_end_offset = cur_offset + envelope_size;
15548
15549            Ok(())
15550        }
15551    }
15552
15553    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
15554        for WlanFullmacImplGetApfPacketFilterEnabledResponse
15555    {
15556        #[inline(always)]
15557        fn new_empty() -> Self {
15558            Self::default()
15559        }
15560
15561        unsafe fn decode(
15562            &mut self,
15563            decoder: &mut fidl::encoding::Decoder<'_, D>,
15564            offset: usize,
15565            mut depth: fidl::encoding::Depth,
15566        ) -> fidl::Result<()> {
15567            decoder.debug_check_bounds::<Self>(offset);
15568            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15569                None => return Err(fidl::Error::NotNullable),
15570                Some(len) => len,
15571            };
15572            // Calling decoder.out_of_line_offset(0) is not allowed.
15573            if len == 0 {
15574                return Ok(());
15575            };
15576            depth.increment()?;
15577            let envelope_size = 8;
15578            let bytes_len = len * envelope_size;
15579            let offset = decoder.out_of_line_offset(bytes_len)?;
15580            // Decode the envelope for each type.
15581            let mut _next_ordinal_to_read = 0;
15582            let mut next_offset = offset;
15583            let end_offset = offset + bytes_len;
15584            _next_ordinal_to_read += 1;
15585            if next_offset >= end_offset {
15586                return Ok(());
15587            }
15588
15589            // Decode unknown envelopes for gaps in ordinals.
15590            while _next_ordinal_to_read < 1 {
15591                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15592                _next_ordinal_to_read += 1;
15593                next_offset += envelope_size;
15594            }
15595
15596            let next_out_of_line = decoder.next_out_of_line();
15597            let handles_before = decoder.remaining_handles();
15598            if let Some((inlined, num_bytes, num_handles)) =
15599                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15600            {
15601                let member_inline_size =
15602                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15603                if inlined != (member_inline_size <= 4) {
15604                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15605                }
15606                let inner_offset;
15607                let mut inner_depth = depth.clone();
15608                if inlined {
15609                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15610                    inner_offset = next_offset;
15611                } else {
15612                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15613                    inner_depth.increment()?;
15614                }
15615                let val_ref = self.enabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
15616                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
15617                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15618                {
15619                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15620                }
15621                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15622                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15623                }
15624            }
15625
15626            next_offset += envelope_size;
15627
15628            // Decode the remaining unknown envelopes.
15629            while next_offset < end_offset {
15630                _next_ordinal_to_read += 1;
15631                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15632                next_offset += envelope_size;
15633            }
15634
15635            Ok(())
15636        }
15637    }
15638
15639    impl WlanFullmacImplGetScheduledScanEnabledResponse {
15640        #[inline(always)]
15641        fn max_ordinal_present(&self) -> u64 {
15642            if let Some(_) = self.active_txn_ids {
15643                return 1;
15644            }
15645            0
15646        }
15647    }
15648
15649    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplGetScheduledScanEnabledResponse {
15650        type Borrowed<'a> = &'a Self;
15651        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15652            value
15653        }
15654    }
15655
15656    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplGetScheduledScanEnabledResponse {
15657        type Owned = Self;
15658
15659        #[inline(always)]
15660        fn inline_align(_context: fidl::encoding::Context) -> usize {
15661            8
15662        }
15663
15664        #[inline(always)]
15665        fn inline_size(_context: fidl::encoding::Context) -> usize {
15666            16
15667        }
15668    }
15669
15670    unsafe impl<D: fidl::encoding::ResourceDialect>
15671        fidl::encoding::Encode<WlanFullmacImplGetScheduledScanEnabledResponse, D>
15672        for &WlanFullmacImplGetScheduledScanEnabledResponse
15673    {
15674        unsafe fn encode(
15675            self,
15676            encoder: &mut fidl::encoding::Encoder<'_, D>,
15677            offset: usize,
15678            mut depth: fidl::encoding::Depth,
15679        ) -> fidl::Result<()> {
15680            encoder.debug_check_bounds::<WlanFullmacImplGetScheduledScanEnabledResponse>(offset);
15681            // Vector header
15682            let max_ordinal: u64 = self.max_ordinal_present();
15683            encoder.write_num(max_ordinal, offset);
15684            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15685            // Calling encoder.out_of_line_offset(0) is not allowed.
15686            if max_ordinal == 0 {
15687                return Ok(());
15688            }
15689            depth.increment()?;
15690            let envelope_size = 8;
15691            let bytes_len = max_ordinal as usize * envelope_size;
15692            #[allow(unused_variables)]
15693            let offset = encoder.out_of_line_offset(bytes_len);
15694            let mut _prev_end_offset: usize = 0;
15695            if 1 > max_ordinal {
15696                return Ok(());
15697            }
15698
15699            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15700            // are envelope_size bytes.
15701            let cur_offset: usize = (1 - 1) * envelope_size;
15702
15703            // Zero reserved fields.
15704            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15705
15706            // Safety:
15707            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15708            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15709            //   envelope_size bytes, there is always sufficient room.
15710            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u64>, D>(
15711            self.active_txn_ids.as_ref().map(<fidl::encoding::UnboundedVector<u64> as fidl::encoding::ValueTypeMarker>::borrow),
15712            encoder, offset + cur_offset, depth
15713        )?;
15714
15715            _prev_end_offset = cur_offset + envelope_size;
15716
15717            Ok(())
15718        }
15719    }
15720
15721    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
15722        for WlanFullmacImplGetScheduledScanEnabledResponse
15723    {
15724        #[inline(always)]
15725        fn new_empty() -> Self {
15726            Self::default()
15727        }
15728
15729        unsafe fn decode(
15730            &mut self,
15731            decoder: &mut fidl::encoding::Decoder<'_, D>,
15732            offset: usize,
15733            mut depth: fidl::encoding::Depth,
15734        ) -> fidl::Result<()> {
15735            decoder.debug_check_bounds::<Self>(offset);
15736            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15737                None => return Err(fidl::Error::NotNullable),
15738                Some(len) => len,
15739            };
15740            // Calling decoder.out_of_line_offset(0) is not allowed.
15741            if len == 0 {
15742                return Ok(());
15743            };
15744            depth.increment()?;
15745            let envelope_size = 8;
15746            let bytes_len = len * envelope_size;
15747            let offset = decoder.out_of_line_offset(bytes_len)?;
15748            // Decode the envelope for each type.
15749            let mut _next_ordinal_to_read = 0;
15750            let mut next_offset = offset;
15751            let end_offset = offset + bytes_len;
15752            _next_ordinal_to_read += 1;
15753            if next_offset >= end_offset {
15754                return Ok(());
15755            }
15756
15757            // Decode unknown envelopes for gaps in ordinals.
15758            while _next_ordinal_to_read < 1 {
15759                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15760                _next_ordinal_to_read += 1;
15761                next_offset += envelope_size;
15762            }
15763
15764            let next_out_of_line = decoder.next_out_of_line();
15765            let handles_before = decoder.remaining_handles();
15766            if let Some((inlined, num_bytes, num_handles)) =
15767                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15768            {
15769                let member_inline_size = <fidl::encoding::UnboundedVector<u64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15770                if inlined != (member_inline_size <= 4) {
15771                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15772                }
15773                let inner_offset;
15774                let mut inner_depth = depth.clone();
15775                if inlined {
15776                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15777                    inner_offset = next_offset;
15778                } else {
15779                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15780                    inner_depth.increment()?;
15781                }
15782                let val_ref = self.active_txn_ids.get_or_insert_with(|| {
15783                    fidl::new_empty!(fidl::encoding::UnboundedVector<u64>, D)
15784                });
15785                fidl::decode!(
15786                    fidl::encoding::UnboundedVector<u64>,
15787                    D,
15788                    val_ref,
15789                    decoder,
15790                    inner_offset,
15791                    inner_depth
15792                )?;
15793                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15794                {
15795                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15796                }
15797                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15798                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15799                }
15800            }
15801
15802            next_offset += envelope_size;
15803
15804            // Decode the remaining unknown envelopes.
15805            while next_offset < end_offset {
15806                _next_ordinal_to_read += 1;
15807                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15808                next_offset += envelope_size;
15809            }
15810
15811            Ok(())
15812        }
15813    }
15814
15815    impl WlanFullmacImplQueryApfPacketFilterSupportResponse {
15816        #[inline(always)]
15817        fn max_ordinal_present(&self) -> u64 {
15818            if let Some(_) = self.resp {
15819                return 1;
15820            }
15821            0
15822        }
15823    }
15824
15825    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplQueryApfPacketFilterSupportResponse {
15826        type Borrowed<'a> = &'a Self;
15827        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15828            value
15829        }
15830    }
15831
15832    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplQueryApfPacketFilterSupportResponse {
15833        type Owned = Self;
15834
15835        #[inline(always)]
15836        fn inline_align(_context: fidl::encoding::Context) -> usize {
15837            8
15838        }
15839
15840        #[inline(always)]
15841        fn inline_size(_context: fidl::encoding::Context) -> usize {
15842            16
15843        }
15844    }
15845
15846    unsafe impl<D: fidl::encoding::ResourceDialect>
15847        fidl::encoding::Encode<WlanFullmacImplQueryApfPacketFilterSupportResponse, D>
15848        for &WlanFullmacImplQueryApfPacketFilterSupportResponse
15849    {
15850        unsafe fn encode(
15851            self,
15852            encoder: &mut fidl::encoding::Encoder<'_, D>,
15853            offset: usize,
15854            mut depth: fidl::encoding::Depth,
15855        ) -> fidl::Result<()> {
15856            encoder
15857                .debug_check_bounds::<WlanFullmacImplQueryApfPacketFilterSupportResponse>(offset);
15858            // Vector header
15859            let max_ordinal: u64 = self.max_ordinal_present();
15860            encoder.write_num(max_ordinal, offset);
15861            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15862            // Calling encoder.out_of_line_offset(0) is not allowed.
15863            if max_ordinal == 0 {
15864                return Ok(());
15865            }
15866            depth.increment()?;
15867            let envelope_size = 8;
15868            let bytes_len = max_ordinal as usize * envelope_size;
15869            #[allow(unused_variables)]
15870            let offset = encoder.out_of_line_offset(bytes_len);
15871            let mut _prev_end_offset: usize = 0;
15872            if 1 > max_ordinal {
15873                return Ok(());
15874            }
15875
15876            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15877            // are envelope_size bytes.
15878            let cur_offset: usize = (1 - 1) * envelope_size;
15879
15880            // Zero reserved fields.
15881            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15882
15883            // Safety:
15884            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15885            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15886            //   envelope_size bytes, there is always sufficient room.
15887            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common_common::ApfPacketFilterSupport, D>(
15888            self.resp.as_ref().map(<fidl_fuchsia_wlan_common_common::ApfPacketFilterSupport as fidl::encoding::ValueTypeMarker>::borrow),
15889            encoder, offset + cur_offset, depth
15890        )?;
15891
15892            _prev_end_offset = cur_offset + envelope_size;
15893
15894            Ok(())
15895        }
15896    }
15897
15898    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
15899        for WlanFullmacImplQueryApfPacketFilterSupportResponse
15900    {
15901        #[inline(always)]
15902        fn new_empty() -> Self {
15903            Self::default()
15904        }
15905
15906        unsafe fn decode(
15907            &mut self,
15908            decoder: &mut fidl::encoding::Decoder<'_, D>,
15909            offset: usize,
15910            mut depth: fidl::encoding::Depth,
15911        ) -> fidl::Result<()> {
15912            decoder.debug_check_bounds::<Self>(offset);
15913            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15914                None => return Err(fidl::Error::NotNullable),
15915                Some(len) => len,
15916            };
15917            // Calling decoder.out_of_line_offset(0) is not allowed.
15918            if len == 0 {
15919                return Ok(());
15920            };
15921            depth.increment()?;
15922            let envelope_size = 8;
15923            let bytes_len = len * envelope_size;
15924            let offset = decoder.out_of_line_offset(bytes_len)?;
15925            // Decode the envelope for each type.
15926            let mut _next_ordinal_to_read = 0;
15927            let mut next_offset = offset;
15928            let end_offset = offset + bytes_len;
15929            _next_ordinal_to_read += 1;
15930            if next_offset >= end_offset {
15931                return Ok(());
15932            }
15933
15934            // Decode unknown envelopes for gaps in ordinals.
15935            while _next_ordinal_to_read < 1 {
15936                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15937                _next_ordinal_to_read += 1;
15938                next_offset += envelope_size;
15939            }
15940
15941            let next_out_of_line = decoder.next_out_of_line();
15942            let handles_before = decoder.remaining_handles();
15943            if let Some((inlined, num_bytes, num_handles)) =
15944                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15945            {
15946                let member_inline_size = <fidl_fuchsia_wlan_common_common::ApfPacketFilterSupport as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15947                if inlined != (member_inline_size <= 4) {
15948                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15949                }
15950                let inner_offset;
15951                let mut inner_depth = depth.clone();
15952                if inlined {
15953                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15954                    inner_offset = next_offset;
15955                } else {
15956                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15957                    inner_depth.increment()?;
15958                }
15959                let val_ref = self.resp.get_or_insert_with(|| {
15960                    fidl::new_empty!(fidl_fuchsia_wlan_common_common::ApfPacketFilterSupport, D)
15961                });
15962                fidl::decode!(
15963                    fidl_fuchsia_wlan_common_common::ApfPacketFilterSupport,
15964                    D,
15965                    val_ref,
15966                    decoder,
15967                    inner_offset,
15968                    inner_depth
15969                )?;
15970                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15971                {
15972                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15973                }
15974                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15975                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15976                }
15977            }
15978
15979            next_offset += envelope_size;
15980
15981            // Decode the remaining unknown envelopes.
15982            while next_offset < end_offset {
15983                _next_ordinal_to_read += 1;
15984                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15985                next_offset += envelope_size;
15986            }
15987
15988            Ok(())
15989        }
15990    }
15991
15992    impl WlanFullmacImplQueryRssiMonitorSupportResponse {
15993        #[inline(always)]
15994        fn max_ordinal_present(&self) -> u64 {
15995            if let Some(_) = self.resp {
15996                return 1;
15997            }
15998            0
15999        }
16000    }
16001
16002    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplQueryRssiMonitorSupportResponse {
16003        type Borrowed<'a> = &'a Self;
16004        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16005            value
16006        }
16007    }
16008
16009    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplQueryRssiMonitorSupportResponse {
16010        type Owned = Self;
16011
16012        #[inline(always)]
16013        fn inline_align(_context: fidl::encoding::Context) -> usize {
16014            8
16015        }
16016
16017        #[inline(always)]
16018        fn inline_size(_context: fidl::encoding::Context) -> usize {
16019            16
16020        }
16021    }
16022
16023    unsafe impl<D: fidl::encoding::ResourceDialect>
16024        fidl::encoding::Encode<WlanFullmacImplQueryRssiMonitorSupportResponse, D>
16025        for &WlanFullmacImplQueryRssiMonitorSupportResponse
16026    {
16027        unsafe fn encode(
16028            self,
16029            encoder: &mut fidl::encoding::Encoder<'_, D>,
16030            offset: usize,
16031            mut depth: fidl::encoding::Depth,
16032        ) -> fidl::Result<()> {
16033            encoder.debug_check_bounds::<WlanFullmacImplQueryRssiMonitorSupportResponse>(offset);
16034            // Vector header
16035            let max_ordinal: u64 = self.max_ordinal_present();
16036            encoder.write_num(max_ordinal, offset);
16037            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
16038            // Calling encoder.out_of_line_offset(0) is not allowed.
16039            if max_ordinal == 0 {
16040                return Ok(());
16041            }
16042            depth.increment()?;
16043            let envelope_size = 8;
16044            let bytes_len = max_ordinal as usize * envelope_size;
16045            #[allow(unused_variables)]
16046            let offset = encoder.out_of_line_offset(bytes_len);
16047            let mut _prev_end_offset: usize = 0;
16048            if 1 > max_ordinal {
16049                return Ok(());
16050            }
16051
16052            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16053            // are envelope_size bytes.
16054            let cur_offset: usize = (1 - 1) * envelope_size;
16055
16056            // Zero reserved fields.
16057            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16058
16059            // Safety:
16060            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16061            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16062            //   envelope_size bytes, there is always sufficient room.
16063            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common_common::RssiMonitorSupport, D>(
16064            self.resp.as_ref().map(<fidl_fuchsia_wlan_common_common::RssiMonitorSupport as fidl::encoding::ValueTypeMarker>::borrow),
16065            encoder, offset + cur_offset, depth
16066        )?;
16067
16068            _prev_end_offset = cur_offset + envelope_size;
16069
16070            Ok(())
16071        }
16072    }
16073
16074    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
16075        for WlanFullmacImplQueryRssiMonitorSupportResponse
16076    {
16077        #[inline(always)]
16078        fn new_empty() -> Self {
16079            Self::default()
16080        }
16081
16082        unsafe fn decode(
16083            &mut self,
16084            decoder: &mut fidl::encoding::Decoder<'_, D>,
16085            offset: usize,
16086            mut depth: fidl::encoding::Depth,
16087        ) -> fidl::Result<()> {
16088            decoder.debug_check_bounds::<Self>(offset);
16089            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
16090                None => return Err(fidl::Error::NotNullable),
16091                Some(len) => len,
16092            };
16093            // Calling decoder.out_of_line_offset(0) is not allowed.
16094            if len == 0 {
16095                return Ok(());
16096            };
16097            depth.increment()?;
16098            let envelope_size = 8;
16099            let bytes_len = len * envelope_size;
16100            let offset = decoder.out_of_line_offset(bytes_len)?;
16101            // Decode the envelope for each type.
16102            let mut _next_ordinal_to_read = 0;
16103            let mut next_offset = offset;
16104            let end_offset = offset + bytes_len;
16105            _next_ordinal_to_read += 1;
16106            if next_offset >= end_offset {
16107                return Ok(());
16108            }
16109
16110            // Decode unknown envelopes for gaps in ordinals.
16111            while _next_ordinal_to_read < 1 {
16112                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16113                _next_ordinal_to_read += 1;
16114                next_offset += envelope_size;
16115            }
16116
16117            let next_out_of_line = decoder.next_out_of_line();
16118            let handles_before = decoder.remaining_handles();
16119            if let Some((inlined, num_bytes, num_handles)) =
16120                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16121            {
16122                let member_inline_size = <fidl_fuchsia_wlan_common_common::RssiMonitorSupport as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16123                if inlined != (member_inline_size <= 4) {
16124                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16125                }
16126                let inner_offset;
16127                let mut inner_depth = depth.clone();
16128                if inlined {
16129                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16130                    inner_offset = next_offset;
16131                } else {
16132                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16133                    inner_depth.increment()?;
16134                }
16135                let val_ref = self.resp.get_or_insert_with(|| {
16136                    fidl::new_empty!(fidl_fuchsia_wlan_common_common::RssiMonitorSupport, D)
16137                });
16138                fidl::decode!(
16139                    fidl_fuchsia_wlan_common_common::RssiMonitorSupport,
16140                    D,
16141                    val_ref,
16142                    decoder,
16143                    inner_offset,
16144                    inner_depth
16145                )?;
16146                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16147                {
16148                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16149                }
16150                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16151                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16152                }
16153            }
16154
16155            next_offset += envelope_size;
16156
16157            // Decode the remaining unknown envelopes.
16158            while next_offset < end_offset {
16159                _next_ordinal_to_read += 1;
16160                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16161                next_offset += envelope_size;
16162            }
16163
16164            Ok(())
16165        }
16166    }
16167
16168    impl WlanFullmacImplQuerySecuritySupportResponse {
16169        #[inline(always)]
16170        fn max_ordinal_present(&self) -> u64 {
16171            if let Some(_) = self.resp {
16172                return 1;
16173            }
16174            0
16175        }
16176    }
16177
16178    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplQuerySecuritySupportResponse {
16179        type Borrowed<'a> = &'a Self;
16180        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16181            value
16182        }
16183    }
16184
16185    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplQuerySecuritySupportResponse {
16186        type Owned = Self;
16187
16188        #[inline(always)]
16189        fn inline_align(_context: fidl::encoding::Context) -> usize {
16190            8
16191        }
16192
16193        #[inline(always)]
16194        fn inline_size(_context: fidl::encoding::Context) -> usize {
16195            16
16196        }
16197    }
16198
16199    unsafe impl<D: fidl::encoding::ResourceDialect>
16200        fidl::encoding::Encode<WlanFullmacImplQuerySecuritySupportResponse, D>
16201        for &WlanFullmacImplQuerySecuritySupportResponse
16202    {
16203        unsafe fn encode(
16204            self,
16205            encoder: &mut fidl::encoding::Encoder<'_, D>,
16206            offset: usize,
16207            mut depth: fidl::encoding::Depth,
16208        ) -> fidl::Result<()> {
16209            encoder.debug_check_bounds::<WlanFullmacImplQuerySecuritySupportResponse>(offset);
16210            // Vector header
16211            let max_ordinal: u64 = self.max_ordinal_present();
16212            encoder.write_num(max_ordinal, offset);
16213            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
16214            // Calling encoder.out_of_line_offset(0) is not allowed.
16215            if max_ordinal == 0 {
16216                return Ok(());
16217            }
16218            depth.increment()?;
16219            let envelope_size = 8;
16220            let bytes_len = max_ordinal as usize * envelope_size;
16221            #[allow(unused_variables)]
16222            let offset = encoder.out_of_line_offset(bytes_len);
16223            let mut _prev_end_offset: usize = 0;
16224            if 1 > max_ordinal {
16225                return Ok(());
16226            }
16227
16228            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16229            // are envelope_size bytes.
16230            let cur_offset: usize = (1 - 1) * envelope_size;
16231
16232            // Zero reserved fields.
16233            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16234
16235            // Safety:
16236            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16237            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16238            //   envelope_size bytes, there is always sufficient room.
16239            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common_common::SecuritySupport, D>(
16240            self.resp.as_ref().map(<fidl_fuchsia_wlan_common_common::SecuritySupport as fidl::encoding::ValueTypeMarker>::borrow),
16241            encoder, offset + cur_offset, depth
16242        )?;
16243
16244            _prev_end_offset = cur_offset + envelope_size;
16245
16246            Ok(())
16247        }
16248    }
16249
16250    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
16251        for WlanFullmacImplQuerySecuritySupportResponse
16252    {
16253        #[inline(always)]
16254        fn new_empty() -> Self {
16255            Self::default()
16256        }
16257
16258        unsafe fn decode(
16259            &mut self,
16260            decoder: &mut fidl::encoding::Decoder<'_, D>,
16261            offset: usize,
16262            mut depth: fidl::encoding::Depth,
16263        ) -> fidl::Result<()> {
16264            decoder.debug_check_bounds::<Self>(offset);
16265            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
16266                None => return Err(fidl::Error::NotNullable),
16267                Some(len) => len,
16268            };
16269            // Calling decoder.out_of_line_offset(0) is not allowed.
16270            if len == 0 {
16271                return Ok(());
16272            };
16273            depth.increment()?;
16274            let envelope_size = 8;
16275            let bytes_len = len * envelope_size;
16276            let offset = decoder.out_of_line_offset(bytes_len)?;
16277            // Decode the envelope for each type.
16278            let mut _next_ordinal_to_read = 0;
16279            let mut next_offset = offset;
16280            let end_offset = offset + bytes_len;
16281            _next_ordinal_to_read += 1;
16282            if next_offset >= end_offset {
16283                return Ok(());
16284            }
16285
16286            // Decode unknown envelopes for gaps in ordinals.
16287            while _next_ordinal_to_read < 1 {
16288                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16289                _next_ordinal_to_read += 1;
16290                next_offset += envelope_size;
16291            }
16292
16293            let next_out_of_line = decoder.next_out_of_line();
16294            let handles_before = decoder.remaining_handles();
16295            if let Some((inlined, num_bytes, num_handles)) =
16296                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16297            {
16298                let member_inline_size = <fidl_fuchsia_wlan_common_common::SecuritySupport as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16299                if inlined != (member_inline_size <= 4) {
16300                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16301                }
16302                let inner_offset;
16303                let mut inner_depth = depth.clone();
16304                if inlined {
16305                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16306                    inner_offset = next_offset;
16307                } else {
16308                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16309                    inner_depth.increment()?;
16310                }
16311                let val_ref = self.resp.get_or_insert_with(|| {
16312                    fidl::new_empty!(fidl_fuchsia_wlan_common_common::SecuritySupport, D)
16313                });
16314                fidl::decode!(
16315                    fidl_fuchsia_wlan_common_common::SecuritySupport,
16316                    D,
16317                    val_ref,
16318                    decoder,
16319                    inner_offset,
16320                    inner_depth
16321                )?;
16322                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16323                {
16324                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16325                }
16326                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16327                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16328                }
16329            }
16330
16331            next_offset += envelope_size;
16332
16333            // Decode the remaining unknown envelopes.
16334            while next_offset < end_offset {
16335                _next_ordinal_to_read += 1;
16336                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16337                next_offset += envelope_size;
16338            }
16339
16340            Ok(())
16341        }
16342    }
16343
16344    impl WlanFullmacImplQuerySpectrumManagementSupportResponse {
16345        #[inline(always)]
16346        fn max_ordinal_present(&self) -> u64 {
16347            if let Some(_) = self.resp {
16348                return 1;
16349            }
16350            0
16351        }
16352    }
16353
16354    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplQuerySpectrumManagementSupportResponse {
16355        type Borrowed<'a> = &'a Self;
16356        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16357            value
16358        }
16359    }
16360
16361    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplQuerySpectrumManagementSupportResponse {
16362        type Owned = Self;
16363
16364        #[inline(always)]
16365        fn inline_align(_context: fidl::encoding::Context) -> usize {
16366            8
16367        }
16368
16369        #[inline(always)]
16370        fn inline_size(_context: fidl::encoding::Context) -> usize {
16371            16
16372        }
16373    }
16374
16375    unsafe impl<D: fidl::encoding::ResourceDialect>
16376        fidl::encoding::Encode<WlanFullmacImplQuerySpectrumManagementSupportResponse, D>
16377        for &WlanFullmacImplQuerySpectrumManagementSupportResponse
16378    {
16379        unsafe fn encode(
16380            self,
16381            encoder: &mut fidl::encoding::Encoder<'_, D>,
16382            offset: usize,
16383            mut depth: fidl::encoding::Depth,
16384        ) -> fidl::Result<()> {
16385            encoder.debug_check_bounds::<WlanFullmacImplQuerySpectrumManagementSupportResponse>(
16386                offset,
16387            );
16388            // Vector header
16389            let max_ordinal: u64 = self.max_ordinal_present();
16390            encoder.write_num(max_ordinal, offset);
16391            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
16392            // Calling encoder.out_of_line_offset(0) is not allowed.
16393            if max_ordinal == 0 {
16394                return Ok(());
16395            }
16396            depth.increment()?;
16397            let envelope_size = 8;
16398            let bytes_len = max_ordinal as usize * envelope_size;
16399            #[allow(unused_variables)]
16400            let offset = encoder.out_of_line_offset(bytes_len);
16401            let mut _prev_end_offset: usize = 0;
16402            if 1 > max_ordinal {
16403                return Ok(());
16404            }
16405
16406            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16407            // are envelope_size bytes.
16408            let cur_offset: usize = (1 - 1) * envelope_size;
16409
16410            // Zero reserved fields.
16411            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16412
16413            // Safety:
16414            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16415            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16416            //   envelope_size bytes, there is always sufficient room.
16417            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common_common::SpectrumManagementSupport, D>(
16418            self.resp.as_ref().map(<fidl_fuchsia_wlan_common_common::SpectrumManagementSupport as fidl::encoding::ValueTypeMarker>::borrow),
16419            encoder, offset + cur_offset, depth
16420        )?;
16421
16422            _prev_end_offset = cur_offset + envelope_size;
16423
16424            Ok(())
16425        }
16426    }
16427
16428    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
16429        for WlanFullmacImplQuerySpectrumManagementSupportResponse
16430    {
16431        #[inline(always)]
16432        fn new_empty() -> Self {
16433            Self::default()
16434        }
16435
16436        unsafe fn decode(
16437            &mut self,
16438            decoder: &mut fidl::encoding::Decoder<'_, D>,
16439            offset: usize,
16440            mut depth: fidl::encoding::Depth,
16441        ) -> fidl::Result<()> {
16442            decoder.debug_check_bounds::<Self>(offset);
16443            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
16444                None => return Err(fidl::Error::NotNullable),
16445                Some(len) => len,
16446            };
16447            // Calling decoder.out_of_line_offset(0) is not allowed.
16448            if len == 0 {
16449                return Ok(());
16450            };
16451            depth.increment()?;
16452            let envelope_size = 8;
16453            let bytes_len = len * envelope_size;
16454            let offset = decoder.out_of_line_offset(bytes_len)?;
16455            // Decode the envelope for each type.
16456            let mut _next_ordinal_to_read = 0;
16457            let mut next_offset = offset;
16458            let end_offset = offset + bytes_len;
16459            _next_ordinal_to_read += 1;
16460            if next_offset >= end_offset {
16461                return Ok(());
16462            }
16463
16464            // Decode unknown envelopes for gaps in ordinals.
16465            while _next_ordinal_to_read < 1 {
16466                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16467                _next_ordinal_to_read += 1;
16468                next_offset += envelope_size;
16469            }
16470
16471            let next_out_of_line = decoder.next_out_of_line();
16472            let handles_before = decoder.remaining_handles();
16473            if let Some((inlined, num_bytes, num_handles)) =
16474                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16475            {
16476                let member_inline_size = <fidl_fuchsia_wlan_common_common::SpectrumManagementSupport as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16477                if inlined != (member_inline_size <= 4) {
16478                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16479                }
16480                let inner_offset;
16481                let mut inner_depth = depth.clone();
16482                if inlined {
16483                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16484                    inner_offset = next_offset;
16485                } else {
16486                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16487                    inner_depth.increment()?;
16488                }
16489                let val_ref = self.resp.get_or_insert_with(|| {
16490                    fidl::new_empty!(fidl_fuchsia_wlan_common_common::SpectrumManagementSupport, D)
16491                });
16492                fidl::decode!(
16493                    fidl_fuchsia_wlan_common_common::SpectrumManagementSupport,
16494                    D,
16495                    val_ref,
16496                    decoder,
16497                    inner_offset,
16498                    inner_depth
16499                )?;
16500                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16501                {
16502                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16503                }
16504                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16505                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16506                }
16507            }
16508
16509            next_offset += envelope_size;
16510
16511            // Decode the remaining unknown envelopes.
16512            while next_offset < end_offset {
16513                _next_ordinal_to_read += 1;
16514                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16515                next_offset += envelope_size;
16516            }
16517
16518            Ok(())
16519        }
16520    }
16521
16522    impl WlanFullmacImplQueryTelemetrySupportResponse {
16523        #[inline(always)]
16524        fn max_ordinal_present(&self) -> u64 {
16525            if let Some(_) = self.resp {
16526                return 1;
16527            }
16528            0
16529        }
16530    }
16531
16532    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplQueryTelemetrySupportResponse {
16533        type Borrowed<'a> = &'a Self;
16534        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16535            value
16536        }
16537    }
16538
16539    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplQueryTelemetrySupportResponse {
16540        type Owned = Self;
16541
16542        #[inline(always)]
16543        fn inline_align(_context: fidl::encoding::Context) -> usize {
16544            8
16545        }
16546
16547        #[inline(always)]
16548        fn inline_size(_context: fidl::encoding::Context) -> usize {
16549            16
16550        }
16551    }
16552
16553    unsafe impl<D: fidl::encoding::ResourceDialect>
16554        fidl::encoding::Encode<WlanFullmacImplQueryTelemetrySupportResponse, D>
16555        for &WlanFullmacImplQueryTelemetrySupportResponse
16556    {
16557        unsafe fn encode(
16558            self,
16559            encoder: &mut fidl::encoding::Encoder<'_, D>,
16560            offset: usize,
16561            mut depth: fidl::encoding::Depth,
16562        ) -> fidl::Result<()> {
16563            encoder.debug_check_bounds::<WlanFullmacImplQueryTelemetrySupportResponse>(offset);
16564            // Vector header
16565            let max_ordinal: u64 = self.max_ordinal_present();
16566            encoder.write_num(max_ordinal, offset);
16567            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
16568            // Calling encoder.out_of_line_offset(0) is not allowed.
16569            if max_ordinal == 0 {
16570                return Ok(());
16571            }
16572            depth.increment()?;
16573            let envelope_size = 8;
16574            let bytes_len = max_ordinal as usize * envelope_size;
16575            #[allow(unused_variables)]
16576            let offset = encoder.out_of_line_offset(bytes_len);
16577            let mut _prev_end_offset: usize = 0;
16578            if 1 > max_ordinal {
16579                return Ok(());
16580            }
16581
16582            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16583            // are envelope_size bytes.
16584            let cur_offset: usize = (1 - 1) * envelope_size;
16585
16586            // Zero reserved fields.
16587            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16588
16589            // Safety:
16590            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16591            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16592            //   envelope_size bytes, there is always sufficient room.
16593            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_stats_common::TelemetrySupport, D>(
16594            self.resp.as_ref().map(<fidl_fuchsia_wlan_stats_common::TelemetrySupport as fidl::encoding::ValueTypeMarker>::borrow),
16595            encoder, offset + cur_offset, depth
16596        )?;
16597
16598            _prev_end_offset = cur_offset + envelope_size;
16599
16600            Ok(())
16601        }
16602    }
16603
16604    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
16605        for WlanFullmacImplQueryTelemetrySupportResponse
16606    {
16607        #[inline(always)]
16608        fn new_empty() -> Self {
16609            Self::default()
16610        }
16611
16612        unsafe fn decode(
16613            &mut self,
16614            decoder: &mut fidl::encoding::Decoder<'_, D>,
16615            offset: usize,
16616            mut depth: fidl::encoding::Depth,
16617        ) -> fidl::Result<()> {
16618            decoder.debug_check_bounds::<Self>(offset);
16619            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
16620                None => return Err(fidl::Error::NotNullable),
16621                Some(len) => len,
16622            };
16623            // Calling decoder.out_of_line_offset(0) is not allowed.
16624            if len == 0 {
16625                return Ok(());
16626            };
16627            depth.increment()?;
16628            let envelope_size = 8;
16629            let bytes_len = len * envelope_size;
16630            let offset = decoder.out_of_line_offset(bytes_len)?;
16631            // Decode the envelope for each type.
16632            let mut _next_ordinal_to_read = 0;
16633            let mut next_offset = offset;
16634            let end_offset = offset + bytes_len;
16635            _next_ordinal_to_read += 1;
16636            if next_offset >= end_offset {
16637                return Ok(());
16638            }
16639
16640            // Decode unknown envelopes for gaps in ordinals.
16641            while _next_ordinal_to_read < 1 {
16642                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16643                _next_ordinal_to_read += 1;
16644                next_offset += envelope_size;
16645            }
16646
16647            let next_out_of_line = decoder.next_out_of_line();
16648            let handles_before = decoder.remaining_handles();
16649            if let Some((inlined, num_bytes, num_handles)) =
16650                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16651            {
16652                let member_inline_size = <fidl_fuchsia_wlan_stats_common::TelemetrySupport as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16653                if inlined != (member_inline_size <= 4) {
16654                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16655                }
16656                let inner_offset;
16657                let mut inner_depth = depth.clone();
16658                if inlined {
16659                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16660                    inner_offset = next_offset;
16661                } else {
16662                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16663                    inner_depth.increment()?;
16664                }
16665                let val_ref = self.resp.get_or_insert_with(|| {
16666                    fidl::new_empty!(fidl_fuchsia_wlan_stats_common::TelemetrySupport, D)
16667                });
16668                fidl::decode!(
16669                    fidl_fuchsia_wlan_stats_common::TelemetrySupport,
16670                    D,
16671                    val_ref,
16672                    decoder,
16673                    inner_offset,
16674                    inner_depth
16675                )?;
16676                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16677                {
16678                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16679                }
16680                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16681                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16682                }
16683            }
16684
16685            next_offset += envelope_size;
16686
16687            // Decode the remaining unknown envelopes.
16688            while next_offset < end_offset {
16689                _next_ordinal_to_read += 1;
16690                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16691                next_offset += envelope_size;
16692            }
16693
16694            Ok(())
16695        }
16696    }
16697
16698    impl WlanFullmacImplQueryResponse {
16699        #[inline(always)]
16700        fn max_ordinal_present(&self) -> u64 {
16701            if let Some(_) = self.factory_addr {
16702                return 4;
16703            }
16704            if let Some(_) = self.band_caps {
16705                return 3;
16706            }
16707            if let Some(_) = self.role {
16708                return 2;
16709            }
16710            if let Some(_) = self.sta_addr {
16711                return 1;
16712            }
16713            0
16714        }
16715    }
16716
16717    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplQueryResponse {
16718        type Borrowed<'a> = &'a Self;
16719        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16720            value
16721        }
16722    }
16723
16724    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplQueryResponse {
16725        type Owned = Self;
16726
16727        #[inline(always)]
16728        fn inline_align(_context: fidl::encoding::Context) -> usize {
16729            8
16730        }
16731
16732        #[inline(always)]
16733        fn inline_size(_context: fidl::encoding::Context) -> usize {
16734            16
16735        }
16736    }
16737
16738    unsafe impl<D: fidl::encoding::ResourceDialect>
16739        fidl::encoding::Encode<WlanFullmacImplQueryResponse, D> for &WlanFullmacImplQueryResponse
16740    {
16741        unsafe fn encode(
16742            self,
16743            encoder: &mut fidl::encoding::Encoder<'_, D>,
16744            offset: usize,
16745            mut depth: fidl::encoding::Depth,
16746        ) -> fidl::Result<()> {
16747            encoder.debug_check_bounds::<WlanFullmacImplQueryResponse>(offset);
16748            // Vector header
16749            let max_ordinal: u64 = self.max_ordinal_present();
16750            encoder.write_num(max_ordinal, offset);
16751            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
16752            // Calling encoder.out_of_line_offset(0) is not allowed.
16753            if max_ordinal == 0 {
16754                return Ok(());
16755            }
16756            depth.increment()?;
16757            let envelope_size = 8;
16758            let bytes_len = max_ordinal as usize * envelope_size;
16759            #[allow(unused_variables)]
16760            let offset = encoder.out_of_line_offset(bytes_len);
16761            let mut _prev_end_offset: usize = 0;
16762            if 1 > max_ordinal {
16763                return Ok(());
16764            }
16765
16766            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16767            // are envelope_size bytes.
16768            let cur_offset: usize = (1 - 1) * envelope_size;
16769
16770            // Zero reserved fields.
16771            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16772
16773            // Safety:
16774            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16775            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16776            //   envelope_size bytes, there is always sufficient room.
16777            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
16778                self.sta_addr
16779                    .as_ref()
16780                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
16781                encoder,
16782                offset + cur_offset,
16783                depth,
16784            )?;
16785
16786            _prev_end_offset = cur_offset + envelope_size;
16787            if 2 > max_ordinal {
16788                return Ok(());
16789            }
16790
16791            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16792            // are envelope_size bytes.
16793            let cur_offset: usize = (2 - 1) * envelope_size;
16794
16795            // Zero reserved fields.
16796            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16797
16798            // Safety:
16799            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16800            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16801            //   envelope_size bytes, there is always sufficient room.
16802            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common_common::WlanMacRole, D>(
16803            self.role.as_ref().map(<fidl_fuchsia_wlan_common_common::WlanMacRole as fidl::encoding::ValueTypeMarker>::borrow),
16804            encoder, offset + cur_offset, depth
16805        )?;
16806
16807            _prev_end_offset = cur_offset + envelope_size;
16808            if 3 > max_ordinal {
16809                return Ok(());
16810            }
16811
16812            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16813            // are envelope_size bytes.
16814            let cur_offset: usize = (3 - 1) * envelope_size;
16815
16816            // Zero reserved fields.
16817            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16818
16819            // Safety:
16820            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16821            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16822            //   envelope_size bytes, there is always sufficient room.
16823            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<BandCapability, 16>, D>(
16824            self.band_caps.as_ref().map(<fidl::encoding::Vector<BandCapability, 16> as fidl::encoding::ValueTypeMarker>::borrow),
16825            encoder, offset + cur_offset, depth
16826        )?;
16827
16828            _prev_end_offset = cur_offset + envelope_size;
16829            if 4 > max_ordinal {
16830                return Ok(());
16831            }
16832
16833            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16834            // are envelope_size bytes.
16835            let cur_offset: usize = (4 - 1) * envelope_size;
16836
16837            // Zero reserved fields.
16838            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16839
16840            // Safety:
16841            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16842            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16843            //   envelope_size bytes, there is always sufficient room.
16844            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
16845                self.factory_addr
16846                    .as_ref()
16847                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
16848                encoder,
16849                offset + cur_offset,
16850                depth,
16851            )?;
16852
16853            _prev_end_offset = cur_offset + envelope_size;
16854
16855            Ok(())
16856        }
16857    }
16858
16859    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
16860        for WlanFullmacImplQueryResponse
16861    {
16862        #[inline(always)]
16863        fn new_empty() -> Self {
16864            Self::default()
16865        }
16866
16867        unsafe fn decode(
16868            &mut self,
16869            decoder: &mut fidl::encoding::Decoder<'_, D>,
16870            offset: usize,
16871            mut depth: fidl::encoding::Depth,
16872        ) -> fidl::Result<()> {
16873            decoder.debug_check_bounds::<Self>(offset);
16874            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
16875                None => return Err(fidl::Error::NotNullable),
16876                Some(len) => len,
16877            };
16878            // Calling decoder.out_of_line_offset(0) is not allowed.
16879            if len == 0 {
16880                return Ok(());
16881            };
16882            depth.increment()?;
16883            let envelope_size = 8;
16884            let bytes_len = len * envelope_size;
16885            let offset = decoder.out_of_line_offset(bytes_len)?;
16886            // Decode the envelope for each type.
16887            let mut _next_ordinal_to_read = 0;
16888            let mut next_offset = offset;
16889            let end_offset = offset + bytes_len;
16890            _next_ordinal_to_read += 1;
16891            if next_offset >= end_offset {
16892                return Ok(());
16893            }
16894
16895            // Decode unknown envelopes for gaps in ordinals.
16896            while _next_ordinal_to_read < 1 {
16897                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16898                _next_ordinal_to_read += 1;
16899                next_offset += envelope_size;
16900            }
16901
16902            let next_out_of_line = decoder.next_out_of_line();
16903            let handles_before = decoder.remaining_handles();
16904            if let Some((inlined, num_bytes, num_handles)) =
16905                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16906            {
16907                let member_inline_size =
16908                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
16909                        decoder.context,
16910                    );
16911                if inlined != (member_inline_size <= 4) {
16912                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16913                }
16914                let inner_offset;
16915                let mut inner_depth = depth.clone();
16916                if inlined {
16917                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16918                    inner_offset = next_offset;
16919                } else {
16920                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16921                    inner_depth.increment()?;
16922                }
16923                let val_ref = self
16924                    .sta_addr
16925                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
16926                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
16927                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16928                {
16929                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16930                }
16931                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16932                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16933                }
16934            }
16935
16936            next_offset += envelope_size;
16937            _next_ordinal_to_read += 1;
16938            if next_offset >= end_offset {
16939                return Ok(());
16940            }
16941
16942            // Decode unknown envelopes for gaps in ordinals.
16943            while _next_ordinal_to_read < 2 {
16944                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16945                _next_ordinal_to_read += 1;
16946                next_offset += envelope_size;
16947            }
16948
16949            let next_out_of_line = decoder.next_out_of_line();
16950            let handles_before = decoder.remaining_handles();
16951            if let Some((inlined, num_bytes, num_handles)) =
16952                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16953            {
16954                let member_inline_size = <fidl_fuchsia_wlan_common_common::WlanMacRole as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16955                if inlined != (member_inline_size <= 4) {
16956                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16957                }
16958                let inner_offset;
16959                let mut inner_depth = depth.clone();
16960                if inlined {
16961                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16962                    inner_offset = next_offset;
16963                } else {
16964                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16965                    inner_depth.increment()?;
16966                }
16967                let val_ref = self.role.get_or_insert_with(|| {
16968                    fidl::new_empty!(fidl_fuchsia_wlan_common_common::WlanMacRole, D)
16969                });
16970                fidl::decode!(
16971                    fidl_fuchsia_wlan_common_common::WlanMacRole,
16972                    D,
16973                    val_ref,
16974                    decoder,
16975                    inner_offset,
16976                    inner_depth
16977                )?;
16978                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16979                {
16980                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16981                }
16982                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16983                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16984                }
16985            }
16986
16987            next_offset += envelope_size;
16988            _next_ordinal_to_read += 1;
16989            if next_offset >= end_offset {
16990                return Ok(());
16991            }
16992
16993            // Decode unknown envelopes for gaps in ordinals.
16994            while _next_ordinal_to_read < 3 {
16995                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16996                _next_ordinal_to_read += 1;
16997                next_offset += envelope_size;
16998            }
16999
17000            let next_out_of_line = decoder.next_out_of_line();
17001            let handles_before = decoder.remaining_handles();
17002            if let Some((inlined, num_bytes, num_handles)) =
17003                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17004            {
17005                let member_inline_size = <fidl::encoding::Vector<BandCapability, 16> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17006                if inlined != (member_inline_size <= 4) {
17007                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17008                }
17009                let inner_offset;
17010                let mut inner_depth = depth.clone();
17011                if inlined {
17012                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17013                    inner_offset = next_offset;
17014                } else {
17015                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17016                    inner_depth.increment()?;
17017                }
17018                let val_ref = self.band_caps.get_or_insert_with(
17019                    || fidl::new_empty!(fidl::encoding::Vector<BandCapability, 16>, D),
17020                );
17021                fidl::decode!(fidl::encoding::Vector<BandCapability, 16>, D, val_ref, decoder, inner_offset, inner_depth)?;
17022                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17023                {
17024                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17025                }
17026                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17027                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17028                }
17029            }
17030
17031            next_offset += envelope_size;
17032            _next_ordinal_to_read += 1;
17033            if next_offset >= end_offset {
17034                return Ok(());
17035            }
17036
17037            // Decode unknown envelopes for gaps in ordinals.
17038            while _next_ordinal_to_read < 4 {
17039                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17040                _next_ordinal_to_read += 1;
17041                next_offset += envelope_size;
17042            }
17043
17044            let next_out_of_line = decoder.next_out_of_line();
17045            let handles_before = decoder.remaining_handles();
17046            if let Some((inlined, num_bytes, num_handles)) =
17047                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17048            {
17049                let member_inline_size =
17050                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
17051                        decoder.context,
17052                    );
17053                if inlined != (member_inline_size <= 4) {
17054                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17055                }
17056                let inner_offset;
17057                let mut inner_depth = depth.clone();
17058                if inlined {
17059                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17060                    inner_offset = next_offset;
17061                } else {
17062                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17063                    inner_depth.increment()?;
17064                }
17065                let val_ref = self
17066                    .factory_addr
17067                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
17068                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
17069                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17070                {
17071                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17072                }
17073                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17074                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17075                }
17076            }
17077
17078            next_offset += envelope_size;
17079
17080            // Decode the remaining unknown envelopes.
17081            while next_offset < end_offset {
17082                _next_ordinal_to_read += 1;
17083                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17084                next_offset += envelope_size;
17085            }
17086
17087            Ok(())
17088        }
17089    }
17090
17091    impl WlanFullmacImplReadApfPacketFilterDataResponse {
17092        #[inline(always)]
17093        fn max_ordinal_present(&self) -> u64 {
17094            if let Some(_) = self.memory {
17095                return 1;
17096            }
17097            0
17098        }
17099    }
17100
17101    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplReadApfPacketFilterDataResponse {
17102        type Borrowed<'a> = &'a Self;
17103        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
17104            value
17105        }
17106    }
17107
17108    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplReadApfPacketFilterDataResponse {
17109        type Owned = Self;
17110
17111        #[inline(always)]
17112        fn inline_align(_context: fidl::encoding::Context) -> usize {
17113            8
17114        }
17115
17116        #[inline(always)]
17117        fn inline_size(_context: fidl::encoding::Context) -> usize {
17118            16
17119        }
17120    }
17121
17122    unsafe impl<D: fidl::encoding::ResourceDialect>
17123        fidl::encoding::Encode<WlanFullmacImplReadApfPacketFilterDataResponse, D>
17124        for &WlanFullmacImplReadApfPacketFilterDataResponse
17125    {
17126        unsafe fn encode(
17127            self,
17128            encoder: &mut fidl::encoding::Encoder<'_, D>,
17129            offset: usize,
17130            mut depth: fidl::encoding::Depth,
17131        ) -> fidl::Result<()> {
17132            encoder.debug_check_bounds::<WlanFullmacImplReadApfPacketFilterDataResponse>(offset);
17133            // Vector header
17134            let max_ordinal: u64 = self.max_ordinal_present();
17135            encoder.write_num(max_ordinal, offset);
17136            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
17137            // Calling encoder.out_of_line_offset(0) is not allowed.
17138            if max_ordinal == 0 {
17139                return Ok(());
17140            }
17141            depth.increment()?;
17142            let envelope_size = 8;
17143            let bytes_len = max_ordinal as usize * envelope_size;
17144            #[allow(unused_variables)]
17145            let offset = encoder.out_of_line_offset(bytes_len);
17146            let mut _prev_end_offset: usize = 0;
17147            if 1 > max_ordinal {
17148                return Ok(());
17149            }
17150
17151            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
17152            // are envelope_size bytes.
17153            let cur_offset: usize = (1 - 1) * envelope_size;
17154
17155            // Zero reserved fields.
17156            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17157
17158            // Safety:
17159            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
17160            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
17161            //   envelope_size bytes, there is always sufficient room.
17162            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
17163            self.memory.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
17164            encoder, offset + cur_offset, depth
17165        )?;
17166
17167            _prev_end_offset = cur_offset + envelope_size;
17168
17169            Ok(())
17170        }
17171    }
17172
17173    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
17174        for WlanFullmacImplReadApfPacketFilterDataResponse
17175    {
17176        #[inline(always)]
17177        fn new_empty() -> Self {
17178            Self::default()
17179        }
17180
17181        unsafe fn decode(
17182            &mut self,
17183            decoder: &mut fidl::encoding::Decoder<'_, D>,
17184            offset: usize,
17185            mut depth: fidl::encoding::Depth,
17186        ) -> fidl::Result<()> {
17187            decoder.debug_check_bounds::<Self>(offset);
17188            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
17189                None => return Err(fidl::Error::NotNullable),
17190                Some(len) => len,
17191            };
17192            // Calling decoder.out_of_line_offset(0) is not allowed.
17193            if len == 0 {
17194                return Ok(());
17195            };
17196            depth.increment()?;
17197            let envelope_size = 8;
17198            let bytes_len = len * envelope_size;
17199            let offset = decoder.out_of_line_offset(bytes_len)?;
17200            // Decode the envelope for each type.
17201            let mut _next_ordinal_to_read = 0;
17202            let mut next_offset = offset;
17203            let end_offset = offset + bytes_len;
17204            _next_ordinal_to_read += 1;
17205            if next_offset >= end_offset {
17206                return Ok(());
17207            }
17208
17209            // Decode unknown envelopes for gaps in ordinals.
17210            while _next_ordinal_to_read < 1 {
17211                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17212                _next_ordinal_to_read += 1;
17213                next_offset += envelope_size;
17214            }
17215
17216            let next_out_of_line = decoder.next_out_of_line();
17217            let handles_before = decoder.remaining_handles();
17218            if let Some((inlined, num_bytes, num_handles)) =
17219                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17220            {
17221                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17222                if inlined != (member_inline_size <= 4) {
17223                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17224                }
17225                let inner_offset;
17226                let mut inner_depth = depth.clone();
17227                if inlined {
17228                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17229                    inner_offset = next_offset;
17230                } else {
17231                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17232                    inner_depth.increment()?;
17233                }
17234                let val_ref = self.memory.get_or_insert_with(|| {
17235                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
17236                });
17237                fidl::decode!(
17238                    fidl::encoding::UnboundedVector<u8>,
17239                    D,
17240                    val_ref,
17241                    decoder,
17242                    inner_offset,
17243                    inner_depth
17244                )?;
17245                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17246                {
17247                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17248                }
17249                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17250                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17251                }
17252            }
17253
17254            next_offset += envelope_size;
17255
17256            // Decode the remaining unknown envelopes.
17257            while next_offset < end_offset {
17258                _next_ordinal_to_read += 1;
17259                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17260                next_offset += envelope_size;
17261            }
17262
17263            Ok(())
17264        }
17265    }
17266
17267    impl WlanFullmacOwePublicKey {
17268        #[inline(always)]
17269        fn max_ordinal_present(&self) -> u64 {
17270            if let Some(_) = self.key {
17271                return 2;
17272            }
17273            if let Some(_) = self.group {
17274                return 1;
17275            }
17276            0
17277        }
17278    }
17279
17280    impl fidl::encoding::ValueTypeMarker for WlanFullmacOwePublicKey {
17281        type Borrowed<'a> = &'a Self;
17282        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
17283            value
17284        }
17285    }
17286
17287    unsafe impl fidl::encoding::TypeMarker for WlanFullmacOwePublicKey {
17288        type Owned = Self;
17289
17290        #[inline(always)]
17291        fn inline_align(_context: fidl::encoding::Context) -> usize {
17292            8
17293        }
17294
17295        #[inline(always)]
17296        fn inline_size(_context: fidl::encoding::Context) -> usize {
17297            16
17298        }
17299    }
17300
17301    unsafe impl<D: fidl::encoding::ResourceDialect>
17302        fidl::encoding::Encode<WlanFullmacOwePublicKey, D> for &WlanFullmacOwePublicKey
17303    {
17304        unsafe fn encode(
17305            self,
17306            encoder: &mut fidl::encoding::Encoder<'_, D>,
17307            offset: usize,
17308            mut depth: fidl::encoding::Depth,
17309        ) -> fidl::Result<()> {
17310            encoder.debug_check_bounds::<WlanFullmacOwePublicKey>(offset);
17311            // Vector header
17312            let max_ordinal: u64 = self.max_ordinal_present();
17313            encoder.write_num(max_ordinal, offset);
17314            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
17315            // Calling encoder.out_of_line_offset(0) is not allowed.
17316            if max_ordinal == 0 {
17317                return Ok(());
17318            }
17319            depth.increment()?;
17320            let envelope_size = 8;
17321            let bytes_len = max_ordinal as usize * envelope_size;
17322            #[allow(unused_variables)]
17323            let offset = encoder.out_of_line_offset(bytes_len);
17324            let mut _prev_end_offset: usize = 0;
17325            if 1 > max_ordinal {
17326                return Ok(());
17327            }
17328
17329            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
17330            // are envelope_size bytes.
17331            let cur_offset: usize = (1 - 1) * envelope_size;
17332
17333            // Zero reserved fields.
17334            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17335
17336            // Safety:
17337            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
17338            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
17339            //   envelope_size bytes, there is always sufficient room.
17340            fidl::encoding::encode_in_envelope_optional::<u16, D>(
17341                self.group.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
17342                encoder,
17343                offset + cur_offset,
17344                depth,
17345            )?;
17346
17347            _prev_end_offset = cur_offset + envelope_size;
17348            if 2 > max_ordinal {
17349                return Ok(());
17350            }
17351
17352            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
17353            // are envelope_size bytes.
17354            let cur_offset: usize = (2 - 1) * envelope_size;
17355
17356            // Zero reserved fields.
17357            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17358
17359            // Safety:
17360            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
17361            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
17362            //   envelope_size bytes, there is always sufficient room.
17363            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
17364            self.key.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
17365            encoder, offset + cur_offset, depth
17366        )?;
17367
17368            _prev_end_offset = cur_offset + envelope_size;
17369
17370            Ok(())
17371        }
17372    }
17373
17374    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
17375        for WlanFullmacOwePublicKey
17376    {
17377        #[inline(always)]
17378        fn new_empty() -> Self {
17379            Self::default()
17380        }
17381
17382        unsafe fn decode(
17383            &mut self,
17384            decoder: &mut fidl::encoding::Decoder<'_, D>,
17385            offset: usize,
17386            mut depth: fidl::encoding::Depth,
17387        ) -> fidl::Result<()> {
17388            decoder.debug_check_bounds::<Self>(offset);
17389            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
17390                None => return Err(fidl::Error::NotNullable),
17391                Some(len) => len,
17392            };
17393            // Calling decoder.out_of_line_offset(0) is not allowed.
17394            if len == 0 {
17395                return Ok(());
17396            };
17397            depth.increment()?;
17398            let envelope_size = 8;
17399            let bytes_len = len * envelope_size;
17400            let offset = decoder.out_of_line_offset(bytes_len)?;
17401            // Decode the envelope for each type.
17402            let mut _next_ordinal_to_read = 0;
17403            let mut next_offset = offset;
17404            let end_offset = offset + bytes_len;
17405            _next_ordinal_to_read += 1;
17406            if next_offset >= end_offset {
17407                return Ok(());
17408            }
17409
17410            // Decode unknown envelopes for gaps in ordinals.
17411            while _next_ordinal_to_read < 1 {
17412                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17413                _next_ordinal_to_read += 1;
17414                next_offset += envelope_size;
17415            }
17416
17417            let next_out_of_line = decoder.next_out_of_line();
17418            let handles_before = decoder.remaining_handles();
17419            if let Some((inlined, num_bytes, num_handles)) =
17420                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17421            {
17422                let member_inline_size =
17423                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17424                if inlined != (member_inline_size <= 4) {
17425                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17426                }
17427                let inner_offset;
17428                let mut inner_depth = depth.clone();
17429                if inlined {
17430                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17431                    inner_offset = next_offset;
17432                } else {
17433                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17434                    inner_depth.increment()?;
17435                }
17436                let val_ref = self.group.get_or_insert_with(|| fidl::new_empty!(u16, D));
17437                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
17438                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17439                {
17440                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17441                }
17442                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17443                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17444                }
17445            }
17446
17447            next_offset += envelope_size;
17448            _next_ordinal_to_read += 1;
17449            if next_offset >= end_offset {
17450                return Ok(());
17451            }
17452
17453            // Decode unknown envelopes for gaps in ordinals.
17454            while _next_ordinal_to_read < 2 {
17455                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17456                _next_ordinal_to_read += 1;
17457                next_offset += envelope_size;
17458            }
17459
17460            let next_out_of_line = decoder.next_out_of_line();
17461            let handles_before = decoder.remaining_handles();
17462            if let Some((inlined, num_bytes, num_handles)) =
17463                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17464            {
17465                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17466                if inlined != (member_inline_size <= 4) {
17467                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17468                }
17469                let inner_offset;
17470                let mut inner_depth = depth.clone();
17471                if inlined {
17472                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17473                    inner_offset = next_offset;
17474                } else {
17475                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17476                    inner_depth.increment()?;
17477                }
17478                let val_ref = self.key.get_or_insert_with(|| {
17479                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
17480                });
17481                fidl::decode!(
17482                    fidl::encoding::UnboundedVector<u8>,
17483                    D,
17484                    val_ref,
17485                    decoder,
17486                    inner_offset,
17487                    inner_depth
17488                )?;
17489                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17490                {
17491                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17492                }
17493                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17494                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17495                }
17496            }
17497
17498            next_offset += envelope_size;
17499
17500            // Decode the remaining unknown envelopes.
17501            while next_offset < end_offset {
17502                _next_ordinal_to_read += 1;
17503                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17504                next_offset += envelope_size;
17505            }
17506
17507            Ok(())
17508        }
17509    }
17510}