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}
672
673impl fidl::Persistable for WlanFullmacSignalReportIndication {}
674
675/// Describes parameters and capabilities for a single WlanBand.
676#[derive(Clone, Debug, Default, PartialEq)]
677pub struct BandCapability {
678    /// The values of this table apply to the band indicated in this field.
679    ///
680    /// Required.
681    pub band: Option<fidl_fuchsia_wlan_ieee80211_common::WlanBand>,
682    /// Basic rates supported in units of 500 kbit/s (as defined in
683    /// IEEE Std 802.11-2016, 9.4.2.3), e.g., 0x02 represents 1 Mbps.
684    /// The value returned by this type indicates all the non-HT rates
685    /// the device supports transmitting and receiving.
686    ///
687    /// Required.
688    pub basic_rates: Option<Vec<u8>>,
689    /// HT PHY mode capabilities.
690    ///
691    /// Optional. If this field is not present, then the device does not support HT PHY mode in this
692    /// band.
693    pub ht_caps: Option<fidl_fuchsia_wlan_ieee80211_common::HtCapabilities>,
694    /// VHT PHY mode capabilities.
695    ///
696    /// Optional. If this field is not present, then the device does not support VHT PHY mode in
697    /// this band.
698    pub vht_caps: Option<fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities>,
699    /// A list of primary channels considered valid by hardware, in the context of
700    /// regulatory information known to the device driver, at the time of its
701    /// construction during iface creation. In this context, a primary channel
702    /// means a channel which APs may transmit Beacon frames on in the current
703    /// regulatory domain.
704    ///
705    /// This list should be used to determine efficacy of subsequent requests to
706    /// scan a subset of channels using the iface, or to determine which primary
707    /// channel to use when starting an AP.
708    ///
709    /// Required.
710    pub primary_channels: Option<Vec<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber>>,
711    #[doc(hidden)]
712    pub __source_breaking: fidl::marker::SourceBreaking,
713}
714
715impl fidl::Persistable for BandCapability {}
716
717/// Contains the information of SAE authentication frames. Shared between transmit and receive
718/// directions, see WlanFullmacImplIfc::SaeFrameRx and WlanFullmacImpl::SaeFrameTx.
719#[derive(Clone, Debug, Default, PartialEq)]
720pub struct SaeFrame {
721    /// The peer's MAC address. Required.
722    pub peer_sta_address: Option<[u8; 6]>,
723    /// The status code for this SAE frame. Required.
724    pub status_code: Option<fidl_fuchsia_wlan_ieee80211_common::StatusCode>,
725    /// The sequence number. Required.
726    pub seq_num: Option<u16>,
727    /// Contains fields in the frame body relevant to SAE.
728    /// See IEEE Std 802.11-2016 table 9-35 and table 9-36 for more details.
729    /// Required.
730    pub sae_fields: Option<Vec<u8>>,
731    #[doc(hidden)]
732    pub __source_breaking: fidl::marker::SourceBreaking,
733}
734
735impl fidl::Persistable for SaeFrame {}
736
737#[derive(Clone, Debug, Default, PartialEq)]
738pub struct WlanFullmacImplAssocRespRequest {
739    pub peer_sta_address: Option<[u8; 6]>,
740    pub result_code: Option<WlanAssocResult>,
741    pub association_id: Option<u16>,
742    #[doc(hidden)]
743    pub __source_breaking: fidl::marker::SourceBreaking,
744}
745
746impl fidl::Persistable for WlanFullmacImplAssocRespRequest {}
747
748#[derive(Clone, Debug, Default, PartialEq)]
749pub struct WlanFullmacImplAuthRespRequest {
750    pub peer_sta_address: Option<[u8; 6]>,
751    pub result_code: Option<WlanAuthResult>,
752    #[doc(hidden)]
753    pub __source_breaking: fidl::marker::SourceBreaking,
754}
755
756impl fidl::Persistable for WlanFullmacImplAuthRespRequest {}
757
758#[derive(Clone, Debug, Default, PartialEq)]
759pub struct WlanFullmacImplConnectRequest {
760    pub selected_bss: Option<fidl_fuchsia_wlan_ieee80211_common::BssDescription>,
761    /// Timeout specified in beacon interval.
762    pub connect_failure_timeout: Option<u32>,
763    /// Additional parameters specific to the authentication exchange.
764    pub auth_type: Option<WlanAuthType>,
765    /// sae_password is ignored except when SAE_DRIVER_AUTH is enabled and the
766    /// auth_type is SAE.
767    pub sae_password: Option<Vec<u8>>,
768    /// WEP key used in the authentication exchange.
769    /// This is only populated for the WEP security type, otherwise this field is empty.
770    pub wep_key: Option<fidl_fuchsia_wlan_driver_common::WlanKeyConfig>,
771    /// Additional parameters specific to the association exchange.
772    pub security_ie: Option<Vec<u8>>,
773    /// WEP key used in the authentication exchange.
774    /// This is only populated for the WEP security type, otherwise this field is empty.
775    pub wep_key_desc: Option<fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor>,
776    /// OWE public key used for Diffie Hellman exchange during association.
777    /// This is only populated for the OWE security type, otherwise this field is empty.
778    pub owe_public_key: Option<WlanFullmacOwePublicKey>,
779    #[doc(hidden)]
780    pub __source_breaking: fidl::marker::SourceBreaking,
781}
782
783impl fidl::Persistable for WlanFullmacImplConnectRequest {}
784
785#[derive(Clone, Debug, Default, PartialEq)]
786pub struct WlanFullmacImplDeauthRequest {
787    pub peer_sta_address: Option<[u8; 6]>,
788    pub reason_code: Option<fidl_fuchsia_wlan_ieee80211_common::ReasonCode>,
789    #[doc(hidden)]
790    pub __source_breaking: fidl::marker::SourceBreaking,
791}
792
793impl fidl::Persistable for WlanFullmacImplDeauthRequest {}
794
795#[derive(Clone, Debug, Default, PartialEq)]
796pub struct WlanFullmacImplDisassocRequest {
797    pub peer_sta_address: Option<[u8; 6]>,
798    pub reason_code: Option<fidl_fuchsia_wlan_ieee80211_common::ReasonCode>,
799    #[doc(hidden)]
800    pub __source_breaking: fidl::marker::SourceBreaking,
801}
802
803impl fidl::Persistable for WlanFullmacImplDisassocRequest {}
804
805#[derive(Clone, Debug, Default, PartialEq)]
806pub struct WlanFullmacImplEapolTxRequest {
807    pub src_addr: Option<[u8; 6]>,
808    pub dst_addr: Option<[u8; 6]>,
809    pub data: Option<Vec<u8>>,
810    #[doc(hidden)]
811    pub __source_breaking: fidl::marker::SourceBreaking,
812}
813
814impl fidl::Persistable for WlanFullmacImplEapolTxRequest {}
815
816#[derive(Clone, Debug, Default, PartialEq)]
817pub struct WlanFullmacImplIfcAssocIndRequest {
818    pub peer_sta_address: Option<[u8; 6]>,
819    pub listen_interval: Option<u16>,
820    pub ssid: Option<Vec<u8>>,
821    pub rsne: Option<Vec<u8>>,
822    pub vendor_ie: Option<Vec<u8>>,
823    #[doc(hidden)]
824    pub __source_breaking: fidl::marker::SourceBreaking,
825}
826
827impl fidl::Persistable for WlanFullmacImplIfcAssocIndRequest {}
828
829#[derive(Clone, Debug, Default, PartialEq)]
830pub struct WlanFullmacImplIfcAuthIndRequest {
831    pub peer_sta_address: Option<[u8; 6]>,
832    pub auth_type: Option<WlanAuthType>,
833    #[doc(hidden)]
834    pub __source_breaking: fidl::marker::SourceBreaking,
835}
836
837impl fidl::Persistable for WlanFullmacImplIfcAuthIndRequest {}
838
839#[derive(Clone, Debug, Default, PartialEq)]
840pub struct WlanFullmacImplIfcConnectConfRequest {
841    pub peer_sta_address: Option<[u8; 6]>,
842    pub result_code: Option<fidl_fuchsia_wlan_ieee80211_common::StatusCode>,
843    pub association_id: Option<u16>,
844    pub association_ies: Option<Vec<u8>>,
845    #[doc(hidden)]
846    pub __source_breaking: fidl::marker::SourceBreaking,
847}
848
849impl fidl::Persistable for WlanFullmacImplIfcConnectConfRequest {}
850
851#[derive(Clone, Debug, Default, PartialEq)]
852pub struct WlanFullmacImplIfcDeauthConfRequest {
853    pub peer_sta_address: Option<[u8; 6]>,
854    #[doc(hidden)]
855    pub __source_breaking: fidl::marker::SourceBreaking,
856}
857
858impl fidl::Persistable for WlanFullmacImplIfcDeauthConfRequest {}
859
860#[derive(Clone, Debug, Default, PartialEq)]
861pub struct WlanFullmacImplIfcDeauthIndRequest {
862    /// MAC address of the peer. Required.
863    pub peer_sta_address: Option<[u8; 6]>,
864    /// Reason code for deauthentication. Required.
865    pub reason_code: Option<fidl_fuchsia_wlan_ieee80211_common::ReasonCode>,
866    /// locally_initiated is true if deauth is initiated from the device,
867    /// and is false if it's initiated remotely (e.g. due to deauth frame)
868    pub locally_initiated: Option<bool>,
869    #[doc(hidden)]
870    pub __source_breaking: fidl::marker::SourceBreaking,
871}
872
873impl fidl::Persistable for WlanFullmacImplIfcDeauthIndRequest {}
874
875#[derive(Clone, Debug, Default, PartialEq)]
876pub struct WlanFullmacImplIfcDisassocConfRequest {
877    /// ZX_OK indicates that the disassociate request was serviced and the peer was
878    /// disassociated. Other errors indicate that the request could not be serviced, for these
879    /// or other reasons:
880    ///   - ZX_ERR_BAD_STATE: association not possible in current state (e.g. disconnected)
881    ///   - ZX_ERR_INVALID_ARGS: no association exists with specified peer
882    ///   - ZX_ERR_SHOULD_WAIT: disassociate request could not be serviced because firmware or
883    ///     driver was busy
884    pub status: Option<i32>,
885    #[doc(hidden)]
886    pub __source_breaking: fidl::marker::SourceBreaking,
887}
888
889impl fidl::Persistable for WlanFullmacImplIfcDisassocConfRequest {}
890
891#[derive(Clone, Debug, Default, PartialEq)]
892pub struct WlanFullmacImplIfcDisassocIndRequest {
893    /// Address of the peer that was disassociated. Required.
894    pub peer_sta_address: Option<[u8; 6]>,
895    /// Reason for the disassociation. Required.
896    pub reason_code: Option<fidl_fuchsia_wlan_ieee80211_common::ReasonCode>,
897    /// Whether the disassociation was initiated from the device. Required.
898    /// locally_initiated is true if disassociation was initiated from the device (e.g. firmware
899    /// or vendor driver started the disassociation); false if the disassociation was initiated
900    /// externally (e.g. due to receipt of a disassociate frame from an AP).
901    pub locally_initiated: Option<bool>,
902    #[doc(hidden)]
903    pub __source_breaking: fidl::marker::SourceBreaking,
904}
905
906impl fidl::Persistable for WlanFullmacImplIfcDisassocIndRequest {}
907
908#[derive(Clone, Debug, Default, PartialEq)]
909pub struct WlanFullmacImplIfcEapolConfRequest {
910    /// The result of the transmission. Required.
911    pub result_code: Option<EapolTxResult>,
912    /// This value corresponds to the dst_addr in the EapolTxRequest we're confirming.
913    /// IEEE 802.11-2020 does not include this field, but we need it to disambiguate
914    /// if multiple EAPoL handshakes are ongoing.
915    /// Required.
916    pub dst_addr: Option<[u8; 6]>,
917    #[doc(hidden)]
918    pub __source_breaking: fidl::marker::SourceBreaking,
919}
920
921impl fidl::Persistable for WlanFullmacImplIfcEapolConfRequest {}
922
923#[derive(Clone, Debug, Default, PartialEq)]
924pub struct WlanFullmacImplIfcEapolIndRequest {
925    /// The address of the sender. Required.
926    pub src_addr: Option<[u8; 6]>,
927    /// The address of the intended destination. Required.
928    pub dst_addr: Option<[u8; 6]>,
929    /// The bytes of the EAPoL frame data. Required.
930    pub data: Option<Vec<u8>>,
931    #[doc(hidden)]
932    pub __source_breaking: fidl::marker::SourceBreaking,
933}
934
935impl fidl::Persistable for WlanFullmacImplIfcEapolIndRequest {}
936
937#[derive(Clone, Debug, Default, PartialEq)]
938pub struct WlanFullmacImplIfcOnPmkAvailableRequest {
939    /// The pairwise master key bytes. Required.
940    pub pmk: Option<Vec<u8>>,
941    /// The PMK IDs. Required.
942    pub pmkid: Option<Vec<u8>>,
943    #[doc(hidden)]
944    pub __source_breaking: fidl::marker::SourceBreaking,
945}
946
947impl fidl::Persistable for WlanFullmacImplIfcOnPmkAvailableRequest {}
948
949#[derive(Clone, Debug, Default, PartialEq)]
950pub struct WlanFullmacImplIfcOnScanEndRequest {
951    pub txn_id: Option<u64>,
952    pub code: Option<WlanScanResult>,
953    #[doc(hidden)]
954    pub __source_breaking: fidl::marker::SourceBreaking,
955}
956
957impl fidl::Persistable for WlanFullmacImplIfcOnScanEndRequest {}
958
959#[derive(Clone, Debug, Default, PartialEq)]
960pub struct WlanFullmacImplIfcOnScanResultRequest {
961    pub txn_id: Option<u64>,
962    pub timestamp_nanos: Option<i64>,
963    pub bss: Option<fidl_fuchsia_wlan_ieee80211_common::BssDescription>,
964    #[doc(hidden)]
965    pub __source_breaking: fidl::marker::SourceBreaking,
966}
967
968impl fidl::Persistable for WlanFullmacImplIfcOnScanResultRequest {}
969
970#[derive(Clone, Debug, Default, PartialEq)]
971pub struct WlanFullmacImplIfcOnScheduledScanMatchesAvailableRequest {
972    pub txn_id: Option<u64>,
973    #[doc(hidden)]
974    pub __source_breaking: fidl::marker::SourceBreaking,
975}
976
977impl fidl::Persistable for WlanFullmacImplIfcOnScheduledScanMatchesAvailableRequest {}
978
979#[derive(Clone, Debug, Default, PartialEq)]
980pub struct WlanFullmacImplIfcOnScheduledScanStoppedByFirmwareRequest {
981    pub txn_id: Option<u64>,
982    #[doc(hidden)]
983    pub __source_breaking: fidl::marker::SourceBreaking,
984}
985
986impl fidl::Persistable for WlanFullmacImplIfcOnScheduledScanStoppedByFirmwareRequest {}
987
988#[derive(Clone, Debug, Default, PartialEq)]
989pub struct WlanFullmacImplIfcRoamConfRequest {
990    /// BSSID of the target BSS. Required.
991    pub selected_bssid: Option<[u8; 6]>,
992    /// Result of the roam attempt. Required.
993    pub status_code: Option<fidl_fuchsia_wlan_ieee80211_common::StatusCode>,
994    /// Whether the original BSS association has been maintained through the roam attempt. Required.
995    /// A successful roam always incurs disassociation from the original BSS, so if `status_code` is
996    /// success then this field must be set to false; a roam failure typically incurs disassociation
997    /// from the original BSS, but may not in some cases (e.g. in some Fast BSS Transition scenarios).
998    pub original_association_maintained: Option<bool>,
999    /// Whether the client is authenticated with the target BSS. If `status_code` is success, then
1000    /// this field must be set to true; if the roam attempt failed, this field may be true or false.
1001    /// This allows higher layers to decide how to clean up connection state after a failed roam
1002    /// attempt.
1003    pub target_bss_authenticated: Option<bool>,
1004    /// Association ID for this association with the AP. Required if `status_code` is success.
1005    pub association_id: Option<u16>,
1006    /// IEs for this association with the AP. Required if `status_code` is success.
1007    pub association_ies: Option<Vec<u8>>,
1008    #[doc(hidden)]
1009    pub __source_breaking: fidl::marker::SourceBreaking,
1010}
1011
1012impl fidl::Persistable for WlanFullmacImplIfcRoamConfRequest {}
1013
1014#[derive(Clone, Debug, Default, PartialEq)]
1015pub struct WlanFullmacImplIfcRoamResultIndRequest {
1016    /// BSSID of the target BSS. Required.
1017    pub selected_bssid: Option<[u8; 6]>,
1018    /// Result of the roam attempt. Required.
1019    pub status_code: Option<fidl_fuchsia_wlan_ieee80211_common::StatusCode>,
1020    /// Whether the original BSS association has been maintained through the roam attempt. Required.
1021    /// A successful roam always incurs disassociation from the original BSS, so if `status_code` is
1022    /// success then this field must be set to false; a roam failure typically incurs disassociation
1023    /// from the original BSS, but may not in some cases (e.g. in some Fast BSS Transition scenarios).
1024    pub original_association_maintained: Option<bool>,
1025    /// Whether the client is authenticated with the target BSS. If `status_code` is success, then
1026    /// this field must be set to true; if the roam attempt failed, this field may be true or false.
1027    /// This allows higher layers to decide how to clean up connection state after a failed roam
1028    /// attempt.
1029    pub target_bss_authenticated: Option<bool>,
1030    /// Association ID for this association with the AP. Required if `status_code` is success.
1031    pub association_id: Option<u16>,
1032    /// IEs for this association with the AP. Required if `status_code` is success.
1033    pub association_ies: Option<Vec<u8>>,
1034    #[doc(hidden)]
1035    pub __source_breaking: fidl::marker::SourceBreaking,
1036}
1037
1038impl fidl::Persistable for WlanFullmacImplIfcRoamResultIndRequest {}
1039
1040#[derive(Clone, Debug, Default, PartialEq)]
1041pub struct WlanFullmacImplIfcRoamStartIndRequest {
1042    /// BSSID of the target BSS. Required.
1043    pub selected_bssid: Option<[u8; 6]>,
1044    /// Full BSS description of the target BSS. Required.
1045    /// If the data in BssDescription is incorrect or incomplete, the roam cannot succeed,
1046    /// because higher layers will not be able to complete required actions (e.g. SAE).
1047    pub selected_bss: Option<fidl_fuchsia_wlan_ieee80211_common::BssDescription>,
1048    /// Whether the original BSS association has been maintained at the start of a roam attempt.
1049    /// Required. 802.11 dictates that a STA can only be associated with a single BSS, so a roam
1050    /// attempt typically incurs disassociation at the start of the roam attempt. However,
1051    /// 802.11 also provides a mechanism (i.e. Fast BSS Transition) that allows a device to
1052    /// maintain association with the original BSS while establishing authentication with the
1053    /// target BSS, in order to avoid losing the original association if authentication with the
1054    /// target BSS fails.
1055    pub original_association_maintained: Option<bool>,
1056    #[doc(hidden)]
1057    pub __source_breaking: fidl::marker::SourceBreaking,
1058}
1059
1060impl fidl::Persistable for WlanFullmacImplIfcRoamStartIndRequest {}
1061
1062#[derive(Clone, Debug, Default, PartialEq)]
1063pub struct WlanFullmacImplIfcSaeHandshakeIndRequest {
1064    pub peer_sta_address: Option<[u8; 6]>,
1065    #[doc(hidden)]
1066    pub __source_breaking: fidl::marker::SourceBreaking,
1067}
1068
1069impl fidl::Persistable for WlanFullmacImplIfcSaeHandshakeIndRequest {}
1070
1071#[derive(Clone, Debug, Default, PartialEq)]
1072pub struct WlanFullmacImplIfcStartConfRequest {
1073    /// The result of the StartBss request. Required.
1074    pub result_code: Option<StartResult>,
1075    #[doc(hidden)]
1076    pub __source_breaking: fidl::marker::SourceBreaking,
1077}
1078
1079impl fidl::Persistable for WlanFullmacImplIfcStartConfRequest {}
1080
1081#[derive(Clone, Debug, Default, PartialEq)]
1082pub struct WlanFullmacImplIfcStopConfRequest {
1083    /// The result of the StopBss request. Required.
1084    pub result_code: Option<StopResult>,
1085    #[doc(hidden)]
1086    pub __source_breaking: fidl::marker::SourceBreaking,
1087}
1088
1089impl fidl::Persistable for WlanFullmacImplIfcStopConfRequest {}
1090
1091#[derive(Clone, Debug, Default, PartialEq)]
1092pub struct WlanFullmacImplInstallApfPacketFilterRequest {
1093    pub program: Option<Vec<u8>>,
1094    #[doc(hidden)]
1095    pub __source_breaking: fidl::marker::SourceBreaking,
1096}
1097
1098impl fidl::Persistable for WlanFullmacImplInstallApfPacketFilterRequest {}
1099
1100#[derive(Clone, Debug, Default, PartialEq)]
1101pub struct WlanFullmacImplOnLinkStateChangedRequest {
1102    pub online: Option<bool>,
1103    #[doc(hidden)]
1104    pub __source_breaking: fidl::marker::SourceBreaking,
1105}
1106
1107impl fidl::Persistable for WlanFullmacImplOnLinkStateChangedRequest {}
1108
1109#[derive(Clone, Debug, Default, PartialEq)]
1110pub struct WlanFullmacImplReconnectRequest {
1111    pub peer_sta_address: Option<[u8; 6]>,
1112    #[doc(hidden)]
1113    pub __source_breaking: fidl::marker::SourceBreaking,
1114}
1115
1116impl fidl::Persistable for WlanFullmacImplReconnectRequest {}
1117
1118#[derive(Clone, Debug, Default, PartialEq)]
1119pub struct WlanFullmacImplRoamRequest {
1120    /// Full BSS description of the target BSS. Required.
1121    /// If the data in BssDescription is incorrect or incomplete, the roam cannot succeed,
1122    /// because higher layers will not be able to complete required actions (e.g. SAE).
1123    pub selected_bss: Option<fidl_fuchsia_wlan_ieee80211_common::BssDescription>,
1124    #[doc(hidden)]
1125    pub __source_breaking: fidl::marker::SourceBreaking,
1126}
1127
1128impl fidl::Persistable for WlanFullmacImplRoamRequest {}
1129
1130#[derive(Clone, Debug, Default, PartialEq)]
1131pub struct WlanFullmacImplSaeHandshakeRespRequest {
1132    /// The peer's MAC address. Required.
1133    pub peer_sta_address: Option<[u8; 6]>,
1134    /// The status of the SAE handshake. Required.
1135    pub status_code: Option<fidl_fuchsia_wlan_ieee80211_common::StatusCode>,
1136    #[doc(hidden)]
1137    pub __source_breaking: fidl::marker::SourceBreaking,
1138}
1139
1140impl fidl::Persistable for WlanFullmacImplSaeHandshakeRespRequest {}
1141
1142#[derive(Clone, Debug, Default, PartialEq)]
1143pub struct WlanFullmacImplSetApfPacketFilterEnabledRequest {
1144    pub enabled: Option<bool>,
1145    #[doc(hidden)]
1146    pub __source_breaking: fidl::marker::SourceBreaking,
1147}
1148
1149impl fidl::Persistable for WlanFullmacImplSetApfPacketFilterEnabledRequest {}
1150
1151#[derive(Clone, Debug, Default, PartialEq)]
1152pub struct WlanFullmacImplSetKeysRequest {
1153    pub keylist: Option<Vec<fidl_fuchsia_wlan_driver_common::WlanKeyConfig>>,
1154    pub key_descriptors: Option<Vec<fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor>>,
1155    #[doc(hidden)]
1156    pub __source_breaking: fidl::marker::SourceBreaking,
1157}
1158
1159impl fidl::Persistable for WlanFullmacImplSetKeysRequest {}
1160
1161#[derive(Clone, Debug, Default, PartialEq)]
1162pub struct WlanFullmacImplStartBssRequest {
1163    pub ssid: Option<Vec<u8>>,
1164    pub bss_type: Option<fidl_fuchsia_wlan_ieee80211_common::BssType>,
1165    pub beacon_period: Option<u32>,
1166    pub dtim_period: Option<u32>,
1167    pub primary: Option<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber>,
1168    pub rsne: Option<Vec<u8>>,
1169    pub vendor_ie: Option<Vec<u8>>,
1170    #[doc(hidden)]
1171    pub __source_breaking: fidl::marker::SourceBreaking,
1172}
1173
1174impl fidl::Persistable for WlanFullmacImplStartBssRequest {}
1175
1176#[derive(Clone, Debug, Default, PartialEq)]
1177pub struct WlanFullmacImplStartScanRequest {
1178    /// Unique transaction id (will be indicated in corresponding scan results).
1179    pub txn_id: Option<u64>,
1180    pub scan_type: Option<WlanScanType>,
1181    /// List of channels to scan on. An empty list of channels will cause a
1182    /// scan request to immediately return a OnScanEnd with code INVALID_ARGS.
1183    ///
1184    /// Invalid channel numbers will be silently ignored. The validity of a channel
1185    /// number depends on the current regulatory region, and a FullMAC driver cannot
1186    /// always determine the region setting. This is especially the case when
1187    /// firmware changes the region setting dynamically.
1188    pub channels: Option<Vec<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber>>,
1189    /// List of SSIDs to scan for. An empty list of ssids is the same as specifying
1190    /// a list containing only the wildcard SSID.
1191    ///
1192    /// There is no limit on the number of SSIDs specified. A large number of
1193    /// SSIDs may result in extended scan times because of hardware limitations on
1194    /// the number of SSIDs permitted per scan request and the technical limitation
1195    /// in IEEE 802.11-2016 that limits the number of SSIDs in a single Probe Request
1196    /// frame to ieee80211.SSID_LIST_MAX SSIDs.
1197    pub ssids: Option<Vec<Vec<u8>>>,
1198    /// Minimum amount of time in msecs spent on a channel during scan.
1199    pub min_channel_time: Option<u32>,
1200    /// Maximum amount of time in msecs spent on a channel during scan.
1201    pub max_channel_time: Option<u32>,
1202    #[doc(hidden)]
1203    pub __source_breaking: fidl::marker::SourceBreaking,
1204}
1205
1206impl fidl::Persistable for WlanFullmacImplStartScanRequest {}
1207
1208#[derive(Clone, Debug, Default, PartialEq)]
1209pub struct WlanFullmacImplStartScheduledScanRequest {
1210    pub txn_id: Option<u64>,
1211    pub req: Option<fidl_fuchsia_wlan_common_common::ScheduledScanRequest>,
1212    #[doc(hidden)]
1213    pub __source_breaking: fidl::marker::SourceBreaking,
1214}
1215
1216impl fidl::Persistable for WlanFullmacImplStartScheduledScanRequest {}
1217
1218#[derive(Clone, Debug, Default, PartialEq)]
1219pub struct WlanFullmacImplStopBssRequest {
1220    pub ssid: Option<Vec<u8>>,
1221    #[doc(hidden)]
1222    pub __source_breaking: fidl::marker::SourceBreaking,
1223}
1224
1225impl fidl::Persistable for WlanFullmacImplStopBssRequest {}
1226
1227#[derive(Clone, Debug, Default, PartialEq)]
1228pub struct WlanFullmacImplStopScheduledScanRequest {
1229    pub txn_id: Option<u64>,
1230    #[doc(hidden)]
1231    pub __source_breaking: fidl::marker::SourceBreaking,
1232}
1233
1234impl fidl::Persistable for WlanFullmacImplStopScheduledScanRequest {}
1235
1236#[derive(Clone, Debug, Default, PartialEq)]
1237pub struct WlanFullmacImplGetApfPacketFilterEnabledResponse {
1238    pub enabled: Option<bool>,
1239    #[doc(hidden)]
1240    pub __source_breaking: fidl::marker::SourceBreaking,
1241}
1242
1243impl fidl::Persistable for WlanFullmacImplGetApfPacketFilterEnabledResponse {}
1244
1245#[derive(Clone, Debug, Default, PartialEq)]
1246pub struct WlanFullmacImplGetScheduledScanEnabledResponse {
1247    pub active_txn_ids: Option<Vec<u64>>,
1248    #[doc(hidden)]
1249    pub __source_breaking: fidl::marker::SourceBreaking,
1250}
1251
1252impl fidl::Persistable for WlanFullmacImplGetScheduledScanEnabledResponse {}
1253
1254#[derive(Clone, Debug, Default, PartialEq)]
1255pub struct WlanFullmacImplQueryApfPacketFilterSupportResponse {
1256    pub resp: Option<fidl_fuchsia_wlan_common_common::ApfPacketFilterSupport>,
1257    #[doc(hidden)]
1258    pub __source_breaking: fidl::marker::SourceBreaking,
1259}
1260
1261impl fidl::Persistable for WlanFullmacImplQueryApfPacketFilterSupportResponse {}
1262
1263#[derive(Clone, Debug, Default, PartialEq)]
1264pub struct WlanFullmacImplQuerySecuritySupportResponse {
1265    pub resp: Option<fidl_fuchsia_wlan_common_common::SecuritySupport>,
1266    #[doc(hidden)]
1267    pub __source_breaking: fidl::marker::SourceBreaking,
1268}
1269
1270impl fidl::Persistable for WlanFullmacImplQuerySecuritySupportResponse {}
1271
1272#[derive(Clone, Debug, Default, PartialEq)]
1273pub struct WlanFullmacImplQuerySpectrumManagementSupportResponse {
1274    pub resp: Option<fidl_fuchsia_wlan_common_common::SpectrumManagementSupport>,
1275    #[doc(hidden)]
1276    pub __source_breaking: fidl::marker::SourceBreaking,
1277}
1278
1279impl fidl::Persistable for WlanFullmacImplQuerySpectrumManagementSupportResponse {}
1280
1281#[derive(Clone, Debug, Default, PartialEq)]
1282pub struct WlanFullmacImplQueryTelemetrySupportResponse {
1283    pub resp: Option<fidl_fuchsia_wlan_stats_common::TelemetrySupport>,
1284    #[doc(hidden)]
1285    pub __source_breaking: fidl::marker::SourceBreaking,
1286}
1287
1288impl fidl::Persistable for WlanFullmacImplQueryTelemetrySupportResponse {}
1289
1290#[derive(Clone, Debug, Default, PartialEq)]
1291pub struct WlanFullmacImplQueryResponse {
1292    /// Current station address. Required.
1293    pub sta_addr: Option<[u8; 6]>,
1294    /// MAC role. Required.
1295    pub role: Option<fidl_fuchsia_wlan_common_common::WlanMacRole>,
1296    /// Supported bands. Required.
1297    pub band_caps: Option<Vec<BandCapability>>,
1298    /// Factory mac address. Required.
1299    pub factory_addr: Option<[u8; 6]>,
1300    #[doc(hidden)]
1301    pub __source_breaking: fidl::marker::SourceBreaking,
1302}
1303
1304impl fidl::Persistable for WlanFullmacImplQueryResponse {}
1305
1306#[derive(Clone, Debug, Default, PartialEq)]
1307pub struct WlanFullmacImplReadApfPacketFilterDataResponse {
1308    pub memory: Option<Vec<u8>>,
1309    #[doc(hidden)]
1310    pub __source_breaking: fidl::marker::SourceBreaking,
1311}
1312
1313impl fidl::Persistable for WlanFullmacImplReadApfPacketFilterDataResponse {}
1314
1315#[derive(Clone, Debug, Default, PartialEq)]
1316pub struct WlanFullmacOwePublicKey {
1317    pub group: Option<u16>,
1318    pub key: Option<Vec<u8>>,
1319    #[doc(hidden)]
1320    pub __source_breaking: fidl::marker::SourceBreaking,
1321}
1322
1323impl fidl::Persistable for WlanFullmacOwePublicKey {}
1324
1325pub mod wlan_fullmac_impl__ordinals {
1326    pub const INIT: u64 = 0x593dfb6cb3f0f1aa;
1327    pub const QUERY: u64 = 0x28ac65f9da3941d4;
1328    pub const QUERY_SECURITY_SUPPORT: u64 = 0x11cf3fa6eeb93f84;
1329    pub const QUERY_SPECTRUM_MANAGEMENT_SUPPORT: u64 = 0x22ae7551d855b83a;
1330    pub const QUERY_TELEMETRY_SUPPORT: u64 = 0x4561479ca560827f;
1331    pub const QUERY_APF_PACKET_FILTER_SUPPORT: u64 = 0x6df8cdf0acd4dfad;
1332    pub const START_SCAN: u64 = 0x26c17bf595aa161c;
1333    pub const START_SCHEDULED_SCAN: u64 = 0x67bb4356265682d2;
1334    pub const STOP_SCHEDULED_SCAN: u64 = 0x71bf2a03f2cdc10f;
1335    pub const GET_SCHEDULED_SCAN_ENABLED: u64 = 0x96be6f11648f198;
1336    pub const CONNECT: u64 = 0x19eb0322efb07a76;
1337    pub const RECONNECT: u64 = 0x474084c4ef19ee71;
1338    pub const ROAM: u64 = 0x1e35dcc98b124b64;
1339    pub const AUTH_RESP: u64 = 0x5f7ea24b44a4aaeb;
1340    pub const DEAUTH: u64 = 0x112786eccbf12f37;
1341    pub const ASSOC_RESP: u64 = 0x5022ce6b8eefec2f;
1342    pub const DISASSOC: u64 = 0x9c0fc4e8de53e01;
1343    pub const START_BSS: u64 = 0x6922644d6b1d341d;
1344    pub const STOP_BSS: u64 = 0x5aeb9b72e7575268;
1345    pub const SET_KEYS: u64 = 0x20f46b1e039f0985;
1346    pub const EAPOL_TX: u64 = 0x529a2d90fd4c8177;
1347    pub const GET_IFACE_STATS: u64 = 0x505563776ef0392f;
1348    pub const GET_IFACE_HISTOGRAM_STATS: u64 = 0x503d586f30ccf2cd;
1349    pub const GET_SIGNAL_REPORT: u64 = 0x5d93f056e4796bb3;
1350    pub const SAE_HANDSHAKE_RESP: u64 = 0x72cd3a31ae5a54f6;
1351    pub const SAE_FRAME_TX: u64 = 0x4715ad5dc5a6340f;
1352    pub const WMM_STATUS_REQ: u64 = 0x635ecef3beb7a059;
1353    pub const ON_LINK_STATE_CHANGED: u64 = 0x4d896e5b68e488d7;
1354    pub const SET_MAC_ADDRESS: u64 = 0x211a97f6f21ae5f0;
1355    pub const INSTALL_APF_PACKET_FILTER: u64 = 0x14597eda84122115;
1356    pub const READ_APF_PACKET_FILTER_DATA: u64 = 0x6ddcf8a179553a3c;
1357    pub const SET_APF_PACKET_FILTER_ENABLED: u64 = 0x808792cade97d59;
1358    pub const GET_APF_PACKET_FILTER_ENABLED: u64 = 0x284e1725471e3ae7;
1359}
1360
1361pub mod wlan_fullmac_impl_ifc_ordinals {
1362    pub const ON_SCAN_RESULT: u64 = 0x29aa81dc570f7a3e;
1363    pub const ON_SCAN_END: u64 = 0x7cd8aff80d27073c;
1364    pub const ON_SCHEDULED_SCAN_MATCHES_AVAILABLE: u64 = 0x3036cd8b8b35e81b;
1365    pub const ON_SCHEDULED_SCAN_STOPPED_BY_FIRMWARE: u64 = 0x50353be2c3029817;
1366    pub const CONNECT_CONF: u64 = 0x3c22c6d80b2a2759;
1367    pub const ROAM_CONF: u64 = 0x368b2a5b903b3f7b;
1368    pub const ROAM_START_IND: u64 = 0x23e1d9368935e7e4;
1369    pub const ROAM_RESULT_IND: u64 = 0x7081c1b1ceea4914;
1370    pub const AUTH_IND: u64 = 0x270e1f8889650d0b;
1371    pub const DEAUTH_CONF: u64 = 0x2c94b0d7258111b7;
1372    pub const DEAUTH_IND: u64 = 0x26cd27cdadd8dbaf;
1373    pub const ASSOC_IND: u64 = 0x3e44529e3dc179ce;
1374    pub const DISASSOC_CONF: u64 = 0x7c713bcd58a76cb3;
1375    pub const DISASSOC_IND: u64 = 0x6667b381b7f3990f;
1376    pub const START_CONF: u64 = 0x3e9b9641f3ddc7fc;
1377    pub const STOP_CONF: u64 = 0x320a5ff227a4e9df;
1378    pub const EAPOL_CONF: u64 = 0x77364db9cc3970ec;
1379    pub const ON_CHANNEL_SWITCH: u64 = 0x21db0b8f71cae647;
1380    pub const SIGNAL_REPORT: u64 = 0x79679fa8789c3d9f;
1381    pub const EAPOL_IND: u64 = 0x3de8ec1eda10d1d0;
1382    pub const ON_PMK_AVAILABLE: u64 = 0x5cedd8d9be28a17e;
1383    pub const SAE_HANDSHAKE_IND: u64 = 0x4f3d53885503a1d8;
1384    pub const SAE_FRAME_RX: u64 = 0x51650906857ed4d4;
1385    pub const ON_WMM_STATUS_RESP: u64 = 0x6823a88bf3ba8b2a;
1386}
1387
1388mod internal {
1389    use super::*;
1390    unsafe impl fidl::encoding::TypeMarker for EapolTxResult {
1391        type Owned = Self;
1392
1393        #[inline(always)]
1394        fn inline_align(_context: fidl::encoding::Context) -> usize {
1395            std::mem::align_of::<u8>()
1396        }
1397
1398        #[inline(always)]
1399        fn inline_size(_context: fidl::encoding::Context) -> usize {
1400            std::mem::size_of::<u8>()
1401        }
1402
1403        #[inline(always)]
1404        fn encode_is_copy() -> bool {
1405            false
1406        }
1407
1408        #[inline(always)]
1409        fn decode_is_copy() -> bool {
1410            false
1411        }
1412    }
1413
1414    impl fidl::encoding::ValueTypeMarker for EapolTxResult {
1415        type Borrowed<'a> = Self;
1416        #[inline(always)]
1417        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1418            *value
1419        }
1420    }
1421
1422    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for EapolTxResult {
1423        #[inline]
1424        unsafe fn encode(
1425            self,
1426            encoder: &mut fidl::encoding::Encoder<'_, D>,
1427            offset: usize,
1428            _depth: fidl::encoding::Depth,
1429        ) -> fidl::Result<()> {
1430            encoder.debug_check_bounds::<Self>(offset);
1431            encoder.write_num(self.into_primitive(), offset);
1432            Ok(())
1433        }
1434    }
1435
1436    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EapolTxResult {
1437        #[inline(always)]
1438        fn new_empty() -> Self {
1439            Self::unknown()
1440        }
1441
1442        #[inline]
1443        unsafe fn decode(
1444            &mut self,
1445            decoder: &mut fidl::encoding::Decoder<'_, D>,
1446            offset: usize,
1447            _depth: fidl::encoding::Depth,
1448        ) -> fidl::Result<()> {
1449            decoder.debug_check_bounds::<Self>(offset);
1450            let prim = decoder.read_num::<u8>(offset);
1451
1452            *self = Self::from_primitive_allow_unknown(prim);
1453            Ok(())
1454        }
1455    }
1456    unsafe impl fidl::encoding::TypeMarker for StartResult {
1457        type Owned = Self;
1458
1459        #[inline(always)]
1460        fn inline_align(_context: fidl::encoding::Context) -> usize {
1461            std::mem::align_of::<u8>()
1462        }
1463
1464        #[inline(always)]
1465        fn inline_size(_context: fidl::encoding::Context) -> usize {
1466            std::mem::size_of::<u8>()
1467        }
1468
1469        #[inline(always)]
1470        fn encode_is_copy() -> bool {
1471            false
1472        }
1473
1474        #[inline(always)]
1475        fn decode_is_copy() -> bool {
1476            false
1477        }
1478    }
1479
1480    impl fidl::encoding::ValueTypeMarker for StartResult {
1481        type Borrowed<'a> = Self;
1482        #[inline(always)]
1483        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1484            *value
1485        }
1486    }
1487
1488    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for StartResult {
1489        #[inline]
1490        unsafe fn encode(
1491            self,
1492            encoder: &mut fidl::encoding::Encoder<'_, D>,
1493            offset: usize,
1494            _depth: fidl::encoding::Depth,
1495        ) -> fidl::Result<()> {
1496            encoder.debug_check_bounds::<Self>(offset);
1497            encoder.write_num(self.into_primitive(), offset);
1498            Ok(())
1499        }
1500    }
1501
1502    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StartResult {
1503        #[inline(always)]
1504        fn new_empty() -> Self {
1505            Self::unknown()
1506        }
1507
1508        #[inline]
1509        unsafe fn decode(
1510            &mut self,
1511            decoder: &mut fidl::encoding::Decoder<'_, D>,
1512            offset: usize,
1513            _depth: fidl::encoding::Depth,
1514        ) -> fidl::Result<()> {
1515            decoder.debug_check_bounds::<Self>(offset);
1516            let prim = decoder.read_num::<u8>(offset);
1517
1518            *self = Self::from_primitive_allow_unknown(prim);
1519            Ok(())
1520        }
1521    }
1522    unsafe impl fidl::encoding::TypeMarker for StopResult {
1523        type Owned = Self;
1524
1525        #[inline(always)]
1526        fn inline_align(_context: fidl::encoding::Context) -> usize {
1527            std::mem::align_of::<u8>()
1528        }
1529
1530        #[inline(always)]
1531        fn inline_size(_context: fidl::encoding::Context) -> usize {
1532            std::mem::size_of::<u8>()
1533        }
1534
1535        #[inline(always)]
1536        fn encode_is_copy() -> bool {
1537            false
1538        }
1539
1540        #[inline(always)]
1541        fn decode_is_copy() -> bool {
1542            false
1543        }
1544    }
1545
1546    impl fidl::encoding::ValueTypeMarker for StopResult {
1547        type Borrowed<'a> = Self;
1548        #[inline(always)]
1549        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1550            *value
1551        }
1552    }
1553
1554    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for StopResult {
1555        #[inline]
1556        unsafe fn encode(
1557            self,
1558            encoder: &mut fidl::encoding::Encoder<'_, D>,
1559            offset: usize,
1560            _depth: fidl::encoding::Depth,
1561        ) -> fidl::Result<()> {
1562            encoder.debug_check_bounds::<Self>(offset);
1563            encoder.write_num(self.into_primitive(), offset);
1564            Ok(())
1565        }
1566    }
1567
1568    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StopResult {
1569        #[inline(always)]
1570        fn new_empty() -> Self {
1571            Self::unknown()
1572        }
1573
1574        #[inline]
1575        unsafe fn decode(
1576            &mut self,
1577            decoder: &mut fidl::encoding::Decoder<'_, D>,
1578            offset: usize,
1579            _depth: fidl::encoding::Depth,
1580        ) -> fidl::Result<()> {
1581            decoder.debug_check_bounds::<Self>(offset);
1582            let prim = decoder.read_num::<u8>(offset);
1583
1584            *self = Self::from_primitive_allow_unknown(prim);
1585            Ok(())
1586        }
1587    }
1588    unsafe impl fidl::encoding::TypeMarker for WlanAssocResult {
1589        type Owned = Self;
1590
1591        #[inline(always)]
1592        fn inline_align(_context: fidl::encoding::Context) -> usize {
1593            std::mem::align_of::<u8>()
1594        }
1595
1596        #[inline(always)]
1597        fn inline_size(_context: fidl::encoding::Context) -> usize {
1598            std::mem::size_of::<u8>()
1599        }
1600
1601        #[inline(always)]
1602        fn encode_is_copy() -> bool {
1603            false
1604        }
1605
1606        #[inline(always)]
1607        fn decode_is_copy() -> bool {
1608            false
1609        }
1610    }
1611
1612    impl fidl::encoding::ValueTypeMarker for WlanAssocResult {
1613        type Borrowed<'a> = Self;
1614        #[inline(always)]
1615        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1616            *value
1617        }
1618    }
1619
1620    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1621        for WlanAssocResult
1622    {
1623        #[inline]
1624        unsafe fn encode(
1625            self,
1626            encoder: &mut fidl::encoding::Encoder<'_, D>,
1627            offset: usize,
1628            _depth: fidl::encoding::Depth,
1629        ) -> fidl::Result<()> {
1630            encoder.debug_check_bounds::<Self>(offset);
1631            encoder.write_num(self.into_primitive(), offset);
1632            Ok(())
1633        }
1634    }
1635
1636    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanAssocResult {
1637        #[inline(always)]
1638        fn new_empty() -> Self {
1639            Self::unknown()
1640        }
1641
1642        #[inline]
1643        unsafe fn decode(
1644            &mut self,
1645            decoder: &mut fidl::encoding::Decoder<'_, D>,
1646            offset: usize,
1647            _depth: fidl::encoding::Depth,
1648        ) -> fidl::Result<()> {
1649            decoder.debug_check_bounds::<Self>(offset);
1650            let prim = decoder.read_num::<u8>(offset);
1651
1652            *self = Self::from_primitive_allow_unknown(prim);
1653            Ok(())
1654        }
1655    }
1656    unsafe impl fidl::encoding::TypeMarker for WlanAuthResult {
1657        type Owned = Self;
1658
1659        #[inline(always)]
1660        fn inline_align(_context: fidl::encoding::Context) -> usize {
1661            std::mem::align_of::<u8>()
1662        }
1663
1664        #[inline(always)]
1665        fn inline_size(_context: fidl::encoding::Context) -> usize {
1666            std::mem::size_of::<u8>()
1667        }
1668
1669        #[inline(always)]
1670        fn encode_is_copy() -> bool {
1671            false
1672        }
1673
1674        #[inline(always)]
1675        fn decode_is_copy() -> bool {
1676            false
1677        }
1678    }
1679
1680    impl fidl::encoding::ValueTypeMarker for WlanAuthResult {
1681        type Borrowed<'a> = Self;
1682        #[inline(always)]
1683        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1684            *value
1685        }
1686    }
1687
1688    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanAuthResult {
1689        #[inline]
1690        unsafe fn encode(
1691            self,
1692            encoder: &mut fidl::encoding::Encoder<'_, D>,
1693            offset: usize,
1694            _depth: fidl::encoding::Depth,
1695        ) -> fidl::Result<()> {
1696            encoder.debug_check_bounds::<Self>(offset);
1697            encoder.write_num(self.into_primitive(), offset);
1698            Ok(())
1699        }
1700    }
1701
1702    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanAuthResult {
1703        #[inline(always)]
1704        fn new_empty() -> Self {
1705            Self::unknown()
1706        }
1707
1708        #[inline]
1709        unsafe fn decode(
1710            &mut self,
1711            decoder: &mut fidl::encoding::Decoder<'_, D>,
1712            offset: usize,
1713            _depth: fidl::encoding::Depth,
1714        ) -> fidl::Result<()> {
1715            decoder.debug_check_bounds::<Self>(offset);
1716            let prim = decoder.read_num::<u8>(offset);
1717
1718            *self = Self::from_primitive_allow_unknown(prim);
1719            Ok(())
1720        }
1721    }
1722    unsafe impl fidl::encoding::TypeMarker for WlanAuthType {
1723        type Owned = Self;
1724
1725        #[inline(always)]
1726        fn inline_align(_context: fidl::encoding::Context) -> usize {
1727            std::mem::align_of::<u8>()
1728        }
1729
1730        #[inline(always)]
1731        fn inline_size(_context: fidl::encoding::Context) -> usize {
1732            std::mem::size_of::<u8>()
1733        }
1734
1735        #[inline(always)]
1736        fn encode_is_copy() -> bool {
1737            false
1738        }
1739
1740        #[inline(always)]
1741        fn decode_is_copy() -> bool {
1742            false
1743        }
1744    }
1745
1746    impl fidl::encoding::ValueTypeMarker for WlanAuthType {
1747        type Borrowed<'a> = Self;
1748        #[inline(always)]
1749        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1750            *value
1751        }
1752    }
1753
1754    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanAuthType {
1755        #[inline]
1756        unsafe fn encode(
1757            self,
1758            encoder: &mut fidl::encoding::Encoder<'_, D>,
1759            offset: usize,
1760            _depth: fidl::encoding::Depth,
1761        ) -> fidl::Result<()> {
1762            encoder.debug_check_bounds::<Self>(offset);
1763            encoder.write_num(self.into_primitive(), offset);
1764            Ok(())
1765        }
1766    }
1767
1768    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanAuthType {
1769        #[inline(always)]
1770        fn new_empty() -> Self {
1771            Self::unknown()
1772        }
1773
1774        #[inline]
1775        unsafe fn decode(
1776            &mut self,
1777            decoder: &mut fidl::encoding::Decoder<'_, D>,
1778            offset: usize,
1779            _depth: fidl::encoding::Depth,
1780        ) -> fidl::Result<()> {
1781            decoder.debug_check_bounds::<Self>(offset);
1782            let prim = decoder.read_num::<u8>(offset);
1783
1784            *self = Self::from_primitive_allow_unknown(prim);
1785            Ok(())
1786        }
1787    }
1788    unsafe impl fidl::encoding::TypeMarker for WlanScanResult {
1789        type Owned = Self;
1790
1791        #[inline(always)]
1792        fn inline_align(_context: fidl::encoding::Context) -> usize {
1793            std::mem::align_of::<u8>()
1794        }
1795
1796        #[inline(always)]
1797        fn inline_size(_context: fidl::encoding::Context) -> usize {
1798            std::mem::size_of::<u8>()
1799        }
1800
1801        #[inline(always)]
1802        fn encode_is_copy() -> bool {
1803            false
1804        }
1805
1806        #[inline(always)]
1807        fn decode_is_copy() -> bool {
1808            false
1809        }
1810    }
1811
1812    impl fidl::encoding::ValueTypeMarker for WlanScanResult {
1813        type Borrowed<'a> = Self;
1814        #[inline(always)]
1815        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1816            *value
1817        }
1818    }
1819
1820    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanScanResult {
1821        #[inline]
1822        unsafe fn encode(
1823            self,
1824            encoder: &mut fidl::encoding::Encoder<'_, D>,
1825            offset: usize,
1826            _depth: fidl::encoding::Depth,
1827        ) -> fidl::Result<()> {
1828            encoder.debug_check_bounds::<Self>(offset);
1829            encoder.write_num(self.into_primitive(), offset);
1830            Ok(())
1831        }
1832    }
1833
1834    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanScanResult {
1835        #[inline(always)]
1836        fn new_empty() -> Self {
1837            Self::unknown()
1838        }
1839
1840        #[inline]
1841        unsafe fn decode(
1842            &mut self,
1843            decoder: &mut fidl::encoding::Decoder<'_, D>,
1844            offset: usize,
1845            _depth: fidl::encoding::Depth,
1846        ) -> fidl::Result<()> {
1847            decoder.debug_check_bounds::<Self>(offset);
1848            let prim = decoder.read_num::<u8>(offset);
1849
1850            *self = Self::from_primitive_allow_unknown(prim);
1851            Ok(())
1852        }
1853    }
1854    unsafe impl fidl::encoding::TypeMarker for WlanScanType {
1855        type Owned = Self;
1856
1857        #[inline(always)]
1858        fn inline_align(_context: fidl::encoding::Context) -> usize {
1859            std::mem::align_of::<u8>()
1860        }
1861
1862        #[inline(always)]
1863        fn inline_size(_context: fidl::encoding::Context) -> usize {
1864            std::mem::size_of::<u8>()
1865        }
1866
1867        #[inline(always)]
1868        fn encode_is_copy() -> bool {
1869            false
1870        }
1871
1872        #[inline(always)]
1873        fn decode_is_copy() -> bool {
1874            false
1875        }
1876    }
1877
1878    impl fidl::encoding::ValueTypeMarker for WlanScanType {
1879        type Borrowed<'a> = Self;
1880        #[inline(always)]
1881        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1882            *value
1883        }
1884    }
1885
1886    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanScanType {
1887        #[inline]
1888        unsafe fn encode(
1889            self,
1890            encoder: &mut fidl::encoding::Encoder<'_, D>,
1891            offset: usize,
1892            _depth: fidl::encoding::Depth,
1893        ) -> fidl::Result<()> {
1894            encoder.debug_check_bounds::<Self>(offset);
1895            encoder.write_num(self.into_primitive(), offset);
1896            Ok(())
1897        }
1898    }
1899
1900    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanScanType {
1901        #[inline(always)]
1902        fn new_empty() -> Self {
1903            Self::unknown()
1904        }
1905
1906        #[inline]
1907        unsafe fn decode(
1908            &mut self,
1909            decoder: &mut fidl::encoding::Decoder<'_, D>,
1910            offset: usize,
1911            _depth: fidl::encoding::Depth,
1912        ) -> fidl::Result<()> {
1913            decoder.debug_check_bounds::<Self>(offset);
1914            let prim = decoder.read_num::<u8>(offset);
1915
1916            *self = Self::from_primitive_allow_unknown(prim);
1917            Ok(())
1918        }
1919    }
1920
1921    impl fidl::encoding::ValueTypeMarker for WlanFullmacChannelSwitchInfo {
1922        type Borrowed<'a> = &'a Self;
1923        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1924            value
1925        }
1926    }
1927
1928    unsafe impl fidl::encoding::TypeMarker for WlanFullmacChannelSwitchInfo {
1929        type Owned = Self;
1930
1931        #[inline(always)]
1932        fn inline_align(_context: fidl::encoding::Context) -> usize {
1933            4
1934        }
1935
1936        #[inline(always)]
1937        fn inline_size(_context: fidl::encoding::Context) -> usize {
1938            12
1939        }
1940    }
1941
1942    unsafe impl<D: fidl::encoding::ResourceDialect>
1943        fidl::encoding::Encode<WlanFullmacChannelSwitchInfo, D> for &WlanFullmacChannelSwitchInfo
1944    {
1945        #[inline]
1946        unsafe fn encode(
1947            self,
1948            encoder: &mut fidl::encoding::Encoder<'_, D>,
1949            offset: usize,
1950            _depth: fidl::encoding::Depth,
1951        ) -> fidl::Result<()> {
1952            encoder.debug_check_bounds::<WlanFullmacChannelSwitchInfo>(offset);
1953            // Delegate to tuple encoding.
1954            fidl::encoding::Encode::<WlanFullmacChannelSwitchInfo, D>::encode(
1955                (
1956                    <fidl_fuchsia_wlan_ieee80211_common::ChannelNumber as fidl::encoding::ValueTypeMarker>::borrow(&self.new_primary_channel),
1957                    <fidl_fuchsia_wlan_ieee80211_common::ChannelBandwidth as fidl::encoding::ValueTypeMarker>::borrow(&self.bandwidth),
1958                    <fidl_fuchsia_wlan_ieee80211_common::ChannelNumber as fidl::encoding::ValueTypeMarker>::borrow(&self.vht_secondary_80_channel),
1959                ),
1960                encoder, offset, _depth
1961            )
1962        }
1963    }
1964    unsafe impl<
1965        D: fidl::encoding::ResourceDialect,
1966        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, D>,
1967        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::ChannelBandwidth, D>,
1968        T2: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, D>,
1969    > fidl::encoding::Encode<WlanFullmacChannelSwitchInfo, D> for (T0, T1, T2)
1970    {
1971        #[inline]
1972        unsafe fn encode(
1973            self,
1974            encoder: &mut fidl::encoding::Encoder<'_, D>,
1975            offset: usize,
1976            depth: fidl::encoding::Depth,
1977        ) -> fidl::Result<()> {
1978            encoder.debug_check_bounds::<WlanFullmacChannelSwitchInfo>(offset);
1979            // Zero out padding regions. There's no need to apply masks
1980            // because the unmasked parts will be overwritten by fields.
1981            unsafe {
1982                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
1983                (ptr as *mut u32).write_unaligned(0);
1984            }
1985            unsafe {
1986                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
1987                (ptr as *mut u32).write_unaligned(0);
1988            }
1989            // Write the fields.
1990            self.0.encode(encoder, offset + 0, depth)?;
1991            self.1.encode(encoder, offset + 4, depth)?;
1992            self.2.encode(encoder, offset + 8, depth)?;
1993            Ok(())
1994        }
1995    }
1996
1997    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1998        for WlanFullmacChannelSwitchInfo
1999    {
2000        #[inline(always)]
2001        fn new_empty() -> Self {
2002            Self {
2003                new_primary_channel: fidl::new_empty!(
2004                    fidl_fuchsia_wlan_ieee80211_common::ChannelNumber,
2005                    D
2006                ),
2007                bandwidth: fidl::new_empty!(
2008                    fidl_fuchsia_wlan_ieee80211_common::ChannelBandwidth,
2009                    D
2010                ),
2011                vht_secondary_80_channel: fidl::new_empty!(
2012                    fidl_fuchsia_wlan_ieee80211_common::ChannelNumber,
2013                    D
2014                ),
2015            }
2016        }
2017
2018        #[inline]
2019        unsafe fn decode(
2020            &mut self,
2021            decoder: &mut fidl::encoding::Decoder<'_, D>,
2022            offset: usize,
2023            _depth: fidl::encoding::Depth,
2024        ) -> fidl::Result<()> {
2025            decoder.debug_check_bounds::<Self>(offset);
2026            // Verify that padding bytes are zero.
2027            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
2028            let padval = unsafe { (ptr as *const u32).read_unaligned() };
2029            let mask = 0xffff0000u32;
2030            let maskedval = padval & mask;
2031            if maskedval != 0 {
2032                return Err(fidl::Error::NonZeroPadding {
2033                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2034                });
2035            }
2036            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
2037            let padval = unsafe { (ptr as *const u32).read_unaligned() };
2038            let mask = 0xffff0000u32;
2039            let maskedval = padval & mask;
2040            if maskedval != 0 {
2041                return Err(fidl::Error::NonZeroPadding {
2042                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
2043                });
2044            }
2045            fidl::decode!(
2046                fidl_fuchsia_wlan_ieee80211_common::ChannelNumber,
2047                D,
2048                &mut self.new_primary_channel,
2049                decoder,
2050                offset + 0,
2051                _depth
2052            )?;
2053            fidl::decode!(
2054                fidl_fuchsia_wlan_ieee80211_common::ChannelBandwidth,
2055                D,
2056                &mut self.bandwidth,
2057                decoder,
2058                offset + 4,
2059                _depth
2060            )?;
2061            fidl::decode!(
2062                fidl_fuchsia_wlan_ieee80211_common::ChannelNumber,
2063                D,
2064                &mut self.vht_secondary_80_channel,
2065                decoder,
2066                offset + 8,
2067                _depth
2068            )?;
2069            Ok(())
2070        }
2071    }
2072
2073    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnChannelSwitchRequest {
2074        type Borrowed<'a> = &'a Self;
2075        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2076            value
2077        }
2078    }
2079
2080    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcOnChannelSwitchRequest {
2081        type Owned = Self;
2082
2083        #[inline(always)]
2084        fn inline_align(_context: fidl::encoding::Context) -> usize {
2085            4
2086        }
2087
2088        #[inline(always)]
2089        fn inline_size(_context: fidl::encoding::Context) -> usize {
2090            12
2091        }
2092    }
2093
2094    unsafe impl<D: fidl::encoding::ResourceDialect>
2095        fidl::encoding::Encode<WlanFullmacImplIfcOnChannelSwitchRequest, D>
2096        for &WlanFullmacImplIfcOnChannelSwitchRequest
2097    {
2098        #[inline]
2099        unsafe fn encode(
2100            self,
2101            encoder: &mut fidl::encoding::Encoder<'_, D>,
2102            offset: usize,
2103            _depth: fidl::encoding::Depth,
2104        ) -> fidl::Result<()> {
2105            encoder.debug_check_bounds::<WlanFullmacImplIfcOnChannelSwitchRequest>(offset);
2106            // Delegate to tuple encoding.
2107            fidl::encoding::Encode::<WlanFullmacImplIfcOnChannelSwitchRequest, D>::encode(
2108                (<WlanFullmacChannelSwitchInfo as fidl::encoding::ValueTypeMarker>::borrow(
2109                    &self.ind,
2110                ),),
2111                encoder,
2112                offset,
2113                _depth,
2114            )
2115        }
2116    }
2117    unsafe impl<
2118        D: fidl::encoding::ResourceDialect,
2119        T0: fidl::encoding::Encode<WlanFullmacChannelSwitchInfo, D>,
2120    > fidl::encoding::Encode<WlanFullmacImplIfcOnChannelSwitchRequest, D> for (T0,)
2121    {
2122        #[inline]
2123        unsafe fn encode(
2124            self,
2125            encoder: &mut fidl::encoding::Encoder<'_, D>,
2126            offset: usize,
2127            depth: fidl::encoding::Depth,
2128        ) -> fidl::Result<()> {
2129            encoder.debug_check_bounds::<WlanFullmacImplIfcOnChannelSwitchRequest>(offset);
2130            // Zero out padding regions. There's no need to apply masks
2131            // because the unmasked parts will be overwritten by fields.
2132            // Write the fields.
2133            self.0.encode(encoder, offset + 0, depth)?;
2134            Ok(())
2135        }
2136    }
2137
2138    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2139        for WlanFullmacImplIfcOnChannelSwitchRequest
2140    {
2141        #[inline(always)]
2142        fn new_empty() -> Self {
2143            Self { ind: fidl::new_empty!(WlanFullmacChannelSwitchInfo, D) }
2144        }
2145
2146        #[inline]
2147        unsafe fn decode(
2148            &mut self,
2149            decoder: &mut fidl::encoding::Decoder<'_, D>,
2150            offset: usize,
2151            _depth: fidl::encoding::Depth,
2152        ) -> fidl::Result<()> {
2153            decoder.debug_check_bounds::<Self>(offset);
2154            // Verify that padding bytes are zero.
2155            fidl::decode!(
2156                WlanFullmacChannelSwitchInfo,
2157                D,
2158                &mut self.ind,
2159                decoder,
2160                offset + 0,
2161                _depth
2162            )?;
2163            Ok(())
2164        }
2165    }
2166
2167    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnWmmStatusRespRequest {
2168        type Borrowed<'a> = &'a Self;
2169        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2170            value
2171        }
2172    }
2173
2174    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcOnWmmStatusRespRequest {
2175        type Owned = Self;
2176
2177        #[inline(always)]
2178        fn inline_align(_context: fidl::encoding::Context) -> usize {
2179            4
2180        }
2181
2182        #[inline(always)]
2183        fn inline_size(_context: fidl::encoding::Context) -> usize {
2184            40
2185        }
2186    }
2187
2188    unsafe impl<D: fidl::encoding::ResourceDialect>
2189        fidl::encoding::Encode<WlanFullmacImplIfcOnWmmStatusRespRequest, D>
2190        for &WlanFullmacImplIfcOnWmmStatusRespRequest
2191    {
2192        #[inline]
2193        unsafe fn encode(
2194            self,
2195            encoder: &mut fidl::encoding::Encoder<'_, D>,
2196            offset: usize,
2197            _depth: fidl::encoding::Depth,
2198        ) -> fidl::Result<()> {
2199            encoder.debug_check_bounds::<WlanFullmacImplIfcOnWmmStatusRespRequest>(offset);
2200            // Delegate to tuple encoding.
2201            fidl::encoding::Encode::<WlanFullmacImplIfcOnWmmStatusRespRequest, D>::encode(
2202                (
2203                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(&self.status),
2204                    <fidl_fuchsia_wlan_driver_common::WlanWmmParameters as fidl::encoding::ValueTypeMarker>::borrow(&self.wmm_params),
2205                ),
2206                encoder, offset, _depth
2207            )
2208        }
2209    }
2210    unsafe impl<
2211        D: fidl::encoding::ResourceDialect,
2212        T0: fidl::encoding::Encode<i32, D>,
2213        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_driver_common::WlanWmmParameters, D>,
2214    > fidl::encoding::Encode<WlanFullmacImplIfcOnWmmStatusRespRequest, D> for (T0, T1)
2215    {
2216        #[inline]
2217        unsafe fn encode(
2218            self,
2219            encoder: &mut fidl::encoding::Encoder<'_, D>,
2220            offset: usize,
2221            depth: fidl::encoding::Depth,
2222        ) -> fidl::Result<()> {
2223            encoder.debug_check_bounds::<WlanFullmacImplIfcOnWmmStatusRespRequest>(offset);
2224            // Zero out padding regions. There's no need to apply masks
2225            // because the unmasked parts will be overwritten by fields.
2226            unsafe {
2227                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(36);
2228                (ptr as *mut u32).write_unaligned(0);
2229            }
2230            // Write the fields.
2231            self.0.encode(encoder, offset + 0, depth)?;
2232            self.1.encode(encoder, offset + 4, depth)?;
2233            Ok(())
2234        }
2235    }
2236
2237    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2238        for WlanFullmacImplIfcOnWmmStatusRespRequest
2239    {
2240        #[inline(always)]
2241        fn new_empty() -> Self {
2242            Self {
2243                status: fidl::new_empty!(i32, D),
2244                wmm_params: fidl::new_empty!(fidl_fuchsia_wlan_driver_common::WlanWmmParameters, D),
2245            }
2246        }
2247
2248        #[inline]
2249        unsafe fn decode(
2250            &mut self,
2251            decoder: &mut fidl::encoding::Decoder<'_, D>,
2252            offset: usize,
2253            _depth: fidl::encoding::Depth,
2254        ) -> fidl::Result<()> {
2255            decoder.debug_check_bounds::<Self>(offset);
2256            // Verify that padding bytes are zero.
2257            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(36) };
2258            let padval = unsafe { (ptr as *const u32).read_unaligned() };
2259            let mask = 0xffff0000u32;
2260            let maskedval = padval & mask;
2261            if maskedval != 0 {
2262                return Err(fidl::Error::NonZeroPadding {
2263                    padding_start: offset + 36 + ((mask as u64).trailing_zeros() / 8) as usize,
2264                });
2265            }
2266            fidl::decode!(i32, D, &mut self.status, decoder, offset + 0, _depth)?;
2267            fidl::decode!(
2268                fidl_fuchsia_wlan_driver_common::WlanWmmParameters,
2269                D,
2270                &mut self.wmm_params,
2271                decoder,
2272                offset + 4,
2273                _depth
2274            )?;
2275            Ok(())
2276        }
2277    }
2278
2279    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcSaeFrameRxRequest {
2280        type Borrowed<'a> = &'a Self;
2281        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2282            value
2283        }
2284    }
2285
2286    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcSaeFrameRxRequest {
2287        type Owned = Self;
2288
2289        #[inline(always)]
2290        fn inline_align(_context: fidl::encoding::Context) -> usize {
2291            8
2292        }
2293
2294        #[inline(always)]
2295        fn inline_size(_context: fidl::encoding::Context) -> usize {
2296            16
2297        }
2298    }
2299
2300    unsafe impl<D: fidl::encoding::ResourceDialect>
2301        fidl::encoding::Encode<WlanFullmacImplIfcSaeFrameRxRequest, D>
2302        for &WlanFullmacImplIfcSaeFrameRxRequest
2303    {
2304        #[inline]
2305        unsafe fn encode(
2306            self,
2307            encoder: &mut fidl::encoding::Encoder<'_, D>,
2308            offset: usize,
2309            _depth: fidl::encoding::Depth,
2310        ) -> fidl::Result<()> {
2311            encoder.debug_check_bounds::<WlanFullmacImplIfcSaeFrameRxRequest>(offset);
2312            // Delegate to tuple encoding.
2313            fidl::encoding::Encode::<WlanFullmacImplIfcSaeFrameRxRequest, D>::encode(
2314                (<SaeFrame as fidl::encoding::ValueTypeMarker>::borrow(&self.frame),),
2315                encoder,
2316                offset,
2317                _depth,
2318            )
2319        }
2320    }
2321    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SaeFrame, D>>
2322        fidl::encoding::Encode<WlanFullmacImplIfcSaeFrameRxRequest, D> for (T0,)
2323    {
2324        #[inline]
2325        unsafe fn encode(
2326            self,
2327            encoder: &mut fidl::encoding::Encoder<'_, D>,
2328            offset: usize,
2329            depth: fidl::encoding::Depth,
2330        ) -> fidl::Result<()> {
2331            encoder.debug_check_bounds::<WlanFullmacImplIfcSaeFrameRxRequest>(offset);
2332            // Zero out padding regions. There's no need to apply masks
2333            // because the unmasked parts will be overwritten by fields.
2334            // Write the fields.
2335            self.0.encode(encoder, offset + 0, depth)?;
2336            Ok(())
2337        }
2338    }
2339
2340    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2341        for WlanFullmacImplIfcSaeFrameRxRequest
2342    {
2343        #[inline(always)]
2344        fn new_empty() -> Self {
2345            Self { frame: fidl::new_empty!(SaeFrame, D) }
2346        }
2347
2348        #[inline]
2349        unsafe fn decode(
2350            &mut self,
2351            decoder: &mut fidl::encoding::Decoder<'_, D>,
2352            offset: usize,
2353            _depth: fidl::encoding::Depth,
2354        ) -> fidl::Result<()> {
2355            decoder.debug_check_bounds::<Self>(offset);
2356            // Verify that padding bytes are zero.
2357            fidl::decode!(SaeFrame, D, &mut self.frame, decoder, offset + 0, _depth)?;
2358            Ok(())
2359        }
2360    }
2361
2362    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcSignalReportRequest {
2363        type Borrowed<'a> = &'a Self;
2364        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2365            value
2366        }
2367    }
2368
2369    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcSignalReportRequest {
2370        type Owned = Self;
2371
2372        #[inline(always)]
2373        fn inline_align(_context: fidl::encoding::Context) -> usize {
2374            1
2375        }
2376
2377        #[inline(always)]
2378        fn inline_size(_context: fidl::encoding::Context) -> usize {
2379            2
2380        }
2381        #[inline(always)]
2382        fn encode_is_copy() -> bool {
2383            true
2384        }
2385
2386        #[inline(always)]
2387        fn decode_is_copy() -> bool {
2388            true
2389        }
2390    }
2391
2392    unsafe impl<D: fidl::encoding::ResourceDialect>
2393        fidl::encoding::Encode<WlanFullmacImplIfcSignalReportRequest, D>
2394        for &WlanFullmacImplIfcSignalReportRequest
2395    {
2396        #[inline]
2397        unsafe fn encode(
2398            self,
2399            encoder: &mut fidl::encoding::Encoder<'_, D>,
2400            offset: usize,
2401            _depth: fidl::encoding::Depth,
2402        ) -> fidl::Result<()> {
2403            encoder.debug_check_bounds::<WlanFullmacImplIfcSignalReportRequest>(offset);
2404            unsafe {
2405                // Copy the object into the buffer.
2406                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2407                (buf_ptr as *mut WlanFullmacImplIfcSignalReportRequest)
2408                    .write_unaligned((self as *const WlanFullmacImplIfcSignalReportRequest).read());
2409                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
2410                // done second because the memcpy will write garbage to these bytes.
2411            }
2412            Ok(())
2413        }
2414    }
2415    unsafe impl<
2416        D: fidl::encoding::ResourceDialect,
2417        T0: fidl::encoding::Encode<WlanFullmacSignalReportIndication, D>,
2418    > fidl::encoding::Encode<WlanFullmacImplIfcSignalReportRequest, D> for (T0,)
2419    {
2420        #[inline]
2421        unsafe fn encode(
2422            self,
2423            encoder: &mut fidl::encoding::Encoder<'_, D>,
2424            offset: usize,
2425            depth: fidl::encoding::Depth,
2426        ) -> fidl::Result<()> {
2427            encoder.debug_check_bounds::<WlanFullmacImplIfcSignalReportRequest>(offset);
2428            // Zero out padding regions. There's no need to apply masks
2429            // because the unmasked parts will be overwritten by fields.
2430            // Write the fields.
2431            self.0.encode(encoder, offset + 0, depth)?;
2432            Ok(())
2433        }
2434    }
2435
2436    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2437        for WlanFullmacImplIfcSignalReportRequest
2438    {
2439        #[inline(always)]
2440        fn new_empty() -> Self {
2441            Self { ind: fidl::new_empty!(WlanFullmacSignalReportIndication, D) }
2442        }
2443
2444        #[inline]
2445        unsafe fn decode(
2446            &mut self,
2447            decoder: &mut fidl::encoding::Decoder<'_, D>,
2448            offset: usize,
2449            _depth: fidl::encoding::Depth,
2450        ) -> fidl::Result<()> {
2451            decoder.debug_check_bounds::<Self>(offset);
2452            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2453            // Verify that padding bytes are zero.
2454            // Copy from the buffer into the object.
2455            unsafe {
2456                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 2);
2457            }
2458            Ok(())
2459        }
2460    }
2461
2462    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSaeFrameTxRequest {
2463        type Borrowed<'a> = &'a Self;
2464        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2465            value
2466        }
2467    }
2468
2469    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSaeFrameTxRequest {
2470        type Owned = Self;
2471
2472        #[inline(always)]
2473        fn inline_align(_context: fidl::encoding::Context) -> usize {
2474            8
2475        }
2476
2477        #[inline(always)]
2478        fn inline_size(_context: fidl::encoding::Context) -> usize {
2479            16
2480        }
2481    }
2482
2483    unsafe impl<D: fidl::encoding::ResourceDialect>
2484        fidl::encoding::Encode<WlanFullmacImplSaeFrameTxRequest, D>
2485        for &WlanFullmacImplSaeFrameTxRequest
2486    {
2487        #[inline]
2488        unsafe fn encode(
2489            self,
2490            encoder: &mut fidl::encoding::Encoder<'_, D>,
2491            offset: usize,
2492            _depth: fidl::encoding::Depth,
2493        ) -> fidl::Result<()> {
2494            encoder.debug_check_bounds::<WlanFullmacImplSaeFrameTxRequest>(offset);
2495            // Delegate to tuple encoding.
2496            fidl::encoding::Encode::<WlanFullmacImplSaeFrameTxRequest, D>::encode(
2497                (<SaeFrame as fidl::encoding::ValueTypeMarker>::borrow(&self.frame),),
2498                encoder,
2499                offset,
2500                _depth,
2501            )
2502        }
2503    }
2504    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SaeFrame, D>>
2505        fidl::encoding::Encode<WlanFullmacImplSaeFrameTxRequest, D> for (T0,)
2506    {
2507        #[inline]
2508        unsafe fn encode(
2509            self,
2510            encoder: &mut fidl::encoding::Encoder<'_, D>,
2511            offset: usize,
2512            depth: fidl::encoding::Depth,
2513        ) -> fidl::Result<()> {
2514            encoder.debug_check_bounds::<WlanFullmacImplSaeFrameTxRequest>(offset);
2515            // Zero out padding regions. There's no need to apply masks
2516            // because the unmasked parts will be overwritten by fields.
2517            // Write the fields.
2518            self.0.encode(encoder, offset + 0, depth)?;
2519            Ok(())
2520        }
2521    }
2522
2523    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2524        for WlanFullmacImplSaeFrameTxRequest
2525    {
2526        #[inline(always)]
2527        fn new_empty() -> Self {
2528            Self { frame: fidl::new_empty!(SaeFrame, D) }
2529        }
2530
2531        #[inline]
2532        unsafe fn decode(
2533            &mut self,
2534            decoder: &mut fidl::encoding::Decoder<'_, D>,
2535            offset: usize,
2536            _depth: fidl::encoding::Depth,
2537        ) -> fidl::Result<()> {
2538            decoder.debug_check_bounds::<Self>(offset);
2539            // Verify that padding bytes are zero.
2540            fidl::decode!(SaeFrame, D, &mut self.frame, decoder, offset + 0, _depth)?;
2541            Ok(())
2542        }
2543    }
2544
2545    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSetKeysResponse {
2546        type Borrowed<'a> = &'a Self;
2547        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2548            value
2549        }
2550    }
2551
2552    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSetKeysResponse {
2553        type Owned = Self;
2554
2555        #[inline(always)]
2556        fn inline_align(_context: fidl::encoding::Context) -> usize {
2557            8
2558        }
2559
2560        #[inline(always)]
2561        fn inline_size(_context: fidl::encoding::Context) -> usize {
2562            16
2563        }
2564    }
2565
2566    unsafe impl<D: fidl::encoding::ResourceDialect>
2567        fidl::encoding::Encode<WlanFullmacImplSetKeysResponse, D>
2568        for &WlanFullmacImplSetKeysResponse
2569    {
2570        #[inline]
2571        unsafe fn encode(
2572            self,
2573            encoder: &mut fidl::encoding::Encoder<'_, D>,
2574            offset: usize,
2575            _depth: fidl::encoding::Depth,
2576        ) -> fidl::Result<()> {
2577            encoder.debug_check_bounds::<WlanFullmacImplSetKeysResponse>(offset);
2578            // Delegate to tuple encoding.
2579            fidl::encoding::Encode::<WlanFullmacImplSetKeysResponse, D>::encode(
2580                (<WlanFullmacSetKeysResp as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
2581                encoder,
2582                offset,
2583                _depth,
2584            )
2585        }
2586    }
2587    unsafe impl<
2588        D: fidl::encoding::ResourceDialect,
2589        T0: fidl::encoding::Encode<WlanFullmacSetKeysResp, D>,
2590    > fidl::encoding::Encode<WlanFullmacImplSetKeysResponse, D> for (T0,)
2591    {
2592        #[inline]
2593        unsafe fn encode(
2594            self,
2595            encoder: &mut fidl::encoding::Encoder<'_, D>,
2596            offset: usize,
2597            depth: fidl::encoding::Depth,
2598        ) -> fidl::Result<()> {
2599            encoder.debug_check_bounds::<WlanFullmacImplSetKeysResponse>(offset);
2600            // Zero out padding regions. There's no need to apply masks
2601            // because the unmasked parts will be overwritten by fields.
2602            // Write the fields.
2603            self.0.encode(encoder, offset + 0, depth)?;
2604            Ok(())
2605        }
2606    }
2607
2608    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2609        for WlanFullmacImplSetKeysResponse
2610    {
2611        #[inline(always)]
2612        fn new_empty() -> Self {
2613            Self { resp: fidl::new_empty!(WlanFullmacSetKeysResp, D) }
2614        }
2615
2616        #[inline]
2617        unsafe fn decode(
2618            &mut self,
2619            decoder: &mut fidl::encoding::Decoder<'_, D>,
2620            offset: usize,
2621            _depth: fidl::encoding::Depth,
2622        ) -> fidl::Result<()> {
2623            decoder.debug_check_bounds::<Self>(offset);
2624            // Verify that padding bytes are zero.
2625            fidl::decode!(WlanFullmacSetKeysResp, D, &mut self.resp, decoder, offset + 0, _depth)?;
2626            Ok(())
2627        }
2628    }
2629
2630    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSetMacAddressRequest {
2631        type Borrowed<'a> = &'a Self;
2632        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2633            value
2634        }
2635    }
2636
2637    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSetMacAddressRequest {
2638        type Owned = Self;
2639
2640        #[inline(always)]
2641        fn inline_align(_context: fidl::encoding::Context) -> usize {
2642            1
2643        }
2644
2645        #[inline(always)]
2646        fn inline_size(_context: fidl::encoding::Context) -> usize {
2647            6
2648        }
2649        #[inline(always)]
2650        fn encode_is_copy() -> bool {
2651            true
2652        }
2653
2654        #[inline(always)]
2655        fn decode_is_copy() -> bool {
2656            true
2657        }
2658    }
2659
2660    unsafe impl<D: fidl::encoding::ResourceDialect>
2661        fidl::encoding::Encode<WlanFullmacImplSetMacAddressRequest, D>
2662        for &WlanFullmacImplSetMacAddressRequest
2663    {
2664        #[inline]
2665        unsafe fn encode(
2666            self,
2667            encoder: &mut fidl::encoding::Encoder<'_, D>,
2668            offset: usize,
2669            _depth: fidl::encoding::Depth,
2670        ) -> fidl::Result<()> {
2671            encoder.debug_check_bounds::<WlanFullmacImplSetMacAddressRequest>(offset);
2672            unsafe {
2673                // Copy the object into the buffer.
2674                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2675                (buf_ptr as *mut WlanFullmacImplSetMacAddressRequest)
2676                    .write_unaligned((self as *const WlanFullmacImplSetMacAddressRequest).read());
2677                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
2678                // done second because the memcpy will write garbage to these bytes.
2679            }
2680            Ok(())
2681        }
2682    }
2683    unsafe impl<
2684        D: fidl::encoding::ResourceDialect,
2685        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2686    > fidl::encoding::Encode<WlanFullmacImplSetMacAddressRequest, D> for (T0,)
2687    {
2688        #[inline]
2689        unsafe fn encode(
2690            self,
2691            encoder: &mut fidl::encoding::Encoder<'_, D>,
2692            offset: usize,
2693            depth: fidl::encoding::Depth,
2694        ) -> fidl::Result<()> {
2695            encoder.debug_check_bounds::<WlanFullmacImplSetMacAddressRequest>(offset);
2696            // Zero out padding regions. There's no need to apply masks
2697            // because the unmasked parts will be overwritten by fields.
2698            // Write the fields.
2699            self.0.encode(encoder, offset + 0, depth)?;
2700            Ok(())
2701        }
2702    }
2703
2704    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2705        for WlanFullmacImplSetMacAddressRequest
2706    {
2707        #[inline(always)]
2708        fn new_empty() -> Self {
2709            Self { mac_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
2710        }
2711
2712        #[inline]
2713        unsafe fn decode(
2714            &mut self,
2715            decoder: &mut fidl::encoding::Decoder<'_, D>,
2716            offset: usize,
2717            _depth: fidl::encoding::Depth,
2718        ) -> fidl::Result<()> {
2719            decoder.debug_check_bounds::<Self>(offset);
2720            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2721            // Verify that padding bytes are zero.
2722            // Copy from the buffer into the object.
2723            unsafe {
2724                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
2725            }
2726            Ok(())
2727        }
2728    }
2729
2730    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplGetIfaceHistogramStatsResponse {
2731        type Borrowed<'a> = &'a Self;
2732        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2733            value
2734        }
2735    }
2736
2737    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplGetIfaceHistogramStatsResponse {
2738        type Owned = Self;
2739
2740        #[inline(always)]
2741        fn inline_align(_context: fidl::encoding::Context) -> usize {
2742            8
2743        }
2744
2745        #[inline(always)]
2746        fn inline_size(_context: fidl::encoding::Context) -> usize {
2747            16
2748        }
2749    }
2750
2751    unsafe impl<D: fidl::encoding::ResourceDialect>
2752        fidl::encoding::Encode<WlanFullmacImplGetIfaceHistogramStatsResponse, D>
2753        for &WlanFullmacImplGetIfaceHistogramStatsResponse
2754    {
2755        #[inline]
2756        unsafe fn encode(
2757            self,
2758            encoder: &mut fidl::encoding::Encoder<'_, D>,
2759            offset: usize,
2760            _depth: fidl::encoding::Depth,
2761        ) -> fidl::Result<()> {
2762            encoder.debug_check_bounds::<WlanFullmacImplGetIfaceHistogramStatsResponse>(offset);
2763            // Delegate to tuple encoding.
2764            fidl::encoding::Encode::<WlanFullmacImplGetIfaceHistogramStatsResponse, D>::encode(
2765                (
2766                    <fidl_fuchsia_wlan_stats_common::IfaceHistogramStats as fidl::encoding::ValueTypeMarker>::borrow(&self.stats),
2767                ),
2768                encoder, offset, _depth
2769            )
2770        }
2771    }
2772    unsafe impl<
2773        D: fidl::encoding::ResourceDialect,
2774        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_stats_common::IfaceHistogramStats, D>,
2775    > fidl::encoding::Encode<WlanFullmacImplGetIfaceHistogramStatsResponse, D> for (T0,)
2776    {
2777        #[inline]
2778        unsafe fn encode(
2779            self,
2780            encoder: &mut fidl::encoding::Encoder<'_, D>,
2781            offset: usize,
2782            depth: fidl::encoding::Depth,
2783        ) -> fidl::Result<()> {
2784            encoder.debug_check_bounds::<WlanFullmacImplGetIfaceHistogramStatsResponse>(offset);
2785            // Zero out padding regions. There's no need to apply masks
2786            // because the unmasked parts will be overwritten by fields.
2787            // Write the fields.
2788            self.0.encode(encoder, offset + 0, depth)?;
2789            Ok(())
2790        }
2791    }
2792
2793    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2794        for WlanFullmacImplGetIfaceHistogramStatsResponse
2795    {
2796        #[inline(always)]
2797        fn new_empty() -> Self {
2798            Self { stats: fidl::new_empty!(fidl_fuchsia_wlan_stats_common::IfaceHistogramStats, D) }
2799        }
2800
2801        #[inline]
2802        unsafe fn decode(
2803            &mut self,
2804            decoder: &mut fidl::encoding::Decoder<'_, D>,
2805            offset: usize,
2806            _depth: fidl::encoding::Depth,
2807        ) -> fidl::Result<()> {
2808            decoder.debug_check_bounds::<Self>(offset);
2809            // Verify that padding bytes are zero.
2810            fidl::decode!(
2811                fidl_fuchsia_wlan_stats_common::IfaceHistogramStats,
2812                D,
2813                &mut self.stats,
2814                decoder,
2815                offset + 0,
2816                _depth
2817            )?;
2818            Ok(())
2819        }
2820    }
2821
2822    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplGetIfaceStatsResponse {
2823        type Borrowed<'a> = &'a Self;
2824        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2825            value
2826        }
2827    }
2828
2829    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplGetIfaceStatsResponse {
2830        type Owned = Self;
2831
2832        #[inline(always)]
2833        fn inline_align(_context: fidl::encoding::Context) -> usize {
2834            8
2835        }
2836
2837        #[inline(always)]
2838        fn inline_size(_context: fidl::encoding::Context) -> usize {
2839            16
2840        }
2841    }
2842
2843    unsafe impl<D: fidl::encoding::ResourceDialect>
2844        fidl::encoding::Encode<WlanFullmacImplGetIfaceStatsResponse, D>
2845        for &WlanFullmacImplGetIfaceStatsResponse
2846    {
2847        #[inline]
2848        unsafe fn encode(
2849            self,
2850            encoder: &mut fidl::encoding::Encoder<'_, D>,
2851            offset: usize,
2852            _depth: fidl::encoding::Depth,
2853        ) -> fidl::Result<()> {
2854            encoder.debug_check_bounds::<WlanFullmacImplGetIfaceStatsResponse>(offset);
2855            // Delegate to tuple encoding.
2856            fidl::encoding::Encode::<WlanFullmacImplGetIfaceStatsResponse, D>::encode(
2857                (
2858                    <fidl_fuchsia_wlan_stats_common::IfaceStats as fidl::encoding::ValueTypeMarker>::borrow(&self.stats),
2859                ),
2860                encoder, offset, _depth
2861            )
2862        }
2863    }
2864    unsafe impl<
2865        D: fidl::encoding::ResourceDialect,
2866        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_stats_common::IfaceStats, D>,
2867    > fidl::encoding::Encode<WlanFullmacImplGetIfaceStatsResponse, D> for (T0,)
2868    {
2869        #[inline]
2870        unsafe fn encode(
2871            self,
2872            encoder: &mut fidl::encoding::Encoder<'_, D>,
2873            offset: usize,
2874            depth: fidl::encoding::Depth,
2875        ) -> fidl::Result<()> {
2876            encoder.debug_check_bounds::<WlanFullmacImplGetIfaceStatsResponse>(offset);
2877            // Zero out padding regions. There's no need to apply masks
2878            // because the unmasked parts will be overwritten by fields.
2879            // Write the fields.
2880            self.0.encode(encoder, offset + 0, depth)?;
2881            Ok(())
2882        }
2883    }
2884
2885    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2886        for WlanFullmacImplGetIfaceStatsResponse
2887    {
2888        #[inline(always)]
2889        fn new_empty() -> Self {
2890            Self { stats: fidl::new_empty!(fidl_fuchsia_wlan_stats_common::IfaceStats, D) }
2891        }
2892
2893        #[inline]
2894        unsafe fn decode(
2895            &mut self,
2896            decoder: &mut fidl::encoding::Decoder<'_, D>,
2897            offset: usize,
2898            _depth: fidl::encoding::Depth,
2899        ) -> fidl::Result<()> {
2900            decoder.debug_check_bounds::<Self>(offset);
2901            // Verify that padding bytes are zero.
2902            fidl::decode!(
2903                fidl_fuchsia_wlan_stats_common::IfaceStats,
2904                D,
2905                &mut self.stats,
2906                decoder,
2907                offset + 0,
2908                _depth
2909            )?;
2910            Ok(())
2911        }
2912    }
2913
2914    impl fidl::encoding::ValueTypeMarker for WlanFullmacRssiStats {
2915        type Borrowed<'a> = &'a Self;
2916        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2917            value
2918        }
2919    }
2920
2921    unsafe impl fidl::encoding::TypeMarker for WlanFullmacRssiStats {
2922        type Owned = Self;
2923
2924        #[inline(always)]
2925        fn inline_align(_context: fidl::encoding::Context) -> usize {
2926            8
2927        }
2928
2929        #[inline(always)]
2930        fn inline_size(_context: fidl::encoding::Context) -> usize {
2931            16
2932        }
2933    }
2934
2935    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WlanFullmacRssiStats, D>
2936        for &WlanFullmacRssiStats
2937    {
2938        #[inline]
2939        unsafe fn encode(
2940            self,
2941            encoder: &mut fidl::encoding::Encoder<'_, D>,
2942            offset: usize,
2943            _depth: fidl::encoding::Depth,
2944        ) -> fidl::Result<()> {
2945            encoder.debug_check_bounds::<WlanFullmacRssiStats>(offset);
2946            // Delegate to tuple encoding.
2947            fidl::encoding::Encode::<WlanFullmacRssiStats, D>::encode(
2948                (
2949                    <fidl::encoding::UnboundedVector<u64> as fidl::encoding::ValueTypeMarker>::borrow(&self.hist),
2950                ),
2951                encoder, offset, _depth
2952            )
2953        }
2954    }
2955    unsafe impl<
2956        D: fidl::encoding::ResourceDialect,
2957        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u64>, D>,
2958    > fidl::encoding::Encode<WlanFullmacRssiStats, D> for (T0,)
2959    {
2960        #[inline]
2961        unsafe fn encode(
2962            self,
2963            encoder: &mut fidl::encoding::Encoder<'_, D>,
2964            offset: usize,
2965            depth: fidl::encoding::Depth,
2966        ) -> fidl::Result<()> {
2967            encoder.debug_check_bounds::<WlanFullmacRssiStats>(offset);
2968            // Zero out padding regions. There's no need to apply masks
2969            // because the unmasked parts will be overwritten by fields.
2970            // Write the fields.
2971            self.0.encode(encoder, offset + 0, depth)?;
2972            Ok(())
2973        }
2974    }
2975
2976    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanFullmacRssiStats {
2977        #[inline(always)]
2978        fn new_empty() -> Self {
2979            Self { hist: fidl::new_empty!(fidl::encoding::UnboundedVector<u64>, D) }
2980        }
2981
2982        #[inline]
2983        unsafe fn decode(
2984            &mut self,
2985            decoder: &mut fidl::encoding::Decoder<'_, D>,
2986            offset: usize,
2987            _depth: fidl::encoding::Depth,
2988        ) -> fidl::Result<()> {
2989            decoder.debug_check_bounds::<Self>(offset);
2990            // Verify that padding bytes are zero.
2991            fidl::decode!(
2992                fidl::encoding::UnboundedVector<u64>,
2993                D,
2994                &mut self.hist,
2995                decoder,
2996                offset + 0,
2997                _depth
2998            )?;
2999            Ok(())
3000        }
3001    }
3002
3003    impl fidl::encoding::ValueTypeMarker for WlanFullmacSetKeysResp {
3004        type Borrowed<'a> = &'a Self;
3005        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3006            value
3007        }
3008    }
3009
3010    unsafe impl fidl::encoding::TypeMarker for WlanFullmacSetKeysResp {
3011        type Owned = Self;
3012
3013        #[inline(always)]
3014        fn inline_align(_context: fidl::encoding::Context) -> usize {
3015            8
3016        }
3017
3018        #[inline(always)]
3019        fn inline_size(_context: fidl::encoding::Context) -> usize {
3020            16
3021        }
3022    }
3023
3024    unsafe impl<D: fidl::encoding::ResourceDialect>
3025        fidl::encoding::Encode<WlanFullmacSetKeysResp, D> for &WlanFullmacSetKeysResp
3026    {
3027        #[inline]
3028        unsafe fn encode(
3029            self,
3030            encoder: &mut fidl::encoding::Encoder<'_, D>,
3031            offset: usize,
3032            _depth: fidl::encoding::Depth,
3033        ) -> fidl::Result<()> {
3034            encoder.debug_check_bounds::<WlanFullmacSetKeysResp>(offset);
3035            // Delegate to tuple encoding.
3036            fidl::encoding::Encode::<WlanFullmacSetKeysResp, D>::encode(
3037                (<fidl::encoding::Vector<i32, 4> as fidl::encoding::ValueTypeMarker>::borrow(
3038                    &self.statuslist,
3039                ),),
3040                encoder,
3041                offset,
3042                _depth,
3043            )
3044        }
3045    }
3046    unsafe impl<
3047        D: fidl::encoding::ResourceDialect,
3048        T0: fidl::encoding::Encode<fidl::encoding::Vector<i32, 4>, D>,
3049    > fidl::encoding::Encode<WlanFullmacSetKeysResp, D> for (T0,)
3050    {
3051        #[inline]
3052        unsafe fn encode(
3053            self,
3054            encoder: &mut fidl::encoding::Encoder<'_, D>,
3055            offset: usize,
3056            depth: fidl::encoding::Depth,
3057        ) -> fidl::Result<()> {
3058            encoder.debug_check_bounds::<WlanFullmacSetKeysResp>(offset);
3059            // Zero out padding regions. There's no need to apply masks
3060            // because the unmasked parts will be overwritten by fields.
3061            // Write the fields.
3062            self.0.encode(encoder, offset + 0, depth)?;
3063            Ok(())
3064        }
3065    }
3066
3067    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3068        for WlanFullmacSetKeysResp
3069    {
3070        #[inline(always)]
3071        fn new_empty() -> Self {
3072            Self { statuslist: fidl::new_empty!(fidl::encoding::Vector<i32, 4>, D) }
3073        }
3074
3075        #[inline]
3076        unsafe fn decode(
3077            &mut self,
3078            decoder: &mut fidl::encoding::Decoder<'_, D>,
3079            offset: usize,
3080            _depth: fidl::encoding::Depth,
3081        ) -> fidl::Result<()> {
3082            decoder.debug_check_bounds::<Self>(offset);
3083            // Verify that padding bytes are zero.
3084            fidl::decode!(fidl::encoding::Vector<i32, 4>, D, &mut self.statuslist, decoder, offset + 0, _depth)?;
3085            Ok(())
3086        }
3087    }
3088
3089    impl fidl::encoding::ValueTypeMarker for WlanFullmacSignalReportIndication {
3090        type Borrowed<'a> = &'a Self;
3091        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3092            value
3093        }
3094    }
3095
3096    unsafe impl fidl::encoding::TypeMarker for WlanFullmacSignalReportIndication {
3097        type Owned = Self;
3098
3099        #[inline(always)]
3100        fn inline_align(_context: fidl::encoding::Context) -> usize {
3101            1
3102        }
3103
3104        #[inline(always)]
3105        fn inline_size(_context: fidl::encoding::Context) -> usize {
3106            2
3107        }
3108        #[inline(always)]
3109        fn encode_is_copy() -> bool {
3110            true
3111        }
3112
3113        #[inline(always)]
3114        fn decode_is_copy() -> bool {
3115            true
3116        }
3117    }
3118
3119    unsafe impl<D: fidl::encoding::ResourceDialect>
3120        fidl::encoding::Encode<WlanFullmacSignalReportIndication, D>
3121        for &WlanFullmacSignalReportIndication
3122    {
3123        #[inline]
3124        unsafe fn encode(
3125            self,
3126            encoder: &mut fidl::encoding::Encoder<'_, D>,
3127            offset: usize,
3128            _depth: fidl::encoding::Depth,
3129        ) -> fidl::Result<()> {
3130            encoder.debug_check_bounds::<WlanFullmacSignalReportIndication>(offset);
3131            unsafe {
3132                // Copy the object into the buffer.
3133                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
3134                (buf_ptr as *mut WlanFullmacSignalReportIndication)
3135                    .write_unaligned((self as *const WlanFullmacSignalReportIndication).read());
3136                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
3137                // done second because the memcpy will write garbage to these bytes.
3138            }
3139            Ok(())
3140        }
3141    }
3142    unsafe impl<
3143        D: fidl::encoding::ResourceDialect,
3144        T0: fidl::encoding::Encode<i8, D>,
3145        T1: fidl::encoding::Encode<i8, D>,
3146    > fidl::encoding::Encode<WlanFullmacSignalReportIndication, D> for (T0, T1)
3147    {
3148        #[inline]
3149        unsafe fn encode(
3150            self,
3151            encoder: &mut fidl::encoding::Encoder<'_, D>,
3152            offset: usize,
3153            depth: fidl::encoding::Depth,
3154        ) -> fidl::Result<()> {
3155            encoder.debug_check_bounds::<WlanFullmacSignalReportIndication>(offset);
3156            // Zero out padding regions. There's no need to apply masks
3157            // because the unmasked parts will be overwritten by fields.
3158            // Write the fields.
3159            self.0.encode(encoder, offset + 0, depth)?;
3160            self.1.encode(encoder, offset + 1, depth)?;
3161            Ok(())
3162        }
3163    }
3164
3165    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3166        for WlanFullmacSignalReportIndication
3167    {
3168        #[inline(always)]
3169        fn new_empty() -> Self {
3170            Self { rssi_dbm: fidl::new_empty!(i8, D), snr_db: fidl::new_empty!(i8, D) }
3171        }
3172
3173        #[inline]
3174        unsafe fn decode(
3175            &mut self,
3176            decoder: &mut fidl::encoding::Decoder<'_, D>,
3177            offset: usize,
3178            _depth: fidl::encoding::Depth,
3179        ) -> fidl::Result<()> {
3180            decoder.debug_check_bounds::<Self>(offset);
3181            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
3182            // Verify that padding bytes are zero.
3183            // Copy from the buffer into the object.
3184            unsafe {
3185                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 2);
3186            }
3187            Ok(())
3188        }
3189    }
3190
3191    impl BandCapability {
3192        #[inline(always)]
3193        fn max_ordinal_present(&self) -> u64 {
3194            if let Some(_) = self.primary_channels {
3195                return 5;
3196            }
3197            if let Some(_) = self.vht_caps {
3198                return 4;
3199            }
3200            if let Some(_) = self.ht_caps {
3201                return 3;
3202            }
3203            if let Some(_) = self.basic_rates {
3204                return 2;
3205            }
3206            if let Some(_) = self.band {
3207                return 1;
3208            }
3209            0
3210        }
3211    }
3212
3213    impl fidl::encoding::ValueTypeMarker for BandCapability {
3214        type Borrowed<'a> = &'a Self;
3215        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3216            value
3217        }
3218    }
3219
3220    unsafe impl fidl::encoding::TypeMarker for BandCapability {
3221        type Owned = Self;
3222
3223        #[inline(always)]
3224        fn inline_align(_context: fidl::encoding::Context) -> usize {
3225            8
3226        }
3227
3228        #[inline(always)]
3229        fn inline_size(_context: fidl::encoding::Context) -> usize {
3230            16
3231        }
3232    }
3233
3234    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BandCapability, D>
3235        for &BandCapability
3236    {
3237        unsafe fn encode(
3238            self,
3239            encoder: &mut fidl::encoding::Encoder<'_, D>,
3240            offset: usize,
3241            mut depth: fidl::encoding::Depth,
3242        ) -> fidl::Result<()> {
3243            encoder.debug_check_bounds::<BandCapability>(offset);
3244            // Vector header
3245            let max_ordinal: u64 = self.max_ordinal_present();
3246            encoder.write_num(max_ordinal, offset);
3247            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3248            // Calling encoder.out_of_line_offset(0) is not allowed.
3249            if max_ordinal == 0 {
3250                return Ok(());
3251            }
3252            depth.increment()?;
3253            let envelope_size = 8;
3254            let bytes_len = max_ordinal as usize * envelope_size;
3255            #[allow(unused_variables)]
3256            let offset = encoder.out_of_line_offset(bytes_len);
3257            let mut _prev_end_offset: usize = 0;
3258            if 1 > max_ordinal {
3259                return Ok(());
3260            }
3261
3262            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3263            // are envelope_size bytes.
3264            let cur_offset: usize = (1 - 1) * envelope_size;
3265
3266            // Zero reserved fields.
3267            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3268
3269            // Safety:
3270            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3271            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3272            //   envelope_size bytes, there is always sufficient room.
3273            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::WlanBand, D>(
3274            self.band.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::WlanBand as fidl::encoding::ValueTypeMarker>::borrow),
3275            encoder, offset + cur_offset, depth
3276        )?;
3277
3278            _prev_end_offset = cur_offset + envelope_size;
3279            if 2 > max_ordinal {
3280                return Ok(());
3281            }
3282
3283            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3284            // are envelope_size bytes.
3285            let cur_offset: usize = (2 - 1) * envelope_size;
3286
3287            // Zero reserved fields.
3288            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3289
3290            // Safety:
3291            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3292            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3293            //   envelope_size bytes, there is always sufficient room.
3294            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 12>, D>(
3295                self.basic_rates.as_ref().map(
3296                    <fidl::encoding::Vector<u8, 12> as fidl::encoding::ValueTypeMarker>::borrow,
3297                ),
3298                encoder,
3299                offset + cur_offset,
3300                depth,
3301            )?;
3302
3303            _prev_end_offset = cur_offset + envelope_size;
3304            if 3 > max_ordinal {
3305                return Ok(());
3306            }
3307
3308            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3309            // are envelope_size bytes.
3310            let cur_offset: usize = (3 - 1) * envelope_size;
3311
3312            // Zero reserved fields.
3313            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3314
3315            // Safety:
3316            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3317            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3318            //   envelope_size bytes, there is always sufficient room.
3319            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::HtCapabilities, D>(
3320            self.ht_caps.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::HtCapabilities as fidl::encoding::ValueTypeMarker>::borrow),
3321            encoder, offset + cur_offset, depth
3322        )?;
3323
3324            _prev_end_offset = cur_offset + envelope_size;
3325            if 4 > max_ordinal {
3326                return Ok(());
3327            }
3328
3329            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3330            // are envelope_size bytes.
3331            let cur_offset: usize = (4 - 1) * envelope_size;
3332
3333            // Zero reserved fields.
3334            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3335
3336            // Safety:
3337            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3338            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3339            //   envelope_size bytes, there is always sufficient room.
3340            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities, D>(
3341            self.vht_caps.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities as fidl::encoding::ValueTypeMarker>::borrow),
3342            encoder, offset + cur_offset, depth
3343        )?;
3344
3345            _prev_end_offset = cur_offset + envelope_size;
3346            if 5 > max_ordinal {
3347                return Ok(());
3348            }
3349
3350            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3351            // are envelope_size bytes.
3352            let cur_offset: usize = (5 - 1) * envelope_size;
3353
3354            // Zero reserved fields.
3355            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3356
3357            // Safety:
3358            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3359            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3360            //   envelope_size bytes, there is always sufficient room.
3361            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, 256>, D>(
3362            self.primary_channels.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, 256> as fidl::encoding::ValueTypeMarker>::borrow),
3363            encoder, offset + cur_offset, depth
3364        )?;
3365
3366            _prev_end_offset = cur_offset + envelope_size;
3367
3368            Ok(())
3369        }
3370    }
3371
3372    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BandCapability {
3373        #[inline(always)]
3374        fn new_empty() -> Self {
3375            Self::default()
3376        }
3377
3378        unsafe fn decode(
3379            &mut self,
3380            decoder: &mut fidl::encoding::Decoder<'_, D>,
3381            offset: usize,
3382            mut depth: fidl::encoding::Depth,
3383        ) -> fidl::Result<()> {
3384            decoder.debug_check_bounds::<Self>(offset);
3385            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3386                None => return Err(fidl::Error::NotNullable),
3387                Some(len) => len,
3388            };
3389            // Calling decoder.out_of_line_offset(0) is not allowed.
3390            if len == 0 {
3391                return Ok(());
3392            };
3393            depth.increment()?;
3394            let envelope_size = 8;
3395            let bytes_len = len * envelope_size;
3396            let offset = decoder.out_of_line_offset(bytes_len)?;
3397            // Decode the envelope for each type.
3398            let mut _next_ordinal_to_read = 0;
3399            let mut next_offset = offset;
3400            let end_offset = offset + bytes_len;
3401            _next_ordinal_to_read += 1;
3402            if next_offset >= end_offset {
3403                return Ok(());
3404            }
3405
3406            // Decode unknown envelopes for gaps in ordinals.
3407            while _next_ordinal_to_read < 1 {
3408                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3409                _next_ordinal_to_read += 1;
3410                next_offset += envelope_size;
3411            }
3412
3413            let next_out_of_line = decoder.next_out_of_line();
3414            let handles_before = decoder.remaining_handles();
3415            if let Some((inlined, num_bytes, num_handles)) =
3416                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3417            {
3418                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::WlanBand as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3419                if inlined != (member_inline_size <= 4) {
3420                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3421                }
3422                let inner_offset;
3423                let mut inner_depth = depth.clone();
3424                if inlined {
3425                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3426                    inner_offset = next_offset;
3427                } else {
3428                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3429                    inner_depth.increment()?;
3430                }
3431                let val_ref = self.band.get_or_insert_with(|| {
3432                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::WlanBand, D)
3433                });
3434                fidl::decode!(
3435                    fidl_fuchsia_wlan_ieee80211_common::WlanBand,
3436                    D,
3437                    val_ref,
3438                    decoder,
3439                    inner_offset,
3440                    inner_depth
3441                )?;
3442                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3443                {
3444                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3445                }
3446                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3447                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3448                }
3449            }
3450
3451            next_offset += envelope_size;
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 < 2 {
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 =
3470                    <fidl::encoding::Vector<u8, 12> as fidl::encoding::TypeMarker>::inline_size(
3471                        decoder.context,
3472                    );
3473                if inlined != (member_inline_size <= 4) {
3474                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3475                }
3476                let inner_offset;
3477                let mut inner_depth = depth.clone();
3478                if inlined {
3479                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3480                    inner_offset = next_offset;
3481                } else {
3482                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3483                    inner_depth.increment()?;
3484                }
3485                let val_ref = self
3486                    .basic_rates
3487                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 12>, D));
3488                fidl::decode!(fidl::encoding::Vector<u8, 12>, D, val_ref, decoder, inner_offset, inner_depth)?;
3489                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3490                {
3491                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3492                }
3493                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3494                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3495                }
3496            }
3497
3498            next_offset += envelope_size;
3499            _next_ordinal_to_read += 1;
3500            if next_offset >= end_offset {
3501                return Ok(());
3502            }
3503
3504            // Decode unknown envelopes for gaps in ordinals.
3505            while _next_ordinal_to_read < 3 {
3506                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3507                _next_ordinal_to_read += 1;
3508                next_offset += envelope_size;
3509            }
3510
3511            let next_out_of_line = decoder.next_out_of_line();
3512            let handles_before = decoder.remaining_handles();
3513            if let Some((inlined, num_bytes, num_handles)) =
3514                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3515            {
3516                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::HtCapabilities as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3517                if inlined != (member_inline_size <= 4) {
3518                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3519                }
3520                let inner_offset;
3521                let mut inner_depth = depth.clone();
3522                if inlined {
3523                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3524                    inner_offset = next_offset;
3525                } else {
3526                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3527                    inner_depth.increment()?;
3528                }
3529                let val_ref = self.ht_caps.get_or_insert_with(|| {
3530                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::HtCapabilities, D)
3531                });
3532                fidl::decode!(
3533                    fidl_fuchsia_wlan_ieee80211_common::HtCapabilities,
3534                    D,
3535                    val_ref,
3536                    decoder,
3537                    inner_offset,
3538                    inner_depth
3539                )?;
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 < 4 {
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::VhtCapabilities 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.vht_caps.get_or_insert_with(|| {
3581                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities, D)
3582                });
3583                fidl::decode!(
3584                    fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities,
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 < 5 {
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::encoding::Vector<
3619                    fidl_fuchsia_wlan_ieee80211_common::ChannelNumber,
3620                    256,
3621                > as fidl::encoding::TypeMarker>::inline_size(
3622                    decoder.context
3623                );
3624                if inlined != (member_inline_size <= 4) {
3625                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3626                }
3627                let inner_offset;
3628                let mut inner_depth = depth.clone();
3629                if inlined {
3630                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3631                    inner_offset = next_offset;
3632                } else {
3633                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3634                    inner_depth.increment()?;
3635                }
3636                let val_ref =
3637                self.primary_channels.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, 256>, D));
3638                fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, 256>, D, val_ref, decoder, inner_offset, inner_depth)?;
3639                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3640                {
3641                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3642                }
3643                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3644                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3645                }
3646            }
3647
3648            next_offset += envelope_size;
3649
3650            // Decode the remaining unknown envelopes.
3651            while next_offset < end_offset {
3652                _next_ordinal_to_read += 1;
3653                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3654                next_offset += envelope_size;
3655            }
3656
3657            Ok(())
3658        }
3659    }
3660
3661    impl SaeFrame {
3662        #[inline(always)]
3663        fn max_ordinal_present(&self) -> u64 {
3664            if let Some(_) = self.sae_fields {
3665                return 4;
3666            }
3667            if let Some(_) = self.seq_num {
3668                return 3;
3669            }
3670            if let Some(_) = self.status_code {
3671                return 2;
3672            }
3673            if let Some(_) = self.peer_sta_address {
3674                return 1;
3675            }
3676            0
3677        }
3678    }
3679
3680    impl fidl::encoding::ValueTypeMarker for SaeFrame {
3681        type Borrowed<'a> = &'a Self;
3682        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3683            value
3684        }
3685    }
3686
3687    unsafe impl fidl::encoding::TypeMarker for SaeFrame {
3688        type Owned = Self;
3689
3690        #[inline(always)]
3691        fn inline_align(_context: fidl::encoding::Context) -> usize {
3692            8
3693        }
3694
3695        #[inline(always)]
3696        fn inline_size(_context: fidl::encoding::Context) -> usize {
3697            16
3698        }
3699    }
3700
3701    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SaeFrame, D> for &SaeFrame {
3702        unsafe fn encode(
3703            self,
3704            encoder: &mut fidl::encoding::Encoder<'_, D>,
3705            offset: usize,
3706            mut depth: fidl::encoding::Depth,
3707        ) -> fidl::Result<()> {
3708            encoder.debug_check_bounds::<SaeFrame>(offset);
3709            // Vector header
3710            let max_ordinal: u64 = self.max_ordinal_present();
3711            encoder.write_num(max_ordinal, offset);
3712            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3713            // Calling encoder.out_of_line_offset(0) is not allowed.
3714            if max_ordinal == 0 {
3715                return Ok(());
3716            }
3717            depth.increment()?;
3718            let envelope_size = 8;
3719            let bytes_len = max_ordinal as usize * envelope_size;
3720            #[allow(unused_variables)]
3721            let offset = encoder.out_of_line_offset(bytes_len);
3722            let mut _prev_end_offset: usize = 0;
3723            if 1 > max_ordinal {
3724                return Ok(());
3725            }
3726
3727            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3728            // are envelope_size bytes.
3729            let cur_offset: usize = (1 - 1) * envelope_size;
3730
3731            // Zero reserved fields.
3732            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3733
3734            // Safety:
3735            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3736            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3737            //   envelope_size bytes, there is always sufficient room.
3738            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
3739                self.peer_sta_address
3740                    .as_ref()
3741                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
3742                encoder,
3743                offset + cur_offset,
3744                depth,
3745            )?;
3746
3747            _prev_end_offset = cur_offset + envelope_size;
3748            if 2 > max_ordinal {
3749                return Ok(());
3750            }
3751
3752            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3753            // are envelope_size bytes.
3754            let cur_offset: usize = (2 - 1) * envelope_size;
3755
3756            // Zero reserved fields.
3757            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3758
3759            // Safety:
3760            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3761            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3762            //   envelope_size bytes, there is always sufficient room.
3763            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::StatusCode, D>(
3764            self.status_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
3765            encoder, offset + cur_offset, depth
3766        )?;
3767
3768            _prev_end_offset = cur_offset + envelope_size;
3769            if 3 > max_ordinal {
3770                return Ok(());
3771            }
3772
3773            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3774            // are envelope_size bytes.
3775            let cur_offset: usize = (3 - 1) * envelope_size;
3776
3777            // Zero reserved fields.
3778            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3779
3780            // Safety:
3781            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3782            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3783            //   envelope_size bytes, there is always sufficient room.
3784            fidl::encoding::encode_in_envelope_optional::<u16, D>(
3785                self.seq_num.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
3786                encoder,
3787                offset + cur_offset,
3788                depth,
3789            )?;
3790
3791            _prev_end_offset = cur_offset + envelope_size;
3792            if 4 > max_ordinal {
3793                return Ok(());
3794            }
3795
3796            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3797            // are envelope_size bytes.
3798            let cur_offset: usize = (4 - 1) * envelope_size;
3799
3800            // Zero reserved fields.
3801            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3802
3803            // Safety:
3804            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3805            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3806            //   envelope_size bytes, there is always sufficient room.
3807            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
3808            self.sae_fields.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
3809            encoder, offset + cur_offset, depth
3810        )?;
3811
3812            _prev_end_offset = cur_offset + envelope_size;
3813
3814            Ok(())
3815        }
3816    }
3817
3818    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SaeFrame {
3819        #[inline(always)]
3820        fn new_empty() -> Self {
3821            Self::default()
3822        }
3823
3824        unsafe fn decode(
3825            &mut self,
3826            decoder: &mut fidl::encoding::Decoder<'_, D>,
3827            offset: usize,
3828            mut depth: fidl::encoding::Depth,
3829        ) -> fidl::Result<()> {
3830            decoder.debug_check_bounds::<Self>(offset);
3831            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3832                None => return Err(fidl::Error::NotNullable),
3833                Some(len) => len,
3834            };
3835            // Calling decoder.out_of_line_offset(0) is not allowed.
3836            if len == 0 {
3837                return Ok(());
3838            };
3839            depth.increment()?;
3840            let envelope_size = 8;
3841            let bytes_len = len * envelope_size;
3842            let offset = decoder.out_of_line_offset(bytes_len)?;
3843            // Decode the envelope for each type.
3844            let mut _next_ordinal_to_read = 0;
3845            let mut next_offset = offset;
3846            let end_offset = offset + bytes_len;
3847            _next_ordinal_to_read += 1;
3848            if next_offset >= end_offset {
3849                return Ok(());
3850            }
3851
3852            // Decode unknown envelopes for gaps in ordinals.
3853            while _next_ordinal_to_read < 1 {
3854                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3855                _next_ordinal_to_read += 1;
3856                next_offset += envelope_size;
3857            }
3858
3859            let next_out_of_line = decoder.next_out_of_line();
3860            let handles_before = decoder.remaining_handles();
3861            if let Some((inlined, num_bytes, num_handles)) =
3862                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3863            {
3864                let member_inline_size =
3865                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
3866                        decoder.context,
3867                    );
3868                if inlined != (member_inline_size <= 4) {
3869                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3870                }
3871                let inner_offset;
3872                let mut inner_depth = depth.clone();
3873                if inlined {
3874                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3875                    inner_offset = next_offset;
3876                } else {
3877                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3878                    inner_depth.increment()?;
3879                }
3880                let val_ref = self
3881                    .peer_sta_address
3882                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
3883                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
3884                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3885                {
3886                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3887                }
3888                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3889                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3890                }
3891            }
3892
3893            next_offset += envelope_size;
3894            _next_ordinal_to_read += 1;
3895            if next_offset >= end_offset {
3896                return Ok(());
3897            }
3898
3899            // Decode unknown envelopes for gaps in ordinals.
3900            while _next_ordinal_to_read < 2 {
3901                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3902                _next_ordinal_to_read += 1;
3903                next_offset += envelope_size;
3904            }
3905
3906            let next_out_of_line = decoder.next_out_of_line();
3907            let handles_before = decoder.remaining_handles();
3908            if let Some((inlined, num_bytes, num_handles)) =
3909                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3910            {
3911                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3912                if inlined != (member_inline_size <= 4) {
3913                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3914                }
3915                let inner_offset;
3916                let mut inner_depth = depth.clone();
3917                if inlined {
3918                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3919                    inner_offset = next_offset;
3920                } else {
3921                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3922                    inner_depth.increment()?;
3923                }
3924                let val_ref = self.status_code.get_or_insert_with(|| {
3925                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::StatusCode, D)
3926                });
3927                fidl::decode!(
3928                    fidl_fuchsia_wlan_ieee80211_common::StatusCode,
3929                    D,
3930                    val_ref,
3931                    decoder,
3932                    inner_offset,
3933                    inner_depth
3934                )?;
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 < 3 {
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 =
3963                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3964                if inlined != (member_inline_size <= 4) {
3965                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3966                }
3967                let inner_offset;
3968                let mut inner_depth = depth.clone();
3969                if inlined {
3970                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3971                    inner_offset = next_offset;
3972                } else {
3973                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3974                    inner_depth.increment()?;
3975                }
3976                let val_ref = self.seq_num.get_or_insert_with(|| fidl::new_empty!(u16, D));
3977                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
3978                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3979                {
3980                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3981                }
3982                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3983                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3984                }
3985            }
3986
3987            next_offset += envelope_size;
3988            _next_ordinal_to_read += 1;
3989            if next_offset >= end_offset {
3990                return Ok(());
3991            }
3992
3993            // Decode unknown envelopes for gaps in ordinals.
3994            while _next_ordinal_to_read < 4 {
3995                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3996                _next_ordinal_to_read += 1;
3997                next_offset += envelope_size;
3998            }
3999
4000            let next_out_of_line = decoder.next_out_of_line();
4001            let handles_before = decoder.remaining_handles();
4002            if let Some((inlined, num_bytes, num_handles)) =
4003                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4004            {
4005                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4006                if inlined != (member_inline_size <= 4) {
4007                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4008                }
4009                let inner_offset;
4010                let mut inner_depth = depth.clone();
4011                if inlined {
4012                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4013                    inner_offset = next_offset;
4014                } else {
4015                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4016                    inner_depth.increment()?;
4017                }
4018                let val_ref = self.sae_fields.get_or_insert_with(|| {
4019                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
4020                });
4021                fidl::decode!(
4022                    fidl::encoding::UnboundedVector<u8>,
4023                    D,
4024                    val_ref,
4025                    decoder,
4026                    inner_offset,
4027                    inner_depth
4028                )?;
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
4040            // Decode the remaining unknown envelopes.
4041            while next_offset < end_offset {
4042                _next_ordinal_to_read += 1;
4043                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4044                next_offset += envelope_size;
4045            }
4046
4047            Ok(())
4048        }
4049    }
4050
4051    impl WlanFullmacImplAssocRespRequest {
4052        #[inline(always)]
4053        fn max_ordinal_present(&self) -> u64 {
4054            if let Some(_) = self.association_id {
4055                return 3;
4056            }
4057            if let Some(_) = self.result_code {
4058                return 2;
4059            }
4060            if let Some(_) = self.peer_sta_address {
4061                return 1;
4062            }
4063            0
4064        }
4065    }
4066
4067    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplAssocRespRequest {
4068        type Borrowed<'a> = &'a Self;
4069        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4070            value
4071        }
4072    }
4073
4074    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplAssocRespRequest {
4075        type Owned = Self;
4076
4077        #[inline(always)]
4078        fn inline_align(_context: fidl::encoding::Context) -> usize {
4079            8
4080        }
4081
4082        #[inline(always)]
4083        fn inline_size(_context: fidl::encoding::Context) -> usize {
4084            16
4085        }
4086    }
4087
4088    unsafe impl<D: fidl::encoding::ResourceDialect>
4089        fidl::encoding::Encode<WlanFullmacImplAssocRespRequest, D>
4090        for &WlanFullmacImplAssocRespRequest
4091    {
4092        unsafe fn encode(
4093            self,
4094            encoder: &mut fidl::encoding::Encoder<'_, D>,
4095            offset: usize,
4096            mut depth: fidl::encoding::Depth,
4097        ) -> fidl::Result<()> {
4098            encoder.debug_check_bounds::<WlanFullmacImplAssocRespRequest>(offset);
4099            // Vector header
4100            let max_ordinal: u64 = self.max_ordinal_present();
4101            encoder.write_num(max_ordinal, offset);
4102            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4103            // Calling encoder.out_of_line_offset(0) is not allowed.
4104            if max_ordinal == 0 {
4105                return Ok(());
4106            }
4107            depth.increment()?;
4108            let envelope_size = 8;
4109            let bytes_len = max_ordinal as usize * envelope_size;
4110            #[allow(unused_variables)]
4111            let offset = encoder.out_of_line_offset(bytes_len);
4112            let mut _prev_end_offset: usize = 0;
4113            if 1 > max_ordinal {
4114                return Ok(());
4115            }
4116
4117            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4118            // are envelope_size bytes.
4119            let cur_offset: usize = (1 - 1) * envelope_size;
4120
4121            // Zero reserved fields.
4122            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4123
4124            // Safety:
4125            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4126            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4127            //   envelope_size bytes, there is always sufficient room.
4128            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
4129                self.peer_sta_address
4130                    .as_ref()
4131                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
4132                encoder,
4133                offset + cur_offset,
4134                depth,
4135            )?;
4136
4137            _prev_end_offset = cur_offset + envelope_size;
4138            if 2 > max_ordinal {
4139                return Ok(());
4140            }
4141
4142            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4143            // are envelope_size bytes.
4144            let cur_offset: usize = (2 - 1) * envelope_size;
4145
4146            // Zero reserved fields.
4147            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4148
4149            // Safety:
4150            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4151            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4152            //   envelope_size bytes, there is always sufficient room.
4153            fidl::encoding::encode_in_envelope_optional::<WlanAssocResult, D>(
4154                self.result_code
4155                    .as_ref()
4156                    .map(<WlanAssocResult as fidl::encoding::ValueTypeMarker>::borrow),
4157                encoder,
4158                offset + cur_offset,
4159                depth,
4160            )?;
4161
4162            _prev_end_offset = cur_offset + envelope_size;
4163            if 3 > max_ordinal {
4164                return Ok(());
4165            }
4166
4167            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4168            // are envelope_size bytes.
4169            let cur_offset: usize = (3 - 1) * envelope_size;
4170
4171            // Zero reserved fields.
4172            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4173
4174            // Safety:
4175            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4176            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4177            //   envelope_size bytes, there is always sufficient room.
4178            fidl::encoding::encode_in_envelope_optional::<u16, D>(
4179                self.association_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
4180                encoder,
4181                offset + cur_offset,
4182                depth,
4183            )?;
4184
4185            _prev_end_offset = cur_offset + envelope_size;
4186
4187            Ok(())
4188        }
4189    }
4190
4191    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4192        for WlanFullmacImplAssocRespRequest
4193    {
4194        #[inline(always)]
4195        fn new_empty() -> Self {
4196            Self::default()
4197        }
4198
4199        unsafe fn decode(
4200            &mut self,
4201            decoder: &mut fidl::encoding::Decoder<'_, D>,
4202            offset: usize,
4203            mut depth: fidl::encoding::Depth,
4204        ) -> fidl::Result<()> {
4205            decoder.debug_check_bounds::<Self>(offset);
4206            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4207                None => return Err(fidl::Error::NotNullable),
4208                Some(len) => len,
4209            };
4210            // Calling decoder.out_of_line_offset(0) is not allowed.
4211            if len == 0 {
4212                return Ok(());
4213            };
4214            depth.increment()?;
4215            let envelope_size = 8;
4216            let bytes_len = len * envelope_size;
4217            let offset = decoder.out_of_line_offset(bytes_len)?;
4218            // Decode the envelope for each type.
4219            let mut _next_ordinal_to_read = 0;
4220            let mut next_offset = offset;
4221            let end_offset = offset + bytes_len;
4222            _next_ordinal_to_read += 1;
4223            if next_offset >= end_offset {
4224                return Ok(());
4225            }
4226
4227            // Decode unknown envelopes for gaps in ordinals.
4228            while _next_ordinal_to_read < 1 {
4229                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4230                _next_ordinal_to_read += 1;
4231                next_offset += envelope_size;
4232            }
4233
4234            let next_out_of_line = decoder.next_out_of_line();
4235            let handles_before = decoder.remaining_handles();
4236            if let Some((inlined, num_bytes, num_handles)) =
4237                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4238            {
4239                let member_inline_size =
4240                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
4241                        decoder.context,
4242                    );
4243                if inlined != (member_inline_size <= 4) {
4244                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4245                }
4246                let inner_offset;
4247                let mut inner_depth = depth.clone();
4248                if inlined {
4249                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4250                    inner_offset = next_offset;
4251                } else {
4252                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4253                    inner_depth.increment()?;
4254                }
4255                let val_ref = self
4256                    .peer_sta_address
4257                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
4258                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
4259                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4260                {
4261                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4262                }
4263                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4264                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4265                }
4266            }
4267
4268            next_offset += envelope_size;
4269            _next_ordinal_to_read += 1;
4270            if next_offset >= end_offset {
4271                return Ok(());
4272            }
4273
4274            // Decode unknown envelopes for gaps in ordinals.
4275            while _next_ordinal_to_read < 2 {
4276                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4277                _next_ordinal_to_read += 1;
4278                next_offset += envelope_size;
4279            }
4280
4281            let next_out_of_line = decoder.next_out_of_line();
4282            let handles_before = decoder.remaining_handles();
4283            if let Some((inlined, num_bytes, num_handles)) =
4284                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4285            {
4286                let member_inline_size =
4287                    <WlanAssocResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4288                if inlined != (member_inline_size <= 4) {
4289                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4290                }
4291                let inner_offset;
4292                let mut inner_depth = depth.clone();
4293                if inlined {
4294                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4295                    inner_offset = next_offset;
4296                } else {
4297                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4298                    inner_depth.increment()?;
4299                }
4300                let val_ref =
4301                    self.result_code.get_or_insert_with(|| fidl::new_empty!(WlanAssocResult, D));
4302                fidl::decode!(WlanAssocResult, D, val_ref, decoder, inner_offset, inner_depth)?;
4303                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4304                {
4305                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4306                }
4307                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4308                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4309                }
4310            }
4311
4312            next_offset += envelope_size;
4313            _next_ordinal_to_read += 1;
4314            if next_offset >= end_offset {
4315                return Ok(());
4316            }
4317
4318            // Decode unknown envelopes for gaps in ordinals.
4319            while _next_ordinal_to_read < 3 {
4320                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4321                _next_ordinal_to_read += 1;
4322                next_offset += envelope_size;
4323            }
4324
4325            let next_out_of_line = decoder.next_out_of_line();
4326            let handles_before = decoder.remaining_handles();
4327            if let Some((inlined, num_bytes, num_handles)) =
4328                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4329            {
4330                let member_inline_size =
4331                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4332                if inlined != (member_inline_size <= 4) {
4333                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4334                }
4335                let inner_offset;
4336                let mut inner_depth = depth.clone();
4337                if inlined {
4338                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4339                    inner_offset = next_offset;
4340                } else {
4341                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4342                    inner_depth.increment()?;
4343                }
4344                let val_ref = self.association_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
4345                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
4346                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4347                {
4348                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4349                }
4350                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4351                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4352                }
4353            }
4354
4355            next_offset += envelope_size;
4356
4357            // Decode the remaining unknown envelopes.
4358            while next_offset < end_offset {
4359                _next_ordinal_to_read += 1;
4360                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4361                next_offset += envelope_size;
4362            }
4363
4364            Ok(())
4365        }
4366    }
4367
4368    impl WlanFullmacImplAuthRespRequest {
4369        #[inline(always)]
4370        fn max_ordinal_present(&self) -> u64 {
4371            if let Some(_) = self.result_code {
4372                return 2;
4373            }
4374            if let Some(_) = self.peer_sta_address {
4375                return 1;
4376            }
4377            0
4378        }
4379    }
4380
4381    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplAuthRespRequest {
4382        type Borrowed<'a> = &'a Self;
4383        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4384            value
4385        }
4386    }
4387
4388    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplAuthRespRequest {
4389        type Owned = Self;
4390
4391        #[inline(always)]
4392        fn inline_align(_context: fidl::encoding::Context) -> usize {
4393            8
4394        }
4395
4396        #[inline(always)]
4397        fn inline_size(_context: fidl::encoding::Context) -> usize {
4398            16
4399        }
4400    }
4401
4402    unsafe impl<D: fidl::encoding::ResourceDialect>
4403        fidl::encoding::Encode<WlanFullmacImplAuthRespRequest, D>
4404        for &WlanFullmacImplAuthRespRequest
4405    {
4406        unsafe fn encode(
4407            self,
4408            encoder: &mut fidl::encoding::Encoder<'_, D>,
4409            offset: usize,
4410            mut depth: fidl::encoding::Depth,
4411        ) -> fidl::Result<()> {
4412            encoder.debug_check_bounds::<WlanFullmacImplAuthRespRequest>(offset);
4413            // Vector header
4414            let max_ordinal: u64 = self.max_ordinal_present();
4415            encoder.write_num(max_ordinal, offset);
4416            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4417            // Calling encoder.out_of_line_offset(0) is not allowed.
4418            if max_ordinal == 0 {
4419                return Ok(());
4420            }
4421            depth.increment()?;
4422            let envelope_size = 8;
4423            let bytes_len = max_ordinal as usize * envelope_size;
4424            #[allow(unused_variables)]
4425            let offset = encoder.out_of_line_offset(bytes_len);
4426            let mut _prev_end_offset: usize = 0;
4427            if 1 > max_ordinal {
4428                return Ok(());
4429            }
4430
4431            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4432            // are envelope_size bytes.
4433            let cur_offset: usize = (1 - 1) * envelope_size;
4434
4435            // Zero reserved fields.
4436            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4437
4438            // Safety:
4439            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4440            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4441            //   envelope_size bytes, there is always sufficient room.
4442            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
4443                self.peer_sta_address
4444                    .as_ref()
4445                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
4446                encoder,
4447                offset + cur_offset,
4448                depth,
4449            )?;
4450
4451            _prev_end_offset = cur_offset + envelope_size;
4452            if 2 > max_ordinal {
4453                return Ok(());
4454            }
4455
4456            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4457            // are envelope_size bytes.
4458            let cur_offset: usize = (2 - 1) * envelope_size;
4459
4460            // Zero reserved fields.
4461            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4462
4463            // Safety:
4464            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4465            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4466            //   envelope_size bytes, there is always sufficient room.
4467            fidl::encoding::encode_in_envelope_optional::<WlanAuthResult, D>(
4468                self.result_code
4469                    .as_ref()
4470                    .map(<WlanAuthResult as fidl::encoding::ValueTypeMarker>::borrow),
4471                encoder,
4472                offset + cur_offset,
4473                depth,
4474            )?;
4475
4476            _prev_end_offset = cur_offset + envelope_size;
4477
4478            Ok(())
4479        }
4480    }
4481
4482    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4483        for WlanFullmacImplAuthRespRequest
4484    {
4485        #[inline(always)]
4486        fn new_empty() -> Self {
4487            Self::default()
4488        }
4489
4490        unsafe fn decode(
4491            &mut self,
4492            decoder: &mut fidl::encoding::Decoder<'_, D>,
4493            offset: usize,
4494            mut depth: fidl::encoding::Depth,
4495        ) -> fidl::Result<()> {
4496            decoder.debug_check_bounds::<Self>(offset);
4497            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4498                None => return Err(fidl::Error::NotNullable),
4499                Some(len) => len,
4500            };
4501            // Calling decoder.out_of_line_offset(0) is not allowed.
4502            if len == 0 {
4503                return Ok(());
4504            };
4505            depth.increment()?;
4506            let envelope_size = 8;
4507            let bytes_len = len * envelope_size;
4508            let offset = decoder.out_of_line_offset(bytes_len)?;
4509            // Decode the envelope for each type.
4510            let mut _next_ordinal_to_read = 0;
4511            let mut next_offset = offset;
4512            let end_offset = offset + bytes_len;
4513            _next_ordinal_to_read += 1;
4514            if next_offset >= end_offset {
4515                return Ok(());
4516            }
4517
4518            // Decode unknown envelopes for gaps in ordinals.
4519            while _next_ordinal_to_read < 1 {
4520                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4521                _next_ordinal_to_read += 1;
4522                next_offset += envelope_size;
4523            }
4524
4525            let next_out_of_line = decoder.next_out_of_line();
4526            let handles_before = decoder.remaining_handles();
4527            if let Some((inlined, num_bytes, num_handles)) =
4528                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4529            {
4530                let member_inline_size =
4531                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
4532                        decoder.context,
4533                    );
4534                if inlined != (member_inline_size <= 4) {
4535                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4536                }
4537                let inner_offset;
4538                let mut inner_depth = depth.clone();
4539                if inlined {
4540                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4541                    inner_offset = next_offset;
4542                } else {
4543                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4544                    inner_depth.increment()?;
4545                }
4546                let val_ref = self
4547                    .peer_sta_address
4548                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
4549                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
4550                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4551                {
4552                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4553                }
4554                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4555                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4556                }
4557            }
4558
4559            next_offset += envelope_size;
4560            _next_ordinal_to_read += 1;
4561            if next_offset >= end_offset {
4562                return Ok(());
4563            }
4564
4565            // Decode unknown envelopes for gaps in ordinals.
4566            while _next_ordinal_to_read < 2 {
4567                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4568                _next_ordinal_to_read += 1;
4569                next_offset += envelope_size;
4570            }
4571
4572            let next_out_of_line = decoder.next_out_of_line();
4573            let handles_before = decoder.remaining_handles();
4574            if let Some((inlined, num_bytes, num_handles)) =
4575                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4576            {
4577                let member_inline_size =
4578                    <WlanAuthResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4579                if inlined != (member_inline_size <= 4) {
4580                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4581                }
4582                let inner_offset;
4583                let mut inner_depth = depth.clone();
4584                if inlined {
4585                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4586                    inner_offset = next_offset;
4587                } else {
4588                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4589                    inner_depth.increment()?;
4590                }
4591                let val_ref =
4592                    self.result_code.get_or_insert_with(|| fidl::new_empty!(WlanAuthResult, D));
4593                fidl::decode!(WlanAuthResult, D, val_ref, decoder, inner_offset, inner_depth)?;
4594                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4595                {
4596                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4597                }
4598                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4599                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4600                }
4601            }
4602
4603            next_offset += envelope_size;
4604
4605            // Decode the remaining unknown envelopes.
4606            while next_offset < end_offset {
4607                _next_ordinal_to_read += 1;
4608                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4609                next_offset += envelope_size;
4610            }
4611
4612            Ok(())
4613        }
4614    }
4615
4616    impl WlanFullmacImplConnectRequest {
4617        #[inline(always)]
4618        fn max_ordinal_present(&self) -> u64 {
4619            if let Some(_) = self.owe_public_key {
4620                return 8;
4621            }
4622            if let Some(_) = self.wep_key_desc {
4623                return 7;
4624            }
4625            if let Some(_) = self.security_ie {
4626                return 6;
4627            }
4628            if let Some(_) = self.wep_key {
4629                return 5;
4630            }
4631            if let Some(_) = self.sae_password {
4632                return 4;
4633            }
4634            if let Some(_) = self.auth_type {
4635                return 3;
4636            }
4637            if let Some(_) = self.connect_failure_timeout {
4638                return 2;
4639            }
4640            if let Some(_) = self.selected_bss {
4641                return 1;
4642            }
4643            0
4644        }
4645    }
4646
4647    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplConnectRequest {
4648        type Borrowed<'a> = &'a Self;
4649        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4650            value
4651        }
4652    }
4653
4654    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplConnectRequest {
4655        type Owned = Self;
4656
4657        #[inline(always)]
4658        fn inline_align(_context: fidl::encoding::Context) -> usize {
4659            8
4660        }
4661
4662        #[inline(always)]
4663        fn inline_size(_context: fidl::encoding::Context) -> usize {
4664            16
4665        }
4666    }
4667
4668    unsafe impl<D: fidl::encoding::ResourceDialect>
4669        fidl::encoding::Encode<WlanFullmacImplConnectRequest, D>
4670        for &WlanFullmacImplConnectRequest
4671    {
4672        unsafe fn encode(
4673            self,
4674            encoder: &mut fidl::encoding::Encoder<'_, D>,
4675            offset: usize,
4676            mut depth: fidl::encoding::Depth,
4677        ) -> fidl::Result<()> {
4678            encoder.debug_check_bounds::<WlanFullmacImplConnectRequest>(offset);
4679            // Vector header
4680            let max_ordinal: u64 = self.max_ordinal_present();
4681            encoder.write_num(max_ordinal, offset);
4682            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4683            // Calling encoder.out_of_line_offset(0) is not allowed.
4684            if max_ordinal == 0 {
4685                return Ok(());
4686            }
4687            depth.increment()?;
4688            let envelope_size = 8;
4689            let bytes_len = max_ordinal as usize * envelope_size;
4690            #[allow(unused_variables)]
4691            let offset = encoder.out_of_line_offset(bytes_len);
4692            let mut _prev_end_offset: usize = 0;
4693            if 1 > max_ordinal {
4694                return Ok(());
4695            }
4696
4697            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4698            // are envelope_size bytes.
4699            let cur_offset: usize = (1 - 1) * envelope_size;
4700
4701            // Zero reserved fields.
4702            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4703
4704            // Safety:
4705            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4706            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4707            //   envelope_size bytes, there is always sufficient room.
4708            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::BssDescription, D>(
4709            self.selected_bss.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow),
4710            encoder, offset + cur_offset, depth
4711        )?;
4712
4713            _prev_end_offset = cur_offset + envelope_size;
4714            if 2 > max_ordinal {
4715                return Ok(());
4716            }
4717
4718            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4719            // are envelope_size bytes.
4720            let cur_offset: usize = (2 - 1) * envelope_size;
4721
4722            // Zero reserved fields.
4723            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4724
4725            // Safety:
4726            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4727            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4728            //   envelope_size bytes, there is always sufficient room.
4729            fidl::encoding::encode_in_envelope_optional::<u32, D>(
4730                self.connect_failure_timeout
4731                    .as_ref()
4732                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
4733                encoder,
4734                offset + cur_offset,
4735                depth,
4736            )?;
4737
4738            _prev_end_offset = cur_offset + envelope_size;
4739            if 3 > max_ordinal {
4740                return Ok(());
4741            }
4742
4743            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4744            // are envelope_size bytes.
4745            let cur_offset: usize = (3 - 1) * envelope_size;
4746
4747            // Zero reserved fields.
4748            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4749
4750            // Safety:
4751            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4752            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4753            //   envelope_size bytes, there is always sufficient room.
4754            fidl::encoding::encode_in_envelope_optional::<WlanAuthType, D>(
4755                self.auth_type
4756                    .as_ref()
4757                    .map(<WlanAuthType as fidl::encoding::ValueTypeMarker>::borrow),
4758                encoder,
4759                offset + cur_offset,
4760                depth,
4761            )?;
4762
4763            _prev_end_offset = cur_offset + envelope_size;
4764            if 4 > max_ordinal {
4765                return Ok(());
4766            }
4767
4768            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4769            // are envelope_size bytes.
4770            let cur_offset: usize = (4 - 1) * envelope_size;
4771
4772            // Zero reserved fields.
4773            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4774
4775            // Safety:
4776            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4777            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4778            //   envelope_size bytes, there is always sufficient room.
4779            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
4780            self.sae_password.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
4781            encoder, offset + cur_offset, depth
4782        )?;
4783
4784            _prev_end_offset = cur_offset + envelope_size;
4785            if 5 > max_ordinal {
4786                return Ok(());
4787            }
4788
4789            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4790            // are envelope_size bytes.
4791            let cur_offset: usize = (5 - 1) * envelope_size;
4792
4793            // Zero reserved fields.
4794            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4795
4796            // Safety:
4797            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4798            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4799            //   envelope_size bytes, there is always sufficient room.
4800            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_driver_common::WlanKeyConfig, D>(
4801            self.wep_key.as_ref().map(<fidl_fuchsia_wlan_driver_common::WlanKeyConfig as fidl::encoding::ValueTypeMarker>::borrow),
4802            encoder, offset + cur_offset, depth
4803        )?;
4804
4805            _prev_end_offset = cur_offset + envelope_size;
4806            if 6 > max_ordinal {
4807                return Ok(());
4808            }
4809
4810            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4811            // are envelope_size bytes.
4812            let cur_offset: usize = (6 - 1) * envelope_size;
4813
4814            // Zero reserved fields.
4815            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4816
4817            // Safety:
4818            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4819            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4820            //   envelope_size bytes, there is always sufficient room.
4821            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 257>, D>(
4822                self.security_ie.as_ref().map(
4823                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::ValueTypeMarker>::borrow,
4824                ),
4825                encoder,
4826                offset + cur_offset,
4827                depth,
4828            )?;
4829
4830            _prev_end_offset = cur_offset + envelope_size;
4831            if 7 > max_ordinal {
4832                return Ok(());
4833            }
4834
4835            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4836            // are envelope_size bytes.
4837            let cur_offset: usize = (7 - 1) * envelope_size;
4838
4839            // Zero reserved fields.
4840            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4841
4842            // Safety:
4843            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4844            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4845            //   envelope_size bytes, there is always sufficient room.
4846            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor, D>(
4847            self.wep_key_desc.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor as fidl::encoding::ValueTypeMarker>::borrow),
4848            encoder, offset + cur_offset, depth
4849        )?;
4850
4851            _prev_end_offset = cur_offset + envelope_size;
4852            if 8 > max_ordinal {
4853                return Ok(());
4854            }
4855
4856            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4857            // are envelope_size bytes.
4858            let cur_offset: usize = (8 - 1) * envelope_size;
4859
4860            // Zero reserved fields.
4861            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4862
4863            // Safety:
4864            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4865            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4866            //   envelope_size bytes, there is always sufficient room.
4867            fidl::encoding::encode_in_envelope_optional::<WlanFullmacOwePublicKey, D>(
4868                self.owe_public_key
4869                    .as_ref()
4870                    .map(<WlanFullmacOwePublicKey as fidl::encoding::ValueTypeMarker>::borrow),
4871                encoder,
4872                offset + cur_offset,
4873                depth,
4874            )?;
4875
4876            _prev_end_offset = cur_offset + envelope_size;
4877
4878            Ok(())
4879        }
4880    }
4881
4882    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4883        for WlanFullmacImplConnectRequest
4884    {
4885        #[inline(always)]
4886        fn new_empty() -> Self {
4887            Self::default()
4888        }
4889
4890        unsafe fn decode(
4891            &mut self,
4892            decoder: &mut fidl::encoding::Decoder<'_, D>,
4893            offset: usize,
4894            mut depth: fidl::encoding::Depth,
4895        ) -> fidl::Result<()> {
4896            decoder.debug_check_bounds::<Self>(offset);
4897            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4898                None => return Err(fidl::Error::NotNullable),
4899                Some(len) => len,
4900            };
4901            // Calling decoder.out_of_line_offset(0) is not allowed.
4902            if len == 0 {
4903                return Ok(());
4904            };
4905            depth.increment()?;
4906            let envelope_size = 8;
4907            let bytes_len = len * envelope_size;
4908            let offset = decoder.out_of_line_offset(bytes_len)?;
4909            // Decode the envelope for each type.
4910            let mut _next_ordinal_to_read = 0;
4911            let mut next_offset = offset;
4912            let end_offset = offset + bytes_len;
4913            _next_ordinal_to_read += 1;
4914            if next_offset >= end_offset {
4915                return Ok(());
4916            }
4917
4918            // Decode unknown envelopes for gaps in ordinals.
4919            while _next_ordinal_to_read < 1 {
4920                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4921                _next_ordinal_to_read += 1;
4922                next_offset += envelope_size;
4923            }
4924
4925            let next_out_of_line = decoder.next_out_of_line();
4926            let handles_before = decoder.remaining_handles();
4927            if let Some((inlined, num_bytes, num_handles)) =
4928                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4929            {
4930                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::BssDescription as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4931                if inlined != (member_inline_size <= 4) {
4932                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4933                }
4934                let inner_offset;
4935                let mut inner_depth = depth.clone();
4936                if inlined {
4937                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4938                    inner_offset = next_offset;
4939                } else {
4940                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4941                    inner_depth.increment()?;
4942                }
4943                let val_ref = self.selected_bss.get_or_insert_with(|| {
4944                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::BssDescription, D)
4945                });
4946                fidl::decode!(
4947                    fidl_fuchsia_wlan_ieee80211_common::BssDescription,
4948                    D,
4949                    val_ref,
4950                    decoder,
4951                    inner_offset,
4952                    inner_depth
4953                )?;
4954                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4955                {
4956                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4957                }
4958                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4959                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4960                }
4961            }
4962
4963            next_offset += envelope_size;
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 < 2 {
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 =
4982                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4983                if inlined != (member_inline_size <= 4) {
4984                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4985                }
4986                let inner_offset;
4987                let mut inner_depth = depth.clone();
4988                if inlined {
4989                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4990                    inner_offset = next_offset;
4991                } else {
4992                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4993                    inner_depth.increment()?;
4994                }
4995                let val_ref =
4996                    self.connect_failure_timeout.get_or_insert_with(|| fidl::new_empty!(u32, D));
4997                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4998                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4999                {
5000                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5001                }
5002                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5003                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5004                }
5005            }
5006
5007            next_offset += envelope_size;
5008            _next_ordinal_to_read += 1;
5009            if next_offset >= end_offset {
5010                return Ok(());
5011            }
5012
5013            // Decode unknown envelopes for gaps in ordinals.
5014            while _next_ordinal_to_read < 3 {
5015                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5016                _next_ordinal_to_read += 1;
5017                next_offset += envelope_size;
5018            }
5019
5020            let next_out_of_line = decoder.next_out_of_line();
5021            let handles_before = decoder.remaining_handles();
5022            if let Some((inlined, num_bytes, num_handles)) =
5023                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5024            {
5025                let member_inline_size =
5026                    <WlanAuthType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5027                if inlined != (member_inline_size <= 4) {
5028                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5029                }
5030                let inner_offset;
5031                let mut inner_depth = depth.clone();
5032                if inlined {
5033                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5034                    inner_offset = next_offset;
5035                } else {
5036                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5037                    inner_depth.increment()?;
5038                }
5039                let val_ref =
5040                    self.auth_type.get_or_insert_with(|| fidl::new_empty!(WlanAuthType, D));
5041                fidl::decode!(WlanAuthType, D, val_ref, decoder, inner_offset, inner_depth)?;
5042                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5043                {
5044                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5045                }
5046                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5047                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5048                }
5049            }
5050
5051            next_offset += envelope_size;
5052            _next_ordinal_to_read += 1;
5053            if next_offset >= end_offset {
5054                return Ok(());
5055            }
5056
5057            // Decode unknown envelopes for gaps in ordinals.
5058            while _next_ordinal_to_read < 4 {
5059                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5060                _next_ordinal_to_read += 1;
5061                next_offset += envelope_size;
5062            }
5063
5064            let next_out_of_line = decoder.next_out_of_line();
5065            let handles_before = decoder.remaining_handles();
5066            if let Some((inlined, num_bytes, num_handles)) =
5067                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5068            {
5069                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5070                if inlined != (member_inline_size <= 4) {
5071                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5072                }
5073                let inner_offset;
5074                let mut inner_depth = depth.clone();
5075                if inlined {
5076                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5077                    inner_offset = next_offset;
5078                } else {
5079                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5080                    inner_depth.increment()?;
5081                }
5082                let val_ref = self.sae_password.get_or_insert_with(|| {
5083                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
5084                });
5085                fidl::decode!(
5086                    fidl::encoding::UnboundedVector<u8>,
5087                    D,
5088                    val_ref,
5089                    decoder,
5090                    inner_offset,
5091                    inner_depth
5092                )?;
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 < 5 {
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_fuchsia_wlan_driver_common::WlanKeyConfig 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.wep_key.get_or_insert_with(|| {
5134                    fidl::new_empty!(fidl_fuchsia_wlan_driver_common::WlanKeyConfig, D)
5135                });
5136                fidl::decode!(
5137                    fidl_fuchsia_wlan_driver_common::WlanKeyConfig,
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 < 6 {
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 =
5172                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::TypeMarker>::inline_size(
5173                        decoder.context,
5174                    );
5175                if inlined != (member_inline_size <= 4) {
5176                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5177                }
5178                let inner_offset;
5179                let mut inner_depth = depth.clone();
5180                if inlined {
5181                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5182                    inner_offset = next_offset;
5183                } else {
5184                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5185                    inner_depth.increment()?;
5186                }
5187                let val_ref = self
5188                    .security_ie
5189                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 257>, D));
5190                fidl::decode!(fidl::encoding::Vector<u8, 257>, D, val_ref, decoder, inner_offset, inner_depth)?;
5191                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5192                {
5193                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5194                }
5195                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5196                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5197                }
5198            }
5199
5200            next_offset += envelope_size;
5201            _next_ordinal_to_read += 1;
5202            if next_offset >= end_offset {
5203                return Ok(());
5204            }
5205
5206            // Decode unknown envelopes for gaps in ordinals.
5207            while _next_ordinal_to_read < 7 {
5208                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5209                _next_ordinal_to_read += 1;
5210                next_offset += envelope_size;
5211            }
5212
5213            let next_out_of_line = decoder.next_out_of_line();
5214            let handles_before = decoder.remaining_handles();
5215            if let Some((inlined, num_bytes, num_handles)) =
5216                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5217            {
5218                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5219                if inlined != (member_inline_size <= 4) {
5220                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5221                }
5222                let inner_offset;
5223                let mut inner_depth = depth.clone();
5224                if inlined {
5225                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5226                    inner_offset = next_offset;
5227                } else {
5228                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5229                    inner_depth.increment()?;
5230                }
5231                let val_ref = self.wep_key_desc.get_or_insert_with(|| {
5232                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor, D)
5233                });
5234                fidl::decode!(
5235                    fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor,
5236                    D,
5237                    val_ref,
5238                    decoder,
5239                    inner_offset,
5240                    inner_depth
5241                )?;
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 < 8 {
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 =
5270                    <WlanFullmacOwePublicKey as fidl::encoding::TypeMarker>::inline_size(
5271                        decoder.context,
5272                    );
5273                if inlined != (member_inline_size <= 4) {
5274                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5275                }
5276                let inner_offset;
5277                let mut inner_depth = depth.clone();
5278                if inlined {
5279                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5280                    inner_offset = next_offset;
5281                } else {
5282                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5283                    inner_depth.increment()?;
5284                }
5285                let val_ref = self
5286                    .owe_public_key
5287                    .get_or_insert_with(|| fidl::new_empty!(WlanFullmacOwePublicKey, D));
5288                fidl::decode!(
5289                    WlanFullmacOwePublicKey,
5290                    D,
5291                    val_ref,
5292                    decoder,
5293                    inner_offset,
5294                    inner_depth
5295                )?;
5296                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5297                {
5298                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5299                }
5300                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5301                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5302                }
5303            }
5304
5305            next_offset += envelope_size;
5306
5307            // Decode the remaining unknown envelopes.
5308            while next_offset < end_offset {
5309                _next_ordinal_to_read += 1;
5310                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5311                next_offset += envelope_size;
5312            }
5313
5314            Ok(())
5315        }
5316    }
5317
5318    impl WlanFullmacImplDeauthRequest {
5319        #[inline(always)]
5320        fn max_ordinal_present(&self) -> u64 {
5321            if let Some(_) = self.reason_code {
5322                return 2;
5323            }
5324            if let Some(_) = self.peer_sta_address {
5325                return 1;
5326            }
5327            0
5328        }
5329    }
5330
5331    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplDeauthRequest {
5332        type Borrowed<'a> = &'a Self;
5333        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5334            value
5335        }
5336    }
5337
5338    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplDeauthRequest {
5339        type Owned = Self;
5340
5341        #[inline(always)]
5342        fn inline_align(_context: fidl::encoding::Context) -> usize {
5343            8
5344        }
5345
5346        #[inline(always)]
5347        fn inline_size(_context: fidl::encoding::Context) -> usize {
5348            16
5349        }
5350    }
5351
5352    unsafe impl<D: fidl::encoding::ResourceDialect>
5353        fidl::encoding::Encode<WlanFullmacImplDeauthRequest, D> for &WlanFullmacImplDeauthRequest
5354    {
5355        unsafe fn encode(
5356            self,
5357            encoder: &mut fidl::encoding::Encoder<'_, D>,
5358            offset: usize,
5359            mut depth: fidl::encoding::Depth,
5360        ) -> fidl::Result<()> {
5361            encoder.debug_check_bounds::<WlanFullmacImplDeauthRequest>(offset);
5362            // Vector header
5363            let max_ordinal: u64 = self.max_ordinal_present();
5364            encoder.write_num(max_ordinal, offset);
5365            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5366            // Calling encoder.out_of_line_offset(0) is not allowed.
5367            if max_ordinal == 0 {
5368                return Ok(());
5369            }
5370            depth.increment()?;
5371            let envelope_size = 8;
5372            let bytes_len = max_ordinal as usize * envelope_size;
5373            #[allow(unused_variables)]
5374            let offset = encoder.out_of_line_offset(bytes_len);
5375            let mut _prev_end_offset: usize = 0;
5376            if 1 > max_ordinal {
5377                return Ok(());
5378            }
5379
5380            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5381            // are envelope_size bytes.
5382            let cur_offset: usize = (1 - 1) * envelope_size;
5383
5384            // Zero reserved fields.
5385            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5386
5387            // Safety:
5388            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5389            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5390            //   envelope_size bytes, there is always sufficient room.
5391            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5392                self.peer_sta_address
5393                    .as_ref()
5394                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5395                encoder,
5396                offset + cur_offset,
5397                depth,
5398            )?;
5399
5400            _prev_end_offset = cur_offset + envelope_size;
5401            if 2 > max_ordinal {
5402                return Ok(());
5403            }
5404
5405            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5406            // are envelope_size bytes.
5407            let cur_offset: usize = (2 - 1) * envelope_size;
5408
5409            // Zero reserved fields.
5410            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5411
5412            // Safety:
5413            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5414            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5415            //   envelope_size bytes, there is always sufficient room.
5416            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D>(
5417            self.reason_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow),
5418            encoder, offset + cur_offset, depth
5419        )?;
5420
5421            _prev_end_offset = cur_offset + envelope_size;
5422
5423            Ok(())
5424        }
5425    }
5426
5427    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5428        for WlanFullmacImplDeauthRequest
5429    {
5430        #[inline(always)]
5431        fn new_empty() -> Self {
5432            Self::default()
5433        }
5434
5435        unsafe fn decode(
5436            &mut self,
5437            decoder: &mut fidl::encoding::Decoder<'_, D>,
5438            offset: usize,
5439            mut depth: fidl::encoding::Depth,
5440        ) -> fidl::Result<()> {
5441            decoder.debug_check_bounds::<Self>(offset);
5442            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5443                None => return Err(fidl::Error::NotNullable),
5444                Some(len) => len,
5445            };
5446            // Calling decoder.out_of_line_offset(0) is not allowed.
5447            if len == 0 {
5448                return Ok(());
5449            };
5450            depth.increment()?;
5451            let envelope_size = 8;
5452            let bytes_len = len * envelope_size;
5453            let offset = decoder.out_of_line_offset(bytes_len)?;
5454            // Decode the envelope for each type.
5455            let mut _next_ordinal_to_read = 0;
5456            let mut next_offset = offset;
5457            let end_offset = offset + bytes_len;
5458            _next_ordinal_to_read += 1;
5459            if next_offset >= end_offset {
5460                return Ok(());
5461            }
5462
5463            // Decode unknown envelopes for gaps in ordinals.
5464            while _next_ordinal_to_read < 1 {
5465                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5466                _next_ordinal_to_read += 1;
5467                next_offset += envelope_size;
5468            }
5469
5470            let next_out_of_line = decoder.next_out_of_line();
5471            let handles_before = decoder.remaining_handles();
5472            if let Some((inlined, num_bytes, num_handles)) =
5473                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5474            {
5475                let member_inline_size =
5476                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
5477                        decoder.context,
5478                    );
5479                if inlined != (member_inline_size <= 4) {
5480                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5481                }
5482                let inner_offset;
5483                let mut inner_depth = depth.clone();
5484                if inlined {
5485                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5486                    inner_offset = next_offset;
5487                } else {
5488                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5489                    inner_depth.increment()?;
5490                }
5491                let val_ref = self
5492                    .peer_sta_address
5493                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
5494                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
5495                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5496                {
5497                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5498                }
5499                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5500                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5501                }
5502            }
5503
5504            next_offset += envelope_size;
5505            _next_ordinal_to_read += 1;
5506            if next_offset >= end_offset {
5507                return Ok(());
5508            }
5509
5510            // Decode unknown envelopes for gaps in ordinals.
5511            while _next_ordinal_to_read < 2 {
5512                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5513                _next_ordinal_to_read += 1;
5514                next_offset += envelope_size;
5515            }
5516
5517            let next_out_of_line = decoder.next_out_of_line();
5518            let handles_before = decoder.remaining_handles();
5519            if let Some((inlined, num_bytes, num_handles)) =
5520                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5521            {
5522                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5523                if inlined != (member_inline_size <= 4) {
5524                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5525                }
5526                let inner_offset;
5527                let mut inner_depth = depth.clone();
5528                if inlined {
5529                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5530                    inner_offset = next_offset;
5531                } else {
5532                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5533                    inner_depth.increment()?;
5534                }
5535                let val_ref = self.reason_code.get_or_insert_with(|| {
5536                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D)
5537                });
5538                fidl::decode!(
5539                    fidl_fuchsia_wlan_ieee80211_common::ReasonCode,
5540                    D,
5541                    val_ref,
5542                    decoder,
5543                    inner_offset,
5544                    inner_depth
5545                )?;
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
5557            // Decode the remaining unknown envelopes.
5558            while next_offset < end_offset {
5559                _next_ordinal_to_read += 1;
5560                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5561                next_offset += envelope_size;
5562            }
5563
5564            Ok(())
5565        }
5566    }
5567
5568    impl WlanFullmacImplDisassocRequest {
5569        #[inline(always)]
5570        fn max_ordinal_present(&self) -> u64 {
5571            if let Some(_) = self.reason_code {
5572                return 2;
5573            }
5574            if let Some(_) = self.peer_sta_address {
5575                return 1;
5576            }
5577            0
5578        }
5579    }
5580
5581    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplDisassocRequest {
5582        type Borrowed<'a> = &'a Self;
5583        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5584            value
5585        }
5586    }
5587
5588    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplDisassocRequest {
5589        type Owned = Self;
5590
5591        #[inline(always)]
5592        fn inline_align(_context: fidl::encoding::Context) -> usize {
5593            8
5594        }
5595
5596        #[inline(always)]
5597        fn inline_size(_context: fidl::encoding::Context) -> usize {
5598            16
5599        }
5600    }
5601
5602    unsafe impl<D: fidl::encoding::ResourceDialect>
5603        fidl::encoding::Encode<WlanFullmacImplDisassocRequest, D>
5604        for &WlanFullmacImplDisassocRequest
5605    {
5606        unsafe fn encode(
5607            self,
5608            encoder: &mut fidl::encoding::Encoder<'_, D>,
5609            offset: usize,
5610            mut depth: fidl::encoding::Depth,
5611        ) -> fidl::Result<()> {
5612            encoder.debug_check_bounds::<WlanFullmacImplDisassocRequest>(offset);
5613            // Vector header
5614            let max_ordinal: u64 = self.max_ordinal_present();
5615            encoder.write_num(max_ordinal, offset);
5616            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5617            // Calling encoder.out_of_line_offset(0) is not allowed.
5618            if max_ordinal == 0 {
5619                return Ok(());
5620            }
5621            depth.increment()?;
5622            let envelope_size = 8;
5623            let bytes_len = max_ordinal as usize * envelope_size;
5624            #[allow(unused_variables)]
5625            let offset = encoder.out_of_line_offset(bytes_len);
5626            let mut _prev_end_offset: usize = 0;
5627            if 1 > max_ordinal {
5628                return Ok(());
5629            }
5630
5631            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5632            // are envelope_size bytes.
5633            let cur_offset: usize = (1 - 1) * envelope_size;
5634
5635            // Zero reserved fields.
5636            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5637
5638            // Safety:
5639            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5640            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5641            //   envelope_size bytes, there is always sufficient room.
5642            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5643                self.peer_sta_address
5644                    .as_ref()
5645                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5646                encoder,
5647                offset + cur_offset,
5648                depth,
5649            )?;
5650
5651            _prev_end_offset = cur_offset + envelope_size;
5652            if 2 > max_ordinal {
5653                return Ok(());
5654            }
5655
5656            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5657            // are envelope_size bytes.
5658            let cur_offset: usize = (2 - 1) * envelope_size;
5659
5660            // Zero reserved fields.
5661            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5662
5663            // Safety:
5664            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5665            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5666            //   envelope_size bytes, there is always sufficient room.
5667            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D>(
5668            self.reason_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow),
5669            encoder, offset + cur_offset, depth
5670        )?;
5671
5672            _prev_end_offset = cur_offset + envelope_size;
5673
5674            Ok(())
5675        }
5676    }
5677
5678    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5679        for WlanFullmacImplDisassocRequest
5680    {
5681        #[inline(always)]
5682        fn new_empty() -> Self {
5683            Self::default()
5684        }
5685
5686        unsafe fn decode(
5687            &mut self,
5688            decoder: &mut fidl::encoding::Decoder<'_, D>,
5689            offset: usize,
5690            mut depth: fidl::encoding::Depth,
5691        ) -> fidl::Result<()> {
5692            decoder.debug_check_bounds::<Self>(offset);
5693            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5694                None => return Err(fidl::Error::NotNullable),
5695                Some(len) => len,
5696            };
5697            // Calling decoder.out_of_line_offset(0) is not allowed.
5698            if len == 0 {
5699                return Ok(());
5700            };
5701            depth.increment()?;
5702            let envelope_size = 8;
5703            let bytes_len = len * envelope_size;
5704            let offset = decoder.out_of_line_offset(bytes_len)?;
5705            // Decode the envelope for each type.
5706            let mut _next_ordinal_to_read = 0;
5707            let mut next_offset = offset;
5708            let end_offset = offset + bytes_len;
5709            _next_ordinal_to_read += 1;
5710            if next_offset >= end_offset {
5711                return Ok(());
5712            }
5713
5714            // Decode unknown envelopes for gaps in ordinals.
5715            while _next_ordinal_to_read < 1 {
5716                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5717                _next_ordinal_to_read += 1;
5718                next_offset += envelope_size;
5719            }
5720
5721            let next_out_of_line = decoder.next_out_of_line();
5722            let handles_before = decoder.remaining_handles();
5723            if let Some((inlined, num_bytes, num_handles)) =
5724                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5725            {
5726                let member_inline_size =
5727                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
5728                        decoder.context,
5729                    );
5730                if inlined != (member_inline_size <= 4) {
5731                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5732                }
5733                let inner_offset;
5734                let mut inner_depth = depth.clone();
5735                if inlined {
5736                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5737                    inner_offset = next_offset;
5738                } else {
5739                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5740                    inner_depth.increment()?;
5741                }
5742                let val_ref = self
5743                    .peer_sta_address
5744                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
5745                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
5746                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5747                {
5748                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5749                }
5750                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5751                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5752                }
5753            }
5754
5755            next_offset += envelope_size;
5756            _next_ordinal_to_read += 1;
5757            if next_offset >= end_offset {
5758                return Ok(());
5759            }
5760
5761            // Decode unknown envelopes for gaps in ordinals.
5762            while _next_ordinal_to_read < 2 {
5763                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5764                _next_ordinal_to_read += 1;
5765                next_offset += envelope_size;
5766            }
5767
5768            let next_out_of_line = decoder.next_out_of_line();
5769            let handles_before = decoder.remaining_handles();
5770            if let Some((inlined, num_bytes, num_handles)) =
5771                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5772            {
5773                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5774                if inlined != (member_inline_size <= 4) {
5775                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5776                }
5777                let inner_offset;
5778                let mut inner_depth = depth.clone();
5779                if inlined {
5780                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5781                    inner_offset = next_offset;
5782                } else {
5783                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5784                    inner_depth.increment()?;
5785                }
5786                let val_ref = self.reason_code.get_or_insert_with(|| {
5787                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D)
5788                });
5789                fidl::decode!(
5790                    fidl_fuchsia_wlan_ieee80211_common::ReasonCode,
5791                    D,
5792                    val_ref,
5793                    decoder,
5794                    inner_offset,
5795                    inner_depth
5796                )?;
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
5808            // Decode the remaining unknown envelopes.
5809            while next_offset < end_offset {
5810                _next_ordinal_to_read += 1;
5811                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5812                next_offset += envelope_size;
5813            }
5814
5815            Ok(())
5816        }
5817    }
5818
5819    impl WlanFullmacImplEapolTxRequest {
5820        #[inline(always)]
5821        fn max_ordinal_present(&self) -> u64 {
5822            if let Some(_) = self.data {
5823                return 3;
5824            }
5825            if let Some(_) = self.dst_addr {
5826                return 2;
5827            }
5828            if let Some(_) = self.src_addr {
5829                return 1;
5830            }
5831            0
5832        }
5833    }
5834
5835    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplEapolTxRequest {
5836        type Borrowed<'a> = &'a Self;
5837        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5838            value
5839        }
5840    }
5841
5842    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplEapolTxRequest {
5843        type Owned = Self;
5844
5845        #[inline(always)]
5846        fn inline_align(_context: fidl::encoding::Context) -> usize {
5847            8
5848        }
5849
5850        #[inline(always)]
5851        fn inline_size(_context: fidl::encoding::Context) -> usize {
5852            16
5853        }
5854    }
5855
5856    unsafe impl<D: fidl::encoding::ResourceDialect>
5857        fidl::encoding::Encode<WlanFullmacImplEapolTxRequest, D>
5858        for &WlanFullmacImplEapolTxRequest
5859    {
5860        unsafe fn encode(
5861            self,
5862            encoder: &mut fidl::encoding::Encoder<'_, D>,
5863            offset: usize,
5864            mut depth: fidl::encoding::Depth,
5865        ) -> fidl::Result<()> {
5866            encoder.debug_check_bounds::<WlanFullmacImplEapolTxRequest>(offset);
5867            // Vector header
5868            let max_ordinal: u64 = self.max_ordinal_present();
5869            encoder.write_num(max_ordinal, offset);
5870            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5871            // Calling encoder.out_of_line_offset(0) is not allowed.
5872            if max_ordinal == 0 {
5873                return Ok(());
5874            }
5875            depth.increment()?;
5876            let envelope_size = 8;
5877            let bytes_len = max_ordinal as usize * envelope_size;
5878            #[allow(unused_variables)]
5879            let offset = encoder.out_of_line_offset(bytes_len);
5880            let mut _prev_end_offset: usize = 0;
5881            if 1 > max_ordinal {
5882                return Ok(());
5883            }
5884
5885            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5886            // are envelope_size bytes.
5887            let cur_offset: usize = (1 - 1) * envelope_size;
5888
5889            // Zero reserved fields.
5890            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5891
5892            // Safety:
5893            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5894            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5895            //   envelope_size bytes, there is always sufficient room.
5896            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5897                self.src_addr
5898                    .as_ref()
5899                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5900                encoder,
5901                offset + cur_offset,
5902                depth,
5903            )?;
5904
5905            _prev_end_offset = cur_offset + envelope_size;
5906            if 2 > max_ordinal {
5907                return Ok(());
5908            }
5909
5910            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5911            // are envelope_size bytes.
5912            let cur_offset: usize = (2 - 1) * envelope_size;
5913
5914            // Zero reserved fields.
5915            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5916
5917            // Safety:
5918            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5919            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5920            //   envelope_size bytes, there is always sufficient room.
5921            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5922                self.dst_addr
5923                    .as_ref()
5924                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5925                encoder,
5926                offset + cur_offset,
5927                depth,
5928            )?;
5929
5930            _prev_end_offset = cur_offset + envelope_size;
5931            if 3 > max_ordinal {
5932                return Ok(());
5933            }
5934
5935            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5936            // are envelope_size bytes.
5937            let cur_offset: usize = (3 - 1) * envelope_size;
5938
5939            // Zero reserved fields.
5940            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5941
5942            // Safety:
5943            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5944            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5945            //   envelope_size bytes, there is always sufficient room.
5946            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
5947            self.data.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
5948            encoder, offset + cur_offset, depth
5949        )?;
5950
5951            _prev_end_offset = cur_offset + envelope_size;
5952
5953            Ok(())
5954        }
5955    }
5956
5957    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5958        for WlanFullmacImplEapolTxRequest
5959    {
5960        #[inline(always)]
5961        fn new_empty() -> Self {
5962            Self::default()
5963        }
5964
5965        unsafe fn decode(
5966            &mut self,
5967            decoder: &mut fidl::encoding::Decoder<'_, D>,
5968            offset: usize,
5969            mut depth: fidl::encoding::Depth,
5970        ) -> fidl::Result<()> {
5971            decoder.debug_check_bounds::<Self>(offset);
5972            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5973                None => return Err(fidl::Error::NotNullable),
5974                Some(len) => len,
5975            };
5976            // Calling decoder.out_of_line_offset(0) is not allowed.
5977            if len == 0 {
5978                return Ok(());
5979            };
5980            depth.increment()?;
5981            let envelope_size = 8;
5982            let bytes_len = len * envelope_size;
5983            let offset = decoder.out_of_line_offset(bytes_len)?;
5984            // Decode the envelope for each type.
5985            let mut _next_ordinal_to_read = 0;
5986            let mut next_offset = offset;
5987            let end_offset = offset + bytes_len;
5988            _next_ordinal_to_read += 1;
5989            if next_offset >= end_offset {
5990                return Ok(());
5991            }
5992
5993            // Decode unknown envelopes for gaps in ordinals.
5994            while _next_ordinal_to_read < 1 {
5995                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5996                _next_ordinal_to_read += 1;
5997                next_offset += envelope_size;
5998            }
5999
6000            let next_out_of_line = decoder.next_out_of_line();
6001            let handles_before = decoder.remaining_handles();
6002            if let Some((inlined, num_bytes, num_handles)) =
6003                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6004            {
6005                let member_inline_size =
6006                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
6007                        decoder.context,
6008                    );
6009                if inlined != (member_inline_size <= 4) {
6010                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6011                }
6012                let inner_offset;
6013                let mut inner_depth = depth.clone();
6014                if inlined {
6015                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6016                    inner_offset = next_offset;
6017                } else {
6018                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6019                    inner_depth.increment()?;
6020                }
6021                let val_ref = self
6022                    .src_addr
6023                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
6024                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
6025                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6026                {
6027                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6028                }
6029                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6030                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6031                }
6032            }
6033
6034            next_offset += envelope_size;
6035            _next_ordinal_to_read += 1;
6036            if next_offset >= end_offset {
6037                return Ok(());
6038            }
6039
6040            // Decode unknown envelopes for gaps in ordinals.
6041            while _next_ordinal_to_read < 2 {
6042                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6043                _next_ordinal_to_read += 1;
6044                next_offset += envelope_size;
6045            }
6046
6047            let next_out_of_line = decoder.next_out_of_line();
6048            let handles_before = decoder.remaining_handles();
6049            if let Some((inlined, num_bytes, num_handles)) =
6050                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6051            {
6052                let member_inline_size =
6053                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
6054                        decoder.context,
6055                    );
6056                if inlined != (member_inline_size <= 4) {
6057                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6058                }
6059                let inner_offset;
6060                let mut inner_depth = depth.clone();
6061                if inlined {
6062                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6063                    inner_offset = next_offset;
6064                } else {
6065                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6066                    inner_depth.increment()?;
6067                }
6068                let val_ref = self
6069                    .dst_addr
6070                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
6071                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
6072                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6073                {
6074                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6075                }
6076                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6077                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6078                }
6079            }
6080
6081            next_offset += envelope_size;
6082            _next_ordinal_to_read += 1;
6083            if next_offset >= end_offset {
6084                return Ok(());
6085            }
6086
6087            // Decode unknown envelopes for gaps in ordinals.
6088            while _next_ordinal_to_read < 3 {
6089                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6090                _next_ordinal_to_read += 1;
6091                next_offset += envelope_size;
6092            }
6093
6094            let next_out_of_line = decoder.next_out_of_line();
6095            let handles_before = decoder.remaining_handles();
6096            if let Some((inlined, num_bytes, num_handles)) =
6097                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6098            {
6099                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6100                if inlined != (member_inline_size <= 4) {
6101                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6102                }
6103                let inner_offset;
6104                let mut inner_depth = depth.clone();
6105                if inlined {
6106                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6107                    inner_offset = next_offset;
6108                } else {
6109                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6110                    inner_depth.increment()?;
6111                }
6112                let val_ref = self.data.get_or_insert_with(|| {
6113                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
6114                });
6115                fidl::decode!(
6116                    fidl::encoding::UnboundedVector<u8>,
6117                    D,
6118                    val_ref,
6119                    decoder,
6120                    inner_offset,
6121                    inner_depth
6122                )?;
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
6134            // Decode the remaining unknown envelopes.
6135            while next_offset < end_offset {
6136                _next_ordinal_to_read += 1;
6137                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6138                next_offset += envelope_size;
6139            }
6140
6141            Ok(())
6142        }
6143    }
6144
6145    impl WlanFullmacImplIfcAssocIndRequest {
6146        #[inline(always)]
6147        fn max_ordinal_present(&self) -> u64 {
6148            if let Some(_) = self.vendor_ie {
6149                return 5;
6150            }
6151            if let Some(_) = self.rsne {
6152                return 4;
6153            }
6154            if let Some(_) = self.ssid {
6155                return 3;
6156            }
6157            if let Some(_) = self.listen_interval {
6158                return 2;
6159            }
6160            if let Some(_) = self.peer_sta_address {
6161                return 1;
6162            }
6163            0
6164        }
6165    }
6166
6167    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcAssocIndRequest {
6168        type Borrowed<'a> = &'a Self;
6169        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6170            value
6171        }
6172    }
6173
6174    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcAssocIndRequest {
6175        type Owned = Self;
6176
6177        #[inline(always)]
6178        fn inline_align(_context: fidl::encoding::Context) -> usize {
6179            8
6180        }
6181
6182        #[inline(always)]
6183        fn inline_size(_context: fidl::encoding::Context) -> usize {
6184            16
6185        }
6186    }
6187
6188    unsafe impl<D: fidl::encoding::ResourceDialect>
6189        fidl::encoding::Encode<WlanFullmacImplIfcAssocIndRequest, D>
6190        for &WlanFullmacImplIfcAssocIndRequest
6191    {
6192        unsafe fn encode(
6193            self,
6194            encoder: &mut fidl::encoding::Encoder<'_, D>,
6195            offset: usize,
6196            mut depth: fidl::encoding::Depth,
6197        ) -> fidl::Result<()> {
6198            encoder.debug_check_bounds::<WlanFullmacImplIfcAssocIndRequest>(offset);
6199            // Vector header
6200            let max_ordinal: u64 = self.max_ordinal_present();
6201            encoder.write_num(max_ordinal, offset);
6202            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6203            // Calling encoder.out_of_line_offset(0) is not allowed.
6204            if max_ordinal == 0 {
6205                return Ok(());
6206            }
6207            depth.increment()?;
6208            let envelope_size = 8;
6209            let bytes_len = max_ordinal as usize * envelope_size;
6210            #[allow(unused_variables)]
6211            let offset = encoder.out_of_line_offset(bytes_len);
6212            let mut _prev_end_offset: usize = 0;
6213            if 1 > max_ordinal {
6214                return Ok(());
6215            }
6216
6217            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6218            // are envelope_size bytes.
6219            let cur_offset: usize = (1 - 1) * envelope_size;
6220
6221            // Zero reserved fields.
6222            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6223
6224            // Safety:
6225            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6226            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6227            //   envelope_size bytes, there is always sufficient room.
6228            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
6229                self.peer_sta_address
6230                    .as_ref()
6231                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
6232                encoder,
6233                offset + cur_offset,
6234                depth,
6235            )?;
6236
6237            _prev_end_offset = cur_offset + envelope_size;
6238            if 2 > max_ordinal {
6239                return Ok(());
6240            }
6241
6242            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6243            // are envelope_size bytes.
6244            let cur_offset: usize = (2 - 1) * envelope_size;
6245
6246            // Zero reserved fields.
6247            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6248
6249            // Safety:
6250            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6251            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6252            //   envelope_size bytes, there is always sufficient room.
6253            fidl::encoding::encode_in_envelope_optional::<u16, D>(
6254                self.listen_interval.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
6255                encoder,
6256                offset + cur_offset,
6257                depth,
6258            )?;
6259
6260            _prev_end_offset = cur_offset + envelope_size;
6261            if 3 > max_ordinal {
6262                return Ok(());
6263            }
6264
6265            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6266            // are envelope_size bytes.
6267            let cur_offset: usize = (3 - 1) * envelope_size;
6268
6269            // Zero reserved fields.
6270            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6271
6272            // Safety:
6273            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6274            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6275            //   envelope_size bytes, there is always sufficient room.
6276            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
6277                self.ssid.as_ref().map(
6278                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
6279                ),
6280                encoder,
6281                offset + cur_offset,
6282                depth,
6283            )?;
6284
6285            _prev_end_offset = cur_offset + envelope_size;
6286            if 4 > max_ordinal {
6287                return Ok(());
6288            }
6289
6290            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6291            // are envelope_size bytes.
6292            let cur_offset: usize = (4 - 1) * envelope_size;
6293
6294            // Zero reserved fields.
6295            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6296
6297            // Safety:
6298            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6299            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6300            //   envelope_size bytes, there is always sufficient room.
6301            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 257>, D>(
6302                self.rsne.as_ref().map(
6303                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::ValueTypeMarker>::borrow,
6304                ),
6305                encoder,
6306                offset + cur_offset,
6307                depth,
6308            )?;
6309
6310            _prev_end_offset = cur_offset + envelope_size;
6311            if 5 > max_ordinal {
6312                return Ok(());
6313            }
6314
6315            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6316            // are envelope_size bytes.
6317            let cur_offset: usize = (5 - 1) * envelope_size;
6318
6319            // Zero reserved fields.
6320            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6321
6322            // Safety:
6323            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6324            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6325            //   envelope_size bytes, there is always sufficient room.
6326            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 514>, D>(
6327                self.vendor_ie.as_ref().map(
6328                    <fidl::encoding::Vector<u8, 514> as fidl::encoding::ValueTypeMarker>::borrow,
6329                ),
6330                encoder,
6331                offset + cur_offset,
6332                depth,
6333            )?;
6334
6335            _prev_end_offset = cur_offset + envelope_size;
6336
6337            Ok(())
6338        }
6339    }
6340
6341    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6342        for WlanFullmacImplIfcAssocIndRequest
6343    {
6344        #[inline(always)]
6345        fn new_empty() -> Self {
6346            Self::default()
6347        }
6348
6349        unsafe fn decode(
6350            &mut self,
6351            decoder: &mut fidl::encoding::Decoder<'_, D>,
6352            offset: usize,
6353            mut depth: fidl::encoding::Depth,
6354        ) -> fidl::Result<()> {
6355            decoder.debug_check_bounds::<Self>(offset);
6356            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6357                None => return Err(fidl::Error::NotNullable),
6358                Some(len) => len,
6359            };
6360            // Calling decoder.out_of_line_offset(0) is not allowed.
6361            if len == 0 {
6362                return Ok(());
6363            };
6364            depth.increment()?;
6365            let envelope_size = 8;
6366            let bytes_len = len * envelope_size;
6367            let offset = decoder.out_of_line_offset(bytes_len)?;
6368            // Decode the envelope for each type.
6369            let mut _next_ordinal_to_read = 0;
6370            let mut next_offset = offset;
6371            let end_offset = offset + bytes_len;
6372            _next_ordinal_to_read += 1;
6373            if next_offset >= end_offset {
6374                return Ok(());
6375            }
6376
6377            // Decode unknown envelopes for gaps in ordinals.
6378            while _next_ordinal_to_read < 1 {
6379                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6380                _next_ordinal_to_read += 1;
6381                next_offset += envelope_size;
6382            }
6383
6384            let next_out_of_line = decoder.next_out_of_line();
6385            let handles_before = decoder.remaining_handles();
6386            if let Some((inlined, num_bytes, num_handles)) =
6387                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6388            {
6389                let member_inline_size =
6390                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
6391                        decoder.context,
6392                    );
6393                if inlined != (member_inline_size <= 4) {
6394                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6395                }
6396                let inner_offset;
6397                let mut inner_depth = depth.clone();
6398                if inlined {
6399                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6400                    inner_offset = next_offset;
6401                } else {
6402                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6403                    inner_depth.increment()?;
6404                }
6405                let val_ref = self
6406                    .peer_sta_address
6407                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
6408                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
6409                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6410                {
6411                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6412                }
6413                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6414                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6415                }
6416            }
6417
6418            next_offset += envelope_size;
6419            _next_ordinal_to_read += 1;
6420            if next_offset >= end_offset {
6421                return Ok(());
6422            }
6423
6424            // Decode unknown envelopes for gaps in ordinals.
6425            while _next_ordinal_to_read < 2 {
6426                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6427                _next_ordinal_to_read += 1;
6428                next_offset += envelope_size;
6429            }
6430
6431            let next_out_of_line = decoder.next_out_of_line();
6432            let handles_before = decoder.remaining_handles();
6433            if let Some((inlined, num_bytes, num_handles)) =
6434                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6435            {
6436                let member_inline_size =
6437                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6438                if inlined != (member_inline_size <= 4) {
6439                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6440                }
6441                let inner_offset;
6442                let mut inner_depth = depth.clone();
6443                if inlined {
6444                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6445                    inner_offset = next_offset;
6446                } else {
6447                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6448                    inner_depth.increment()?;
6449                }
6450                let val_ref = self.listen_interval.get_or_insert_with(|| fidl::new_empty!(u16, D));
6451                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
6452                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6453                {
6454                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6455                }
6456                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6457                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6458                }
6459            }
6460
6461            next_offset += envelope_size;
6462            _next_ordinal_to_read += 1;
6463            if next_offset >= end_offset {
6464                return Ok(());
6465            }
6466
6467            // Decode unknown envelopes for gaps in ordinals.
6468            while _next_ordinal_to_read < 3 {
6469                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6470                _next_ordinal_to_read += 1;
6471                next_offset += envelope_size;
6472            }
6473
6474            let next_out_of_line = decoder.next_out_of_line();
6475            let handles_before = decoder.remaining_handles();
6476            if let Some((inlined, num_bytes, num_handles)) =
6477                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6478            {
6479                let member_inline_size =
6480                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
6481                        decoder.context,
6482                    );
6483                if inlined != (member_inline_size <= 4) {
6484                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6485                }
6486                let inner_offset;
6487                let mut inner_depth = depth.clone();
6488                if inlined {
6489                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6490                    inner_offset = next_offset;
6491                } else {
6492                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6493                    inner_depth.increment()?;
6494                }
6495                let val_ref = self
6496                    .ssid
6497                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
6498                fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
6499                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6500                {
6501                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6502                }
6503                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6504                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6505                }
6506            }
6507
6508            next_offset += envelope_size;
6509            _next_ordinal_to_read += 1;
6510            if next_offset >= end_offset {
6511                return Ok(());
6512            }
6513
6514            // Decode unknown envelopes for gaps in ordinals.
6515            while _next_ordinal_to_read < 4 {
6516                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6517                _next_ordinal_to_read += 1;
6518                next_offset += envelope_size;
6519            }
6520
6521            let next_out_of_line = decoder.next_out_of_line();
6522            let handles_before = decoder.remaining_handles();
6523            if let Some((inlined, num_bytes, num_handles)) =
6524                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6525            {
6526                let member_inline_size =
6527                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::TypeMarker>::inline_size(
6528                        decoder.context,
6529                    );
6530                if inlined != (member_inline_size <= 4) {
6531                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6532                }
6533                let inner_offset;
6534                let mut inner_depth = depth.clone();
6535                if inlined {
6536                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6537                    inner_offset = next_offset;
6538                } else {
6539                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6540                    inner_depth.increment()?;
6541                }
6542                let val_ref = self
6543                    .rsne
6544                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 257>, D));
6545                fidl::decode!(fidl::encoding::Vector<u8, 257>, D, val_ref, decoder, inner_offset, inner_depth)?;
6546                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6547                {
6548                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6549                }
6550                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6551                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6552                }
6553            }
6554
6555            next_offset += envelope_size;
6556            _next_ordinal_to_read += 1;
6557            if next_offset >= end_offset {
6558                return Ok(());
6559            }
6560
6561            // Decode unknown envelopes for gaps in ordinals.
6562            while _next_ordinal_to_read < 5 {
6563                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6564                _next_ordinal_to_read += 1;
6565                next_offset += envelope_size;
6566            }
6567
6568            let next_out_of_line = decoder.next_out_of_line();
6569            let handles_before = decoder.remaining_handles();
6570            if let Some((inlined, num_bytes, num_handles)) =
6571                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6572            {
6573                let member_inline_size =
6574                    <fidl::encoding::Vector<u8, 514> as fidl::encoding::TypeMarker>::inline_size(
6575                        decoder.context,
6576                    );
6577                if inlined != (member_inline_size <= 4) {
6578                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6579                }
6580                let inner_offset;
6581                let mut inner_depth = depth.clone();
6582                if inlined {
6583                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6584                    inner_offset = next_offset;
6585                } else {
6586                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6587                    inner_depth.increment()?;
6588                }
6589                let val_ref = self
6590                    .vendor_ie
6591                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 514>, D));
6592                fidl::decode!(fidl::encoding::Vector<u8, 514>, D, val_ref, decoder, inner_offset, inner_depth)?;
6593                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6594                {
6595                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6596                }
6597                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6598                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6599                }
6600            }
6601
6602            next_offset += envelope_size;
6603
6604            // Decode the remaining unknown envelopes.
6605            while next_offset < end_offset {
6606                _next_ordinal_to_read += 1;
6607                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6608                next_offset += envelope_size;
6609            }
6610
6611            Ok(())
6612        }
6613    }
6614
6615    impl WlanFullmacImplIfcAuthIndRequest {
6616        #[inline(always)]
6617        fn max_ordinal_present(&self) -> u64 {
6618            if let Some(_) = self.auth_type {
6619                return 2;
6620            }
6621            if let Some(_) = self.peer_sta_address {
6622                return 1;
6623            }
6624            0
6625        }
6626    }
6627
6628    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcAuthIndRequest {
6629        type Borrowed<'a> = &'a Self;
6630        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6631            value
6632        }
6633    }
6634
6635    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcAuthIndRequest {
6636        type Owned = Self;
6637
6638        #[inline(always)]
6639        fn inline_align(_context: fidl::encoding::Context) -> usize {
6640            8
6641        }
6642
6643        #[inline(always)]
6644        fn inline_size(_context: fidl::encoding::Context) -> usize {
6645            16
6646        }
6647    }
6648
6649    unsafe impl<D: fidl::encoding::ResourceDialect>
6650        fidl::encoding::Encode<WlanFullmacImplIfcAuthIndRequest, D>
6651        for &WlanFullmacImplIfcAuthIndRequest
6652    {
6653        unsafe fn encode(
6654            self,
6655            encoder: &mut fidl::encoding::Encoder<'_, D>,
6656            offset: usize,
6657            mut depth: fidl::encoding::Depth,
6658        ) -> fidl::Result<()> {
6659            encoder.debug_check_bounds::<WlanFullmacImplIfcAuthIndRequest>(offset);
6660            // Vector header
6661            let max_ordinal: u64 = self.max_ordinal_present();
6662            encoder.write_num(max_ordinal, offset);
6663            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6664            // Calling encoder.out_of_line_offset(0) is not allowed.
6665            if max_ordinal == 0 {
6666                return Ok(());
6667            }
6668            depth.increment()?;
6669            let envelope_size = 8;
6670            let bytes_len = max_ordinal as usize * envelope_size;
6671            #[allow(unused_variables)]
6672            let offset = encoder.out_of_line_offset(bytes_len);
6673            let mut _prev_end_offset: usize = 0;
6674            if 1 > max_ordinal {
6675                return Ok(());
6676            }
6677
6678            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6679            // are envelope_size bytes.
6680            let cur_offset: usize = (1 - 1) * envelope_size;
6681
6682            // Zero reserved fields.
6683            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6684
6685            // Safety:
6686            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6687            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6688            //   envelope_size bytes, there is always sufficient room.
6689            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
6690                self.peer_sta_address
6691                    .as_ref()
6692                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
6693                encoder,
6694                offset + cur_offset,
6695                depth,
6696            )?;
6697
6698            _prev_end_offset = cur_offset + envelope_size;
6699            if 2 > max_ordinal {
6700                return Ok(());
6701            }
6702
6703            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6704            // are envelope_size bytes.
6705            let cur_offset: usize = (2 - 1) * envelope_size;
6706
6707            // Zero reserved fields.
6708            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6709
6710            // Safety:
6711            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6712            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6713            //   envelope_size bytes, there is always sufficient room.
6714            fidl::encoding::encode_in_envelope_optional::<WlanAuthType, D>(
6715                self.auth_type
6716                    .as_ref()
6717                    .map(<WlanAuthType as fidl::encoding::ValueTypeMarker>::borrow),
6718                encoder,
6719                offset + cur_offset,
6720                depth,
6721            )?;
6722
6723            _prev_end_offset = cur_offset + envelope_size;
6724
6725            Ok(())
6726        }
6727    }
6728
6729    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6730        for WlanFullmacImplIfcAuthIndRequest
6731    {
6732        #[inline(always)]
6733        fn new_empty() -> Self {
6734            Self::default()
6735        }
6736
6737        unsafe fn decode(
6738            &mut self,
6739            decoder: &mut fidl::encoding::Decoder<'_, D>,
6740            offset: usize,
6741            mut depth: fidl::encoding::Depth,
6742        ) -> fidl::Result<()> {
6743            decoder.debug_check_bounds::<Self>(offset);
6744            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6745                None => return Err(fidl::Error::NotNullable),
6746                Some(len) => len,
6747            };
6748            // Calling decoder.out_of_line_offset(0) is not allowed.
6749            if len == 0 {
6750                return Ok(());
6751            };
6752            depth.increment()?;
6753            let envelope_size = 8;
6754            let bytes_len = len * envelope_size;
6755            let offset = decoder.out_of_line_offset(bytes_len)?;
6756            // Decode the envelope for each type.
6757            let mut _next_ordinal_to_read = 0;
6758            let mut next_offset = offset;
6759            let end_offset = offset + bytes_len;
6760            _next_ordinal_to_read += 1;
6761            if next_offset >= end_offset {
6762                return Ok(());
6763            }
6764
6765            // Decode unknown envelopes for gaps in ordinals.
6766            while _next_ordinal_to_read < 1 {
6767                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6768                _next_ordinal_to_read += 1;
6769                next_offset += envelope_size;
6770            }
6771
6772            let next_out_of_line = decoder.next_out_of_line();
6773            let handles_before = decoder.remaining_handles();
6774            if let Some((inlined, num_bytes, num_handles)) =
6775                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6776            {
6777                let member_inline_size =
6778                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
6779                        decoder.context,
6780                    );
6781                if inlined != (member_inline_size <= 4) {
6782                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6783                }
6784                let inner_offset;
6785                let mut inner_depth = depth.clone();
6786                if inlined {
6787                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6788                    inner_offset = next_offset;
6789                } else {
6790                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6791                    inner_depth.increment()?;
6792                }
6793                let val_ref = self
6794                    .peer_sta_address
6795                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
6796                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
6797                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6798                {
6799                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6800                }
6801                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6802                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6803                }
6804            }
6805
6806            next_offset += envelope_size;
6807            _next_ordinal_to_read += 1;
6808            if next_offset >= end_offset {
6809                return Ok(());
6810            }
6811
6812            // Decode unknown envelopes for gaps in ordinals.
6813            while _next_ordinal_to_read < 2 {
6814                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6815                _next_ordinal_to_read += 1;
6816                next_offset += envelope_size;
6817            }
6818
6819            let next_out_of_line = decoder.next_out_of_line();
6820            let handles_before = decoder.remaining_handles();
6821            if let Some((inlined, num_bytes, num_handles)) =
6822                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6823            {
6824                let member_inline_size =
6825                    <WlanAuthType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6826                if inlined != (member_inline_size <= 4) {
6827                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6828                }
6829                let inner_offset;
6830                let mut inner_depth = depth.clone();
6831                if inlined {
6832                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6833                    inner_offset = next_offset;
6834                } else {
6835                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6836                    inner_depth.increment()?;
6837                }
6838                let val_ref =
6839                    self.auth_type.get_or_insert_with(|| fidl::new_empty!(WlanAuthType, D));
6840                fidl::decode!(WlanAuthType, D, val_ref, decoder, inner_offset, inner_depth)?;
6841                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6842                {
6843                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6844                }
6845                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6846                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6847                }
6848            }
6849
6850            next_offset += envelope_size;
6851
6852            // Decode the remaining unknown envelopes.
6853            while next_offset < end_offset {
6854                _next_ordinal_to_read += 1;
6855                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6856                next_offset += envelope_size;
6857            }
6858
6859            Ok(())
6860        }
6861    }
6862
6863    impl WlanFullmacImplIfcConnectConfRequest {
6864        #[inline(always)]
6865        fn max_ordinal_present(&self) -> u64 {
6866            if let Some(_) = self.association_ies {
6867                return 4;
6868            }
6869            if let Some(_) = self.association_id {
6870                return 3;
6871            }
6872            if let Some(_) = self.result_code {
6873                return 2;
6874            }
6875            if let Some(_) = self.peer_sta_address {
6876                return 1;
6877            }
6878            0
6879        }
6880    }
6881
6882    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcConnectConfRequest {
6883        type Borrowed<'a> = &'a Self;
6884        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6885            value
6886        }
6887    }
6888
6889    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcConnectConfRequest {
6890        type Owned = Self;
6891
6892        #[inline(always)]
6893        fn inline_align(_context: fidl::encoding::Context) -> usize {
6894            8
6895        }
6896
6897        #[inline(always)]
6898        fn inline_size(_context: fidl::encoding::Context) -> usize {
6899            16
6900        }
6901    }
6902
6903    unsafe impl<D: fidl::encoding::ResourceDialect>
6904        fidl::encoding::Encode<WlanFullmacImplIfcConnectConfRequest, D>
6905        for &WlanFullmacImplIfcConnectConfRequest
6906    {
6907        unsafe fn encode(
6908            self,
6909            encoder: &mut fidl::encoding::Encoder<'_, D>,
6910            offset: usize,
6911            mut depth: fidl::encoding::Depth,
6912        ) -> fidl::Result<()> {
6913            encoder.debug_check_bounds::<WlanFullmacImplIfcConnectConfRequest>(offset);
6914            // Vector header
6915            let max_ordinal: u64 = self.max_ordinal_present();
6916            encoder.write_num(max_ordinal, offset);
6917            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6918            // Calling encoder.out_of_line_offset(0) is not allowed.
6919            if max_ordinal == 0 {
6920                return Ok(());
6921            }
6922            depth.increment()?;
6923            let envelope_size = 8;
6924            let bytes_len = max_ordinal as usize * envelope_size;
6925            #[allow(unused_variables)]
6926            let offset = encoder.out_of_line_offset(bytes_len);
6927            let mut _prev_end_offset: usize = 0;
6928            if 1 > max_ordinal {
6929                return Ok(());
6930            }
6931
6932            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6933            // are envelope_size bytes.
6934            let cur_offset: usize = (1 - 1) * envelope_size;
6935
6936            // Zero reserved fields.
6937            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6938
6939            // Safety:
6940            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6941            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6942            //   envelope_size bytes, there is always sufficient room.
6943            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
6944                self.peer_sta_address
6945                    .as_ref()
6946                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
6947                encoder,
6948                offset + cur_offset,
6949                depth,
6950            )?;
6951
6952            _prev_end_offset = cur_offset + envelope_size;
6953            if 2 > max_ordinal {
6954                return Ok(());
6955            }
6956
6957            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6958            // are envelope_size bytes.
6959            let cur_offset: usize = (2 - 1) * envelope_size;
6960
6961            // Zero reserved fields.
6962            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6963
6964            // Safety:
6965            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6966            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6967            //   envelope_size bytes, there is always sufficient room.
6968            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::StatusCode, D>(
6969            self.result_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
6970            encoder, offset + cur_offset, depth
6971        )?;
6972
6973            _prev_end_offset = cur_offset + envelope_size;
6974            if 3 > max_ordinal {
6975                return Ok(());
6976            }
6977
6978            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6979            // are envelope_size bytes.
6980            let cur_offset: usize = (3 - 1) * envelope_size;
6981
6982            // Zero reserved fields.
6983            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6984
6985            // Safety:
6986            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6987            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6988            //   envelope_size bytes, there is always sufficient room.
6989            fidl::encoding::encode_in_envelope_optional::<u16, D>(
6990                self.association_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
6991                encoder,
6992                offset + cur_offset,
6993                depth,
6994            )?;
6995
6996            _prev_end_offset = cur_offset + envelope_size;
6997            if 4 > max_ordinal {
6998                return Ok(());
6999            }
7000
7001            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7002            // are envelope_size bytes.
7003            let cur_offset: usize = (4 - 1) * envelope_size;
7004
7005            // Zero reserved fields.
7006            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7007
7008            // Safety:
7009            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7010            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7011            //   envelope_size bytes, there is always sufficient room.
7012            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
7013            self.association_ies.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
7014            encoder, offset + cur_offset, depth
7015        )?;
7016
7017            _prev_end_offset = cur_offset + envelope_size;
7018
7019            Ok(())
7020        }
7021    }
7022
7023    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7024        for WlanFullmacImplIfcConnectConfRequest
7025    {
7026        #[inline(always)]
7027        fn new_empty() -> Self {
7028            Self::default()
7029        }
7030
7031        unsafe fn decode(
7032            &mut self,
7033            decoder: &mut fidl::encoding::Decoder<'_, D>,
7034            offset: usize,
7035            mut depth: fidl::encoding::Depth,
7036        ) -> fidl::Result<()> {
7037            decoder.debug_check_bounds::<Self>(offset);
7038            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7039                None => return Err(fidl::Error::NotNullable),
7040                Some(len) => len,
7041            };
7042            // Calling decoder.out_of_line_offset(0) is not allowed.
7043            if len == 0 {
7044                return Ok(());
7045            };
7046            depth.increment()?;
7047            let envelope_size = 8;
7048            let bytes_len = len * envelope_size;
7049            let offset = decoder.out_of_line_offset(bytes_len)?;
7050            // Decode the envelope for each type.
7051            let mut _next_ordinal_to_read = 0;
7052            let mut next_offset = offset;
7053            let end_offset = offset + bytes_len;
7054            _next_ordinal_to_read += 1;
7055            if next_offset >= end_offset {
7056                return Ok(());
7057            }
7058
7059            // Decode unknown envelopes for gaps in ordinals.
7060            while _next_ordinal_to_read < 1 {
7061                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7062                _next_ordinal_to_read += 1;
7063                next_offset += envelope_size;
7064            }
7065
7066            let next_out_of_line = decoder.next_out_of_line();
7067            let handles_before = decoder.remaining_handles();
7068            if let Some((inlined, num_bytes, num_handles)) =
7069                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7070            {
7071                let member_inline_size =
7072                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
7073                        decoder.context,
7074                    );
7075                if inlined != (member_inline_size <= 4) {
7076                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7077                }
7078                let inner_offset;
7079                let mut inner_depth = depth.clone();
7080                if inlined {
7081                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7082                    inner_offset = next_offset;
7083                } else {
7084                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7085                    inner_depth.increment()?;
7086                }
7087                let val_ref = self
7088                    .peer_sta_address
7089                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
7090                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
7091                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7092                {
7093                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7094                }
7095                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7096                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7097                }
7098            }
7099
7100            next_offset += envelope_size;
7101            _next_ordinal_to_read += 1;
7102            if next_offset >= end_offset {
7103                return Ok(());
7104            }
7105
7106            // Decode unknown envelopes for gaps in ordinals.
7107            while _next_ordinal_to_read < 2 {
7108                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7109                _next_ordinal_to_read += 1;
7110                next_offset += envelope_size;
7111            }
7112
7113            let next_out_of_line = decoder.next_out_of_line();
7114            let handles_before = decoder.remaining_handles();
7115            if let Some((inlined, num_bytes, num_handles)) =
7116                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7117            {
7118                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7119                if inlined != (member_inline_size <= 4) {
7120                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7121                }
7122                let inner_offset;
7123                let mut inner_depth = depth.clone();
7124                if inlined {
7125                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7126                    inner_offset = next_offset;
7127                } else {
7128                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7129                    inner_depth.increment()?;
7130                }
7131                let val_ref = self.result_code.get_or_insert_with(|| {
7132                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::StatusCode, D)
7133                });
7134                fidl::decode!(
7135                    fidl_fuchsia_wlan_ieee80211_common::StatusCode,
7136                    D,
7137                    val_ref,
7138                    decoder,
7139                    inner_offset,
7140                    inner_depth
7141                )?;
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 < 3 {
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 =
7170                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7171                if inlined != (member_inline_size <= 4) {
7172                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7173                }
7174                let inner_offset;
7175                let mut inner_depth = depth.clone();
7176                if inlined {
7177                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7178                    inner_offset = next_offset;
7179                } else {
7180                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7181                    inner_depth.increment()?;
7182                }
7183                let val_ref = self.association_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
7184                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
7185                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7186                {
7187                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7188                }
7189                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7190                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7191                }
7192            }
7193
7194            next_offset += envelope_size;
7195            _next_ordinal_to_read += 1;
7196            if next_offset >= end_offset {
7197                return Ok(());
7198            }
7199
7200            // Decode unknown envelopes for gaps in ordinals.
7201            while _next_ordinal_to_read < 4 {
7202                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7203                _next_ordinal_to_read += 1;
7204                next_offset += envelope_size;
7205            }
7206
7207            let next_out_of_line = decoder.next_out_of_line();
7208            let handles_before = decoder.remaining_handles();
7209            if let Some((inlined, num_bytes, num_handles)) =
7210                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7211            {
7212                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7213                if inlined != (member_inline_size <= 4) {
7214                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7215                }
7216                let inner_offset;
7217                let mut inner_depth = depth.clone();
7218                if inlined {
7219                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7220                    inner_offset = next_offset;
7221                } else {
7222                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7223                    inner_depth.increment()?;
7224                }
7225                let val_ref = self.association_ies.get_or_insert_with(|| {
7226                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
7227                });
7228                fidl::decode!(
7229                    fidl::encoding::UnboundedVector<u8>,
7230                    D,
7231                    val_ref,
7232                    decoder,
7233                    inner_offset,
7234                    inner_depth
7235                )?;
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
7247            // Decode the remaining unknown envelopes.
7248            while next_offset < end_offset {
7249                _next_ordinal_to_read += 1;
7250                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7251                next_offset += envelope_size;
7252            }
7253
7254            Ok(())
7255        }
7256    }
7257
7258    impl WlanFullmacImplIfcDeauthConfRequest {
7259        #[inline(always)]
7260        fn max_ordinal_present(&self) -> u64 {
7261            if let Some(_) = self.peer_sta_address {
7262                return 1;
7263            }
7264            0
7265        }
7266    }
7267
7268    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcDeauthConfRequest {
7269        type Borrowed<'a> = &'a Self;
7270        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7271            value
7272        }
7273    }
7274
7275    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcDeauthConfRequest {
7276        type Owned = Self;
7277
7278        #[inline(always)]
7279        fn inline_align(_context: fidl::encoding::Context) -> usize {
7280            8
7281        }
7282
7283        #[inline(always)]
7284        fn inline_size(_context: fidl::encoding::Context) -> usize {
7285            16
7286        }
7287    }
7288
7289    unsafe impl<D: fidl::encoding::ResourceDialect>
7290        fidl::encoding::Encode<WlanFullmacImplIfcDeauthConfRequest, D>
7291        for &WlanFullmacImplIfcDeauthConfRequest
7292    {
7293        unsafe fn encode(
7294            self,
7295            encoder: &mut fidl::encoding::Encoder<'_, D>,
7296            offset: usize,
7297            mut depth: fidl::encoding::Depth,
7298        ) -> fidl::Result<()> {
7299            encoder.debug_check_bounds::<WlanFullmacImplIfcDeauthConfRequest>(offset);
7300            // Vector header
7301            let max_ordinal: u64 = self.max_ordinal_present();
7302            encoder.write_num(max_ordinal, offset);
7303            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7304            // Calling encoder.out_of_line_offset(0) is not allowed.
7305            if max_ordinal == 0 {
7306                return Ok(());
7307            }
7308            depth.increment()?;
7309            let envelope_size = 8;
7310            let bytes_len = max_ordinal as usize * envelope_size;
7311            #[allow(unused_variables)]
7312            let offset = encoder.out_of_line_offset(bytes_len);
7313            let mut _prev_end_offset: usize = 0;
7314            if 1 > max_ordinal {
7315                return Ok(());
7316            }
7317
7318            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7319            // are envelope_size bytes.
7320            let cur_offset: usize = (1 - 1) * envelope_size;
7321
7322            // Zero reserved fields.
7323            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7324
7325            // Safety:
7326            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7327            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7328            //   envelope_size bytes, there is always sufficient room.
7329            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
7330                self.peer_sta_address
7331                    .as_ref()
7332                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
7333                encoder,
7334                offset + cur_offset,
7335                depth,
7336            )?;
7337
7338            _prev_end_offset = cur_offset + envelope_size;
7339
7340            Ok(())
7341        }
7342    }
7343
7344    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7345        for WlanFullmacImplIfcDeauthConfRequest
7346    {
7347        #[inline(always)]
7348        fn new_empty() -> Self {
7349            Self::default()
7350        }
7351
7352        unsafe fn decode(
7353            &mut self,
7354            decoder: &mut fidl::encoding::Decoder<'_, D>,
7355            offset: usize,
7356            mut depth: fidl::encoding::Depth,
7357        ) -> fidl::Result<()> {
7358            decoder.debug_check_bounds::<Self>(offset);
7359            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7360                None => return Err(fidl::Error::NotNullable),
7361                Some(len) => len,
7362            };
7363            // Calling decoder.out_of_line_offset(0) is not allowed.
7364            if len == 0 {
7365                return Ok(());
7366            };
7367            depth.increment()?;
7368            let envelope_size = 8;
7369            let bytes_len = len * envelope_size;
7370            let offset = decoder.out_of_line_offset(bytes_len)?;
7371            // Decode the envelope for each type.
7372            let mut _next_ordinal_to_read = 0;
7373            let mut next_offset = offset;
7374            let end_offset = offset + bytes_len;
7375            _next_ordinal_to_read += 1;
7376            if next_offset >= end_offset {
7377                return Ok(());
7378            }
7379
7380            // Decode unknown envelopes for gaps in ordinals.
7381            while _next_ordinal_to_read < 1 {
7382                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7383                _next_ordinal_to_read += 1;
7384                next_offset += envelope_size;
7385            }
7386
7387            let next_out_of_line = decoder.next_out_of_line();
7388            let handles_before = decoder.remaining_handles();
7389            if let Some((inlined, num_bytes, num_handles)) =
7390                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7391            {
7392                let member_inline_size =
7393                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
7394                        decoder.context,
7395                    );
7396                if inlined != (member_inline_size <= 4) {
7397                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7398                }
7399                let inner_offset;
7400                let mut inner_depth = depth.clone();
7401                if inlined {
7402                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7403                    inner_offset = next_offset;
7404                } else {
7405                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7406                    inner_depth.increment()?;
7407                }
7408                let val_ref = self
7409                    .peer_sta_address
7410                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
7411                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
7412                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7413                {
7414                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7415                }
7416                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7417                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7418                }
7419            }
7420
7421            next_offset += envelope_size;
7422
7423            // Decode the remaining unknown envelopes.
7424            while next_offset < end_offset {
7425                _next_ordinal_to_read += 1;
7426                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7427                next_offset += envelope_size;
7428            }
7429
7430            Ok(())
7431        }
7432    }
7433
7434    impl WlanFullmacImplIfcDeauthIndRequest {
7435        #[inline(always)]
7436        fn max_ordinal_present(&self) -> u64 {
7437            if let Some(_) = self.locally_initiated {
7438                return 3;
7439            }
7440            if let Some(_) = self.reason_code {
7441                return 2;
7442            }
7443            if let Some(_) = self.peer_sta_address {
7444                return 1;
7445            }
7446            0
7447        }
7448    }
7449
7450    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcDeauthIndRequest {
7451        type Borrowed<'a> = &'a Self;
7452        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7453            value
7454        }
7455    }
7456
7457    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcDeauthIndRequest {
7458        type Owned = Self;
7459
7460        #[inline(always)]
7461        fn inline_align(_context: fidl::encoding::Context) -> usize {
7462            8
7463        }
7464
7465        #[inline(always)]
7466        fn inline_size(_context: fidl::encoding::Context) -> usize {
7467            16
7468        }
7469    }
7470
7471    unsafe impl<D: fidl::encoding::ResourceDialect>
7472        fidl::encoding::Encode<WlanFullmacImplIfcDeauthIndRequest, D>
7473        for &WlanFullmacImplIfcDeauthIndRequest
7474    {
7475        unsafe fn encode(
7476            self,
7477            encoder: &mut fidl::encoding::Encoder<'_, D>,
7478            offset: usize,
7479            mut depth: fidl::encoding::Depth,
7480        ) -> fidl::Result<()> {
7481            encoder.debug_check_bounds::<WlanFullmacImplIfcDeauthIndRequest>(offset);
7482            // Vector header
7483            let max_ordinal: u64 = self.max_ordinal_present();
7484            encoder.write_num(max_ordinal, offset);
7485            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7486            // Calling encoder.out_of_line_offset(0) is not allowed.
7487            if max_ordinal == 0 {
7488                return Ok(());
7489            }
7490            depth.increment()?;
7491            let envelope_size = 8;
7492            let bytes_len = max_ordinal as usize * envelope_size;
7493            #[allow(unused_variables)]
7494            let offset = encoder.out_of_line_offset(bytes_len);
7495            let mut _prev_end_offset: usize = 0;
7496            if 1 > max_ordinal {
7497                return Ok(());
7498            }
7499
7500            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7501            // are envelope_size bytes.
7502            let cur_offset: usize = (1 - 1) * envelope_size;
7503
7504            // Zero reserved fields.
7505            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7506
7507            // Safety:
7508            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7509            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7510            //   envelope_size bytes, there is always sufficient room.
7511            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
7512                self.peer_sta_address
7513                    .as_ref()
7514                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
7515                encoder,
7516                offset + cur_offset,
7517                depth,
7518            )?;
7519
7520            _prev_end_offset = cur_offset + envelope_size;
7521            if 2 > max_ordinal {
7522                return Ok(());
7523            }
7524
7525            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7526            // are envelope_size bytes.
7527            let cur_offset: usize = (2 - 1) * envelope_size;
7528
7529            // Zero reserved fields.
7530            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7531
7532            // Safety:
7533            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7534            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7535            //   envelope_size bytes, there is always sufficient room.
7536            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D>(
7537            self.reason_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow),
7538            encoder, offset + cur_offset, depth
7539        )?;
7540
7541            _prev_end_offset = cur_offset + envelope_size;
7542            if 3 > max_ordinal {
7543                return Ok(());
7544            }
7545
7546            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7547            // are envelope_size bytes.
7548            let cur_offset: usize = (3 - 1) * envelope_size;
7549
7550            // Zero reserved fields.
7551            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7552
7553            // Safety:
7554            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7555            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7556            //   envelope_size bytes, there is always sufficient room.
7557            fidl::encoding::encode_in_envelope_optional::<bool, D>(
7558                self.locally_initiated
7559                    .as_ref()
7560                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
7561                encoder,
7562                offset + cur_offset,
7563                depth,
7564            )?;
7565
7566            _prev_end_offset = cur_offset + envelope_size;
7567
7568            Ok(())
7569        }
7570    }
7571
7572    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7573        for WlanFullmacImplIfcDeauthIndRequest
7574    {
7575        #[inline(always)]
7576        fn new_empty() -> Self {
7577            Self::default()
7578        }
7579
7580        unsafe fn decode(
7581            &mut self,
7582            decoder: &mut fidl::encoding::Decoder<'_, D>,
7583            offset: usize,
7584            mut depth: fidl::encoding::Depth,
7585        ) -> fidl::Result<()> {
7586            decoder.debug_check_bounds::<Self>(offset);
7587            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7588                None => return Err(fidl::Error::NotNullable),
7589                Some(len) => len,
7590            };
7591            // Calling decoder.out_of_line_offset(0) is not allowed.
7592            if len == 0 {
7593                return Ok(());
7594            };
7595            depth.increment()?;
7596            let envelope_size = 8;
7597            let bytes_len = len * envelope_size;
7598            let offset = decoder.out_of_line_offset(bytes_len)?;
7599            // Decode the envelope for each type.
7600            let mut _next_ordinal_to_read = 0;
7601            let mut next_offset = offset;
7602            let end_offset = offset + bytes_len;
7603            _next_ordinal_to_read += 1;
7604            if next_offset >= end_offset {
7605                return Ok(());
7606            }
7607
7608            // Decode unknown envelopes for gaps in ordinals.
7609            while _next_ordinal_to_read < 1 {
7610                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7611                _next_ordinal_to_read += 1;
7612                next_offset += envelope_size;
7613            }
7614
7615            let next_out_of_line = decoder.next_out_of_line();
7616            let handles_before = decoder.remaining_handles();
7617            if let Some((inlined, num_bytes, num_handles)) =
7618                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7619            {
7620                let member_inline_size =
7621                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
7622                        decoder.context,
7623                    );
7624                if inlined != (member_inline_size <= 4) {
7625                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7626                }
7627                let inner_offset;
7628                let mut inner_depth = depth.clone();
7629                if inlined {
7630                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7631                    inner_offset = next_offset;
7632                } else {
7633                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7634                    inner_depth.increment()?;
7635                }
7636                let val_ref = self
7637                    .peer_sta_address
7638                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
7639                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
7640                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7641                {
7642                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7643                }
7644                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7645                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7646                }
7647            }
7648
7649            next_offset += envelope_size;
7650            _next_ordinal_to_read += 1;
7651            if next_offset >= end_offset {
7652                return Ok(());
7653            }
7654
7655            // Decode unknown envelopes for gaps in ordinals.
7656            while _next_ordinal_to_read < 2 {
7657                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7658                _next_ordinal_to_read += 1;
7659                next_offset += envelope_size;
7660            }
7661
7662            let next_out_of_line = decoder.next_out_of_line();
7663            let handles_before = decoder.remaining_handles();
7664            if let Some((inlined, num_bytes, num_handles)) =
7665                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7666            {
7667                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7668                if inlined != (member_inline_size <= 4) {
7669                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7670                }
7671                let inner_offset;
7672                let mut inner_depth = depth.clone();
7673                if inlined {
7674                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7675                    inner_offset = next_offset;
7676                } else {
7677                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7678                    inner_depth.increment()?;
7679                }
7680                let val_ref = self.reason_code.get_or_insert_with(|| {
7681                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D)
7682                });
7683                fidl::decode!(
7684                    fidl_fuchsia_wlan_ieee80211_common::ReasonCode,
7685                    D,
7686                    val_ref,
7687                    decoder,
7688                    inner_offset,
7689                    inner_depth
7690                )?;
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 < 3 {
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 =
7719                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7720                if inlined != (member_inline_size <= 4) {
7721                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7722                }
7723                let inner_offset;
7724                let mut inner_depth = depth.clone();
7725                if inlined {
7726                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7727                    inner_offset = next_offset;
7728                } else {
7729                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7730                    inner_depth.increment()?;
7731                }
7732                let val_ref =
7733                    self.locally_initiated.get_or_insert_with(|| fidl::new_empty!(bool, D));
7734                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
7735                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7736                {
7737                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7738                }
7739                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7740                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7741                }
7742            }
7743
7744            next_offset += envelope_size;
7745
7746            // Decode the remaining unknown envelopes.
7747            while next_offset < end_offset {
7748                _next_ordinal_to_read += 1;
7749                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7750                next_offset += envelope_size;
7751            }
7752
7753            Ok(())
7754        }
7755    }
7756
7757    impl WlanFullmacImplIfcDisassocConfRequest {
7758        #[inline(always)]
7759        fn max_ordinal_present(&self) -> u64 {
7760            if let Some(_) = self.status {
7761                return 1;
7762            }
7763            0
7764        }
7765    }
7766
7767    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcDisassocConfRequest {
7768        type Borrowed<'a> = &'a Self;
7769        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7770            value
7771        }
7772    }
7773
7774    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcDisassocConfRequest {
7775        type Owned = Self;
7776
7777        #[inline(always)]
7778        fn inline_align(_context: fidl::encoding::Context) -> usize {
7779            8
7780        }
7781
7782        #[inline(always)]
7783        fn inline_size(_context: fidl::encoding::Context) -> usize {
7784            16
7785        }
7786    }
7787
7788    unsafe impl<D: fidl::encoding::ResourceDialect>
7789        fidl::encoding::Encode<WlanFullmacImplIfcDisassocConfRequest, D>
7790        for &WlanFullmacImplIfcDisassocConfRequest
7791    {
7792        unsafe fn encode(
7793            self,
7794            encoder: &mut fidl::encoding::Encoder<'_, D>,
7795            offset: usize,
7796            mut depth: fidl::encoding::Depth,
7797        ) -> fidl::Result<()> {
7798            encoder.debug_check_bounds::<WlanFullmacImplIfcDisassocConfRequest>(offset);
7799            // Vector header
7800            let max_ordinal: u64 = self.max_ordinal_present();
7801            encoder.write_num(max_ordinal, offset);
7802            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7803            // Calling encoder.out_of_line_offset(0) is not allowed.
7804            if max_ordinal == 0 {
7805                return Ok(());
7806            }
7807            depth.increment()?;
7808            let envelope_size = 8;
7809            let bytes_len = max_ordinal as usize * envelope_size;
7810            #[allow(unused_variables)]
7811            let offset = encoder.out_of_line_offset(bytes_len);
7812            let mut _prev_end_offset: usize = 0;
7813            if 1 > max_ordinal {
7814                return Ok(());
7815            }
7816
7817            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7818            // are envelope_size bytes.
7819            let cur_offset: usize = (1 - 1) * envelope_size;
7820
7821            // Zero reserved fields.
7822            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7823
7824            // Safety:
7825            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7826            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7827            //   envelope_size bytes, there is always sufficient room.
7828            fidl::encoding::encode_in_envelope_optional::<i32, D>(
7829                self.status.as_ref().map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
7830                encoder,
7831                offset + cur_offset,
7832                depth,
7833            )?;
7834
7835            _prev_end_offset = cur_offset + envelope_size;
7836
7837            Ok(())
7838        }
7839    }
7840
7841    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7842        for WlanFullmacImplIfcDisassocConfRequest
7843    {
7844        #[inline(always)]
7845        fn new_empty() -> Self {
7846            Self::default()
7847        }
7848
7849        unsafe fn decode(
7850            &mut self,
7851            decoder: &mut fidl::encoding::Decoder<'_, D>,
7852            offset: usize,
7853            mut depth: fidl::encoding::Depth,
7854        ) -> fidl::Result<()> {
7855            decoder.debug_check_bounds::<Self>(offset);
7856            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7857                None => return Err(fidl::Error::NotNullable),
7858                Some(len) => len,
7859            };
7860            // Calling decoder.out_of_line_offset(0) is not allowed.
7861            if len == 0 {
7862                return Ok(());
7863            };
7864            depth.increment()?;
7865            let envelope_size = 8;
7866            let bytes_len = len * envelope_size;
7867            let offset = decoder.out_of_line_offset(bytes_len)?;
7868            // Decode the envelope for each type.
7869            let mut _next_ordinal_to_read = 0;
7870            let mut next_offset = offset;
7871            let end_offset = offset + bytes_len;
7872            _next_ordinal_to_read += 1;
7873            if next_offset >= end_offset {
7874                return Ok(());
7875            }
7876
7877            // Decode unknown envelopes for gaps in ordinals.
7878            while _next_ordinal_to_read < 1 {
7879                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7880                _next_ordinal_to_read += 1;
7881                next_offset += envelope_size;
7882            }
7883
7884            let next_out_of_line = decoder.next_out_of_line();
7885            let handles_before = decoder.remaining_handles();
7886            if let Some((inlined, num_bytes, num_handles)) =
7887                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7888            {
7889                let member_inline_size =
7890                    <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7891                if inlined != (member_inline_size <= 4) {
7892                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7893                }
7894                let inner_offset;
7895                let mut inner_depth = depth.clone();
7896                if inlined {
7897                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7898                    inner_offset = next_offset;
7899                } else {
7900                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7901                    inner_depth.increment()?;
7902                }
7903                let val_ref = self.status.get_or_insert_with(|| fidl::new_empty!(i32, D));
7904                fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
7905                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7906                {
7907                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7908                }
7909                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7910                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7911                }
7912            }
7913
7914            next_offset += envelope_size;
7915
7916            // Decode the remaining unknown envelopes.
7917            while next_offset < end_offset {
7918                _next_ordinal_to_read += 1;
7919                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7920                next_offset += envelope_size;
7921            }
7922
7923            Ok(())
7924        }
7925    }
7926
7927    impl WlanFullmacImplIfcDisassocIndRequest {
7928        #[inline(always)]
7929        fn max_ordinal_present(&self) -> u64 {
7930            if let Some(_) = self.locally_initiated {
7931                return 3;
7932            }
7933            if let Some(_) = self.reason_code {
7934                return 2;
7935            }
7936            if let Some(_) = self.peer_sta_address {
7937                return 1;
7938            }
7939            0
7940        }
7941    }
7942
7943    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcDisassocIndRequest {
7944        type Borrowed<'a> = &'a Self;
7945        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7946            value
7947        }
7948    }
7949
7950    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcDisassocIndRequest {
7951        type Owned = Self;
7952
7953        #[inline(always)]
7954        fn inline_align(_context: fidl::encoding::Context) -> usize {
7955            8
7956        }
7957
7958        #[inline(always)]
7959        fn inline_size(_context: fidl::encoding::Context) -> usize {
7960            16
7961        }
7962    }
7963
7964    unsafe impl<D: fidl::encoding::ResourceDialect>
7965        fidl::encoding::Encode<WlanFullmacImplIfcDisassocIndRequest, D>
7966        for &WlanFullmacImplIfcDisassocIndRequest
7967    {
7968        unsafe fn encode(
7969            self,
7970            encoder: &mut fidl::encoding::Encoder<'_, D>,
7971            offset: usize,
7972            mut depth: fidl::encoding::Depth,
7973        ) -> fidl::Result<()> {
7974            encoder.debug_check_bounds::<WlanFullmacImplIfcDisassocIndRequest>(offset);
7975            // Vector header
7976            let max_ordinal: u64 = self.max_ordinal_present();
7977            encoder.write_num(max_ordinal, offset);
7978            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7979            // Calling encoder.out_of_line_offset(0) is not allowed.
7980            if max_ordinal == 0 {
7981                return Ok(());
7982            }
7983            depth.increment()?;
7984            let envelope_size = 8;
7985            let bytes_len = max_ordinal as usize * envelope_size;
7986            #[allow(unused_variables)]
7987            let offset = encoder.out_of_line_offset(bytes_len);
7988            let mut _prev_end_offset: usize = 0;
7989            if 1 > max_ordinal {
7990                return Ok(());
7991            }
7992
7993            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7994            // are envelope_size bytes.
7995            let cur_offset: usize = (1 - 1) * envelope_size;
7996
7997            // Zero reserved fields.
7998            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7999
8000            // Safety:
8001            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8002            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8003            //   envelope_size bytes, there is always sufficient room.
8004            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
8005                self.peer_sta_address
8006                    .as_ref()
8007                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
8008                encoder,
8009                offset + cur_offset,
8010                depth,
8011            )?;
8012
8013            _prev_end_offset = cur_offset + envelope_size;
8014            if 2 > max_ordinal {
8015                return Ok(());
8016            }
8017
8018            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8019            // are envelope_size bytes.
8020            let cur_offset: usize = (2 - 1) * envelope_size;
8021
8022            // Zero reserved fields.
8023            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8024
8025            // Safety:
8026            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8027            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8028            //   envelope_size bytes, there is always sufficient room.
8029            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D>(
8030            self.reason_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow),
8031            encoder, offset + cur_offset, depth
8032        )?;
8033
8034            _prev_end_offset = cur_offset + envelope_size;
8035            if 3 > max_ordinal {
8036                return Ok(());
8037            }
8038
8039            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8040            // are envelope_size bytes.
8041            let cur_offset: usize = (3 - 1) * envelope_size;
8042
8043            // Zero reserved fields.
8044            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8045
8046            // Safety:
8047            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8048            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8049            //   envelope_size bytes, there is always sufficient room.
8050            fidl::encoding::encode_in_envelope_optional::<bool, D>(
8051                self.locally_initiated
8052                    .as_ref()
8053                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
8054                encoder,
8055                offset + cur_offset,
8056                depth,
8057            )?;
8058
8059            _prev_end_offset = cur_offset + envelope_size;
8060
8061            Ok(())
8062        }
8063    }
8064
8065    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8066        for WlanFullmacImplIfcDisassocIndRequest
8067    {
8068        #[inline(always)]
8069        fn new_empty() -> Self {
8070            Self::default()
8071        }
8072
8073        unsafe fn decode(
8074            &mut self,
8075            decoder: &mut fidl::encoding::Decoder<'_, D>,
8076            offset: usize,
8077            mut depth: fidl::encoding::Depth,
8078        ) -> fidl::Result<()> {
8079            decoder.debug_check_bounds::<Self>(offset);
8080            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8081                None => return Err(fidl::Error::NotNullable),
8082                Some(len) => len,
8083            };
8084            // Calling decoder.out_of_line_offset(0) is not allowed.
8085            if len == 0 {
8086                return Ok(());
8087            };
8088            depth.increment()?;
8089            let envelope_size = 8;
8090            let bytes_len = len * envelope_size;
8091            let offset = decoder.out_of_line_offset(bytes_len)?;
8092            // Decode the envelope for each type.
8093            let mut _next_ordinal_to_read = 0;
8094            let mut next_offset = offset;
8095            let end_offset = offset + bytes_len;
8096            _next_ordinal_to_read += 1;
8097            if next_offset >= end_offset {
8098                return Ok(());
8099            }
8100
8101            // Decode unknown envelopes for gaps in ordinals.
8102            while _next_ordinal_to_read < 1 {
8103                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8104                _next_ordinal_to_read += 1;
8105                next_offset += envelope_size;
8106            }
8107
8108            let next_out_of_line = decoder.next_out_of_line();
8109            let handles_before = decoder.remaining_handles();
8110            if let Some((inlined, num_bytes, num_handles)) =
8111                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8112            {
8113                let member_inline_size =
8114                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
8115                        decoder.context,
8116                    );
8117                if inlined != (member_inline_size <= 4) {
8118                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8119                }
8120                let inner_offset;
8121                let mut inner_depth = depth.clone();
8122                if inlined {
8123                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8124                    inner_offset = next_offset;
8125                } else {
8126                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8127                    inner_depth.increment()?;
8128                }
8129                let val_ref = self
8130                    .peer_sta_address
8131                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
8132                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
8133                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8134                {
8135                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8136                }
8137                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8138                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8139                }
8140            }
8141
8142            next_offset += envelope_size;
8143            _next_ordinal_to_read += 1;
8144            if next_offset >= end_offset {
8145                return Ok(());
8146            }
8147
8148            // Decode unknown envelopes for gaps in ordinals.
8149            while _next_ordinal_to_read < 2 {
8150                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8151                _next_ordinal_to_read += 1;
8152                next_offset += envelope_size;
8153            }
8154
8155            let next_out_of_line = decoder.next_out_of_line();
8156            let handles_before = decoder.remaining_handles();
8157            if let Some((inlined, num_bytes, num_handles)) =
8158                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8159            {
8160                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8161                if inlined != (member_inline_size <= 4) {
8162                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8163                }
8164                let inner_offset;
8165                let mut inner_depth = depth.clone();
8166                if inlined {
8167                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8168                    inner_offset = next_offset;
8169                } else {
8170                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8171                    inner_depth.increment()?;
8172                }
8173                let val_ref = self.reason_code.get_or_insert_with(|| {
8174                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D)
8175                });
8176                fidl::decode!(
8177                    fidl_fuchsia_wlan_ieee80211_common::ReasonCode,
8178                    D,
8179                    val_ref,
8180                    decoder,
8181                    inner_offset,
8182                    inner_depth
8183                )?;
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 < 3 {
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 =
8212                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8213                if inlined != (member_inline_size <= 4) {
8214                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8215                }
8216                let inner_offset;
8217                let mut inner_depth = depth.clone();
8218                if inlined {
8219                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8220                    inner_offset = next_offset;
8221                } else {
8222                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8223                    inner_depth.increment()?;
8224                }
8225                let val_ref =
8226                    self.locally_initiated.get_or_insert_with(|| fidl::new_empty!(bool, D));
8227                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
8228                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8229                {
8230                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8231                }
8232                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8233                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8234                }
8235            }
8236
8237            next_offset += envelope_size;
8238
8239            // Decode the remaining unknown envelopes.
8240            while next_offset < end_offset {
8241                _next_ordinal_to_read += 1;
8242                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8243                next_offset += envelope_size;
8244            }
8245
8246            Ok(())
8247        }
8248    }
8249
8250    impl WlanFullmacImplIfcEapolConfRequest {
8251        #[inline(always)]
8252        fn max_ordinal_present(&self) -> u64 {
8253            if let Some(_) = self.dst_addr {
8254                return 2;
8255            }
8256            if let Some(_) = self.result_code {
8257                return 1;
8258            }
8259            0
8260        }
8261    }
8262
8263    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcEapolConfRequest {
8264        type Borrowed<'a> = &'a Self;
8265        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8266            value
8267        }
8268    }
8269
8270    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcEapolConfRequest {
8271        type Owned = Self;
8272
8273        #[inline(always)]
8274        fn inline_align(_context: fidl::encoding::Context) -> usize {
8275            8
8276        }
8277
8278        #[inline(always)]
8279        fn inline_size(_context: fidl::encoding::Context) -> usize {
8280            16
8281        }
8282    }
8283
8284    unsafe impl<D: fidl::encoding::ResourceDialect>
8285        fidl::encoding::Encode<WlanFullmacImplIfcEapolConfRequest, D>
8286        for &WlanFullmacImplIfcEapolConfRequest
8287    {
8288        unsafe fn encode(
8289            self,
8290            encoder: &mut fidl::encoding::Encoder<'_, D>,
8291            offset: usize,
8292            mut depth: fidl::encoding::Depth,
8293        ) -> fidl::Result<()> {
8294            encoder.debug_check_bounds::<WlanFullmacImplIfcEapolConfRequest>(offset);
8295            // Vector header
8296            let max_ordinal: u64 = self.max_ordinal_present();
8297            encoder.write_num(max_ordinal, offset);
8298            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8299            // Calling encoder.out_of_line_offset(0) is not allowed.
8300            if max_ordinal == 0 {
8301                return Ok(());
8302            }
8303            depth.increment()?;
8304            let envelope_size = 8;
8305            let bytes_len = max_ordinal as usize * envelope_size;
8306            #[allow(unused_variables)]
8307            let offset = encoder.out_of_line_offset(bytes_len);
8308            let mut _prev_end_offset: usize = 0;
8309            if 1 > max_ordinal {
8310                return Ok(());
8311            }
8312
8313            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8314            // are envelope_size bytes.
8315            let cur_offset: usize = (1 - 1) * envelope_size;
8316
8317            // Zero reserved fields.
8318            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8319
8320            // Safety:
8321            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8322            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8323            //   envelope_size bytes, there is always sufficient room.
8324            fidl::encoding::encode_in_envelope_optional::<EapolTxResult, D>(
8325                self.result_code
8326                    .as_ref()
8327                    .map(<EapolTxResult as fidl::encoding::ValueTypeMarker>::borrow),
8328                encoder,
8329                offset + cur_offset,
8330                depth,
8331            )?;
8332
8333            _prev_end_offset = cur_offset + envelope_size;
8334            if 2 > max_ordinal {
8335                return Ok(());
8336            }
8337
8338            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8339            // are envelope_size bytes.
8340            let cur_offset: usize = (2 - 1) * envelope_size;
8341
8342            // Zero reserved fields.
8343            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8344
8345            // Safety:
8346            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8347            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8348            //   envelope_size bytes, there is always sufficient room.
8349            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
8350                self.dst_addr
8351                    .as_ref()
8352                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
8353                encoder,
8354                offset + cur_offset,
8355                depth,
8356            )?;
8357
8358            _prev_end_offset = cur_offset + envelope_size;
8359
8360            Ok(())
8361        }
8362    }
8363
8364    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8365        for WlanFullmacImplIfcEapolConfRequest
8366    {
8367        #[inline(always)]
8368        fn new_empty() -> Self {
8369            Self::default()
8370        }
8371
8372        unsafe fn decode(
8373            &mut self,
8374            decoder: &mut fidl::encoding::Decoder<'_, D>,
8375            offset: usize,
8376            mut depth: fidl::encoding::Depth,
8377        ) -> fidl::Result<()> {
8378            decoder.debug_check_bounds::<Self>(offset);
8379            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8380                None => return Err(fidl::Error::NotNullable),
8381                Some(len) => len,
8382            };
8383            // Calling decoder.out_of_line_offset(0) is not allowed.
8384            if len == 0 {
8385                return Ok(());
8386            };
8387            depth.increment()?;
8388            let envelope_size = 8;
8389            let bytes_len = len * envelope_size;
8390            let offset = decoder.out_of_line_offset(bytes_len)?;
8391            // Decode the envelope for each type.
8392            let mut _next_ordinal_to_read = 0;
8393            let mut next_offset = offset;
8394            let end_offset = offset + bytes_len;
8395            _next_ordinal_to_read += 1;
8396            if next_offset >= end_offset {
8397                return Ok(());
8398            }
8399
8400            // Decode unknown envelopes for gaps in ordinals.
8401            while _next_ordinal_to_read < 1 {
8402                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8403                _next_ordinal_to_read += 1;
8404                next_offset += envelope_size;
8405            }
8406
8407            let next_out_of_line = decoder.next_out_of_line();
8408            let handles_before = decoder.remaining_handles();
8409            if let Some((inlined, num_bytes, num_handles)) =
8410                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8411            {
8412                let member_inline_size =
8413                    <EapolTxResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8414                if inlined != (member_inline_size <= 4) {
8415                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8416                }
8417                let inner_offset;
8418                let mut inner_depth = depth.clone();
8419                if inlined {
8420                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8421                    inner_offset = next_offset;
8422                } else {
8423                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8424                    inner_depth.increment()?;
8425                }
8426                let val_ref =
8427                    self.result_code.get_or_insert_with(|| fidl::new_empty!(EapolTxResult, D));
8428                fidl::decode!(EapolTxResult, D, val_ref, decoder, inner_offset, inner_depth)?;
8429                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8430                {
8431                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8432                }
8433                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8434                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8435                }
8436            }
8437
8438            next_offset += envelope_size;
8439            _next_ordinal_to_read += 1;
8440            if next_offset >= end_offset {
8441                return Ok(());
8442            }
8443
8444            // Decode unknown envelopes for gaps in ordinals.
8445            while _next_ordinal_to_read < 2 {
8446                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8447                _next_ordinal_to_read += 1;
8448                next_offset += envelope_size;
8449            }
8450
8451            let next_out_of_line = decoder.next_out_of_line();
8452            let handles_before = decoder.remaining_handles();
8453            if let Some((inlined, num_bytes, num_handles)) =
8454                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8455            {
8456                let member_inline_size =
8457                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
8458                        decoder.context,
8459                    );
8460                if inlined != (member_inline_size <= 4) {
8461                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8462                }
8463                let inner_offset;
8464                let mut inner_depth = depth.clone();
8465                if inlined {
8466                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8467                    inner_offset = next_offset;
8468                } else {
8469                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8470                    inner_depth.increment()?;
8471                }
8472                let val_ref = self
8473                    .dst_addr
8474                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
8475                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
8476                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8477                {
8478                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8479                }
8480                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8481                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8482                }
8483            }
8484
8485            next_offset += envelope_size;
8486
8487            // Decode the remaining unknown envelopes.
8488            while next_offset < end_offset {
8489                _next_ordinal_to_read += 1;
8490                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8491                next_offset += envelope_size;
8492            }
8493
8494            Ok(())
8495        }
8496    }
8497
8498    impl WlanFullmacImplIfcEapolIndRequest {
8499        #[inline(always)]
8500        fn max_ordinal_present(&self) -> u64 {
8501            if let Some(_) = self.data {
8502                return 3;
8503            }
8504            if let Some(_) = self.dst_addr {
8505                return 2;
8506            }
8507            if let Some(_) = self.src_addr {
8508                return 1;
8509            }
8510            0
8511        }
8512    }
8513
8514    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcEapolIndRequest {
8515        type Borrowed<'a> = &'a Self;
8516        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8517            value
8518        }
8519    }
8520
8521    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcEapolIndRequest {
8522        type Owned = Self;
8523
8524        #[inline(always)]
8525        fn inline_align(_context: fidl::encoding::Context) -> usize {
8526            8
8527        }
8528
8529        #[inline(always)]
8530        fn inline_size(_context: fidl::encoding::Context) -> usize {
8531            16
8532        }
8533    }
8534
8535    unsafe impl<D: fidl::encoding::ResourceDialect>
8536        fidl::encoding::Encode<WlanFullmacImplIfcEapolIndRequest, D>
8537        for &WlanFullmacImplIfcEapolIndRequest
8538    {
8539        unsafe fn encode(
8540            self,
8541            encoder: &mut fidl::encoding::Encoder<'_, D>,
8542            offset: usize,
8543            mut depth: fidl::encoding::Depth,
8544        ) -> fidl::Result<()> {
8545            encoder.debug_check_bounds::<WlanFullmacImplIfcEapolIndRequest>(offset);
8546            // Vector header
8547            let max_ordinal: u64 = self.max_ordinal_present();
8548            encoder.write_num(max_ordinal, offset);
8549            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8550            // Calling encoder.out_of_line_offset(0) is not allowed.
8551            if max_ordinal == 0 {
8552                return Ok(());
8553            }
8554            depth.increment()?;
8555            let envelope_size = 8;
8556            let bytes_len = max_ordinal as usize * envelope_size;
8557            #[allow(unused_variables)]
8558            let offset = encoder.out_of_line_offset(bytes_len);
8559            let mut _prev_end_offset: usize = 0;
8560            if 1 > max_ordinal {
8561                return Ok(());
8562            }
8563
8564            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8565            // are envelope_size bytes.
8566            let cur_offset: usize = (1 - 1) * envelope_size;
8567
8568            // Zero reserved fields.
8569            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8570
8571            // Safety:
8572            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8573            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8574            //   envelope_size bytes, there is always sufficient room.
8575            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
8576                self.src_addr
8577                    .as_ref()
8578                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
8579                encoder,
8580                offset + cur_offset,
8581                depth,
8582            )?;
8583
8584            _prev_end_offset = cur_offset + envelope_size;
8585            if 2 > max_ordinal {
8586                return Ok(());
8587            }
8588
8589            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8590            // are envelope_size bytes.
8591            let cur_offset: usize = (2 - 1) * envelope_size;
8592
8593            // Zero reserved fields.
8594            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8595
8596            // Safety:
8597            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8598            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8599            //   envelope_size bytes, there is always sufficient room.
8600            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
8601                self.dst_addr
8602                    .as_ref()
8603                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
8604                encoder,
8605                offset + cur_offset,
8606                depth,
8607            )?;
8608
8609            _prev_end_offset = cur_offset + envelope_size;
8610            if 3 > max_ordinal {
8611                return Ok(());
8612            }
8613
8614            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8615            // are envelope_size bytes.
8616            let cur_offset: usize = (3 - 1) * envelope_size;
8617
8618            // Zero reserved fields.
8619            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8620
8621            // Safety:
8622            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8623            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8624            //   envelope_size bytes, there is always sufficient room.
8625            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
8626            self.data.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
8627            encoder, offset + cur_offset, depth
8628        )?;
8629
8630            _prev_end_offset = cur_offset + envelope_size;
8631
8632            Ok(())
8633        }
8634    }
8635
8636    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8637        for WlanFullmacImplIfcEapolIndRequest
8638    {
8639        #[inline(always)]
8640        fn new_empty() -> Self {
8641            Self::default()
8642        }
8643
8644        unsafe fn decode(
8645            &mut self,
8646            decoder: &mut fidl::encoding::Decoder<'_, D>,
8647            offset: usize,
8648            mut depth: fidl::encoding::Depth,
8649        ) -> fidl::Result<()> {
8650            decoder.debug_check_bounds::<Self>(offset);
8651            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8652                None => return Err(fidl::Error::NotNullable),
8653                Some(len) => len,
8654            };
8655            // Calling decoder.out_of_line_offset(0) is not allowed.
8656            if len == 0 {
8657                return Ok(());
8658            };
8659            depth.increment()?;
8660            let envelope_size = 8;
8661            let bytes_len = len * envelope_size;
8662            let offset = decoder.out_of_line_offset(bytes_len)?;
8663            // Decode the envelope for each type.
8664            let mut _next_ordinal_to_read = 0;
8665            let mut next_offset = offset;
8666            let end_offset = offset + bytes_len;
8667            _next_ordinal_to_read += 1;
8668            if next_offset >= end_offset {
8669                return Ok(());
8670            }
8671
8672            // Decode unknown envelopes for gaps in ordinals.
8673            while _next_ordinal_to_read < 1 {
8674                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8675                _next_ordinal_to_read += 1;
8676                next_offset += envelope_size;
8677            }
8678
8679            let next_out_of_line = decoder.next_out_of_line();
8680            let handles_before = decoder.remaining_handles();
8681            if let Some((inlined, num_bytes, num_handles)) =
8682                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8683            {
8684                let member_inline_size =
8685                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
8686                        decoder.context,
8687                    );
8688                if inlined != (member_inline_size <= 4) {
8689                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8690                }
8691                let inner_offset;
8692                let mut inner_depth = depth.clone();
8693                if inlined {
8694                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8695                    inner_offset = next_offset;
8696                } else {
8697                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8698                    inner_depth.increment()?;
8699                }
8700                let val_ref = self
8701                    .src_addr
8702                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
8703                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
8704                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8705                {
8706                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8707                }
8708                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8709                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8710                }
8711            }
8712
8713            next_offset += envelope_size;
8714            _next_ordinal_to_read += 1;
8715            if next_offset >= end_offset {
8716                return Ok(());
8717            }
8718
8719            // Decode unknown envelopes for gaps in ordinals.
8720            while _next_ordinal_to_read < 2 {
8721                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8722                _next_ordinal_to_read += 1;
8723                next_offset += envelope_size;
8724            }
8725
8726            let next_out_of_line = decoder.next_out_of_line();
8727            let handles_before = decoder.remaining_handles();
8728            if let Some((inlined, num_bytes, num_handles)) =
8729                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8730            {
8731                let member_inline_size =
8732                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
8733                        decoder.context,
8734                    );
8735                if inlined != (member_inline_size <= 4) {
8736                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8737                }
8738                let inner_offset;
8739                let mut inner_depth = depth.clone();
8740                if inlined {
8741                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8742                    inner_offset = next_offset;
8743                } else {
8744                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8745                    inner_depth.increment()?;
8746                }
8747                let val_ref = self
8748                    .dst_addr
8749                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
8750                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
8751                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8752                {
8753                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8754                }
8755                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8756                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8757                }
8758            }
8759
8760            next_offset += envelope_size;
8761            _next_ordinal_to_read += 1;
8762            if next_offset >= end_offset {
8763                return Ok(());
8764            }
8765
8766            // Decode unknown envelopes for gaps in ordinals.
8767            while _next_ordinal_to_read < 3 {
8768                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8769                _next_ordinal_to_read += 1;
8770                next_offset += envelope_size;
8771            }
8772
8773            let next_out_of_line = decoder.next_out_of_line();
8774            let handles_before = decoder.remaining_handles();
8775            if let Some((inlined, num_bytes, num_handles)) =
8776                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8777            {
8778                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8779                if inlined != (member_inline_size <= 4) {
8780                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8781                }
8782                let inner_offset;
8783                let mut inner_depth = depth.clone();
8784                if inlined {
8785                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8786                    inner_offset = next_offset;
8787                } else {
8788                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8789                    inner_depth.increment()?;
8790                }
8791                let val_ref = self.data.get_or_insert_with(|| {
8792                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
8793                });
8794                fidl::decode!(
8795                    fidl::encoding::UnboundedVector<u8>,
8796                    D,
8797                    val_ref,
8798                    decoder,
8799                    inner_offset,
8800                    inner_depth
8801                )?;
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
8813            // Decode the remaining unknown envelopes.
8814            while next_offset < end_offset {
8815                _next_ordinal_to_read += 1;
8816                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8817                next_offset += envelope_size;
8818            }
8819
8820            Ok(())
8821        }
8822    }
8823
8824    impl WlanFullmacImplIfcOnPmkAvailableRequest {
8825        #[inline(always)]
8826        fn max_ordinal_present(&self) -> u64 {
8827            if let Some(_) = self.pmkid {
8828                return 2;
8829            }
8830            if let Some(_) = self.pmk {
8831                return 1;
8832            }
8833            0
8834        }
8835    }
8836
8837    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnPmkAvailableRequest {
8838        type Borrowed<'a> = &'a Self;
8839        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8840            value
8841        }
8842    }
8843
8844    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcOnPmkAvailableRequest {
8845        type Owned = Self;
8846
8847        #[inline(always)]
8848        fn inline_align(_context: fidl::encoding::Context) -> usize {
8849            8
8850        }
8851
8852        #[inline(always)]
8853        fn inline_size(_context: fidl::encoding::Context) -> usize {
8854            16
8855        }
8856    }
8857
8858    unsafe impl<D: fidl::encoding::ResourceDialect>
8859        fidl::encoding::Encode<WlanFullmacImplIfcOnPmkAvailableRequest, D>
8860        for &WlanFullmacImplIfcOnPmkAvailableRequest
8861    {
8862        unsafe fn encode(
8863            self,
8864            encoder: &mut fidl::encoding::Encoder<'_, D>,
8865            offset: usize,
8866            mut depth: fidl::encoding::Depth,
8867        ) -> fidl::Result<()> {
8868            encoder.debug_check_bounds::<WlanFullmacImplIfcOnPmkAvailableRequest>(offset);
8869            // Vector header
8870            let max_ordinal: u64 = self.max_ordinal_present();
8871            encoder.write_num(max_ordinal, offset);
8872            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8873            // Calling encoder.out_of_line_offset(0) is not allowed.
8874            if max_ordinal == 0 {
8875                return Ok(());
8876            }
8877            depth.increment()?;
8878            let envelope_size = 8;
8879            let bytes_len = max_ordinal as usize * envelope_size;
8880            #[allow(unused_variables)]
8881            let offset = encoder.out_of_line_offset(bytes_len);
8882            let mut _prev_end_offset: usize = 0;
8883            if 1 > max_ordinal {
8884                return Ok(());
8885            }
8886
8887            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8888            // are envelope_size bytes.
8889            let cur_offset: usize = (1 - 1) * envelope_size;
8890
8891            // Zero reserved fields.
8892            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8893
8894            // Safety:
8895            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8896            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8897            //   envelope_size bytes, there is always sufficient room.
8898            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
8899            self.pmk.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
8900            encoder, offset + cur_offset, depth
8901        )?;
8902
8903            _prev_end_offset = cur_offset + envelope_size;
8904            if 2 > max_ordinal {
8905                return Ok(());
8906            }
8907
8908            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8909            // are envelope_size bytes.
8910            let cur_offset: usize = (2 - 1) * envelope_size;
8911
8912            // Zero reserved fields.
8913            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8914
8915            // Safety:
8916            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8917            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8918            //   envelope_size bytes, there is always sufficient room.
8919            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
8920            self.pmkid.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
8921            encoder, offset + cur_offset, depth
8922        )?;
8923
8924            _prev_end_offset = cur_offset + envelope_size;
8925
8926            Ok(())
8927        }
8928    }
8929
8930    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8931        for WlanFullmacImplIfcOnPmkAvailableRequest
8932    {
8933        #[inline(always)]
8934        fn new_empty() -> Self {
8935            Self::default()
8936        }
8937
8938        unsafe fn decode(
8939            &mut self,
8940            decoder: &mut fidl::encoding::Decoder<'_, D>,
8941            offset: usize,
8942            mut depth: fidl::encoding::Depth,
8943        ) -> fidl::Result<()> {
8944            decoder.debug_check_bounds::<Self>(offset);
8945            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8946                None => return Err(fidl::Error::NotNullable),
8947                Some(len) => len,
8948            };
8949            // Calling decoder.out_of_line_offset(0) is not allowed.
8950            if len == 0 {
8951                return Ok(());
8952            };
8953            depth.increment()?;
8954            let envelope_size = 8;
8955            let bytes_len = len * envelope_size;
8956            let offset = decoder.out_of_line_offset(bytes_len)?;
8957            // Decode the envelope for each type.
8958            let mut _next_ordinal_to_read = 0;
8959            let mut next_offset = offset;
8960            let end_offset = offset + bytes_len;
8961            _next_ordinal_to_read += 1;
8962            if next_offset >= end_offset {
8963                return Ok(());
8964            }
8965
8966            // Decode unknown envelopes for gaps in ordinals.
8967            while _next_ordinal_to_read < 1 {
8968                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8969                _next_ordinal_to_read += 1;
8970                next_offset += envelope_size;
8971            }
8972
8973            let next_out_of_line = decoder.next_out_of_line();
8974            let handles_before = decoder.remaining_handles();
8975            if let Some((inlined, num_bytes, num_handles)) =
8976                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8977            {
8978                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8979                if inlined != (member_inline_size <= 4) {
8980                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8981                }
8982                let inner_offset;
8983                let mut inner_depth = depth.clone();
8984                if inlined {
8985                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8986                    inner_offset = next_offset;
8987                } else {
8988                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8989                    inner_depth.increment()?;
8990                }
8991                let val_ref = self.pmk.get_or_insert_with(|| {
8992                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
8993                });
8994                fidl::decode!(
8995                    fidl::encoding::UnboundedVector<u8>,
8996                    D,
8997                    val_ref,
8998                    decoder,
8999                    inner_offset,
9000                    inner_depth
9001                )?;
9002                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9003                {
9004                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9005                }
9006                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9007                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9008                }
9009            }
9010
9011            next_offset += envelope_size;
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 < 2 {
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.pmkid.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
9064            // Decode the remaining unknown envelopes.
9065            while next_offset < end_offset {
9066                _next_ordinal_to_read += 1;
9067                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9068                next_offset += envelope_size;
9069            }
9070
9071            Ok(())
9072        }
9073    }
9074
9075    impl WlanFullmacImplIfcOnScanEndRequest {
9076        #[inline(always)]
9077        fn max_ordinal_present(&self) -> u64 {
9078            if let Some(_) = self.code {
9079                return 2;
9080            }
9081            if let Some(_) = self.txn_id {
9082                return 1;
9083            }
9084            0
9085        }
9086    }
9087
9088    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnScanEndRequest {
9089        type Borrowed<'a> = &'a Self;
9090        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9091            value
9092        }
9093    }
9094
9095    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcOnScanEndRequest {
9096        type Owned = Self;
9097
9098        #[inline(always)]
9099        fn inline_align(_context: fidl::encoding::Context) -> usize {
9100            8
9101        }
9102
9103        #[inline(always)]
9104        fn inline_size(_context: fidl::encoding::Context) -> usize {
9105            16
9106        }
9107    }
9108
9109    unsafe impl<D: fidl::encoding::ResourceDialect>
9110        fidl::encoding::Encode<WlanFullmacImplIfcOnScanEndRequest, D>
9111        for &WlanFullmacImplIfcOnScanEndRequest
9112    {
9113        unsafe fn encode(
9114            self,
9115            encoder: &mut fidl::encoding::Encoder<'_, D>,
9116            offset: usize,
9117            mut depth: fidl::encoding::Depth,
9118        ) -> fidl::Result<()> {
9119            encoder.debug_check_bounds::<WlanFullmacImplIfcOnScanEndRequest>(offset);
9120            // Vector header
9121            let max_ordinal: u64 = self.max_ordinal_present();
9122            encoder.write_num(max_ordinal, offset);
9123            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9124            // Calling encoder.out_of_line_offset(0) is not allowed.
9125            if max_ordinal == 0 {
9126                return Ok(());
9127            }
9128            depth.increment()?;
9129            let envelope_size = 8;
9130            let bytes_len = max_ordinal as usize * envelope_size;
9131            #[allow(unused_variables)]
9132            let offset = encoder.out_of_line_offset(bytes_len);
9133            let mut _prev_end_offset: usize = 0;
9134            if 1 > max_ordinal {
9135                return Ok(());
9136            }
9137
9138            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9139            // are envelope_size bytes.
9140            let cur_offset: usize = (1 - 1) * envelope_size;
9141
9142            // Zero reserved fields.
9143            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9144
9145            // Safety:
9146            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9147            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9148            //   envelope_size bytes, there is always sufficient room.
9149            fidl::encoding::encode_in_envelope_optional::<u64, D>(
9150                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
9151                encoder,
9152                offset + cur_offset,
9153                depth,
9154            )?;
9155
9156            _prev_end_offset = cur_offset + envelope_size;
9157            if 2 > max_ordinal {
9158                return Ok(());
9159            }
9160
9161            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9162            // are envelope_size bytes.
9163            let cur_offset: usize = (2 - 1) * envelope_size;
9164
9165            // Zero reserved fields.
9166            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9167
9168            // Safety:
9169            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9170            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9171            //   envelope_size bytes, there is always sufficient room.
9172            fidl::encoding::encode_in_envelope_optional::<WlanScanResult, D>(
9173                self.code.as_ref().map(<WlanScanResult as fidl::encoding::ValueTypeMarker>::borrow),
9174                encoder,
9175                offset + cur_offset,
9176                depth,
9177            )?;
9178
9179            _prev_end_offset = cur_offset + envelope_size;
9180
9181            Ok(())
9182        }
9183    }
9184
9185    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9186        for WlanFullmacImplIfcOnScanEndRequest
9187    {
9188        #[inline(always)]
9189        fn new_empty() -> Self {
9190            Self::default()
9191        }
9192
9193        unsafe fn decode(
9194            &mut self,
9195            decoder: &mut fidl::encoding::Decoder<'_, D>,
9196            offset: usize,
9197            mut depth: fidl::encoding::Depth,
9198        ) -> fidl::Result<()> {
9199            decoder.debug_check_bounds::<Self>(offset);
9200            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9201                None => return Err(fidl::Error::NotNullable),
9202                Some(len) => len,
9203            };
9204            // Calling decoder.out_of_line_offset(0) is not allowed.
9205            if len == 0 {
9206                return Ok(());
9207            };
9208            depth.increment()?;
9209            let envelope_size = 8;
9210            let bytes_len = len * envelope_size;
9211            let offset = decoder.out_of_line_offset(bytes_len)?;
9212            // Decode the envelope for each type.
9213            let mut _next_ordinal_to_read = 0;
9214            let mut next_offset = offset;
9215            let end_offset = offset + bytes_len;
9216            _next_ordinal_to_read += 1;
9217            if next_offset >= end_offset {
9218                return Ok(());
9219            }
9220
9221            // Decode unknown envelopes for gaps in ordinals.
9222            while _next_ordinal_to_read < 1 {
9223                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9224                _next_ordinal_to_read += 1;
9225                next_offset += envelope_size;
9226            }
9227
9228            let next_out_of_line = decoder.next_out_of_line();
9229            let handles_before = decoder.remaining_handles();
9230            if let Some((inlined, num_bytes, num_handles)) =
9231                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9232            {
9233                let member_inline_size =
9234                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9235                if inlined != (member_inline_size <= 4) {
9236                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9237                }
9238                let inner_offset;
9239                let mut inner_depth = depth.clone();
9240                if inlined {
9241                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9242                    inner_offset = next_offset;
9243                } else {
9244                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9245                    inner_depth.increment()?;
9246                }
9247                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
9248                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
9249                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9250                {
9251                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9252                }
9253                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9254                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9255                }
9256            }
9257
9258            next_offset += envelope_size;
9259            _next_ordinal_to_read += 1;
9260            if next_offset >= end_offset {
9261                return Ok(());
9262            }
9263
9264            // Decode unknown envelopes for gaps in ordinals.
9265            while _next_ordinal_to_read < 2 {
9266                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9267                _next_ordinal_to_read += 1;
9268                next_offset += envelope_size;
9269            }
9270
9271            let next_out_of_line = decoder.next_out_of_line();
9272            let handles_before = decoder.remaining_handles();
9273            if let Some((inlined, num_bytes, num_handles)) =
9274                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9275            {
9276                let member_inline_size =
9277                    <WlanScanResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9278                if inlined != (member_inline_size <= 4) {
9279                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9280                }
9281                let inner_offset;
9282                let mut inner_depth = depth.clone();
9283                if inlined {
9284                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9285                    inner_offset = next_offset;
9286                } else {
9287                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9288                    inner_depth.increment()?;
9289                }
9290                let val_ref = self.code.get_or_insert_with(|| fidl::new_empty!(WlanScanResult, D));
9291                fidl::decode!(WlanScanResult, D, val_ref, decoder, inner_offset, inner_depth)?;
9292                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9293                {
9294                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9295                }
9296                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9297                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9298                }
9299            }
9300
9301            next_offset += envelope_size;
9302
9303            // Decode the remaining unknown envelopes.
9304            while next_offset < end_offset {
9305                _next_ordinal_to_read += 1;
9306                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9307                next_offset += envelope_size;
9308            }
9309
9310            Ok(())
9311        }
9312    }
9313
9314    impl WlanFullmacImplIfcOnScanResultRequest {
9315        #[inline(always)]
9316        fn max_ordinal_present(&self) -> u64 {
9317            if let Some(_) = self.bss {
9318                return 3;
9319            }
9320            if let Some(_) = self.timestamp_nanos {
9321                return 2;
9322            }
9323            if let Some(_) = self.txn_id {
9324                return 1;
9325            }
9326            0
9327        }
9328    }
9329
9330    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnScanResultRequest {
9331        type Borrowed<'a> = &'a Self;
9332        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9333            value
9334        }
9335    }
9336
9337    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcOnScanResultRequest {
9338        type Owned = Self;
9339
9340        #[inline(always)]
9341        fn inline_align(_context: fidl::encoding::Context) -> usize {
9342            8
9343        }
9344
9345        #[inline(always)]
9346        fn inline_size(_context: fidl::encoding::Context) -> usize {
9347            16
9348        }
9349    }
9350
9351    unsafe impl<D: fidl::encoding::ResourceDialect>
9352        fidl::encoding::Encode<WlanFullmacImplIfcOnScanResultRequest, D>
9353        for &WlanFullmacImplIfcOnScanResultRequest
9354    {
9355        unsafe fn encode(
9356            self,
9357            encoder: &mut fidl::encoding::Encoder<'_, D>,
9358            offset: usize,
9359            mut depth: fidl::encoding::Depth,
9360        ) -> fidl::Result<()> {
9361            encoder.debug_check_bounds::<WlanFullmacImplIfcOnScanResultRequest>(offset);
9362            // Vector header
9363            let max_ordinal: u64 = self.max_ordinal_present();
9364            encoder.write_num(max_ordinal, offset);
9365            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9366            // Calling encoder.out_of_line_offset(0) is not allowed.
9367            if max_ordinal == 0 {
9368                return Ok(());
9369            }
9370            depth.increment()?;
9371            let envelope_size = 8;
9372            let bytes_len = max_ordinal as usize * envelope_size;
9373            #[allow(unused_variables)]
9374            let offset = encoder.out_of_line_offset(bytes_len);
9375            let mut _prev_end_offset: usize = 0;
9376            if 1 > max_ordinal {
9377                return Ok(());
9378            }
9379
9380            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9381            // are envelope_size bytes.
9382            let cur_offset: usize = (1 - 1) * envelope_size;
9383
9384            // Zero reserved fields.
9385            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9386
9387            // Safety:
9388            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9389            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9390            //   envelope_size bytes, there is always sufficient room.
9391            fidl::encoding::encode_in_envelope_optional::<u64, D>(
9392                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
9393                encoder,
9394                offset + cur_offset,
9395                depth,
9396            )?;
9397
9398            _prev_end_offset = cur_offset + envelope_size;
9399            if 2 > max_ordinal {
9400                return Ok(());
9401            }
9402
9403            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9404            // are envelope_size bytes.
9405            let cur_offset: usize = (2 - 1) * envelope_size;
9406
9407            // Zero reserved fields.
9408            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9409
9410            // Safety:
9411            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9412            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9413            //   envelope_size bytes, there is always sufficient room.
9414            fidl::encoding::encode_in_envelope_optional::<i64, D>(
9415                self.timestamp_nanos.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
9416                encoder,
9417                offset + cur_offset,
9418                depth,
9419            )?;
9420
9421            _prev_end_offset = cur_offset + envelope_size;
9422            if 3 > max_ordinal {
9423                return Ok(());
9424            }
9425
9426            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9427            // are envelope_size bytes.
9428            let cur_offset: usize = (3 - 1) * envelope_size;
9429
9430            // Zero reserved fields.
9431            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9432
9433            // Safety:
9434            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9435            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9436            //   envelope_size bytes, there is always sufficient room.
9437            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::BssDescription, D>(
9438            self.bss.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow),
9439            encoder, offset + cur_offset, depth
9440        )?;
9441
9442            _prev_end_offset = cur_offset + envelope_size;
9443
9444            Ok(())
9445        }
9446    }
9447
9448    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9449        for WlanFullmacImplIfcOnScanResultRequest
9450    {
9451        #[inline(always)]
9452        fn new_empty() -> Self {
9453            Self::default()
9454        }
9455
9456        unsafe fn decode(
9457            &mut self,
9458            decoder: &mut fidl::encoding::Decoder<'_, D>,
9459            offset: usize,
9460            mut depth: fidl::encoding::Depth,
9461        ) -> fidl::Result<()> {
9462            decoder.debug_check_bounds::<Self>(offset);
9463            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9464                None => return Err(fidl::Error::NotNullable),
9465                Some(len) => len,
9466            };
9467            // Calling decoder.out_of_line_offset(0) is not allowed.
9468            if len == 0 {
9469                return Ok(());
9470            };
9471            depth.increment()?;
9472            let envelope_size = 8;
9473            let bytes_len = len * envelope_size;
9474            let offset = decoder.out_of_line_offset(bytes_len)?;
9475            // Decode the envelope for each type.
9476            let mut _next_ordinal_to_read = 0;
9477            let mut next_offset = offset;
9478            let end_offset = offset + bytes_len;
9479            _next_ordinal_to_read += 1;
9480            if next_offset >= end_offset {
9481                return Ok(());
9482            }
9483
9484            // Decode unknown envelopes for gaps in ordinals.
9485            while _next_ordinal_to_read < 1 {
9486                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9487                _next_ordinal_to_read += 1;
9488                next_offset += envelope_size;
9489            }
9490
9491            let next_out_of_line = decoder.next_out_of_line();
9492            let handles_before = decoder.remaining_handles();
9493            if let Some((inlined, num_bytes, num_handles)) =
9494                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9495            {
9496                let member_inline_size =
9497                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9498                if inlined != (member_inline_size <= 4) {
9499                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9500                }
9501                let inner_offset;
9502                let mut inner_depth = depth.clone();
9503                if inlined {
9504                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9505                    inner_offset = next_offset;
9506                } else {
9507                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9508                    inner_depth.increment()?;
9509                }
9510                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
9511                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
9512                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9513                {
9514                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9515                }
9516                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9517                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9518                }
9519            }
9520
9521            next_offset += envelope_size;
9522            _next_ordinal_to_read += 1;
9523            if next_offset >= end_offset {
9524                return Ok(());
9525            }
9526
9527            // Decode unknown envelopes for gaps in ordinals.
9528            while _next_ordinal_to_read < 2 {
9529                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9530                _next_ordinal_to_read += 1;
9531                next_offset += envelope_size;
9532            }
9533
9534            let next_out_of_line = decoder.next_out_of_line();
9535            let handles_before = decoder.remaining_handles();
9536            if let Some((inlined, num_bytes, num_handles)) =
9537                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9538            {
9539                let member_inline_size =
9540                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9541                if inlined != (member_inline_size <= 4) {
9542                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9543                }
9544                let inner_offset;
9545                let mut inner_depth = depth.clone();
9546                if inlined {
9547                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9548                    inner_offset = next_offset;
9549                } else {
9550                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9551                    inner_depth.increment()?;
9552                }
9553                let val_ref = self.timestamp_nanos.get_or_insert_with(|| fidl::new_empty!(i64, D));
9554                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
9555                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9556                {
9557                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9558                }
9559                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9560                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9561                }
9562            }
9563
9564            next_offset += envelope_size;
9565            _next_ordinal_to_read += 1;
9566            if next_offset >= end_offset {
9567                return Ok(());
9568            }
9569
9570            // Decode unknown envelopes for gaps in ordinals.
9571            while _next_ordinal_to_read < 3 {
9572                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9573                _next_ordinal_to_read += 1;
9574                next_offset += envelope_size;
9575            }
9576
9577            let next_out_of_line = decoder.next_out_of_line();
9578            let handles_before = decoder.remaining_handles();
9579            if let Some((inlined, num_bytes, num_handles)) =
9580                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9581            {
9582                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::BssDescription as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9583                if inlined != (member_inline_size <= 4) {
9584                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9585                }
9586                let inner_offset;
9587                let mut inner_depth = depth.clone();
9588                if inlined {
9589                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9590                    inner_offset = next_offset;
9591                } else {
9592                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9593                    inner_depth.increment()?;
9594                }
9595                let val_ref = self.bss.get_or_insert_with(|| {
9596                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::BssDescription, D)
9597                });
9598                fidl::decode!(
9599                    fidl_fuchsia_wlan_ieee80211_common::BssDescription,
9600                    D,
9601                    val_ref,
9602                    decoder,
9603                    inner_offset,
9604                    inner_depth
9605                )?;
9606                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9607                {
9608                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9609                }
9610                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9611                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9612                }
9613            }
9614
9615            next_offset += envelope_size;
9616
9617            // Decode the remaining unknown envelopes.
9618            while next_offset < end_offset {
9619                _next_ordinal_to_read += 1;
9620                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9621                next_offset += envelope_size;
9622            }
9623
9624            Ok(())
9625        }
9626    }
9627
9628    impl WlanFullmacImplIfcOnScheduledScanMatchesAvailableRequest {
9629        #[inline(always)]
9630        fn max_ordinal_present(&self) -> u64 {
9631            if let Some(_) = self.txn_id {
9632                return 1;
9633            }
9634            0
9635        }
9636    }
9637
9638    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnScheduledScanMatchesAvailableRequest {
9639        type Borrowed<'a> = &'a Self;
9640        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9641            value
9642        }
9643    }
9644
9645    unsafe impl fidl::encoding::TypeMarker
9646        for WlanFullmacImplIfcOnScheduledScanMatchesAvailableRequest
9647    {
9648        type Owned = Self;
9649
9650        #[inline(always)]
9651        fn inline_align(_context: fidl::encoding::Context) -> usize {
9652            8
9653        }
9654
9655        #[inline(always)]
9656        fn inline_size(_context: fidl::encoding::Context) -> usize {
9657            16
9658        }
9659    }
9660
9661    unsafe impl<D: fidl::encoding::ResourceDialect>
9662        fidl::encoding::Encode<WlanFullmacImplIfcOnScheduledScanMatchesAvailableRequest, D>
9663        for &WlanFullmacImplIfcOnScheduledScanMatchesAvailableRequest
9664    {
9665        unsafe fn encode(
9666            self,
9667            encoder: &mut fidl::encoding::Encoder<'_, D>,
9668            offset: usize,
9669            mut depth: fidl::encoding::Depth,
9670        ) -> fidl::Result<()> {
9671            encoder.debug_check_bounds::<WlanFullmacImplIfcOnScheduledScanMatchesAvailableRequest>(
9672                offset,
9673            );
9674            // Vector header
9675            let max_ordinal: u64 = self.max_ordinal_present();
9676            encoder.write_num(max_ordinal, offset);
9677            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9678            // Calling encoder.out_of_line_offset(0) is not allowed.
9679            if max_ordinal == 0 {
9680                return Ok(());
9681            }
9682            depth.increment()?;
9683            let envelope_size = 8;
9684            let bytes_len = max_ordinal as usize * envelope_size;
9685            #[allow(unused_variables)]
9686            let offset = encoder.out_of_line_offset(bytes_len);
9687            let mut _prev_end_offset: usize = 0;
9688            if 1 > max_ordinal {
9689                return Ok(());
9690            }
9691
9692            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9693            // are envelope_size bytes.
9694            let cur_offset: usize = (1 - 1) * envelope_size;
9695
9696            // Zero reserved fields.
9697            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9698
9699            // Safety:
9700            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9701            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9702            //   envelope_size bytes, there is always sufficient room.
9703            fidl::encoding::encode_in_envelope_optional::<u64, D>(
9704                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
9705                encoder,
9706                offset + cur_offset,
9707                depth,
9708            )?;
9709
9710            _prev_end_offset = cur_offset + envelope_size;
9711
9712            Ok(())
9713        }
9714    }
9715
9716    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9717        for WlanFullmacImplIfcOnScheduledScanMatchesAvailableRequest
9718    {
9719        #[inline(always)]
9720        fn new_empty() -> Self {
9721            Self::default()
9722        }
9723
9724        unsafe fn decode(
9725            &mut self,
9726            decoder: &mut fidl::encoding::Decoder<'_, D>,
9727            offset: usize,
9728            mut depth: fidl::encoding::Depth,
9729        ) -> fidl::Result<()> {
9730            decoder.debug_check_bounds::<Self>(offset);
9731            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9732                None => return Err(fidl::Error::NotNullable),
9733                Some(len) => len,
9734            };
9735            // Calling decoder.out_of_line_offset(0) is not allowed.
9736            if len == 0 {
9737                return Ok(());
9738            };
9739            depth.increment()?;
9740            let envelope_size = 8;
9741            let bytes_len = len * envelope_size;
9742            let offset = decoder.out_of_line_offset(bytes_len)?;
9743            // Decode the envelope for each type.
9744            let mut _next_ordinal_to_read = 0;
9745            let mut next_offset = offset;
9746            let end_offset = offset + bytes_len;
9747            _next_ordinal_to_read += 1;
9748            if next_offset >= end_offset {
9749                return Ok(());
9750            }
9751
9752            // Decode unknown envelopes for gaps in ordinals.
9753            while _next_ordinal_to_read < 1 {
9754                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9755                _next_ordinal_to_read += 1;
9756                next_offset += envelope_size;
9757            }
9758
9759            let next_out_of_line = decoder.next_out_of_line();
9760            let handles_before = decoder.remaining_handles();
9761            if let Some((inlined, num_bytes, num_handles)) =
9762                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9763            {
9764                let member_inline_size =
9765                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9766                if inlined != (member_inline_size <= 4) {
9767                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9768                }
9769                let inner_offset;
9770                let mut inner_depth = depth.clone();
9771                if inlined {
9772                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9773                    inner_offset = next_offset;
9774                } else {
9775                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9776                    inner_depth.increment()?;
9777                }
9778                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
9779                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
9780                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9781                {
9782                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9783                }
9784                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9785                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9786                }
9787            }
9788
9789            next_offset += envelope_size;
9790
9791            // Decode the remaining unknown envelopes.
9792            while next_offset < end_offset {
9793                _next_ordinal_to_read += 1;
9794                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9795                next_offset += envelope_size;
9796            }
9797
9798            Ok(())
9799        }
9800    }
9801
9802    impl WlanFullmacImplIfcOnScheduledScanStoppedByFirmwareRequest {
9803        #[inline(always)]
9804        fn max_ordinal_present(&self) -> u64 {
9805            if let Some(_) = self.txn_id {
9806                return 1;
9807            }
9808            0
9809        }
9810    }
9811
9812    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnScheduledScanStoppedByFirmwareRequest {
9813        type Borrowed<'a> = &'a Self;
9814        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9815            value
9816        }
9817    }
9818
9819    unsafe impl fidl::encoding::TypeMarker
9820        for WlanFullmacImplIfcOnScheduledScanStoppedByFirmwareRequest
9821    {
9822        type Owned = Self;
9823
9824        #[inline(always)]
9825        fn inline_align(_context: fidl::encoding::Context) -> usize {
9826            8
9827        }
9828
9829        #[inline(always)]
9830        fn inline_size(_context: fidl::encoding::Context) -> usize {
9831            16
9832        }
9833    }
9834
9835    unsafe impl<D: fidl::encoding::ResourceDialect>
9836        fidl::encoding::Encode<WlanFullmacImplIfcOnScheduledScanStoppedByFirmwareRequest, D>
9837        for &WlanFullmacImplIfcOnScheduledScanStoppedByFirmwareRequest
9838    {
9839        unsafe fn encode(
9840            self,
9841            encoder: &mut fidl::encoding::Encoder<'_, D>,
9842            offset: usize,
9843            mut depth: fidl::encoding::Depth,
9844        ) -> fidl::Result<()> {
9845            encoder
9846                .debug_check_bounds::<WlanFullmacImplIfcOnScheduledScanStoppedByFirmwareRequest>(
9847                    offset,
9848                );
9849            // Vector header
9850            let max_ordinal: u64 = self.max_ordinal_present();
9851            encoder.write_num(max_ordinal, offset);
9852            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9853            // Calling encoder.out_of_line_offset(0) is not allowed.
9854            if max_ordinal == 0 {
9855                return Ok(());
9856            }
9857            depth.increment()?;
9858            let envelope_size = 8;
9859            let bytes_len = max_ordinal as usize * envelope_size;
9860            #[allow(unused_variables)]
9861            let offset = encoder.out_of_line_offset(bytes_len);
9862            let mut _prev_end_offset: usize = 0;
9863            if 1 > max_ordinal {
9864                return Ok(());
9865            }
9866
9867            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9868            // are envelope_size bytes.
9869            let cur_offset: usize = (1 - 1) * envelope_size;
9870
9871            // Zero reserved fields.
9872            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9873
9874            // Safety:
9875            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9876            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9877            //   envelope_size bytes, there is always sufficient room.
9878            fidl::encoding::encode_in_envelope_optional::<u64, D>(
9879                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
9880                encoder,
9881                offset + cur_offset,
9882                depth,
9883            )?;
9884
9885            _prev_end_offset = cur_offset + envelope_size;
9886
9887            Ok(())
9888        }
9889    }
9890
9891    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9892        for WlanFullmacImplIfcOnScheduledScanStoppedByFirmwareRequest
9893    {
9894        #[inline(always)]
9895        fn new_empty() -> Self {
9896            Self::default()
9897        }
9898
9899        unsafe fn decode(
9900            &mut self,
9901            decoder: &mut fidl::encoding::Decoder<'_, D>,
9902            offset: usize,
9903            mut depth: fidl::encoding::Depth,
9904        ) -> fidl::Result<()> {
9905            decoder.debug_check_bounds::<Self>(offset);
9906            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9907                None => return Err(fidl::Error::NotNullable),
9908                Some(len) => len,
9909            };
9910            // Calling decoder.out_of_line_offset(0) is not allowed.
9911            if len == 0 {
9912                return Ok(());
9913            };
9914            depth.increment()?;
9915            let envelope_size = 8;
9916            let bytes_len = len * envelope_size;
9917            let offset = decoder.out_of_line_offset(bytes_len)?;
9918            // Decode the envelope for each type.
9919            let mut _next_ordinal_to_read = 0;
9920            let mut next_offset = offset;
9921            let end_offset = offset + bytes_len;
9922            _next_ordinal_to_read += 1;
9923            if next_offset >= end_offset {
9924                return Ok(());
9925            }
9926
9927            // Decode unknown envelopes for gaps in ordinals.
9928            while _next_ordinal_to_read < 1 {
9929                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9930                _next_ordinal_to_read += 1;
9931                next_offset += envelope_size;
9932            }
9933
9934            let next_out_of_line = decoder.next_out_of_line();
9935            let handles_before = decoder.remaining_handles();
9936            if let Some((inlined, num_bytes, num_handles)) =
9937                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9938            {
9939                let member_inline_size =
9940                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9941                if inlined != (member_inline_size <= 4) {
9942                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9943                }
9944                let inner_offset;
9945                let mut inner_depth = depth.clone();
9946                if inlined {
9947                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9948                    inner_offset = next_offset;
9949                } else {
9950                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9951                    inner_depth.increment()?;
9952                }
9953                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
9954                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
9955                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9956                {
9957                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9958                }
9959                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9960                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9961                }
9962            }
9963
9964            next_offset += envelope_size;
9965
9966            // Decode the remaining unknown envelopes.
9967            while next_offset < end_offset {
9968                _next_ordinal_to_read += 1;
9969                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9970                next_offset += envelope_size;
9971            }
9972
9973            Ok(())
9974        }
9975    }
9976
9977    impl WlanFullmacImplIfcRoamConfRequest {
9978        #[inline(always)]
9979        fn max_ordinal_present(&self) -> u64 {
9980            if let Some(_) = self.association_ies {
9981                return 6;
9982            }
9983            if let Some(_) = self.association_id {
9984                return 5;
9985            }
9986            if let Some(_) = self.target_bss_authenticated {
9987                return 4;
9988            }
9989            if let Some(_) = self.original_association_maintained {
9990                return 3;
9991            }
9992            if let Some(_) = self.status_code {
9993                return 2;
9994            }
9995            if let Some(_) = self.selected_bssid {
9996                return 1;
9997            }
9998            0
9999        }
10000    }
10001
10002    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcRoamConfRequest {
10003        type Borrowed<'a> = &'a Self;
10004        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10005            value
10006        }
10007    }
10008
10009    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcRoamConfRequest {
10010        type Owned = Self;
10011
10012        #[inline(always)]
10013        fn inline_align(_context: fidl::encoding::Context) -> usize {
10014            8
10015        }
10016
10017        #[inline(always)]
10018        fn inline_size(_context: fidl::encoding::Context) -> usize {
10019            16
10020        }
10021    }
10022
10023    unsafe impl<D: fidl::encoding::ResourceDialect>
10024        fidl::encoding::Encode<WlanFullmacImplIfcRoamConfRequest, D>
10025        for &WlanFullmacImplIfcRoamConfRequest
10026    {
10027        unsafe fn encode(
10028            self,
10029            encoder: &mut fidl::encoding::Encoder<'_, D>,
10030            offset: usize,
10031            mut depth: fidl::encoding::Depth,
10032        ) -> fidl::Result<()> {
10033            encoder.debug_check_bounds::<WlanFullmacImplIfcRoamConfRequest>(offset);
10034            // Vector header
10035            let max_ordinal: u64 = self.max_ordinal_present();
10036            encoder.write_num(max_ordinal, offset);
10037            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10038            // Calling encoder.out_of_line_offset(0) is not allowed.
10039            if max_ordinal == 0 {
10040                return Ok(());
10041            }
10042            depth.increment()?;
10043            let envelope_size = 8;
10044            let bytes_len = max_ordinal as usize * envelope_size;
10045            #[allow(unused_variables)]
10046            let offset = encoder.out_of_line_offset(bytes_len);
10047            let mut _prev_end_offset: usize = 0;
10048            if 1 > max_ordinal {
10049                return Ok(());
10050            }
10051
10052            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10053            // are envelope_size bytes.
10054            let cur_offset: usize = (1 - 1) * envelope_size;
10055
10056            // Zero reserved fields.
10057            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10058
10059            // Safety:
10060            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10061            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10062            //   envelope_size bytes, there is always sufficient room.
10063            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
10064                self.selected_bssid
10065                    .as_ref()
10066                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
10067                encoder,
10068                offset + cur_offset,
10069                depth,
10070            )?;
10071
10072            _prev_end_offset = cur_offset + envelope_size;
10073            if 2 > max_ordinal {
10074                return Ok(());
10075            }
10076
10077            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10078            // are envelope_size bytes.
10079            let cur_offset: usize = (2 - 1) * envelope_size;
10080
10081            // Zero reserved fields.
10082            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10083
10084            // Safety:
10085            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10086            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10087            //   envelope_size bytes, there is always sufficient room.
10088            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::StatusCode, D>(
10089            self.status_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
10090            encoder, offset + cur_offset, depth
10091        )?;
10092
10093            _prev_end_offset = cur_offset + envelope_size;
10094            if 3 > max_ordinal {
10095                return Ok(());
10096            }
10097
10098            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10099            // are envelope_size bytes.
10100            let cur_offset: usize = (3 - 1) * envelope_size;
10101
10102            // Zero reserved fields.
10103            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10104
10105            // Safety:
10106            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10107            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10108            //   envelope_size bytes, there is always sufficient room.
10109            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10110                self.original_association_maintained
10111                    .as_ref()
10112                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10113                encoder,
10114                offset + cur_offset,
10115                depth,
10116            )?;
10117
10118            _prev_end_offset = cur_offset + envelope_size;
10119            if 4 > max_ordinal {
10120                return Ok(());
10121            }
10122
10123            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10124            // are envelope_size bytes.
10125            let cur_offset: usize = (4 - 1) * envelope_size;
10126
10127            // Zero reserved fields.
10128            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10129
10130            // Safety:
10131            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10132            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10133            //   envelope_size bytes, there is always sufficient room.
10134            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10135                self.target_bss_authenticated
10136                    .as_ref()
10137                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10138                encoder,
10139                offset + cur_offset,
10140                depth,
10141            )?;
10142
10143            _prev_end_offset = cur_offset + envelope_size;
10144            if 5 > max_ordinal {
10145                return Ok(());
10146            }
10147
10148            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10149            // are envelope_size bytes.
10150            let cur_offset: usize = (5 - 1) * envelope_size;
10151
10152            // Zero reserved fields.
10153            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10154
10155            // Safety:
10156            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10157            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10158            //   envelope_size bytes, there is always sufficient room.
10159            fidl::encoding::encode_in_envelope_optional::<u16, D>(
10160                self.association_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
10161                encoder,
10162                offset + cur_offset,
10163                depth,
10164            )?;
10165
10166            _prev_end_offset = cur_offset + envelope_size;
10167            if 6 > max_ordinal {
10168                return Ok(());
10169            }
10170
10171            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10172            // are envelope_size bytes.
10173            let cur_offset: usize = (6 - 1) * envelope_size;
10174
10175            // Zero reserved fields.
10176            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10177
10178            // Safety:
10179            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10180            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10181            //   envelope_size bytes, there is always sufficient room.
10182            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
10183            self.association_ies.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
10184            encoder, offset + cur_offset, depth
10185        )?;
10186
10187            _prev_end_offset = cur_offset + envelope_size;
10188
10189            Ok(())
10190        }
10191    }
10192
10193    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10194        for WlanFullmacImplIfcRoamConfRequest
10195    {
10196        #[inline(always)]
10197        fn new_empty() -> Self {
10198            Self::default()
10199        }
10200
10201        unsafe fn decode(
10202            &mut self,
10203            decoder: &mut fidl::encoding::Decoder<'_, D>,
10204            offset: usize,
10205            mut depth: fidl::encoding::Depth,
10206        ) -> fidl::Result<()> {
10207            decoder.debug_check_bounds::<Self>(offset);
10208            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10209                None => return Err(fidl::Error::NotNullable),
10210                Some(len) => len,
10211            };
10212            // Calling decoder.out_of_line_offset(0) is not allowed.
10213            if len == 0 {
10214                return Ok(());
10215            };
10216            depth.increment()?;
10217            let envelope_size = 8;
10218            let bytes_len = len * envelope_size;
10219            let offset = decoder.out_of_line_offset(bytes_len)?;
10220            // Decode the envelope for each type.
10221            let mut _next_ordinal_to_read = 0;
10222            let mut next_offset = offset;
10223            let end_offset = offset + bytes_len;
10224            _next_ordinal_to_read += 1;
10225            if next_offset >= end_offset {
10226                return Ok(());
10227            }
10228
10229            // Decode unknown envelopes for gaps in ordinals.
10230            while _next_ordinal_to_read < 1 {
10231                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10232                _next_ordinal_to_read += 1;
10233                next_offset += envelope_size;
10234            }
10235
10236            let next_out_of_line = decoder.next_out_of_line();
10237            let handles_before = decoder.remaining_handles();
10238            if let Some((inlined, num_bytes, num_handles)) =
10239                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10240            {
10241                let member_inline_size =
10242                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
10243                        decoder.context,
10244                    );
10245                if inlined != (member_inline_size <= 4) {
10246                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10247                }
10248                let inner_offset;
10249                let mut inner_depth = depth.clone();
10250                if inlined {
10251                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10252                    inner_offset = next_offset;
10253                } else {
10254                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10255                    inner_depth.increment()?;
10256                }
10257                let val_ref = self
10258                    .selected_bssid
10259                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
10260                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
10261                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10262                {
10263                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10264                }
10265                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10266                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10267                }
10268            }
10269
10270            next_offset += envelope_size;
10271            _next_ordinal_to_read += 1;
10272            if next_offset >= end_offset {
10273                return Ok(());
10274            }
10275
10276            // Decode unknown envelopes for gaps in ordinals.
10277            while _next_ordinal_to_read < 2 {
10278                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10279                _next_ordinal_to_read += 1;
10280                next_offset += envelope_size;
10281            }
10282
10283            let next_out_of_line = decoder.next_out_of_line();
10284            let handles_before = decoder.remaining_handles();
10285            if let Some((inlined, num_bytes, num_handles)) =
10286                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10287            {
10288                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10289                if inlined != (member_inline_size <= 4) {
10290                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10291                }
10292                let inner_offset;
10293                let mut inner_depth = depth.clone();
10294                if inlined {
10295                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10296                    inner_offset = next_offset;
10297                } else {
10298                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10299                    inner_depth.increment()?;
10300                }
10301                let val_ref = self.status_code.get_or_insert_with(|| {
10302                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::StatusCode, D)
10303                });
10304                fidl::decode!(
10305                    fidl_fuchsia_wlan_ieee80211_common::StatusCode,
10306                    D,
10307                    val_ref,
10308                    decoder,
10309                    inner_offset,
10310                    inner_depth
10311                )?;
10312                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10313                {
10314                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10315                }
10316                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10317                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10318                }
10319            }
10320
10321            next_offset += envelope_size;
10322            _next_ordinal_to_read += 1;
10323            if next_offset >= end_offset {
10324                return Ok(());
10325            }
10326
10327            // Decode unknown envelopes for gaps in ordinals.
10328            while _next_ordinal_to_read < 3 {
10329                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10330                _next_ordinal_to_read += 1;
10331                next_offset += envelope_size;
10332            }
10333
10334            let next_out_of_line = decoder.next_out_of_line();
10335            let handles_before = decoder.remaining_handles();
10336            if let Some((inlined, num_bytes, num_handles)) =
10337                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10338            {
10339                let member_inline_size =
10340                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10341                if inlined != (member_inline_size <= 4) {
10342                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10343                }
10344                let inner_offset;
10345                let mut inner_depth = depth.clone();
10346                if inlined {
10347                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10348                    inner_offset = next_offset;
10349                } else {
10350                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10351                    inner_depth.increment()?;
10352                }
10353                let val_ref = self
10354                    .original_association_maintained
10355                    .get_or_insert_with(|| fidl::new_empty!(bool, D));
10356                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10357                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10358                {
10359                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10360                }
10361                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10362                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10363                }
10364            }
10365
10366            next_offset += envelope_size;
10367            _next_ordinal_to_read += 1;
10368            if next_offset >= end_offset {
10369                return Ok(());
10370            }
10371
10372            // Decode unknown envelopes for gaps in ordinals.
10373            while _next_ordinal_to_read < 4 {
10374                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10375                _next_ordinal_to_read += 1;
10376                next_offset += envelope_size;
10377            }
10378
10379            let next_out_of_line = decoder.next_out_of_line();
10380            let handles_before = decoder.remaining_handles();
10381            if let Some((inlined, num_bytes, num_handles)) =
10382                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10383            {
10384                let member_inline_size =
10385                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10386                if inlined != (member_inline_size <= 4) {
10387                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10388                }
10389                let inner_offset;
10390                let mut inner_depth = depth.clone();
10391                if inlined {
10392                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10393                    inner_offset = next_offset;
10394                } else {
10395                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10396                    inner_depth.increment()?;
10397                }
10398                let val_ref =
10399                    self.target_bss_authenticated.get_or_insert_with(|| fidl::new_empty!(bool, D));
10400                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10401                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10402                {
10403                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10404                }
10405                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10406                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10407                }
10408            }
10409
10410            next_offset += envelope_size;
10411            _next_ordinal_to_read += 1;
10412            if next_offset >= end_offset {
10413                return Ok(());
10414            }
10415
10416            // Decode unknown envelopes for gaps in ordinals.
10417            while _next_ordinal_to_read < 5 {
10418                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10419                _next_ordinal_to_read += 1;
10420                next_offset += envelope_size;
10421            }
10422
10423            let next_out_of_line = decoder.next_out_of_line();
10424            let handles_before = decoder.remaining_handles();
10425            if let Some((inlined, num_bytes, num_handles)) =
10426                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10427            {
10428                let member_inline_size =
10429                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10430                if inlined != (member_inline_size <= 4) {
10431                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10432                }
10433                let inner_offset;
10434                let mut inner_depth = depth.clone();
10435                if inlined {
10436                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10437                    inner_offset = next_offset;
10438                } else {
10439                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10440                    inner_depth.increment()?;
10441                }
10442                let val_ref = self.association_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
10443                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
10444                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10445                {
10446                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10447                }
10448                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10449                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10450                }
10451            }
10452
10453            next_offset += envelope_size;
10454            _next_ordinal_to_read += 1;
10455            if next_offset >= end_offset {
10456                return Ok(());
10457            }
10458
10459            // Decode unknown envelopes for gaps in ordinals.
10460            while _next_ordinal_to_read < 6 {
10461                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10462                _next_ordinal_to_read += 1;
10463                next_offset += envelope_size;
10464            }
10465
10466            let next_out_of_line = decoder.next_out_of_line();
10467            let handles_before = decoder.remaining_handles();
10468            if let Some((inlined, num_bytes, num_handles)) =
10469                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10470            {
10471                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10472                if inlined != (member_inline_size <= 4) {
10473                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10474                }
10475                let inner_offset;
10476                let mut inner_depth = depth.clone();
10477                if inlined {
10478                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10479                    inner_offset = next_offset;
10480                } else {
10481                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10482                    inner_depth.increment()?;
10483                }
10484                let val_ref = self.association_ies.get_or_insert_with(|| {
10485                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
10486                });
10487                fidl::decode!(
10488                    fidl::encoding::UnboundedVector<u8>,
10489                    D,
10490                    val_ref,
10491                    decoder,
10492                    inner_offset,
10493                    inner_depth
10494                )?;
10495                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10496                {
10497                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10498                }
10499                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10500                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10501                }
10502            }
10503
10504            next_offset += envelope_size;
10505
10506            // Decode the remaining unknown envelopes.
10507            while next_offset < end_offset {
10508                _next_ordinal_to_read += 1;
10509                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10510                next_offset += envelope_size;
10511            }
10512
10513            Ok(())
10514        }
10515    }
10516
10517    impl WlanFullmacImplIfcRoamResultIndRequest {
10518        #[inline(always)]
10519        fn max_ordinal_present(&self) -> u64 {
10520            if let Some(_) = self.association_ies {
10521                return 6;
10522            }
10523            if let Some(_) = self.association_id {
10524                return 5;
10525            }
10526            if let Some(_) = self.target_bss_authenticated {
10527                return 4;
10528            }
10529            if let Some(_) = self.original_association_maintained {
10530                return 3;
10531            }
10532            if let Some(_) = self.status_code {
10533                return 2;
10534            }
10535            if let Some(_) = self.selected_bssid {
10536                return 1;
10537            }
10538            0
10539        }
10540    }
10541
10542    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcRoamResultIndRequest {
10543        type Borrowed<'a> = &'a Self;
10544        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10545            value
10546        }
10547    }
10548
10549    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcRoamResultIndRequest {
10550        type Owned = Self;
10551
10552        #[inline(always)]
10553        fn inline_align(_context: fidl::encoding::Context) -> usize {
10554            8
10555        }
10556
10557        #[inline(always)]
10558        fn inline_size(_context: fidl::encoding::Context) -> usize {
10559            16
10560        }
10561    }
10562
10563    unsafe impl<D: fidl::encoding::ResourceDialect>
10564        fidl::encoding::Encode<WlanFullmacImplIfcRoamResultIndRequest, D>
10565        for &WlanFullmacImplIfcRoamResultIndRequest
10566    {
10567        unsafe fn encode(
10568            self,
10569            encoder: &mut fidl::encoding::Encoder<'_, D>,
10570            offset: usize,
10571            mut depth: fidl::encoding::Depth,
10572        ) -> fidl::Result<()> {
10573            encoder.debug_check_bounds::<WlanFullmacImplIfcRoamResultIndRequest>(offset);
10574            // Vector header
10575            let max_ordinal: u64 = self.max_ordinal_present();
10576            encoder.write_num(max_ordinal, offset);
10577            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10578            // Calling encoder.out_of_line_offset(0) is not allowed.
10579            if max_ordinal == 0 {
10580                return Ok(());
10581            }
10582            depth.increment()?;
10583            let envelope_size = 8;
10584            let bytes_len = max_ordinal as usize * envelope_size;
10585            #[allow(unused_variables)]
10586            let offset = encoder.out_of_line_offset(bytes_len);
10587            let mut _prev_end_offset: usize = 0;
10588            if 1 > max_ordinal {
10589                return Ok(());
10590            }
10591
10592            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10593            // are envelope_size bytes.
10594            let cur_offset: usize = (1 - 1) * envelope_size;
10595
10596            // Zero reserved fields.
10597            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10598
10599            // Safety:
10600            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10601            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10602            //   envelope_size bytes, there is always sufficient room.
10603            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
10604                self.selected_bssid
10605                    .as_ref()
10606                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
10607                encoder,
10608                offset + cur_offset,
10609                depth,
10610            )?;
10611
10612            _prev_end_offset = cur_offset + envelope_size;
10613            if 2 > max_ordinal {
10614                return Ok(());
10615            }
10616
10617            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10618            // are envelope_size bytes.
10619            let cur_offset: usize = (2 - 1) * envelope_size;
10620
10621            // Zero reserved fields.
10622            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10623
10624            // Safety:
10625            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10626            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10627            //   envelope_size bytes, there is always sufficient room.
10628            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::StatusCode, D>(
10629            self.status_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
10630            encoder, offset + cur_offset, depth
10631        )?;
10632
10633            _prev_end_offset = cur_offset + envelope_size;
10634            if 3 > max_ordinal {
10635                return Ok(());
10636            }
10637
10638            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10639            // are envelope_size bytes.
10640            let cur_offset: usize = (3 - 1) * envelope_size;
10641
10642            // Zero reserved fields.
10643            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10644
10645            // Safety:
10646            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10647            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10648            //   envelope_size bytes, there is always sufficient room.
10649            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10650                self.original_association_maintained
10651                    .as_ref()
10652                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10653                encoder,
10654                offset + cur_offset,
10655                depth,
10656            )?;
10657
10658            _prev_end_offset = cur_offset + envelope_size;
10659            if 4 > max_ordinal {
10660                return Ok(());
10661            }
10662
10663            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10664            // are envelope_size bytes.
10665            let cur_offset: usize = (4 - 1) * envelope_size;
10666
10667            // Zero reserved fields.
10668            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10669
10670            // Safety:
10671            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10672            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10673            //   envelope_size bytes, there is always sufficient room.
10674            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10675                self.target_bss_authenticated
10676                    .as_ref()
10677                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10678                encoder,
10679                offset + cur_offset,
10680                depth,
10681            )?;
10682
10683            _prev_end_offset = cur_offset + envelope_size;
10684            if 5 > max_ordinal {
10685                return Ok(());
10686            }
10687
10688            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10689            // are envelope_size bytes.
10690            let cur_offset: usize = (5 - 1) * envelope_size;
10691
10692            // Zero reserved fields.
10693            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10694
10695            // Safety:
10696            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10697            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10698            //   envelope_size bytes, there is always sufficient room.
10699            fidl::encoding::encode_in_envelope_optional::<u16, D>(
10700                self.association_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
10701                encoder,
10702                offset + cur_offset,
10703                depth,
10704            )?;
10705
10706            _prev_end_offset = cur_offset + envelope_size;
10707            if 6 > max_ordinal {
10708                return Ok(());
10709            }
10710
10711            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10712            // are envelope_size bytes.
10713            let cur_offset: usize = (6 - 1) * envelope_size;
10714
10715            // Zero reserved fields.
10716            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10717
10718            // Safety:
10719            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10720            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10721            //   envelope_size bytes, there is always sufficient room.
10722            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
10723            self.association_ies.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
10724            encoder, offset + cur_offset, depth
10725        )?;
10726
10727            _prev_end_offset = cur_offset + envelope_size;
10728
10729            Ok(())
10730        }
10731    }
10732
10733    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10734        for WlanFullmacImplIfcRoamResultIndRequest
10735    {
10736        #[inline(always)]
10737        fn new_empty() -> Self {
10738            Self::default()
10739        }
10740
10741        unsafe fn decode(
10742            &mut self,
10743            decoder: &mut fidl::encoding::Decoder<'_, D>,
10744            offset: usize,
10745            mut depth: fidl::encoding::Depth,
10746        ) -> fidl::Result<()> {
10747            decoder.debug_check_bounds::<Self>(offset);
10748            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10749                None => return Err(fidl::Error::NotNullable),
10750                Some(len) => len,
10751            };
10752            // Calling decoder.out_of_line_offset(0) is not allowed.
10753            if len == 0 {
10754                return Ok(());
10755            };
10756            depth.increment()?;
10757            let envelope_size = 8;
10758            let bytes_len = len * envelope_size;
10759            let offset = decoder.out_of_line_offset(bytes_len)?;
10760            // Decode the envelope for each type.
10761            let mut _next_ordinal_to_read = 0;
10762            let mut next_offset = offset;
10763            let end_offset = offset + bytes_len;
10764            _next_ordinal_to_read += 1;
10765            if next_offset >= end_offset {
10766                return Ok(());
10767            }
10768
10769            // Decode unknown envelopes for gaps in ordinals.
10770            while _next_ordinal_to_read < 1 {
10771                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10772                _next_ordinal_to_read += 1;
10773                next_offset += envelope_size;
10774            }
10775
10776            let next_out_of_line = decoder.next_out_of_line();
10777            let handles_before = decoder.remaining_handles();
10778            if let Some((inlined, num_bytes, num_handles)) =
10779                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10780            {
10781                let member_inline_size =
10782                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
10783                        decoder.context,
10784                    );
10785                if inlined != (member_inline_size <= 4) {
10786                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10787                }
10788                let inner_offset;
10789                let mut inner_depth = depth.clone();
10790                if inlined {
10791                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10792                    inner_offset = next_offset;
10793                } else {
10794                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10795                    inner_depth.increment()?;
10796                }
10797                let val_ref = self
10798                    .selected_bssid
10799                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
10800                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
10801                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10802                {
10803                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10804                }
10805                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10806                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10807                }
10808            }
10809
10810            next_offset += envelope_size;
10811            _next_ordinal_to_read += 1;
10812            if next_offset >= end_offset {
10813                return Ok(());
10814            }
10815
10816            // Decode unknown envelopes for gaps in ordinals.
10817            while _next_ordinal_to_read < 2 {
10818                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10819                _next_ordinal_to_read += 1;
10820                next_offset += envelope_size;
10821            }
10822
10823            let next_out_of_line = decoder.next_out_of_line();
10824            let handles_before = decoder.remaining_handles();
10825            if let Some((inlined, num_bytes, num_handles)) =
10826                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10827            {
10828                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10829                if inlined != (member_inline_size <= 4) {
10830                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10831                }
10832                let inner_offset;
10833                let mut inner_depth = depth.clone();
10834                if inlined {
10835                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10836                    inner_offset = next_offset;
10837                } else {
10838                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10839                    inner_depth.increment()?;
10840                }
10841                let val_ref = self.status_code.get_or_insert_with(|| {
10842                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::StatusCode, D)
10843                });
10844                fidl::decode!(
10845                    fidl_fuchsia_wlan_ieee80211_common::StatusCode,
10846                    D,
10847                    val_ref,
10848                    decoder,
10849                    inner_offset,
10850                    inner_depth
10851                )?;
10852                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10853                {
10854                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10855                }
10856                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10857                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10858                }
10859            }
10860
10861            next_offset += envelope_size;
10862            _next_ordinal_to_read += 1;
10863            if next_offset >= end_offset {
10864                return Ok(());
10865            }
10866
10867            // Decode unknown envelopes for gaps in ordinals.
10868            while _next_ordinal_to_read < 3 {
10869                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10870                _next_ordinal_to_read += 1;
10871                next_offset += envelope_size;
10872            }
10873
10874            let next_out_of_line = decoder.next_out_of_line();
10875            let handles_before = decoder.remaining_handles();
10876            if let Some((inlined, num_bytes, num_handles)) =
10877                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10878            {
10879                let member_inline_size =
10880                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10881                if inlined != (member_inline_size <= 4) {
10882                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10883                }
10884                let inner_offset;
10885                let mut inner_depth = depth.clone();
10886                if inlined {
10887                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10888                    inner_offset = next_offset;
10889                } else {
10890                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10891                    inner_depth.increment()?;
10892                }
10893                let val_ref = self
10894                    .original_association_maintained
10895                    .get_or_insert_with(|| fidl::new_empty!(bool, D));
10896                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10897                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10898                {
10899                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10900                }
10901                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10902                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10903                }
10904            }
10905
10906            next_offset += envelope_size;
10907            _next_ordinal_to_read += 1;
10908            if next_offset >= end_offset {
10909                return Ok(());
10910            }
10911
10912            // Decode unknown envelopes for gaps in ordinals.
10913            while _next_ordinal_to_read < 4 {
10914                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10915                _next_ordinal_to_read += 1;
10916                next_offset += envelope_size;
10917            }
10918
10919            let next_out_of_line = decoder.next_out_of_line();
10920            let handles_before = decoder.remaining_handles();
10921            if let Some((inlined, num_bytes, num_handles)) =
10922                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10923            {
10924                let member_inline_size =
10925                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10926                if inlined != (member_inline_size <= 4) {
10927                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10928                }
10929                let inner_offset;
10930                let mut inner_depth = depth.clone();
10931                if inlined {
10932                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10933                    inner_offset = next_offset;
10934                } else {
10935                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10936                    inner_depth.increment()?;
10937                }
10938                let val_ref =
10939                    self.target_bss_authenticated.get_or_insert_with(|| fidl::new_empty!(bool, D));
10940                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10941                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10942                {
10943                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10944                }
10945                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10946                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10947                }
10948            }
10949
10950            next_offset += envelope_size;
10951            _next_ordinal_to_read += 1;
10952            if next_offset >= end_offset {
10953                return Ok(());
10954            }
10955
10956            // Decode unknown envelopes for gaps in ordinals.
10957            while _next_ordinal_to_read < 5 {
10958                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10959                _next_ordinal_to_read += 1;
10960                next_offset += envelope_size;
10961            }
10962
10963            let next_out_of_line = decoder.next_out_of_line();
10964            let handles_before = decoder.remaining_handles();
10965            if let Some((inlined, num_bytes, num_handles)) =
10966                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10967            {
10968                let member_inline_size =
10969                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10970                if inlined != (member_inline_size <= 4) {
10971                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10972                }
10973                let inner_offset;
10974                let mut inner_depth = depth.clone();
10975                if inlined {
10976                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10977                    inner_offset = next_offset;
10978                } else {
10979                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10980                    inner_depth.increment()?;
10981                }
10982                let val_ref = self.association_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
10983                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
10984                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10985                {
10986                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10987                }
10988                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10989                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10990                }
10991            }
10992
10993            next_offset += envelope_size;
10994            _next_ordinal_to_read += 1;
10995            if next_offset >= end_offset {
10996                return Ok(());
10997            }
10998
10999            // Decode unknown envelopes for gaps in ordinals.
11000            while _next_ordinal_to_read < 6 {
11001                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11002                _next_ordinal_to_read += 1;
11003                next_offset += envelope_size;
11004            }
11005
11006            let next_out_of_line = decoder.next_out_of_line();
11007            let handles_before = decoder.remaining_handles();
11008            if let Some((inlined, num_bytes, num_handles)) =
11009                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11010            {
11011                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11012                if inlined != (member_inline_size <= 4) {
11013                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11014                }
11015                let inner_offset;
11016                let mut inner_depth = depth.clone();
11017                if inlined {
11018                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11019                    inner_offset = next_offset;
11020                } else {
11021                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11022                    inner_depth.increment()?;
11023                }
11024                let val_ref = self.association_ies.get_or_insert_with(|| {
11025                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
11026                });
11027                fidl::decode!(
11028                    fidl::encoding::UnboundedVector<u8>,
11029                    D,
11030                    val_ref,
11031                    decoder,
11032                    inner_offset,
11033                    inner_depth
11034                )?;
11035                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11036                {
11037                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11038                }
11039                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11040                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11041                }
11042            }
11043
11044            next_offset += envelope_size;
11045
11046            // Decode the remaining unknown envelopes.
11047            while next_offset < end_offset {
11048                _next_ordinal_to_read += 1;
11049                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11050                next_offset += envelope_size;
11051            }
11052
11053            Ok(())
11054        }
11055    }
11056
11057    impl WlanFullmacImplIfcRoamStartIndRequest {
11058        #[inline(always)]
11059        fn max_ordinal_present(&self) -> u64 {
11060            if let Some(_) = self.original_association_maintained {
11061                return 3;
11062            }
11063            if let Some(_) = self.selected_bss {
11064                return 2;
11065            }
11066            if let Some(_) = self.selected_bssid {
11067                return 1;
11068            }
11069            0
11070        }
11071    }
11072
11073    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcRoamStartIndRequest {
11074        type Borrowed<'a> = &'a Self;
11075        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11076            value
11077        }
11078    }
11079
11080    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcRoamStartIndRequest {
11081        type Owned = Self;
11082
11083        #[inline(always)]
11084        fn inline_align(_context: fidl::encoding::Context) -> usize {
11085            8
11086        }
11087
11088        #[inline(always)]
11089        fn inline_size(_context: fidl::encoding::Context) -> usize {
11090            16
11091        }
11092    }
11093
11094    unsafe impl<D: fidl::encoding::ResourceDialect>
11095        fidl::encoding::Encode<WlanFullmacImplIfcRoamStartIndRequest, D>
11096        for &WlanFullmacImplIfcRoamStartIndRequest
11097    {
11098        unsafe fn encode(
11099            self,
11100            encoder: &mut fidl::encoding::Encoder<'_, D>,
11101            offset: usize,
11102            mut depth: fidl::encoding::Depth,
11103        ) -> fidl::Result<()> {
11104            encoder.debug_check_bounds::<WlanFullmacImplIfcRoamStartIndRequest>(offset);
11105            // Vector header
11106            let max_ordinal: u64 = self.max_ordinal_present();
11107            encoder.write_num(max_ordinal, offset);
11108            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11109            // Calling encoder.out_of_line_offset(0) is not allowed.
11110            if max_ordinal == 0 {
11111                return Ok(());
11112            }
11113            depth.increment()?;
11114            let envelope_size = 8;
11115            let bytes_len = max_ordinal as usize * envelope_size;
11116            #[allow(unused_variables)]
11117            let offset = encoder.out_of_line_offset(bytes_len);
11118            let mut _prev_end_offset: usize = 0;
11119            if 1 > max_ordinal {
11120                return Ok(());
11121            }
11122
11123            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11124            // are envelope_size bytes.
11125            let cur_offset: usize = (1 - 1) * envelope_size;
11126
11127            // Zero reserved fields.
11128            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11129
11130            // Safety:
11131            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11132            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11133            //   envelope_size bytes, there is always sufficient room.
11134            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
11135                self.selected_bssid
11136                    .as_ref()
11137                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
11138                encoder,
11139                offset + cur_offset,
11140                depth,
11141            )?;
11142
11143            _prev_end_offset = cur_offset + envelope_size;
11144            if 2 > max_ordinal {
11145                return Ok(());
11146            }
11147
11148            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11149            // are envelope_size bytes.
11150            let cur_offset: usize = (2 - 1) * envelope_size;
11151
11152            // Zero reserved fields.
11153            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11154
11155            // Safety:
11156            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11157            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11158            //   envelope_size bytes, there is always sufficient room.
11159            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::BssDescription, D>(
11160            self.selected_bss.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow),
11161            encoder, offset + cur_offset, depth
11162        )?;
11163
11164            _prev_end_offset = cur_offset + envelope_size;
11165            if 3 > max_ordinal {
11166                return Ok(());
11167            }
11168
11169            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11170            // are envelope_size bytes.
11171            let cur_offset: usize = (3 - 1) * envelope_size;
11172
11173            // Zero reserved fields.
11174            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11175
11176            // Safety:
11177            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11178            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11179            //   envelope_size bytes, there is always sufficient room.
11180            fidl::encoding::encode_in_envelope_optional::<bool, D>(
11181                self.original_association_maintained
11182                    .as_ref()
11183                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
11184                encoder,
11185                offset + cur_offset,
11186                depth,
11187            )?;
11188
11189            _prev_end_offset = cur_offset + envelope_size;
11190
11191            Ok(())
11192        }
11193    }
11194
11195    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11196        for WlanFullmacImplIfcRoamStartIndRequest
11197    {
11198        #[inline(always)]
11199        fn new_empty() -> Self {
11200            Self::default()
11201        }
11202
11203        unsafe fn decode(
11204            &mut self,
11205            decoder: &mut fidl::encoding::Decoder<'_, D>,
11206            offset: usize,
11207            mut depth: fidl::encoding::Depth,
11208        ) -> fidl::Result<()> {
11209            decoder.debug_check_bounds::<Self>(offset);
11210            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11211                None => return Err(fidl::Error::NotNullable),
11212                Some(len) => len,
11213            };
11214            // Calling decoder.out_of_line_offset(0) is not allowed.
11215            if len == 0 {
11216                return Ok(());
11217            };
11218            depth.increment()?;
11219            let envelope_size = 8;
11220            let bytes_len = len * envelope_size;
11221            let offset = decoder.out_of_line_offset(bytes_len)?;
11222            // Decode the envelope for each type.
11223            let mut _next_ordinal_to_read = 0;
11224            let mut next_offset = offset;
11225            let end_offset = offset + bytes_len;
11226            _next_ordinal_to_read += 1;
11227            if next_offset >= end_offset {
11228                return Ok(());
11229            }
11230
11231            // Decode unknown envelopes for gaps in ordinals.
11232            while _next_ordinal_to_read < 1 {
11233                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11234                _next_ordinal_to_read += 1;
11235                next_offset += envelope_size;
11236            }
11237
11238            let next_out_of_line = decoder.next_out_of_line();
11239            let handles_before = decoder.remaining_handles();
11240            if let Some((inlined, num_bytes, num_handles)) =
11241                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11242            {
11243                let member_inline_size =
11244                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
11245                        decoder.context,
11246                    );
11247                if inlined != (member_inline_size <= 4) {
11248                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11249                }
11250                let inner_offset;
11251                let mut inner_depth = depth.clone();
11252                if inlined {
11253                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11254                    inner_offset = next_offset;
11255                } else {
11256                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11257                    inner_depth.increment()?;
11258                }
11259                let val_ref = self
11260                    .selected_bssid
11261                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
11262                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
11263                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11264                {
11265                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11266                }
11267                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11268                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11269                }
11270            }
11271
11272            next_offset += envelope_size;
11273            _next_ordinal_to_read += 1;
11274            if next_offset >= end_offset {
11275                return Ok(());
11276            }
11277
11278            // Decode unknown envelopes for gaps in ordinals.
11279            while _next_ordinal_to_read < 2 {
11280                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11281                _next_ordinal_to_read += 1;
11282                next_offset += envelope_size;
11283            }
11284
11285            let next_out_of_line = decoder.next_out_of_line();
11286            let handles_before = decoder.remaining_handles();
11287            if let Some((inlined, num_bytes, num_handles)) =
11288                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11289            {
11290                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::BssDescription as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11291                if inlined != (member_inline_size <= 4) {
11292                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11293                }
11294                let inner_offset;
11295                let mut inner_depth = depth.clone();
11296                if inlined {
11297                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11298                    inner_offset = next_offset;
11299                } else {
11300                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11301                    inner_depth.increment()?;
11302                }
11303                let val_ref = self.selected_bss.get_or_insert_with(|| {
11304                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::BssDescription, D)
11305                });
11306                fidl::decode!(
11307                    fidl_fuchsia_wlan_ieee80211_common::BssDescription,
11308                    D,
11309                    val_ref,
11310                    decoder,
11311                    inner_offset,
11312                    inner_depth
11313                )?;
11314                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11315                {
11316                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11317                }
11318                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11319                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11320                }
11321            }
11322
11323            next_offset += envelope_size;
11324            _next_ordinal_to_read += 1;
11325            if next_offset >= end_offset {
11326                return Ok(());
11327            }
11328
11329            // Decode unknown envelopes for gaps in ordinals.
11330            while _next_ordinal_to_read < 3 {
11331                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11332                _next_ordinal_to_read += 1;
11333                next_offset += envelope_size;
11334            }
11335
11336            let next_out_of_line = decoder.next_out_of_line();
11337            let handles_before = decoder.remaining_handles();
11338            if let Some((inlined, num_bytes, num_handles)) =
11339                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11340            {
11341                let member_inline_size =
11342                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11343                if inlined != (member_inline_size <= 4) {
11344                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11345                }
11346                let inner_offset;
11347                let mut inner_depth = depth.clone();
11348                if inlined {
11349                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11350                    inner_offset = next_offset;
11351                } else {
11352                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11353                    inner_depth.increment()?;
11354                }
11355                let val_ref = self
11356                    .original_association_maintained
11357                    .get_or_insert_with(|| fidl::new_empty!(bool, D));
11358                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
11359                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11360                {
11361                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11362                }
11363                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11364                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11365                }
11366            }
11367
11368            next_offset += envelope_size;
11369
11370            // Decode the remaining unknown envelopes.
11371            while next_offset < end_offset {
11372                _next_ordinal_to_read += 1;
11373                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11374                next_offset += envelope_size;
11375            }
11376
11377            Ok(())
11378        }
11379    }
11380
11381    impl WlanFullmacImplIfcSaeHandshakeIndRequest {
11382        #[inline(always)]
11383        fn max_ordinal_present(&self) -> u64 {
11384            if let Some(_) = self.peer_sta_address {
11385                return 1;
11386            }
11387            0
11388        }
11389    }
11390
11391    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcSaeHandshakeIndRequest {
11392        type Borrowed<'a> = &'a Self;
11393        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11394            value
11395        }
11396    }
11397
11398    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcSaeHandshakeIndRequest {
11399        type Owned = Self;
11400
11401        #[inline(always)]
11402        fn inline_align(_context: fidl::encoding::Context) -> usize {
11403            8
11404        }
11405
11406        #[inline(always)]
11407        fn inline_size(_context: fidl::encoding::Context) -> usize {
11408            16
11409        }
11410    }
11411
11412    unsafe impl<D: fidl::encoding::ResourceDialect>
11413        fidl::encoding::Encode<WlanFullmacImplIfcSaeHandshakeIndRequest, D>
11414        for &WlanFullmacImplIfcSaeHandshakeIndRequest
11415    {
11416        unsafe fn encode(
11417            self,
11418            encoder: &mut fidl::encoding::Encoder<'_, D>,
11419            offset: usize,
11420            mut depth: fidl::encoding::Depth,
11421        ) -> fidl::Result<()> {
11422            encoder.debug_check_bounds::<WlanFullmacImplIfcSaeHandshakeIndRequest>(offset);
11423            // Vector header
11424            let max_ordinal: u64 = self.max_ordinal_present();
11425            encoder.write_num(max_ordinal, offset);
11426            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11427            // Calling encoder.out_of_line_offset(0) is not allowed.
11428            if max_ordinal == 0 {
11429                return Ok(());
11430            }
11431            depth.increment()?;
11432            let envelope_size = 8;
11433            let bytes_len = max_ordinal as usize * envelope_size;
11434            #[allow(unused_variables)]
11435            let offset = encoder.out_of_line_offset(bytes_len);
11436            let mut _prev_end_offset: usize = 0;
11437            if 1 > max_ordinal {
11438                return Ok(());
11439            }
11440
11441            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11442            // are envelope_size bytes.
11443            let cur_offset: usize = (1 - 1) * envelope_size;
11444
11445            // Zero reserved fields.
11446            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11447
11448            // Safety:
11449            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11450            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11451            //   envelope_size bytes, there is always sufficient room.
11452            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
11453                self.peer_sta_address
11454                    .as_ref()
11455                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
11456                encoder,
11457                offset + cur_offset,
11458                depth,
11459            )?;
11460
11461            _prev_end_offset = cur_offset + envelope_size;
11462
11463            Ok(())
11464        }
11465    }
11466
11467    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11468        for WlanFullmacImplIfcSaeHandshakeIndRequest
11469    {
11470        #[inline(always)]
11471        fn new_empty() -> Self {
11472            Self::default()
11473        }
11474
11475        unsafe fn decode(
11476            &mut self,
11477            decoder: &mut fidl::encoding::Decoder<'_, D>,
11478            offset: usize,
11479            mut depth: fidl::encoding::Depth,
11480        ) -> fidl::Result<()> {
11481            decoder.debug_check_bounds::<Self>(offset);
11482            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11483                None => return Err(fidl::Error::NotNullable),
11484                Some(len) => len,
11485            };
11486            // Calling decoder.out_of_line_offset(0) is not allowed.
11487            if len == 0 {
11488                return Ok(());
11489            };
11490            depth.increment()?;
11491            let envelope_size = 8;
11492            let bytes_len = len * envelope_size;
11493            let offset = decoder.out_of_line_offset(bytes_len)?;
11494            // Decode the envelope for each type.
11495            let mut _next_ordinal_to_read = 0;
11496            let mut next_offset = offset;
11497            let end_offset = offset + bytes_len;
11498            _next_ordinal_to_read += 1;
11499            if next_offset >= end_offset {
11500                return Ok(());
11501            }
11502
11503            // Decode unknown envelopes for gaps in ordinals.
11504            while _next_ordinal_to_read < 1 {
11505                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11506                _next_ordinal_to_read += 1;
11507                next_offset += envelope_size;
11508            }
11509
11510            let next_out_of_line = decoder.next_out_of_line();
11511            let handles_before = decoder.remaining_handles();
11512            if let Some((inlined, num_bytes, num_handles)) =
11513                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11514            {
11515                let member_inline_size =
11516                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
11517                        decoder.context,
11518                    );
11519                if inlined != (member_inline_size <= 4) {
11520                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11521                }
11522                let inner_offset;
11523                let mut inner_depth = depth.clone();
11524                if inlined {
11525                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11526                    inner_offset = next_offset;
11527                } else {
11528                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11529                    inner_depth.increment()?;
11530                }
11531                let val_ref = self
11532                    .peer_sta_address
11533                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
11534                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
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
11546            // Decode the remaining unknown envelopes.
11547            while next_offset < end_offset {
11548                _next_ordinal_to_read += 1;
11549                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11550                next_offset += envelope_size;
11551            }
11552
11553            Ok(())
11554        }
11555    }
11556
11557    impl WlanFullmacImplIfcStartConfRequest {
11558        #[inline(always)]
11559        fn max_ordinal_present(&self) -> u64 {
11560            if let Some(_) = self.result_code {
11561                return 1;
11562            }
11563            0
11564        }
11565    }
11566
11567    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcStartConfRequest {
11568        type Borrowed<'a> = &'a Self;
11569        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11570            value
11571        }
11572    }
11573
11574    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcStartConfRequest {
11575        type Owned = Self;
11576
11577        #[inline(always)]
11578        fn inline_align(_context: fidl::encoding::Context) -> usize {
11579            8
11580        }
11581
11582        #[inline(always)]
11583        fn inline_size(_context: fidl::encoding::Context) -> usize {
11584            16
11585        }
11586    }
11587
11588    unsafe impl<D: fidl::encoding::ResourceDialect>
11589        fidl::encoding::Encode<WlanFullmacImplIfcStartConfRequest, D>
11590        for &WlanFullmacImplIfcStartConfRequest
11591    {
11592        unsafe fn encode(
11593            self,
11594            encoder: &mut fidl::encoding::Encoder<'_, D>,
11595            offset: usize,
11596            mut depth: fidl::encoding::Depth,
11597        ) -> fidl::Result<()> {
11598            encoder.debug_check_bounds::<WlanFullmacImplIfcStartConfRequest>(offset);
11599            // Vector header
11600            let max_ordinal: u64 = self.max_ordinal_present();
11601            encoder.write_num(max_ordinal, offset);
11602            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11603            // Calling encoder.out_of_line_offset(0) is not allowed.
11604            if max_ordinal == 0 {
11605                return Ok(());
11606            }
11607            depth.increment()?;
11608            let envelope_size = 8;
11609            let bytes_len = max_ordinal as usize * envelope_size;
11610            #[allow(unused_variables)]
11611            let offset = encoder.out_of_line_offset(bytes_len);
11612            let mut _prev_end_offset: usize = 0;
11613            if 1 > max_ordinal {
11614                return Ok(());
11615            }
11616
11617            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11618            // are envelope_size bytes.
11619            let cur_offset: usize = (1 - 1) * envelope_size;
11620
11621            // Zero reserved fields.
11622            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11623
11624            // Safety:
11625            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11626            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11627            //   envelope_size bytes, there is always sufficient room.
11628            fidl::encoding::encode_in_envelope_optional::<StartResult, D>(
11629                self.result_code
11630                    .as_ref()
11631                    .map(<StartResult as fidl::encoding::ValueTypeMarker>::borrow),
11632                encoder,
11633                offset + cur_offset,
11634                depth,
11635            )?;
11636
11637            _prev_end_offset = cur_offset + envelope_size;
11638
11639            Ok(())
11640        }
11641    }
11642
11643    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11644        for WlanFullmacImplIfcStartConfRequest
11645    {
11646        #[inline(always)]
11647        fn new_empty() -> Self {
11648            Self::default()
11649        }
11650
11651        unsafe fn decode(
11652            &mut self,
11653            decoder: &mut fidl::encoding::Decoder<'_, D>,
11654            offset: usize,
11655            mut depth: fidl::encoding::Depth,
11656        ) -> fidl::Result<()> {
11657            decoder.debug_check_bounds::<Self>(offset);
11658            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11659                None => return Err(fidl::Error::NotNullable),
11660                Some(len) => len,
11661            };
11662            // Calling decoder.out_of_line_offset(0) is not allowed.
11663            if len == 0 {
11664                return Ok(());
11665            };
11666            depth.increment()?;
11667            let envelope_size = 8;
11668            let bytes_len = len * envelope_size;
11669            let offset = decoder.out_of_line_offset(bytes_len)?;
11670            // Decode the envelope for each type.
11671            let mut _next_ordinal_to_read = 0;
11672            let mut next_offset = offset;
11673            let end_offset = offset + bytes_len;
11674            _next_ordinal_to_read += 1;
11675            if next_offset >= end_offset {
11676                return Ok(());
11677            }
11678
11679            // Decode unknown envelopes for gaps in ordinals.
11680            while _next_ordinal_to_read < 1 {
11681                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11682                _next_ordinal_to_read += 1;
11683                next_offset += envelope_size;
11684            }
11685
11686            let next_out_of_line = decoder.next_out_of_line();
11687            let handles_before = decoder.remaining_handles();
11688            if let Some((inlined, num_bytes, num_handles)) =
11689                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11690            {
11691                let member_inline_size =
11692                    <StartResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11693                if inlined != (member_inline_size <= 4) {
11694                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11695                }
11696                let inner_offset;
11697                let mut inner_depth = depth.clone();
11698                if inlined {
11699                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11700                    inner_offset = next_offset;
11701                } else {
11702                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11703                    inner_depth.increment()?;
11704                }
11705                let val_ref =
11706                    self.result_code.get_or_insert_with(|| fidl::new_empty!(StartResult, D));
11707                fidl::decode!(StartResult, D, val_ref, decoder, inner_offset, inner_depth)?;
11708                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11709                {
11710                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11711                }
11712                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11713                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11714                }
11715            }
11716
11717            next_offset += envelope_size;
11718
11719            // Decode the remaining unknown envelopes.
11720            while next_offset < end_offset {
11721                _next_ordinal_to_read += 1;
11722                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11723                next_offset += envelope_size;
11724            }
11725
11726            Ok(())
11727        }
11728    }
11729
11730    impl WlanFullmacImplIfcStopConfRequest {
11731        #[inline(always)]
11732        fn max_ordinal_present(&self) -> u64 {
11733            if let Some(_) = self.result_code {
11734                return 1;
11735            }
11736            0
11737        }
11738    }
11739
11740    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcStopConfRequest {
11741        type Borrowed<'a> = &'a Self;
11742        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11743            value
11744        }
11745    }
11746
11747    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcStopConfRequest {
11748        type Owned = Self;
11749
11750        #[inline(always)]
11751        fn inline_align(_context: fidl::encoding::Context) -> usize {
11752            8
11753        }
11754
11755        #[inline(always)]
11756        fn inline_size(_context: fidl::encoding::Context) -> usize {
11757            16
11758        }
11759    }
11760
11761    unsafe impl<D: fidl::encoding::ResourceDialect>
11762        fidl::encoding::Encode<WlanFullmacImplIfcStopConfRequest, D>
11763        for &WlanFullmacImplIfcStopConfRequest
11764    {
11765        unsafe fn encode(
11766            self,
11767            encoder: &mut fidl::encoding::Encoder<'_, D>,
11768            offset: usize,
11769            mut depth: fidl::encoding::Depth,
11770        ) -> fidl::Result<()> {
11771            encoder.debug_check_bounds::<WlanFullmacImplIfcStopConfRequest>(offset);
11772            // Vector header
11773            let max_ordinal: u64 = self.max_ordinal_present();
11774            encoder.write_num(max_ordinal, offset);
11775            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11776            // Calling encoder.out_of_line_offset(0) is not allowed.
11777            if max_ordinal == 0 {
11778                return Ok(());
11779            }
11780            depth.increment()?;
11781            let envelope_size = 8;
11782            let bytes_len = max_ordinal as usize * envelope_size;
11783            #[allow(unused_variables)]
11784            let offset = encoder.out_of_line_offset(bytes_len);
11785            let mut _prev_end_offset: usize = 0;
11786            if 1 > max_ordinal {
11787                return Ok(());
11788            }
11789
11790            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11791            // are envelope_size bytes.
11792            let cur_offset: usize = (1 - 1) * envelope_size;
11793
11794            // Zero reserved fields.
11795            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11796
11797            // Safety:
11798            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11799            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11800            //   envelope_size bytes, there is always sufficient room.
11801            fidl::encoding::encode_in_envelope_optional::<StopResult, D>(
11802                self.result_code
11803                    .as_ref()
11804                    .map(<StopResult as fidl::encoding::ValueTypeMarker>::borrow),
11805                encoder,
11806                offset + cur_offset,
11807                depth,
11808            )?;
11809
11810            _prev_end_offset = cur_offset + envelope_size;
11811
11812            Ok(())
11813        }
11814    }
11815
11816    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11817        for WlanFullmacImplIfcStopConfRequest
11818    {
11819        #[inline(always)]
11820        fn new_empty() -> Self {
11821            Self::default()
11822        }
11823
11824        unsafe fn decode(
11825            &mut self,
11826            decoder: &mut fidl::encoding::Decoder<'_, D>,
11827            offset: usize,
11828            mut depth: fidl::encoding::Depth,
11829        ) -> fidl::Result<()> {
11830            decoder.debug_check_bounds::<Self>(offset);
11831            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11832                None => return Err(fidl::Error::NotNullable),
11833                Some(len) => len,
11834            };
11835            // Calling decoder.out_of_line_offset(0) is not allowed.
11836            if len == 0 {
11837                return Ok(());
11838            };
11839            depth.increment()?;
11840            let envelope_size = 8;
11841            let bytes_len = len * envelope_size;
11842            let offset = decoder.out_of_line_offset(bytes_len)?;
11843            // Decode the envelope for each type.
11844            let mut _next_ordinal_to_read = 0;
11845            let mut next_offset = offset;
11846            let end_offset = offset + bytes_len;
11847            _next_ordinal_to_read += 1;
11848            if next_offset >= end_offset {
11849                return Ok(());
11850            }
11851
11852            // Decode unknown envelopes for gaps in ordinals.
11853            while _next_ordinal_to_read < 1 {
11854                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11855                _next_ordinal_to_read += 1;
11856                next_offset += envelope_size;
11857            }
11858
11859            let next_out_of_line = decoder.next_out_of_line();
11860            let handles_before = decoder.remaining_handles();
11861            if let Some((inlined, num_bytes, num_handles)) =
11862                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11863            {
11864                let member_inline_size =
11865                    <StopResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11866                if inlined != (member_inline_size <= 4) {
11867                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11868                }
11869                let inner_offset;
11870                let mut inner_depth = depth.clone();
11871                if inlined {
11872                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11873                    inner_offset = next_offset;
11874                } else {
11875                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11876                    inner_depth.increment()?;
11877                }
11878                let val_ref =
11879                    self.result_code.get_or_insert_with(|| fidl::new_empty!(StopResult, D));
11880                fidl::decode!(StopResult, D, val_ref, decoder, inner_offset, inner_depth)?;
11881                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11882                {
11883                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11884                }
11885                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11886                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11887                }
11888            }
11889
11890            next_offset += envelope_size;
11891
11892            // Decode the remaining unknown envelopes.
11893            while next_offset < end_offset {
11894                _next_ordinal_to_read += 1;
11895                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11896                next_offset += envelope_size;
11897            }
11898
11899            Ok(())
11900        }
11901    }
11902
11903    impl WlanFullmacImplInstallApfPacketFilterRequest {
11904        #[inline(always)]
11905        fn max_ordinal_present(&self) -> u64 {
11906            if let Some(_) = self.program {
11907                return 1;
11908            }
11909            0
11910        }
11911    }
11912
11913    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplInstallApfPacketFilterRequest {
11914        type Borrowed<'a> = &'a Self;
11915        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11916            value
11917        }
11918    }
11919
11920    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplInstallApfPacketFilterRequest {
11921        type Owned = Self;
11922
11923        #[inline(always)]
11924        fn inline_align(_context: fidl::encoding::Context) -> usize {
11925            8
11926        }
11927
11928        #[inline(always)]
11929        fn inline_size(_context: fidl::encoding::Context) -> usize {
11930            16
11931        }
11932    }
11933
11934    unsafe impl<D: fidl::encoding::ResourceDialect>
11935        fidl::encoding::Encode<WlanFullmacImplInstallApfPacketFilterRequest, D>
11936        for &WlanFullmacImplInstallApfPacketFilterRequest
11937    {
11938        unsafe fn encode(
11939            self,
11940            encoder: &mut fidl::encoding::Encoder<'_, D>,
11941            offset: usize,
11942            mut depth: fidl::encoding::Depth,
11943        ) -> fidl::Result<()> {
11944            encoder.debug_check_bounds::<WlanFullmacImplInstallApfPacketFilterRequest>(offset);
11945            // Vector header
11946            let max_ordinal: u64 = self.max_ordinal_present();
11947            encoder.write_num(max_ordinal, offset);
11948            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11949            // Calling encoder.out_of_line_offset(0) is not allowed.
11950            if max_ordinal == 0 {
11951                return Ok(());
11952            }
11953            depth.increment()?;
11954            let envelope_size = 8;
11955            let bytes_len = max_ordinal as usize * envelope_size;
11956            #[allow(unused_variables)]
11957            let offset = encoder.out_of_line_offset(bytes_len);
11958            let mut _prev_end_offset: usize = 0;
11959            if 1 > max_ordinal {
11960                return Ok(());
11961            }
11962
11963            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11964            // are envelope_size bytes.
11965            let cur_offset: usize = (1 - 1) * envelope_size;
11966
11967            // Zero reserved fields.
11968            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11969
11970            // Safety:
11971            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11972            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11973            //   envelope_size bytes, there is always sufficient room.
11974            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
11975            self.program.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
11976            encoder, offset + cur_offset, depth
11977        )?;
11978
11979            _prev_end_offset = cur_offset + envelope_size;
11980
11981            Ok(())
11982        }
11983    }
11984
11985    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11986        for WlanFullmacImplInstallApfPacketFilterRequest
11987    {
11988        #[inline(always)]
11989        fn new_empty() -> Self {
11990            Self::default()
11991        }
11992
11993        unsafe fn decode(
11994            &mut self,
11995            decoder: &mut fidl::encoding::Decoder<'_, D>,
11996            offset: usize,
11997            mut depth: fidl::encoding::Depth,
11998        ) -> fidl::Result<()> {
11999            decoder.debug_check_bounds::<Self>(offset);
12000            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12001                None => return Err(fidl::Error::NotNullable),
12002                Some(len) => len,
12003            };
12004            // Calling decoder.out_of_line_offset(0) is not allowed.
12005            if len == 0 {
12006                return Ok(());
12007            };
12008            depth.increment()?;
12009            let envelope_size = 8;
12010            let bytes_len = len * envelope_size;
12011            let offset = decoder.out_of_line_offset(bytes_len)?;
12012            // Decode the envelope for each type.
12013            let mut _next_ordinal_to_read = 0;
12014            let mut next_offset = offset;
12015            let end_offset = offset + bytes_len;
12016            _next_ordinal_to_read += 1;
12017            if next_offset >= end_offset {
12018                return Ok(());
12019            }
12020
12021            // Decode unknown envelopes for gaps in ordinals.
12022            while _next_ordinal_to_read < 1 {
12023                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12024                _next_ordinal_to_read += 1;
12025                next_offset += envelope_size;
12026            }
12027
12028            let next_out_of_line = decoder.next_out_of_line();
12029            let handles_before = decoder.remaining_handles();
12030            if let Some((inlined, num_bytes, num_handles)) =
12031                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12032            {
12033                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12034                if inlined != (member_inline_size <= 4) {
12035                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12036                }
12037                let inner_offset;
12038                let mut inner_depth = depth.clone();
12039                if inlined {
12040                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12041                    inner_offset = next_offset;
12042                } else {
12043                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12044                    inner_depth.increment()?;
12045                }
12046                let val_ref = self.program.get_or_insert_with(|| {
12047                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
12048                });
12049                fidl::decode!(
12050                    fidl::encoding::UnboundedVector<u8>,
12051                    D,
12052                    val_ref,
12053                    decoder,
12054                    inner_offset,
12055                    inner_depth
12056                )?;
12057                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12058                {
12059                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12060                }
12061                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12062                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12063                }
12064            }
12065
12066            next_offset += envelope_size;
12067
12068            // Decode the remaining unknown envelopes.
12069            while next_offset < end_offset {
12070                _next_ordinal_to_read += 1;
12071                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12072                next_offset += envelope_size;
12073            }
12074
12075            Ok(())
12076        }
12077    }
12078
12079    impl WlanFullmacImplOnLinkStateChangedRequest {
12080        #[inline(always)]
12081        fn max_ordinal_present(&self) -> u64 {
12082            if let Some(_) = self.online {
12083                return 1;
12084            }
12085            0
12086        }
12087    }
12088
12089    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplOnLinkStateChangedRequest {
12090        type Borrowed<'a> = &'a Self;
12091        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12092            value
12093        }
12094    }
12095
12096    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplOnLinkStateChangedRequest {
12097        type Owned = Self;
12098
12099        #[inline(always)]
12100        fn inline_align(_context: fidl::encoding::Context) -> usize {
12101            8
12102        }
12103
12104        #[inline(always)]
12105        fn inline_size(_context: fidl::encoding::Context) -> usize {
12106            16
12107        }
12108    }
12109
12110    unsafe impl<D: fidl::encoding::ResourceDialect>
12111        fidl::encoding::Encode<WlanFullmacImplOnLinkStateChangedRequest, D>
12112        for &WlanFullmacImplOnLinkStateChangedRequest
12113    {
12114        unsafe fn encode(
12115            self,
12116            encoder: &mut fidl::encoding::Encoder<'_, D>,
12117            offset: usize,
12118            mut depth: fidl::encoding::Depth,
12119        ) -> fidl::Result<()> {
12120            encoder.debug_check_bounds::<WlanFullmacImplOnLinkStateChangedRequest>(offset);
12121            // Vector header
12122            let max_ordinal: u64 = self.max_ordinal_present();
12123            encoder.write_num(max_ordinal, offset);
12124            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12125            // Calling encoder.out_of_line_offset(0) is not allowed.
12126            if max_ordinal == 0 {
12127                return Ok(());
12128            }
12129            depth.increment()?;
12130            let envelope_size = 8;
12131            let bytes_len = max_ordinal as usize * envelope_size;
12132            #[allow(unused_variables)]
12133            let offset = encoder.out_of_line_offset(bytes_len);
12134            let mut _prev_end_offset: usize = 0;
12135            if 1 > max_ordinal {
12136                return Ok(());
12137            }
12138
12139            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12140            // are envelope_size bytes.
12141            let cur_offset: usize = (1 - 1) * envelope_size;
12142
12143            // Zero reserved fields.
12144            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12145
12146            // Safety:
12147            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12148            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12149            //   envelope_size bytes, there is always sufficient room.
12150            fidl::encoding::encode_in_envelope_optional::<bool, D>(
12151                self.online.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
12152                encoder,
12153                offset + cur_offset,
12154                depth,
12155            )?;
12156
12157            _prev_end_offset = cur_offset + envelope_size;
12158
12159            Ok(())
12160        }
12161    }
12162
12163    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12164        for WlanFullmacImplOnLinkStateChangedRequest
12165    {
12166        #[inline(always)]
12167        fn new_empty() -> Self {
12168            Self::default()
12169        }
12170
12171        unsafe fn decode(
12172            &mut self,
12173            decoder: &mut fidl::encoding::Decoder<'_, D>,
12174            offset: usize,
12175            mut depth: fidl::encoding::Depth,
12176        ) -> fidl::Result<()> {
12177            decoder.debug_check_bounds::<Self>(offset);
12178            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12179                None => return Err(fidl::Error::NotNullable),
12180                Some(len) => len,
12181            };
12182            // Calling decoder.out_of_line_offset(0) is not allowed.
12183            if len == 0 {
12184                return Ok(());
12185            };
12186            depth.increment()?;
12187            let envelope_size = 8;
12188            let bytes_len = len * envelope_size;
12189            let offset = decoder.out_of_line_offset(bytes_len)?;
12190            // Decode the envelope for each type.
12191            let mut _next_ordinal_to_read = 0;
12192            let mut next_offset = offset;
12193            let end_offset = offset + bytes_len;
12194            _next_ordinal_to_read += 1;
12195            if next_offset >= end_offset {
12196                return Ok(());
12197            }
12198
12199            // Decode unknown envelopes for gaps in ordinals.
12200            while _next_ordinal_to_read < 1 {
12201                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12202                _next_ordinal_to_read += 1;
12203                next_offset += envelope_size;
12204            }
12205
12206            let next_out_of_line = decoder.next_out_of_line();
12207            let handles_before = decoder.remaining_handles();
12208            if let Some((inlined, num_bytes, num_handles)) =
12209                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12210            {
12211                let member_inline_size =
12212                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12213                if inlined != (member_inline_size <= 4) {
12214                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12215                }
12216                let inner_offset;
12217                let mut inner_depth = depth.clone();
12218                if inlined {
12219                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12220                    inner_offset = next_offset;
12221                } else {
12222                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12223                    inner_depth.increment()?;
12224                }
12225                let val_ref = self.online.get_or_insert_with(|| fidl::new_empty!(bool, D));
12226                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
12227                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12228                {
12229                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12230                }
12231                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12232                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12233                }
12234            }
12235
12236            next_offset += envelope_size;
12237
12238            // Decode the remaining unknown envelopes.
12239            while next_offset < end_offset {
12240                _next_ordinal_to_read += 1;
12241                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12242                next_offset += envelope_size;
12243            }
12244
12245            Ok(())
12246        }
12247    }
12248
12249    impl WlanFullmacImplReconnectRequest {
12250        #[inline(always)]
12251        fn max_ordinal_present(&self) -> u64 {
12252            if let Some(_) = self.peer_sta_address {
12253                return 1;
12254            }
12255            0
12256        }
12257    }
12258
12259    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplReconnectRequest {
12260        type Borrowed<'a> = &'a Self;
12261        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12262            value
12263        }
12264    }
12265
12266    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplReconnectRequest {
12267        type Owned = Self;
12268
12269        #[inline(always)]
12270        fn inline_align(_context: fidl::encoding::Context) -> usize {
12271            8
12272        }
12273
12274        #[inline(always)]
12275        fn inline_size(_context: fidl::encoding::Context) -> usize {
12276            16
12277        }
12278    }
12279
12280    unsafe impl<D: fidl::encoding::ResourceDialect>
12281        fidl::encoding::Encode<WlanFullmacImplReconnectRequest, D>
12282        for &WlanFullmacImplReconnectRequest
12283    {
12284        unsafe fn encode(
12285            self,
12286            encoder: &mut fidl::encoding::Encoder<'_, D>,
12287            offset: usize,
12288            mut depth: fidl::encoding::Depth,
12289        ) -> fidl::Result<()> {
12290            encoder.debug_check_bounds::<WlanFullmacImplReconnectRequest>(offset);
12291            // Vector header
12292            let max_ordinal: u64 = self.max_ordinal_present();
12293            encoder.write_num(max_ordinal, offset);
12294            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12295            // Calling encoder.out_of_line_offset(0) is not allowed.
12296            if max_ordinal == 0 {
12297                return Ok(());
12298            }
12299            depth.increment()?;
12300            let envelope_size = 8;
12301            let bytes_len = max_ordinal as usize * envelope_size;
12302            #[allow(unused_variables)]
12303            let offset = encoder.out_of_line_offset(bytes_len);
12304            let mut _prev_end_offset: usize = 0;
12305            if 1 > max_ordinal {
12306                return Ok(());
12307            }
12308
12309            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12310            // are envelope_size bytes.
12311            let cur_offset: usize = (1 - 1) * envelope_size;
12312
12313            // Zero reserved fields.
12314            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12315
12316            // Safety:
12317            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12318            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12319            //   envelope_size bytes, there is always sufficient room.
12320            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
12321                self.peer_sta_address
12322                    .as_ref()
12323                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
12324                encoder,
12325                offset + cur_offset,
12326                depth,
12327            )?;
12328
12329            _prev_end_offset = cur_offset + envelope_size;
12330
12331            Ok(())
12332        }
12333    }
12334
12335    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12336        for WlanFullmacImplReconnectRequest
12337    {
12338        #[inline(always)]
12339        fn new_empty() -> Self {
12340            Self::default()
12341        }
12342
12343        unsafe fn decode(
12344            &mut self,
12345            decoder: &mut fidl::encoding::Decoder<'_, D>,
12346            offset: usize,
12347            mut depth: fidl::encoding::Depth,
12348        ) -> fidl::Result<()> {
12349            decoder.debug_check_bounds::<Self>(offset);
12350            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12351                None => return Err(fidl::Error::NotNullable),
12352                Some(len) => len,
12353            };
12354            // Calling decoder.out_of_line_offset(0) is not allowed.
12355            if len == 0 {
12356                return Ok(());
12357            };
12358            depth.increment()?;
12359            let envelope_size = 8;
12360            let bytes_len = len * envelope_size;
12361            let offset = decoder.out_of_line_offset(bytes_len)?;
12362            // Decode the envelope for each type.
12363            let mut _next_ordinal_to_read = 0;
12364            let mut next_offset = offset;
12365            let end_offset = offset + bytes_len;
12366            _next_ordinal_to_read += 1;
12367            if next_offset >= end_offset {
12368                return Ok(());
12369            }
12370
12371            // Decode unknown envelopes for gaps in ordinals.
12372            while _next_ordinal_to_read < 1 {
12373                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12374                _next_ordinal_to_read += 1;
12375                next_offset += envelope_size;
12376            }
12377
12378            let next_out_of_line = decoder.next_out_of_line();
12379            let handles_before = decoder.remaining_handles();
12380            if let Some((inlined, num_bytes, num_handles)) =
12381                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12382            {
12383                let member_inline_size =
12384                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
12385                        decoder.context,
12386                    );
12387                if inlined != (member_inline_size <= 4) {
12388                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12389                }
12390                let inner_offset;
12391                let mut inner_depth = depth.clone();
12392                if inlined {
12393                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12394                    inner_offset = next_offset;
12395                } else {
12396                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12397                    inner_depth.increment()?;
12398                }
12399                let val_ref = self
12400                    .peer_sta_address
12401                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
12402                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
12403                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12404                {
12405                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12406                }
12407                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12408                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12409                }
12410            }
12411
12412            next_offset += envelope_size;
12413
12414            // Decode the remaining unknown envelopes.
12415            while next_offset < end_offset {
12416                _next_ordinal_to_read += 1;
12417                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12418                next_offset += envelope_size;
12419            }
12420
12421            Ok(())
12422        }
12423    }
12424
12425    impl WlanFullmacImplRoamRequest {
12426        #[inline(always)]
12427        fn max_ordinal_present(&self) -> u64 {
12428            if let Some(_) = self.selected_bss {
12429                return 1;
12430            }
12431            0
12432        }
12433    }
12434
12435    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplRoamRequest {
12436        type Borrowed<'a> = &'a Self;
12437        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12438            value
12439        }
12440    }
12441
12442    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplRoamRequest {
12443        type Owned = Self;
12444
12445        #[inline(always)]
12446        fn inline_align(_context: fidl::encoding::Context) -> usize {
12447            8
12448        }
12449
12450        #[inline(always)]
12451        fn inline_size(_context: fidl::encoding::Context) -> usize {
12452            16
12453        }
12454    }
12455
12456    unsafe impl<D: fidl::encoding::ResourceDialect>
12457        fidl::encoding::Encode<WlanFullmacImplRoamRequest, D> for &WlanFullmacImplRoamRequest
12458    {
12459        unsafe fn encode(
12460            self,
12461            encoder: &mut fidl::encoding::Encoder<'_, D>,
12462            offset: usize,
12463            mut depth: fidl::encoding::Depth,
12464        ) -> fidl::Result<()> {
12465            encoder.debug_check_bounds::<WlanFullmacImplRoamRequest>(offset);
12466            // Vector header
12467            let max_ordinal: u64 = self.max_ordinal_present();
12468            encoder.write_num(max_ordinal, offset);
12469            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12470            // Calling encoder.out_of_line_offset(0) is not allowed.
12471            if max_ordinal == 0 {
12472                return Ok(());
12473            }
12474            depth.increment()?;
12475            let envelope_size = 8;
12476            let bytes_len = max_ordinal as usize * envelope_size;
12477            #[allow(unused_variables)]
12478            let offset = encoder.out_of_line_offset(bytes_len);
12479            let mut _prev_end_offset: usize = 0;
12480            if 1 > max_ordinal {
12481                return Ok(());
12482            }
12483
12484            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12485            // are envelope_size bytes.
12486            let cur_offset: usize = (1 - 1) * envelope_size;
12487
12488            // Zero reserved fields.
12489            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12490
12491            // Safety:
12492            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12493            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12494            //   envelope_size bytes, there is always sufficient room.
12495            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::BssDescription, D>(
12496            self.selected_bss.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow),
12497            encoder, offset + cur_offset, depth
12498        )?;
12499
12500            _prev_end_offset = cur_offset + envelope_size;
12501
12502            Ok(())
12503        }
12504    }
12505
12506    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12507        for WlanFullmacImplRoamRequest
12508    {
12509        #[inline(always)]
12510        fn new_empty() -> Self {
12511            Self::default()
12512        }
12513
12514        unsafe fn decode(
12515            &mut self,
12516            decoder: &mut fidl::encoding::Decoder<'_, D>,
12517            offset: usize,
12518            mut depth: fidl::encoding::Depth,
12519        ) -> fidl::Result<()> {
12520            decoder.debug_check_bounds::<Self>(offset);
12521            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12522                None => return Err(fidl::Error::NotNullable),
12523                Some(len) => len,
12524            };
12525            // Calling decoder.out_of_line_offset(0) is not allowed.
12526            if len == 0 {
12527                return Ok(());
12528            };
12529            depth.increment()?;
12530            let envelope_size = 8;
12531            let bytes_len = len * envelope_size;
12532            let offset = decoder.out_of_line_offset(bytes_len)?;
12533            // Decode the envelope for each type.
12534            let mut _next_ordinal_to_read = 0;
12535            let mut next_offset = offset;
12536            let end_offset = offset + bytes_len;
12537            _next_ordinal_to_read += 1;
12538            if next_offset >= end_offset {
12539                return Ok(());
12540            }
12541
12542            // Decode unknown envelopes for gaps in ordinals.
12543            while _next_ordinal_to_read < 1 {
12544                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12545                _next_ordinal_to_read += 1;
12546                next_offset += envelope_size;
12547            }
12548
12549            let next_out_of_line = decoder.next_out_of_line();
12550            let handles_before = decoder.remaining_handles();
12551            if let Some((inlined, num_bytes, num_handles)) =
12552                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12553            {
12554                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::BssDescription as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12555                if inlined != (member_inline_size <= 4) {
12556                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12557                }
12558                let inner_offset;
12559                let mut inner_depth = depth.clone();
12560                if inlined {
12561                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12562                    inner_offset = next_offset;
12563                } else {
12564                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12565                    inner_depth.increment()?;
12566                }
12567                let val_ref = self.selected_bss.get_or_insert_with(|| {
12568                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::BssDescription, D)
12569                });
12570                fidl::decode!(
12571                    fidl_fuchsia_wlan_ieee80211_common::BssDescription,
12572                    D,
12573                    val_ref,
12574                    decoder,
12575                    inner_offset,
12576                    inner_depth
12577                )?;
12578                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12579                {
12580                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12581                }
12582                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12583                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12584                }
12585            }
12586
12587            next_offset += envelope_size;
12588
12589            // Decode the remaining unknown envelopes.
12590            while next_offset < end_offset {
12591                _next_ordinal_to_read += 1;
12592                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12593                next_offset += envelope_size;
12594            }
12595
12596            Ok(())
12597        }
12598    }
12599
12600    impl WlanFullmacImplSaeHandshakeRespRequest {
12601        #[inline(always)]
12602        fn max_ordinal_present(&self) -> u64 {
12603            if let Some(_) = self.status_code {
12604                return 2;
12605            }
12606            if let Some(_) = self.peer_sta_address {
12607                return 1;
12608            }
12609            0
12610        }
12611    }
12612
12613    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSaeHandshakeRespRequest {
12614        type Borrowed<'a> = &'a Self;
12615        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12616            value
12617        }
12618    }
12619
12620    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSaeHandshakeRespRequest {
12621        type Owned = Self;
12622
12623        #[inline(always)]
12624        fn inline_align(_context: fidl::encoding::Context) -> usize {
12625            8
12626        }
12627
12628        #[inline(always)]
12629        fn inline_size(_context: fidl::encoding::Context) -> usize {
12630            16
12631        }
12632    }
12633
12634    unsafe impl<D: fidl::encoding::ResourceDialect>
12635        fidl::encoding::Encode<WlanFullmacImplSaeHandshakeRespRequest, D>
12636        for &WlanFullmacImplSaeHandshakeRespRequest
12637    {
12638        unsafe fn encode(
12639            self,
12640            encoder: &mut fidl::encoding::Encoder<'_, D>,
12641            offset: usize,
12642            mut depth: fidl::encoding::Depth,
12643        ) -> fidl::Result<()> {
12644            encoder.debug_check_bounds::<WlanFullmacImplSaeHandshakeRespRequest>(offset);
12645            // Vector header
12646            let max_ordinal: u64 = self.max_ordinal_present();
12647            encoder.write_num(max_ordinal, offset);
12648            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12649            // Calling encoder.out_of_line_offset(0) is not allowed.
12650            if max_ordinal == 0 {
12651                return Ok(());
12652            }
12653            depth.increment()?;
12654            let envelope_size = 8;
12655            let bytes_len = max_ordinal as usize * envelope_size;
12656            #[allow(unused_variables)]
12657            let offset = encoder.out_of_line_offset(bytes_len);
12658            let mut _prev_end_offset: usize = 0;
12659            if 1 > max_ordinal {
12660                return Ok(());
12661            }
12662
12663            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12664            // are envelope_size bytes.
12665            let cur_offset: usize = (1 - 1) * envelope_size;
12666
12667            // Zero reserved fields.
12668            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12669
12670            // Safety:
12671            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12672            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12673            //   envelope_size bytes, there is always sufficient room.
12674            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
12675                self.peer_sta_address
12676                    .as_ref()
12677                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
12678                encoder,
12679                offset + cur_offset,
12680                depth,
12681            )?;
12682
12683            _prev_end_offset = cur_offset + envelope_size;
12684            if 2 > max_ordinal {
12685                return Ok(());
12686            }
12687
12688            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12689            // are envelope_size bytes.
12690            let cur_offset: usize = (2 - 1) * envelope_size;
12691
12692            // Zero reserved fields.
12693            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12694
12695            // Safety:
12696            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12697            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12698            //   envelope_size bytes, there is always sufficient room.
12699            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::StatusCode, D>(
12700            self.status_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
12701            encoder, offset + cur_offset, depth
12702        )?;
12703
12704            _prev_end_offset = cur_offset + envelope_size;
12705
12706            Ok(())
12707        }
12708    }
12709
12710    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12711        for WlanFullmacImplSaeHandshakeRespRequest
12712    {
12713        #[inline(always)]
12714        fn new_empty() -> Self {
12715            Self::default()
12716        }
12717
12718        unsafe fn decode(
12719            &mut self,
12720            decoder: &mut fidl::encoding::Decoder<'_, D>,
12721            offset: usize,
12722            mut depth: fidl::encoding::Depth,
12723        ) -> fidl::Result<()> {
12724            decoder.debug_check_bounds::<Self>(offset);
12725            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12726                None => return Err(fidl::Error::NotNullable),
12727                Some(len) => len,
12728            };
12729            // Calling decoder.out_of_line_offset(0) is not allowed.
12730            if len == 0 {
12731                return Ok(());
12732            };
12733            depth.increment()?;
12734            let envelope_size = 8;
12735            let bytes_len = len * envelope_size;
12736            let offset = decoder.out_of_line_offset(bytes_len)?;
12737            // Decode the envelope for each type.
12738            let mut _next_ordinal_to_read = 0;
12739            let mut next_offset = offset;
12740            let end_offset = offset + bytes_len;
12741            _next_ordinal_to_read += 1;
12742            if next_offset >= end_offset {
12743                return Ok(());
12744            }
12745
12746            // Decode unknown envelopes for gaps in ordinals.
12747            while _next_ordinal_to_read < 1 {
12748                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12749                _next_ordinal_to_read += 1;
12750                next_offset += envelope_size;
12751            }
12752
12753            let next_out_of_line = decoder.next_out_of_line();
12754            let handles_before = decoder.remaining_handles();
12755            if let Some((inlined, num_bytes, num_handles)) =
12756                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12757            {
12758                let member_inline_size =
12759                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
12760                        decoder.context,
12761                    );
12762                if inlined != (member_inline_size <= 4) {
12763                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12764                }
12765                let inner_offset;
12766                let mut inner_depth = depth.clone();
12767                if inlined {
12768                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12769                    inner_offset = next_offset;
12770                } else {
12771                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12772                    inner_depth.increment()?;
12773                }
12774                let val_ref = self
12775                    .peer_sta_address
12776                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
12777                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
12778                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12779                {
12780                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12781                }
12782                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12783                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12784                }
12785            }
12786
12787            next_offset += envelope_size;
12788            _next_ordinal_to_read += 1;
12789            if next_offset >= end_offset {
12790                return Ok(());
12791            }
12792
12793            // Decode unknown envelopes for gaps in ordinals.
12794            while _next_ordinal_to_read < 2 {
12795                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12796                _next_ordinal_to_read += 1;
12797                next_offset += envelope_size;
12798            }
12799
12800            let next_out_of_line = decoder.next_out_of_line();
12801            let handles_before = decoder.remaining_handles();
12802            if let Some((inlined, num_bytes, num_handles)) =
12803                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12804            {
12805                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12806                if inlined != (member_inline_size <= 4) {
12807                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12808                }
12809                let inner_offset;
12810                let mut inner_depth = depth.clone();
12811                if inlined {
12812                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12813                    inner_offset = next_offset;
12814                } else {
12815                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12816                    inner_depth.increment()?;
12817                }
12818                let val_ref = self.status_code.get_or_insert_with(|| {
12819                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::StatusCode, D)
12820                });
12821                fidl::decode!(
12822                    fidl_fuchsia_wlan_ieee80211_common::StatusCode,
12823                    D,
12824                    val_ref,
12825                    decoder,
12826                    inner_offset,
12827                    inner_depth
12828                )?;
12829                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12830                {
12831                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12832                }
12833                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12834                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12835                }
12836            }
12837
12838            next_offset += envelope_size;
12839
12840            // Decode the remaining unknown envelopes.
12841            while next_offset < end_offset {
12842                _next_ordinal_to_read += 1;
12843                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12844                next_offset += envelope_size;
12845            }
12846
12847            Ok(())
12848        }
12849    }
12850
12851    impl WlanFullmacImplSetApfPacketFilterEnabledRequest {
12852        #[inline(always)]
12853        fn max_ordinal_present(&self) -> u64 {
12854            if let Some(_) = self.enabled {
12855                return 1;
12856            }
12857            0
12858        }
12859    }
12860
12861    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSetApfPacketFilterEnabledRequest {
12862        type Borrowed<'a> = &'a Self;
12863        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12864            value
12865        }
12866    }
12867
12868    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSetApfPacketFilterEnabledRequest {
12869        type Owned = Self;
12870
12871        #[inline(always)]
12872        fn inline_align(_context: fidl::encoding::Context) -> usize {
12873            8
12874        }
12875
12876        #[inline(always)]
12877        fn inline_size(_context: fidl::encoding::Context) -> usize {
12878            16
12879        }
12880    }
12881
12882    unsafe impl<D: fidl::encoding::ResourceDialect>
12883        fidl::encoding::Encode<WlanFullmacImplSetApfPacketFilterEnabledRequest, D>
12884        for &WlanFullmacImplSetApfPacketFilterEnabledRequest
12885    {
12886        unsafe fn encode(
12887            self,
12888            encoder: &mut fidl::encoding::Encoder<'_, D>,
12889            offset: usize,
12890            mut depth: fidl::encoding::Depth,
12891        ) -> fidl::Result<()> {
12892            encoder.debug_check_bounds::<WlanFullmacImplSetApfPacketFilterEnabledRequest>(offset);
12893            // Vector header
12894            let max_ordinal: u64 = self.max_ordinal_present();
12895            encoder.write_num(max_ordinal, offset);
12896            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12897            // Calling encoder.out_of_line_offset(0) is not allowed.
12898            if max_ordinal == 0 {
12899                return Ok(());
12900            }
12901            depth.increment()?;
12902            let envelope_size = 8;
12903            let bytes_len = max_ordinal as usize * envelope_size;
12904            #[allow(unused_variables)]
12905            let offset = encoder.out_of_line_offset(bytes_len);
12906            let mut _prev_end_offset: usize = 0;
12907            if 1 > max_ordinal {
12908                return Ok(());
12909            }
12910
12911            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12912            // are envelope_size bytes.
12913            let cur_offset: usize = (1 - 1) * envelope_size;
12914
12915            // Zero reserved fields.
12916            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12917
12918            // Safety:
12919            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12920            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12921            //   envelope_size bytes, there is always sufficient room.
12922            fidl::encoding::encode_in_envelope_optional::<bool, D>(
12923                self.enabled.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
12924                encoder,
12925                offset + cur_offset,
12926                depth,
12927            )?;
12928
12929            _prev_end_offset = cur_offset + envelope_size;
12930
12931            Ok(())
12932        }
12933    }
12934
12935    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12936        for WlanFullmacImplSetApfPacketFilterEnabledRequest
12937    {
12938        #[inline(always)]
12939        fn new_empty() -> Self {
12940            Self::default()
12941        }
12942
12943        unsafe fn decode(
12944            &mut self,
12945            decoder: &mut fidl::encoding::Decoder<'_, D>,
12946            offset: usize,
12947            mut depth: fidl::encoding::Depth,
12948        ) -> fidl::Result<()> {
12949            decoder.debug_check_bounds::<Self>(offset);
12950            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12951                None => return Err(fidl::Error::NotNullable),
12952                Some(len) => len,
12953            };
12954            // Calling decoder.out_of_line_offset(0) is not allowed.
12955            if len == 0 {
12956                return Ok(());
12957            };
12958            depth.increment()?;
12959            let envelope_size = 8;
12960            let bytes_len = len * envelope_size;
12961            let offset = decoder.out_of_line_offset(bytes_len)?;
12962            // Decode the envelope for each type.
12963            let mut _next_ordinal_to_read = 0;
12964            let mut next_offset = offset;
12965            let end_offset = offset + bytes_len;
12966            _next_ordinal_to_read += 1;
12967            if next_offset >= end_offset {
12968                return Ok(());
12969            }
12970
12971            // Decode unknown envelopes for gaps in ordinals.
12972            while _next_ordinal_to_read < 1 {
12973                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12974                _next_ordinal_to_read += 1;
12975                next_offset += envelope_size;
12976            }
12977
12978            let next_out_of_line = decoder.next_out_of_line();
12979            let handles_before = decoder.remaining_handles();
12980            if let Some((inlined, num_bytes, num_handles)) =
12981                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12982            {
12983                let member_inline_size =
12984                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12985                if inlined != (member_inline_size <= 4) {
12986                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12987                }
12988                let inner_offset;
12989                let mut inner_depth = depth.clone();
12990                if inlined {
12991                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12992                    inner_offset = next_offset;
12993                } else {
12994                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12995                    inner_depth.increment()?;
12996                }
12997                let val_ref = self.enabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
12998                fidl::decode!(bool, 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
13010            // Decode the remaining unknown envelopes.
13011            while next_offset < end_offset {
13012                _next_ordinal_to_read += 1;
13013                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13014                next_offset += envelope_size;
13015            }
13016
13017            Ok(())
13018        }
13019    }
13020
13021    impl WlanFullmacImplSetKeysRequest {
13022        #[inline(always)]
13023        fn max_ordinal_present(&self) -> u64 {
13024            if let Some(_) = self.key_descriptors {
13025                return 2;
13026            }
13027            if let Some(_) = self.keylist {
13028                return 1;
13029            }
13030            0
13031        }
13032    }
13033
13034    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSetKeysRequest {
13035        type Borrowed<'a> = &'a Self;
13036        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13037            value
13038        }
13039    }
13040
13041    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSetKeysRequest {
13042        type Owned = Self;
13043
13044        #[inline(always)]
13045        fn inline_align(_context: fidl::encoding::Context) -> usize {
13046            8
13047        }
13048
13049        #[inline(always)]
13050        fn inline_size(_context: fidl::encoding::Context) -> usize {
13051            16
13052        }
13053    }
13054
13055    unsafe impl<D: fidl::encoding::ResourceDialect>
13056        fidl::encoding::Encode<WlanFullmacImplSetKeysRequest, D>
13057        for &WlanFullmacImplSetKeysRequest
13058    {
13059        unsafe fn encode(
13060            self,
13061            encoder: &mut fidl::encoding::Encoder<'_, D>,
13062            offset: usize,
13063            mut depth: fidl::encoding::Depth,
13064        ) -> fidl::Result<()> {
13065            encoder.debug_check_bounds::<WlanFullmacImplSetKeysRequest>(offset);
13066            // Vector header
13067            let max_ordinal: u64 = self.max_ordinal_present();
13068            encoder.write_num(max_ordinal, offset);
13069            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13070            // Calling encoder.out_of_line_offset(0) is not allowed.
13071            if max_ordinal == 0 {
13072                return Ok(());
13073            }
13074            depth.increment()?;
13075            let envelope_size = 8;
13076            let bytes_len = max_ordinal as usize * envelope_size;
13077            #[allow(unused_variables)]
13078            let offset = encoder.out_of_line_offset(bytes_len);
13079            let mut _prev_end_offset: usize = 0;
13080            if 1 > max_ordinal {
13081                return Ok(());
13082            }
13083
13084            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13085            // are envelope_size bytes.
13086            let cur_offset: usize = (1 - 1) * envelope_size;
13087
13088            // Zero reserved fields.
13089            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13090
13091            // Safety:
13092            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13093            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13094            //   envelope_size bytes, there is always sufficient room.
13095            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_wlan_driver_common::WlanKeyConfig, 4>, D>(
13096            self.keylist.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_wlan_driver_common::WlanKeyConfig, 4> as fidl::encoding::ValueTypeMarker>::borrow),
13097            encoder, offset + cur_offset, depth
13098        )?;
13099
13100            _prev_end_offset = cur_offset + envelope_size;
13101            if 2 > max_ordinal {
13102                return Ok(());
13103            }
13104
13105            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13106            // are envelope_size bytes.
13107            let cur_offset: usize = (2 - 1) * envelope_size;
13108
13109            // Zero reserved fields.
13110            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13111
13112            // Safety:
13113            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13114            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13115            //   envelope_size bytes, there is always sufficient room.
13116            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor, 4>, D>(
13117            self.key_descriptors.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor, 4> as fidl::encoding::ValueTypeMarker>::borrow),
13118            encoder, offset + cur_offset, depth
13119        )?;
13120
13121            _prev_end_offset = cur_offset + envelope_size;
13122
13123            Ok(())
13124        }
13125    }
13126
13127    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
13128        for WlanFullmacImplSetKeysRequest
13129    {
13130        #[inline(always)]
13131        fn new_empty() -> Self {
13132            Self::default()
13133        }
13134
13135        unsafe fn decode(
13136            &mut self,
13137            decoder: &mut fidl::encoding::Decoder<'_, D>,
13138            offset: usize,
13139            mut depth: fidl::encoding::Depth,
13140        ) -> fidl::Result<()> {
13141            decoder.debug_check_bounds::<Self>(offset);
13142            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13143                None => return Err(fidl::Error::NotNullable),
13144                Some(len) => len,
13145            };
13146            // Calling decoder.out_of_line_offset(0) is not allowed.
13147            if len == 0 {
13148                return Ok(());
13149            };
13150            depth.increment()?;
13151            let envelope_size = 8;
13152            let bytes_len = len * envelope_size;
13153            let offset = decoder.out_of_line_offset(bytes_len)?;
13154            // Decode the envelope for each type.
13155            let mut _next_ordinal_to_read = 0;
13156            let mut next_offset = offset;
13157            let end_offset = offset + bytes_len;
13158            _next_ordinal_to_read += 1;
13159            if next_offset >= end_offset {
13160                return Ok(());
13161            }
13162
13163            // Decode unknown envelopes for gaps in ordinals.
13164            while _next_ordinal_to_read < 1 {
13165                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13166                _next_ordinal_to_read += 1;
13167                next_offset += envelope_size;
13168            }
13169
13170            let next_out_of_line = decoder.next_out_of_line();
13171            let handles_before = decoder.remaining_handles();
13172            if let Some((inlined, num_bytes, num_handles)) =
13173                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13174            {
13175                let member_inline_size = <fidl::encoding::Vector<
13176                    fidl_fuchsia_wlan_driver_common::WlanKeyConfig,
13177                    4,
13178                > as fidl::encoding::TypeMarker>::inline_size(
13179                    decoder.context
13180                );
13181                if inlined != (member_inline_size <= 4) {
13182                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13183                }
13184                let inner_offset;
13185                let mut inner_depth = depth.clone();
13186                if inlined {
13187                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13188                    inner_offset = next_offset;
13189                } else {
13190                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13191                    inner_depth.increment()?;
13192                }
13193                let val_ref =
13194                self.keylist.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_wlan_driver_common::WlanKeyConfig, 4>, D));
13195                fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_wlan_driver_common::WlanKeyConfig, 4>, D, val_ref, decoder, inner_offset, inner_depth)?;
13196                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13197                {
13198                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13199                }
13200                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13201                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13202                }
13203            }
13204
13205            next_offset += envelope_size;
13206            _next_ordinal_to_read += 1;
13207            if next_offset >= end_offset {
13208                return Ok(());
13209            }
13210
13211            // Decode unknown envelopes for gaps in ordinals.
13212            while _next_ordinal_to_read < 2 {
13213                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13214                _next_ordinal_to_read += 1;
13215                next_offset += envelope_size;
13216            }
13217
13218            let next_out_of_line = decoder.next_out_of_line();
13219            let handles_before = decoder.remaining_handles();
13220            if let Some((inlined, num_bytes, num_handles)) =
13221                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13222            {
13223                let member_inline_size = <fidl::encoding::Vector<
13224                    fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor,
13225                    4,
13226                > as fidl::encoding::TypeMarker>::inline_size(
13227                    decoder.context
13228                );
13229                if inlined != (member_inline_size <= 4) {
13230                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13231                }
13232                let inner_offset;
13233                let mut inner_depth = depth.clone();
13234                if inlined {
13235                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13236                    inner_offset = next_offset;
13237                } else {
13238                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13239                    inner_depth.increment()?;
13240                }
13241                let val_ref =
13242                self.key_descriptors.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor, 4>, D));
13243                fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor, 4>, D, val_ref, decoder, inner_offset, inner_depth)?;
13244                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13245                {
13246                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13247                }
13248                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13249                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13250                }
13251            }
13252
13253            next_offset += envelope_size;
13254
13255            // Decode the remaining unknown envelopes.
13256            while next_offset < end_offset {
13257                _next_ordinal_to_read += 1;
13258                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13259                next_offset += envelope_size;
13260            }
13261
13262            Ok(())
13263        }
13264    }
13265
13266    impl WlanFullmacImplStartBssRequest {
13267        #[inline(always)]
13268        fn max_ordinal_present(&self) -> u64 {
13269            if let Some(_) = self.vendor_ie {
13270                return 7;
13271            }
13272            if let Some(_) = self.rsne {
13273                return 6;
13274            }
13275            if let Some(_) = self.primary {
13276                return 5;
13277            }
13278            if let Some(_) = self.dtim_period {
13279                return 4;
13280            }
13281            if let Some(_) = self.beacon_period {
13282                return 3;
13283            }
13284            if let Some(_) = self.bss_type {
13285                return 2;
13286            }
13287            if let Some(_) = self.ssid {
13288                return 1;
13289            }
13290            0
13291        }
13292    }
13293
13294    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplStartBssRequest {
13295        type Borrowed<'a> = &'a Self;
13296        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13297            value
13298        }
13299    }
13300
13301    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplStartBssRequest {
13302        type Owned = Self;
13303
13304        #[inline(always)]
13305        fn inline_align(_context: fidl::encoding::Context) -> usize {
13306            8
13307        }
13308
13309        #[inline(always)]
13310        fn inline_size(_context: fidl::encoding::Context) -> usize {
13311            16
13312        }
13313    }
13314
13315    unsafe impl<D: fidl::encoding::ResourceDialect>
13316        fidl::encoding::Encode<WlanFullmacImplStartBssRequest, D>
13317        for &WlanFullmacImplStartBssRequest
13318    {
13319        unsafe fn encode(
13320            self,
13321            encoder: &mut fidl::encoding::Encoder<'_, D>,
13322            offset: usize,
13323            mut depth: fidl::encoding::Depth,
13324        ) -> fidl::Result<()> {
13325            encoder.debug_check_bounds::<WlanFullmacImplStartBssRequest>(offset);
13326            // Vector header
13327            let max_ordinal: u64 = self.max_ordinal_present();
13328            encoder.write_num(max_ordinal, offset);
13329            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13330            // Calling encoder.out_of_line_offset(0) is not allowed.
13331            if max_ordinal == 0 {
13332                return Ok(());
13333            }
13334            depth.increment()?;
13335            let envelope_size = 8;
13336            let bytes_len = max_ordinal as usize * envelope_size;
13337            #[allow(unused_variables)]
13338            let offset = encoder.out_of_line_offset(bytes_len);
13339            let mut _prev_end_offset: usize = 0;
13340            if 1 > max_ordinal {
13341                return Ok(());
13342            }
13343
13344            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13345            // are envelope_size bytes.
13346            let cur_offset: usize = (1 - 1) * envelope_size;
13347
13348            // Zero reserved fields.
13349            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13350
13351            // Safety:
13352            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13353            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13354            //   envelope_size bytes, there is always sufficient room.
13355            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
13356                self.ssid.as_ref().map(
13357                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
13358                ),
13359                encoder,
13360                offset + cur_offset,
13361                depth,
13362            )?;
13363
13364            _prev_end_offset = cur_offset + envelope_size;
13365            if 2 > max_ordinal {
13366                return Ok(());
13367            }
13368
13369            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13370            // are envelope_size bytes.
13371            let cur_offset: usize = (2 - 1) * envelope_size;
13372
13373            // Zero reserved fields.
13374            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13375
13376            // Safety:
13377            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13378            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13379            //   envelope_size bytes, there is always sufficient room.
13380            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::BssType, D>(
13381            self.bss_type.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::BssType as fidl::encoding::ValueTypeMarker>::borrow),
13382            encoder, offset + cur_offset, depth
13383        )?;
13384
13385            _prev_end_offset = cur_offset + envelope_size;
13386            if 3 > max_ordinal {
13387                return Ok(());
13388            }
13389
13390            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13391            // are envelope_size bytes.
13392            let cur_offset: usize = (3 - 1) * envelope_size;
13393
13394            // Zero reserved fields.
13395            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13396
13397            // Safety:
13398            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13399            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13400            //   envelope_size bytes, there is always sufficient room.
13401            fidl::encoding::encode_in_envelope_optional::<u32, D>(
13402                self.beacon_period.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
13403                encoder,
13404                offset + cur_offset,
13405                depth,
13406            )?;
13407
13408            _prev_end_offset = cur_offset + envelope_size;
13409            if 4 > max_ordinal {
13410                return Ok(());
13411            }
13412
13413            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13414            // are envelope_size bytes.
13415            let cur_offset: usize = (4 - 1) * envelope_size;
13416
13417            // Zero reserved fields.
13418            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13419
13420            // Safety:
13421            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13422            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13423            //   envelope_size bytes, there is always sufficient room.
13424            fidl::encoding::encode_in_envelope_optional::<u32, D>(
13425                self.dtim_period.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
13426                encoder,
13427                offset + cur_offset,
13428                depth,
13429            )?;
13430
13431            _prev_end_offset = cur_offset + envelope_size;
13432            if 5 > max_ordinal {
13433                return Ok(());
13434            }
13435
13436            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13437            // are envelope_size bytes.
13438            let cur_offset: usize = (5 - 1) * envelope_size;
13439
13440            // Zero reserved fields.
13441            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13442
13443            // Safety:
13444            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13445            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13446            //   envelope_size bytes, there is always sufficient room.
13447            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, D>(
13448            self.primary.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber as fidl::encoding::ValueTypeMarker>::borrow),
13449            encoder, offset + cur_offset, depth
13450        )?;
13451
13452            _prev_end_offset = cur_offset + envelope_size;
13453            if 6 > max_ordinal {
13454                return Ok(());
13455            }
13456
13457            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13458            // are envelope_size bytes.
13459            let cur_offset: usize = (6 - 1) * envelope_size;
13460
13461            // Zero reserved fields.
13462            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13463
13464            // Safety:
13465            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13466            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13467            //   envelope_size bytes, there is always sufficient room.
13468            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 257>, D>(
13469                self.rsne.as_ref().map(
13470                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::ValueTypeMarker>::borrow,
13471                ),
13472                encoder,
13473                offset + cur_offset,
13474                depth,
13475            )?;
13476
13477            _prev_end_offset = cur_offset + envelope_size;
13478            if 7 > max_ordinal {
13479                return Ok(());
13480            }
13481
13482            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13483            // are envelope_size bytes.
13484            let cur_offset: usize = (7 - 1) * envelope_size;
13485
13486            // Zero reserved fields.
13487            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13488
13489            // Safety:
13490            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13491            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13492            //   envelope_size bytes, there is always sufficient room.
13493            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 514>, D>(
13494                self.vendor_ie.as_ref().map(
13495                    <fidl::encoding::Vector<u8, 514> as fidl::encoding::ValueTypeMarker>::borrow,
13496                ),
13497                encoder,
13498                offset + cur_offset,
13499                depth,
13500            )?;
13501
13502            _prev_end_offset = cur_offset + envelope_size;
13503
13504            Ok(())
13505        }
13506    }
13507
13508    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
13509        for WlanFullmacImplStartBssRequest
13510    {
13511        #[inline(always)]
13512        fn new_empty() -> Self {
13513            Self::default()
13514        }
13515
13516        unsafe fn decode(
13517            &mut self,
13518            decoder: &mut fidl::encoding::Decoder<'_, D>,
13519            offset: usize,
13520            mut depth: fidl::encoding::Depth,
13521        ) -> fidl::Result<()> {
13522            decoder.debug_check_bounds::<Self>(offset);
13523            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13524                None => return Err(fidl::Error::NotNullable),
13525                Some(len) => len,
13526            };
13527            // Calling decoder.out_of_line_offset(0) is not allowed.
13528            if len == 0 {
13529                return Ok(());
13530            };
13531            depth.increment()?;
13532            let envelope_size = 8;
13533            let bytes_len = len * envelope_size;
13534            let offset = decoder.out_of_line_offset(bytes_len)?;
13535            // Decode the envelope for each type.
13536            let mut _next_ordinal_to_read = 0;
13537            let mut next_offset = offset;
13538            let end_offset = offset + bytes_len;
13539            _next_ordinal_to_read += 1;
13540            if next_offset >= end_offset {
13541                return Ok(());
13542            }
13543
13544            // Decode unknown envelopes for gaps in ordinals.
13545            while _next_ordinal_to_read < 1 {
13546                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13547                _next_ordinal_to_read += 1;
13548                next_offset += envelope_size;
13549            }
13550
13551            let next_out_of_line = decoder.next_out_of_line();
13552            let handles_before = decoder.remaining_handles();
13553            if let Some((inlined, num_bytes, num_handles)) =
13554                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13555            {
13556                let member_inline_size =
13557                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
13558                        decoder.context,
13559                    );
13560                if inlined != (member_inline_size <= 4) {
13561                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13562                }
13563                let inner_offset;
13564                let mut inner_depth = depth.clone();
13565                if inlined {
13566                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13567                    inner_offset = next_offset;
13568                } else {
13569                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13570                    inner_depth.increment()?;
13571                }
13572                let val_ref = self
13573                    .ssid
13574                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
13575                fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
13576                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13577                {
13578                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13579                }
13580                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13581                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13582                }
13583            }
13584
13585            next_offset += envelope_size;
13586            _next_ordinal_to_read += 1;
13587            if next_offset >= end_offset {
13588                return Ok(());
13589            }
13590
13591            // Decode unknown envelopes for gaps in ordinals.
13592            while _next_ordinal_to_read < 2 {
13593                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13594                _next_ordinal_to_read += 1;
13595                next_offset += envelope_size;
13596            }
13597
13598            let next_out_of_line = decoder.next_out_of_line();
13599            let handles_before = decoder.remaining_handles();
13600            if let Some((inlined, num_bytes, num_handles)) =
13601                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13602            {
13603                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::BssType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13604                if inlined != (member_inline_size <= 4) {
13605                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13606                }
13607                let inner_offset;
13608                let mut inner_depth = depth.clone();
13609                if inlined {
13610                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13611                    inner_offset = next_offset;
13612                } else {
13613                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13614                    inner_depth.increment()?;
13615                }
13616                let val_ref = self.bss_type.get_or_insert_with(|| {
13617                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::BssType, D)
13618                });
13619                fidl::decode!(
13620                    fidl_fuchsia_wlan_ieee80211_common::BssType,
13621                    D,
13622                    val_ref,
13623                    decoder,
13624                    inner_offset,
13625                    inner_depth
13626                )?;
13627                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13628                {
13629                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13630                }
13631                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13632                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13633                }
13634            }
13635
13636            next_offset += envelope_size;
13637            _next_ordinal_to_read += 1;
13638            if next_offset >= end_offset {
13639                return Ok(());
13640            }
13641
13642            // Decode unknown envelopes for gaps in ordinals.
13643            while _next_ordinal_to_read < 3 {
13644                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13645                _next_ordinal_to_read += 1;
13646                next_offset += envelope_size;
13647            }
13648
13649            let next_out_of_line = decoder.next_out_of_line();
13650            let handles_before = decoder.remaining_handles();
13651            if let Some((inlined, num_bytes, num_handles)) =
13652                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13653            {
13654                let member_inline_size =
13655                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13656                if inlined != (member_inline_size <= 4) {
13657                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13658                }
13659                let inner_offset;
13660                let mut inner_depth = depth.clone();
13661                if inlined {
13662                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13663                    inner_offset = next_offset;
13664                } else {
13665                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13666                    inner_depth.increment()?;
13667                }
13668                let val_ref = self.beacon_period.get_or_insert_with(|| fidl::new_empty!(u32, D));
13669                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
13670                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13671                {
13672                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13673                }
13674                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13675                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13676                }
13677            }
13678
13679            next_offset += envelope_size;
13680            _next_ordinal_to_read += 1;
13681            if next_offset >= end_offset {
13682                return Ok(());
13683            }
13684
13685            // Decode unknown envelopes for gaps in ordinals.
13686            while _next_ordinal_to_read < 4 {
13687                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13688                _next_ordinal_to_read += 1;
13689                next_offset += envelope_size;
13690            }
13691
13692            let next_out_of_line = decoder.next_out_of_line();
13693            let handles_before = decoder.remaining_handles();
13694            if let Some((inlined, num_bytes, num_handles)) =
13695                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13696            {
13697                let member_inline_size =
13698                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13699                if inlined != (member_inline_size <= 4) {
13700                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13701                }
13702                let inner_offset;
13703                let mut inner_depth = depth.clone();
13704                if inlined {
13705                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13706                    inner_offset = next_offset;
13707                } else {
13708                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13709                    inner_depth.increment()?;
13710                }
13711                let val_ref = self.dtim_period.get_or_insert_with(|| fidl::new_empty!(u32, D));
13712                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
13713                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13714                {
13715                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13716                }
13717                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13718                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13719                }
13720            }
13721
13722            next_offset += envelope_size;
13723            _next_ordinal_to_read += 1;
13724            if next_offset >= end_offset {
13725                return Ok(());
13726            }
13727
13728            // Decode unknown envelopes for gaps in ordinals.
13729            while _next_ordinal_to_read < 5 {
13730                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13731                _next_ordinal_to_read += 1;
13732                next_offset += envelope_size;
13733            }
13734
13735            let next_out_of_line = decoder.next_out_of_line();
13736            let handles_before = decoder.remaining_handles();
13737            if let Some((inlined, num_bytes, num_handles)) =
13738                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13739            {
13740                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::ChannelNumber as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13741                if inlined != (member_inline_size <= 4) {
13742                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13743                }
13744                let inner_offset;
13745                let mut inner_depth = depth.clone();
13746                if inlined {
13747                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13748                    inner_offset = next_offset;
13749                } else {
13750                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13751                    inner_depth.increment()?;
13752                }
13753                let val_ref = self.primary.get_or_insert_with(|| {
13754                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, D)
13755                });
13756                fidl::decode!(
13757                    fidl_fuchsia_wlan_ieee80211_common::ChannelNumber,
13758                    D,
13759                    val_ref,
13760                    decoder,
13761                    inner_offset,
13762                    inner_depth
13763                )?;
13764                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13765                {
13766                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13767                }
13768                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13769                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13770                }
13771            }
13772
13773            next_offset += envelope_size;
13774            _next_ordinal_to_read += 1;
13775            if next_offset >= end_offset {
13776                return Ok(());
13777            }
13778
13779            // Decode unknown envelopes for gaps in ordinals.
13780            while _next_ordinal_to_read < 6 {
13781                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13782                _next_ordinal_to_read += 1;
13783                next_offset += envelope_size;
13784            }
13785
13786            let next_out_of_line = decoder.next_out_of_line();
13787            let handles_before = decoder.remaining_handles();
13788            if let Some((inlined, num_bytes, num_handles)) =
13789                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13790            {
13791                let member_inline_size =
13792                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::TypeMarker>::inline_size(
13793                        decoder.context,
13794                    );
13795                if inlined != (member_inline_size <= 4) {
13796                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13797                }
13798                let inner_offset;
13799                let mut inner_depth = depth.clone();
13800                if inlined {
13801                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13802                    inner_offset = next_offset;
13803                } else {
13804                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13805                    inner_depth.increment()?;
13806                }
13807                let val_ref = self
13808                    .rsne
13809                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 257>, D));
13810                fidl::decode!(fidl::encoding::Vector<u8, 257>, D, val_ref, decoder, inner_offset, inner_depth)?;
13811                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13812                {
13813                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13814                }
13815                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13816                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13817                }
13818            }
13819
13820            next_offset += envelope_size;
13821            _next_ordinal_to_read += 1;
13822            if next_offset >= end_offset {
13823                return Ok(());
13824            }
13825
13826            // Decode unknown envelopes for gaps in ordinals.
13827            while _next_ordinal_to_read < 7 {
13828                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13829                _next_ordinal_to_read += 1;
13830                next_offset += envelope_size;
13831            }
13832
13833            let next_out_of_line = decoder.next_out_of_line();
13834            let handles_before = decoder.remaining_handles();
13835            if let Some((inlined, num_bytes, num_handles)) =
13836                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13837            {
13838                let member_inline_size =
13839                    <fidl::encoding::Vector<u8, 514> as fidl::encoding::TypeMarker>::inline_size(
13840                        decoder.context,
13841                    );
13842                if inlined != (member_inline_size <= 4) {
13843                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13844                }
13845                let inner_offset;
13846                let mut inner_depth = depth.clone();
13847                if inlined {
13848                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13849                    inner_offset = next_offset;
13850                } else {
13851                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13852                    inner_depth.increment()?;
13853                }
13854                let val_ref = self
13855                    .vendor_ie
13856                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 514>, D));
13857                fidl::decode!(fidl::encoding::Vector<u8, 514>, D, val_ref, decoder, inner_offset, inner_depth)?;
13858                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13859                {
13860                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13861                }
13862                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13863                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13864                }
13865            }
13866
13867            next_offset += envelope_size;
13868
13869            // Decode the remaining unknown envelopes.
13870            while next_offset < end_offset {
13871                _next_ordinal_to_read += 1;
13872                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13873                next_offset += envelope_size;
13874            }
13875
13876            Ok(())
13877        }
13878    }
13879
13880    impl WlanFullmacImplStartScanRequest {
13881        #[inline(always)]
13882        fn max_ordinal_present(&self) -> u64 {
13883            if let Some(_) = self.max_channel_time {
13884                return 6;
13885            }
13886            if let Some(_) = self.min_channel_time {
13887                return 5;
13888            }
13889            if let Some(_) = self.ssids {
13890                return 4;
13891            }
13892            if let Some(_) = self.channels {
13893                return 3;
13894            }
13895            if let Some(_) = self.scan_type {
13896                return 2;
13897            }
13898            if let Some(_) = self.txn_id {
13899                return 1;
13900            }
13901            0
13902        }
13903    }
13904
13905    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplStartScanRequest {
13906        type Borrowed<'a> = &'a Self;
13907        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13908            value
13909        }
13910    }
13911
13912    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplStartScanRequest {
13913        type Owned = Self;
13914
13915        #[inline(always)]
13916        fn inline_align(_context: fidl::encoding::Context) -> usize {
13917            8
13918        }
13919
13920        #[inline(always)]
13921        fn inline_size(_context: fidl::encoding::Context) -> usize {
13922            16
13923        }
13924    }
13925
13926    unsafe impl<D: fidl::encoding::ResourceDialect>
13927        fidl::encoding::Encode<WlanFullmacImplStartScanRequest, D>
13928        for &WlanFullmacImplStartScanRequest
13929    {
13930        unsafe fn encode(
13931            self,
13932            encoder: &mut fidl::encoding::Encoder<'_, D>,
13933            offset: usize,
13934            mut depth: fidl::encoding::Depth,
13935        ) -> fidl::Result<()> {
13936            encoder.debug_check_bounds::<WlanFullmacImplStartScanRequest>(offset);
13937            // Vector header
13938            let max_ordinal: u64 = self.max_ordinal_present();
13939            encoder.write_num(max_ordinal, offset);
13940            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13941            // Calling encoder.out_of_line_offset(0) is not allowed.
13942            if max_ordinal == 0 {
13943                return Ok(());
13944            }
13945            depth.increment()?;
13946            let envelope_size = 8;
13947            let bytes_len = max_ordinal as usize * envelope_size;
13948            #[allow(unused_variables)]
13949            let offset = encoder.out_of_line_offset(bytes_len);
13950            let mut _prev_end_offset: usize = 0;
13951            if 1 > max_ordinal {
13952                return Ok(());
13953            }
13954
13955            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13956            // are envelope_size bytes.
13957            let cur_offset: usize = (1 - 1) * envelope_size;
13958
13959            // Zero reserved fields.
13960            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13961
13962            // Safety:
13963            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13964            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13965            //   envelope_size bytes, there is always sufficient room.
13966            fidl::encoding::encode_in_envelope_optional::<u64, D>(
13967                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
13968                encoder,
13969                offset + cur_offset,
13970                depth,
13971            )?;
13972
13973            _prev_end_offset = cur_offset + envelope_size;
13974            if 2 > max_ordinal {
13975                return Ok(());
13976            }
13977
13978            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13979            // are envelope_size bytes.
13980            let cur_offset: usize = (2 - 1) * envelope_size;
13981
13982            // Zero reserved fields.
13983            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13984
13985            // Safety:
13986            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13987            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13988            //   envelope_size bytes, there is always sufficient room.
13989            fidl::encoding::encode_in_envelope_optional::<WlanScanType, D>(
13990                self.scan_type
13991                    .as_ref()
13992                    .map(<WlanScanType as fidl::encoding::ValueTypeMarker>::borrow),
13993                encoder,
13994                offset + cur_offset,
13995                depth,
13996            )?;
13997
13998            _prev_end_offset = cur_offset + envelope_size;
13999            if 3 > max_ordinal {
14000                return Ok(());
14001            }
14002
14003            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14004            // are envelope_size bytes.
14005            let cur_offset: usize = (3 - 1) * envelope_size;
14006
14007            // Zero reserved fields.
14008            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14009
14010            // Safety:
14011            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14012            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14013            //   envelope_size bytes, there is always sufficient room.
14014            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, 256>, D>(
14015            self.channels.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, 256> as fidl::encoding::ValueTypeMarker>::borrow),
14016            encoder, offset + cur_offset, depth
14017        )?;
14018
14019            _prev_end_offset = cur_offset + envelope_size;
14020            if 4 > max_ordinal {
14021                return Ok(());
14022            }
14023
14024            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14025            // are envelope_size bytes.
14026            let cur_offset: usize = (4 - 1) * envelope_size;
14027
14028            // Zero reserved fields.
14029            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14030
14031            // Safety:
14032            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14033            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14034            //   envelope_size bytes, there is always sufficient room.
14035            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>, D>(
14036            self.ssids.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>> as fidl::encoding::ValueTypeMarker>::borrow),
14037            encoder, offset + cur_offset, depth
14038        )?;
14039
14040            _prev_end_offset = cur_offset + envelope_size;
14041            if 5 > max_ordinal {
14042                return Ok(());
14043            }
14044
14045            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14046            // are envelope_size bytes.
14047            let cur_offset: usize = (5 - 1) * envelope_size;
14048
14049            // Zero reserved fields.
14050            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14051
14052            // Safety:
14053            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14054            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14055            //   envelope_size bytes, there is always sufficient room.
14056            fidl::encoding::encode_in_envelope_optional::<u32, D>(
14057                self.min_channel_time
14058                    .as_ref()
14059                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
14060                encoder,
14061                offset + cur_offset,
14062                depth,
14063            )?;
14064
14065            _prev_end_offset = cur_offset + envelope_size;
14066            if 6 > max_ordinal {
14067                return Ok(());
14068            }
14069
14070            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14071            // are envelope_size bytes.
14072            let cur_offset: usize = (6 - 1) * envelope_size;
14073
14074            // Zero reserved fields.
14075            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14076
14077            // Safety:
14078            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14079            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14080            //   envelope_size bytes, there is always sufficient room.
14081            fidl::encoding::encode_in_envelope_optional::<u32, D>(
14082                self.max_channel_time
14083                    .as_ref()
14084                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
14085                encoder,
14086                offset + cur_offset,
14087                depth,
14088            )?;
14089
14090            _prev_end_offset = cur_offset + envelope_size;
14091
14092            Ok(())
14093        }
14094    }
14095
14096    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14097        for WlanFullmacImplStartScanRequest
14098    {
14099        #[inline(always)]
14100        fn new_empty() -> Self {
14101            Self::default()
14102        }
14103
14104        unsafe fn decode(
14105            &mut self,
14106            decoder: &mut fidl::encoding::Decoder<'_, D>,
14107            offset: usize,
14108            mut depth: fidl::encoding::Depth,
14109        ) -> fidl::Result<()> {
14110            decoder.debug_check_bounds::<Self>(offset);
14111            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14112                None => return Err(fidl::Error::NotNullable),
14113                Some(len) => len,
14114            };
14115            // Calling decoder.out_of_line_offset(0) is not allowed.
14116            if len == 0 {
14117                return Ok(());
14118            };
14119            depth.increment()?;
14120            let envelope_size = 8;
14121            let bytes_len = len * envelope_size;
14122            let offset = decoder.out_of_line_offset(bytes_len)?;
14123            // Decode the envelope for each type.
14124            let mut _next_ordinal_to_read = 0;
14125            let mut next_offset = offset;
14126            let end_offset = offset + bytes_len;
14127            _next_ordinal_to_read += 1;
14128            if next_offset >= end_offset {
14129                return Ok(());
14130            }
14131
14132            // Decode unknown envelopes for gaps in ordinals.
14133            while _next_ordinal_to_read < 1 {
14134                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14135                _next_ordinal_to_read += 1;
14136                next_offset += envelope_size;
14137            }
14138
14139            let next_out_of_line = decoder.next_out_of_line();
14140            let handles_before = decoder.remaining_handles();
14141            if let Some((inlined, num_bytes, num_handles)) =
14142                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14143            {
14144                let member_inline_size =
14145                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14146                if inlined != (member_inline_size <= 4) {
14147                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14148                }
14149                let inner_offset;
14150                let mut inner_depth = depth.clone();
14151                if inlined {
14152                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14153                    inner_offset = next_offset;
14154                } else {
14155                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14156                    inner_depth.increment()?;
14157                }
14158                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
14159                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
14160                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14161                {
14162                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14163                }
14164                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14165                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14166                }
14167            }
14168
14169            next_offset += envelope_size;
14170            _next_ordinal_to_read += 1;
14171            if next_offset >= end_offset {
14172                return Ok(());
14173            }
14174
14175            // Decode unknown envelopes for gaps in ordinals.
14176            while _next_ordinal_to_read < 2 {
14177                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14178                _next_ordinal_to_read += 1;
14179                next_offset += envelope_size;
14180            }
14181
14182            let next_out_of_line = decoder.next_out_of_line();
14183            let handles_before = decoder.remaining_handles();
14184            if let Some((inlined, num_bytes, num_handles)) =
14185                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14186            {
14187                let member_inline_size =
14188                    <WlanScanType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14189                if inlined != (member_inline_size <= 4) {
14190                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14191                }
14192                let inner_offset;
14193                let mut inner_depth = depth.clone();
14194                if inlined {
14195                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14196                    inner_offset = next_offset;
14197                } else {
14198                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14199                    inner_depth.increment()?;
14200                }
14201                let val_ref =
14202                    self.scan_type.get_or_insert_with(|| fidl::new_empty!(WlanScanType, D));
14203                fidl::decode!(WlanScanType, D, val_ref, decoder, inner_offset, inner_depth)?;
14204                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14205                {
14206                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14207                }
14208                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14209                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14210                }
14211            }
14212
14213            next_offset += envelope_size;
14214            _next_ordinal_to_read += 1;
14215            if next_offset >= end_offset {
14216                return Ok(());
14217            }
14218
14219            // Decode unknown envelopes for gaps in ordinals.
14220            while _next_ordinal_to_read < 3 {
14221                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14222                _next_ordinal_to_read += 1;
14223                next_offset += envelope_size;
14224            }
14225
14226            let next_out_of_line = decoder.next_out_of_line();
14227            let handles_before = decoder.remaining_handles();
14228            if let Some((inlined, num_bytes, num_handles)) =
14229                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14230            {
14231                let member_inline_size = <fidl::encoding::Vector<
14232                    fidl_fuchsia_wlan_ieee80211_common::ChannelNumber,
14233                    256,
14234                > as fidl::encoding::TypeMarker>::inline_size(
14235                    decoder.context
14236                );
14237                if inlined != (member_inline_size <= 4) {
14238                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14239                }
14240                let inner_offset;
14241                let mut inner_depth = depth.clone();
14242                if inlined {
14243                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14244                    inner_offset = next_offset;
14245                } else {
14246                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14247                    inner_depth.increment()?;
14248                }
14249                let val_ref =
14250                self.channels.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, 256>, D));
14251                fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, 256>, D, val_ref, decoder, inner_offset, inner_depth)?;
14252                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14253                {
14254                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14255                }
14256                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14257                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14258                }
14259            }
14260
14261            next_offset += envelope_size;
14262            _next_ordinal_to_read += 1;
14263            if next_offset >= end_offset {
14264                return Ok(());
14265            }
14266
14267            // Decode unknown envelopes for gaps in ordinals.
14268            while _next_ordinal_to_read < 4 {
14269                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14270                _next_ordinal_to_read += 1;
14271                next_offset += envelope_size;
14272            }
14273
14274            let next_out_of_line = decoder.next_out_of_line();
14275            let handles_before = decoder.remaining_handles();
14276            if let Some((inlined, num_bytes, num_handles)) =
14277                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14278            {
14279                let member_inline_size = <fidl::encoding::UnboundedVector<
14280                    fidl::encoding::Vector<u8, 32>,
14281                > as fidl::encoding::TypeMarker>::inline_size(
14282                    decoder.context
14283                );
14284                if inlined != (member_inline_size <= 4) {
14285                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14286                }
14287                let inner_offset;
14288                let mut inner_depth = depth.clone();
14289                if inlined {
14290                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14291                    inner_offset = next_offset;
14292                } else {
14293                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14294                    inner_depth.increment()?;
14295                }
14296                let val_ref = self.ssids.get_or_insert_with(|| {
14297                    fidl::new_empty!(
14298                        fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>,
14299                        D
14300                    )
14301                });
14302                fidl::decode!(
14303                    fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>,
14304                    D,
14305                    val_ref,
14306                    decoder,
14307                    inner_offset,
14308                    inner_depth
14309                )?;
14310                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14311                {
14312                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14313                }
14314                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14315                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14316                }
14317            }
14318
14319            next_offset += envelope_size;
14320            _next_ordinal_to_read += 1;
14321            if next_offset >= end_offset {
14322                return Ok(());
14323            }
14324
14325            // Decode unknown envelopes for gaps in ordinals.
14326            while _next_ordinal_to_read < 5 {
14327                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14328                _next_ordinal_to_read += 1;
14329                next_offset += envelope_size;
14330            }
14331
14332            let next_out_of_line = decoder.next_out_of_line();
14333            let handles_before = decoder.remaining_handles();
14334            if let Some((inlined, num_bytes, num_handles)) =
14335                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14336            {
14337                let member_inline_size =
14338                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14339                if inlined != (member_inline_size <= 4) {
14340                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14341                }
14342                let inner_offset;
14343                let mut inner_depth = depth.clone();
14344                if inlined {
14345                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14346                    inner_offset = next_offset;
14347                } else {
14348                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14349                    inner_depth.increment()?;
14350                }
14351                let val_ref = self.min_channel_time.get_or_insert_with(|| fidl::new_empty!(u32, D));
14352                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
14353                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14354                {
14355                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14356                }
14357                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14358                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14359                }
14360            }
14361
14362            next_offset += envelope_size;
14363            _next_ordinal_to_read += 1;
14364            if next_offset >= end_offset {
14365                return Ok(());
14366            }
14367
14368            // Decode unknown envelopes for gaps in ordinals.
14369            while _next_ordinal_to_read < 6 {
14370                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14371                _next_ordinal_to_read += 1;
14372                next_offset += envelope_size;
14373            }
14374
14375            let next_out_of_line = decoder.next_out_of_line();
14376            let handles_before = decoder.remaining_handles();
14377            if let Some((inlined, num_bytes, num_handles)) =
14378                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14379            {
14380                let member_inline_size =
14381                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14382                if inlined != (member_inline_size <= 4) {
14383                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14384                }
14385                let inner_offset;
14386                let mut inner_depth = depth.clone();
14387                if inlined {
14388                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14389                    inner_offset = next_offset;
14390                } else {
14391                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14392                    inner_depth.increment()?;
14393                }
14394                let val_ref = self.max_channel_time.get_or_insert_with(|| fidl::new_empty!(u32, D));
14395                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
14396                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14397                {
14398                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14399                }
14400                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14401                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14402                }
14403            }
14404
14405            next_offset += envelope_size;
14406
14407            // Decode the remaining unknown envelopes.
14408            while next_offset < end_offset {
14409                _next_ordinal_to_read += 1;
14410                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14411                next_offset += envelope_size;
14412            }
14413
14414            Ok(())
14415        }
14416    }
14417
14418    impl WlanFullmacImplStartScheduledScanRequest {
14419        #[inline(always)]
14420        fn max_ordinal_present(&self) -> u64 {
14421            if let Some(_) = self.req {
14422                return 2;
14423            }
14424            if let Some(_) = self.txn_id {
14425                return 1;
14426            }
14427            0
14428        }
14429    }
14430
14431    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplStartScheduledScanRequest {
14432        type Borrowed<'a> = &'a Self;
14433        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14434            value
14435        }
14436    }
14437
14438    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplStartScheduledScanRequest {
14439        type Owned = Self;
14440
14441        #[inline(always)]
14442        fn inline_align(_context: fidl::encoding::Context) -> usize {
14443            8
14444        }
14445
14446        #[inline(always)]
14447        fn inline_size(_context: fidl::encoding::Context) -> usize {
14448            16
14449        }
14450    }
14451
14452    unsafe impl<D: fidl::encoding::ResourceDialect>
14453        fidl::encoding::Encode<WlanFullmacImplStartScheduledScanRequest, D>
14454        for &WlanFullmacImplStartScheduledScanRequest
14455    {
14456        unsafe fn encode(
14457            self,
14458            encoder: &mut fidl::encoding::Encoder<'_, D>,
14459            offset: usize,
14460            mut depth: fidl::encoding::Depth,
14461        ) -> fidl::Result<()> {
14462            encoder.debug_check_bounds::<WlanFullmacImplStartScheduledScanRequest>(offset);
14463            // Vector header
14464            let max_ordinal: u64 = self.max_ordinal_present();
14465            encoder.write_num(max_ordinal, offset);
14466            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14467            // Calling encoder.out_of_line_offset(0) is not allowed.
14468            if max_ordinal == 0 {
14469                return Ok(());
14470            }
14471            depth.increment()?;
14472            let envelope_size = 8;
14473            let bytes_len = max_ordinal as usize * envelope_size;
14474            #[allow(unused_variables)]
14475            let offset = encoder.out_of_line_offset(bytes_len);
14476            let mut _prev_end_offset: usize = 0;
14477            if 1 > max_ordinal {
14478                return Ok(());
14479            }
14480
14481            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14482            // are envelope_size bytes.
14483            let cur_offset: usize = (1 - 1) * envelope_size;
14484
14485            // Zero reserved fields.
14486            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14487
14488            // Safety:
14489            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14490            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14491            //   envelope_size bytes, there is always sufficient room.
14492            fidl::encoding::encode_in_envelope_optional::<u64, D>(
14493                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
14494                encoder,
14495                offset + cur_offset,
14496                depth,
14497            )?;
14498
14499            _prev_end_offset = cur_offset + envelope_size;
14500            if 2 > max_ordinal {
14501                return Ok(());
14502            }
14503
14504            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14505            // are envelope_size bytes.
14506            let cur_offset: usize = (2 - 1) * envelope_size;
14507
14508            // Zero reserved fields.
14509            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14510
14511            // Safety:
14512            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14513            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14514            //   envelope_size bytes, there is always sufficient room.
14515            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common_common::ScheduledScanRequest, D>(
14516            self.req.as_ref().map(<fidl_fuchsia_wlan_common_common::ScheduledScanRequest as fidl::encoding::ValueTypeMarker>::borrow),
14517            encoder, offset + cur_offset, depth
14518        )?;
14519
14520            _prev_end_offset = cur_offset + envelope_size;
14521
14522            Ok(())
14523        }
14524    }
14525
14526    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14527        for WlanFullmacImplStartScheduledScanRequest
14528    {
14529        #[inline(always)]
14530        fn new_empty() -> Self {
14531            Self::default()
14532        }
14533
14534        unsafe fn decode(
14535            &mut self,
14536            decoder: &mut fidl::encoding::Decoder<'_, D>,
14537            offset: usize,
14538            mut depth: fidl::encoding::Depth,
14539        ) -> fidl::Result<()> {
14540            decoder.debug_check_bounds::<Self>(offset);
14541            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14542                None => return Err(fidl::Error::NotNullable),
14543                Some(len) => len,
14544            };
14545            // Calling decoder.out_of_line_offset(0) is not allowed.
14546            if len == 0 {
14547                return Ok(());
14548            };
14549            depth.increment()?;
14550            let envelope_size = 8;
14551            let bytes_len = len * envelope_size;
14552            let offset = decoder.out_of_line_offset(bytes_len)?;
14553            // Decode the envelope for each type.
14554            let mut _next_ordinal_to_read = 0;
14555            let mut next_offset = offset;
14556            let end_offset = offset + bytes_len;
14557            _next_ordinal_to_read += 1;
14558            if next_offset >= end_offset {
14559                return Ok(());
14560            }
14561
14562            // Decode unknown envelopes for gaps in ordinals.
14563            while _next_ordinal_to_read < 1 {
14564                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14565                _next_ordinal_to_read += 1;
14566                next_offset += envelope_size;
14567            }
14568
14569            let next_out_of_line = decoder.next_out_of_line();
14570            let handles_before = decoder.remaining_handles();
14571            if let Some((inlined, num_bytes, num_handles)) =
14572                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14573            {
14574                let member_inline_size =
14575                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14576                if inlined != (member_inline_size <= 4) {
14577                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14578                }
14579                let inner_offset;
14580                let mut inner_depth = depth.clone();
14581                if inlined {
14582                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14583                    inner_offset = next_offset;
14584                } else {
14585                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14586                    inner_depth.increment()?;
14587                }
14588                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
14589                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
14590                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14591                {
14592                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14593                }
14594                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14595                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14596                }
14597            }
14598
14599            next_offset += envelope_size;
14600            _next_ordinal_to_read += 1;
14601            if next_offset >= end_offset {
14602                return Ok(());
14603            }
14604
14605            // Decode unknown envelopes for gaps in ordinals.
14606            while _next_ordinal_to_read < 2 {
14607                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14608                _next_ordinal_to_read += 1;
14609                next_offset += envelope_size;
14610            }
14611
14612            let next_out_of_line = decoder.next_out_of_line();
14613            let handles_before = decoder.remaining_handles();
14614            if let Some((inlined, num_bytes, num_handles)) =
14615                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14616            {
14617                let member_inline_size = <fidl_fuchsia_wlan_common_common::ScheduledScanRequest as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14618                if inlined != (member_inline_size <= 4) {
14619                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14620                }
14621                let inner_offset;
14622                let mut inner_depth = depth.clone();
14623                if inlined {
14624                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14625                    inner_offset = next_offset;
14626                } else {
14627                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14628                    inner_depth.increment()?;
14629                }
14630                let val_ref = self.req.get_or_insert_with(|| {
14631                    fidl::new_empty!(fidl_fuchsia_wlan_common_common::ScheduledScanRequest, D)
14632                });
14633                fidl::decode!(
14634                    fidl_fuchsia_wlan_common_common::ScheduledScanRequest,
14635                    D,
14636                    val_ref,
14637                    decoder,
14638                    inner_offset,
14639                    inner_depth
14640                )?;
14641                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14642                {
14643                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14644                }
14645                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14646                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14647                }
14648            }
14649
14650            next_offset += envelope_size;
14651
14652            // Decode the remaining unknown envelopes.
14653            while next_offset < end_offset {
14654                _next_ordinal_to_read += 1;
14655                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14656                next_offset += envelope_size;
14657            }
14658
14659            Ok(())
14660        }
14661    }
14662
14663    impl WlanFullmacImplStopBssRequest {
14664        #[inline(always)]
14665        fn max_ordinal_present(&self) -> u64 {
14666            if let Some(_) = self.ssid {
14667                return 1;
14668            }
14669            0
14670        }
14671    }
14672
14673    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplStopBssRequest {
14674        type Borrowed<'a> = &'a Self;
14675        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14676            value
14677        }
14678    }
14679
14680    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplStopBssRequest {
14681        type Owned = Self;
14682
14683        #[inline(always)]
14684        fn inline_align(_context: fidl::encoding::Context) -> usize {
14685            8
14686        }
14687
14688        #[inline(always)]
14689        fn inline_size(_context: fidl::encoding::Context) -> usize {
14690            16
14691        }
14692    }
14693
14694    unsafe impl<D: fidl::encoding::ResourceDialect>
14695        fidl::encoding::Encode<WlanFullmacImplStopBssRequest, D>
14696        for &WlanFullmacImplStopBssRequest
14697    {
14698        unsafe fn encode(
14699            self,
14700            encoder: &mut fidl::encoding::Encoder<'_, D>,
14701            offset: usize,
14702            mut depth: fidl::encoding::Depth,
14703        ) -> fidl::Result<()> {
14704            encoder.debug_check_bounds::<WlanFullmacImplStopBssRequest>(offset);
14705            // Vector header
14706            let max_ordinal: u64 = self.max_ordinal_present();
14707            encoder.write_num(max_ordinal, offset);
14708            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14709            // Calling encoder.out_of_line_offset(0) is not allowed.
14710            if max_ordinal == 0 {
14711                return Ok(());
14712            }
14713            depth.increment()?;
14714            let envelope_size = 8;
14715            let bytes_len = max_ordinal as usize * envelope_size;
14716            #[allow(unused_variables)]
14717            let offset = encoder.out_of_line_offset(bytes_len);
14718            let mut _prev_end_offset: usize = 0;
14719            if 1 > max_ordinal {
14720                return Ok(());
14721            }
14722
14723            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14724            // are envelope_size bytes.
14725            let cur_offset: usize = (1 - 1) * envelope_size;
14726
14727            // Zero reserved fields.
14728            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14729
14730            // Safety:
14731            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14732            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14733            //   envelope_size bytes, there is always sufficient room.
14734            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
14735                self.ssid.as_ref().map(
14736                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
14737                ),
14738                encoder,
14739                offset + cur_offset,
14740                depth,
14741            )?;
14742
14743            _prev_end_offset = cur_offset + envelope_size;
14744
14745            Ok(())
14746        }
14747    }
14748
14749    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14750        for WlanFullmacImplStopBssRequest
14751    {
14752        #[inline(always)]
14753        fn new_empty() -> Self {
14754            Self::default()
14755        }
14756
14757        unsafe fn decode(
14758            &mut self,
14759            decoder: &mut fidl::encoding::Decoder<'_, D>,
14760            offset: usize,
14761            mut depth: fidl::encoding::Depth,
14762        ) -> fidl::Result<()> {
14763            decoder.debug_check_bounds::<Self>(offset);
14764            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14765                None => return Err(fidl::Error::NotNullable),
14766                Some(len) => len,
14767            };
14768            // Calling decoder.out_of_line_offset(0) is not allowed.
14769            if len == 0 {
14770                return Ok(());
14771            };
14772            depth.increment()?;
14773            let envelope_size = 8;
14774            let bytes_len = len * envelope_size;
14775            let offset = decoder.out_of_line_offset(bytes_len)?;
14776            // Decode the envelope for each type.
14777            let mut _next_ordinal_to_read = 0;
14778            let mut next_offset = offset;
14779            let end_offset = offset + bytes_len;
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 < 1 {
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                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
14799                        decoder.context,
14800                    );
14801                if inlined != (member_inline_size <= 4) {
14802                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14803                }
14804                let inner_offset;
14805                let mut inner_depth = depth.clone();
14806                if inlined {
14807                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14808                    inner_offset = next_offset;
14809                } else {
14810                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14811                    inner_depth.increment()?;
14812                }
14813                let val_ref = self
14814                    .ssid
14815                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
14816                fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
14817                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14818                {
14819                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14820                }
14821                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14822                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14823                }
14824            }
14825
14826            next_offset += envelope_size;
14827
14828            // Decode the remaining unknown envelopes.
14829            while next_offset < end_offset {
14830                _next_ordinal_to_read += 1;
14831                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14832                next_offset += envelope_size;
14833            }
14834
14835            Ok(())
14836        }
14837    }
14838
14839    impl WlanFullmacImplStopScheduledScanRequest {
14840        #[inline(always)]
14841        fn max_ordinal_present(&self) -> u64 {
14842            if let Some(_) = self.txn_id {
14843                return 1;
14844            }
14845            0
14846        }
14847    }
14848
14849    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplStopScheduledScanRequest {
14850        type Borrowed<'a> = &'a Self;
14851        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14852            value
14853        }
14854    }
14855
14856    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplStopScheduledScanRequest {
14857        type Owned = Self;
14858
14859        #[inline(always)]
14860        fn inline_align(_context: fidl::encoding::Context) -> usize {
14861            8
14862        }
14863
14864        #[inline(always)]
14865        fn inline_size(_context: fidl::encoding::Context) -> usize {
14866            16
14867        }
14868    }
14869
14870    unsafe impl<D: fidl::encoding::ResourceDialect>
14871        fidl::encoding::Encode<WlanFullmacImplStopScheduledScanRequest, D>
14872        for &WlanFullmacImplStopScheduledScanRequest
14873    {
14874        unsafe fn encode(
14875            self,
14876            encoder: &mut fidl::encoding::Encoder<'_, D>,
14877            offset: usize,
14878            mut depth: fidl::encoding::Depth,
14879        ) -> fidl::Result<()> {
14880            encoder.debug_check_bounds::<WlanFullmacImplStopScheduledScanRequest>(offset);
14881            // Vector header
14882            let max_ordinal: u64 = self.max_ordinal_present();
14883            encoder.write_num(max_ordinal, offset);
14884            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14885            // Calling encoder.out_of_line_offset(0) is not allowed.
14886            if max_ordinal == 0 {
14887                return Ok(());
14888            }
14889            depth.increment()?;
14890            let envelope_size = 8;
14891            let bytes_len = max_ordinal as usize * envelope_size;
14892            #[allow(unused_variables)]
14893            let offset = encoder.out_of_line_offset(bytes_len);
14894            let mut _prev_end_offset: usize = 0;
14895            if 1 > max_ordinal {
14896                return Ok(());
14897            }
14898
14899            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14900            // are envelope_size bytes.
14901            let cur_offset: usize = (1 - 1) * envelope_size;
14902
14903            // Zero reserved fields.
14904            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14905
14906            // Safety:
14907            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14908            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14909            //   envelope_size bytes, there is always sufficient room.
14910            fidl::encoding::encode_in_envelope_optional::<u64, D>(
14911                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
14912                encoder,
14913                offset + cur_offset,
14914                depth,
14915            )?;
14916
14917            _prev_end_offset = cur_offset + envelope_size;
14918
14919            Ok(())
14920        }
14921    }
14922
14923    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14924        for WlanFullmacImplStopScheduledScanRequest
14925    {
14926        #[inline(always)]
14927        fn new_empty() -> Self {
14928            Self::default()
14929        }
14930
14931        unsafe fn decode(
14932            &mut self,
14933            decoder: &mut fidl::encoding::Decoder<'_, D>,
14934            offset: usize,
14935            mut depth: fidl::encoding::Depth,
14936        ) -> fidl::Result<()> {
14937            decoder.debug_check_bounds::<Self>(offset);
14938            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14939                None => return Err(fidl::Error::NotNullable),
14940                Some(len) => len,
14941            };
14942            // Calling decoder.out_of_line_offset(0) is not allowed.
14943            if len == 0 {
14944                return Ok(());
14945            };
14946            depth.increment()?;
14947            let envelope_size = 8;
14948            let bytes_len = len * envelope_size;
14949            let offset = decoder.out_of_line_offset(bytes_len)?;
14950            // Decode the envelope for each type.
14951            let mut _next_ordinal_to_read = 0;
14952            let mut next_offset = offset;
14953            let end_offset = offset + bytes_len;
14954            _next_ordinal_to_read += 1;
14955            if next_offset >= end_offset {
14956                return Ok(());
14957            }
14958
14959            // Decode unknown envelopes for gaps in ordinals.
14960            while _next_ordinal_to_read < 1 {
14961                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14962                _next_ordinal_to_read += 1;
14963                next_offset += envelope_size;
14964            }
14965
14966            let next_out_of_line = decoder.next_out_of_line();
14967            let handles_before = decoder.remaining_handles();
14968            if let Some((inlined, num_bytes, num_handles)) =
14969                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14970            {
14971                let member_inline_size =
14972                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14973                if inlined != (member_inline_size <= 4) {
14974                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14975                }
14976                let inner_offset;
14977                let mut inner_depth = depth.clone();
14978                if inlined {
14979                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14980                    inner_offset = next_offset;
14981                } else {
14982                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14983                    inner_depth.increment()?;
14984                }
14985                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
14986                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
14987                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14988                {
14989                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14990                }
14991                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14992                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14993                }
14994            }
14995
14996            next_offset += envelope_size;
14997
14998            // Decode the remaining unknown envelopes.
14999            while next_offset < end_offset {
15000                _next_ordinal_to_read += 1;
15001                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15002                next_offset += envelope_size;
15003            }
15004
15005            Ok(())
15006        }
15007    }
15008
15009    impl WlanFullmacImplGetApfPacketFilterEnabledResponse {
15010        #[inline(always)]
15011        fn max_ordinal_present(&self) -> u64 {
15012            if let Some(_) = self.enabled {
15013                return 1;
15014            }
15015            0
15016        }
15017    }
15018
15019    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplGetApfPacketFilterEnabledResponse {
15020        type Borrowed<'a> = &'a Self;
15021        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15022            value
15023        }
15024    }
15025
15026    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplGetApfPacketFilterEnabledResponse {
15027        type Owned = Self;
15028
15029        #[inline(always)]
15030        fn inline_align(_context: fidl::encoding::Context) -> usize {
15031            8
15032        }
15033
15034        #[inline(always)]
15035        fn inline_size(_context: fidl::encoding::Context) -> usize {
15036            16
15037        }
15038    }
15039
15040    unsafe impl<D: fidl::encoding::ResourceDialect>
15041        fidl::encoding::Encode<WlanFullmacImplGetApfPacketFilterEnabledResponse, D>
15042        for &WlanFullmacImplGetApfPacketFilterEnabledResponse
15043    {
15044        unsafe fn encode(
15045            self,
15046            encoder: &mut fidl::encoding::Encoder<'_, D>,
15047            offset: usize,
15048            mut depth: fidl::encoding::Depth,
15049        ) -> fidl::Result<()> {
15050            encoder.debug_check_bounds::<WlanFullmacImplGetApfPacketFilterEnabledResponse>(offset);
15051            // Vector header
15052            let max_ordinal: u64 = self.max_ordinal_present();
15053            encoder.write_num(max_ordinal, offset);
15054            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15055            // Calling encoder.out_of_line_offset(0) is not allowed.
15056            if max_ordinal == 0 {
15057                return Ok(());
15058            }
15059            depth.increment()?;
15060            let envelope_size = 8;
15061            let bytes_len = max_ordinal as usize * envelope_size;
15062            #[allow(unused_variables)]
15063            let offset = encoder.out_of_line_offset(bytes_len);
15064            let mut _prev_end_offset: usize = 0;
15065            if 1 > max_ordinal {
15066                return Ok(());
15067            }
15068
15069            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15070            // are envelope_size bytes.
15071            let cur_offset: usize = (1 - 1) * envelope_size;
15072
15073            // Zero reserved fields.
15074            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15075
15076            // Safety:
15077            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15078            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15079            //   envelope_size bytes, there is always sufficient room.
15080            fidl::encoding::encode_in_envelope_optional::<bool, D>(
15081                self.enabled.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
15082                encoder,
15083                offset + cur_offset,
15084                depth,
15085            )?;
15086
15087            _prev_end_offset = cur_offset + envelope_size;
15088
15089            Ok(())
15090        }
15091    }
15092
15093    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
15094        for WlanFullmacImplGetApfPacketFilterEnabledResponse
15095    {
15096        #[inline(always)]
15097        fn new_empty() -> Self {
15098            Self::default()
15099        }
15100
15101        unsafe fn decode(
15102            &mut self,
15103            decoder: &mut fidl::encoding::Decoder<'_, D>,
15104            offset: usize,
15105            mut depth: fidl::encoding::Depth,
15106        ) -> fidl::Result<()> {
15107            decoder.debug_check_bounds::<Self>(offset);
15108            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15109                None => return Err(fidl::Error::NotNullable),
15110                Some(len) => len,
15111            };
15112            // Calling decoder.out_of_line_offset(0) is not allowed.
15113            if len == 0 {
15114                return Ok(());
15115            };
15116            depth.increment()?;
15117            let envelope_size = 8;
15118            let bytes_len = len * envelope_size;
15119            let offset = decoder.out_of_line_offset(bytes_len)?;
15120            // Decode the envelope for each type.
15121            let mut _next_ordinal_to_read = 0;
15122            let mut next_offset = offset;
15123            let end_offset = offset + bytes_len;
15124            _next_ordinal_to_read += 1;
15125            if next_offset >= end_offset {
15126                return Ok(());
15127            }
15128
15129            // Decode unknown envelopes for gaps in ordinals.
15130            while _next_ordinal_to_read < 1 {
15131                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15132                _next_ordinal_to_read += 1;
15133                next_offset += envelope_size;
15134            }
15135
15136            let next_out_of_line = decoder.next_out_of_line();
15137            let handles_before = decoder.remaining_handles();
15138            if let Some((inlined, num_bytes, num_handles)) =
15139                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15140            {
15141                let member_inline_size =
15142                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15143                if inlined != (member_inline_size <= 4) {
15144                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15145                }
15146                let inner_offset;
15147                let mut inner_depth = depth.clone();
15148                if inlined {
15149                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15150                    inner_offset = next_offset;
15151                } else {
15152                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15153                    inner_depth.increment()?;
15154                }
15155                let val_ref = self.enabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
15156                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
15157                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15158                {
15159                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15160                }
15161                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15162                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15163                }
15164            }
15165
15166            next_offset += envelope_size;
15167
15168            // Decode the remaining unknown envelopes.
15169            while next_offset < end_offset {
15170                _next_ordinal_to_read += 1;
15171                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15172                next_offset += envelope_size;
15173            }
15174
15175            Ok(())
15176        }
15177    }
15178
15179    impl WlanFullmacImplGetScheduledScanEnabledResponse {
15180        #[inline(always)]
15181        fn max_ordinal_present(&self) -> u64 {
15182            if let Some(_) = self.active_txn_ids {
15183                return 1;
15184            }
15185            0
15186        }
15187    }
15188
15189    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplGetScheduledScanEnabledResponse {
15190        type Borrowed<'a> = &'a Self;
15191        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15192            value
15193        }
15194    }
15195
15196    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplGetScheduledScanEnabledResponse {
15197        type Owned = Self;
15198
15199        #[inline(always)]
15200        fn inline_align(_context: fidl::encoding::Context) -> usize {
15201            8
15202        }
15203
15204        #[inline(always)]
15205        fn inline_size(_context: fidl::encoding::Context) -> usize {
15206            16
15207        }
15208    }
15209
15210    unsafe impl<D: fidl::encoding::ResourceDialect>
15211        fidl::encoding::Encode<WlanFullmacImplGetScheduledScanEnabledResponse, D>
15212        for &WlanFullmacImplGetScheduledScanEnabledResponse
15213    {
15214        unsafe fn encode(
15215            self,
15216            encoder: &mut fidl::encoding::Encoder<'_, D>,
15217            offset: usize,
15218            mut depth: fidl::encoding::Depth,
15219        ) -> fidl::Result<()> {
15220            encoder.debug_check_bounds::<WlanFullmacImplGetScheduledScanEnabledResponse>(offset);
15221            // Vector header
15222            let max_ordinal: u64 = self.max_ordinal_present();
15223            encoder.write_num(max_ordinal, offset);
15224            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15225            // Calling encoder.out_of_line_offset(0) is not allowed.
15226            if max_ordinal == 0 {
15227                return Ok(());
15228            }
15229            depth.increment()?;
15230            let envelope_size = 8;
15231            let bytes_len = max_ordinal as usize * envelope_size;
15232            #[allow(unused_variables)]
15233            let offset = encoder.out_of_line_offset(bytes_len);
15234            let mut _prev_end_offset: usize = 0;
15235            if 1 > max_ordinal {
15236                return Ok(());
15237            }
15238
15239            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15240            // are envelope_size bytes.
15241            let cur_offset: usize = (1 - 1) * envelope_size;
15242
15243            // Zero reserved fields.
15244            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15245
15246            // Safety:
15247            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15248            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15249            //   envelope_size bytes, there is always sufficient room.
15250            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u64>, D>(
15251            self.active_txn_ids.as_ref().map(<fidl::encoding::UnboundedVector<u64> as fidl::encoding::ValueTypeMarker>::borrow),
15252            encoder, offset + cur_offset, depth
15253        )?;
15254
15255            _prev_end_offset = cur_offset + envelope_size;
15256
15257            Ok(())
15258        }
15259    }
15260
15261    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
15262        for WlanFullmacImplGetScheduledScanEnabledResponse
15263    {
15264        #[inline(always)]
15265        fn new_empty() -> Self {
15266            Self::default()
15267        }
15268
15269        unsafe fn decode(
15270            &mut self,
15271            decoder: &mut fidl::encoding::Decoder<'_, D>,
15272            offset: usize,
15273            mut depth: fidl::encoding::Depth,
15274        ) -> fidl::Result<()> {
15275            decoder.debug_check_bounds::<Self>(offset);
15276            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15277                None => return Err(fidl::Error::NotNullable),
15278                Some(len) => len,
15279            };
15280            // Calling decoder.out_of_line_offset(0) is not allowed.
15281            if len == 0 {
15282                return Ok(());
15283            };
15284            depth.increment()?;
15285            let envelope_size = 8;
15286            let bytes_len = len * envelope_size;
15287            let offset = decoder.out_of_line_offset(bytes_len)?;
15288            // Decode the envelope for each type.
15289            let mut _next_ordinal_to_read = 0;
15290            let mut next_offset = offset;
15291            let end_offset = offset + bytes_len;
15292            _next_ordinal_to_read += 1;
15293            if next_offset >= end_offset {
15294                return Ok(());
15295            }
15296
15297            // Decode unknown envelopes for gaps in ordinals.
15298            while _next_ordinal_to_read < 1 {
15299                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15300                _next_ordinal_to_read += 1;
15301                next_offset += envelope_size;
15302            }
15303
15304            let next_out_of_line = decoder.next_out_of_line();
15305            let handles_before = decoder.remaining_handles();
15306            if let Some((inlined, num_bytes, num_handles)) =
15307                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15308            {
15309                let member_inline_size = <fidl::encoding::UnboundedVector<u64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15310                if inlined != (member_inline_size <= 4) {
15311                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15312                }
15313                let inner_offset;
15314                let mut inner_depth = depth.clone();
15315                if inlined {
15316                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15317                    inner_offset = next_offset;
15318                } else {
15319                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15320                    inner_depth.increment()?;
15321                }
15322                let val_ref = self.active_txn_ids.get_or_insert_with(|| {
15323                    fidl::new_empty!(fidl::encoding::UnboundedVector<u64>, D)
15324                });
15325                fidl::decode!(
15326                    fidl::encoding::UnboundedVector<u64>,
15327                    D,
15328                    val_ref,
15329                    decoder,
15330                    inner_offset,
15331                    inner_depth
15332                )?;
15333                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15334                {
15335                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15336                }
15337                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15338                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15339                }
15340            }
15341
15342            next_offset += envelope_size;
15343
15344            // Decode the remaining unknown envelopes.
15345            while next_offset < end_offset {
15346                _next_ordinal_to_read += 1;
15347                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15348                next_offset += envelope_size;
15349            }
15350
15351            Ok(())
15352        }
15353    }
15354
15355    impl WlanFullmacImplQueryApfPacketFilterSupportResponse {
15356        #[inline(always)]
15357        fn max_ordinal_present(&self) -> u64 {
15358            if let Some(_) = self.resp {
15359                return 1;
15360            }
15361            0
15362        }
15363    }
15364
15365    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplQueryApfPacketFilterSupportResponse {
15366        type Borrowed<'a> = &'a Self;
15367        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15368            value
15369        }
15370    }
15371
15372    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplQueryApfPacketFilterSupportResponse {
15373        type Owned = Self;
15374
15375        #[inline(always)]
15376        fn inline_align(_context: fidl::encoding::Context) -> usize {
15377            8
15378        }
15379
15380        #[inline(always)]
15381        fn inline_size(_context: fidl::encoding::Context) -> usize {
15382            16
15383        }
15384    }
15385
15386    unsafe impl<D: fidl::encoding::ResourceDialect>
15387        fidl::encoding::Encode<WlanFullmacImplQueryApfPacketFilterSupportResponse, D>
15388        for &WlanFullmacImplQueryApfPacketFilterSupportResponse
15389    {
15390        unsafe fn encode(
15391            self,
15392            encoder: &mut fidl::encoding::Encoder<'_, D>,
15393            offset: usize,
15394            mut depth: fidl::encoding::Depth,
15395        ) -> fidl::Result<()> {
15396            encoder
15397                .debug_check_bounds::<WlanFullmacImplQueryApfPacketFilterSupportResponse>(offset);
15398            // Vector header
15399            let max_ordinal: u64 = self.max_ordinal_present();
15400            encoder.write_num(max_ordinal, offset);
15401            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15402            // Calling encoder.out_of_line_offset(0) is not allowed.
15403            if max_ordinal == 0 {
15404                return Ok(());
15405            }
15406            depth.increment()?;
15407            let envelope_size = 8;
15408            let bytes_len = max_ordinal as usize * envelope_size;
15409            #[allow(unused_variables)]
15410            let offset = encoder.out_of_line_offset(bytes_len);
15411            let mut _prev_end_offset: usize = 0;
15412            if 1 > max_ordinal {
15413                return Ok(());
15414            }
15415
15416            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15417            // are envelope_size bytes.
15418            let cur_offset: usize = (1 - 1) * envelope_size;
15419
15420            // Zero reserved fields.
15421            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15422
15423            // Safety:
15424            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15425            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15426            //   envelope_size bytes, there is always sufficient room.
15427            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common_common::ApfPacketFilterSupport, D>(
15428            self.resp.as_ref().map(<fidl_fuchsia_wlan_common_common::ApfPacketFilterSupport as fidl::encoding::ValueTypeMarker>::borrow),
15429            encoder, offset + cur_offset, depth
15430        )?;
15431
15432            _prev_end_offset = cur_offset + envelope_size;
15433
15434            Ok(())
15435        }
15436    }
15437
15438    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
15439        for WlanFullmacImplQueryApfPacketFilterSupportResponse
15440    {
15441        #[inline(always)]
15442        fn new_empty() -> Self {
15443            Self::default()
15444        }
15445
15446        unsafe fn decode(
15447            &mut self,
15448            decoder: &mut fidl::encoding::Decoder<'_, D>,
15449            offset: usize,
15450            mut depth: fidl::encoding::Depth,
15451        ) -> fidl::Result<()> {
15452            decoder.debug_check_bounds::<Self>(offset);
15453            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15454                None => return Err(fidl::Error::NotNullable),
15455                Some(len) => len,
15456            };
15457            // Calling decoder.out_of_line_offset(0) is not allowed.
15458            if len == 0 {
15459                return Ok(());
15460            };
15461            depth.increment()?;
15462            let envelope_size = 8;
15463            let bytes_len = len * envelope_size;
15464            let offset = decoder.out_of_line_offset(bytes_len)?;
15465            // Decode the envelope for each type.
15466            let mut _next_ordinal_to_read = 0;
15467            let mut next_offset = offset;
15468            let end_offset = offset + bytes_len;
15469            _next_ordinal_to_read += 1;
15470            if next_offset >= end_offset {
15471                return Ok(());
15472            }
15473
15474            // Decode unknown envelopes for gaps in ordinals.
15475            while _next_ordinal_to_read < 1 {
15476                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15477                _next_ordinal_to_read += 1;
15478                next_offset += envelope_size;
15479            }
15480
15481            let next_out_of_line = decoder.next_out_of_line();
15482            let handles_before = decoder.remaining_handles();
15483            if let Some((inlined, num_bytes, num_handles)) =
15484                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15485            {
15486                let member_inline_size = <fidl_fuchsia_wlan_common_common::ApfPacketFilterSupport as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15487                if inlined != (member_inline_size <= 4) {
15488                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15489                }
15490                let inner_offset;
15491                let mut inner_depth = depth.clone();
15492                if inlined {
15493                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15494                    inner_offset = next_offset;
15495                } else {
15496                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15497                    inner_depth.increment()?;
15498                }
15499                let val_ref = self.resp.get_or_insert_with(|| {
15500                    fidl::new_empty!(fidl_fuchsia_wlan_common_common::ApfPacketFilterSupport, D)
15501                });
15502                fidl::decode!(
15503                    fidl_fuchsia_wlan_common_common::ApfPacketFilterSupport,
15504                    D,
15505                    val_ref,
15506                    decoder,
15507                    inner_offset,
15508                    inner_depth
15509                )?;
15510                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15511                {
15512                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15513                }
15514                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15515                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15516                }
15517            }
15518
15519            next_offset += envelope_size;
15520
15521            // Decode the remaining unknown envelopes.
15522            while next_offset < end_offset {
15523                _next_ordinal_to_read += 1;
15524                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15525                next_offset += envelope_size;
15526            }
15527
15528            Ok(())
15529        }
15530    }
15531
15532    impl WlanFullmacImplQuerySecuritySupportResponse {
15533        #[inline(always)]
15534        fn max_ordinal_present(&self) -> u64 {
15535            if let Some(_) = self.resp {
15536                return 1;
15537            }
15538            0
15539        }
15540    }
15541
15542    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplQuerySecuritySupportResponse {
15543        type Borrowed<'a> = &'a Self;
15544        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15545            value
15546        }
15547    }
15548
15549    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplQuerySecuritySupportResponse {
15550        type Owned = Self;
15551
15552        #[inline(always)]
15553        fn inline_align(_context: fidl::encoding::Context) -> usize {
15554            8
15555        }
15556
15557        #[inline(always)]
15558        fn inline_size(_context: fidl::encoding::Context) -> usize {
15559            16
15560        }
15561    }
15562
15563    unsafe impl<D: fidl::encoding::ResourceDialect>
15564        fidl::encoding::Encode<WlanFullmacImplQuerySecuritySupportResponse, D>
15565        for &WlanFullmacImplQuerySecuritySupportResponse
15566    {
15567        unsafe fn encode(
15568            self,
15569            encoder: &mut fidl::encoding::Encoder<'_, D>,
15570            offset: usize,
15571            mut depth: fidl::encoding::Depth,
15572        ) -> fidl::Result<()> {
15573            encoder.debug_check_bounds::<WlanFullmacImplQuerySecuritySupportResponse>(offset);
15574            // Vector header
15575            let max_ordinal: u64 = self.max_ordinal_present();
15576            encoder.write_num(max_ordinal, offset);
15577            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15578            // Calling encoder.out_of_line_offset(0) is not allowed.
15579            if max_ordinal == 0 {
15580                return Ok(());
15581            }
15582            depth.increment()?;
15583            let envelope_size = 8;
15584            let bytes_len = max_ordinal as usize * envelope_size;
15585            #[allow(unused_variables)]
15586            let offset = encoder.out_of_line_offset(bytes_len);
15587            let mut _prev_end_offset: usize = 0;
15588            if 1 > max_ordinal {
15589                return Ok(());
15590            }
15591
15592            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15593            // are envelope_size bytes.
15594            let cur_offset: usize = (1 - 1) * envelope_size;
15595
15596            // Zero reserved fields.
15597            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15598
15599            // Safety:
15600            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15601            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15602            //   envelope_size bytes, there is always sufficient room.
15603            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common_common::SecuritySupport, D>(
15604            self.resp.as_ref().map(<fidl_fuchsia_wlan_common_common::SecuritySupport as fidl::encoding::ValueTypeMarker>::borrow),
15605            encoder, offset + cur_offset, depth
15606        )?;
15607
15608            _prev_end_offset = cur_offset + envelope_size;
15609
15610            Ok(())
15611        }
15612    }
15613
15614    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
15615        for WlanFullmacImplQuerySecuritySupportResponse
15616    {
15617        #[inline(always)]
15618        fn new_empty() -> Self {
15619            Self::default()
15620        }
15621
15622        unsafe fn decode(
15623            &mut self,
15624            decoder: &mut fidl::encoding::Decoder<'_, D>,
15625            offset: usize,
15626            mut depth: fidl::encoding::Depth,
15627        ) -> fidl::Result<()> {
15628            decoder.debug_check_bounds::<Self>(offset);
15629            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15630                None => return Err(fidl::Error::NotNullable),
15631                Some(len) => len,
15632            };
15633            // Calling decoder.out_of_line_offset(0) is not allowed.
15634            if len == 0 {
15635                return Ok(());
15636            };
15637            depth.increment()?;
15638            let envelope_size = 8;
15639            let bytes_len = len * envelope_size;
15640            let offset = decoder.out_of_line_offset(bytes_len)?;
15641            // Decode the envelope for each type.
15642            let mut _next_ordinal_to_read = 0;
15643            let mut next_offset = offset;
15644            let end_offset = offset + bytes_len;
15645            _next_ordinal_to_read += 1;
15646            if next_offset >= end_offset {
15647                return Ok(());
15648            }
15649
15650            // Decode unknown envelopes for gaps in ordinals.
15651            while _next_ordinal_to_read < 1 {
15652                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15653                _next_ordinal_to_read += 1;
15654                next_offset += envelope_size;
15655            }
15656
15657            let next_out_of_line = decoder.next_out_of_line();
15658            let handles_before = decoder.remaining_handles();
15659            if let Some((inlined, num_bytes, num_handles)) =
15660                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15661            {
15662                let member_inline_size = <fidl_fuchsia_wlan_common_common::SecuritySupport as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15663                if inlined != (member_inline_size <= 4) {
15664                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15665                }
15666                let inner_offset;
15667                let mut inner_depth = depth.clone();
15668                if inlined {
15669                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15670                    inner_offset = next_offset;
15671                } else {
15672                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15673                    inner_depth.increment()?;
15674                }
15675                let val_ref = self.resp.get_or_insert_with(|| {
15676                    fidl::new_empty!(fidl_fuchsia_wlan_common_common::SecuritySupport, D)
15677                });
15678                fidl::decode!(
15679                    fidl_fuchsia_wlan_common_common::SecuritySupport,
15680                    D,
15681                    val_ref,
15682                    decoder,
15683                    inner_offset,
15684                    inner_depth
15685                )?;
15686                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15687                {
15688                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15689                }
15690                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15691                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15692                }
15693            }
15694
15695            next_offset += envelope_size;
15696
15697            // Decode the remaining unknown envelopes.
15698            while next_offset < end_offset {
15699                _next_ordinal_to_read += 1;
15700                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15701                next_offset += envelope_size;
15702            }
15703
15704            Ok(())
15705        }
15706    }
15707
15708    impl WlanFullmacImplQuerySpectrumManagementSupportResponse {
15709        #[inline(always)]
15710        fn max_ordinal_present(&self) -> u64 {
15711            if let Some(_) = self.resp {
15712                return 1;
15713            }
15714            0
15715        }
15716    }
15717
15718    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplQuerySpectrumManagementSupportResponse {
15719        type Borrowed<'a> = &'a Self;
15720        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15721            value
15722        }
15723    }
15724
15725    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplQuerySpectrumManagementSupportResponse {
15726        type Owned = Self;
15727
15728        #[inline(always)]
15729        fn inline_align(_context: fidl::encoding::Context) -> usize {
15730            8
15731        }
15732
15733        #[inline(always)]
15734        fn inline_size(_context: fidl::encoding::Context) -> usize {
15735            16
15736        }
15737    }
15738
15739    unsafe impl<D: fidl::encoding::ResourceDialect>
15740        fidl::encoding::Encode<WlanFullmacImplQuerySpectrumManagementSupportResponse, D>
15741        for &WlanFullmacImplQuerySpectrumManagementSupportResponse
15742    {
15743        unsafe fn encode(
15744            self,
15745            encoder: &mut fidl::encoding::Encoder<'_, D>,
15746            offset: usize,
15747            mut depth: fidl::encoding::Depth,
15748        ) -> fidl::Result<()> {
15749            encoder.debug_check_bounds::<WlanFullmacImplQuerySpectrumManagementSupportResponse>(
15750                offset,
15751            );
15752            // Vector header
15753            let max_ordinal: u64 = self.max_ordinal_present();
15754            encoder.write_num(max_ordinal, offset);
15755            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15756            // Calling encoder.out_of_line_offset(0) is not allowed.
15757            if max_ordinal == 0 {
15758                return Ok(());
15759            }
15760            depth.increment()?;
15761            let envelope_size = 8;
15762            let bytes_len = max_ordinal as usize * envelope_size;
15763            #[allow(unused_variables)]
15764            let offset = encoder.out_of_line_offset(bytes_len);
15765            let mut _prev_end_offset: usize = 0;
15766            if 1 > max_ordinal {
15767                return Ok(());
15768            }
15769
15770            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15771            // are envelope_size bytes.
15772            let cur_offset: usize = (1 - 1) * envelope_size;
15773
15774            // Zero reserved fields.
15775            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15776
15777            // Safety:
15778            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15779            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15780            //   envelope_size bytes, there is always sufficient room.
15781            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common_common::SpectrumManagementSupport, D>(
15782            self.resp.as_ref().map(<fidl_fuchsia_wlan_common_common::SpectrumManagementSupport as fidl::encoding::ValueTypeMarker>::borrow),
15783            encoder, offset + cur_offset, depth
15784        )?;
15785
15786            _prev_end_offset = cur_offset + envelope_size;
15787
15788            Ok(())
15789        }
15790    }
15791
15792    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
15793        for WlanFullmacImplQuerySpectrumManagementSupportResponse
15794    {
15795        #[inline(always)]
15796        fn new_empty() -> Self {
15797            Self::default()
15798        }
15799
15800        unsafe fn decode(
15801            &mut self,
15802            decoder: &mut fidl::encoding::Decoder<'_, D>,
15803            offset: usize,
15804            mut depth: fidl::encoding::Depth,
15805        ) -> fidl::Result<()> {
15806            decoder.debug_check_bounds::<Self>(offset);
15807            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15808                None => return Err(fidl::Error::NotNullable),
15809                Some(len) => len,
15810            };
15811            // Calling decoder.out_of_line_offset(0) is not allowed.
15812            if len == 0 {
15813                return Ok(());
15814            };
15815            depth.increment()?;
15816            let envelope_size = 8;
15817            let bytes_len = len * envelope_size;
15818            let offset = decoder.out_of_line_offset(bytes_len)?;
15819            // Decode the envelope for each type.
15820            let mut _next_ordinal_to_read = 0;
15821            let mut next_offset = offset;
15822            let end_offset = offset + bytes_len;
15823            _next_ordinal_to_read += 1;
15824            if next_offset >= end_offset {
15825                return Ok(());
15826            }
15827
15828            // Decode unknown envelopes for gaps in ordinals.
15829            while _next_ordinal_to_read < 1 {
15830                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15831                _next_ordinal_to_read += 1;
15832                next_offset += envelope_size;
15833            }
15834
15835            let next_out_of_line = decoder.next_out_of_line();
15836            let handles_before = decoder.remaining_handles();
15837            if let Some((inlined, num_bytes, num_handles)) =
15838                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15839            {
15840                let member_inline_size = <fidl_fuchsia_wlan_common_common::SpectrumManagementSupport as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15841                if inlined != (member_inline_size <= 4) {
15842                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15843                }
15844                let inner_offset;
15845                let mut inner_depth = depth.clone();
15846                if inlined {
15847                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15848                    inner_offset = next_offset;
15849                } else {
15850                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15851                    inner_depth.increment()?;
15852                }
15853                let val_ref = self.resp.get_or_insert_with(|| {
15854                    fidl::new_empty!(fidl_fuchsia_wlan_common_common::SpectrumManagementSupport, D)
15855                });
15856                fidl::decode!(
15857                    fidl_fuchsia_wlan_common_common::SpectrumManagementSupport,
15858                    D,
15859                    val_ref,
15860                    decoder,
15861                    inner_offset,
15862                    inner_depth
15863                )?;
15864                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15865                {
15866                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15867                }
15868                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15869                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15870                }
15871            }
15872
15873            next_offset += envelope_size;
15874
15875            // Decode the remaining unknown envelopes.
15876            while next_offset < end_offset {
15877                _next_ordinal_to_read += 1;
15878                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15879                next_offset += envelope_size;
15880            }
15881
15882            Ok(())
15883        }
15884    }
15885
15886    impl WlanFullmacImplQueryTelemetrySupportResponse {
15887        #[inline(always)]
15888        fn max_ordinal_present(&self) -> u64 {
15889            if let Some(_) = self.resp {
15890                return 1;
15891            }
15892            0
15893        }
15894    }
15895
15896    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplQueryTelemetrySupportResponse {
15897        type Borrowed<'a> = &'a Self;
15898        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15899            value
15900        }
15901    }
15902
15903    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplQueryTelemetrySupportResponse {
15904        type Owned = Self;
15905
15906        #[inline(always)]
15907        fn inline_align(_context: fidl::encoding::Context) -> usize {
15908            8
15909        }
15910
15911        #[inline(always)]
15912        fn inline_size(_context: fidl::encoding::Context) -> usize {
15913            16
15914        }
15915    }
15916
15917    unsafe impl<D: fidl::encoding::ResourceDialect>
15918        fidl::encoding::Encode<WlanFullmacImplQueryTelemetrySupportResponse, D>
15919        for &WlanFullmacImplQueryTelemetrySupportResponse
15920    {
15921        unsafe fn encode(
15922            self,
15923            encoder: &mut fidl::encoding::Encoder<'_, D>,
15924            offset: usize,
15925            mut depth: fidl::encoding::Depth,
15926        ) -> fidl::Result<()> {
15927            encoder.debug_check_bounds::<WlanFullmacImplQueryTelemetrySupportResponse>(offset);
15928            // Vector header
15929            let max_ordinal: u64 = self.max_ordinal_present();
15930            encoder.write_num(max_ordinal, offset);
15931            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15932            // Calling encoder.out_of_line_offset(0) is not allowed.
15933            if max_ordinal == 0 {
15934                return Ok(());
15935            }
15936            depth.increment()?;
15937            let envelope_size = 8;
15938            let bytes_len = max_ordinal as usize * envelope_size;
15939            #[allow(unused_variables)]
15940            let offset = encoder.out_of_line_offset(bytes_len);
15941            let mut _prev_end_offset: usize = 0;
15942            if 1 > max_ordinal {
15943                return Ok(());
15944            }
15945
15946            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15947            // are envelope_size bytes.
15948            let cur_offset: usize = (1 - 1) * envelope_size;
15949
15950            // Zero reserved fields.
15951            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15952
15953            // Safety:
15954            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15955            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15956            //   envelope_size bytes, there is always sufficient room.
15957            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_stats_common::TelemetrySupport, D>(
15958            self.resp.as_ref().map(<fidl_fuchsia_wlan_stats_common::TelemetrySupport as fidl::encoding::ValueTypeMarker>::borrow),
15959            encoder, offset + cur_offset, depth
15960        )?;
15961
15962            _prev_end_offset = cur_offset + envelope_size;
15963
15964            Ok(())
15965        }
15966    }
15967
15968    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
15969        for WlanFullmacImplQueryTelemetrySupportResponse
15970    {
15971        #[inline(always)]
15972        fn new_empty() -> Self {
15973            Self::default()
15974        }
15975
15976        unsafe fn decode(
15977            &mut self,
15978            decoder: &mut fidl::encoding::Decoder<'_, D>,
15979            offset: usize,
15980            mut depth: fidl::encoding::Depth,
15981        ) -> fidl::Result<()> {
15982            decoder.debug_check_bounds::<Self>(offset);
15983            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15984                None => return Err(fidl::Error::NotNullable),
15985                Some(len) => len,
15986            };
15987            // Calling decoder.out_of_line_offset(0) is not allowed.
15988            if len == 0 {
15989                return Ok(());
15990            };
15991            depth.increment()?;
15992            let envelope_size = 8;
15993            let bytes_len = len * envelope_size;
15994            let offset = decoder.out_of_line_offset(bytes_len)?;
15995            // Decode the envelope for each type.
15996            let mut _next_ordinal_to_read = 0;
15997            let mut next_offset = offset;
15998            let end_offset = offset + bytes_len;
15999            _next_ordinal_to_read += 1;
16000            if next_offset >= end_offset {
16001                return Ok(());
16002            }
16003
16004            // Decode unknown envelopes for gaps in ordinals.
16005            while _next_ordinal_to_read < 1 {
16006                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16007                _next_ordinal_to_read += 1;
16008                next_offset += envelope_size;
16009            }
16010
16011            let next_out_of_line = decoder.next_out_of_line();
16012            let handles_before = decoder.remaining_handles();
16013            if let Some((inlined, num_bytes, num_handles)) =
16014                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16015            {
16016                let member_inline_size = <fidl_fuchsia_wlan_stats_common::TelemetrySupport as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16017                if inlined != (member_inline_size <= 4) {
16018                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16019                }
16020                let inner_offset;
16021                let mut inner_depth = depth.clone();
16022                if inlined {
16023                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16024                    inner_offset = next_offset;
16025                } else {
16026                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16027                    inner_depth.increment()?;
16028                }
16029                let val_ref = self.resp.get_or_insert_with(|| {
16030                    fidl::new_empty!(fidl_fuchsia_wlan_stats_common::TelemetrySupport, D)
16031                });
16032                fidl::decode!(
16033                    fidl_fuchsia_wlan_stats_common::TelemetrySupport,
16034                    D,
16035                    val_ref,
16036                    decoder,
16037                    inner_offset,
16038                    inner_depth
16039                )?;
16040                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16041                {
16042                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16043                }
16044                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16045                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16046                }
16047            }
16048
16049            next_offset += envelope_size;
16050
16051            // Decode the remaining unknown envelopes.
16052            while next_offset < end_offset {
16053                _next_ordinal_to_read += 1;
16054                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16055                next_offset += envelope_size;
16056            }
16057
16058            Ok(())
16059        }
16060    }
16061
16062    impl WlanFullmacImplQueryResponse {
16063        #[inline(always)]
16064        fn max_ordinal_present(&self) -> u64 {
16065            if let Some(_) = self.factory_addr {
16066                return 4;
16067            }
16068            if let Some(_) = self.band_caps {
16069                return 3;
16070            }
16071            if let Some(_) = self.role {
16072                return 2;
16073            }
16074            if let Some(_) = self.sta_addr {
16075                return 1;
16076            }
16077            0
16078        }
16079    }
16080
16081    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplQueryResponse {
16082        type Borrowed<'a> = &'a Self;
16083        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16084            value
16085        }
16086    }
16087
16088    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplQueryResponse {
16089        type Owned = Self;
16090
16091        #[inline(always)]
16092        fn inline_align(_context: fidl::encoding::Context) -> usize {
16093            8
16094        }
16095
16096        #[inline(always)]
16097        fn inline_size(_context: fidl::encoding::Context) -> usize {
16098            16
16099        }
16100    }
16101
16102    unsafe impl<D: fidl::encoding::ResourceDialect>
16103        fidl::encoding::Encode<WlanFullmacImplQueryResponse, D> for &WlanFullmacImplQueryResponse
16104    {
16105        unsafe fn encode(
16106            self,
16107            encoder: &mut fidl::encoding::Encoder<'_, D>,
16108            offset: usize,
16109            mut depth: fidl::encoding::Depth,
16110        ) -> fidl::Result<()> {
16111            encoder.debug_check_bounds::<WlanFullmacImplQueryResponse>(offset);
16112            // Vector header
16113            let max_ordinal: u64 = self.max_ordinal_present();
16114            encoder.write_num(max_ordinal, offset);
16115            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
16116            // Calling encoder.out_of_line_offset(0) is not allowed.
16117            if max_ordinal == 0 {
16118                return Ok(());
16119            }
16120            depth.increment()?;
16121            let envelope_size = 8;
16122            let bytes_len = max_ordinal as usize * envelope_size;
16123            #[allow(unused_variables)]
16124            let offset = encoder.out_of_line_offset(bytes_len);
16125            let mut _prev_end_offset: usize = 0;
16126            if 1 > max_ordinal {
16127                return Ok(());
16128            }
16129
16130            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16131            // are envelope_size bytes.
16132            let cur_offset: usize = (1 - 1) * envelope_size;
16133
16134            // Zero reserved fields.
16135            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16136
16137            // Safety:
16138            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16139            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16140            //   envelope_size bytes, there is always sufficient room.
16141            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
16142                self.sta_addr
16143                    .as_ref()
16144                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
16145                encoder,
16146                offset + cur_offset,
16147                depth,
16148            )?;
16149
16150            _prev_end_offset = cur_offset + envelope_size;
16151            if 2 > max_ordinal {
16152                return Ok(());
16153            }
16154
16155            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16156            // are envelope_size bytes.
16157            let cur_offset: usize = (2 - 1) * envelope_size;
16158
16159            // Zero reserved fields.
16160            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16161
16162            // Safety:
16163            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16164            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16165            //   envelope_size bytes, there is always sufficient room.
16166            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common_common::WlanMacRole, D>(
16167            self.role.as_ref().map(<fidl_fuchsia_wlan_common_common::WlanMacRole as fidl::encoding::ValueTypeMarker>::borrow),
16168            encoder, offset + cur_offset, depth
16169        )?;
16170
16171            _prev_end_offset = cur_offset + envelope_size;
16172            if 3 > max_ordinal {
16173                return Ok(());
16174            }
16175
16176            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16177            // are envelope_size bytes.
16178            let cur_offset: usize = (3 - 1) * envelope_size;
16179
16180            // Zero reserved fields.
16181            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16182
16183            // Safety:
16184            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16185            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16186            //   envelope_size bytes, there is always sufficient room.
16187            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<BandCapability, 16>, D>(
16188            self.band_caps.as_ref().map(<fidl::encoding::Vector<BandCapability, 16> as fidl::encoding::ValueTypeMarker>::borrow),
16189            encoder, offset + cur_offset, depth
16190        )?;
16191
16192            _prev_end_offset = cur_offset + envelope_size;
16193            if 4 > max_ordinal {
16194                return Ok(());
16195            }
16196
16197            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16198            // are envelope_size bytes.
16199            let cur_offset: usize = (4 - 1) * envelope_size;
16200
16201            // Zero reserved fields.
16202            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16203
16204            // Safety:
16205            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16206            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16207            //   envelope_size bytes, there is always sufficient room.
16208            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
16209                self.factory_addr
16210                    .as_ref()
16211                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
16212                encoder,
16213                offset + cur_offset,
16214                depth,
16215            )?;
16216
16217            _prev_end_offset = cur_offset + envelope_size;
16218
16219            Ok(())
16220        }
16221    }
16222
16223    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
16224        for WlanFullmacImplQueryResponse
16225    {
16226        #[inline(always)]
16227        fn new_empty() -> Self {
16228            Self::default()
16229        }
16230
16231        unsafe fn decode(
16232            &mut self,
16233            decoder: &mut fidl::encoding::Decoder<'_, D>,
16234            offset: usize,
16235            mut depth: fidl::encoding::Depth,
16236        ) -> fidl::Result<()> {
16237            decoder.debug_check_bounds::<Self>(offset);
16238            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
16239                None => return Err(fidl::Error::NotNullable),
16240                Some(len) => len,
16241            };
16242            // Calling decoder.out_of_line_offset(0) is not allowed.
16243            if len == 0 {
16244                return Ok(());
16245            };
16246            depth.increment()?;
16247            let envelope_size = 8;
16248            let bytes_len = len * envelope_size;
16249            let offset = decoder.out_of_line_offset(bytes_len)?;
16250            // Decode the envelope for each type.
16251            let mut _next_ordinal_to_read = 0;
16252            let mut next_offset = offset;
16253            let end_offset = offset + bytes_len;
16254            _next_ordinal_to_read += 1;
16255            if next_offset >= end_offset {
16256                return Ok(());
16257            }
16258
16259            // Decode unknown envelopes for gaps in ordinals.
16260            while _next_ordinal_to_read < 1 {
16261                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16262                _next_ordinal_to_read += 1;
16263                next_offset += envelope_size;
16264            }
16265
16266            let next_out_of_line = decoder.next_out_of_line();
16267            let handles_before = decoder.remaining_handles();
16268            if let Some((inlined, num_bytes, num_handles)) =
16269                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16270            {
16271                let member_inline_size =
16272                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
16273                        decoder.context,
16274                    );
16275                if inlined != (member_inline_size <= 4) {
16276                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16277                }
16278                let inner_offset;
16279                let mut inner_depth = depth.clone();
16280                if inlined {
16281                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16282                    inner_offset = next_offset;
16283                } else {
16284                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16285                    inner_depth.increment()?;
16286                }
16287                let val_ref = self
16288                    .sta_addr
16289                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
16290                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
16291                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16292                {
16293                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16294                }
16295                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16296                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16297                }
16298            }
16299
16300            next_offset += envelope_size;
16301            _next_ordinal_to_read += 1;
16302            if next_offset >= end_offset {
16303                return Ok(());
16304            }
16305
16306            // Decode unknown envelopes for gaps in ordinals.
16307            while _next_ordinal_to_read < 2 {
16308                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16309                _next_ordinal_to_read += 1;
16310                next_offset += envelope_size;
16311            }
16312
16313            let next_out_of_line = decoder.next_out_of_line();
16314            let handles_before = decoder.remaining_handles();
16315            if let Some((inlined, num_bytes, num_handles)) =
16316                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16317            {
16318                let member_inline_size = <fidl_fuchsia_wlan_common_common::WlanMacRole as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16319                if inlined != (member_inline_size <= 4) {
16320                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16321                }
16322                let inner_offset;
16323                let mut inner_depth = depth.clone();
16324                if inlined {
16325                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16326                    inner_offset = next_offset;
16327                } else {
16328                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16329                    inner_depth.increment()?;
16330                }
16331                let val_ref = self.role.get_or_insert_with(|| {
16332                    fidl::new_empty!(fidl_fuchsia_wlan_common_common::WlanMacRole, D)
16333                });
16334                fidl::decode!(
16335                    fidl_fuchsia_wlan_common_common::WlanMacRole,
16336                    D,
16337                    val_ref,
16338                    decoder,
16339                    inner_offset,
16340                    inner_depth
16341                )?;
16342                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16343                {
16344                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16345                }
16346                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16347                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16348                }
16349            }
16350
16351            next_offset += envelope_size;
16352            _next_ordinal_to_read += 1;
16353            if next_offset >= end_offset {
16354                return Ok(());
16355            }
16356
16357            // Decode unknown envelopes for gaps in ordinals.
16358            while _next_ordinal_to_read < 3 {
16359                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16360                _next_ordinal_to_read += 1;
16361                next_offset += envelope_size;
16362            }
16363
16364            let next_out_of_line = decoder.next_out_of_line();
16365            let handles_before = decoder.remaining_handles();
16366            if let Some((inlined, num_bytes, num_handles)) =
16367                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16368            {
16369                let member_inline_size = <fidl::encoding::Vector<BandCapability, 16> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16370                if inlined != (member_inline_size <= 4) {
16371                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16372                }
16373                let inner_offset;
16374                let mut inner_depth = depth.clone();
16375                if inlined {
16376                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16377                    inner_offset = next_offset;
16378                } else {
16379                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16380                    inner_depth.increment()?;
16381                }
16382                let val_ref = self.band_caps.get_or_insert_with(
16383                    || fidl::new_empty!(fidl::encoding::Vector<BandCapability, 16>, D),
16384                );
16385                fidl::decode!(fidl::encoding::Vector<BandCapability, 16>, D, val_ref, decoder, inner_offset, inner_depth)?;
16386                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16387                {
16388                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16389                }
16390                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16391                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16392                }
16393            }
16394
16395            next_offset += envelope_size;
16396            _next_ordinal_to_read += 1;
16397            if next_offset >= end_offset {
16398                return Ok(());
16399            }
16400
16401            // Decode unknown envelopes for gaps in ordinals.
16402            while _next_ordinal_to_read < 4 {
16403                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16404                _next_ordinal_to_read += 1;
16405                next_offset += envelope_size;
16406            }
16407
16408            let next_out_of_line = decoder.next_out_of_line();
16409            let handles_before = decoder.remaining_handles();
16410            if let Some((inlined, num_bytes, num_handles)) =
16411                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16412            {
16413                let member_inline_size =
16414                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
16415                        decoder.context,
16416                    );
16417                if inlined != (member_inline_size <= 4) {
16418                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16419                }
16420                let inner_offset;
16421                let mut inner_depth = depth.clone();
16422                if inlined {
16423                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16424                    inner_offset = next_offset;
16425                } else {
16426                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16427                    inner_depth.increment()?;
16428                }
16429                let val_ref = self
16430                    .factory_addr
16431                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
16432                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
16433                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16434                {
16435                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16436                }
16437                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16438                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16439                }
16440            }
16441
16442            next_offset += envelope_size;
16443
16444            // Decode the remaining unknown envelopes.
16445            while next_offset < end_offset {
16446                _next_ordinal_to_read += 1;
16447                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16448                next_offset += envelope_size;
16449            }
16450
16451            Ok(())
16452        }
16453    }
16454
16455    impl WlanFullmacImplReadApfPacketFilterDataResponse {
16456        #[inline(always)]
16457        fn max_ordinal_present(&self) -> u64 {
16458            if let Some(_) = self.memory {
16459                return 1;
16460            }
16461            0
16462        }
16463    }
16464
16465    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplReadApfPacketFilterDataResponse {
16466        type Borrowed<'a> = &'a Self;
16467        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16468            value
16469        }
16470    }
16471
16472    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplReadApfPacketFilterDataResponse {
16473        type Owned = Self;
16474
16475        #[inline(always)]
16476        fn inline_align(_context: fidl::encoding::Context) -> usize {
16477            8
16478        }
16479
16480        #[inline(always)]
16481        fn inline_size(_context: fidl::encoding::Context) -> usize {
16482            16
16483        }
16484    }
16485
16486    unsafe impl<D: fidl::encoding::ResourceDialect>
16487        fidl::encoding::Encode<WlanFullmacImplReadApfPacketFilterDataResponse, D>
16488        for &WlanFullmacImplReadApfPacketFilterDataResponse
16489    {
16490        unsafe fn encode(
16491            self,
16492            encoder: &mut fidl::encoding::Encoder<'_, D>,
16493            offset: usize,
16494            mut depth: fidl::encoding::Depth,
16495        ) -> fidl::Result<()> {
16496            encoder.debug_check_bounds::<WlanFullmacImplReadApfPacketFilterDataResponse>(offset);
16497            // Vector header
16498            let max_ordinal: u64 = self.max_ordinal_present();
16499            encoder.write_num(max_ordinal, offset);
16500            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
16501            // Calling encoder.out_of_line_offset(0) is not allowed.
16502            if max_ordinal == 0 {
16503                return Ok(());
16504            }
16505            depth.increment()?;
16506            let envelope_size = 8;
16507            let bytes_len = max_ordinal as usize * envelope_size;
16508            #[allow(unused_variables)]
16509            let offset = encoder.out_of_line_offset(bytes_len);
16510            let mut _prev_end_offset: usize = 0;
16511            if 1 > max_ordinal {
16512                return Ok(());
16513            }
16514
16515            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16516            // are envelope_size bytes.
16517            let cur_offset: usize = (1 - 1) * envelope_size;
16518
16519            // Zero reserved fields.
16520            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16521
16522            // Safety:
16523            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16524            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16525            //   envelope_size bytes, there is always sufficient room.
16526            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
16527            self.memory.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
16528            encoder, offset + cur_offset, depth
16529        )?;
16530
16531            _prev_end_offset = cur_offset + envelope_size;
16532
16533            Ok(())
16534        }
16535    }
16536
16537    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
16538        for WlanFullmacImplReadApfPacketFilterDataResponse
16539    {
16540        #[inline(always)]
16541        fn new_empty() -> Self {
16542            Self::default()
16543        }
16544
16545        unsafe fn decode(
16546            &mut self,
16547            decoder: &mut fidl::encoding::Decoder<'_, D>,
16548            offset: usize,
16549            mut depth: fidl::encoding::Depth,
16550        ) -> fidl::Result<()> {
16551            decoder.debug_check_bounds::<Self>(offset);
16552            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
16553                None => return Err(fidl::Error::NotNullable),
16554                Some(len) => len,
16555            };
16556            // Calling decoder.out_of_line_offset(0) is not allowed.
16557            if len == 0 {
16558                return Ok(());
16559            };
16560            depth.increment()?;
16561            let envelope_size = 8;
16562            let bytes_len = len * envelope_size;
16563            let offset = decoder.out_of_line_offset(bytes_len)?;
16564            // Decode the envelope for each type.
16565            let mut _next_ordinal_to_read = 0;
16566            let mut next_offset = offset;
16567            let end_offset = offset + bytes_len;
16568            _next_ordinal_to_read += 1;
16569            if next_offset >= end_offset {
16570                return Ok(());
16571            }
16572
16573            // Decode unknown envelopes for gaps in ordinals.
16574            while _next_ordinal_to_read < 1 {
16575                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16576                _next_ordinal_to_read += 1;
16577                next_offset += envelope_size;
16578            }
16579
16580            let next_out_of_line = decoder.next_out_of_line();
16581            let handles_before = decoder.remaining_handles();
16582            if let Some((inlined, num_bytes, num_handles)) =
16583                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16584            {
16585                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16586                if inlined != (member_inline_size <= 4) {
16587                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16588                }
16589                let inner_offset;
16590                let mut inner_depth = depth.clone();
16591                if inlined {
16592                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16593                    inner_offset = next_offset;
16594                } else {
16595                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16596                    inner_depth.increment()?;
16597                }
16598                let val_ref = self.memory.get_or_insert_with(|| {
16599                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
16600                });
16601                fidl::decode!(
16602                    fidl::encoding::UnboundedVector<u8>,
16603                    D,
16604                    val_ref,
16605                    decoder,
16606                    inner_offset,
16607                    inner_depth
16608                )?;
16609                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16610                {
16611                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16612                }
16613                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16614                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16615                }
16616            }
16617
16618            next_offset += envelope_size;
16619
16620            // Decode the remaining unknown envelopes.
16621            while next_offset < end_offset {
16622                _next_ordinal_to_read += 1;
16623                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16624                next_offset += envelope_size;
16625            }
16626
16627            Ok(())
16628        }
16629    }
16630
16631    impl WlanFullmacOwePublicKey {
16632        #[inline(always)]
16633        fn max_ordinal_present(&self) -> u64 {
16634            if let Some(_) = self.key {
16635                return 2;
16636            }
16637            if let Some(_) = self.group {
16638                return 1;
16639            }
16640            0
16641        }
16642    }
16643
16644    impl fidl::encoding::ValueTypeMarker for WlanFullmacOwePublicKey {
16645        type Borrowed<'a> = &'a Self;
16646        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16647            value
16648        }
16649    }
16650
16651    unsafe impl fidl::encoding::TypeMarker for WlanFullmacOwePublicKey {
16652        type Owned = Self;
16653
16654        #[inline(always)]
16655        fn inline_align(_context: fidl::encoding::Context) -> usize {
16656            8
16657        }
16658
16659        #[inline(always)]
16660        fn inline_size(_context: fidl::encoding::Context) -> usize {
16661            16
16662        }
16663    }
16664
16665    unsafe impl<D: fidl::encoding::ResourceDialect>
16666        fidl::encoding::Encode<WlanFullmacOwePublicKey, D> for &WlanFullmacOwePublicKey
16667    {
16668        unsafe fn encode(
16669            self,
16670            encoder: &mut fidl::encoding::Encoder<'_, D>,
16671            offset: usize,
16672            mut depth: fidl::encoding::Depth,
16673        ) -> fidl::Result<()> {
16674            encoder.debug_check_bounds::<WlanFullmacOwePublicKey>(offset);
16675            // Vector header
16676            let max_ordinal: u64 = self.max_ordinal_present();
16677            encoder.write_num(max_ordinal, offset);
16678            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
16679            // Calling encoder.out_of_line_offset(0) is not allowed.
16680            if max_ordinal == 0 {
16681                return Ok(());
16682            }
16683            depth.increment()?;
16684            let envelope_size = 8;
16685            let bytes_len = max_ordinal as usize * envelope_size;
16686            #[allow(unused_variables)]
16687            let offset = encoder.out_of_line_offset(bytes_len);
16688            let mut _prev_end_offset: usize = 0;
16689            if 1 > max_ordinal {
16690                return Ok(());
16691            }
16692
16693            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16694            // are envelope_size bytes.
16695            let cur_offset: usize = (1 - 1) * envelope_size;
16696
16697            // Zero reserved fields.
16698            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16699
16700            // Safety:
16701            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16702            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16703            //   envelope_size bytes, there is always sufficient room.
16704            fidl::encoding::encode_in_envelope_optional::<u16, D>(
16705                self.group.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
16706                encoder,
16707                offset + cur_offset,
16708                depth,
16709            )?;
16710
16711            _prev_end_offset = cur_offset + envelope_size;
16712            if 2 > max_ordinal {
16713                return Ok(());
16714            }
16715
16716            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16717            // are envelope_size bytes.
16718            let cur_offset: usize = (2 - 1) * envelope_size;
16719
16720            // Zero reserved fields.
16721            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16722
16723            // Safety:
16724            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16725            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16726            //   envelope_size bytes, there is always sufficient room.
16727            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
16728            self.key.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
16729            encoder, offset + cur_offset, depth
16730        )?;
16731
16732            _prev_end_offset = cur_offset + envelope_size;
16733
16734            Ok(())
16735        }
16736    }
16737
16738    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
16739        for WlanFullmacOwePublicKey
16740    {
16741        #[inline(always)]
16742        fn new_empty() -> Self {
16743            Self::default()
16744        }
16745
16746        unsafe fn decode(
16747            &mut self,
16748            decoder: &mut fidl::encoding::Decoder<'_, D>,
16749            offset: usize,
16750            mut depth: fidl::encoding::Depth,
16751        ) -> fidl::Result<()> {
16752            decoder.debug_check_bounds::<Self>(offset);
16753            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
16754                None => return Err(fidl::Error::NotNullable),
16755                Some(len) => len,
16756            };
16757            // Calling decoder.out_of_line_offset(0) is not allowed.
16758            if len == 0 {
16759                return Ok(());
16760            };
16761            depth.increment()?;
16762            let envelope_size = 8;
16763            let bytes_len = len * envelope_size;
16764            let offset = decoder.out_of_line_offset(bytes_len)?;
16765            // Decode the envelope for each type.
16766            let mut _next_ordinal_to_read = 0;
16767            let mut next_offset = offset;
16768            let end_offset = offset + bytes_len;
16769            _next_ordinal_to_read += 1;
16770            if next_offset >= end_offset {
16771                return Ok(());
16772            }
16773
16774            // Decode unknown envelopes for gaps in ordinals.
16775            while _next_ordinal_to_read < 1 {
16776                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16777                _next_ordinal_to_read += 1;
16778                next_offset += envelope_size;
16779            }
16780
16781            let next_out_of_line = decoder.next_out_of_line();
16782            let handles_before = decoder.remaining_handles();
16783            if let Some((inlined, num_bytes, num_handles)) =
16784                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16785            {
16786                let member_inline_size =
16787                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16788                if inlined != (member_inline_size <= 4) {
16789                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16790                }
16791                let inner_offset;
16792                let mut inner_depth = depth.clone();
16793                if inlined {
16794                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16795                    inner_offset = next_offset;
16796                } else {
16797                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16798                    inner_depth.increment()?;
16799                }
16800                let val_ref = self.group.get_or_insert_with(|| fidl::new_empty!(u16, D));
16801                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
16802                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16803                {
16804                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16805                }
16806                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16807                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16808                }
16809            }
16810
16811            next_offset += envelope_size;
16812            _next_ordinal_to_read += 1;
16813            if next_offset >= end_offset {
16814                return Ok(());
16815            }
16816
16817            // Decode unknown envelopes for gaps in ordinals.
16818            while _next_ordinal_to_read < 2 {
16819                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16820                _next_ordinal_to_read += 1;
16821                next_offset += envelope_size;
16822            }
16823
16824            let next_out_of_line = decoder.next_out_of_line();
16825            let handles_before = decoder.remaining_handles();
16826            if let Some((inlined, num_bytes, num_handles)) =
16827                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16828            {
16829                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16830                if inlined != (member_inline_size <= 4) {
16831                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16832                }
16833                let inner_offset;
16834                let mut inner_depth = depth.clone();
16835                if inlined {
16836                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16837                    inner_offset = next_offset;
16838                } else {
16839                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16840                    inner_depth.increment()?;
16841                }
16842                let val_ref = self.key.get_or_insert_with(|| {
16843                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
16844                });
16845                fidl::decode!(
16846                    fidl::encoding::UnboundedVector<u8>,
16847                    D,
16848                    val_ref,
16849                    decoder,
16850                    inner_offset,
16851                    inner_depth
16852                )?;
16853                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16854                {
16855                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16856                }
16857                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16858                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16859                }
16860            }
16861
16862            next_offset += envelope_size;
16863
16864            // Decode the remaining unknown envelopes.
16865            while next_offset < end_offset {
16866                _next_ordinal_to_read += 1;
16867                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16868                next_offset += envelope_size;
16869            }
16870
16871            Ok(())
16872        }
16873    }
16874}