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, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
578#[repr(C)]
579pub struct WlanFullmacChannelSwitchInfo {
580    pub new_channel: u8,
581}
582
583impl fidl::Persistable for WlanFullmacChannelSwitchInfo {}
584
585#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
586#[repr(C)]
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_common__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 operating 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, an operating 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 operating
707    /// channel to use when starting an AP.
708    ///
709    /// Required.
710    pub operating_channels: Option<Vec<u8>>,
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_common__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_common__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    #[doc(hidden)]
777    pub __source_breaking: fidl::marker::SourceBreaking,
778}
779
780impl fidl::Persistable for WlanFullmacImplConnectRequest {}
781
782#[derive(Clone, Debug, Default, PartialEq)]
783pub struct WlanFullmacImplDeauthRequest {
784    pub peer_sta_address: Option<[u8; 6]>,
785    pub reason_code: Option<fidl_fuchsia_wlan_ieee80211__common::ReasonCode>,
786    #[doc(hidden)]
787    pub __source_breaking: fidl::marker::SourceBreaking,
788}
789
790impl fidl::Persistable for WlanFullmacImplDeauthRequest {}
791
792#[derive(Clone, Debug, Default, PartialEq)]
793pub struct WlanFullmacImplDisassocRequest {
794    pub peer_sta_address: Option<[u8; 6]>,
795    pub reason_code: Option<fidl_fuchsia_wlan_ieee80211__common::ReasonCode>,
796    #[doc(hidden)]
797    pub __source_breaking: fidl::marker::SourceBreaking,
798}
799
800impl fidl::Persistable for WlanFullmacImplDisassocRequest {}
801
802#[derive(Clone, Debug, Default, PartialEq)]
803pub struct WlanFullmacImplEapolTxRequest {
804    pub src_addr: Option<[u8; 6]>,
805    pub dst_addr: Option<[u8; 6]>,
806    pub data: Option<Vec<u8>>,
807    #[doc(hidden)]
808    pub __source_breaking: fidl::marker::SourceBreaking,
809}
810
811impl fidl::Persistable for WlanFullmacImplEapolTxRequest {}
812
813#[derive(Clone, Debug, Default, PartialEq)]
814pub struct WlanFullmacImplIfcAssocIndRequest {
815    pub peer_sta_address: Option<[u8; 6]>,
816    pub listen_interval: Option<u16>,
817    pub ssid: Option<Vec<u8>>,
818    pub rsne: Option<Vec<u8>>,
819    pub vendor_ie: Option<Vec<u8>>,
820    #[doc(hidden)]
821    pub __source_breaking: fidl::marker::SourceBreaking,
822}
823
824impl fidl::Persistable for WlanFullmacImplIfcAssocIndRequest {}
825
826#[derive(Clone, Debug, Default, PartialEq)]
827pub struct WlanFullmacImplIfcAuthIndRequest {
828    pub peer_sta_address: Option<[u8; 6]>,
829    pub auth_type: Option<WlanAuthType>,
830    #[doc(hidden)]
831    pub __source_breaking: fidl::marker::SourceBreaking,
832}
833
834impl fidl::Persistable for WlanFullmacImplIfcAuthIndRequest {}
835
836#[derive(Clone, Debug, Default, PartialEq)]
837pub struct WlanFullmacImplIfcConnectConfRequest {
838    pub peer_sta_address: Option<[u8; 6]>,
839    pub result_code: Option<fidl_fuchsia_wlan_ieee80211__common::StatusCode>,
840    pub association_id: Option<u16>,
841    pub association_ies: Option<Vec<u8>>,
842    #[doc(hidden)]
843    pub __source_breaking: fidl::marker::SourceBreaking,
844}
845
846impl fidl::Persistable for WlanFullmacImplIfcConnectConfRequest {}
847
848#[derive(Clone, Debug, Default, PartialEq)]
849pub struct WlanFullmacImplIfcDeauthConfRequest {
850    pub peer_sta_address: Option<[u8; 6]>,
851    #[doc(hidden)]
852    pub __source_breaking: fidl::marker::SourceBreaking,
853}
854
855impl fidl::Persistable for WlanFullmacImplIfcDeauthConfRequest {}
856
857#[derive(Clone, Debug, Default, PartialEq)]
858pub struct WlanFullmacImplIfcDeauthIndRequest {
859    /// MAC address of the peer. Required.
860    pub peer_sta_address: Option<[u8; 6]>,
861    /// Reason code for deauthentication. Required.
862    pub reason_code: Option<fidl_fuchsia_wlan_ieee80211__common::ReasonCode>,
863    /// locally_initiated is true if deauth is initiated from the device,
864    /// and is false if it's initiated remotely (e.g. due to deauth frame)
865    pub locally_initiated: Option<bool>,
866    #[doc(hidden)]
867    pub __source_breaking: fidl::marker::SourceBreaking,
868}
869
870impl fidl::Persistable for WlanFullmacImplIfcDeauthIndRequest {}
871
872#[derive(Clone, Debug, Default, PartialEq)]
873pub struct WlanFullmacImplIfcDisassocConfRequest {
874    /// ZX_OK indicates that the disassociate request was serviced and the peer was
875    /// disassociated. Other errors indicate that the request could not be serviced, for these
876    /// or other reasons:
877    ///   - ZX_ERR_BAD_STATE: association not possible in current state (e.g. disconnected)
878    ///   - ZX_ERR_INVALID_ARGS: no association exists with specified peer
879    ///   - ZX_ERR_SHOULD_WAIT: disassociate request could not be serviced because firmware or
880    ///     driver was busy
881    pub status: Option<i32>,
882    #[doc(hidden)]
883    pub __source_breaking: fidl::marker::SourceBreaking,
884}
885
886impl fidl::Persistable for WlanFullmacImplIfcDisassocConfRequest {}
887
888#[derive(Clone, Debug, Default, PartialEq)]
889pub struct WlanFullmacImplIfcDisassocIndRequest {
890    /// Address of the peer that was disassociated. Required.
891    pub peer_sta_address: Option<[u8; 6]>,
892    /// Reason for the disassociation. Required.
893    pub reason_code: Option<fidl_fuchsia_wlan_ieee80211__common::ReasonCode>,
894    /// Whether the disassociation was initiated from the device. Required.
895    /// locally_initiated is true if disassociation was initiated from the device (e.g. firmware
896    /// or vendor driver started the disassociation); false if the disassociation was initiated
897    /// externally (e.g. due to receipt of a disassociate frame from an AP).
898    pub locally_initiated: Option<bool>,
899    #[doc(hidden)]
900    pub __source_breaking: fidl::marker::SourceBreaking,
901}
902
903impl fidl::Persistable for WlanFullmacImplIfcDisassocIndRequest {}
904
905#[derive(Clone, Debug, Default, PartialEq)]
906pub struct WlanFullmacImplIfcEapolConfRequest {
907    /// The result of the transmission. Required.
908    pub result_code: Option<EapolTxResult>,
909    /// This value corresponds to the dst_addr in the EapolTxRequest we're confirming.
910    /// IEEE 802.11-2020 does not include this field, but we need it to disambiguate
911    /// if multiple EAPoL handshakes are ongoing.
912    /// Required.
913    pub dst_addr: Option<[u8; 6]>,
914    #[doc(hidden)]
915    pub __source_breaking: fidl::marker::SourceBreaking,
916}
917
918impl fidl::Persistable for WlanFullmacImplIfcEapolConfRequest {}
919
920#[derive(Clone, Debug, Default, PartialEq)]
921pub struct WlanFullmacImplIfcEapolIndRequest {
922    /// The address of the sender. Required.
923    pub src_addr: Option<[u8; 6]>,
924    /// The address of the intended destination. Required.
925    pub dst_addr: Option<[u8; 6]>,
926    /// The bytes of the EAPoL frame data. Required.
927    pub data: Option<Vec<u8>>,
928    #[doc(hidden)]
929    pub __source_breaking: fidl::marker::SourceBreaking,
930}
931
932impl fidl::Persistable for WlanFullmacImplIfcEapolIndRequest {}
933
934#[derive(Clone, Debug, Default, PartialEq)]
935pub struct WlanFullmacImplIfcOnPmkAvailableRequest {
936    /// The pairwise master key bytes. Required.
937    pub pmk: Option<Vec<u8>>,
938    /// The PMK IDs. Required.
939    pub pmkid: Option<Vec<u8>>,
940    #[doc(hidden)]
941    pub __source_breaking: fidl::marker::SourceBreaking,
942}
943
944impl fidl::Persistable for WlanFullmacImplIfcOnPmkAvailableRequest {}
945
946#[derive(Clone, Debug, Default, PartialEq)]
947pub struct WlanFullmacImplIfcOnScanEndRequest {
948    pub txn_id: Option<u64>,
949    pub code: Option<WlanScanResult>,
950    #[doc(hidden)]
951    pub __source_breaking: fidl::marker::SourceBreaking,
952}
953
954impl fidl::Persistable for WlanFullmacImplIfcOnScanEndRequest {}
955
956#[derive(Clone, Debug, Default, PartialEq)]
957pub struct WlanFullmacImplIfcOnScanResultRequest {
958    pub txn_id: Option<u64>,
959    pub timestamp_nanos: Option<i64>,
960    pub bss: Option<fidl_fuchsia_wlan_common__common::BssDescription>,
961    #[doc(hidden)]
962    pub __source_breaking: fidl::marker::SourceBreaking,
963}
964
965impl fidl::Persistable for WlanFullmacImplIfcOnScanResultRequest {}
966
967#[derive(Clone, Debug, Default, PartialEq)]
968pub struct WlanFullmacImplIfcRoamConfRequest {
969    /// BSSID of the target BSS. Required.
970    pub selected_bssid: Option<[u8; 6]>,
971    /// Result of the roam attempt. Required.
972    pub status_code: Option<fidl_fuchsia_wlan_ieee80211__common::StatusCode>,
973    /// Whether the original BSS association has been maintained through the roam attempt. Required.
974    /// A successful roam always incurs disassociation from the original BSS, so if `status_code` is
975    /// success then this field must be set to false; a roam failure typically incurs disassociation
976    /// from the original BSS, but may not in some cases (e.g. in some Fast BSS Transition scenarios).
977    pub original_association_maintained: Option<bool>,
978    /// Whether the client is authenticated with the target BSS. If `status_code` is success, then
979    /// this field must be set to true; if the roam attempt failed, this field may be true or false.
980    /// This allows higher layers to decide how to clean up connection state after a failed roam
981    /// attempt.
982    pub target_bss_authenticated: Option<bool>,
983    /// Association ID for this association with the AP. Required if `status_code` is success.
984    pub association_id: Option<u16>,
985    /// IEs for this association with the AP. Required if `status_code` is success.
986    pub association_ies: Option<Vec<u8>>,
987    #[doc(hidden)]
988    pub __source_breaking: fidl::marker::SourceBreaking,
989}
990
991impl fidl::Persistable for WlanFullmacImplIfcRoamConfRequest {}
992
993#[derive(Clone, Debug, Default, PartialEq)]
994pub struct WlanFullmacImplIfcRoamResultIndRequest {
995    /// BSSID of the target BSS. Required.
996    pub selected_bssid: Option<[u8; 6]>,
997    /// Result of the roam attempt. Required.
998    pub status_code: Option<fidl_fuchsia_wlan_ieee80211__common::StatusCode>,
999    /// Whether the original BSS association has been maintained through the roam attempt. Required.
1000    /// A successful roam always incurs disassociation from the original BSS, so if `status_code` is
1001    /// success then this field must be set to false; a roam failure typically incurs disassociation
1002    /// from the original BSS, but may not in some cases (e.g. in some Fast BSS Transition scenarios).
1003    pub original_association_maintained: Option<bool>,
1004    /// Whether the client is authenticated with the target BSS. If `status_code` is success, then
1005    /// this field must be set to true; if the roam attempt failed, this field may be true or false.
1006    /// This allows higher layers to decide how to clean up connection state after a failed roam
1007    /// attempt.
1008    pub target_bss_authenticated: Option<bool>,
1009    /// Association ID for this association with the AP. Required if `status_code` is success.
1010    pub association_id: Option<u16>,
1011    /// IEs for this association with the AP. Required if `status_code` is success.
1012    pub association_ies: Option<Vec<u8>>,
1013    #[doc(hidden)]
1014    pub __source_breaking: fidl::marker::SourceBreaking,
1015}
1016
1017impl fidl::Persistable for WlanFullmacImplIfcRoamResultIndRequest {}
1018
1019#[derive(Clone, Debug, Default, PartialEq)]
1020pub struct WlanFullmacImplIfcRoamStartIndRequest {
1021    /// BSSID of the target BSS. Required.
1022    pub selected_bssid: Option<[u8; 6]>,
1023    /// Full BSS description of the target BSS. Required.
1024    /// If the data in BssDescription is incorrect or incomplete, the roam cannot succeed,
1025    /// because higher layers will not be able to complete required actions (e.g. SAE).
1026    pub selected_bss: Option<fidl_fuchsia_wlan_common__common::BssDescription>,
1027    /// Whether the original BSS association has been maintained at the start of a roam attempt.
1028    /// Required. 802.11 dictates that a STA can only be associated with a single BSS, so a roam
1029    /// attempt typically incurs disassociation at the start of the roam attempt. However,
1030    /// 802.11 also provides a mechanism (i.e. Fast BSS Transition) that allows a device to
1031    /// maintain association with the original BSS while establishing authentication with the
1032    /// target BSS, in order to avoid losing the original association if authentication with the
1033    /// target BSS fails.
1034    pub original_association_maintained: Option<bool>,
1035    #[doc(hidden)]
1036    pub __source_breaking: fidl::marker::SourceBreaking,
1037}
1038
1039impl fidl::Persistable for WlanFullmacImplIfcRoamStartIndRequest {}
1040
1041#[derive(Clone, Debug, Default, PartialEq)]
1042pub struct WlanFullmacImplIfcSaeHandshakeIndRequest {
1043    pub peer_sta_address: Option<[u8; 6]>,
1044    #[doc(hidden)]
1045    pub __source_breaking: fidl::marker::SourceBreaking,
1046}
1047
1048impl fidl::Persistable for WlanFullmacImplIfcSaeHandshakeIndRequest {}
1049
1050#[derive(Clone, Debug, Default, PartialEq)]
1051pub struct WlanFullmacImplIfcStartConfRequest {
1052    /// The result of the StartBss request. Required.
1053    pub result_code: Option<StartResult>,
1054    #[doc(hidden)]
1055    pub __source_breaking: fidl::marker::SourceBreaking,
1056}
1057
1058impl fidl::Persistable for WlanFullmacImplIfcStartConfRequest {}
1059
1060#[derive(Clone, Debug, Default, PartialEq)]
1061pub struct WlanFullmacImplIfcStopConfRequest {
1062    /// The result of the StopBss request. Required.
1063    pub result_code: Option<StopResult>,
1064    #[doc(hidden)]
1065    pub __source_breaking: fidl::marker::SourceBreaking,
1066}
1067
1068impl fidl::Persistable for WlanFullmacImplIfcStopConfRequest {}
1069
1070#[derive(Clone, Debug, Default, PartialEq)]
1071pub struct WlanFullmacImplOnLinkStateChangedRequest {
1072    pub online: Option<bool>,
1073    #[doc(hidden)]
1074    pub __source_breaking: fidl::marker::SourceBreaking,
1075}
1076
1077impl fidl::Persistable for WlanFullmacImplOnLinkStateChangedRequest {}
1078
1079#[derive(Clone, Debug, Default, PartialEq)]
1080pub struct WlanFullmacImplReconnectRequest {
1081    pub peer_sta_address: Option<[u8; 6]>,
1082    #[doc(hidden)]
1083    pub __source_breaking: fidl::marker::SourceBreaking,
1084}
1085
1086impl fidl::Persistable for WlanFullmacImplReconnectRequest {}
1087
1088#[derive(Clone, Debug, Default, PartialEq)]
1089pub struct WlanFullmacImplRoamRequest {
1090    /// Full BSS description of the target BSS. Required.
1091    /// If the data in BssDescription is incorrect or incomplete, the roam cannot succeed,
1092    /// because higher layers will not be able to complete required actions (e.g. SAE).
1093    pub selected_bss: Option<fidl_fuchsia_wlan_common__common::BssDescription>,
1094    #[doc(hidden)]
1095    pub __source_breaking: fidl::marker::SourceBreaking,
1096}
1097
1098impl fidl::Persistable for WlanFullmacImplRoamRequest {}
1099
1100#[derive(Clone, Debug, Default, PartialEq)]
1101pub struct WlanFullmacImplSaeHandshakeRespRequest {
1102    /// The peer's MAC address. Required.
1103    pub peer_sta_address: Option<[u8; 6]>,
1104    /// The status of the SAE handshake. Required.
1105    pub status_code: Option<fidl_fuchsia_wlan_ieee80211__common::StatusCode>,
1106    #[doc(hidden)]
1107    pub __source_breaking: fidl::marker::SourceBreaking,
1108}
1109
1110impl fidl::Persistable for WlanFullmacImplSaeHandshakeRespRequest {}
1111
1112#[derive(Clone, Debug, Default, PartialEq)]
1113pub struct WlanFullmacImplSetKeysRequest {
1114    pub keylist: Option<Vec<fidl_fuchsia_wlan_common__common::WlanKeyConfig>>,
1115    pub key_descriptors: Option<Vec<fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor>>,
1116    #[doc(hidden)]
1117    pub __source_breaking: fidl::marker::SourceBreaking,
1118}
1119
1120impl fidl::Persistable for WlanFullmacImplSetKeysRequest {}
1121
1122#[derive(Clone, Debug, Default, PartialEq)]
1123pub struct WlanFullmacImplStartBssRequest {
1124    pub ssid: Option<Vec<u8>>,
1125    pub bss_type: Option<fidl_fuchsia_wlan_common__common::BssType>,
1126    pub beacon_period: Option<u32>,
1127    pub dtim_period: Option<u32>,
1128    pub channel: Option<u8>,
1129    pub rsne: Option<Vec<u8>>,
1130    pub vendor_ie: Option<Vec<u8>>,
1131    #[doc(hidden)]
1132    pub __source_breaking: fidl::marker::SourceBreaking,
1133}
1134
1135impl fidl::Persistable for WlanFullmacImplStartBssRequest {}
1136
1137#[derive(Clone, Debug, Default, PartialEq)]
1138pub struct WlanFullmacImplStartScanRequest {
1139    /// Unique transaction id (will be indicated in corresponding scan results).
1140    pub txn_id: Option<u64>,
1141    pub scan_type: Option<WlanScanType>,
1142    /// List of channels to scan on. An empty list of channels will cause a
1143    /// scan request to immediately return a OnScanEnd with code INVALID_ARGS.
1144    ///
1145    /// Invalid channel numbers will be silently ignored. The validity of a channel
1146    /// number depends on the current regulatory region, and a FullMAC driver cannot
1147    /// always determine the region setting. This is especially the case when
1148    /// firmware changes the region setting dynamically.
1149    pub channels: Option<Vec<u8>>,
1150    /// List of SSIDs to scan for. An empty list of ssids is the same as specifying
1151    /// a list containing only the wildcard SSID.
1152    ///
1153    /// There is no limit on the number of SSIDs specified. A large number of
1154    /// SSIDs may result in extended scan times because of hardware limitations on
1155    /// the number of SSIDs permitted per scan request and the technical limitation
1156    /// in IEEE 802.11-2016 that limits the number of SSIDs in a single Probe Request
1157    /// frame to ieee80211.SSID_LIST_MAX SSIDs.
1158    pub ssids: Option<Vec<Vec<u8>>>,
1159    /// Minimum amount of time in msecs spent on a channel during scan.
1160    pub min_channel_time: Option<u32>,
1161    /// Maximum amount of time in msecs spent on a channel during scan.
1162    pub max_channel_time: Option<u32>,
1163    #[doc(hidden)]
1164    pub __source_breaking: fidl::marker::SourceBreaking,
1165}
1166
1167impl fidl::Persistable for WlanFullmacImplStartScanRequest {}
1168
1169#[derive(Clone, Debug, Default, PartialEq)]
1170pub struct WlanFullmacImplStopBssRequest {
1171    pub ssid: Option<Vec<u8>>,
1172    #[doc(hidden)]
1173    pub __source_breaking: fidl::marker::SourceBreaking,
1174}
1175
1176impl fidl::Persistable for WlanFullmacImplStopBssRequest {}
1177
1178#[derive(Clone, Debug, Default, PartialEq)]
1179pub struct WlanFullmacImplQuerySecuritySupportResponse {
1180    pub resp: Option<fidl_fuchsia_wlan_common__common::SecuritySupport>,
1181    #[doc(hidden)]
1182    pub __source_breaking: fidl::marker::SourceBreaking,
1183}
1184
1185impl fidl::Persistable for WlanFullmacImplQuerySecuritySupportResponse {}
1186
1187#[derive(Clone, Debug, Default, PartialEq)]
1188pub struct WlanFullmacImplQuerySpectrumManagementSupportResponse {
1189    pub resp: Option<fidl_fuchsia_wlan_common__common::SpectrumManagementSupport>,
1190    #[doc(hidden)]
1191    pub __source_breaking: fidl::marker::SourceBreaking,
1192}
1193
1194impl fidl::Persistable for WlanFullmacImplQuerySpectrumManagementSupportResponse {}
1195
1196#[derive(Clone, Debug, Default, PartialEq)]
1197pub struct WlanFullmacImplQueryTelemetrySupportResponse {
1198    pub resp: Option<fidl_fuchsia_wlan_stats__common::TelemetrySupport>,
1199    #[doc(hidden)]
1200    pub __source_breaking: fidl::marker::SourceBreaking,
1201}
1202
1203impl fidl::Persistable for WlanFullmacImplQueryTelemetrySupportResponse {}
1204
1205#[derive(Clone, Debug, Default, PartialEq)]
1206pub struct WlanFullmacImplQueryResponse {
1207    /// Current station address. Required.
1208    pub sta_addr: Option<[u8; 6]>,
1209    /// MAC role. Required.
1210    pub role: Option<fidl_fuchsia_wlan_common__common::WlanMacRole>,
1211    /// Supported bands. Required.
1212    pub band_caps: Option<Vec<BandCapability>>,
1213    /// Factory mac address. Required.
1214    pub factory_addr: Option<[u8; 6]>,
1215    #[doc(hidden)]
1216    pub __source_breaking: fidl::marker::SourceBreaking,
1217}
1218
1219impl fidl::Persistable for WlanFullmacImplQueryResponse {}
1220
1221pub mod wlan_fullmac_impl__ordinals {
1222    pub const INIT: u64 = 0x593dfb6cb3f0f1aa;
1223    pub const QUERY: u64 = 0x28ac65f9da3941d4;
1224    pub const QUERY_SECURITY_SUPPORT: u64 = 0x11cf3fa6eeb93f84;
1225    pub const QUERY_SPECTRUM_MANAGEMENT_SUPPORT: u64 = 0x22ae7551d855b83a;
1226    pub const QUERY_TELEMETRY_SUPPORT: u64 = 0x4561479ca560827f;
1227    pub const START_SCAN: u64 = 0x26c17bf595aa161c;
1228    pub const CONNECT: u64 = 0x19eb0322efb07a76;
1229    pub const RECONNECT: u64 = 0x474084c4ef19ee71;
1230    pub const ROAM: u64 = 0x1e35dcc98b124b64;
1231    pub const AUTH_RESP: u64 = 0x5f7ea24b44a4aaeb;
1232    pub const DEAUTH: u64 = 0x112786eccbf12f37;
1233    pub const ASSOC_RESP: u64 = 0x5022ce6b8eefec2f;
1234    pub const DISASSOC: u64 = 0x9c0fc4e8de53e01;
1235    pub const START_BSS: u64 = 0x6922644d6b1d341d;
1236    pub const STOP_BSS: u64 = 0x5aeb9b72e7575268;
1237    pub const SET_KEYS: u64 = 0x20f46b1e039f0985;
1238    pub const EAPOL_TX: u64 = 0x529a2d90fd4c8177;
1239    pub const GET_IFACE_STATS: u64 = 0x505563776ef0392f;
1240    pub const GET_IFACE_HISTOGRAM_STATS: u64 = 0x503d586f30ccf2cd;
1241    pub const GET_SIGNAL_REPORT: u64 = 0x5d93f056e4796bb3;
1242    pub const SAE_HANDSHAKE_RESP: u64 = 0x72cd3a31ae5a54f6;
1243    pub const SAE_FRAME_TX: u64 = 0x4715ad5dc5a6340f;
1244    pub const WMM_STATUS_REQ: u64 = 0x635ecef3beb7a059;
1245    pub const ON_LINK_STATE_CHANGED: u64 = 0x4d896e5b68e488d7;
1246    pub const SET_MAC_ADDRESS: u64 = 0x211a97f6f21ae5f0;
1247}
1248
1249pub mod wlan_fullmac_impl_ifc_ordinals {
1250    pub const ON_SCAN_RESULT: u64 = 0x29aa81dc570f7a3e;
1251    pub const ON_SCAN_END: u64 = 0x7cd8aff80d27073c;
1252    pub const CONNECT_CONF: u64 = 0x3c22c6d80b2a2759;
1253    pub const ROAM_CONF: u64 = 0x368b2a5b903b3f7b;
1254    pub const ROAM_START_IND: u64 = 0x23e1d9368935e7e4;
1255    pub const ROAM_RESULT_IND: u64 = 0x7081c1b1ceea4914;
1256    pub const AUTH_IND: u64 = 0x270e1f8889650d0b;
1257    pub const DEAUTH_CONF: u64 = 0x2c94b0d7258111b7;
1258    pub const DEAUTH_IND: u64 = 0x26cd27cdadd8dbaf;
1259    pub const ASSOC_IND: u64 = 0x3e44529e3dc179ce;
1260    pub const DISASSOC_CONF: u64 = 0x7c713bcd58a76cb3;
1261    pub const DISASSOC_IND: u64 = 0x6667b381b7f3990f;
1262    pub const START_CONF: u64 = 0x3e9b9641f3ddc7fc;
1263    pub const STOP_CONF: u64 = 0x320a5ff227a4e9df;
1264    pub const EAPOL_CONF: u64 = 0x77364db9cc3970ec;
1265    pub const ON_CHANNEL_SWITCH: u64 = 0x21db0b8f71cae647;
1266    pub const SIGNAL_REPORT: u64 = 0x79679fa8789c3d9f;
1267    pub const EAPOL_IND: u64 = 0x3de8ec1eda10d1d0;
1268    pub const ON_PMK_AVAILABLE: u64 = 0x5cedd8d9be28a17e;
1269    pub const SAE_HANDSHAKE_IND: u64 = 0x4f3d53885503a1d8;
1270    pub const SAE_FRAME_RX: u64 = 0x51650906857ed4d4;
1271    pub const ON_WMM_STATUS_RESP: u64 = 0x6823a88bf3ba8b2a;
1272}
1273
1274mod internal {
1275    use super::*;
1276    unsafe impl fidl::encoding::TypeMarker for EapolTxResult {
1277        type Owned = Self;
1278
1279        #[inline(always)]
1280        fn inline_align(_context: fidl::encoding::Context) -> usize {
1281            std::mem::align_of::<u8>()
1282        }
1283
1284        #[inline(always)]
1285        fn inline_size(_context: fidl::encoding::Context) -> usize {
1286            std::mem::size_of::<u8>()
1287        }
1288
1289        #[inline(always)]
1290        fn encode_is_copy() -> bool {
1291            false
1292        }
1293
1294        #[inline(always)]
1295        fn decode_is_copy() -> bool {
1296            false
1297        }
1298    }
1299
1300    impl fidl::encoding::ValueTypeMarker for EapolTxResult {
1301        type Borrowed<'a> = Self;
1302        #[inline(always)]
1303        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1304            *value
1305        }
1306    }
1307
1308    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for EapolTxResult {
1309        #[inline]
1310        unsafe fn encode(
1311            self,
1312            encoder: &mut fidl::encoding::Encoder<'_, D>,
1313            offset: usize,
1314            _depth: fidl::encoding::Depth,
1315        ) -> fidl::Result<()> {
1316            encoder.debug_check_bounds::<Self>(offset);
1317            encoder.write_num(self.into_primitive(), offset);
1318            Ok(())
1319        }
1320    }
1321
1322    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EapolTxResult {
1323        #[inline(always)]
1324        fn new_empty() -> Self {
1325            Self::unknown()
1326        }
1327
1328        #[inline]
1329        unsafe fn decode(
1330            &mut self,
1331            decoder: &mut fidl::encoding::Decoder<'_, D>,
1332            offset: usize,
1333            _depth: fidl::encoding::Depth,
1334        ) -> fidl::Result<()> {
1335            decoder.debug_check_bounds::<Self>(offset);
1336            let prim = decoder.read_num::<u8>(offset);
1337
1338            *self = Self::from_primitive_allow_unknown(prim);
1339            Ok(())
1340        }
1341    }
1342    unsafe impl fidl::encoding::TypeMarker for StartResult {
1343        type Owned = Self;
1344
1345        #[inline(always)]
1346        fn inline_align(_context: fidl::encoding::Context) -> usize {
1347            std::mem::align_of::<u8>()
1348        }
1349
1350        #[inline(always)]
1351        fn inline_size(_context: fidl::encoding::Context) -> usize {
1352            std::mem::size_of::<u8>()
1353        }
1354
1355        #[inline(always)]
1356        fn encode_is_copy() -> bool {
1357            false
1358        }
1359
1360        #[inline(always)]
1361        fn decode_is_copy() -> bool {
1362            false
1363        }
1364    }
1365
1366    impl fidl::encoding::ValueTypeMarker for StartResult {
1367        type Borrowed<'a> = Self;
1368        #[inline(always)]
1369        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1370            *value
1371        }
1372    }
1373
1374    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for StartResult {
1375        #[inline]
1376        unsafe fn encode(
1377            self,
1378            encoder: &mut fidl::encoding::Encoder<'_, D>,
1379            offset: usize,
1380            _depth: fidl::encoding::Depth,
1381        ) -> fidl::Result<()> {
1382            encoder.debug_check_bounds::<Self>(offset);
1383            encoder.write_num(self.into_primitive(), offset);
1384            Ok(())
1385        }
1386    }
1387
1388    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StartResult {
1389        #[inline(always)]
1390        fn new_empty() -> Self {
1391            Self::unknown()
1392        }
1393
1394        #[inline]
1395        unsafe fn decode(
1396            &mut self,
1397            decoder: &mut fidl::encoding::Decoder<'_, D>,
1398            offset: usize,
1399            _depth: fidl::encoding::Depth,
1400        ) -> fidl::Result<()> {
1401            decoder.debug_check_bounds::<Self>(offset);
1402            let prim = decoder.read_num::<u8>(offset);
1403
1404            *self = Self::from_primitive_allow_unknown(prim);
1405            Ok(())
1406        }
1407    }
1408    unsafe impl fidl::encoding::TypeMarker for StopResult {
1409        type Owned = Self;
1410
1411        #[inline(always)]
1412        fn inline_align(_context: fidl::encoding::Context) -> usize {
1413            std::mem::align_of::<u8>()
1414        }
1415
1416        #[inline(always)]
1417        fn inline_size(_context: fidl::encoding::Context) -> usize {
1418            std::mem::size_of::<u8>()
1419        }
1420
1421        #[inline(always)]
1422        fn encode_is_copy() -> bool {
1423            false
1424        }
1425
1426        #[inline(always)]
1427        fn decode_is_copy() -> bool {
1428            false
1429        }
1430    }
1431
1432    impl fidl::encoding::ValueTypeMarker for StopResult {
1433        type Borrowed<'a> = Self;
1434        #[inline(always)]
1435        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1436            *value
1437        }
1438    }
1439
1440    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for StopResult {
1441        #[inline]
1442        unsafe fn encode(
1443            self,
1444            encoder: &mut fidl::encoding::Encoder<'_, D>,
1445            offset: usize,
1446            _depth: fidl::encoding::Depth,
1447        ) -> fidl::Result<()> {
1448            encoder.debug_check_bounds::<Self>(offset);
1449            encoder.write_num(self.into_primitive(), offset);
1450            Ok(())
1451        }
1452    }
1453
1454    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StopResult {
1455        #[inline(always)]
1456        fn new_empty() -> Self {
1457            Self::unknown()
1458        }
1459
1460        #[inline]
1461        unsafe fn decode(
1462            &mut self,
1463            decoder: &mut fidl::encoding::Decoder<'_, D>,
1464            offset: usize,
1465            _depth: fidl::encoding::Depth,
1466        ) -> fidl::Result<()> {
1467            decoder.debug_check_bounds::<Self>(offset);
1468            let prim = decoder.read_num::<u8>(offset);
1469
1470            *self = Self::from_primitive_allow_unknown(prim);
1471            Ok(())
1472        }
1473    }
1474    unsafe impl fidl::encoding::TypeMarker for WlanAssocResult {
1475        type Owned = Self;
1476
1477        #[inline(always)]
1478        fn inline_align(_context: fidl::encoding::Context) -> usize {
1479            std::mem::align_of::<u8>()
1480        }
1481
1482        #[inline(always)]
1483        fn inline_size(_context: fidl::encoding::Context) -> usize {
1484            std::mem::size_of::<u8>()
1485        }
1486
1487        #[inline(always)]
1488        fn encode_is_copy() -> bool {
1489            false
1490        }
1491
1492        #[inline(always)]
1493        fn decode_is_copy() -> bool {
1494            false
1495        }
1496    }
1497
1498    impl fidl::encoding::ValueTypeMarker for WlanAssocResult {
1499        type Borrowed<'a> = Self;
1500        #[inline(always)]
1501        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1502            *value
1503        }
1504    }
1505
1506    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1507        for WlanAssocResult
1508    {
1509        #[inline]
1510        unsafe fn encode(
1511            self,
1512            encoder: &mut fidl::encoding::Encoder<'_, D>,
1513            offset: usize,
1514            _depth: fidl::encoding::Depth,
1515        ) -> fidl::Result<()> {
1516            encoder.debug_check_bounds::<Self>(offset);
1517            encoder.write_num(self.into_primitive(), offset);
1518            Ok(())
1519        }
1520    }
1521
1522    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanAssocResult {
1523        #[inline(always)]
1524        fn new_empty() -> Self {
1525            Self::unknown()
1526        }
1527
1528        #[inline]
1529        unsafe fn decode(
1530            &mut self,
1531            decoder: &mut fidl::encoding::Decoder<'_, D>,
1532            offset: usize,
1533            _depth: fidl::encoding::Depth,
1534        ) -> fidl::Result<()> {
1535            decoder.debug_check_bounds::<Self>(offset);
1536            let prim = decoder.read_num::<u8>(offset);
1537
1538            *self = Self::from_primitive_allow_unknown(prim);
1539            Ok(())
1540        }
1541    }
1542    unsafe impl fidl::encoding::TypeMarker for WlanAuthResult {
1543        type Owned = Self;
1544
1545        #[inline(always)]
1546        fn inline_align(_context: fidl::encoding::Context) -> usize {
1547            std::mem::align_of::<u8>()
1548        }
1549
1550        #[inline(always)]
1551        fn inline_size(_context: fidl::encoding::Context) -> usize {
1552            std::mem::size_of::<u8>()
1553        }
1554
1555        #[inline(always)]
1556        fn encode_is_copy() -> bool {
1557            false
1558        }
1559
1560        #[inline(always)]
1561        fn decode_is_copy() -> bool {
1562            false
1563        }
1564    }
1565
1566    impl fidl::encoding::ValueTypeMarker for WlanAuthResult {
1567        type Borrowed<'a> = Self;
1568        #[inline(always)]
1569        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1570            *value
1571        }
1572    }
1573
1574    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanAuthResult {
1575        #[inline]
1576        unsafe fn encode(
1577            self,
1578            encoder: &mut fidl::encoding::Encoder<'_, D>,
1579            offset: usize,
1580            _depth: fidl::encoding::Depth,
1581        ) -> fidl::Result<()> {
1582            encoder.debug_check_bounds::<Self>(offset);
1583            encoder.write_num(self.into_primitive(), offset);
1584            Ok(())
1585        }
1586    }
1587
1588    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanAuthResult {
1589        #[inline(always)]
1590        fn new_empty() -> Self {
1591            Self::unknown()
1592        }
1593
1594        #[inline]
1595        unsafe fn decode(
1596            &mut self,
1597            decoder: &mut fidl::encoding::Decoder<'_, D>,
1598            offset: usize,
1599            _depth: fidl::encoding::Depth,
1600        ) -> fidl::Result<()> {
1601            decoder.debug_check_bounds::<Self>(offset);
1602            let prim = decoder.read_num::<u8>(offset);
1603
1604            *self = Self::from_primitive_allow_unknown(prim);
1605            Ok(())
1606        }
1607    }
1608    unsafe impl fidl::encoding::TypeMarker for WlanAuthType {
1609        type Owned = Self;
1610
1611        #[inline(always)]
1612        fn inline_align(_context: fidl::encoding::Context) -> usize {
1613            std::mem::align_of::<u8>()
1614        }
1615
1616        #[inline(always)]
1617        fn inline_size(_context: fidl::encoding::Context) -> usize {
1618            std::mem::size_of::<u8>()
1619        }
1620
1621        #[inline(always)]
1622        fn encode_is_copy() -> bool {
1623            false
1624        }
1625
1626        #[inline(always)]
1627        fn decode_is_copy() -> bool {
1628            false
1629        }
1630    }
1631
1632    impl fidl::encoding::ValueTypeMarker for WlanAuthType {
1633        type Borrowed<'a> = Self;
1634        #[inline(always)]
1635        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1636            *value
1637        }
1638    }
1639
1640    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanAuthType {
1641        #[inline]
1642        unsafe fn encode(
1643            self,
1644            encoder: &mut fidl::encoding::Encoder<'_, D>,
1645            offset: usize,
1646            _depth: fidl::encoding::Depth,
1647        ) -> fidl::Result<()> {
1648            encoder.debug_check_bounds::<Self>(offset);
1649            encoder.write_num(self.into_primitive(), offset);
1650            Ok(())
1651        }
1652    }
1653
1654    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanAuthType {
1655        #[inline(always)]
1656        fn new_empty() -> Self {
1657            Self::unknown()
1658        }
1659
1660        #[inline]
1661        unsafe fn decode(
1662            &mut self,
1663            decoder: &mut fidl::encoding::Decoder<'_, D>,
1664            offset: usize,
1665            _depth: fidl::encoding::Depth,
1666        ) -> fidl::Result<()> {
1667            decoder.debug_check_bounds::<Self>(offset);
1668            let prim = decoder.read_num::<u8>(offset);
1669
1670            *self = Self::from_primitive_allow_unknown(prim);
1671            Ok(())
1672        }
1673    }
1674    unsafe impl fidl::encoding::TypeMarker for WlanScanResult {
1675        type Owned = Self;
1676
1677        #[inline(always)]
1678        fn inline_align(_context: fidl::encoding::Context) -> usize {
1679            std::mem::align_of::<u8>()
1680        }
1681
1682        #[inline(always)]
1683        fn inline_size(_context: fidl::encoding::Context) -> usize {
1684            std::mem::size_of::<u8>()
1685        }
1686
1687        #[inline(always)]
1688        fn encode_is_copy() -> bool {
1689            false
1690        }
1691
1692        #[inline(always)]
1693        fn decode_is_copy() -> bool {
1694            false
1695        }
1696    }
1697
1698    impl fidl::encoding::ValueTypeMarker for WlanScanResult {
1699        type Borrowed<'a> = Self;
1700        #[inline(always)]
1701        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1702            *value
1703        }
1704    }
1705
1706    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanScanResult {
1707        #[inline]
1708        unsafe fn encode(
1709            self,
1710            encoder: &mut fidl::encoding::Encoder<'_, D>,
1711            offset: usize,
1712            _depth: fidl::encoding::Depth,
1713        ) -> fidl::Result<()> {
1714            encoder.debug_check_bounds::<Self>(offset);
1715            encoder.write_num(self.into_primitive(), offset);
1716            Ok(())
1717        }
1718    }
1719
1720    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanScanResult {
1721        #[inline(always)]
1722        fn new_empty() -> Self {
1723            Self::unknown()
1724        }
1725
1726        #[inline]
1727        unsafe fn decode(
1728            &mut self,
1729            decoder: &mut fidl::encoding::Decoder<'_, D>,
1730            offset: usize,
1731            _depth: fidl::encoding::Depth,
1732        ) -> fidl::Result<()> {
1733            decoder.debug_check_bounds::<Self>(offset);
1734            let prim = decoder.read_num::<u8>(offset);
1735
1736            *self = Self::from_primitive_allow_unknown(prim);
1737            Ok(())
1738        }
1739    }
1740    unsafe impl fidl::encoding::TypeMarker for WlanScanType {
1741        type Owned = Self;
1742
1743        #[inline(always)]
1744        fn inline_align(_context: fidl::encoding::Context) -> usize {
1745            std::mem::align_of::<u8>()
1746        }
1747
1748        #[inline(always)]
1749        fn inline_size(_context: fidl::encoding::Context) -> usize {
1750            std::mem::size_of::<u8>()
1751        }
1752
1753        #[inline(always)]
1754        fn encode_is_copy() -> bool {
1755            false
1756        }
1757
1758        #[inline(always)]
1759        fn decode_is_copy() -> bool {
1760            false
1761        }
1762    }
1763
1764    impl fidl::encoding::ValueTypeMarker for WlanScanType {
1765        type Borrowed<'a> = Self;
1766        #[inline(always)]
1767        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1768            *value
1769        }
1770    }
1771
1772    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanScanType {
1773        #[inline]
1774        unsafe fn encode(
1775            self,
1776            encoder: &mut fidl::encoding::Encoder<'_, D>,
1777            offset: usize,
1778            _depth: fidl::encoding::Depth,
1779        ) -> fidl::Result<()> {
1780            encoder.debug_check_bounds::<Self>(offset);
1781            encoder.write_num(self.into_primitive(), offset);
1782            Ok(())
1783        }
1784    }
1785
1786    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanScanType {
1787        #[inline(always)]
1788        fn new_empty() -> Self {
1789            Self::unknown()
1790        }
1791
1792        #[inline]
1793        unsafe fn decode(
1794            &mut self,
1795            decoder: &mut fidl::encoding::Decoder<'_, D>,
1796            offset: usize,
1797            _depth: fidl::encoding::Depth,
1798        ) -> fidl::Result<()> {
1799            decoder.debug_check_bounds::<Self>(offset);
1800            let prim = decoder.read_num::<u8>(offset);
1801
1802            *self = Self::from_primitive_allow_unknown(prim);
1803            Ok(())
1804        }
1805    }
1806
1807    impl fidl::encoding::ValueTypeMarker for WlanFullmacChannelSwitchInfo {
1808        type Borrowed<'a> = &'a Self;
1809        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1810            value
1811        }
1812    }
1813
1814    unsafe impl fidl::encoding::TypeMarker for WlanFullmacChannelSwitchInfo {
1815        type Owned = Self;
1816
1817        #[inline(always)]
1818        fn inline_align(_context: fidl::encoding::Context) -> usize {
1819            1
1820        }
1821
1822        #[inline(always)]
1823        fn inline_size(_context: fidl::encoding::Context) -> usize {
1824            1
1825        }
1826        #[inline(always)]
1827        fn encode_is_copy() -> bool {
1828            true
1829        }
1830
1831        #[inline(always)]
1832        fn decode_is_copy() -> bool {
1833            true
1834        }
1835    }
1836
1837    unsafe impl<D: fidl::encoding::ResourceDialect>
1838        fidl::encoding::Encode<WlanFullmacChannelSwitchInfo, D> for &WlanFullmacChannelSwitchInfo
1839    {
1840        #[inline]
1841        unsafe fn encode(
1842            self,
1843            encoder: &mut fidl::encoding::Encoder<'_, D>,
1844            offset: usize,
1845            _depth: fidl::encoding::Depth,
1846        ) -> fidl::Result<()> {
1847            encoder.debug_check_bounds::<WlanFullmacChannelSwitchInfo>(offset);
1848            unsafe {
1849                // Copy the object into the buffer.
1850                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1851                (buf_ptr as *mut WlanFullmacChannelSwitchInfo)
1852                    .write_unaligned((self as *const WlanFullmacChannelSwitchInfo).read());
1853                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
1854                // done second because the memcpy will write garbage to these bytes.
1855            }
1856            Ok(())
1857        }
1858    }
1859    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u8, D>>
1860        fidl::encoding::Encode<WlanFullmacChannelSwitchInfo, D> for (T0,)
1861    {
1862        #[inline]
1863        unsafe fn encode(
1864            self,
1865            encoder: &mut fidl::encoding::Encoder<'_, D>,
1866            offset: usize,
1867            depth: fidl::encoding::Depth,
1868        ) -> fidl::Result<()> {
1869            encoder.debug_check_bounds::<WlanFullmacChannelSwitchInfo>(offset);
1870            // Zero out padding regions. There's no need to apply masks
1871            // because the unmasked parts will be overwritten by fields.
1872            // Write the fields.
1873            self.0.encode(encoder, offset + 0, depth)?;
1874            Ok(())
1875        }
1876    }
1877
1878    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1879        for WlanFullmacChannelSwitchInfo
1880    {
1881        #[inline(always)]
1882        fn new_empty() -> Self {
1883            Self { new_channel: fidl::new_empty!(u8, D) }
1884        }
1885
1886        #[inline]
1887        unsafe fn decode(
1888            &mut self,
1889            decoder: &mut fidl::encoding::Decoder<'_, D>,
1890            offset: usize,
1891            _depth: fidl::encoding::Depth,
1892        ) -> fidl::Result<()> {
1893            decoder.debug_check_bounds::<Self>(offset);
1894            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1895            // Verify that padding bytes are zero.
1896            // Copy from the buffer into the object.
1897            unsafe {
1898                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 1);
1899            }
1900            Ok(())
1901        }
1902    }
1903
1904    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnChannelSwitchRequest {
1905        type Borrowed<'a> = &'a Self;
1906        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1907            value
1908        }
1909    }
1910
1911    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcOnChannelSwitchRequest {
1912        type Owned = Self;
1913
1914        #[inline(always)]
1915        fn inline_align(_context: fidl::encoding::Context) -> usize {
1916            1
1917        }
1918
1919        #[inline(always)]
1920        fn inline_size(_context: fidl::encoding::Context) -> usize {
1921            1
1922        }
1923        #[inline(always)]
1924        fn encode_is_copy() -> bool {
1925            true
1926        }
1927
1928        #[inline(always)]
1929        fn decode_is_copy() -> bool {
1930            true
1931        }
1932    }
1933
1934    unsafe impl<D: fidl::encoding::ResourceDialect>
1935        fidl::encoding::Encode<WlanFullmacImplIfcOnChannelSwitchRequest, D>
1936        for &WlanFullmacImplIfcOnChannelSwitchRequest
1937    {
1938        #[inline]
1939        unsafe fn encode(
1940            self,
1941            encoder: &mut fidl::encoding::Encoder<'_, D>,
1942            offset: usize,
1943            _depth: fidl::encoding::Depth,
1944        ) -> fidl::Result<()> {
1945            encoder.debug_check_bounds::<WlanFullmacImplIfcOnChannelSwitchRequest>(offset);
1946            unsafe {
1947                // Copy the object into the buffer.
1948                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1949                (buf_ptr as *mut WlanFullmacImplIfcOnChannelSwitchRequest).write_unaligned(
1950                    (self as *const WlanFullmacImplIfcOnChannelSwitchRequest).read(),
1951                );
1952                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
1953                // done second because the memcpy will write garbage to these bytes.
1954            }
1955            Ok(())
1956        }
1957    }
1958    unsafe impl<
1959        D: fidl::encoding::ResourceDialect,
1960        T0: fidl::encoding::Encode<WlanFullmacChannelSwitchInfo, D>,
1961    > fidl::encoding::Encode<WlanFullmacImplIfcOnChannelSwitchRequest, D> for (T0,)
1962    {
1963        #[inline]
1964        unsafe fn encode(
1965            self,
1966            encoder: &mut fidl::encoding::Encoder<'_, D>,
1967            offset: usize,
1968            depth: fidl::encoding::Depth,
1969        ) -> fidl::Result<()> {
1970            encoder.debug_check_bounds::<WlanFullmacImplIfcOnChannelSwitchRequest>(offset);
1971            // Zero out padding regions. There's no need to apply masks
1972            // because the unmasked parts will be overwritten by fields.
1973            // Write the fields.
1974            self.0.encode(encoder, offset + 0, depth)?;
1975            Ok(())
1976        }
1977    }
1978
1979    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1980        for WlanFullmacImplIfcOnChannelSwitchRequest
1981    {
1982        #[inline(always)]
1983        fn new_empty() -> Self {
1984            Self { ind: fidl::new_empty!(WlanFullmacChannelSwitchInfo, D) }
1985        }
1986
1987        #[inline]
1988        unsafe fn decode(
1989            &mut self,
1990            decoder: &mut fidl::encoding::Decoder<'_, D>,
1991            offset: usize,
1992            _depth: fidl::encoding::Depth,
1993        ) -> fidl::Result<()> {
1994            decoder.debug_check_bounds::<Self>(offset);
1995            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1996            // Verify that padding bytes are zero.
1997            // Copy from the buffer into the object.
1998            unsafe {
1999                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 1);
2000            }
2001            Ok(())
2002        }
2003    }
2004
2005    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnWmmStatusRespRequest {
2006        type Borrowed<'a> = &'a Self;
2007        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2008            value
2009        }
2010    }
2011
2012    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcOnWmmStatusRespRequest {
2013        type Owned = Self;
2014
2015        #[inline(always)]
2016        fn inline_align(_context: fidl::encoding::Context) -> usize {
2017            4
2018        }
2019
2020        #[inline(always)]
2021        fn inline_size(_context: fidl::encoding::Context) -> usize {
2022            40
2023        }
2024    }
2025
2026    unsafe impl<D: fidl::encoding::ResourceDialect>
2027        fidl::encoding::Encode<WlanFullmacImplIfcOnWmmStatusRespRequest, D>
2028        for &WlanFullmacImplIfcOnWmmStatusRespRequest
2029    {
2030        #[inline]
2031        unsafe fn encode(
2032            self,
2033            encoder: &mut fidl::encoding::Encoder<'_, D>,
2034            offset: usize,
2035            _depth: fidl::encoding::Depth,
2036        ) -> fidl::Result<()> {
2037            encoder.debug_check_bounds::<WlanFullmacImplIfcOnWmmStatusRespRequest>(offset);
2038            // Delegate to tuple encoding.
2039            fidl::encoding::Encode::<WlanFullmacImplIfcOnWmmStatusRespRequest, D>::encode(
2040                (
2041                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(&self.status),
2042                    <fidl_fuchsia_wlan_common__common::WlanWmmParameters as fidl::encoding::ValueTypeMarker>::borrow(&self.wmm_params),
2043                ),
2044                encoder, offset, _depth
2045            )
2046        }
2047    }
2048    unsafe impl<
2049        D: fidl::encoding::ResourceDialect,
2050        T0: fidl::encoding::Encode<i32, D>,
2051        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_common__common::WlanWmmParameters, D>,
2052    > fidl::encoding::Encode<WlanFullmacImplIfcOnWmmStatusRespRequest, D> for (T0, T1)
2053    {
2054        #[inline]
2055        unsafe fn encode(
2056            self,
2057            encoder: &mut fidl::encoding::Encoder<'_, D>,
2058            offset: usize,
2059            depth: fidl::encoding::Depth,
2060        ) -> fidl::Result<()> {
2061            encoder.debug_check_bounds::<WlanFullmacImplIfcOnWmmStatusRespRequest>(offset);
2062            // Zero out padding regions. There's no need to apply masks
2063            // because the unmasked parts will be overwritten by fields.
2064            unsafe {
2065                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(36);
2066                (ptr as *mut u32).write_unaligned(0);
2067            }
2068            // Write the fields.
2069            self.0.encode(encoder, offset + 0, depth)?;
2070            self.1.encode(encoder, offset + 4, depth)?;
2071            Ok(())
2072        }
2073    }
2074
2075    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2076        for WlanFullmacImplIfcOnWmmStatusRespRequest
2077    {
2078        #[inline(always)]
2079        fn new_empty() -> Self {
2080            Self {
2081                status: fidl::new_empty!(i32, D),
2082                wmm_params: fidl::new_empty!(
2083                    fidl_fuchsia_wlan_common__common::WlanWmmParameters,
2084                    D
2085                ),
2086            }
2087        }
2088
2089        #[inline]
2090        unsafe fn decode(
2091            &mut self,
2092            decoder: &mut fidl::encoding::Decoder<'_, D>,
2093            offset: usize,
2094            _depth: fidl::encoding::Depth,
2095        ) -> fidl::Result<()> {
2096            decoder.debug_check_bounds::<Self>(offset);
2097            // Verify that padding bytes are zero.
2098            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(36) };
2099            let padval = unsafe { (ptr as *const u32).read_unaligned() };
2100            let mask = 0xffff0000u32;
2101            let maskedval = padval & mask;
2102            if maskedval != 0 {
2103                return Err(fidl::Error::NonZeroPadding {
2104                    padding_start: offset + 36 + ((mask as u64).trailing_zeros() / 8) as usize,
2105                });
2106            }
2107            fidl::decode!(i32, D, &mut self.status, decoder, offset + 0, _depth)?;
2108            fidl::decode!(
2109                fidl_fuchsia_wlan_common__common::WlanWmmParameters,
2110                D,
2111                &mut self.wmm_params,
2112                decoder,
2113                offset + 4,
2114                _depth
2115            )?;
2116            Ok(())
2117        }
2118    }
2119
2120    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcSaeFrameRxRequest {
2121        type Borrowed<'a> = &'a Self;
2122        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2123            value
2124        }
2125    }
2126
2127    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcSaeFrameRxRequest {
2128        type Owned = Self;
2129
2130        #[inline(always)]
2131        fn inline_align(_context: fidl::encoding::Context) -> usize {
2132            8
2133        }
2134
2135        #[inline(always)]
2136        fn inline_size(_context: fidl::encoding::Context) -> usize {
2137            16
2138        }
2139    }
2140
2141    unsafe impl<D: fidl::encoding::ResourceDialect>
2142        fidl::encoding::Encode<WlanFullmacImplIfcSaeFrameRxRequest, D>
2143        for &WlanFullmacImplIfcSaeFrameRxRequest
2144    {
2145        #[inline]
2146        unsafe fn encode(
2147            self,
2148            encoder: &mut fidl::encoding::Encoder<'_, D>,
2149            offset: usize,
2150            _depth: fidl::encoding::Depth,
2151        ) -> fidl::Result<()> {
2152            encoder.debug_check_bounds::<WlanFullmacImplIfcSaeFrameRxRequest>(offset);
2153            // Delegate to tuple encoding.
2154            fidl::encoding::Encode::<WlanFullmacImplIfcSaeFrameRxRequest, D>::encode(
2155                (<SaeFrame as fidl::encoding::ValueTypeMarker>::borrow(&self.frame),),
2156                encoder,
2157                offset,
2158                _depth,
2159            )
2160        }
2161    }
2162    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SaeFrame, D>>
2163        fidl::encoding::Encode<WlanFullmacImplIfcSaeFrameRxRequest, D> for (T0,)
2164    {
2165        #[inline]
2166        unsafe fn encode(
2167            self,
2168            encoder: &mut fidl::encoding::Encoder<'_, D>,
2169            offset: usize,
2170            depth: fidl::encoding::Depth,
2171        ) -> fidl::Result<()> {
2172            encoder.debug_check_bounds::<WlanFullmacImplIfcSaeFrameRxRequest>(offset);
2173            // Zero out padding regions. There's no need to apply masks
2174            // because the unmasked parts will be overwritten by fields.
2175            // Write the fields.
2176            self.0.encode(encoder, offset + 0, depth)?;
2177            Ok(())
2178        }
2179    }
2180
2181    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2182        for WlanFullmacImplIfcSaeFrameRxRequest
2183    {
2184        #[inline(always)]
2185        fn new_empty() -> Self {
2186            Self { frame: fidl::new_empty!(SaeFrame, D) }
2187        }
2188
2189        #[inline]
2190        unsafe fn decode(
2191            &mut self,
2192            decoder: &mut fidl::encoding::Decoder<'_, D>,
2193            offset: usize,
2194            _depth: fidl::encoding::Depth,
2195        ) -> fidl::Result<()> {
2196            decoder.debug_check_bounds::<Self>(offset);
2197            // Verify that padding bytes are zero.
2198            fidl::decode!(SaeFrame, D, &mut self.frame, decoder, offset + 0, _depth)?;
2199            Ok(())
2200        }
2201    }
2202
2203    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcSignalReportRequest {
2204        type Borrowed<'a> = &'a Self;
2205        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2206            value
2207        }
2208    }
2209
2210    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcSignalReportRequest {
2211        type Owned = Self;
2212
2213        #[inline(always)]
2214        fn inline_align(_context: fidl::encoding::Context) -> usize {
2215            1
2216        }
2217
2218        #[inline(always)]
2219        fn inline_size(_context: fidl::encoding::Context) -> usize {
2220            2
2221        }
2222        #[inline(always)]
2223        fn encode_is_copy() -> bool {
2224            true
2225        }
2226
2227        #[inline(always)]
2228        fn decode_is_copy() -> bool {
2229            true
2230        }
2231    }
2232
2233    unsafe impl<D: fidl::encoding::ResourceDialect>
2234        fidl::encoding::Encode<WlanFullmacImplIfcSignalReportRequest, D>
2235        for &WlanFullmacImplIfcSignalReportRequest
2236    {
2237        #[inline]
2238        unsafe fn encode(
2239            self,
2240            encoder: &mut fidl::encoding::Encoder<'_, D>,
2241            offset: usize,
2242            _depth: fidl::encoding::Depth,
2243        ) -> fidl::Result<()> {
2244            encoder.debug_check_bounds::<WlanFullmacImplIfcSignalReportRequest>(offset);
2245            unsafe {
2246                // Copy the object into the buffer.
2247                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2248                (buf_ptr as *mut WlanFullmacImplIfcSignalReportRequest)
2249                    .write_unaligned((self as *const WlanFullmacImplIfcSignalReportRequest).read());
2250                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
2251                // done second because the memcpy will write garbage to these bytes.
2252            }
2253            Ok(())
2254        }
2255    }
2256    unsafe impl<
2257        D: fidl::encoding::ResourceDialect,
2258        T0: fidl::encoding::Encode<WlanFullmacSignalReportIndication, D>,
2259    > fidl::encoding::Encode<WlanFullmacImplIfcSignalReportRequest, D> for (T0,)
2260    {
2261        #[inline]
2262        unsafe fn encode(
2263            self,
2264            encoder: &mut fidl::encoding::Encoder<'_, D>,
2265            offset: usize,
2266            depth: fidl::encoding::Depth,
2267        ) -> fidl::Result<()> {
2268            encoder.debug_check_bounds::<WlanFullmacImplIfcSignalReportRequest>(offset);
2269            // Zero out padding regions. There's no need to apply masks
2270            // because the unmasked parts will be overwritten by fields.
2271            // Write the fields.
2272            self.0.encode(encoder, offset + 0, depth)?;
2273            Ok(())
2274        }
2275    }
2276
2277    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2278        for WlanFullmacImplIfcSignalReportRequest
2279    {
2280        #[inline(always)]
2281        fn new_empty() -> Self {
2282            Self { ind: fidl::new_empty!(WlanFullmacSignalReportIndication, D) }
2283        }
2284
2285        #[inline]
2286        unsafe fn decode(
2287            &mut self,
2288            decoder: &mut fidl::encoding::Decoder<'_, D>,
2289            offset: usize,
2290            _depth: fidl::encoding::Depth,
2291        ) -> fidl::Result<()> {
2292            decoder.debug_check_bounds::<Self>(offset);
2293            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2294            // Verify that padding bytes are zero.
2295            // Copy from the buffer into the object.
2296            unsafe {
2297                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 2);
2298            }
2299            Ok(())
2300        }
2301    }
2302
2303    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSaeFrameTxRequest {
2304        type Borrowed<'a> = &'a Self;
2305        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2306            value
2307        }
2308    }
2309
2310    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSaeFrameTxRequest {
2311        type Owned = Self;
2312
2313        #[inline(always)]
2314        fn inline_align(_context: fidl::encoding::Context) -> usize {
2315            8
2316        }
2317
2318        #[inline(always)]
2319        fn inline_size(_context: fidl::encoding::Context) -> usize {
2320            16
2321        }
2322    }
2323
2324    unsafe impl<D: fidl::encoding::ResourceDialect>
2325        fidl::encoding::Encode<WlanFullmacImplSaeFrameTxRequest, D>
2326        for &WlanFullmacImplSaeFrameTxRequest
2327    {
2328        #[inline]
2329        unsafe fn encode(
2330            self,
2331            encoder: &mut fidl::encoding::Encoder<'_, D>,
2332            offset: usize,
2333            _depth: fidl::encoding::Depth,
2334        ) -> fidl::Result<()> {
2335            encoder.debug_check_bounds::<WlanFullmacImplSaeFrameTxRequest>(offset);
2336            // Delegate to tuple encoding.
2337            fidl::encoding::Encode::<WlanFullmacImplSaeFrameTxRequest, D>::encode(
2338                (<SaeFrame as fidl::encoding::ValueTypeMarker>::borrow(&self.frame),),
2339                encoder,
2340                offset,
2341                _depth,
2342            )
2343        }
2344    }
2345    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SaeFrame, D>>
2346        fidl::encoding::Encode<WlanFullmacImplSaeFrameTxRequest, D> for (T0,)
2347    {
2348        #[inline]
2349        unsafe fn encode(
2350            self,
2351            encoder: &mut fidl::encoding::Encoder<'_, D>,
2352            offset: usize,
2353            depth: fidl::encoding::Depth,
2354        ) -> fidl::Result<()> {
2355            encoder.debug_check_bounds::<WlanFullmacImplSaeFrameTxRequest>(offset);
2356            // Zero out padding regions. There's no need to apply masks
2357            // because the unmasked parts will be overwritten by fields.
2358            // Write the fields.
2359            self.0.encode(encoder, offset + 0, depth)?;
2360            Ok(())
2361        }
2362    }
2363
2364    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2365        for WlanFullmacImplSaeFrameTxRequest
2366    {
2367        #[inline(always)]
2368        fn new_empty() -> Self {
2369            Self { frame: fidl::new_empty!(SaeFrame, D) }
2370        }
2371
2372        #[inline]
2373        unsafe fn decode(
2374            &mut self,
2375            decoder: &mut fidl::encoding::Decoder<'_, D>,
2376            offset: usize,
2377            _depth: fidl::encoding::Depth,
2378        ) -> fidl::Result<()> {
2379            decoder.debug_check_bounds::<Self>(offset);
2380            // Verify that padding bytes are zero.
2381            fidl::decode!(SaeFrame, D, &mut self.frame, decoder, offset + 0, _depth)?;
2382            Ok(())
2383        }
2384    }
2385
2386    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSetKeysResponse {
2387        type Borrowed<'a> = &'a Self;
2388        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2389            value
2390        }
2391    }
2392
2393    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSetKeysResponse {
2394        type Owned = Self;
2395
2396        #[inline(always)]
2397        fn inline_align(_context: fidl::encoding::Context) -> usize {
2398            8
2399        }
2400
2401        #[inline(always)]
2402        fn inline_size(_context: fidl::encoding::Context) -> usize {
2403            16
2404        }
2405    }
2406
2407    unsafe impl<D: fidl::encoding::ResourceDialect>
2408        fidl::encoding::Encode<WlanFullmacImplSetKeysResponse, D>
2409        for &WlanFullmacImplSetKeysResponse
2410    {
2411        #[inline]
2412        unsafe fn encode(
2413            self,
2414            encoder: &mut fidl::encoding::Encoder<'_, D>,
2415            offset: usize,
2416            _depth: fidl::encoding::Depth,
2417        ) -> fidl::Result<()> {
2418            encoder.debug_check_bounds::<WlanFullmacImplSetKeysResponse>(offset);
2419            // Delegate to tuple encoding.
2420            fidl::encoding::Encode::<WlanFullmacImplSetKeysResponse, D>::encode(
2421                (<WlanFullmacSetKeysResp as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
2422                encoder,
2423                offset,
2424                _depth,
2425            )
2426        }
2427    }
2428    unsafe impl<
2429        D: fidl::encoding::ResourceDialect,
2430        T0: fidl::encoding::Encode<WlanFullmacSetKeysResp, D>,
2431    > fidl::encoding::Encode<WlanFullmacImplSetKeysResponse, D> for (T0,)
2432    {
2433        #[inline]
2434        unsafe fn encode(
2435            self,
2436            encoder: &mut fidl::encoding::Encoder<'_, D>,
2437            offset: usize,
2438            depth: fidl::encoding::Depth,
2439        ) -> fidl::Result<()> {
2440            encoder.debug_check_bounds::<WlanFullmacImplSetKeysResponse>(offset);
2441            // Zero out padding regions. There's no need to apply masks
2442            // because the unmasked parts will be overwritten by fields.
2443            // Write the fields.
2444            self.0.encode(encoder, offset + 0, depth)?;
2445            Ok(())
2446        }
2447    }
2448
2449    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2450        for WlanFullmacImplSetKeysResponse
2451    {
2452        #[inline(always)]
2453        fn new_empty() -> Self {
2454            Self { resp: fidl::new_empty!(WlanFullmacSetKeysResp, D) }
2455        }
2456
2457        #[inline]
2458        unsafe fn decode(
2459            &mut self,
2460            decoder: &mut fidl::encoding::Decoder<'_, D>,
2461            offset: usize,
2462            _depth: fidl::encoding::Depth,
2463        ) -> fidl::Result<()> {
2464            decoder.debug_check_bounds::<Self>(offset);
2465            // Verify that padding bytes are zero.
2466            fidl::decode!(WlanFullmacSetKeysResp, D, &mut self.resp, decoder, offset + 0, _depth)?;
2467            Ok(())
2468        }
2469    }
2470
2471    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSetMacAddressRequest {
2472        type Borrowed<'a> = &'a Self;
2473        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2474            value
2475        }
2476    }
2477
2478    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSetMacAddressRequest {
2479        type Owned = Self;
2480
2481        #[inline(always)]
2482        fn inline_align(_context: fidl::encoding::Context) -> usize {
2483            1
2484        }
2485
2486        #[inline(always)]
2487        fn inline_size(_context: fidl::encoding::Context) -> usize {
2488            6
2489        }
2490        #[inline(always)]
2491        fn encode_is_copy() -> bool {
2492            true
2493        }
2494
2495        #[inline(always)]
2496        fn decode_is_copy() -> bool {
2497            true
2498        }
2499    }
2500
2501    unsafe impl<D: fidl::encoding::ResourceDialect>
2502        fidl::encoding::Encode<WlanFullmacImplSetMacAddressRequest, D>
2503        for &WlanFullmacImplSetMacAddressRequest
2504    {
2505        #[inline]
2506        unsafe fn encode(
2507            self,
2508            encoder: &mut fidl::encoding::Encoder<'_, D>,
2509            offset: usize,
2510            _depth: fidl::encoding::Depth,
2511        ) -> fidl::Result<()> {
2512            encoder.debug_check_bounds::<WlanFullmacImplSetMacAddressRequest>(offset);
2513            unsafe {
2514                // Copy the object into the buffer.
2515                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2516                (buf_ptr as *mut WlanFullmacImplSetMacAddressRequest)
2517                    .write_unaligned((self as *const WlanFullmacImplSetMacAddressRequest).read());
2518                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
2519                // done second because the memcpy will write garbage to these bytes.
2520            }
2521            Ok(())
2522        }
2523    }
2524    unsafe impl<
2525        D: fidl::encoding::ResourceDialect,
2526        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2527    > fidl::encoding::Encode<WlanFullmacImplSetMacAddressRequest, D> for (T0,)
2528    {
2529        #[inline]
2530        unsafe fn encode(
2531            self,
2532            encoder: &mut fidl::encoding::Encoder<'_, D>,
2533            offset: usize,
2534            depth: fidl::encoding::Depth,
2535        ) -> fidl::Result<()> {
2536            encoder.debug_check_bounds::<WlanFullmacImplSetMacAddressRequest>(offset);
2537            // Zero out padding regions. There's no need to apply masks
2538            // because the unmasked parts will be overwritten by fields.
2539            // Write the fields.
2540            self.0.encode(encoder, offset + 0, depth)?;
2541            Ok(())
2542        }
2543    }
2544
2545    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2546        for WlanFullmacImplSetMacAddressRequest
2547    {
2548        #[inline(always)]
2549        fn new_empty() -> Self {
2550            Self { mac_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
2551        }
2552
2553        #[inline]
2554        unsafe fn decode(
2555            &mut self,
2556            decoder: &mut fidl::encoding::Decoder<'_, D>,
2557            offset: usize,
2558            _depth: fidl::encoding::Depth,
2559        ) -> fidl::Result<()> {
2560            decoder.debug_check_bounds::<Self>(offset);
2561            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2562            // Verify that padding bytes are zero.
2563            // Copy from the buffer into the object.
2564            unsafe {
2565                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
2566            }
2567            Ok(())
2568        }
2569    }
2570
2571    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplGetIfaceHistogramStatsResponse {
2572        type Borrowed<'a> = &'a Self;
2573        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2574            value
2575        }
2576    }
2577
2578    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplGetIfaceHistogramStatsResponse {
2579        type Owned = Self;
2580
2581        #[inline(always)]
2582        fn inline_align(_context: fidl::encoding::Context) -> usize {
2583            8
2584        }
2585
2586        #[inline(always)]
2587        fn inline_size(_context: fidl::encoding::Context) -> usize {
2588            16
2589        }
2590    }
2591
2592    unsafe impl<D: fidl::encoding::ResourceDialect>
2593        fidl::encoding::Encode<WlanFullmacImplGetIfaceHistogramStatsResponse, D>
2594        for &WlanFullmacImplGetIfaceHistogramStatsResponse
2595    {
2596        #[inline]
2597        unsafe fn encode(
2598            self,
2599            encoder: &mut fidl::encoding::Encoder<'_, D>,
2600            offset: usize,
2601            _depth: fidl::encoding::Depth,
2602        ) -> fidl::Result<()> {
2603            encoder.debug_check_bounds::<WlanFullmacImplGetIfaceHistogramStatsResponse>(offset);
2604            // Delegate to tuple encoding.
2605            fidl::encoding::Encode::<WlanFullmacImplGetIfaceHistogramStatsResponse, D>::encode(
2606                (
2607                    <fidl_fuchsia_wlan_stats__common::IfaceHistogramStats as fidl::encoding::ValueTypeMarker>::borrow(&self.stats),
2608                ),
2609                encoder, offset, _depth
2610            )
2611        }
2612    }
2613    unsafe impl<
2614        D: fidl::encoding::ResourceDialect,
2615        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_stats__common::IfaceHistogramStats, D>,
2616    > fidl::encoding::Encode<WlanFullmacImplGetIfaceHistogramStatsResponse, D> for (T0,)
2617    {
2618        #[inline]
2619        unsafe fn encode(
2620            self,
2621            encoder: &mut fidl::encoding::Encoder<'_, D>,
2622            offset: usize,
2623            depth: fidl::encoding::Depth,
2624        ) -> fidl::Result<()> {
2625            encoder.debug_check_bounds::<WlanFullmacImplGetIfaceHistogramStatsResponse>(offset);
2626            // Zero out padding regions. There's no need to apply masks
2627            // because the unmasked parts will be overwritten by fields.
2628            // Write the fields.
2629            self.0.encode(encoder, offset + 0, depth)?;
2630            Ok(())
2631        }
2632    }
2633
2634    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2635        for WlanFullmacImplGetIfaceHistogramStatsResponse
2636    {
2637        #[inline(always)]
2638        fn new_empty() -> Self {
2639            Self {
2640                stats: fidl::new_empty!(fidl_fuchsia_wlan_stats__common::IfaceHistogramStats, D),
2641            }
2642        }
2643
2644        #[inline]
2645        unsafe fn decode(
2646            &mut self,
2647            decoder: &mut fidl::encoding::Decoder<'_, D>,
2648            offset: usize,
2649            _depth: fidl::encoding::Depth,
2650        ) -> fidl::Result<()> {
2651            decoder.debug_check_bounds::<Self>(offset);
2652            // Verify that padding bytes are zero.
2653            fidl::decode!(
2654                fidl_fuchsia_wlan_stats__common::IfaceHistogramStats,
2655                D,
2656                &mut self.stats,
2657                decoder,
2658                offset + 0,
2659                _depth
2660            )?;
2661            Ok(())
2662        }
2663    }
2664
2665    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplGetIfaceStatsResponse {
2666        type Borrowed<'a> = &'a Self;
2667        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2668            value
2669        }
2670    }
2671
2672    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplGetIfaceStatsResponse {
2673        type Owned = Self;
2674
2675        #[inline(always)]
2676        fn inline_align(_context: fidl::encoding::Context) -> usize {
2677            8
2678        }
2679
2680        #[inline(always)]
2681        fn inline_size(_context: fidl::encoding::Context) -> usize {
2682            16
2683        }
2684    }
2685
2686    unsafe impl<D: fidl::encoding::ResourceDialect>
2687        fidl::encoding::Encode<WlanFullmacImplGetIfaceStatsResponse, D>
2688        for &WlanFullmacImplGetIfaceStatsResponse
2689    {
2690        #[inline]
2691        unsafe fn encode(
2692            self,
2693            encoder: &mut fidl::encoding::Encoder<'_, D>,
2694            offset: usize,
2695            _depth: fidl::encoding::Depth,
2696        ) -> fidl::Result<()> {
2697            encoder.debug_check_bounds::<WlanFullmacImplGetIfaceStatsResponse>(offset);
2698            // Delegate to tuple encoding.
2699            fidl::encoding::Encode::<WlanFullmacImplGetIfaceStatsResponse, D>::encode(
2700                (
2701                    <fidl_fuchsia_wlan_stats__common::IfaceStats as fidl::encoding::ValueTypeMarker>::borrow(&self.stats),
2702                ),
2703                encoder, offset, _depth
2704            )
2705        }
2706    }
2707    unsafe impl<
2708        D: fidl::encoding::ResourceDialect,
2709        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_stats__common::IfaceStats, D>,
2710    > fidl::encoding::Encode<WlanFullmacImplGetIfaceStatsResponse, D> for (T0,)
2711    {
2712        #[inline]
2713        unsafe fn encode(
2714            self,
2715            encoder: &mut fidl::encoding::Encoder<'_, D>,
2716            offset: usize,
2717            depth: fidl::encoding::Depth,
2718        ) -> fidl::Result<()> {
2719            encoder.debug_check_bounds::<WlanFullmacImplGetIfaceStatsResponse>(offset);
2720            // Zero out padding regions. There's no need to apply masks
2721            // because the unmasked parts will be overwritten by fields.
2722            // Write the fields.
2723            self.0.encode(encoder, offset + 0, depth)?;
2724            Ok(())
2725        }
2726    }
2727
2728    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2729        for WlanFullmacImplGetIfaceStatsResponse
2730    {
2731        #[inline(always)]
2732        fn new_empty() -> Self {
2733            Self { stats: fidl::new_empty!(fidl_fuchsia_wlan_stats__common::IfaceStats, D) }
2734        }
2735
2736        #[inline]
2737        unsafe fn decode(
2738            &mut self,
2739            decoder: &mut fidl::encoding::Decoder<'_, D>,
2740            offset: usize,
2741            _depth: fidl::encoding::Depth,
2742        ) -> fidl::Result<()> {
2743            decoder.debug_check_bounds::<Self>(offset);
2744            // Verify that padding bytes are zero.
2745            fidl::decode!(
2746                fidl_fuchsia_wlan_stats__common::IfaceStats,
2747                D,
2748                &mut self.stats,
2749                decoder,
2750                offset + 0,
2751                _depth
2752            )?;
2753            Ok(())
2754        }
2755    }
2756
2757    impl fidl::encoding::ValueTypeMarker for WlanFullmacRssiStats {
2758        type Borrowed<'a> = &'a Self;
2759        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2760            value
2761        }
2762    }
2763
2764    unsafe impl fidl::encoding::TypeMarker for WlanFullmacRssiStats {
2765        type Owned = Self;
2766
2767        #[inline(always)]
2768        fn inline_align(_context: fidl::encoding::Context) -> usize {
2769            8
2770        }
2771
2772        #[inline(always)]
2773        fn inline_size(_context: fidl::encoding::Context) -> usize {
2774            16
2775        }
2776    }
2777
2778    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WlanFullmacRssiStats, D>
2779        for &WlanFullmacRssiStats
2780    {
2781        #[inline]
2782        unsafe fn encode(
2783            self,
2784            encoder: &mut fidl::encoding::Encoder<'_, D>,
2785            offset: usize,
2786            _depth: fidl::encoding::Depth,
2787        ) -> fidl::Result<()> {
2788            encoder.debug_check_bounds::<WlanFullmacRssiStats>(offset);
2789            // Delegate to tuple encoding.
2790            fidl::encoding::Encode::<WlanFullmacRssiStats, D>::encode(
2791                (
2792                    <fidl::encoding::UnboundedVector<u64> as fidl::encoding::ValueTypeMarker>::borrow(&self.hist),
2793                ),
2794                encoder, offset, _depth
2795            )
2796        }
2797    }
2798    unsafe impl<
2799        D: fidl::encoding::ResourceDialect,
2800        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u64>, D>,
2801    > fidl::encoding::Encode<WlanFullmacRssiStats, D> for (T0,)
2802    {
2803        #[inline]
2804        unsafe fn encode(
2805            self,
2806            encoder: &mut fidl::encoding::Encoder<'_, D>,
2807            offset: usize,
2808            depth: fidl::encoding::Depth,
2809        ) -> fidl::Result<()> {
2810            encoder.debug_check_bounds::<WlanFullmacRssiStats>(offset);
2811            // Zero out padding regions. There's no need to apply masks
2812            // because the unmasked parts will be overwritten by fields.
2813            // Write the fields.
2814            self.0.encode(encoder, offset + 0, depth)?;
2815            Ok(())
2816        }
2817    }
2818
2819    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanFullmacRssiStats {
2820        #[inline(always)]
2821        fn new_empty() -> Self {
2822            Self { hist: fidl::new_empty!(fidl::encoding::UnboundedVector<u64>, D) }
2823        }
2824
2825        #[inline]
2826        unsafe fn decode(
2827            &mut self,
2828            decoder: &mut fidl::encoding::Decoder<'_, D>,
2829            offset: usize,
2830            _depth: fidl::encoding::Depth,
2831        ) -> fidl::Result<()> {
2832            decoder.debug_check_bounds::<Self>(offset);
2833            // Verify that padding bytes are zero.
2834            fidl::decode!(
2835                fidl::encoding::UnboundedVector<u64>,
2836                D,
2837                &mut self.hist,
2838                decoder,
2839                offset + 0,
2840                _depth
2841            )?;
2842            Ok(())
2843        }
2844    }
2845
2846    impl fidl::encoding::ValueTypeMarker for WlanFullmacSetKeysResp {
2847        type Borrowed<'a> = &'a Self;
2848        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2849            value
2850        }
2851    }
2852
2853    unsafe impl fidl::encoding::TypeMarker for WlanFullmacSetKeysResp {
2854        type Owned = Self;
2855
2856        #[inline(always)]
2857        fn inline_align(_context: fidl::encoding::Context) -> usize {
2858            8
2859        }
2860
2861        #[inline(always)]
2862        fn inline_size(_context: fidl::encoding::Context) -> usize {
2863            16
2864        }
2865    }
2866
2867    unsafe impl<D: fidl::encoding::ResourceDialect>
2868        fidl::encoding::Encode<WlanFullmacSetKeysResp, D> for &WlanFullmacSetKeysResp
2869    {
2870        #[inline]
2871        unsafe fn encode(
2872            self,
2873            encoder: &mut fidl::encoding::Encoder<'_, D>,
2874            offset: usize,
2875            _depth: fidl::encoding::Depth,
2876        ) -> fidl::Result<()> {
2877            encoder.debug_check_bounds::<WlanFullmacSetKeysResp>(offset);
2878            // Delegate to tuple encoding.
2879            fidl::encoding::Encode::<WlanFullmacSetKeysResp, D>::encode(
2880                (<fidl::encoding::Vector<i32, 4> as fidl::encoding::ValueTypeMarker>::borrow(
2881                    &self.statuslist,
2882                ),),
2883                encoder,
2884                offset,
2885                _depth,
2886            )
2887        }
2888    }
2889    unsafe impl<
2890        D: fidl::encoding::ResourceDialect,
2891        T0: fidl::encoding::Encode<fidl::encoding::Vector<i32, 4>, D>,
2892    > fidl::encoding::Encode<WlanFullmacSetKeysResp, D> for (T0,)
2893    {
2894        #[inline]
2895        unsafe fn encode(
2896            self,
2897            encoder: &mut fidl::encoding::Encoder<'_, D>,
2898            offset: usize,
2899            depth: fidl::encoding::Depth,
2900        ) -> fidl::Result<()> {
2901            encoder.debug_check_bounds::<WlanFullmacSetKeysResp>(offset);
2902            // Zero out padding regions. There's no need to apply masks
2903            // because the unmasked parts will be overwritten by fields.
2904            // Write the fields.
2905            self.0.encode(encoder, offset + 0, depth)?;
2906            Ok(())
2907        }
2908    }
2909
2910    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2911        for WlanFullmacSetKeysResp
2912    {
2913        #[inline(always)]
2914        fn new_empty() -> Self {
2915            Self { statuslist: fidl::new_empty!(fidl::encoding::Vector<i32, 4>, D) }
2916        }
2917
2918        #[inline]
2919        unsafe fn decode(
2920            &mut self,
2921            decoder: &mut fidl::encoding::Decoder<'_, D>,
2922            offset: usize,
2923            _depth: fidl::encoding::Depth,
2924        ) -> fidl::Result<()> {
2925            decoder.debug_check_bounds::<Self>(offset);
2926            // Verify that padding bytes are zero.
2927            fidl::decode!(fidl::encoding::Vector<i32, 4>, D, &mut self.statuslist, decoder, offset + 0, _depth)?;
2928            Ok(())
2929        }
2930    }
2931
2932    impl fidl::encoding::ValueTypeMarker for WlanFullmacSignalReportIndication {
2933        type Borrowed<'a> = &'a Self;
2934        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2935            value
2936        }
2937    }
2938
2939    unsafe impl fidl::encoding::TypeMarker for WlanFullmacSignalReportIndication {
2940        type Owned = Self;
2941
2942        #[inline(always)]
2943        fn inline_align(_context: fidl::encoding::Context) -> usize {
2944            1
2945        }
2946
2947        #[inline(always)]
2948        fn inline_size(_context: fidl::encoding::Context) -> usize {
2949            2
2950        }
2951        #[inline(always)]
2952        fn encode_is_copy() -> bool {
2953            true
2954        }
2955
2956        #[inline(always)]
2957        fn decode_is_copy() -> bool {
2958            true
2959        }
2960    }
2961
2962    unsafe impl<D: fidl::encoding::ResourceDialect>
2963        fidl::encoding::Encode<WlanFullmacSignalReportIndication, D>
2964        for &WlanFullmacSignalReportIndication
2965    {
2966        #[inline]
2967        unsafe fn encode(
2968            self,
2969            encoder: &mut fidl::encoding::Encoder<'_, D>,
2970            offset: usize,
2971            _depth: fidl::encoding::Depth,
2972        ) -> fidl::Result<()> {
2973            encoder.debug_check_bounds::<WlanFullmacSignalReportIndication>(offset);
2974            unsafe {
2975                // Copy the object into the buffer.
2976                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2977                (buf_ptr as *mut WlanFullmacSignalReportIndication)
2978                    .write_unaligned((self as *const WlanFullmacSignalReportIndication).read());
2979                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
2980                // done second because the memcpy will write garbage to these bytes.
2981            }
2982            Ok(())
2983        }
2984    }
2985    unsafe impl<
2986        D: fidl::encoding::ResourceDialect,
2987        T0: fidl::encoding::Encode<i8, D>,
2988        T1: fidl::encoding::Encode<i8, D>,
2989    > fidl::encoding::Encode<WlanFullmacSignalReportIndication, D> for (T0, T1)
2990    {
2991        #[inline]
2992        unsafe fn encode(
2993            self,
2994            encoder: &mut fidl::encoding::Encoder<'_, D>,
2995            offset: usize,
2996            depth: fidl::encoding::Depth,
2997        ) -> fidl::Result<()> {
2998            encoder.debug_check_bounds::<WlanFullmacSignalReportIndication>(offset);
2999            // Zero out padding regions. There's no need to apply masks
3000            // because the unmasked parts will be overwritten by fields.
3001            // Write the fields.
3002            self.0.encode(encoder, offset + 0, depth)?;
3003            self.1.encode(encoder, offset + 1, depth)?;
3004            Ok(())
3005        }
3006    }
3007
3008    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3009        for WlanFullmacSignalReportIndication
3010    {
3011        #[inline(always)]
3012        fn new_empty() -> Self {
3013            Self { rssi_dbm: fidl::new_empty!(i8, D), snr_db: fidl::new_empty!(i8, D) }
3014        }
3015
3016        #[inline]
3017        unsafe fn decode(
3018            &mut self,
3019            decoder: &mut fidl::encoding::Decoder<'_, D>,
3020            offset: usize,
3021            _depth: fidl::encoding::Depth,
3022        ) -> fidl::Result<()> {
3023            decoder.debug_check_bounds::<Self>(offset);
3024            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
3025            // Verify that padding bytes are zero.
3026            // Copy from the buffer into the object.
3027            unsafe {
3028                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 2);
3029            }
3030            Ok(())
3031        }
3032    }
3033
3034    impl BandCapability {
3035        #[inline(always)]
3036        fn max_ordinal_present(&self) -> u64 {
3037            if let Some(_) = self.operating_channels {
3038                return 5;
3039            }
3040            if let Some(_) = self.vht_caps {
3041                return 4;
3042            }
3043            if let Some(_) = self.ht_caps {
3044                return 3;
3045            }
3046            if let Some(_) = self.basic_rates {
3047                return 2;
3048            }
3049            if let Some(_) = self.band {
3050                return 1;
3051            }
3052            0
3053        }
3054    }
3055
3056    impl fidl::encoding::ValueTypeMarker for BandCapability {
3057        type Borrowed<'a> = &'a Self;
3058        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3059            value
3060        }
3061    }
3062
3063    unsafe impl fidl::encoding::TypeMarker for BandCapability {
3064        type Owned = Self;
3065
3066        #[inline(always)]
3067        fn inline_align(_context: fidl::encoding::Context) -> usize {
3068            8
3069        }
3070
3071        #[inline(always)]
3072        fn inline_size(_context: fidl::encoding::Context) -> usize {
3073            16
3074        }
3075    }
3076
3077    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BandCapability, D>
3078        for &BandCapability
3079    {
3080        unsafe fn encode(
3081            self,
3082            encoder: &mut fidl::encoding::Encoder<'_, D>,
3083            offset: usize,
3084            mut depth: fidl::encoding::Depth,
3085        ) -> fidl::Result<()> {
3086            encoder.debug_check_bounds::<BandCapability>(offset);
3087            // Vector header
3088            let max_ordinal: u64 = self.max_ordinal_present();
3089            encoder.write_num(max_ordinal, offset);
3090            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3091            // Calling encoder.out_of_line_offset(0) is not allowed.
3092            if max_ordinal == 0 {
3093                return Ok(());
3094            }
3095            depth.increment()?;
3096            let envelope_size = 8;
3097            let bytes_len = max_ordinal as usize * envelope_size;
3098            #[allow(unused_variables)]
3099            let offset = encoder.out_of_line_offset(bytes_len);
3100            let mut _prev_end_offset: usize = 0;
3101            if 1 > max_ordinal {
3102                return Ok(());
3103            }
3104
3105            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3106            // are envelope_size bytes.
3107            let cur_offset: usize = (1 - 1) * envelope_size;
3108
3109            // Zero reserved fields.
3110            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3111
3112            // Safety:
3113            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3114            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3115            //   envelope_size bytes, there is always sufficient room.
3116            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::WlanBand, D>(
3117            self.band.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::WlanBand as fidl::encoding::ValueTypeMarker>::borrow),
3118            encoder, offset + cur_offset, depth
3119        )?;
3120
3121            _prev_end_offset = cur_offset + envelope_size;
3122            if 2 > max_ordinal {
3123                return Ok(());
3124            }
3125
3126            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3127            // are envelope_size bytes.
3128            let cur_offset: usize = (2 - 1) * envelope_size;
3129
3130            // Zero reserved fields.
3131            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3132
3133            // Safety:
3134            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3135            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3136            //   envelope_size bytes, there is always sufficient room.
3137            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 12>, D>(
3138                self.basic_rates.as_ref().map(
3139                    <fidl::encoding::Vector<u8, 12> as fidl::encoding::ValueTypeMarker>::borrow,
3140                ),
3141                encoder,
3142                offset + cur_offset,
3143                depth,
3144            )?;
3145
3146            _prev_end_offset = cur_offset + envelope_size;
3147            if 3 > max_ordinal {
3148                return Ok(());
3149            }
3150
3151            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3152            // are envelope_size bytes.
3153            let cur_offset: usize = (3 - 1) * envelope_size;
3154
3155            // Zero reserved fields.
3156            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3157
3158            // Safety:
3159            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3160            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3161            //   envelope_size bytes, there is always sufficient room.
3162            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities, D>(
3163            self.ht_caps.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities as fidl::encoding::ValueTypeMarker>::borrow),
3164            encoder, offset + cur_offset, depth
3165        )?;
3166
3167            _prev_end_offset = cur_offset + envelope_size;
3168            if 4 > max_ordinal {
3169                return Ok(());
3170            }
3171
3172            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3173            // are envelope_size bytes.
3174            let cur_offset: usize = (4 - 1) * envelope_size;
3175
3176            // Zero reserved fields.
3177            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3178
3179            // Safety:
3180            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3181            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3182            //   envelope_size bytes, there is always sufficient room.
3183            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities, D>(
3184            self.vht_caps.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities as fidl::encoding::ValueTypeMarker>::borrow),
3185            encoder, offset + cur_offset, depth
3186        )?;
3187
3188            _prev_end_offset = cur_offset + envelope_size;
3189            if 5 > max_ordinal {
3190                return Ok(());
3191            }
3192
3193            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3194            // are envelope_size bytes.
3195            let cur_offset: usize = (5 - 1) * envelope_size;
3196
3197            // Zero reserved fields.
3198            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3199
3200            // Safety:
3201            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3202            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3203            //   envelope_size bytes, there is always sufficient room.
3204            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 256>, D>(
3205                self.operating_channels.as_ref().map(
3206                    <fidl::encoding::Vector<u8, 256> as fidl::encoding::ValueTypeMarker>::borrow,
3207                ),
3208                encoder,
3209                offset + cur_offset,
3210                depth,
3211            )?;
3212
3213            _prev_end_offset = cur_offset + envelope_size;
3214
3215            Ok(())
3216        }
3217    }
3218
3219    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BandCapability {
3220        #[inline(always)]
3221        fn new_empty() -> Self {
3222            Self::default()
3223        }
3224
3225        unsafe fn decode(
3226            &mut self,
3227            decoder: &mut fidl::encoding::Decoder<'_, D>,
3228            offset: usize,
3229            mut depth: fidl::encoding::Depth,
3230        ) -> fidl::Result<()> {
3231            decoder.debug_check_bounds::<Self>(offset);
3232            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3233                None => return Err(fidl::Error::NotNullable),
3234                Some(len) => len,
3235            };
3236            // Calling decoder.out_of_line_offset(0) is not allowed.
3237            if len == 0 {
3238                return Ok(());
3239            };
3240            depth.increment()?;
3241            let envelope_size = 8;
3242            let bytes_len = len * envelope_size;
3243            let offset = decoder.out_of_line_offset(bytes_len)?;
3244            // Decode the envelope for each type.
3245            let mut _next_ordinal_to_read = 0;
3246            let mut next_offset = offset;
3247            let end_offset = offset + bytes_len;
3248            _next_ordinal_to_read += 1;
3249            if next_offset >= end_offset {
3250                return Ok(());
3251            }
3252
3253            // Decode unknown envelopes for gaps in ordinals.
3254            while _next_ordinal_to_read < 1 {
3255                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3256                _next_ordinal_to_read += 1;
3257                next_offset += envelope_size;
3258            }
3259
3260            let next_out_of_line = decoder.next_out_of_line();
3261            let handles_before = decoder.remaining_handles();
3262            if let Some((inlined, num_bytes, num_handles)) =
3263                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3264            {
3265                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::WlanBand as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3266                if inlined != (member_inline_size <= 4) {
3267                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3268                }
3269                let inner_offset;
3270                let mut inner_depth = depth.clone();
3271                if inlined {
3272                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3273                    inner_offset = next_offset;
3274                } else {
3275                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3276                    inner_depth.increment()?;
3277                }
3278                let val_ref = self.band.get_or_insert_with(|| {
3279                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::WlanBand, D)
3280                });
3281                fidl::decode!(
3282                    fidl_fuchsia_wlan_ieee80211__common::WlanBand,
3283                    D,
3284                    val_ref,
3285                    decoder,
3286                    inner_offset,
3287                    inner_depth
3288                )?;
3289                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3290                {
3291                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3292                }
3293                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3294                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3295                }
3296            }
3297
3298            next_offset += envelope_size;
3299            _next_ordinal_to_read += 1;
3300            if next_offset >= end_offset {
3301                return Ok(());
3302            }
3303
3304            // Decode unknown envelopes for gaps in ordinals.
3305            while _next_ordinal_to_read < 2 {
3306                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3307                _next_ordinal_to_read += 1;
3308                next_offset += envelope_size;
3309            }
3310
3311            let next_out_of_line = decoder.next_out_of_line();
3312            let handles_before = decoder.remaining_handles();
3313            if let Some((inlined, num_bytes, num_handles)) =
3314                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3315            {
3316                let member_inline_size =
3317                    <fidl::encoding::Vector<u8, 12> as fidl::encoding::TypeMarker>::inline_size(
3318                        decoder.context,
3319                    );
3320                if inlined != (member_inline_size <= 4) {
3321                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3322                }
3323                let inner_offset;
3324                let mut inner_depth = depth.clone();
3325                if inlined {
3326                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3327                    inner_offset = next_offset;
3328                } else {
3329                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3330                    inner_depth.increment()?;
3331                }
3332                let val_ref = self
3333                    .basic_rates
3334                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 12>, D));
3335                fidl::decode!(fidl::encoding::Vector<u8, 12>, D, val_ref, decoder, inner_offset, inner_depth)?;
3336                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3337                {
3338                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3339                }
3340                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3341                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3342                }
3343            }
3344
3345            next_offset += envelope_size;
3346            _next_ordinal_to_read += 1;
3347            if next_offset >= end_offset {
3348                return Ok(());
3349            }
3350
3351            // Decode unknown envelopes for gaps in ordinals.
3352            while _next_ordinal_to_read < 3 {
3353                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3354                _next_ordinal_to_read += 1;
3355                next_offset += envelope_size;
3356            }
3357
3358            let next_out_of_line = decoder.next_out_of_line();
3359            let handles_before = decoder.remaining_handles();
3360            if let Some((inlined, num_bytes, num_handles)) =
3361                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3362            {
3363                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::HtCapabilities as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3364                if inlined != (member_inline_size <= 4) {
3365                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3366                }
3367                let inner_offset;
3368                let mut inner_depth = depth.clone();
3369                if inlined {
3370                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3371                    inner_offset = next_offset;
3372                } else {
3373                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3374                    inner_depth.increment()?;
3375                }
3376                let val_ref = self.ht_caps.get_or_insert_with(|| {
3377                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::HtCapabilities, D)
3378                });
3379                fidl::decode!(
3380                    fidl_fuchsia_wlan_ieee80211__common::HtCapabilities,
3381                    D,
3382                    val_ref,
3383                    decoder,
3384                    inner_offset,
3385                    inner_depth
3386                )?;
3387                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3388                {
3389                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3390                }
3391                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3392                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3393                }
3394            }
3395
3396            next_offset += envelope_size;
3397            _next_ordinal_to_read += 1;
3398            if next_offset >= end_offset {
3399                return Ok(());
3400            }
3401
3402            // Decode unknown envelopes for gaps in ordinals.
3403            while _next_ordinal_to_read < 4 {
3404                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3405                _next_ordinal_to_read += 1;
3406                next_offset += envelope_size;
3407            }
3408
3409            let next_out_of_line = decoder.next_out_of_line();
3410            let handles_before = decoder.remaining_handles();
3411            if let Some((inlined, num_bytes, num_handles)) =
3412                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3413            {
3414                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3415                if inlined != (member_inline_size <= 4) {
3416                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3417                }
3418                let inner_offset;
3419                let mut inner_depth = depth.clone();
3420                if inlined {
3421                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3422                    inner_offset = next_offset;
3423                } else {
3424                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3425                    inner_depth.increment()?;
3426                }
3427                let val_ref = self.vht_caps.get_or_insert_with(|| {
3428                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities, D)
3429                });
3430                fidl::decode!(
3431                    fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities,
3432                    D,
3433                    val_ref,
3434                    decoder,
3435                    inner_offset,
3436                    inner_depth
3437                )?;
3438                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3439                {
3440                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3441                }
3442                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3443                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3444                }
3445            }
3446
3447            next_offset += envelope_size;
3448            _next_ordinal_to_read += 1;
3449            if next_offset >= end_offset {
3450                return Ok(());
3451            }
3452
3453            // Decode unknown envelopes for gaps in ordinals.
3454            while _next_ordinal_to_read < 5 {
3455                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3456                _next_ordinal_to_read += 1;
3457                next_offset += envelope_size;
3458            }
3459
3460            let next_out_of_line = decoder.next_out_of_line();
3461            let handles_before = decoder.remaining_handles();
3462            if let Some((inlined, num_bytes, num_handles)) =
3463                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3464            {
3465                let member_inline_size =
3466                    <fidl::encoding::Vector<u8, 256> as fidl::encoding::TypeMarker>::inline_size(
3467                        decoder.context,
3468                    );
3469                if inlined != (member_inline_size <= 4) {
3470                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3471                }
3472                let inner_offset;
3473                let mut inner_depth = depth.clone();
3474                if inlined {
3475                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3476                    inner_offset = next_offset;
3477                } else {
3478                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3479                    inner_depth.increment()?;
3480                }
3481                let val_ref = self
3482                    .operating_channels
3483                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 256>, D));
3484                fidl::decode!(fidl::encoding::Vector<u8, 256>, D, val_ref, decoder, inner_offset, inner_depth)?;
3485                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3486                {
3487                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3488                }
3489                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3490                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3491                }
3492            }
3493
3494            next_offset += envelope_size;
3495
3496            // Decode the remaining unknown envelopes.
3497            while next_offset < end_offset {
3498                _next_ordinal_to_read += 1;
3499                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3500                next_offset += envelope_size;
3501            }
3502
3503            Ok(())
3504        }
3505    }
3506
3507    impl SaeFrame {
3508        #[inline(always)]
3509        fn max_ordinal_present(&self) -> u64 {
3510            if let Some(_) = self.sae_fields {
3511                return 4;
3512            }
3513            if let Some(_) = self.seq_num {
3514                return 3;
3515            }
3516            if let Some(_) = self.status_code {
3517                return 2;
3518            }
3519            if let Some(_) = self.peer_sta_address {
3520                return 1;
3521            }
3522            0
3523        }
3524    }
3525
3526    impl fidl::encoding::ValueTypeMarker for SaeFrame {
3527        type Borrowed<'a> = &'a Self;
3528        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3529            value
3530        }
3531    }
3532
3533    unsafe impl fidl::encoding::TypeMarker for SaeFrame {
3534        type Owned = Self;
3535
3536        #[inline(always)]
3537        fn inline_align(_context: fidl::encoding::Context) -> usize {
3538            8
3539        }
3540
3541        #[inline(always)]
3542        fn inline_size(_context: fidl::encoding::Context) -> usize {
3543            16
3544        }
3545    }
3546
3547    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SaeFrame, D> for &SaeFrame {
3548        unsafe fn encode(
3549            self,
3550            encoder: &mut fidl::encoding::Encoder<'_, D>,
3551            offset: usize,
3552            mut depth: fidl::encoding::Depth,
3553        ) -> fidl::Result<()> {
3554            encoder.debug_check_bounds::<SaeFrame>(offset);
3555            // Vector header
3556            let max_ordinal: u64 = self.max_ordinal_present();
3557            encoder.write_num(max_ordinal, offset);
3558            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3559            // Calling encoder.out_of_line_offset(0) is not allowed.
3560            if max_ordinal == 0 {
3561                return Ok(());
3562            }
3563            depth.increment()?;
3564            let envelope_size = 8;
3565            let bytes_len = max_ordinal as usize * envelope_size;
3566            #[allow(unused_variables)]
3567            let offset = encoder.out_of_line_offset(bytes_len);
3568            let mut _prev_end_offset: usize = 0;
3569            if 1 > max_ordinal {
3570                return Ok(());
3571            }
3572
3573            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3574            // are envelope_size bytes.
3575            let cur_offset: usize = (1 - 1) * envelope_size;
3576
3577            // Zero reserved fields.
3578            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3579
3580            // Safety:
3581            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3582            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3583            //   envelope_size bytes, there is always sufficient room.
3584            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
3585                self.peer_sta_address
3586                    .as_ref()
3587                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
3588                encoder,
3589                offset + cur_offset,
3590                depth,
3591            )?;
3592
3593            _prev_end_offset = cur_offset + envelope_size;
3594            if 2 > max_ordinal {
3595                return Ok(());
3596            }
3597
3598            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3599            // are envelope_size bytes.
3600            let cur_offset: usize = (2 - 1) * envelope_size;
3601
3602            // Zero reserved fields.
3603            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3604
3605            // Safety:
3606            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3607            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3608            //   envelope_size bytes, there is always sufficient room.
3609            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>(
3610            self.status_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
3611            encoder, offset + cur_offset, depth
3612        )?;
3613
3614            _prev_end_offset = cur_offset + envelope_size;
3615            if 3 > max_ordinal {
3616                return Ok(());
3617            }
3618
3619            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3620            // are envelope_size bytes.
3621            let cur_offset: usize = (3 - 1) * envelope_size;
3622
3623            // Zero reserved fields.
3624            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3625
3626            // Safety:
3627            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3628            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3629            //   envelope_size bytes, there is always sufficient room.
3630            fidl::encoding::encode_in_envelope_optional::<u16, D>(
3631                self.seq_num.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
3632                encoder,
3633                offset + cur_offset,
3634                depth,
3635            )?;
3636
3637            _prev_end_offset = cur_offset + envelope_size;
3638            if 4 > max_ordinal {
3639                return Ok(());
3640            }
3641
3642            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3643            // are envelope_size bytes.
3644            let cur_offset: usize = (4 - 1) * envelope_size;
3645
3646            // Zero reserved fields.
3647            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3648
3649            // Safety:
3650            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3651            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3652            //   envelope_size bytes, there is always sufficient room.
3653            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
3654            self.sae_fields.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
3655            encoder, offset + cur_offset, depth
3656        )?;
3657
3658            _prev_end_offset = cur_offset + envelope_size;
3659
3660            Ok(())
3661        }
3662    }
3663
3664    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SaeFrame {
3665        #[inline(always)]
3666        fn new_empty() -> Self {
3667            Self::default()
3668        }
3669
3670        unsafe fn decode(
3671            &mut self,
3672            decoder: &mut fidl::encoding::Decoder<'_, D>,
3673            offset: usize,
3674            mut depth: fidl::encoding::Depth,
3675        ) -> fidl::Result<()> {
3676            decoder.debug_check_bounds::<Self>(offset);
3677            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3678                None => return Err(fidl::Error::NotNullable),
3679                Some(len) => len,
3680            };
3681            // Calling decoder.out_of_line_offset(0) is not allowed.
3682            if len == 0 {
3683                return Ok(());
3684            };
3685            depth.increment()?;
3686            let envelope_size = 8;
3687            let bytes_len = len * envelope_size;
3688            let offset = decoder.out_of_line_offset(bytes_len)?;
3689            // Decode the envelope for each type.
3690            let mut _next_ordinal_to_read = 0;
3691            let mut next_offset = offset;
3692            let end_offset = offset + bytes_len;
3693            _next_ordinal_to_read += 1;
3694            if next_offset >= end_offset {
3695                return Ok(());
3696            }
3697
3698            // Decode unknown envelopes for gaps in ordinals.
3699            while _next_ordinal_to_read < 1 {
3700                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3701                _next_ordinal_to_read += 1;
3702                next_offset += envelope_size;
3703            }
3704
3705            let next_out_of_line = decoder.next_out_of_line();
3706            let handles_before = decoder.remaining_handles();
3707            if let Some((inlined, num_bytes, num_handles)) =
3708                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3709            {
3710                let member_inline_size =
3711                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
3712                        decoder.context,
3713                    );
3714                if inlined != (member_inline_size <= 4) {
3715                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3716                }
3717                let inner_offset;
3718                let mut inner_depth = depth.clone();
3719                if inlined {
3720                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3721                    inner_offset = next_offset;
3722                } else {
3723                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3724                    inner_depth.increment()?;
3725                }
3726                let val_ref = self
3727                    .peer_sta_address
3728                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
3729                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
3730                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3731                {
3732                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3733                }
3734                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3735                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3736                }
3737            }
3738
3739            next_offset += envelope_size;
3740            _next_ordinal_to_read += 1;
3741            if next_offset >= end_offset {
3742                return Ok(());
3743            }
3744
3745            // Decode unknown envelopes for gaps in ordinals.
3746            while _next_ordinal_to_read < 2 {
3747                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3748                _next_ordinal_to_read += 1;
3749                next_offset += envelope_size;
3750            }
3751
3752            let next_out_of_line = decoder.next_out_of_line();
3753            let handles_before = decoder.remaining_handles();
3754            if let Some((inlined, num_bytes, num_handles)) =
3755                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3756            {
3757                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3758                if inlined != (member_inline_size <= 4) {
3759                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3760                }
3761                let inner_offset;
3762                let mut inner_depth = depth.clone();
3763                if inlined {
3764                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3765                    inner_offset = next_offset;
3766                } else {
3767                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3768                    inner_depth.increment()?;
3769                }
3770                let val_ref = self.status_code.get_or_insert_with(|| {
3771                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D)
3772                });
3773                fidl::decode!(
3774                    fidl_fuchsia_wlan_ieee80211__common::StatusCode,
3775                    D,
3776                    val_ref,
3777                    decoder,
3778                    inner_offset,
3779                    inner_depth
3780                )?;
3781                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3782                {
3783                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3784                }
3785                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3786                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3787                }
3788            }
3789
3790            next_offset += envelope_size;
3791            _next_ordinal_to_read += 1;
3792            if next_offset >= end_offset {
3793                return Ok(());
3794            }
3795
3796            // Decode unknown envelopes for gaps in ordinals.
3797            while _next_ordinal_to_read < 3 {
3798                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3799                _next_ordinal_to_read += 1;
3800                next_offset += envelope_size;
3801            }
3802
3803            let next_out_of_line = decoder.next_out_of_line();
3804            let handles_before = decoder.remaining_handles();
3805            if let Some((inlined, num_bytes, num_handles)) =
3806                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3807            {
3808                let member_inline_size =
3809                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3810                if inlined != (member_inline_size <= 4) {
3811                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3812                }
3813                let inner_offset;
3814                let mut inner_depth = depth.clone();
3815                if inlined {
3816                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3817                    inner_offset = next_offset;
3818                } else {
3819                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3820                    inner_depth.increment()?;
3821                }
3822                let val_ref = self.seq_num.get_or_insert_with(|| fidl::new_empty!(u16, D));
3823                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
3824                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3825                {
3826                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3827                }
3828                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3829                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3830                }
3831            }
3832
3833            next_offset += envelope_size;
3834            _next_ordinal_to_read += 1;
3835            if next_offset >= end_offset {
3836                return Ok(());
3837            }
3838
3839            // Decode unknown envelopes for gaps in ordinals.
3840            while _next_ordinal_to_read < 4 {
3841                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3842                _next_ordinal_to_read += 1;
3843                next_offset += envelope_size;
3844            }
3845
3846            let next_out_of_line = decoder.next_out_of_line();
3847            let handles_before = decoder.remaining_handles();
3848            if let Some((inlined, num_bytes, num_handles)) =
3849                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3850            {
3851                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3852                if inlined != (member_inline_size <= 4) {
3853                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3854                }
3855                let inner_offset;
3856                let mut inner_depth = depth.clone();
3857                if inlined {
3858                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3859                    inner_offset = next_offset;
3860                } else {
3861                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3862                    inner_depth.increment()?;
3863                }
3864                let val_ref = self.sae_fields.get_or_insert_with(|| {
3865                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
3866                });
3867                fidl::decode!(
3868                    fidl::encoding::UnboundedVector<u8>,
3869                    D,
3870                    val_ref,
3871                    decoder,
3872                    inner_offset,
3873                    inner_depth
3874                )?;
3875                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3876                {
3877                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3878                }
3879                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3880                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3881                }
3882            }
3883
3884            next_offset += envelope_size;
3885
3886            // Decode the remaining unknown envelopes.
3887            while next_offset < end_offset {
3888                _next_ordinal_to_read += 1;
3889                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3890                next_offset += envelope_size;
3891            }
3892
3893            Ok(())
3894        }
3895    }
3896
3897    impl WlanFullmacImplAssocRespRequest {
3898        #[inline(always)]
3899        fn max_ordinal_present(&self) -> u64 {
3900            if let Some(_) = self.association_id {
3901                return 3;
3902            }
3903            if let Some(_) = self.result_code {
3904                return 2;
3905            }
3906            if let Some(_) = self.peer_sta_address {
3907                return 1;
3908            }
3909            0
3910        }
3911    }
3912
3913    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplAssocRespRequest {
3914        type Borrowed<'a> = &'a Self;
3915        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3916            value
3917        }
3918    }
3919
3920    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplAssocRespRequest {
3921        type Owned = Self;
3922
3923        #[inline(always)]
3924        fn inline_align(_context: fidl::encoding::Context) -> usize {
3925            8
3926        }
3927
3928        #[inline(always)]
3929        fn inline_size(_context: fidl::encoding::Context) -> usize {
3930            16
3931        }
3932    }
3933
3934    unsafe impl<D: fidl::encoding::ResourceDialect>
3935        fidl::encoding::Encode<WlanFullmacImplAssocRespRequest, D>
3936        for &WlanFullmacImplAssocRespRequest
3937    {
3938        unsafe fn encode(
3939            self,
3940            encoder: &mut fidl::encoding::Encoder<'_, D>,
3941            offset: usize,
3942            mut depth: fidl::encoding::Depth,
3943        ) -> fidl::Result<()> {
3944            encoder.debug_check_bounds::<WlanFullmacImplAssocRespRequest>(offset);
3945            // Vector header
3946            let max_ordinal: u64 = self.max_ordinal_present();
3947            encoder.write_num(max_ordinal, offset);
3948            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3949            // Calling encoder.out_of_line_offset(0) is not allowed.
3950            if max_ordinal == 0 {
3951                return Ok(());
3952            }
3953            depth.increment()?;
3954            let envelope_size = 8;
3955            let bytes_len = max_ordinal as usize * envelope_size;
3956            #[allow(unused_variables)]
3957            let offset = encoder.out_of_line_offset(bytes_len);
3958            let mut _prev_end_offset: usize = 0;
3959            if 1 > max_ordinal {
3960                return Ok(());
3961            }
3962
3963            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3964            // are envelope_size bytes.
3965            let cur_offset: usize = (1 - 1) * envelope_size;
3966
3967            // Zero reserved fields.
3968            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3969
3970            // Safety:
3971            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3972            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3973            //   envelope_size bytes, there is always sufficient room.
3974            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
3975                self.peer_sta_address
3976                    .as_ref()
3977                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
3978                encoder,
3979                offset + cur_offset,
3980                depth,
3981            )?;
3982
3983            _prev_end_offset = cur_offset + envelope_size;
3984            if 2 > max_ordinal {
3985                return Ok(());
3986            }
3987
3988            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3989            // are envelope_size bytes.
3990            let cur_offset: usize = (2 - 1) * envelope_size;
3991
3992            // Zero reserved fields.
3993            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3994
3995            // Safety:
3996            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3997            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3998            //   envelope_size bytes, there is always sufficient room.
3999            fidl::encoding::encode_in_envelope_optional::<WlanAssocResult, D>(
4000                self.result_code
4001                    .as_ref()
4002                    .map(<WlanAssocResult as fidl::encoding::ValueTypeMarker>::borrow),
4003                encoder,
4004                offset + cur_offset,
4005                depth,
4006            )?;
4007
4008            _prev_end_offset = cur_offset + envelope_size;
4009            if 3 > max_ordinal {
4010                return Ok(());
4011            }
4012
4013            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4014            // are envelope_size bytes.
4015            let cur_offset: usize = (3 - 1) * envelope_size;
4016
4017            // Zero reserved fields.
4018            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4019
4020            // Safety:
4021            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4022            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4023            //   envelope_size bytes, there is always sufficient room.
4024            fidl::encoding::encode_in_envelope_optional::<u16, D>(
4025                self.association_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
4026                encoder,
4027                offset + cur_offset,
4028                depth,
4029            )?;
4030
4031            _prev_end_offset = cur_offset + envelope_size;
4032
4033            Ok(())
4034        }
4035    }
4036
4037    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4038        for WlanFullmacImplAssocRespRequest
4039    {
4040        #[inline(always)]
4041        fn new_empty() -> Self {
4042            Self::default()
4043        }
4044
4045        unsafe fn decode(
4046            &mut self,
4047            decoder: &mut fidl::encoding::Decoder<'_, D>,
4048            offset: usize,
4049            mut depth: fidl::encoding::Depth,
4050        ) -> fidl::Result<()> {
4051            decoder.debug_check_bounds::<Self>(offset);
4052            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4053                None => return Err(fidl::Error::NotNullable),
4054                Some(len) => len,
4055            };
4056            // Calling decoder.out_of_line_offset(0) is not allowed.
4057            if len == 0 {
4058                return Ok(());
4059            };
4060            depth.increment()?;
4061            let envelope_size = 8;
4062            let bytes_len = len * envelope_size;
4063            let offset = decoder.out_of_line_offset(bytes_len)?;
4064            // Decode the envelope for each type.
4065            let mut _next_ordinal_to_read = 0;
4066            let mut next_offset = offset;
4067            let end_offset = offset + bytes_len;
4068            _next_ordinal_to_read += 1;
4069            if next_offset >= end_offset {
4070                return Ok(());
4071            }
4072
4073            // Decode unknown envelopes for gaps in ordinals.
4074            while _next_ordinal_to_read < 1 {
4075                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4076                _next_ordinal_to_read += 1;
4077                next_offset += envelope_size;
4078            }
4079
4080            let next_out_of_line = decoder.next_out_of_line();
4081            let handles_before = decoder.remaining_handles();
4082            if let Some((inlined, num_bytes, num_handles)) =
4083                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4084            {
4085                let member_inline_size =
4086                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
4087                        decoder.context,
4088                    );
4089                if inlined != (member_inline_size <= 4) {
4090                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4091                }
4092                let inner_offset;
4093                let mut inner_depth = depth.clone();
4094                if inlined {
4095                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4096                    inner_offset = next_offset;
4097                } else {
4098                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4099                    inner_depth.increment()?;
4100                }
4101                let val_ref = self
4102                    .peer_sta_address
4103                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
4104                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
4105                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4106                {
4107                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4108                }
4109                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4110                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4111                }
4112            }
4113
4114            next_offset += envelope_size;
4115            _next_ordinal_to_read += 1;
4116            if next_offset >= end_offset {
4117                return Ok(());
4118            }
4119
4120            // Decode unknown envelopes for gaps in ordinals.
4121            while _next_ordinal_to_read < 2 {
4122                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4123                _next_ordinal_to_read += 1;
4124                next_offset += envelope_size;
4125            }
4126
4127            let next_out_of_line = decoder.next_out_of_line();
4128            let handles_before = decoder.remaining_handles();
4129            if let Some((inlined, num_bytes, num_handles)) =
4130                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4131            {
4132                let member_inline_size =
4133                    <WlanAssocResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4134                if inlined != (member_inline_size <= 4) {
4135                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4136                }
4137                let inner_offset;
4138                let mut inner_depth = depth.clone();
4139                if inlined {
4140                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4141                    inner_offset = next_offset;
4142                } else {
4143                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4144                    inner_depth.increment()?;
4145                }
4146                let val_ref =
4147                    self.result_code.get_or_insert_with(|| fidl::new_empty!(WlanAssocResult, D));
4148                fidl::decode!(WlanAssocResult, D, val_ref, decoder, inner_offset, inner_depth)?;
4149                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4150                {
4151                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4152                }
4153                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4154                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4155                }
4156            }
4157
4158            next_offset += envelope_size;
4159            _next_ordinal_to_read += 1;
4160            if next_offset >= end_offset {
4161                return Ok(());
4162            }
4163
4164            // Decode unknown envelopes for gaps in ordinals.
4165            while _next_ordinal_to_read < 3 {
4166                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4167                _next_ordinal_to_read += 1;
4168                next_offset += envelope_size;
4169            }
4170
4171            let next_out_of_line = decoder.next_out_of_line();
4172            let handles_before = decoder.remaining_handles();
4173            if let Some((inlined, num_bytes, num_handles)) =
4174                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4175            {
4176                let member_inline_size =
4177                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4178                if inlined != (member_inline_size <= 4) {
4179                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4180                }
4181                let inner_offset;
4182                let mut inner_depth = depth.clone();
4183                if inlined {
4184                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4185                    inner_offset = next_offset;
4186                } else {
4187                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4188                    inner_depth.increment()?;
4189                }
4190                let val_ref = self.association_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
4191                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
4192                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4193                {
4194                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4195                }
4196                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4197                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4198                }
4199            }
4200
4201            next_offset += envelope_size;
4202
4203            // Decode the remaining unknown envelopes.
4204            while next_offset < end_offset {
4205                _next_ordinal_to_read += 1;
4206                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4207                next_offset += envelope_size;
4208            }
4209
4210            Ok(())
4211        }
4212    }
4213
4214    impl WlanFullmacImplAuthRespRequest {
4215        #[inline(always)]
4216        fn max_ordinal_present(&self) -> u64 {
4217            if let Some(_) = self.result_code {
4218                return 2;
4219            }
4220            if let Some(_) = self.peer_sta_address {
4221                return 1;
4222            }
4223            0
4224        }
4225    }
4226
4227    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplAuthRespRequest {
4228        type Borrowed<'a> = &'a Self;
4229        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4230            value
4231        }
4232    }
4233
4234    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplAuthRespRequest {
4235        type Owned = Self;
4236
4237        #[inline(always)]
4238        fn inline_align(_context: fidl::encoding::Context) -> usize {
4239            8
4240        }
4241
4242        #[inline(always)]
4243        fn inline_size(_context: fidl::encoding::Context) -> usize {
4244            16
4245        }
4246    }
4247
4248    unsafe impl<D: fidl::encoding::ResourceDialect>
4249        fidl::encoding::Encode<WlanFullmacImplAuthRespRequest, D>
4250        for &WlanFullmacImplAuthRespRequest
4251    {
4252        unsafe fn encode(
4253            self,
4254            encoder: &mut fidl::encoding::Encoder<'_, D>,
4255            offset: usize,
4256            mut depth: fidl::encoding::Depth,
4257        ) -> fidl::Result<()> {
4258            encoder.debug_check_bounds::<WlanFullmacImplAuthRespRequest>(offset);
4259            // Vector header
4260            let max_ordinal: u64 = self.max_ordinal_present();
4261            encoder.write_num(max_ordinal, offset);
4262            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4263            // Calling encoder.out_of_line_offset(0) is not allowed.
4264            if max_ordinal == 0 {
4265                return Ok(());
4266            }
4267            depth.increment()?;
4268            let envelope_size = 8;
4269            let bytes_len = max_ordinal as usize * envelope_size;
4270            #[allow(unused_variables)]
4271            let offset = encoder.out_of_line_offset(bytes_len);
4272            let mut _prev_end_offset: usize = 0;
4273            if 1 > max_ordinal {
4274                return Ok(());
4275            }
4276
4277            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4278            // are envelope_size bytes.
4279            let cur_offset: usize = (1 - 1) * envelope_size;
4280
4281            // Zero reserved fields.
4282            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4283
4284            // Safety:
4285            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4286            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4287            //   envelope_size bytes, there is always sufficient room.
4288            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
4289                self.peer_sta_address
4290                    .as_ref()
4291                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
4292                encoder,
4293                offset + cur_offset,
4294                depth,
4295            )?;
4296
4297            _prev_end_offset = cur_offset + envelope_size;
4298            if 2 > max_ordinal {
4299                return Ok(());
4300            }
4301
4302            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4303            // are envelope_size bytes.
4304            let cur_offset: usize = (2 - 1) * envelope_size;
4305
4306            // Zero reserved fields.
4307            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4308
4309            // Safety:
4310            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4311            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4312            //   envelope_size bytes, there is always sufficient room.
4313            fidl::encoding::encode_in_envelope_optional::<WlanAuthResult, D>(
4314                self.result_code
4315                    .as_ref()
4316                    .map(<WlanAuthResult as fidl::encoding::ValueTypeMarker>::borrow),
4317                encoder,
4318                offset + cur_offset,
4319                depth,
4320            )?;
4321
4322            _prev_end_offset = cur_offset + envelope_size;
4323
4324            Ok(())
4325        }
4326    }
4327
4328    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4329        for WlanFullmacImplAuthRespRequest
4330    {
4331        #[inline(always)]
4332        fn new_empty() -> Self {
4333            Self::default()
4334        }
4335
4336        unsafe fn decode(
4337            &mut self,
4338            decoder: &mut fidl::encoding::Decoder<'_, D>,
4339            offset: usize,
4340            mut depth: fidl::encoding::Depth,
4341        ) -> fidl::Result<()> {
4342            decoder.debug_check_bounds::<Self>(offset);
4343            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4344                None => return Err(fidl::Error::NotNullable),
4345                Some(len) => len,
4346            };
4347            // Calling decoder.out_of_line_offset(0) is not allowed.
4348            if len == 0 {
4349                return Ok(());
4350            };
4351            depth.increment()?;
4352            let envelope_size = 8;
4353            let bytes_len = len * envelope_size;
4354            let offset = decoder.out_of_line_offset(bytes_len)?;
4355            // Decode the envelope for each type.
4356            let mut _next_ordinal_to_read = 0;
4357            let mut next_offset = offset;
4358            let end_offset = offset + bytes_len;
4359            _next_ordinal_to_read += 1;
4360            if next_offset >= end_offset {
4361                return Ok(());
4362            }
4363
4364            // Decode unknown envelopes for gaps in ordinals.
4365            while _next_ordinal_to_read < 1 {
4366                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4367                _next_ordinal_to_read += 1;
4368                next_offset += envelope_size;
4369            }
4370
4371            let next_out_of_line = decoder.next_out_of_line();
4372            let handles_before = decoder.remaining_handles();
4373            if let Some((inlined, num_bytes, num_handles)) =
4374                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4375            {
4376                let member_inline_size =
4377                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
4378                        decoder.context,
4379                    );
4380                if inlined != (member_inline_size <= 4) {
4381                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4382                }
4383                let inner_offset;
4384                let mut inner_depth = depth.clone();
4385                if inlined {
4386                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4387                    inner_offset = next_offset;
4388                } else {
4389                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4390                    inner_depth.increment()?;
4391                }
4392                let val_ref = self
4393                    .peer_sta_address
4394                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
4395                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
4396                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4397                {
4398                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4399                }
4400                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4401                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4402                }
4403            }
4404
4405            next_offset += envelope_size;
4406            _next_ordinal_to_read += 1;
4407            if next_offset >= end_offset {
4408                return Ok(());
4409            }
4410
4411            // Decode unknown envelopes for gaps in ordinals.
4412            while _next_ordinal_to_read < 2 {
4413                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4414                _next_ordinal_to_read += 1;
4415                next_offset += envelope_size;
4416            }
4417
4418            let next_out_of_line = decoder.next_out_of_line();
4419            let handles_before = decoder.remaining_handles();
4420            if let Some((inlined, num_bytes, num_handles)) =
4421                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4422            {
4423                let member_inline_size =
4424                    <WlanAuthResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4425                if inlined != (member_inline_size <= 4) {
4426                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4427                }
4428                let inner_offset;
4429                let mut inner_depth = depth.clone();
4430                if inlined {
4431                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4432                    inner_offset = next_offset;
4433                } else {
4434                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4435                    inner_depth.increment()?;
4436                }
4437                let val_ref =
4438                    self.result_code.get_or_insert_with(|| fidl::new_empty!(WlanAuthResult, D));
4439                fidl::decode!(WlanAuthResult, D, val_ref, decoder, inner_offset, inner_depth)?;
4440                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4441                {
4442                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4443                }
4444                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4445                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4446                }
4447            }
4448
4449            next_offset += envelope_size;
4450
4451            // Decode the remaining unknown envelopes.
4452            while next_offset < end_offset {
4453                _next_ordinal_to_read += 1;
4454                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4455                next_offset += envelope_size;
4456            }
4457
4458            Ok(())
4459        }
4460    }
4461
4462    impl WlanFullmacImplConnectRequest {
4463        #[inline(always)]
4464        fn max_ordinal_present(&self) -> u64 {
4465            if let Some(_) = self.wep_key_desc {
4466                return 7;
4467            }
4468            if let Some(_) = self.security_ie {
4469                return 6;
4470            }
4471            if let Some(_) = self.wep_key {
4472                return 5;
4473            }
4474            if let Some(_) = self.sae_password {
4475                return 4;
4476            }
4477            if let Some(_) = self.auth_type {
4478                return 3;
4479            }
4480            if let Some(_) = self.connect_failure_timeout {
4481                return 2;
4482            }
4483            if let Some(_) = self.selected_bss {
4484                return 1;
4485            }
4486            0
4487        }
4488    }
4489
4490    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplConnectRequest {
4491        type Borrowed<'a> = &'a Self;
4492        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4493            value
4494        }
4495    }
4496
4497    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplConnectRequest {
4498        type Owned = Self;
4499
4500        #[inline(always)]
4501        fn inline_align(_context: fidl::encoding::Context) -> usize {
4502            8
4503        }
4504
4505        #[inline(always)]
4506        fn inline_size(_context: fidl::encoding::Context) -> usize {
4507            16
4508        }
4509    }
4510
4511    unsafe impl<D: fidl::encoding::ResourceDialect>
4512        fidl::encoding::Encode<WlanFullmacImplConnectRequest, D>
4513        for &WlanFullmacImplConnectRequest
4514    {
4515        unsafe fn encode(
4516            self,
4517            encoder: &mut fidl::encoding::Encoder<'_, D>,
4518            offset: usize,
4519            mut depth: fidl::encoding::Depth,
4520        ) -> fidl::Result<()> {
4521            encoder.debug_check_bounds::<WlanFullmacImplConnectRequest>(offset);
4522            // Vector header
4523            let max_ordinal: u64 = self.max_ordinal_present();
4524            encoder.write_num(max_ordinal, offset);
4525            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4526            // Calling encoder.out_of_line_offset(0) is not allowed.
4527            if max_ordinal == 0 {
4528                return Ok(());
4529            }
4530            depth.increment()?;
4531            let envelope_size = 8;
4532            let bytes_len = max_ordinal as usize * envelope_size;
4533            #[allow(unused_variables)]
4534            let offset = encoder.out_of_line_offset(bytes_len);
4535            let mut _prev_end_offset: usize = 0;
4536            if 1 > max_ordinal {
4537                return Ok(());
4538            }
4539
4540            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4541            // are envelope_size bytes.
4542            let cur_offset: usize = (1 - 1) * envelope_size;
4543
4544            // Zero reserved fields.
4545            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4546
4547            // Safety:
4548            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4549            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4550            //   envelope_size bytes, there is always sufficient room.
4551            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common__common::BssDescription, D>(
4552            self.selected_bss.as_ref().map(<fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow),
4553            encoder, offset + cur_offset, depth
4554        )?;
4555
4556            _prev_end_offset = cur_offset + envelope_size;
4557            if 2 > max_ordinal {
4558                return Ok(());
4559            }
4560
4561            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4562            // are envelope_size bytes.
4563            let cur_offset: usize = (2 - 1) * envelope_size;
4564
4565            // Zero reserved fields.
4566            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4567
4568            // Safety:
4569            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4570            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4571            //   envelope_size bytes, there is always sufficient room.
4572            fidl::encoding::encode_in_envelope_optional::<u32, D>(
4573                self.connect_failure_timeout
4574                    .as_ref()
4575                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
4576                encoder,
4577                offset + cur_offset,
4578                depth,
4579            )?;
4580
4581            _prev_end_offset = cur_offset + envelope_size;
4582            if 3 > max_ordinal {
4583                return Ok(());
4584            }
4585
4586            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4587            // are envelope_size bytes.
4588            let cur_offset: usize = (3 - 1) * envelope_size;
4589
4590            // Zero reserved fields.
4591            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4592
4593            // Safety:
4594            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4595            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4596            //   envelope_size bytes, there is always sufficient room.
4597            fidl::encoding::encode_in_envelope_optional::<WlanAuthType, D>(
4598                self.auth_type
4599                    .as_ref()
4600                    .map(<WlanAuthType as fidl::encoding::ValueTypeMarker>::borrow),
4601                encoder,
4602                offset + cur_offset,
4603                depth,
4604            )?;
4605
4606            _prev_end_offset = cur_offset + envelope_size;
4607            if 4 > max_ordinal {
4608                return Ok(());
4609            }
4610
4611            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4612            // are envelope_size bytes.
4613            let cur_offset: usize = (4 - 1) * envelope_size;
4614
4615            // Zero reserved fields.
4616            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4617
4618            // Safety:
4619            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4620            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4621            //   envelope_size bytes, there is always sufficient room.
4622            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
4623            self.sae_password.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
4624            encoder, offset + cur_offset, depth
4625        )?;
4626
4627            _prev_end_offset = cur_offset + envelope_size;
4628            if 5 > max_ordinal {
4629                return Ok(());
4630            }
4631
4632            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4633            // are envelope_size bytes.
4634            let cur_offset: usize = (5 - 1) * envelope_size;
4635
4636            // Zero reserved fields.
4637            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4638
4639            // Safety:
4640            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4641            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4642            //   envelope_size bytes, there is always sufficient room.
4643            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common__common::WlanKeyConfig, D>(
4644            self.wep_key.as_ref().map(<fidl_fuchsia_wlan_common__common::WlanKeyConfig as fidl::encoding::ValueTypeMarker>::borrow),
4645            encoder, offset + cur_offset, depth
4646        )?;
4647
4648            _prev_end_offset = cur_offset + envelope_size;
4649            if 6 > max_ordinal {
4650                return Ok(());
4651            }
4652
4653            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4654            // are envelope_size bytes.
4655            let cur_offset: usize = (6 - 1) * envelope_size;
4656
4657            // Zero reserved fields.
4658            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4659
4660            // Safety:
4661            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4662            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4663            //   envelope_size bytes, there is always sufficient room.
4664            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 257>, D>(
4665                self.security_ie.as_ref().map(
4666                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::ValueTypeMarker>::borrow,
4667                ),
4668                encoder,
4669                offset + cur_offset,
4670                depth,
4671            )?;
4672
4673            _prev_end_offset = cur_offset + envelope_size;
4674            if 7 > max_ordinal {
4675                return Ok(());
4676            }
4677
4678            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4679            // are envelope_size bytes.
4680            let cur_offset: usize = (7 - 1) * envelope_size;
4681
4682            // Zero reserved fields.
4683            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4684
4685            // Safety:
4686            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4687            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4688            //   envelope_size bytes, there is always sufficient room.
4689            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor, D>(
4690            self.wep_key_desc.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor as fidl::encoding::ValueTypeMarker>::borrow),
4691            encoder, offset + cur_offset, depth
4692        )?;
4693
4694            _prev_end_offset = cur_offset + envelope_size;
4695
4696            Ok(())
4697        }
4698    }
4699
4700    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4701        for WlanFullmacImplConnectRequest
4702    {
4703        #[inline(always)]
4704        fn new_empty() -> Self {
4705            Self::default()
4706        }
4707
4708        unsafe fn decode(
4709            &mut self,
4710            decoder: &mut fidl::encoding::Decoder<'_, D>,
4711            offset: usize,
4712            mut depth: fidl::encoding::Depth,
4713        ) -> fidl::Result<()> {
4714            decoder.debug_check_bounds::<Self>(offset);
4715            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4716                None => return Err(fidl::Error::NotNullable),
4717                Some(len) => len,
4718            };
4719            // Calling decoder.out_of_line_offset(0) is not allowed.
4720            if len == 0 {
4721                return Ok(());
4722            };
4723            depth.increment()?;
4724            let envelope_size = 8;
4725            let bytes_len = len * envelope_size;
4726            let offset = decoder.out_of_line_offset(bytes_len)?;
4727            // Decode the envelope for each type.
4728            let mut _next_ordinal_to_read = 0;
4729            let mut next_offset = offset;
4730            let end_offset = offset + bytes_len;
4731            _next_ordinal_to_read += 1;
4732            if next_offset >= end_offset {
4733                return Ok(());
4734            }
4735
4736            // Decode unknown envelopes for gaps in ordinals.
4737            while _next_ordinal_to_read < 1 {
4738                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4739                _next_ordinal_to_read += 1;
4740                next_offset += envelope_size;
4741            }
4742
4743            let next_out_of_line = decoder.next_out_of_line();
4744            let handles_before = decoder.remaining_handles();
4745            if let Some((inlined, num_bytes, num_handles)) =
4746                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4747            {
4748                let member_inline_size = <fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4749                if inlined != (member_inline_size <= 4) {
4750                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4751                }
4752                let inner_offset;
4753                let mut inner_depth = depth.clone();
4754                if inlined {
4755                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4756                    inner_offset = next_offset;
4757                } else {
4758                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4759                    inner_depth.increment()?;
4760                }
4761                let val_ref = self.selected_bss.get_or_insert_with(|| {
4762                    fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssDescription, D)
4763                });
4764                fidl::decode!(
4765                    fidl_fuchsia_wlan_common__common::BssDescription,
4766                    D,
4767                    val_ref,
4768                    decoder,
4769                    inner_offset,
4770                    inner_depth
4771                )?;
4772                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4773                {
4774                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4775                }
4776                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4777                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4778                }
4779            }
4780
4781            next_offset += envelope_size;
4782            _next_ordinal_to_read += 1;
4783            if next_offset >= end_offset {
4784                return Ok(());
4785            }
4786
4787            // Decode unknown envelopes for gaps in ordinals.
4788            while _next_ordinal_to_read < 2 {
4789                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4790                _next_ordinal_to_read += 1;
4791                next_offset += envelope_size;
4792            }
4793
4794            let next_out_of_line = decoder.next_out_of_line();
4795            let handles_before = decoder.remaining_handles();
4796            if let Some((inlined, num_bytes, num_handles)) =
4797                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4798            {
4799                let member_inline_size =
4800                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4801                if inlined != (member_inline_size <= 4) {
4802                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4803                }
4804                let inner_offset;
4805                let mut inner_depth = depth.clone();
4806                if inlined {
4807                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4808                    inner_offset = next_offset;
4809                } else {
4810                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4811                    inner_depth.increment()?;
4812                }
4813                let val_ref =
4814                    self.connect_failure_timeout.get_or_insert_with(|| fidl::new_empty!(u32, D));
4815                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4816                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4817                {
4818                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4819                }
4820                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4821                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4822                }
4823            }
4824
4825            next_offset += envelope_size;
4826            _next_ordinal_to_read += 1;
4827            if next_offset >= end_offset {
4828                return Ok(());
4829            }
4830
4831            // Decode unknown envelopes for gaps in ordinals.
4832            while _next_ordinal_to_read < 3 {
4833                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4834                _next_ordinal_to_read += 1;
4835                next_offset += envelope_size;
4836            }
4837
4838            let next_out_of_line = decoder.next_out_of_line();
4839            let handles_before = decoder.remaining_handles();
4840            if let Some((inlined, num_bytes, num_handles)) =
4841                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4842            {
4843                let member_inline_size =
4844                    <WlanAuthType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4845                if inlined != (member_inline_size <= 4) {
4846                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4847                }
4848                let inner_offset;
4849                let mut inner_depth = depth.clone();
4850                if inlined {
4851                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4852                    inner_offset = next_offset;
4853                } else {
4854                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4855                    inner_depth.increment()?;
4856                }
4857                let val_ref =
4858                    self.auth_type.get_or_insert_with(|| fidl::new_empty!(WlanAuthType, D));
4859                fidl::decode!(WlanAuthType, D, val_ref, decoder, inner_offset, inner_depth)?;
4860                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4861                {
4862                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4863                }
4864                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4865                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4866                }
4867            }
4868
4869            next_offset += envelope_size;
4870            _next_ordinal_to_read += 1;
4871            if next_offset >= end_offset {
4872                return Ok(());
4873            }
4874
4875            // Decode unknown envelopes for gaps in ordinals.
4876            while _next_ordinal_to_read < 4 {
4877                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4878                _next_ordinal_to_read += 1;
4879                next_offset += envelope_size;
4880            }
4881
4882            let next_out_of_line = decoder.next_out_of_line();
4883            let handles_before = decoder.remaining_handles();
4884            if let Some((inlined, num_bytes, num_handles)) =
4885                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4886            {
4887                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4888                if inlined != (member_inline_size <= 4) {
4889                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4890                }
4891                let inner_offset;
4892                let mut inner_depth = depth.clone();
4893                if inlined {
4894                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4895                    inner_offset = next_offset;
4896                } else {
4897                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4898                    inner_depth.increment()?;
4899                }
4900                let val_ref = self.sae_password.get_or_insert_with(|| {
4901                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
4902                });
4903                fidl::decode!(
4904                    fidl::encoding::UnboundedVector<u8>,
4905                    D,
4906                    val_ref,
4907                    decoder,
4908                    inner_offset,
4909                    inner_depth
4910                )?;
4911                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4912                {
4913                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4914                }
4915                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4916                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4917                }
4918            }
4919
4920            next_offset += envelope_size;
4921            _next_ordinal_to_read += 1;
4922            if next_offset >= end_offset {
4923                return Ok(());
4924            }
4925
4926            // Decode unknown envelopes for gaps in ordinals.
4927            while _next_ordinal_to_read < 5 {
4928                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4929                _next_ordinal_to_read += 1;
4930                next_offset += envelope_size;
4931            }
4932
4933            let next_out_of_line = decoder.next_out_of_line();
4934            let handles_before = decoder.remaining_handles();
4935            if let Some((inlined, num_bytes, num_handles)) =
4936                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4937            {
4938                let member_inline_size = <fidl_fuchsia_wlan_common__common::WlanKeyConfig as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4939                if inlined != (member_inline_size <= 4) {
4940                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4941                }
4942                let inner_offset;
4943                let mut inner_depth = depth.clone();
4944                if inlined {
4945                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4946                    inner_offset = next_offset;
4947                } else {
4948                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4949                    inner_depth.increment()?;
4950                }
4951                let val_ref = self.wep_key.get_or_insert_with(|| {
4952                    fidl::new_empty!(fidl_fuchsia_wlan_common__common::WlanKeyConfig, D)
4953                });
4954                fidl::decode!(
4955                    fidl_fuchsia_wlan_common__common::WlanKeyConfig,
4956                    D,
4957                    val_ref,
4958                    decoder,
4959                    inner_offset,
4960                    inner_depth
4961                )?;
4962                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4963                {
4964                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4965                }
4966                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4967                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4968                }
4969            }
4970
4971            next_offset += envelope_size;
4972            _next_ordinal_to_read += 1;
4973            if next_offset >= end_offset {
4974                return Ok(());
4975            }
4976
4977            // Decode unknown envelopes for gaps in ordinals.
4978            while _next_ordinal_to_read < 6 {
4979                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4980                _next_ordinal_to_read += 1;
4981                next_offset += envelope_size;
4982            }
4983
4984            let next_out_of_line = decoder.next_out_of_line();
4985            let handles_before = decoder.remaining_handles();
4986            if let Some((inlined, num_bytes, num_handles)) =
4987                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4988            {
4989                let member_inline_size =
4990                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::TypeMarker>::inline_size(
4991                        decoder.context,
4992                    );
4993                if inlined != (member_inline_size <= 4) {
4994                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4995                }
4996                let inner_offset;
4997                let mut inner_depth = depth.clone();
4998                if inlined {
4999                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5000                    inner_offset = next_offset;
5001                } else {
5002                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5003                    inner_depth.increment()?;
5004                }
5005                let val_ref = self
5006                    .security_ie
5007                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 257>, D));
5008                fidl::decode!(fidl::encoding::Vector<u8, 257>, D, val_ref, decoder, inner_offset, inner_depth)?;
5009                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5010                {
5011                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5012                }
5013                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5014                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5015                }
5016            }
5017
5018            next_offset += envelope_size;
5019            _next_ordinal_to_read += 1;
5020            if next_offset >= end_offset {
5021                return Ok(());
5022            }
5023
5024            // Decode unknown envelopes for gaps in ordinals.
5025            while _next_ordinal_to_read < 7 {
5026                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5027                _next_ordinal_to_read += 1;
5028                next_offset += envelope_size;
5029            }
5030
5031            let next_out_of_line = decoder.next_out_of_line();
5032            let handles_before = decoder.remaining_handles();
5033            if let Some((inlined, num_bytes, num_handles)) =
5034                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5035            {
5036                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5037                if inlined != (member_inline_size <= 4) {
5038                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5039                }
5040                let inner_offset;
5041                let mut inner_depth = depth.clone();
5042                if inlined {
5043                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5044                    inner_offset = next_offset;
5045                } else {
5046                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5047                    inner_depth.increment()?;
5048                }
5049                let val_ref = self.wep_key_desc.get_or_insert_with(|| {
5050                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor, D)
5051                });
5052                fidl::decode!(
5053                    fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor,
5054                    D,
5055                    val_ref,
5056                    decoder,
5057                    inner_offset,
5058                    inner_depth
5059                )?;
5060                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5061                {
5062                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5063                }
5064                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5065                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5066                }
5067            }
5068
5069            next_offset += envelope_size;
5070
5071            // Decode the remaining unknown envelopes.
5072            while next_offset < end_offset {
5073                _next_ordinal_to_read += 1;
5074                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5075                next_offset += envelope_size;
5076            }
5077
5078            Ok(())
5079        }
5080    }
5081
5082    impl WlanFullmacImplDeauthRequest {
5083        #[inline(always)]
5084        fn max_ordinal_present(&self) -> u64 {
5085            if let Some(_) = self.reason_code {
5086                return 2;
5087            }
5088            if let Some(_) = self.peer_sta_address {
5089                return 1;
5090            }
5091            0
5092        }
5093    }
5094
5095    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplDeauthRequest {
5096        type Borrowed<'a> = &'a Self;
5097        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5098            value
5099        }
5100    }
5101
5102    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplDeauthRequest {
5103        type Owned = Self;
5104
5105        #[inline(always)]
5106        fn inline_align(_context: fidl::encoding::Context) -> usize {
5107            8
5108        }
5109
5110        #[inline(always)]
5111        fn inline_size(_context: fidl::encoding::Context) -> usize {
5112            16
5113        }
5114    }
5115
5116    unsafe impl<D: fidl::encoding::ResourceDialect>
5117        fidl::encoding::Encode<WlanFullmacImplDeauthRequest, D> for &WlanFullmacImplDeauthRequest
5118    {
5119        unsafe fn encode(
5120            self,
5121            encoder: &mut fidl::encoding::Encoder<'_, D>,
5122            offset: usize,
5123            mut depth: fidl::encoding::Depth,
5124        ) -> fidl::Result<()> {
5125            encoder.debug_check_bounds::<WlanFullmacImplDeauthRequest>(offset);
5126            // Vector header
5127            let max_ordinal: u64 = self.max_ordinal_present();
5128            encoder.write_num(max_ordinal, offset);
5129            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5130            // Calling encoder.out_of_line_offset(0) is not allowed.
5131            if max_ordinal == 0 {
5132                return Ok(());
5133            }
5134            depth.increment()?;
5135            let envelope_size = 8;
5136            let bytes_len = max_ordinal as usize * envelope_size;
5137            #[allow(unused_variables)]
5138            let offset = encoder.out_of_line_offset(bytes_len);
5139            let mut _prev_end_offset: usize = 0;
5140            if 1 > max_ordinal {
5141                return Ok(());
5142            }
5143
5144            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5145            // are envelope_size bytes.
5146            let cur_offset: usize = (1 - 1) * envelope_size;
5147
5148            // Zero reserved fields.
5149            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5150
5151            // Safety:
5152            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5153            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5154            //   envelope_size bytes, there is always sufficient room.
5155            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5156                self.peer_sta_address
5157                    .as_ref()
5158                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5159                encoder,
5160                offset + cur_offset,
5161                depth,
5162            )?;
5163
5164            _prev_end_offset = cur_offset + envelope_size;
5165            if 2 > max_ordinal {
5166                return Ok(());
5167            }
5168
5169            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5170            // are envelope_size bytes.
5171            let cur_offset: usize = (2 - 1) * envelope_size;
5172
5173            // Zero reserved fields.
5174            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5175
5176            // Safety:
5177            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5178            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5179            //   envelope_size bytes, there is always sufficient room.
5180            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D>(
5181            self.reason_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow),
5182            encoder, offset + cur_offset, depth
5183        )?;
5184
5185            _prev_end_offset = cur_offset + envelope_size;
5186
5187            Ok(())
5188        }
5189    }
5190
5191    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5192        for WlanFullmacImplDeauthRequest
5193    {
5194        #[inline(always)]
5195        fn new_empty() -> Self {
5196            Self::default()
5197        }
5198
5199        unsafe fn decode(
5200            &mut self,
5201            decoder: &mut fidl::encoding::Decoder<'_, D>,
5202            offset: usize,
5203            mut depth: fidl::encoding::Depth,
5204        ) -> fidl::Result<()> {
5205            decoder.debug_check_bounds::<Self>(offset);
5206            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5207                None => return Err(fidl::Error::NotNullable),
5208                Some(len) => len,
5209            };
5210            // Calling decoder.out_of_line_offset(0) is not allowed.
5211            if len == 0 {
5212                return Ok(());
5213            };
5214            depth.increment()?;
5215            let envelope_size = 8;
5216            let bytes_len = len * envelope_size;
5217            let offset = decoder.out_of_line_offset(bytes_len)?;
5218            // Decode the envelope for each type.
5219            let mut _next_ordinal_to_read = 0;
5220            let mut next_offset = offset;
5221            let end_offset = offset + bytes_len;
5222            _next_ordinal_to_read += 1;
5223            if next_offset >= end_offset {
5224                return Ok(());
5225            }
5226
5227            // Decode unknown envelopes for gaps in ordinals.
5228            while _next_ordinal_to_read < 1 {
5229                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5230                _next_ordinal_to_read += 1;
5231                next_offset += envelope_size;
5232            }
5233
5234            let next_out_of_line = decoder.next_out_of_line();
5235            let handles_before = decoder.remaining_handles();
5236            if let Some((inlined, num_bytes, num_handles)) =
5237                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5238            {
5239                let member_inline_size =
5240                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
5241                        decoder.context,
5242                    );
5243                if inlined != (member_inline_size <= 4) {
5244                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5245                }
5246                let inner_offset;
5247                let mut inner_depth = depth.clone();
5248                if inlined {
5249                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5250                    inner_offset = next_offset;
5251                } else {
5252                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5253                    inner_depth.increment()?;
5254                }
5255                let val_ref = self
5256                    .peer_sta_address
5257                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
5258                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
5259                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5260                {
5261                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5262                }
5263                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5264                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5265                }
5266            }
5267
5268            next_offset += envelope_size;
5269            _next_ordinal_to_read += 1;
5270            if next_offset >= end_offset {
5271                return Ok(());
5272            }
5273
5274            // Decode unknown envelopes for gaps in ordinals.
5275            while _next_ordinal_to_read < 2 {
5276                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5277                _next_ordinal_to_read += 1;
5278                next_offset += envelope_size;
5279            }
5280
5281            let next_out_of_line = decoder.next_out_of_line();
5282            let handles_before = decoder.remaining_handles();
5283            if let Some((inlined, num_bytes, num_handles)) =
5284                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5285            {
5286                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5287                if inlined != (member_inline_size <= 4) {
5288                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5289                }
5290                let inner_offset;
5291                let mut inner_depth = depth.clone();
5292                if inlined {
5293                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5294                    inner_offset = next_offset;
5295                } else {
5296                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5297                    inner_depth.increment()?;
5298                }
5299                let val_ref = self.reason_code.get_or_insert_with(|| {
5300                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D)
5301                });
5302                fidl::decode!(
5303                    fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
5304                    D,
5305                    val_ref,
5306                    decoder,
5307                    inner_offset,
5308                    inner_depth
5309                )?;
5310                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5311                {
5312                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5313                }
5314                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5315                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5316                }
5317            }
5318
5319            next_offset += envelope_size;
5320
5321            // Decode the remaining unknown envelopes.
5322            while next_offset < end_offset {
5323                _next_ordinal_to_read += 1;
5324                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5325                next_offset += envelope_size;
5326            }
5327
5328            Ok(())
5329        }
5330    }
5331
5332    impl WlanFullmacImplDisassocRequest {
5333        #[inline(always)]
5334        fn max_ordinal_present(&self) -> u64 {
5335            if let Some(_) = self.reason_code {
5336                return 2;
5337            }
5338            if let Some(_) = self.peer_sta_address {
5339                return 1;
5340            }
5341            0
5342        }
5343    }
5344
5345    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplDisassocRequest {
5346        type Borrowed<'a> = &'a Self;
5347        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5348            value
5349        }
5350    }
5351
5352    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplDisassocRequest {
5353        type Owned = Self;
5354
5355        #[inline(always)]
5356        fn inline_align(_context: fidl::encoding::Context) -> usize {
5357            8
5358        }
5359
5360        #[inline(always)]
5361        fn inline_size(_context: fidl::encoding::Context) -> usize {
5362            16
5363        }
5364    }
5365
5366    unsafe impl<D: fidl::encoding::ResourceDialect>
5367        fidl::encoding::Encode<WlanFullmacImplDisassocRequest, D>
5368        for &WlanFullmacImplDisassocRequest
5369    {
5370        unsafe fn encode(
5371            self,
5372            encoder: &mut fidl::encoding::Encoder<'_, D>,
5373            offset: usize,
5374            mut depth: fidl::encoding::Depth,
5375        ) -> fidl::Result<()> {
5376            encoder.debug_check_bounds::<WlanFullmacImplDisassocRequest>(offset);
5377            // Vector header
5378            let max_ordinal: u64 = self.max_ordinal_present();
5379            encoder.write_num(max_ordinal, offset);
5380            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5381            // Calling encoder.out_of_line_offset(0) is not allowed.
5382            if max_ordinal == 0 {
5383                return Ok(());
5384            }
5385            depth.increment()?;
5386            let envelope_size = 8;
5387            let bytes_len = max_ordinal as usize * envelope_size;
5388            #[allow(unused_variables)]
5389            let offset = encoder.out_of_line_offset(bytes_len);
5390            let mut _prev_end_offset: usize = 0;
5391            if 1 > max_ordinal {
5392                return Ok(());
5393            }
5394
5395            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5396            // are envelope_size bytes.
5397            let cur_offset: usize = (1 - 1) * envelope_size;
5398
5399            // Zero reserved fields.
5400            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5401
5402            // Safety:
5403            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5404            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5405            //   envelope_size bytes, there is always sufficient room.
5406            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5407                self.peer_sta_address
5408                    .as_ref()
5409                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5410                encoder,
5411                offset + cur_offset,
5412                depth,
5413            )?;
5414
5415            _prev_end_offset = cur_offset + envelope_size;
5416            if 2 > max_ordinal {
5417                return Ok(());
5418            }
5419
5420            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5421            // are envelope_size bytes.
5422            let cur_offset: usize = (2 - 1) * envelope_size;
5423
5424            // Zero reserved fields.
5425            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5426
5427            // Safety:
5428            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5429            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5430            //   envelope_size bytes, there is always sufficient room.
5431            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D>(
5432            self.reason_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow),
5433            encoder, offset + cur_offset, depth
5434        )?;
5435
5436            _prev_end_offset = cur_offset + envelope_size;
5437
5438            Ok(())
5439        }
5440    }
5441
5442    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5443        for WlanFullmacImplDisassocRequest
5444    {
5445        #[inline(always)]
5446        fn new_empty() -> Self {
5447            Self::default()
5448        }
5449
5450        unsafe fn decode(
5451            &mut self,
5452            decoder: &mut fidl::encoding::Decoder<'_, D>,
5453            offset: usize,
5454            mut depth: fidl::encoding::Depth,
5455        ) -> fidl::Result<()> {
5456            decoder.debug_check_bounds::<Self>(offset);
5457            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5458                None => return Err(fidl::Error::NotNullable),
5459                Some(len) => len,
5460            };
5461            // Calling decoder.out_of_line_offset(0) is not allowed.
5462            if len == 0 {
5463                return Ok(());
5464            };
5465            depth.increment()?;
5466            let envelope_size = 8;
5467            let bytes_len = len * envelope_size;
5468            let offset = decoder.out_of_line_offset(bytes_len)?;
5469            // Decode the envelope for each type.
5470            let mut _next_ordinal_to_read = 0;
5471            let mut next_offset = offset;
5472            let end_offset = offset + bytes_len;
5473            _next_ordinal_to_read += 1;
5474            if next_offset >= end_offset {
5475                return Ok(());
5476            }
5477
5478            // Decode unknown envelopes for gaps in ordinals.
5479            while _next_ordinal_to_read < 1 {
5480                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5481                _next_ordinal_to_read += 1;
5482                next_offset += envelope_size;
5483            }
5484
5485            let next_out_of_line = decoder.next_out_of_line();
5486            let handles_before = decoder.remaining_handles();
5487            if let Some((inlined, num_bytes, num_handles)) =
5488                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5489            {
5490                let member_inline_size =
5491                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
5492                        decoder.context,
5493                    );
5494                if inlined != (member_inline_size <= 4) {
5495                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5496                }
5497                let inner_offset;
5498                let mut inner_depth = depth.clone();
5499                if inlined {
5500                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5501                    inner_offset = next_offset;
5502                } else {
5503                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5504                    inner_depth.increment()?;
5505                }
5506                let val_ref = self
5507                    .peer_sta_address
5508                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
5509                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
5510                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5511                {
5512                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5513                }
5514                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5515                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5516                }
5517            }
5518
5519            next_offset += envelope_size;
5520            _next_ordinal_to_read += 1;
5521            if next_offset >= end_offset {
5522                return Ok(());
5523            }
5524
5525            // Decode unknown envelopes for gaps in ordinals.
5526            while _next_ordinal_to_read < 2 {
5527                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5528                _next_ordinal_to_read += 1;
5529                next_offset += envelope_size;
5530            }
5531
5532            let next_out_of_line = decoder.next_out_of_line();
5533            let handles_before = decoder.remaining_handles();
5534            if let Some((inlined, num_bytes, num_handles)) =
5535                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5536            {
5537                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5538                if inlined != (member_inline_size <= 4) {
5539                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5540                }
5541                let inner_offset;
5542                let mut inner_depth = depth.clone();
5543                if inlined {
5544                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5545                    inner_offset = next_offset;
5546                } else {
5547                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5548                    inner_depth.increment()?;
5549                }
5550                let val_ref = self.reason_code.get_or_insert_with(|| {
5551                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D)
5552                });
5553                fidl::decode!(
5554                    fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
5555                    D,
5556                    val_ref,
5557                    decoder,
5558                    inner_offset,
5559                    inner_depth
5560                )?;
5561                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5562                {
5563                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5564                }
5565                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5566                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5567                }
5568            }
5569
5570            next_offset += envelope_size;
5571
5572            // Decode the remaining unknown envelopes.
5573            while next_offset < end_offset {
5574                _next_ordinal_to_read += 1;
5575                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5576                next_offset += envelope_size;
5577            }
5578
5579            Ok(())
5580        }
5581    }
5582
5583    impl WlanFullmacImplEapolTxRequest {
5584        #[inline(always)]
5585        fn max_ordinal_present(&self) -> u64 {
5586            if let Some(_) = self.data {
5587                return 3;
5588            }
5589            if let Some(_) = self.dst_addr {
5590                return 2;
5591            }
5592            if let Some(_) = self.src_addr {
5593                return 1;
5594            }
5595            0
5596        }
5597    }
5598
5599    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplEapolTxRequest {
5600        type Borrowed<'a> = &'a Self;
5601        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5602            value
5603        }
5604    }
5605
5606    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplEapolTxRequest {
5607        type Owned = Self;
5608
5609        #[inline(always)]
5610        fn inline_align(_context: fidl::encoding::Context) -> usize {
5611            8
5612        }
5613
5614        #[inline(always)]
5615        fn inline_size(_context: fidl::encoding::Context) -> usize {
5616            16
5617        }
5618    }
5619
5620    unsafe impl<D: fidl::encoding::ResourceDialect>
5621        fidl::encoding::Encode<WlanFullmacImplEapolTxRequest, D>
5622        for &WlanFullmacImplEapolTxRequest
5623    {
5624        unsafe fn encode(
5625            self,
5626            encoder: &mut fidl::encoding::Encoder<'_, D>,
5627            offset: usize,
5628            mut depth: fidl::encoding::Depth,
5629        ) -> fidl::Result<()> {
5630            encoder.debug_check_bounds::<WlanFullmacImplEapolTxRequest>(offset);
5631            // Vector header
5632            let max_ordinal: u64 = self.max_ordinal_present();
5633            encoder.write_num(max_ordinal, offset);
5634            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5635            // Calling encoder.out_of_line_offset(0) is not allowed.
5636            if max_ordinal == 0 {
5637                return Ok(());
5638            }
5639            depth.increment()?;
5640            let envelope_size = 8;
5641            let bytes_len = max_ordinal as usize * envelope_size;
5642            #[allow(unused_variables)]
5643            let offset = encoder.out_of_line_offset(bytes_len);
5644            let mut _prev_end_offset: usize = 0;
5645            if 1 > max_ordinal {
5646                return Ok(());
5647            }
5648
5649            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5650            // are envelope_size bytes.
5651            let cur_offset: usize = (1 - 1) * envelope_size;
5652
5653            // Zero reserved fields.
5654            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5655
5656            // Safety:
5657            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5658            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5659            //   envelope_size bytes, there is always sufficient room.
5660            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5661                self.src_addr
5662                    .as_ref()
5663                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5664                encoder,
5665                offset + cur_offset,
5666                depth,
5667            )?;
5668
5669            _prev_end_offset = cur_offset + envelope_size;
5670            if 2 > max_ordinal {
5671                return Ok(());
5672            }
5673
5674            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5675            // are envelope_size bytes.
5676            let cur_offset: usize = (2 - 1) * envelope_size;
5677
5678            // Zero reserved fields.
5679            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5680
5681            // Safety:
5682            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5683            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5684            //   envelope_size bytes, there is always sufficient room.
5685            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5686                self.dst_addr
5687                    .as_ref()
5688                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5689                encoder,
5690                offset + cur_offset,
5691                depth,
5692            )?;
5693
5694            _prev_end_offset = cur_offset + envelope_size;
5695            if 3 > max_ordinal {
5696                return Ok(());
5697            }
5698
5699            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5700            // are envelope_size bytes.
5701            let cur_offset: usize = (3 - 1) * envelope_size;
5702
5703            // Zero reserved fields.
5704            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5705
5706            // Safety:
5707            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5708            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5709            //   envelope_size bytes, there is always sufficient room.
5710            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
5711            self.data.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
5712            encoder, offset + cur_offset, depth
5713        )?;
5714
5715            _prev_end_offset = cur_offset + envelope_size;
5716
5717            Ok(())
5718        }
5719    }
5720
5721    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5722        for WlanFullmacImplEapolTxRequest
5723    {
5724        #[inline(always)]
5725        fn new_empty() -> Self {
5726            Self::default()
5727        }
5728
5729        unsafe fn decode(
5730            &mut self,
5731            decoder: &mut fidl::encoding::Decoder<'_, D>,
5732            offset: usize,
5733            mut depth: fidl::encoding::Depth,
5734        ) -> fidl::Result<()> {
5735            decoder.debug_check_bounds::<Self>(offset);
5736            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5737                None => return Err(fidl::Error::NotNullable),
5738                Some(len) => len,
5739            };
5740            // Calling decoder.out_of_line_offset(0) is not allowed.
5741            if len == 0 {
5742                return Ok(());
5743            };
5744            depth.increment()?;
5745            let envelope_size = 8;
5746            let bytes_len = len * envelope_size;
5747            let offset = decoder.out_of_line_offset(bytes_len)?;
5748            // Decode the envelope for each type.
5749            let mut _next_ordinal_to_read = 0;
5750            let mut next_offset = offset;
5751            let end_offset = offset + bytes_len;
5752            _next_ordinal_to_read += 1;
5753            if next_offset >= end_offset {
5754                return Ok(());
5755            }
5756
5757            // Decode unknown envelopes for gaps in ordinals.
5758            while _next_ordinal_to_read < 1 {
5759                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5760                _next_ordinal_to_read += 1;
5761                next_offset += envelope_size;
5762            }
5763
5764            let next_out_of_line = decoder.next_out_of_line();
5765            let handles_before = decoder.remaining_handles();
5766            if let Some((inlined, num_bytes, num_handles)) =
5767                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5768            {
5769                let member_inline_size =
5770                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
5771                        decoder.context,
5772                    );
5773                if inlined != (member_inline_size <= 4) {
5774                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5775                }
5776                let inner_offset;
5777                let mut inner_depth = depth.clone();
5778                if inlined {
5779                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5780                    inner_offset = next_offset;
5781                } else {
5782                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5783                    inner_depth.increment()?;
5784                }
5785                let val_ref = self
5786                    .src_addr
5787                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
5788                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
5789                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5790                {
5791                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5792                }
5793                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5794                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5795                }
5796            }
5797
5798            next_offset += envelope_size;
5799            _next_ordinal_to_read += 1;
5800            if next_offset >= end_offset {
5801                return Ok(());
5802            }
5803
5804            // Decode unknown envelopes for gaps in ordinals.
5805            while _next_ordinal_to_read < 2 {
5806                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5807                _next_ordinal_to_read += 1;
5808                next_offset += envelope_size;
5809            }
5810
5811            let next_out_of_line = decoder.next_out_of_line();
5812            let handles_before = decoder.remaining_handles();
5813            if let Some((inlined, num_bytes, num_handles)) =
5814                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5815            {
5816                let member_inline_size =
5817                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
5818                        decoder.context,
5819                    );
5820                if inlined != (member_inline_size <= 4) {
5821                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5822                }
5823                let inner_offset;
5824                let mut inner_depth = depth.clone();
5825                if inlined {
5826                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5827                    inner_offset = next_offset;
5828                } else {
5829                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5830                    inner_depth.increment()?;
5831                }
5832                let val_ref = self
5833                    .dst_addr
5834                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
5835                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
5836                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5837                {
5838                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5839                }
5840                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5841                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5842                }
5843            }
5844
5845            next_offset += envelope_size;
5846            _next_ordinal_to_read += 1;
5847            if next_offset >= end_offset {
5848                return Ok(());
5849            }
5850
5851            // Decode unknown envelopes for gaps in ordinals.
5852            while _next_ordinal_to_read < 3 {
5853                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5854                _next_ordinal_to_read += 1;
5855                next_offset += envelope_size;
5856            }
5857
5858            let next_out_of_line = decoder.next_out_of_line();
5859            let handles_before = decoder.remaining_handles();
5860            if let Some((inlined, num_bytes, num_handles)) =
5861                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5862            {
5863                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5864                if inlined != (member_inline_size <= 4) {
5865                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5866                }
5867                let inner_offset;
5868                let mut inner_depth = depth.clone();
5869                if inlined {
5870                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5871                    inner_offset = next_offset;
5872                } else {
5873                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5874                    inner_depth.increment()?;
5875                }
5876                let val_ref = self.data.get_or_insert_with(|| {
5877                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
5878                });
5879                fidl::decode!(
5880                    fidl::encoding::UnboundedVector<u8>,
5881                    D,
5882                    val_ref,
5883                    decoder,
5884                    inner_offset,
5885                    inner_depth
5886                )?;
5887                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5888                {
5889                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5890                }
5891                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5892                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5893                }
5894            }
5895
5896            next_offset += envelope_size;
5897
5898            // Decode the remaining unknown envelopes.
5899            while next_offset < end_offset {
5900                _next_ordinal_to_read += 1;
5901                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5902                next_offset += envelope_size;
5903            }
5904
5905            Ok(())
5906        }
5907    }
5908
5909    impl WlanFullmacImplIfcAssocIndRequest {
5910        #[inline(always)]
5911        fn max_ordinal_present(&self) -> u64 {
5912            if let Some(_) = self.vendor_ie {
5913                return 5;
5914            }
5915            if let Some(_) = self.rsne {
5916                return 4;
5917            }
5918            if let Some(_) = self.ssid {
5919                return 3;
5920            }
5921            if let Some(_) = self.listen_interval {
5922                return 2;
5923            }
5924            if let Some(_) = self.peer_sta_address {
5925                return 1;
5926            }
5927            0
5928        }
5929    }
5930
5931    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcAssocIndRequest {
5932        type Borrowed<'a> = &'a Self;
5933        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5934            value
5935        }
5936    }
5937
5938    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcAssocIndRequest {
5939        type Owned = Self;
5940
5941        #[inline(always)]
5942        fn inline_align(_context: fidl::encoding::Context) -> usize {
5943            8
5944        }
5945
5946        #[inline(always)]
5947        fn inline_size(_context: fidl::encoding::Context) -> usize {
5948            16
5949        }
5950    }
5951
5952    unsafe impl<D: fidl::encoding::ResourceDialect>
5953        fidl::encoding::Encode<WlanFullmacImplIfcAssocIndRequest, D>
5954        for &WlanFullmacImplIfcAssocIndRequest
5955    {
5956        unsafe fn encode(
5957            self,
5958            encoder: &mut fidl::encoding::Encoder<'_, D>,
5959            offset: usize,
5960            mut depth: fidl::encoding::Depth,
5961        ) -> fidl::Result<()> {
5962            encoder.debug_check_bounds::<WlanFullmacImplIfcAssocIndRequest>(offset);
5963            // Vector header
5964            let max_ordinal: u64 = self.max_ordinal_present();
5965            encoder.write_num(max_ordinal, offset);
5966            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5967            // Calling encoder.out_of_line_offset(0) is not allowed.
5968            if max_ordinal == 0 {
5969                return Ok(());
5970            }
5971            depth.increment()?;
5972            let envelope_size = 8;
5973            let bytes_len = max_ordinal as usize * envelope_size;
5974            #[allow(unused_variables)]
5975            let offset = encoder.out_of_line_offset(bytes_len);
5976            let mut _prev_end_offset: usize = 0;
5977            if 1 > max_ordinal {
5978                return Ok(());
5979            }
5980
5981            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5982            // are envelope_size bytes.
5983            let cur_offset: usize = (1 - 1) * envelope_size;
5984
5985            // Zero reserved fields.
5986            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5987
5988            // Safety:
5989            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5990            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5991            //   envelope_size bytes, there is always sufficient room.
5992            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5993                self.peer_sta_address
5994                    .as_ref()
5995                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5996                encoder,
5997                offset + cur_offset,
5998                depth,
5999            )?;
6000
6001            _prev_end_offset = cur_offset + envelope_size;
6002            if 2 > max_ordinal {
6003                return Ok(());
6004            }
6005
6006            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6007            // are envelope_size bytes.
6008            let cur_offset: usize = (2 - 1) * envelope_size;
6009
6010            // Zero reserved fields.
6011            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6012
6013            // Safety:
6014            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6015            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6016            //   envelope_size bytes, there is always sufficient room.
6017            fidl::encoding::encode_in_envelope_optional::<u16, D>(
6018                self.listen_interval.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
6019                encoder,
6020                offset + cur_offset,
6021                depth,
6022            )?;
6023
6024            _prev_end_offset = cur_offset + envelope_size;
6025            if 3 > max_ordinal {
6026                return Ok(());
6027            }
6028
6029            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6030            // are envelope_size bytes.
6031            let cur_offset: usize = (3 - 1) * envelope_size;
6032
6033            // Zero reserved fields.
6034            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6035
6036            // Safety:
6037            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6038            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6039            //   envelope_size bytes, there is always sufficient room.
6040            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
6041                self.ssid.as_ref().map(
6042                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
6043                ),
6044                encoder,
6045                offset + cur_offset,
6046                depth,
6047            )?;
6048
6049            _prev_end_offset = cur_offset + envelope_size;
6050            if 4 > max_ordinal {
6051                return Ok(());
6052            }
6053
6054            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6055            // are envelope_size bytes.
6056            let cur_offset: usize = (4 - 1) * envelope_size;
6057
6058            // Zero reserved fields.
6059            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6060
6061            // Safety:
6062            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6063            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6064            //   envelope_size bytes, there is always sufficient room.
6065            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 257>, D>(
6066                self.rsne.as_ref().map(
6067                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::ValueTypeMarker>::borrow,
6068                ),
6069                encoder,
6070                offset + cur_offset,
6071                depth,
6072            )?;
6073
6074            _prev_end_offset = cur_offset + envelope_size;
6075            if 5 > max_ordinal {
6076                return Ok(());
6077            }
6078
6079            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6080            // are envelope_size bytes.
6081            let cur_offset: usize = (5 - 1) * envelope_size;
6082
6083            // Zero reserved fields.
6084            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6085
6086            // Safety:
6087            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6088            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6089            //   envelope_size bytes, there is always sufficient room.
6090            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 514>, D>(
6091                self.vendor_ie.as_ref().map(
6092                    <fidl::encoding::Vector<u8, 514> as fidl::encoding::ValueTypeMarker>::borrow,
6093                ),
6094                encoder,
6095                offset + cur_offset,
6096                depth,
6097            )?;
6098
6099            _prev_end_offset = cur_offset + envelope_size;
6100
6101            Ok(())
6102        }
6103    }
6104
6105    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6106        for WlanFullmacImplIfcAssocIndRequest
6107    {
6108        #[inline(always)]
6109        fn new_empty() -> Self {
6110            Self::default()
6111        }
6112
6113        unsafe fn decode(
6114            &mut self,
6115            decoder: &mut fidl::encoding::Decoder<'_, D>,
6116            offset: usize,
6117            mut depth: fidl::encoding::Depth,
6118        ) -> fidl::Result<()> {
6119            decoder.debug_check_bounds::<Self>(offset);
6120            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6121                None => return Err(fidl::Error::NotNullable),
6122                Some(len) => len,
6123            };
6124            // Calling decoder.out_of_line_offset(0) is not allowed.
6125            if len == 0 {
6126                return Ok(());
6127            };
6128            depth.increment()?;
6129            let envelope_size = 8;
6130            let bytes_len = len * envelope_size;
6131            let offset = decoder.out_of_line_offset(bytes_len)?;
6132            // Decode the envelope for each type.
6133            let mut _next_ordinal_to_read = 0;
6134            let mut next_offset = offset;
6135            let end_offset = offset + bytes_len;
6136            _next_ordinal_to_read += 1;
6137            if next_offset >= end_offset {
6138                return Ok(());
6139            }
6140
6141            // Decode unknown envelopes for gaps in ordinals.
6142            while _next_ordinal_to_read < 1 {
6143                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6144                _next_ordinal_to_read += 1;
6145                next_offset += envelope_size;
6146            }
6147
6148            let next_out_of_line = decoder.next_out_of_line();
6149            let handles_before = decoder.remaining_handles();
6150            if let Some((inlined, num_bytes, num_handles)) =
6151                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6152            {
6153                let member_inline_size =
6154                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
6155                        decoder.context,
6156                    );
6157                if inlined != (member_inline_size <= 4) {
6158                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6159                }
6160                let inner_offset;
6161                let mut inner_depth = depth.clone();
6162                if inlined {
6163                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6164                    inner_offset = next_offset;
6165                } else {
6166                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6167                    inner_depth.increment()?;
6168                }
6169                let val_ref = self
6170                    .peer_sta_address
6171                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
6172                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
6173                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6174                {
6175                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6176                }
6177                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6178                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6179                }
6180            }
6181
6182            next_offset += envelope_size;
6183            _next_ordinal_to_read += 1;
6184            if next_offset >= end_offset {
6185                return Ok(());
6186            }
6187
6188            // Decode unknown envelopes for gaps in ordinals.
6189            while _next_ordinal_to_read < 2 {
6190                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6191                _next_ordinal_to_read += 1;
6192                next_offset += envelope_size;
6193            }
6194
6195            let next_out_of_line = decoder.next_out_of_line();
6196            let handles_before = decoder.remaining_handles();
6197            if let Some((inlined, num_bytes, num_handles)) =
6198                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6199            {
6200                let member_inline_size =
6201                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6202                if inlined != (member_inline_size <= 4) {
6203                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6204                }
6205                let inner_offset;
6206                let mut inner_depth = depth.clone();
6207                if inlined {
6208                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6209                    inner_offset = next_offset;
6210                } else {
6211                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6212                    inner_depth.increment()?;
6213                }
6214                let val_ref = self.listen_interval.get_or_insert_with(|| fidl::new_empty!(u16, D));
6215                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
6216                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6217                {
6218                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6219                }
6220                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6221                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6222                }
6223            }
6224
6225            next_offset += envelope_size;
6226            _next_ordinal_to_read += 1;
6227            if next_offset >= end_offset {
6228                return Ok(());
6229            }
6230
6231            // Decode unknown envelopes for gaps in ordinals.
6232            while _next_ordinal_to_read < 3 {
6233                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6234                _next_ordinal_to_read += 1;
6235                next_offset += envelope_size;
6236            }
6237
6238            let next_out_of_line = decoder.next_out_of_line();
6239            let handles_before = decoder.remaining_handles();
6240            if let Some((inlined, num_bytes, num_handles)) =
6241                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6242            {
6243                let member_inline_size =
6244                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
6245                        decoder.context,
6246                    );
6247                if inlined != (member_inline_size <= 4) {
6248                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6249                }
6250                let inner_offset;
6251                let mut inner_depth = depth.clone();
6252                if inlined {
6253                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6254                    inner_offset = next_offset;
6255                } else {
6256                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6257                    inner_depth.increment()?;
6258                }
6259                let val_ref = self
6260                    .ssid
6261                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
6262                fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
6263                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6264                {
6265                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6266                }
6267                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6268                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6269                }
6270            }
6271
6272            next_offset += envelope_size;
6273            _next_ordinal_to_read += 1;
6274            if next_offset >= end_offset {
6275                return Ok(());
6276            }
6277
6278            // Decode unknown envelopes for gaps in ordinals.
6279            while _next_ordinal_to_read < 4 {
6280                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6281                _next_ordinal_to_read += 1;
6282                next_offset += envelope_size;
6283            }
6284
6285            let next_out_of_line = decoder.next_out_of_line();
6286            let handles_before = decoder.remaining_handles();
6287            if let Some((inlined, num_bytes, num_handles)) =
6288                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6289            {
6290                let member_inline_size =
6291                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::TypeMarker>::inline_size(
6292                        decoder.context,
6293                    );
6294                if inlined != (member_inline_size <= 4) {
6295                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6296                }
6297                let inner_offset;
6298                let mut inner_depth = depth.clone();
6299                if inlined {
6300                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6301                    inner_offset = next_offset;
6302                } else {
6303                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6304                    inner_depth.increment()?;
6305                }
6306                let val_ref = self
6307                    .rsne
6308                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 257>, D));
6309                fidl::decode!(fidl::encoding::Vector<u8, 257>, D, val_ref, decoder, inner_offset, inner_depth)?;
6310                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6311                {
6312                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6313                }
6314                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6315                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6316                }
6317            }
6318
6319            next_offset += envelope_size;
6320            _next_ordinal_to_read += 1;
6321            if next_offset >= end_offset {
6322                return Ok(());
6323            }
6324
6325            // Decode unknown envelopes for gaps in ordinals.
6326            while _next_ordinal_to_read < 5 {
6327                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6328                _next_ordinal_to_read += 1;
6329                next_offset += envelope_size;
6330            }
6331
6332            let next_out_of_line = decoder.next_out_of_line();
6333            let handles_before = decoder.remaining_handles();
6334            if let Some((inlined, num_bytes, num_handles)) =
6335                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6336            {
6337                let member_inline_size =
6338                    <fidl::encoding::Vector<u8, 514> as fidl::encoding::TypeMarker>::inline_size(
6339                        decoder.context,
6340                    );
6341                if inlined != (member_inline_size <= 4) {
6342                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6343                }
6344                let inner_offset;
6345                let mut inner_depth = depth.clone();
6346                if inlined {
6347                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6348                    inner_offset = next_offset;
6349                } else {
6350                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6351                    inner_depth.increment()?;
6352                }
6353                let val_ref = self
6354                    .vendor_ie
6355                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 514>, D));
6356                fidl::decode!(fidl::encoding::Vector<u8, 514>, D, val_ref, decoder, inner_offset, inner_depth)?;
6357                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6358                {
6359                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6360                }
6361                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6362                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6363                }
6364            }
6365
6366            next_offset += envelope_size;
6367
6368            // Decode the remaining unknown envelopes.
6369            while next_offset < end_offset {
6370                _next_ordinal_to_read += 1;
6371                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6372                next_offset += envelope_size;
6373            }
6374
6375            Ok(())
6376        }
6377    }
6378
6379    impl WlanFullmacImplIfcAuthIndRequest {
6380        #[inline(always)]
6381        fn max_ordinal_present(&self) -> u64 {
6382            if let Some(_) = self.auth_type {
6383                return 2;
6384            }
6385            if let Some(_) = self.peer_sta_address {
6386                return 1;
6387            }
6388            0
6389        }
6390    }
6391
6392    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcAuthIndRequest {
6393        type Borrowed<'a> = &'a Self;
6394        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6395            value
6396        }
6397    }
6398
6399    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcAuthIndRequest {
6400        type Owned = Self;
6401
6402        #[inline(always)]
6403        fn inline_align(_context: fidl::encoding::Context) -> usize {
6404            8
6405        }
6406
6407        #[inline(always)]
6408        fn inline_size(_context: fidl::encoding::Context) -> usize {
6409            16
6410        }
6411    }
6412
6413    unsafe impl<D: fidl::encoding::ResourceDialect>
6414        fidl::encoding::Encode<WlanFullmacImplIfcAuthIndRequest, D>
6415        for &WlanFullmacImplIfcAuthIndRequest
6416    {
6417        unsafe fn encode(
6418            self,
6419            encoder: &mut fidl::encoding::Encoder<'_, D>,
6420            offset: usize,
6421            mut depth: fidl::encoding::Depth,
6422        ) -> fidl::Result<()> {
6423            encoder.debug_check_bounds::<WlanFullmacImplIfcAuthIndRequest>(offset);
6424            // Vector header
6425            let max_ordinal: u64 = self.max_ordinal_present();
6426            encoder.write_num(max_ordinal, offset);
6427            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6428            // Calling encoder.out_of_line_offset(0) is not allowed.
6429            if max_ordinal == 0 {
6430                return Ok(());
6431            }
6432            depth.increment()?;
6433            let envelope_size = 8;
6434            let bytes_len = max_ordinal as usize * envelope_size;
6435            #[allow(unused_variables)]
6436            let offset = encoder.out_of_line_offset(bytes_len);
6437            let mut _prev_end_offset: usize = 0;
6438            if 1 > max_ordinal {
6439                return Ok(());
6440            }
6441
6442            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6443            // are envelope_size bytes.
6444            let cur_offset: usize = (1 - 1) * envelope_size;
6445
6446            // Zero reserved fields.
6447            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6448
6449            // Safety:
6450            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6451            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6452            //   envelope_size bytes, there is always sufficient room.
6453            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
6454                self.peer_sta_address
6455                    .as_ref()
6456                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
6457                encoder,
6458                offset + cur_offset,
6459                depth,
6460            )?;
6461
6462            _prev_end_offset = cur_offset + envelope_size;
6463            if 2 > max_ordinal {
6464                return Ok(());
6465            }
6466
6467            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6468            // are envelope_size bytes.
6469            let cur_offset: usize = (2 - 1) * envelope_size;
6470
6471            // Zero reserved fields.
6472            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6473
6474            // Safety:
6475            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6476            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6477            //   envelope_size bytes, there is always sufficient room.
6478            fidl::encoding::encode_in_envelope_optional::<WlanAuthType, D>(
6479                self.auth_type
6480                    .as_ref()
6481                    .map(<WlanAuthType as fidl::encoding::ValueTypeMarker>::borrow),
6482                encoder,
6483                offset + cur_offset,
6484                depth,
6485            )?;
6486
6487            _prev_end_offset = cur_offset + envelope_size;
6488
6489            Ok(())
6490        }
6491    }
6492
6493    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6494        for WlanFullmacImplIfcAuthIndRequest
6495    {
6496        #[inline(always)]
6497        fn new_empty() -> Self {
6498            Self::default()
6499        }
6500
6501        unsafe fn decode(
6502            &mut self,
6503            decoder: &mut fidl::encoding::Decoder<'_, D>,
6504            offset: usize,
6505            mut depth: fidl::encoding::Depth,
6506        ) -> fidl::Result<()> {
6507            decoder.debug_check_bounds::<Self>(offset);
6508            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6509                None => return Err(fidl::Error::NotNullable),
6510                Some(len) => len,
6511            };
6512            // Calling decoder.out_of_line_offset(0) is not allowed.
6513            if len == 0 {
6514                return Ok(());
6515            };
6516            depth.increment()?;
6517            let envelope_size = 8;
6518            let bytes_len = len * envelope_size;
6519            let offset = decoder.out_of_line_offset(bytes_len)?;
6520            // Decode the envelope for each type.
6521            let mut _next_ordinal_to_read = 0;
6522            let mut next_offset = offset;
6523            let end_offset = offset + bytes_len;
6524            _next_ordinal_to_read += 1;
6525            if next_offset >= end_offset {
6526                return Ok(());
6527            }
6528
6529            // Decode unknown envelopes for gaps in ordinals.
6530            while _next_ordinal_to_read < 1 {
6531                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6532                _next_ordinal_to_read += 1;
6533                next_offset += envelope_size;
6534            }
6535
6536            let next_out_of_line = decoder.next_out_of_line();
6537            let handles_before = decoder.remaining_handles();
6538            if let Some((inlined, num_bytes, num_handles)) =
6539                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6540            {
6541                let member_inline_size =
6542                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
6543                        decoder.context,
6544                    );
6545                if inlined != (member_inline_size <= 4) {
6546                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6547                }
6548                let inner_offset;
6549                let mut inner_depth = depth.clone();
6550                if inlined {
6551                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6552                    inner_offset = next_offset;
6553                } else {
6554                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6555                    inner_depth.increment()?;
6556                }
6557                let val_ref = self
6558                    .peer_sta_address
6559                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
6560                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
6561                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6562                {
6563                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6564                }
6565                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6566                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6567                }
6568            }
6569
6570            next_offset += envelope_size;
6571            _next_ordinal_to_read += 1;
6572            if next_offset >= end_offset {
6573                return Ok(());
6574            }
6575
6576            // Decode unknown envelopes for gaps in ordinals.
6577            while _next_ordinal_to_read < 2 {
6578                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6579                _next_ordinal_to_read += 1;
6580                next_offset += envelope_size;
6581            }
6582
6583            let next_out_of_line = decoder.next_out_of_line();
6584            let handles_before = decoder.remaining_handles();
6585            if let Some((inlined, num_bytes, num_handles)) =
6586                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6587            {
6588                let member_inline_size =
6589                    <WlanAuthType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6590                if inlined != (member_inline_size <= 4) {
6591                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6592                }
6593                let inner_offset;
6594                let mut inner_depth = depth.clone();
6595                if inlined {
6596                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6597                    inner_offset = next_offset;
6598                } else {
6599                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6600                    inner_depth.increment()?;
6601                }
6602                let val_ref =
6603                    self.auth_type.get_or_insert_with(|| fidl::new_empty!(WlanAuthType, D));
6604                fidl::decode!(WlanAuthType, D, val_ref, decoder, inner_offset, inner_depth)?;
6605                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6606                {
6607                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6608                }
6609                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6610                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6611                }
6612            }
6613
6614            next_offset += envelope_size;
6615
6616            // Decode the remaining unknown envelopes.
6617            while next_offset < end_offset {
6618                _next_ordinal_to_read += 1;
6619                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6620                next_offset += envelope_size;
6621            }
6622
6623            Ok(())
6624        }
6625    }
6626
6627    impl WlanFullmacImplIfcConnectConfRequest {
6628        #[inline(always)]
6629        fn max_ordinal_present(&self) -> u64 {
6630            if let Some(_) = self.association_ies {
6631                return 4;
6632            }
6633            if let Some(_) = self.association_id {
6634                return 3;
6635            }
6636            if let Some(_) = self.result_code {
6637                return 2;
6638            }
6639            if let Some(_) = self.peer_sta_address {
6640                return 1;
6641            }
6642            0
6643        }
6644    }
6645
6646    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcConnectConfRequest {
6647        type Borrowed<'a> = &'a Self;
6648        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6649            value
6650        }
6651    }
6652
6653    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcConnectConfRequest {
6654        type Owned = Self;
6655
6656        #[inline(always)]
6657        fn inline_align(_context: fidl::encoding::Context) -> usize {
6658            8
6659        }
6660
6661        #[inline(always)]
6662        fn inline_size(_context: fidl::encoding::Context) -> usize {
6663            16
6664        }
6665    }
6666
6667    unsafe impl<D: fidl::encoding::ResourceDialect>
6668        fidl::encoding::Encode<WlanFullmacImplIfcConnectConfRequest, D>
6669        for &WlanFullmacImplIfcConnectConfRequest
6670    {
6671        unsafe fn encode(
6672            self,
6673            encoder: &mut fidl::encoding::Encoder<'_, D>,
6674            offset: usize,
6675            mut depth: fidl::encoding::Depth,
6676        ) -> fidl::Result<()> {
6677            encoder.debug_check_bounds::<WlanFullmacImplIfcConnectConfRequest>(offset);
6678            // Vector header
6679            let max_ordinal: u64 = self.max_ordinal_present();
6680            encoder.write_num(max_ordinal, offset);
6681            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6682            // Calling encoder.out_of_line_offset(0) is not allowed.
6683            if max_ordinal == 0 {
6684                return Ok(());
6685            }
6686            depth.increment()?;
6687            let envelope_size = 8;
6688            let bytes_len = max_ordinal as usize * envelope_size;
6689            #[allow(unused_variables)]
6690            let offset = encoder.out_of_line_offset(bytes_len);
6691            let mut _prev_end_offset: usize = 0;
6692            if 1 > max_ordinal {
6693                return Ok(());
6694            }
6695
6696            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6697            // are envelope_size bytes.
6698            let cur_offset: usize = (1 - 1) * envelope_size;
6699
6700            // Zero reserved fields.
6701            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6702
6703            // Safety:
6704            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6705            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6706            //   envelope_size bytes, there is always sufficient room.
6707            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
6708                self.peer_sta_address
6709                    .as_ref()
6710                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
6711                encoder,
6712                offset + cur_offset,
6713                depth,
6714            )?;
6715
6716            _prev_end_offset = cur_offset + envelope_size;
6717            if 2 > max_ordinal {
6718                return Ok(());
6719            }
6720
6721            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6722            // are envelope_size bytes.
6723            let cur_offset: usize = (2 - 1) * envelope_size;
6724
6725            // Zero reserved fields.
6726            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6727
6728            // Safety:
6729            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6730            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6731            //   envelope_size bytes, there is always sufficient room.
6732            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>(
6733            self.result_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
6734            encoder, offset + cur_offset, depth
6735        )?;
6736
6737            _prev_end_offset = cur_offset + envelope_size;
6738            if 3 > max_ordinal {
6739                return Ok(());
6740            }
6741
6742            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6743            // are envelope_size bytes.
6744            let cur_offset: usize = (3 - 1) * envelope_size;
6745
6746            // Zero reserved fields.
6747            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6748
6749            // Safety:
6750            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6751            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6752            //   envelope_size bytes, there is always sufficient room.
6753            fidl::encoding::encode_in_envelope_optional::<u16, D>(
6754                self.association_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
6755                encoder,
6756                offset + cur_offset,
6757                depth,
6758            )?;
6759
6760            _prev_end_offset = cur_offset + envelope_size;
6761            if 4 > max_ordinal {
6762                return Ok(());
6763            }
6764
6765            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6766            // are envelope_size bytes.
6767            let cur_offset: usize = (4 - 1) * envelope_size;
6768
6769            // Zero reserved fields.
6770            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6771
6772            // Safety:
6773            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6774            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6775            //   envelope_size bytes, there is always sufficient room.
6776            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
6777            self.association_ies.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
6778            encoder, offset + cur_offset, depth
6779        )?;
6780
6781            _prev_end_offset = cur_offset + envelope_size;
6782
6783            Ok(())
6784        }
6785    }
6786
6787    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6788        for WlanFullmacImplIfcConnectConfRequest
6789    {
6790        #[inline(always)]
6791        fn new_empty() -> Self {
6792            Self::default()
6793        }
6794
6795        unsafe fn decode(
6796            &mut self,
6797            decoder: &mut fidl::encoding::Decoder<'_, D>,
6798            offset: usize,
6799            mut depth: fidl::encoding::Depth,
6800        ) -> fidl::Result<()> {
6801            decoder.debug_check_bounds::<Self>(offset);
6802            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6803                None => return Err(fidl::Error::NotNullable),
6804                Some(len) => len,
6805            };
6806            // Calling decoder.out_of_line_offset(0) is not allowed.
6807            if len == 0 {
6808                return Ok(());
6809            };
6810            depth.increment()?;
6811            let envelope_size = 8;
6812            let bytes_len = len * envelope_size;
6813            let offset = decoder.out_of_line_offset(bytes_len)?;
6814            // Decode the envelope for each type.
6815            let mut _next_ordinal_to_read = 0;
6816            let mut next_offset = offset;
6817            let end_offset = offset + bytes_len;
6818            _next_ordinal_to_read += 1;
6819            if next_offset >= end_offset {
6820                return Ok(());
6821            }
6822
6823            // Decode unknown envelopes for gaps in ordinals.
6824            while _next_ordinal_to_read < 1 {
6825                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6826                _next_ordinal_to_read += 1;
6827                next_offset += envelope_size;
6828            }
6829
6830            let next_out_of_line = decoder.next_out_of_line();
6831            let handles_before = decoder.remaining_handles();
6832            if let Some((inlined, num_bytes, num_handles)) =
6833                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6834            {
6835                let member_inline_size =
6836                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
6837                        decoder.context,
6838                    );
6839                if inlined != (member_inline_size <= 4) {
6840                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6841                }
6842                let inner_offset;
6843                let mut inner_depth = depth.clone();
6844                if inlined {
6845                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6846                    inner_offset = next_offset;
6847                } else {
6848                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6849                    inner_depth.increment()?;
6850                }
6851                let val_ref = self
6852                    .peer_sta_address
6853                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
6854                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
6855                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6856                {
6857                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6858                }
6859                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6860                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6861                }
6862            }
6863
6864            next_offset += envelope_size;
6865            _next_ordinal_to_read += 1;
6866            if next_offset >= end_offset {
6867                return Ok(());
6868            }
6869
6870            // Decode unknown envelopes for gaps in ordinals.
6871            while _next_ordinal_to_read < 2 {
6872                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6873                _next_ordinal_to_read += 1;
6874                next_offset += envelope_size;
6875            }
6876
6877            let next_out_of_line = decoder.next_out_of_line();
6878            let handles_before = decoder.remaining_handles();
6879            if let Some((inlined, num_bytes, num_handles)) =
6880                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6881            {
6882                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6883                if inlined != (member_inline_size <= 4) {
6884                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6885                }
6886                let inner_offset;
6887                let mut inner_depth = depth.clone();
6888                if inlined {
6889                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6890                    inner_offset = next_offset;
6891                } else {
6892                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6893                    inner_depth.increment()?;
6894                }
6895                let val_ref = self.result_code.get_or_insert_with(|| {
6896                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D)
6897                });
6898                fidl::decode!(
6899                    fidl_fuchsia_wlan_ieee80211__common::StatusCode,
6900                    D,
6901                    val_ref,
6902                    decoder,
6903                    inner_offset,
6904                    inner_depth
6905                )?;
6906                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6907                {
6908                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6909                }
6910                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6911                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6912                }
6913            }
6914
6915            next_offset += envelope_size;
6916            _next_ordinal_to_read += 1;
6917            if next_offset >= end_offset {
6918                return Ok(());
6919            }
6920
6921            // Decode unknown envelopes for gaps in ordinals.
6922            while _next_ordinal_to_read < 3 {
6923                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6924                _next_ordinal_to_read += 1;
6925                next_offset += envelope_size;
6926            }
6927
6928            let next_out_of_line = decoder.next_out_of_line();
6929            let handles_before = decoder.remaining_handles();
6930            if let Some((inlined, num_bytes, num_handles)) =
6931                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6932            {
6933                let member_inline_size =
6934                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6935                if inlined != (member_inline_size <= 4) {
6936                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6937                }
6938                let inner_offset;
6939                let mut inner_depth = depth.clone();
6940                if inlined {
6941                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6942                    inner_offset = next_offset;
6943                } else {
6944                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6945                    inner_depth.increment()?;
6946                }
6947                let val_ref = self.association_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
6948                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
6949                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6950                {
6951                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6952                }
6953                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6954                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6955                }
6956            }
6957
6958            next_offset += envelope_size;
6959            _next_ordinal_to_read += 1;
6960            if next_offset >= end_offset {
6961                return Ok(());
6962            }
6963
6964            // Decode unknown envelopes for gaps in ordinals.
6965            while _next_ordinal_to_read < 4 {
6966                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6967                _next_ordinal_to_read += 1;
6968                next_offset += envelope_size;
6969            }
6970
6971            let next_out_of_line = decoder.next_out_of_line();
6972            let handles_before = decoder.remaining_handles();
6973            if let Some((inlined, num_bytes, num_handles)) =
6974                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6975            {
6976                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6977                if inlined != (member_inline_size <= 4) {
6978                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6979                }
6980                let inner_offset;
6981                let mut inner_depth = depth.clone();
6982                if inlined {
6983                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6984                    inner_offset = next_offset;
6985                } else {
6986                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6987                    inner_depth.increment()?;
6988                }
6989                let val_ref = self.association_ies.get_or_insert_with(|| {
6990                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
6991                });
6992                fidl::decode!(
6993                    fidl::encoding::UnboundedVector<u8>,
6994                    D,
6995                    val_ref,
6996                    decoder,
6997                    inner_offset,
6998                    inner_depth
6999                )?;
7000                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7001                {
7002                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7003                }
7004                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7005                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7006                }
7007            }
7008
7009            next_offset += envelope_size;
7010
7011            // Decode the remaining unknown envelopes.
7012            while next_offset < end_offset {
7013                _next_ordinal_to_read += 1;
7014                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7015                next_offset += envelope_size;
7016            }
7017
7018            Ok(())
7019        }
7020    }
7021
7022    impl WlanFullmacImplIfcDeauthConfRequest {
7023        #[inline(always)]
7024        fn max_ordinal_present(&self) -> u64 {
7025            if let Some(_) = self.peer_sta_address {
7026                return 1;
7027            }
7028            0
7029        }
7030    }
7031
7032    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcDeauthConfRequest {
7033        type Borrowed<'a> = &'a Self;
7034        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7035            value
7036        }
7037    }
7038
7039    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcDeauthConfRequest {
7040        type Owned = Self;
7041
7042        #[inline(always)]
7043        fn inline_align(_context: fidl::encoding::Context) -> usize {
7044            8
7045        }
7046
7047        #[inline(always)]
7048        fn inline_size(_context: fidl::encoding::Context) -> usize {
7049            16
7050        }
7051    }
7052
7053    unsafe impl<D: fidl::encoding::ResourceDialect>
7054        fidl::encoding::Encode<WlanFullmacImplIfcDeauthConfRequest, D>
7055        for &WlanFullmacImplIfcDeauthConfRequest
7056    {
7057        unsafe fn encode(
7058            self,
7059            encoder: &mut fidl::encoding::Encoder<'_, D>,
7060            offset: usize,
7061            mut depth: fidl::encoding::Depth,
7062        ) -> fidl::Result<()> {
7063            encoder.debug_check_bounds::<WlanFullmacImplIfcDeauthConfRequest>(offset);
7064            // Vector header
7065            let max_ordinal: u64 = self.max_ordinal_present();
7066            encoder.write_num(max_ordinal, offset);
7067            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7068            // Calling encoder.out_of_line_offset(0) is not allowed.
7069            if max_ordinal == 0 {
7070                return Ok(());
7071            }
7072            depth.increment()?;
7073            let envelope_size = 8;
7074            let bytes_len = max_ordinal as usize * envelope_size;
7075            #[allow(unused_variables)]
7076            let offset = encoder.out_of_line_offset(bytes_len);
7077            let mut _prev_end_offset: usize = 0;
7078            if 1 > max_ordinal {
7079                return Ok(());
7080            }
7081
7082            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7083            // are envelope_size bytes.
7084            let cur_offset: usize = (1 - 1) * envelope_size;
7085
7086            // Zero reserved fields.
7087            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7088
7089            // Safety:
7090            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7091            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7092            //   envelope_size bytes, there is always sufficient room.
7093            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
7094                self.peer_sta_address
7095                    .as_ref()
7096                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
7097                encoder,
7098                offset + cur_offset,
7099                depth,
7100            )?;
7101
7102            _prev_end_offset = cur_offset + envelope_size;
7103
7104            Ok(())
7105        }
7106    }
7107
7108    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7109        for WlanFullmacImplIfcDeauthConfRequest
7110    {
7111        #[inline(always)]
7112        fn new_empty() -> Self {
7113            Self::default()
7114        }
7115
7116        unsafe fn decode(
7117            &mut self,
7118            decoder: &mut fidl::encoding::Decoder<'_, D>,
7119            offset: usize,
7120            mut depth: fidl::encoding::Depth,
7121        ) -> fidl::Result<()> {
7122            decoder.debug_check_bounds::<Self>(offset);
7123            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7124                None => return Err(fidl::Error::NotNullable),
7125                Some(len) => len,
7126            };
7127            // Calling decoder.out_of_line_offset(0) is not allowed.
7128            if len == 0 {
7129                return Ok(());
7130            };
7131            depth.increment()?;
7132            let envelope_size = 8;
7133            let bytes_len = len * envelope_size;
7134            let offset = decoder.out_of_line_offset(bytes_len)?;
7135            // Decode the envelope for each type.
7136            let mut _next_ordinal_to_read = 0;
7137            let mut next_offset = offset;
7138            let end_offset = offset + bytes_len;
7139            _next_ordinal_to_read += 1;
7140            if next_offset >= end_offset {
7141                return Ok(());
7142            }
7143
7144            // Decode unknown envelopes for gaps in ordinals.
7145            while _next_ordinal_to_read < 1 {
7146                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7147                _next_ordinal_to_read += 1;
7148                next_offset += envelope_size;
7149            }
7150
7151            let next_out_of_line = decoder.next_out_of_line();
7152            let handles_before = decoder.remaining_handles();
7153            if let Some((inlined, num_bytes, num_handles)) =
7154                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7155            {
7156                let member_inline_size =
7157                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
7158                        decoder.context,
7159                    );
7160                if inlined != (member_inline_size <= 4) {
7161                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7162                }
7163                let inner_offset;
7164                let mut inner_depth = depth.clone();
7165                if inlined {
7166                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7167                    inner_offset = next_offset;
7168                } else {
7169                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7170                    inner_depth.increment()?;
7171                }
7172                let val_ref = self
7173                    .peer_sta_address
7174                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
7175                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
7176                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7177                {
7178                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7179                }
7180                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7181                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7182                }
7183            }
7184
7185            next_offset += envelope_size;
7186
7187            // Decode the remaining unknown envelopes.
7188            while next_offset < end_offset {
7189                _next_ordinal_to_read += 1;
7190                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7191                next_offset += envelope_size;
7192            }
7193
7194            Ok(())
7195        }
7196    }
7197
7198    impl WlanFullmacImplIfcDeauthIndRequest {
7199        #[inline(always)]
7200        fn max_ordinal_present(&self) -> u64 {
7201            if let Some(_) = self.locally_initiated {
7202                return 3;
7203            }
7204            if let Some(_) = self.reason_code {
7205                return 2;
7206            }
7207            if let Some(_) = self.peer_sta_address {
7208                return 1;
7209            }
7210            0
7211        }
7212    }
7213
7214    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcDeauthIndRequest {
7215        type Borrowed<'a> = &'a Self;
7216        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7217            value
7218        }
7219    }
7220
7221    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcDeauthIndRequest {
7222        type Owned = Self;
7223
7224        #[inline(always)]
7225        fn inline_align(_context: fidl::encoding::Context) -> usize {
7226            8
7227        }
7228
7229        #[inline(always)]
7230        fn inline_size(_context: fidl::encoding::Context) -> usize {
7231            16
7232        }
7233    }
7234
7235    unsafe impl<D: fidl::encoding::ResourceDialect>
7236        fidl::encoding::Encode<WlanFullmacImplIfcDeauthIndRequest, D>
7237        for &WlanFullmacImplIfcDeauthIndRequest
7238    {
7239        unsafe fn encode(
7240            self,
7241            encoder: &mut fidl::encoding::Encoder<'_, D>,
7242            offset: usize,
7243            mut depth: fidl::encoding::Depth,
7244        ) -> fidl::Result<()> {
7245            encoder.debug_check_bounds::<WlanFullmacImplIfcDeauthIndRequest>(offset);
7246            // Vector header
7247            let max_ordinal: u64 = self.max_ordinal_present();
7248            encoder.write_num(max_ordinal, offset);
7249            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7250            // Calling encoder.out_of_line_offset(0) is not allowed.
7251            if max_ordinal == 0 {
7252                return Ok(());
7253            }
7254            depth.increment()?;
7255            let envelope_size = 8;
7256            let bytes_len = max_ordinal as usize * envelope_size;
7257            #[allow(unused_variables)]
7258            let offset = encoder.out_of_line_offset(bytes_len);
7259            let mut _prev_end_offset: usize = 0;
7260            if 1 > max_ordinal {
7261                return Ok(());
7262            }
7263
7264            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7265            // are envelope_size bytes.
7266            let cur_offset: usize = (1 - 1) * envelope_size;
7267
7268            // Zero reserved fields.
7269            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7270
7271            // Safety:
7272            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7273            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7274            //   envelope_size bytes, there is always sufficient room.
7275            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
7276                self.peer_sta_address
7277                    .as_ref()
7278                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
7279                encoder,
7280                offset + cur_offset,
7281                depth,
7282            )?;
7283
7284            _prev_end_offset = cur_offset + envelope_size;
7285            if 2 > max_ordinal {
7286                return Ok(());
7287            }
7288
7289            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7290            // are envelope_size bytes.
7291            let cur_offset: usize = (2 - 1) * envelope_size;
7292
7293            // Zero reserved fields.
7294            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7295
7296            // Safety:
7297            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7298            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7299            //   envelope_size bytes, there is always sufficient room.
7300            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D>(
7301            self.reason_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow),
7302            encoder, offset + cur_offset, depth
7303        )?;
7304
7305            _prev_end_offset = cur_offset + envelope_size;
7306            if 3 > max_ordinal {
7307                return Ok(());
7308            }
7309
7310            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7311            // are envelope_size bytes.
7312            let cur_offset: usize = (3 - 1) * envelope_size;
7313
7314            // Zero reserved fields.
7315            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7316
7317            // Safety:
7318            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7319            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7320            //   envelope_size bytes, there is always sufficient room.
7321            fidl::encoding::encode_in_envelope_optional::<bool, D>(
7322                self.locally_initiated
7323                    .as_ref()
7324                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
7325                encoder,
7326                offset + cur_offset,
7327                depth,
7328            )?;
7329
7330            _prev_end_offset = cur_offset + envelope_size;
7331
7332            Ok(())
7333        }
7334    }
7335
7336    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7337        for WlanFullmacImplIfcDeauthIndRequest
7338    {
7339        #[inline(always)]
7340        fn new_empty() -> Self {
7341            Self::default()
7342        }
7343
7344        unsafe fn decode(
7345            &mut self,
7346            decoder: &mut fidl::encoding::Decoder<'_, D>,
7347            offset: usize,
7348            mut depth: fidl::encoding::Depth,
7349        ) -> fidl::Result<()> {
7350            decoder.debug_check_bounds::<Self>(offset);
7351            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7352                None => return Err(fidl::Error::NotNullable),
7353                Some(len) => len,
7354            };
7355            // Calling decoder.out_of_line_offset(0) is not allowed.
7356            if len == 0 {
7357                return Ok(());
7358            };
7359            depth.increment()?;
7360            let envelope_size = 8;
7361            let bytes_len = len * envelope_size;
7362            let offset = decoder.out_of_line_offset(bytes_len)?;
7363            // Decode the envelope for each type.
7364            let mut _next_ordinal_to_read = 0;
7365            let mut next_offset = offset;
7366            let end_offset = offset + bytes_len;
7367            _next_ordinal_to_read += 1;
7368            if next_offset >= end_offset {
7369                return Ok(());
7370            }
7371
7372            // Decode unknown envelopes for gaps in ordinals.
7373            while _next_ordinal_to_read < 1 {
7374                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7375                _next_ordinal_to_read += 1;
7376                next_offset += envelope_size;
7377            }
7378
7379            let next_out_of_line = decoder.next_out_of_line();
7380            let handles_before = decoder.remaining_handles();
7381            if let Some((inlined, num_bytes, num_handles)) =
7382                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7383            {
7384                let member_inline_size =
7385                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
7386                        decoder.context,
7387                    );
7388                if inlined != (member_inline_size <= 4) {
7389                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7390                }
7391                let inner_offset;
7392                let mut inner_depth = depth.clone();
7393                if inlined {
7394                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7395                    inner_offset = next_offset;
7396                } else {
7397                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7398                    inner_depth.increment()?;
7399                }
7400                let val_ref = self
7401                    .peer_sta_address
7402                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
7403                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
7404                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7405                {
7406                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7407                }
7408                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7409                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7410                }
7411            }
7412
7413            next_offset += envelope_size;
7414            _next_ordinal_to_read += 1;
7415            if next_offset >= end_offset {
7416                return Ok(());
7417            }
7418
7419            // Decode unknown envelopes for gaps in ordinals.
7420            while _next_ordinal_to_read < 2 {
7421                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7422                _next_ordinal_to_read += 1;
7423                next_offset += envelope_size;
7424            }
7425
7426            let next_out_of_line = decoder.next_out_of_line();
7427            let handles_before = decoder.remaining_handles();
7428            if let Some((inlined, num_bytes, num_handles)) =
7429                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7430            {
7431                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7432                if inlined != (member_inline_size <= 4) {
7433                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7434                }
7435                let inner_offset;
7436                let mut inner_depth = depth.clone();
7437                if inlined {
7438                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7439                    inner_offset = next_offset;
7440                } else {
7441                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7442                    inner_depth.increment()?;
7443                }
7444                let val_ref = self.reason_code.get_or_insert_with(|| {
7445                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D)
7446                });
7447                fidl::decode!(
7448                    fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
7449                    D,
7450                    val_ref,
7451                    decoder,
7452                    inner_offset,
7453                    inner_depth
7454                )?;
7455                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7456                {
7457                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7458                }
7459                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7460                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7461                }
7462            }
7463
7464            next_offset += envelope_size;
7465            _next_ordinal_to_read += 1;
7466            if next_offset >= end_offset {
7467                return Ok(());
7468            }
7469
7470            // Decode unknown envelopes for gaps in ordinals.
7471            while _next_ordinal_to_read < 3 {
7472                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7473                _next_ordinal_to_read += 1;
7474                next_offset += envelope_size;
7475            }
7476
7477            let next_out_of_line = decoder.next_out_of_line();
7478            let handles_before = decoder.remaining_handles();
7479            if let Some((inlined, num_bytes, num_handles)) =
7480                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7481            {
7482                let member_inline_size =
7483                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7484                if inlined != (member_inline_size <= 4) {
7485                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7486                }
7487                let inner_offset;
7488                let mut inner_depth = depth.clone();
7489                if inlined {
7490                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7491                    inner_offset = next_offset;
7492                } else {
7493                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7494                    inner_depth.increment()?;
7495                }
7496                let val_ref =
7497                    self.locally_initiated.get_or_insert_with(|| fidl::new_empty!(bool, D));
7498                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
7499                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7500                {
7501                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7502                }
7503                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7504                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7505                }
7506            }
7507
7508            next_offset += envelope_size;
7509
7510            // Decode the remaining unknown envelopes.
7511            while next_offset < end_offset {
7512                _next_ordinal_to_read += 1;
7513                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7514                next_offset += envelope_size;
7515            }
7516
7517            Ok(())
7518        }
7519    }
7520
7521    impl WlanFullmacImplIfcDisassocConfRequest {
7522        #[inline(always)]
7523        fn max_ordinal_present(&self) -> u64 {
7524            if let Some(_) = self.status {
7525                return 1;
7526            }
7527            0
7528        }
7529    }
7530
7531    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcDisassocConfRequest {
7532        type Borrowed<'a> = &'a Self;
7533        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7534            value
7535        }
7536    }
7537
7538    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcDisassocConfRequest {
7539        type Owned = Self;
7540
7541        #[inline(always)]
7542        fn inline_align(_context: fidl::encoding::Context) -> usize {
7543            8
7544        }
7545
7546        #[inline(always)]
7547        fn inline_size(_context: fidl::encoding::Context) -> usize {
7548            16
7549        }
7550    }
7551
7552    unsafe impl<D: fidl::encoding::ResourceDialect>
7553        fidl::encoding::Encode<WlanFullmacImplIfcDisassocConfRequest, D>
7554        for &WlanFullmacImplIfcDisassocConfRequest
7555    {
7556        unsafe fn encode(
7557            self,
7558            encoder: &mut fidl::encoding::Encoder<'_, D>,
7559            offset: usize,
7560            mut depth: fidl::encoding::Depth,
7561        ) -> fidl::Result<()> {
7562            encoder.debug_check_bounds::<WlanFullmacImplIfcDisassocConfRequest>(offset);
7563            // Vector header
7564            let max_ordinal: u64 = self.max_ordinal_present();
7565            encoder.write_num(max_ordinal, offset);
7566            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7567            // Calling encoder.out_of_line_offset(0) is not allowed.
7568            if max_ordinal == 0 {
7569                return Ok(());
7570            }
7571            depth.increment()?;
7572            let envelope_size = 8;
7573            let bytes_len = max_ordinal as usize * envelope_size;
7574            #[allow(unused_variables)]
7575            let offset = encoder.out_of_line_offset(bytes_len);
7576            let mut _prev_end_offset: usize = 0;
7577            if 1 > max_ordinal {
7578                return Ok(());
7579            }
7580
7581            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7582            // are envelope_size bytes.
7583            let cur_offset: usize = (1 - 1) * envelope_size;
7584
7585            // Zero reserved fields.
7586            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7587
7588            // Safety:
7589            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7590            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7591            //   envelope_size bytes, there is always sufficient room.
7592            fidl::encoding::encode_in_envelope_optional::<i32, D>(
7593                self.status.as_ref().map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
7594                encoder,
7595                offset + cur_offset,
7596                depth,
7597            )?;
7598
7599            _prev_end_offset = cur_offset + envelope_size;
7600
7601            Ok(())
7602        }
7603    }
7604
7605    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7606        for WlanFullmacImplIfcDisassocConfRequest
7607    {
7608        #[inline(always)]
7609        fn new_empty() -> Self {
7610            Self::default()
7611        }
7612
7613        unsafe fn decode(
7614            &mut self,
7615            decoder: &mut fidl::encoding::Decoder<'_, D>,
7616            offset: usize,
7617            mut depth: fidl::encoding::Depth,
7618        ) -> fidl::Result<()> {
7619            decoder.debug_check_bounds::<Self>(offset);
7620            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7621                None => return Err(fidl::Error::NotNullable),
7622                Some(len) => len,
7623            };
7624            // Calling decoder.out_of_line_offset(0) is not allowed.
7625            if len == 0 {
7626                return Ok(());
7627            };
7628            depth.increment()?;
7629            let envelope_size = 8;
7630            let bytes_len = len * envelope_size;
7631            let offset = decoder.out_of_line_offset(bytes_len)?;
7632            // Decode the envelope for each type.
7633            let mut _next_ordinal_to_read = 0;
7634            let mut next_offset = offset;
7635            let end_offset = offset + bytes_len;
7636            _next_ordinal_to_read += 1;
7637            if next_offset >= end_offset {
7638                return Ok(());
7639            }
7640
7641            // Decode unknown envelopes for gaps in ordinals.
7642            while _next_ordinal_to_read < 1 {
7643                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7644                _next_ordinal_to_read += 1;
7645                next_offset += envelope_size;
7646            }
7647
7648            let next_out_of_line = decoder.next_out_of_line();
7649            let handles_before = decoder.remaining_handles();
7650            if let Some((inlined, num_bytes, num_handles)) =
7651                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7652            {
7653                let member_inline_size =
7654                    <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7655                if inlined != (member_inline_size <= 4) {
7656                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7657                }
7658                let inner_offset;
7659                let mut inner_depth = depth.clone();
7660                if inlined {
7661                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7662                    inner_offset = next_offset;
7663                } else {
7664                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7665                    inner_depth.increment()?;
7666                }
7667                let val_ref = self.status.get_or_insert_with(|| fidl::new_empty!(i32, D));
7668                fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
7669                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7670                {
7671                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7672                }
7673                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7674                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7675                }
7676            }
7677
7678            next_offset += envelope_size;
7679
7680            // Decode the remaining unknown envelopes.
7681            while next_offset < end_offset {
7682                _next_ordinal_to_read += 1;
7683                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7684                next_offset += envelope_size;
7685            }
7686
7687            Ok(())
7688        }
7689    }
7690
7691    impl WlanFullmacImplIfcDisassocIndRequest {
7692        #[inline(always)]
7693        fn max_ordinal_present(&self) -> u64 {
7694            if let Some(_) = self.locally_initiated {
7695                return 3;
7696            }
7697            if let Some(_) = self.reason_code {
7698                return 2;
7699            }
7700            if let Some(_) = self.peer_sta_address {
7701                return 1;
7702            }
7703            0
7704        }
7705    }
7706
7707    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcDisassocIndRequest {
7708        type Borrowed<'a> = &'a Self;
7709        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7710            value
7711        }
7712    }
7713
7714    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcDisassocIndRequest {
7715        type Owned = Self;
7716
7717        #[inline(always)]
7718        fn inline_align(_context: fidl::encoding::Context) -> usize {
7719            8
7720        }
7721
7722        #[inline(always)]
7723        fn inline_size(_context: fidl::encoding::Context) -> usize {
7724            16
7725        }
7726    }
7727
7728    unsafe impl<D: fidl::encoding::ResourceDialect>
7729        fidl::encoding::Encode<WlanFullmacImplIfcDisassocIndRequest, D>
7730        for &WlanFullmacImplIfcDisassocIndRequest
7731    {
7732        unsafe fn encode(
7733            self,
7734            encoder: &mut fidl::encoding::Encoder<'_, D>,
7735            offset: usize,
7736            mut depth: fidl::encoding::Depth,
7737        ) -> fidl::Result<()> {
7738            encoder.debug_check_bounds::<WlanFullmacImplIfcDisassocIndRequest>(offset);
7739            // Vector header
7740            let max_ordinal: u64 = self.max_ordinal_present();
7741            encoder.write_num(max_ordinal, offset);
7742            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7743            // Calling encoder.out_of_line_offset(0) is not allowed.
7744            if max_ordinal == 0 {
7745                return Ok(());
7746            }
7747            depth.increment()?;
7748            let envelope_size = 8;
7749            let bytes_len = max_ordinal as usize * envelope_size;
7750            #[allow(unused_variables)]
7751            let offset = encoder.out_of_line_offset(bytes_len);
7752            let mut _prev_end_offset: usize = 0;
7753            if 1 > max_ordinal {
7754                return Ok(());
7755            }
7756
7757            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7758            // are envelope_size bytes.
7759            let cur_offset: usize = (1 - 1) * envelope_size;
7760
7761            // Zero reserved fields.
7762            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7763
7764            // Safety:
7765            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7766            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7767            //   envelope_size bytes, there is always sufficient room.
7768            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
7769                self.peer_sta_address
7770                    .as_ref()
7771                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
7772                encoder,
7773                offset + cur_offset,
7774                depth,
7775            )?;
7776
7777            _prev_end_offset = cur_offset + envelope_size;
7778            if 2 > max_ordinal {
7779                return Ok(());
7780            }
7781
7782            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7783            // are envelope_size bytes.
7784            let cur_offset: usize = (2 - 1) * envelope_size;
7785
7786            // Zero reserved fields.
7787            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7788
7789            // Safety:
7790            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7791            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7792            //   envelope_size bytes, there is always sufficient room.
7793            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D>(
7794            self.reason_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow),
7795            encoder, offset + cur_offset, depth
7796        )?;
7797
7798            _prev_end_offset = cur_offset + envelope_size;
7799            if 3 > max_ordinal {
7800                return Ok(());
7801            }
7802
7803            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7804            // are envelope_size bytes.
7805            let cur_offset: usize = (3 - 1) * envelope_size;
7806
7807            // Zero reserved fields.
7808            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7809
7810            // Safety:
7811            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7812            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7813            //   envelope_size bytes, there is always sufficient room.
7814            fidl::encoding::encode_in_envelope_optional::<bool, D>(
7815                self.locally_initiated
7816                    .as_ref()
7817                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
7818                encoder,
7819                offset + cur_offset,
7820                depth,
7821            )?;
7822
7823            _prev_end_offset = cur_offset + envelope_size;
7824
7825            Ok(())
7826        }
7827    }
7828
7829    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7830        for WlanFullmacImplIfcDisassocIndRequest
7831    {
7832        #[inline(always)]
7833        fn new_empty() -> Self {
7834            Self::default()
7835        }
7836
7837        unsafe fn decode(
7838            &mut self,
7839            decoder: &mut fidl::encoding::Decoder<'_, D>,
7840            offset: usize,
7841            mut depth: fidl::encoding::Depth,
7842        ) -> fidl::Result<()> {
7843            decoder.debug_check_bounds::<Self>(offset);
7844            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7845                None => return Err(fidl::Error::NotNullable),
7846                Some(len) => len,
7847            };
7848            // Calling decoder.out_of_line_offset(0) is not allowed.
7849            if len == 0 {
7850                return Ok(());
7851            };
7852            depth.increment()?;
7853            let envelope_size = 8;
7854            let bytes_len = len * envelope_size;
7855            let offset = decoder.out_of_line_offset(bytes_len)?;
7856            // Decode the envelope for each type.
7857            let mut _next_ordinal_to_read = 0;
7858            let mut next_offset = offset;
7859            let end_offset = offset + bytes_len;
7860            _next_ordinal_to_read += 1;
7861            if next_offset >= end_offset {
7862                return Ok(());
7863            }
7864
7865            // Decode unknown envelopes for gaps in ordinals.
7866            while _next_ordinal_to_read < 1 {
7867                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7868                _next_ordinal_to_read += 1;
7869                next_offset += envelope_size;
7870            }
7871
7872            let next_out_of_line = decoder.next_out_of_line();
7873            let handles_before = decoder.remaining_handles();
7874            if let Some((inlined, num_bytes, num_handles)) =
7875                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7876            {
7877                let member_inline_size =
7878                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
7879                        decoder.context,
7880                    );
7881                if inlined != (member_inline_size <= 4) {
7882                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7883                }
7884                let inner_offset;
7885                let mut inner_depth = depth.clone();
7886                if inlined {
7887                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7888                    inner_offset = next_offset;
7889                } else {
7890                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7891                    inner_depth.increment()?;
7892                }
7893                let val_ref = self
7894                    .peer_sta_address
7895                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
7896                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
7897                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7898                {
7899                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7900                }
7901                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7902                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7903                }
7904            }
7905
7906            next_offset += envelope_size;
7907            _next_ordinal_to_read += 1;
7908            if next_offset >= end_offset {
7909                return Ok(());
7910            }
7911
7912            // Decode unknown envelopes for gaps in ordinals.
7913            while _next_ordinal_to_read < 2 {
7914                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7915                _next_ordinal_to_read += 1;
7916                next_offset += envelope_size;
7917            }
7918
7919            let next_out_of_line = decoder.next_out_of_line();
7920            let handles_before = decoder.remaining_handles();
7921            if let Some((inlined, num_bytes, num_handles)) =
7922                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7923            {
7924                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7925                if inlined != (member_inline_size <= 4) {
7926                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7927                }
7928                let inner_offset;
7929                let mut inner_depth = depth.clone();
7930                if inlined {
7931                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7932                    inner_offset = next_offset;
7933                } else {
7934                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7935                    inner_depth.increment()?;
7936                }
7937                let val_ref = self.reason_code.get_or_insert_with(|| {
7938                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D)
7939                });
7940                fidl::decode!(
7941                    fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
7942                    D,
7943                    val_ref,
7944                    decoder,
7945                    inner_offset,
7946                    inner_depth
7947                )?;
7948                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7949                {
7950                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7951                }
7952                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7953                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7954                }
7955            }
7956
7957            next_offset += envelope_size;
7958            _next_ordinal_to_read += 1;
7959            if next_offset >= end_offset {
7960                return Ok(());
7961            }
7962
7963            // Decode unknown envelopes for gaps in ordinals.
7964            while _next_ordinal_to_read < 3 {
7965                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7966                _next_ordinal_to_read += 1;
7967                next_offset += envelope_size;
7968            }
7969
7970            let next_out_of_line = decoder.next_out_of_line();
7971            let handles_before = decoder.remaining_handles();
7972            if let Some((inlined, num_bytes, num_handles)) =
7973                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7974            {
7975                let member_inline_size =
7976                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7977                if inlined != (member_inline_size <= 4) {
7978                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7979                }
7980                let inner_offset;
7981                let mut inner_depth = depth.clone();
7982                if inlined {
7983                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7984                    inner_offset = next_offset;
7985                } else {
7986                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7987                    inner_depth.increment()?;
7988                }
7989                let val_ref =
7990                    self.locally_initiated.get_or_insert_with(|| fidl::new_empty!(bool, D));
7991                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
7992                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7993                {
7994                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7995                }
7996                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7997                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7998                }
7999            }
8000
8001            next_offset += envelope_size;
8002
8003            // Decode the remaining unknown envelopes.
8004            while next_offset < end_offset {
8005                _next_ordinal_to_read += 1;
8006                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8007                next_offset += envelope_size;
8008            }
8009
8010            Ok(())
8011        }
8012    }
8013
8014    impl WlanFullmacImplIfcEapolConfRequest {
8015        #[inline(always)]
8016        fn max_ordinal_present(&self) -> u64 {
8017            if let Some(_) = self.dst_addr {
8018                return 2;
8019            }
8020            if let Some(_) = self.result_code {
8021                return 1;
8022            }
8023            0
8024        }
8025    }
8026
8027    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcEapolConfRequest {
8028        type Borrowed<'a> = &'a Self;
8029        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8030            value
8031        }
8032    }
8033
8034    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcEapolConfRequest {
8035        type Owned = Self;
8036
8037        #[inline(always)]
8038        fn inline_align(_context: fidl::encoding::Context) -> usize {
8039            8
8040        }
8041
8042        #[inline(always)]
8043        fn inline_size(_context: fidl::encoding::Context) -> usize {
8044            16
8045        }
8046    }
8047
8048    unsafe impl<D: fidl::encoding::ResourceDialect>
8049        fidl::encoding::Encode<WlanFullmacImplIfcEapolConfRequest, D>
8050        for &WlanFullmacImplIfcEapolConfRequest
8051    {
8052        unsafe fn encode(
8053            self,
8054            encoder: &mut fidl::encoding::Encoder<'_, D>,
8055            offset: usize,
8056            mut depth: fidl::encoding::Depth,
8057        ) -> fidl::Result<()> {
8058            encoder.debug_check_bounds::<WlanFullmacImplIfcEapolConfRequest>(offset);
8059            // Vector header
8060            let max_ordinal: u64 = self.max_ordinal_present();
8061            encoder.write_num(max_ordinal, offset);
8062            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8063            // Calling encoder.out_of_line_offset(0) is not allowed.
8064            if max_ordinal == 0 {
8065                return Ok(());
8066            }
8067            depth.increment()?;
8068            let envelope_size = 8;
8069            let bytes_len = max_ordinal as usize * envelope_size;
8070            #[allow(unused_variables)]
8071            let offset = encoder.out_of_line_offset(bytes_len);
8072            let mut _prev_end_offset: usize = 0;
8073            if 1 > max_ordinal {
8074                return Ok(());
8075            }
8076
8077            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8078            // are envelope_size bytes.
8079            let cur_offset: usize = (1 - 1) * envelope_size;
8080
8081            // Zero reserved fields.
8082            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8083
8084            // Safety:
8085            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8086            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8087            //   envelope_size bytes, there is always sufficient room.
8088            fidl::encoding::encode_in_envelope_optional::<EapolTxResult, D>(
8089                self.result_code
8090                    .as_ref()
8091                    .map(<EapolTxResult as fidl::encoding::ValueTypeMarker>::borrow),
8092                encoder,
8093                offset + cur_offset,
8094                depth,
8095            )?;
8096
8097            _prev_end_offset = cur_offset + envelope_size;
8098            if 2 > max_ordinal {
8099                return Ok(());
8100            }
8101
8102            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8103            // are envelope_size bytes.
8104            let cur_offset: usize = (2 - 1) * envelope_size;
8105
8106            // Zero reserved fields.
8107            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8108
8109            // Safety:
8110            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8111            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8112            //   envelope_size bytes, there is always sufficient room.
8113            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
8114                self.dst_addr
8115                    .as_ref()
8116                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
8117                encoder,
8118                offset + cur_offset,
8119                depth,
8120            )?;
8121
8122            _prev_end_offset = cur_offset + envelope_size;
8123
8124            Ok(())
8125        }
8126    }
8127
8128    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8129        for WlanFullmacImplIfcEapolConfRequest
8130    {
8131        #[inline(always)]
8132        fn new_empty() -> Self {
8133            Self::default()
8134        }
8135
8136        unsafe fn decode(
8137            &mut self,
8138            decoder: &mut fidl::encoding::Decoder<'_, D>,
8139            offset: usize,
8140            mut depth: fidl::encoding::Depth,
8141        ) -> fidl::Result<()> {
8142            decoder.debug_check_bounds::<Self>(offset);
8143            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8144                None => return Err(fidl::Error::NotNullable),
8145                Some(len) => len,
8146            };
8147            // Calling decoder.out_of_line_offset(0) is not allowed.
8148            if len == 0 {
8149                return Ok(());
8150            };
8151            depth.increment()?;
8152            let envelope_size = 8;
8153            let bytes_len = len * envelope_size;
8154            let offset = decoder.out_of_line_offset(bytes_len)?;
8155            // Decode the envelope for each type.
8156            let mut _next_ordinal_to_read = 0;
8157            let mut next_offset = offset;
8158            let end_offset = offset + bytes_len;
8159            _next_ordinal_to_read += 1;
8160            if next_offset >= end_offset {
8161                return Ok(());
8162            }
8163
8164            // Decode unknown envelopes for gaps in ordinals.
8165            while _next_ordinal_to_read < 1 {
8166                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8167                _next_ordinal_to_read += 1;
8168                next_offset += envelope_size;
8169            }
8170
8171            let next_out_of_line = decoder.next_out_of_line();
8172            let handles_before = decoder.remaining_handles();
8173            if let Some((inlined, num_bytes, num_handles)) =
8174                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8175            {
8176                let member_inline_size =
8177                    <EapolTxResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8178                if inlined != (member_inline_size <= 4) {
8179                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8180                }
8181                let inner_offset;
8182                let mut inner_depth = depth.clone();
8183                if inlined {
8184                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8185                    inner_offset = next_offset;
8186                } else {
8187                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8188                    inner_depth.increment()?;
8189                }
8190                let val_ref =
8191                    self.result_code.get_or_insert_with(|| fidl::new_empty!(EapolTxResult, D));
8192                fidl::decode!(EapolTxResult, D, val_ref, decoder, inner_offset, inner_depth)?;
8193                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8194                {
8195                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8196                }
8197                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8198                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8199                }
8200            }
8201
8202            next_offset += envelope_size;
8203            _next_ordinal_to_read += 1;
8204            if next_offset >= end_offset {
8205                return Ok(());
8206            }
8207
8208            // Decode unknown envelopes for gaps in ordinals.
8209            while _next_ordinal_to_read < 2 {
8210                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8211                _next_ordinal_to_read += 1;
8212                next_offset += envelope_size;
8213            }
8214
8215            let next_out_of_line = decoder.next_out_of_line();
8216            let handles_before = decoder.remaining_handles();
8217            if let Some((inlined, num_bytes, num_handles)) =
8218                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8219            {
8220                let member_inline_size =
8221                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
8222                        decoder.context,
8223                    );
8224                if inlined != (member_inline_size <= 4) {
8225                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8226                }
8227                let inner_offset;
8228                let mut inner_depth = depth.clone();
8229                if inlined {
8230                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8231                    inner_offset = next_offset;
8232                } else {
8233                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8234                    inner_depth.increment()?;
8235                }
8236                let val_ref = self
8237                    .dst_addr
8238                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
8239                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
8240                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8241                {
8242                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8243                }
8244                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8245                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8246                }
8247            }
8248
8249            next_offset += envelope_size;
8250
8251            // Decode the remaining unknown envelopes.
8252            while next_offset < end_offset {
8253                _next_ordinal_to_read += 1;
8254                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8255                next_offset += envelope_size;
8256            }
8257
8258            Ok(())
8259        }
8260    }
8261
8262    impl WlanFullmacImplIfcEapolIndRequest {
8263        #[inline(always)]
8264        fn max_ordinal_present(&self) -> u64 {
8265            if let Some(_) = self.data {
8266                return 3;
8267            }
8268            if let Some(_) = self.dst_addr {
8269                return 2;
8270            }
8271            if let Some(_) = self.src_addr {
8272                return 1;
8273            }
8274            0
8275        }
8276    }
8277
8278    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcEapolIndRequest {
8279        type Borrowed<'a> = &'a Self;
8280        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8281            value
8282        }
8283    }
8284
8285    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcEapolIndRequest {
8286        type Owned = Self;
8287
8288        #[inline(always)]
8289        fn inline_align(_context: fidl::encoding::Context) -> usize {
8290            8
8291        }
8292
8293        #[inline(always)]
8294        fn inline_size(_context: fidl::encoding::Context) -> usize {
8295            16
8296        }
8297    }
8298
8299    unsafe impl<D: fidl::encoding::ResourceDialect>
8300        fidl::encoding::Encode<WlanFullmacImplIfcEapolIndRequest, D>
8301        for &WlanFullmacImplIfcEapolIndRequest
8302    {
8303        unsafe fn encode(
8304            self,
8305            encoder: &mut fidl::encoding::Encoder<'_, D>,
8306            offset: usize,
8307            mut depth: fidl::encoding::Depth,
8308        ) -> fidl::Result<()> {
8309            encoder.debug_check_bounds::<WlanFullmacImplIfcEapolIndRequest>(offset);
8310            // Vector header
8311            let max_ordinal: u64 = self.max_ordinal_present();
8312            encoder.write_num(max_ordinal, offset);
8313            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8314            // Calling encoder.out_of_line_offset(0) is not allowed.
8315            if max_ordinal == 0 {
8316                return Ok(());
8317            }
8318            depth.increment()?;
8319            let envelope_size = 8;
8320            let bytes_len = max_ordinal as usize * envelope_size;
8321            #[allow(unused_variables)]
8322            let offset = encoder.out_of_line_offset(bytes_len);
8323            let mut _prev_end_offset: usize = 0;
8324            if 1 > max_ordinal {
8325                return Ok(());
8326            }
8327
8328            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8329            // are envelope_size bytes.
8330            let cur_offset: usize = (1 - 1) * envelope_size;
8331
8332            // Zero reserved fields.
8333            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8334
8335            // Safety:
8336            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8337            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8338            //   envelope_size bytes, there is always sufficient room.
8339            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
8340                self.src_addr
8341                    .as_ref()
8342                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
8343                encoder,
8344                offset + cur_offset,
8345                depth,
8346            )?;
8347
8348            _prev_end_offset = cur_offset + envelope_size;
8349            if 2 > max_ordinal {
8350                return Ok(());
8351            }
8352
8353            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8354            // are envelope_size bytes.
8355            let cur_offset: usize = (2 - 1) * envelope_size;
8356
8357            // Zero reserved fields.
8358            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8359
8360            // Safety:
8361            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8362            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8363            //   envelope_size bytes, there is always sufficient room.
8364            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
8365                self.dst_addr
8366                    .as_ref()
8367                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
8368                encoder,
8369                offset + cur_offset,
8370                depth,
8371            )?;
8372
8373            _prev_end_offset = cur_offset + envelope_size;
8374            if 3 > max_ordinal {
8375                return Ok(());
8376            }
8377
8378            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8379            // are envelope_size bytes.
8380            let cur_offset: usize = (3 - 1) * envelope_size;
8381
8382            // Zero reserved fields.
8383            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8384
8385            // Safety:
8386            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8387            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8388            //   envelope_size bytes, there is always sufficient room.
8389            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
8390            self.data.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
8391            encoder, offset + cur_offset, depth
8392        )?;
8393
8394            _prev_end_offset = cur_offset + envelope_size;
8395
8396            Ok(())
8397        }
8398    }
8399
8400    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8401        for WlanFullmacImplIfcEapolIndRequest
8402    {
8403        #[inline(always)]
8404        fn new_empty() -> Self {
8405            Self::default()
8406        }
8407
8408        unsafe fn decode(
8409            &mut self,
8410            decoder: &mut fidl::encoding::Decoder<'_, D>,
8411            offset: usize,
8412            mut depth: fidl::encoding::Depth,
8413        ) -> fidl::Result<()> {
8414            decoder.debug_check_bounds::<Self>(offset);
8415            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8416                None => return Err(fidl::Error::NotNullable),
8417                Some(len) => len,
8418            };
8419            // Calling decoder.out_of_line_offset(0) is not allowed.
8420            if len == 0 {
8421                return Ok(());
8422            };
8423            depth.increment()?;
8424            let envelope_size = 8;
8425            let bytes_len = len * envelope_size;
8426            let offset = decoder.out_of_line_offset(bytes_len)?;
8427            // Decode the envelope for each type.
8428            let mut _next_ordinal_to_read = 0;
8429            let mut next_offset = offset;
8430            let end_offset = offset + bytes_len;
8431            _next_ordinal_to_read += 1;
8432            if next_offset >= end_offset {
8433                return Ok(());
8434            }
8435
8436            // Decode unknown envelopes for gaps in ordinals.
8437            while _next_ordinal_to_read < 1 {
8438                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8439                _next_ordinal_to_read += 1;
8440                next_offset += envelope_size;
8441            }
8442
8443            let next_out_of_line = decoder.next_out_of_line();
8444            let handles_before = decoder.remaining_handles();
8445            if let Some((inlined, num_bytes, num_handles)) =
8446                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8447            {
8448                let member_inline_size =
8449                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
8450                        decoder.context,
8451                    );
8452                if inlined != (member_inline_size <= 4) {
8453                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8454                }
8455                let inner_offset;
8456                let mut inner_depth = depth.clone();
8457                if inlined {
8458                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8459                    inner_offset = next_offset;
8460                } else {
8461                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8462                    inner_depth.increment()?;
8463                }
8464                let val_ref = self
8465                    .src_addr
8466                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
8467                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
8468                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8469                {
8470                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8471                }
8472                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8473                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8474                }
8475            }
8476
8477            next_offset += envelope_size;
8478            _next_ordinal_to_read += 1;
8479            if next_offset >= end_offset {
8480                return Ok(());
8481            }
8482
8483            // Decode unknown envelopes for gaps in ordinals.
8484            while _next_ordinal_to_read < 2 {
8485                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8486                _next_ordinal_to_read += 1;
8487                next_offset += envelope_size;
8488            }
8489
8490            let next_out_of_line = decoder.next_out_of_line();
8491            let handles_before = decoder.remaining_handles();
8492            if let Some((inlined, num_bytes, num_handles)) =
8493                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8494            {
8495                let member_inline_size =
8496                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
8497                        decoder.context,
8498                    );
8499                if inlined != (member_inline_size <= 4) {
8500                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8501                }
8502                let inner_offset;
8503                let mut inner_depth = depth.clone();
8504                if inlined {
8505                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8506                    inner_offset = next_offset;
8507                } else {
8508                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8509                    inner_depth.increment()?;
8510                }
8511                let val_ref = self
8512                    .dst_addr
8513                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
8514                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
8515                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8516                {
8517                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8518                }
8519                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8520                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8521                }
8522            }
8523
8524            next_offset += envelope_size;
8525            _next_ordinal_to_read += 1;
8526            if next_offset >= end_offset {
8527                return Ok(());
8528            }
8529
8530            // Decode unknown envelopes for gaps in ordinals.
8531            while _next_ordinal_to_read < 3 {
8532                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8533                _next_ordinal_to_read += 1;
8534                next_offset += envelope_size;
8535            }
8536
8537            let next_out_of_line = decoder.next_out_of_line();
8538            let handles_before = decoder.remaining_handles();
8539            if let Some((inlined, num_bytes, num_handles)) =
8540                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8541            {
8542                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8543                if inlined != (member_inline_size <= 4) {
8544                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8545                }
8546                let inner_offset;
8547                let mut inner_depth = depth.clone();
8548                if inlined {
8549                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8550                    inner_offset = next_offset;
8551                } else {
8552                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8553                    inner_depth.increment()?;
8554                }
8555                let val_ref = self.data.get_or_insert_with(|| {
8556                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
8557                });
8558                fidl::decode!(
8559                    fidl::encoding::UnboundedVector<u8>,
8560                    D,
8561                    val_ref,
8562                    decoder,
8563                    inner_offset,
8564                    inner_depth
8565                )?;
8566                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8567                {
8568                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8569                }
8570                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8571                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8572                }
8573            }
8574
8575            next_offset += envelope_size;
8576
8577            // Decode the remaining unknown envelopes.
8578            while next_offset < end_offset {
8579                _next_ordinal_to_read += 1;
8580                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8581                next_offset += envelope_size;
8582            }
8583
8584            Ok(())
8585        }
8586    }
8587
8588    impl WlanFullmacImplIfcOnPmkAvailableRequest {
8589        #[inline(always)]
8590        fn max_ordinal_present(&self) -> u64 {
8591            if let Some(_) = self.pmkid {
8592                return 2;
8593            }
8594            if let Some(_) = self.pmk {
8595                return 1;
8596            }
8597            0
8598        }
8599    }
8600
8601    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnPmkAvailableRequest {
8602        type Borrowed<'a> = &'a Self;
8603        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8604            value
8605        }
8606    }
8607
8608    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcOnPmkAvailableRequest {
8609        type Owned = Self;
8610
8611        #[inline(always)]
8612        fn inline_align(_context: fidl::encoding::Context) -> usize {
8613            8
8614        }
8615
8616        #[inline(always)]
8617        fn inline_size(_context: fidl::encoding::Context) -> usize {
8618            16
8619        }
8620    }
8621
8622    unsafe impl<D: fidl::encoding::ResourceDialect>
8623        fidl::encoding::Encode<WlanFullmacImplIfcOnPmkAvailableRequest, D>
8624        for &WlanFullmacImplIfcOnPmkAvailableRequest
8625    {
8626        unsafe fn encode(
8627            self,
8628            encoder: &mut fidl::encoding::Encoder<'_, D>,
8629            offset: usize,
8630            mut depth: fidl::encoding::Depth,
8631        ) -> fidl::Result<()> {
8632            encoder.debug_check_bounds::<WlanFullmacImplIfcOnPmkAvailableRequest>(offset);
8633            // Vector header
8634            let max_ordinal: u64 = self.max_ordinal_present();
8635            encoder.write_num(max_ordinal, offset);
8636            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8637            // Calling encoder.out_of_line_offset(0) is not allowed.
8638            if max_ordinal == 0 {
8639                return Ok(());
8640            }
8641            depth.increment()?;
8642            let envelope_size = 8;
8643            let bytes_len = max_ordinal as usize * envelope_size;
8644            #[allow(unused_variables)]
8645            let offset = encoder.out_of_line_offset(bytes_len);
8646            let mut _prev_end_offset: usize = 0;
8647            if 1 > max_ordinal {
8648                return Ok(());
8649            }
8650
8651            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8652            // are envelope_size bytes.
8653            let cur_offset: usize = (1 - 1) * envelope_size;
8654
8655            // Zero reserved fields.
8656            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8657
8658            // Safety:
8659            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8660            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8661            //   envelope_size bytes, there is always sufficient room.
8662            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
8663            self.pmk.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
8664            encoder, offset + cur_offset, depth
8665        )?;
8666
8667            _prev_end_offset = cur_offset + envelope_size;
8668            if 2 > max_ordinal {
8669                return Ok(());
8670            }
8671
8672            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8673            // are envelope_size bytes.
8674            let cur_offset: usize = (2 - 1) * envelope_size;
8675
8676            // Zero reserved fields.
8677            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8678
8679            // Safety:
8680            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8681            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8682            //   envelope_size bytes, there is always sufficient room.
8683            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
8684            self.pmkid.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
8685            encoder, offset + cur_offset, depth
8686        )?;
8687
8688            _prev_end_offset = cur_offset + envelope_size;
8689
8690            Ok(())
8691        }
8692    }
8693
8694    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8695        for WlanFullmacImplIfcOnPmkAvailableRequest
8696    {
8697        #[inline(always)]
8698        fn new_empty() -> Self {
8699            Self::default()
8700        }
8701
8702        unsafe fn decode(
8703            &mut self,
8704            decoder: &mut fidl::encoding::Decoder<'_, D>,
8705            offset: usize,
8706            mut depth: fidl::encoding::Depth,
8707        ) -> fidl::Result<()> {
8708            decoder.debug_check_bounds::<Self>(offset);
8709            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8710                None => return Err(fidl::Error::NotNullable),
8711                Some(len) => len,
8712            };
8713            // Calling decoder.out_of_line_offset(0) is not allowed.
8714            if len == 0 {
8715                return Ok(());
8716            };
8717            depth.increment()?;
8718            let envelope_size = 8;
8719            let bytes_len = len * envelope_size;
8720            let offset = decoder.out_of_line_offset(bytes_len)?;
8721            // Decode the envelope for each type.
8722            let mut _next_ordinal_to_read = 0;
8723            let mut next_offset = offset;
8724            let end_offset = offset + bytes_len;
8725            _next_ordinal_to_read += 1;
8726            if next_offset >= end_offset {
8727                return Ok(());
8728            }
8729
8730            // Decode unknown envelopes for gaps in ordinals.
8731            while _next_ordinal_to_read < 1 {
8732                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8733                _next_ordinal_to_read += 1;
8734                next_offset += envelope_size;
8735            }
8736
8737            let next_out_of_line = decoder.next_out_of_line();
8738            let handles_before = decoder.remaining_handles();
8739            if let Some((inlined, num_bytes, num_handles)) =
8740                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8741            {
8742                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8743                if inlined != (member_inline_size <= 4) {
8744                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8745                }
8746                let inner_offset;
8747                let mut inner_depth = depth.clone();
8748                if inlined {
8749                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8750                    inner_offset = next_offset;
8751                } else {
8752                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8753                    inner_depth.increment()?;
8754                }
8755                let val_ref = self.pmk.get_or_insert_with(|| {
8756                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
8757                });
8758                fidl::decode!(
8759                    fidl::encoding::UnboundedVector<u8>,
8760                    D,
8761                    val_ref,
8762                    decoder,
8763                    inner_offset,
8764                    inner_depth
8765                )?;
8766                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8767                {
8768                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8769                }
8770                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8771                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8772                }
8773            }
8774
8775            next_offset += envelope_size;
8776            _next_ordinal_to_read += 1;
8777            if next_offset >= end_offset {
8778                return Ok(());
8779            }
8780
8781            // Decode unknown envelopes for gaps in ordinals.
8782            while _next_ordinal_to_read < 2 {
8783                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8784                _next_ordinal_to_read += 1;
8785                next_offset += envelope_size;
8786            }
8787
8788            let next_out_of_line = decoder.next_out_of_line();
8789            let handles_before = decoder.remaining_handles();
8790            if let Some((inlined, num_bytes, num_handles)) =
8791                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8792            {
8793                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8794                if inlined != (member_inline_size <= 4) {
8795                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8796                }
8797                let inner_offset;
8798                let mut inner_depth = depth.clone();
8799                if inlined {
8800                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8801                    inner_offset = next_offset;
8802                } else {
8803                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8804                    inner_depth.increment()?;
8805                }
8806                let val_ref = self.pmkid.get_or_insert_with(|| {
8807                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
8808                });
8809                fidl::decode!(
8810                    fidl::encoding::UnboundedVector<u8>,
8811                    D,
8812                    val_ref,
8813                    decoder,
8814                    inner_offset,
8815                    inner_depth
8816                )?;
8817                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8818                {
8819                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8820                }
8821                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8822                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8823                }
8824            }
8825
8826            next_offset += envelope_size;
8827
8828            // Decode the remaining unknown envelopes.
8829            while next_offset < end_offset {
8830                _next_ordinal_to_read += 1;
8831                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8832                next_offset += envelope_size;
8833            }
8834
8835            Ok(())
8836        }
8837    }
8838
8839    impl WlanFullmacImplIfcOnScanEndRequest {
8840        #[inline(always)]
8841        fn max_ordinal_present(&self) -> u64 {
8842            if let Some(_) = self.code {
8843                return 2;
8844            }
8845            if let Some(_) = self.txn_id {
8846                return 1;
8847            }
8848            0
8849        }
8850    }
8851
8852    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnScanEndRequest {
8853        type Borrowed<'a> = &'a Self;
8854        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8855            value
8856        }
8857    }
8858
8859    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcOnScanEndRequest {
8860        type Owned = Self;
8861
8862        #[inline(always)]
8863        fn inline_align(_context: fidl::encoding::Context) -> usize {
8864            8
8865        }
8866
8867        #[inline(always)]
8868        fn inline_size(_context: fidl::encoding::Context) -> usize {
8869            16
8870        }
8871    }
8872
8873    unsafe impl<D: fidl::encoding::ResourceDialect>
8874        fidl::encoding::Encode<WlanFullmacImplIfcOnScanEndRequest, D>
8875        for &WlanFullmacImplIfcOnScanEndRequest
8876    {
8877        unsafe fn encode(
8878            self,
8879            encoder: &mut fidl::encoding::Encoder<'_, D>,
8880            offset: usize,
8881            mut depth: fidl::encoding::Depth,
8882        ) -> fidl::Result<()> {
8883            encoder.debug_check_bounds::<WlanFullmacImplIfcOnScanEndRequest>(offset);
8884            // Vector header
8885            let max_ordinal: u64 = self.max_ordinal_present();
8886            encoder.write_num(max_ordinal, offset);
8887            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8888            // Calling encoder.out_of_line_offset(0) is not allowed.
8889            if max_ordinal == 0 {
8890                return Ok(());
8891            }
8892            depth.increment()?;
8893            let envelope_size = 8;
8894            let bytes_len = max_ordinal as usize * envelope_size;
8895            #[allow(unused_variables)]
8896            let offset = encoder.out_of_line_offset(bytes_len);
8897            let mut _prev_end_offset: usize = 0;
8898            if 1 > max_ordinal {
8899                return Ok(());
8900            }
8901
8902            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8903            // are envelope_size bytes.
8904            let cur_offset: usize = (1 - 1) * envelope_size;
8905
8906            // Zero reserved fields.
8907            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8908
8909            // Safety:
8910            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8911            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8912            //   envelope_size bytes, there is always sufficient room.
8913            fidl::encoding::encode_in_envelope_optional::<u64, D>(
8914                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
8915                encoder,
8916                offset + cur_offset,
8917                depth,
8918            )?;
8919
8920            _prev_end_offset = cur_offset + envelope_size;
8921            if 2 > max_ordinal {
8922                return Ok(());
8923            }
8924
8925            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8926            // are envelope_size bytes.
8927            let cur_offset: usize = (2 - 1) * envelope_size;
8928
8929            // Zero reserved fields.
8930            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8931
8932            // Safety:
8933            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8934            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8935            //   envelope_size bytes, there is always sufficient room.
8936            fidl::encoding::encode_in_envelope_optional::<WlanScanResult, D>(
8937                self.code.as_ref().map(<WlanScanResult as fidl::encoding::ValueTypeMarker>::borrow),
8938                encoder,
8939                offset + cur_offset,
8940                depth,
8941            )?;
8942
8943            _prev_end_offset = cur_offset + envelope_size;
8944
8945            Ok(())
8946        }
8947    }
8948
8949    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8950        for WlanFullmacImplIfcOnScanEndRequest
8951    {
8952        #[inline(always)]
8953        fn new_empty() -> Self {
8954            Self::default()
8955        }
8956
8957        unsafe fn decode(
8958            &mut self,
8959            decoder: &mut fidl::encoding::Decoder<'_, D>,
8960            offset: usize,
8961            mut depth: fidl::encoding::Depth,
8962        ) -> fidl::Result<()> {
8963            decoder.debug_check_bounds::<Self>(offset);
8964            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8965                None => return Err(fidl::Error::NotNullable),
8966                Some(len) => len,
8967            };
8968            // Calling decoder.out_of_line_offset(0) is not allowed.
8969            if len == 0 {
8970                return Ok(());
8971            };
8972            depth.increment()?;
8973            let envelope_size = 8;
8974            let bytes_len = len * envelope_size;
8975            let offset = decoder.out_of_line_offset(bytes_len)?;
8976            // Decode the envelope for each type.
8977            let mut _next_ordinal_to_read = 0;
8978            let mut next_offset = offset;
8979            let end_offset = offset + bytes_len;
8980            _next_ordinal_to_read += 1;
8981            if next_offset >= end_offset {
8982                return Ok(());
8983            }
8984
8985            // Decode unknown envelopes for gaps in ordinals.
8986            while _next_ordinal_to_read < 1 {
8987                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8988                _next_ordinal_to_read += 1;
8989                next_offset += envelope_size;
8990            }
8991
8992            let next_out_of_line = decoder.next_out_of_line();
8993            let handles_before = decoder.remaining_handles();
8994            if let Some((inlined, num_bytes, num_handles)) =
8995                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8996            {
8997                let member_inline_size =
8998                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8999                if inlined != (member_inline_size <= 4) {
9000                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9001                }
9002                let inner_offset;
9003                let mut inner_depth = depth.clone();
9004                if inlined {
9005                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9006                    inner_offset = next_offset;
9007                } else {
9008                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9009                    inner_depth.increment()?;
9010                }
9011                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
9012                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
9013                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9014                {
9015                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9016                }
9017                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9018                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9019                }
9020            }
9021
9022            next_offset += envelope_size;
9023            _next_ordinal_to_read += 1;
9024            if next_offset >= end_offset {
9025                return Ok(());
9026            }
9027
9028            // Decode unknown envelopes for gaps in ordinals.
9029            while _next_ordinal_to_read < 2 {
9030                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9031                _next_ordinal_to_read += 1;
9032                next_offset += envelope_size;
9033            }
9034
9035            let next_out_of_line = decoder.next_out_of_line();
9036            let handles_before = decoder.remaining_handles();
9037            if let Some((inlined, num_bytes, num_handles)) =
9038                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9039            {
9040                let member_inline_size =
9041                    <WlanScanResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9042                if inlined != (member_inline_size <= 4) {
9043                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9044                }
9045                let inner_offset;
9046                let mut inner_depth = depth.clone();
9047                if inlined {
9048                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9049                    inner_offset = next_offset;
9050                } else {
9051                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9052                    inner_depth.increment()?;
9053                }
9054                let val_ref = self.code.get_or_insert_with(|| fidl::new_empty!(WlanScanResult, D));
9055                fidl::decode!(WlanScanResult, D, val_ref, decoder, inner_offset, inner_depth)?;
9056                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9057                {
9058                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9059                }
9060                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9061                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9062                }
9063            }
9064
9065            next_offset += envelope_size;
9066
9067            // Decode the remaining unknown envelopes.
9068            while next_offset < end_offset {
9069                _next_ordinal_to_read += 1;
9070                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9071                next_offset += envelope_size;
9072            }
9073
9074            Ok(())
9075        }
9076    }
9077
9078    impl WlanFullmacImplIfcOnScanResultRequest {
9079        #[inline(always)]
9080        fn max_ordinal_present(&self) -> u64 {
9081            if let Some(_) = self.bss {
9082                return 3;
9083            }
9084            if let Some(_) = self.timestamp_nanos {
9085                return 2;
9086            }
9087            if let Some(_) = self.txn_id {
9088                return 1;
9089            }
9090            0
9091        }
9092    }
9093
9094    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnScanResultRequest {
9095        type Borrowed<'a> = &'a Self;
9096        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9097            value
9098        }
9099    }
9100
9101    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcOnScanResultRequest {
9102        type Owned = Self;
9103
9104        #[inline(always)]
9105        fn inline_align(_context: fidl::encoding::Context) -> usize {
9106            8
9107        }
9108
9109        #[inline(always)]
9110        fn inline_size(_context: fidl::encoding::Context) -> usize {
9111            16
9112        }
9113    }
9114
9115    unsafe impl<D: fidl::encoding::ResourceDialect>
9116        fidl::encoding::Encode<WlanFullmacImplIfcOnScanResultRequest, D>
9117        for &WlanFullmacImplIfcOnScanResultRequest
9118    {
9119        unsafe fn encode(
9120            self,
9121            encoder: &mut fidl::encoding::Encoder<'_, D>,
9122            offset: usize,
9123            mut depth: fidl::encoding::Depth,
9124        ) -> fidl::Result<()> {
9125            encoder.debug_check_bounds::<WlanFullmacImplIfcOnScanResultRequest>(offset);
9126            // Vector header
9127            let max_ordinal: u64 = self.max_ordinal_present();
9128            encoder.write_num(max_ordinal, offset);
9129            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9130            // Calling encoder.out_of_line_offset(0) is not allowed.
9131            if max_ordinal == 0 {
9132                return Ok(());
9133            }
9134            depth.increment()?;
9135            let envelope_size = 8;
9136            let bytes_len = max_ordinal as usize * envelope_size;
9137            #[allow(unused_variables)]
9138            let offset = encoder.out_of_line_offset(bytes_len);
9139            let mut _prev_end_offset: usize = 0;
9140            if 1 > max_ordinal {
9141                return Ok(());
9142            }
9143
9144            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9145            // are envelope_size bytes.
9146            let cur_offset: usize = (1 - 1) * envelope_size;
9147
9148            // Zero reserved fields.
9149            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9150
9151            // Safety:
9152            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9153            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9154            //   envelope_size bytes, there is always sufficient room.
9155            fidl::encoding::encode_in_envelope_optional::<u64, D>(
9156                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
9157                encoder,
9158                offset + cur_offset,
9159                depth,
9160            )?;
9161
9162            _prev_end_offset = cur_offset + envelope_size;
9163            if 2 > max_ordinal {
9164                return Ok(());
9165            }
9166
9167            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9168            // are envelope_size bytes.
9169            let cur_offset: usize = (2 - 1) * envelope_size;
9170
9171            // Zero reserved fields.
9172            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9173
9174            // Safety:
9175            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9176            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9177            //   envelope_size bytes, there is always sufficient room.
9178            fidl::encoding::encode_in_envelope_optional::<i64, D>(
9179                self.timestamp_nanos.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
9180                encoder,
9181                offset + cur_offset,
9182                depth,
9183            )?;
9184
9185            _prev_end_offset = cur_offset + envelope_size;
9186            if 3 > max_ordinal {
9187                return Ok(());
9188            }
9189
9190            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9191            // are envelope_size bytes.
9192            let cur_offset: usize = (3 - 1) * envelope_size;
9193
9194            // Zero reserved fields.
9195            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9196
9197            // Safety:
9198            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9199            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9200            //   envelope_size bytes, there is always sufficient room.
9201            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common__common::BssDescription, D>(
9202            self.bss.as_ref().map(<fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow),
9203            encoder, offset + cur_offset, depth
9204        )?;
9205
9206            _prev_end_offset = cur_offset + envelope_size;
9207
9208            Ok(())
9209        }
9210    }
9211
9212    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9213        for WlanFullmacImplIfcOnScanResultRequest
9214    {
9215        #[inline(always)]
9216        fn new_empty() -> Self {
9217            Self::default()
9218        }
9219
9220        unsafe fn decode(
9221            &mut self,
9222            decoder: &mut fidl::encoding::Decoder<'_, D>,
9223            offset: usize,
9224            mut depth: fidl::encoding::Depth,
9225        ) -> fidl::Result<()> {
9226            decoder.debug_check_bounds::<Self>(offset);
9227            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9228                None => return Err(fidl::Error::NotNullable),
9229                Some(len) => len,
9230            };
9231            // Calling decoder.out_of_line_offset(0) is not allowed.
9232            if len == 0 {
9233                return Ok(());
9234            };
9235            depth.increment()?;
9236            let envelope_size = 8;
9237            let bytes_len = len * envelope_size;
9238            let offset = decoder.out_of_line_offset(bytes_len)?;
9239            // Decode the envelope for each type.
9240            let mut _next_ordinal_to_read = 0;
9241            let mut next_offset = offset;
9242            let end_offset = offset + bytes_len;
9243            _next_ordinal_to_read += 1;
9244            if next_offset >= end_offset {
9245                return Ok(());
9246            }
9247
9248            // Decode unknown envelopes for gaps in ordinals.
9249            while _next_ordinal_to_read < 1 {
9250                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9251                _next_ordinal_to_read += 1;
9252                next_offset += envelope_size;
9253            }
9254
9255            let next_out_of_line = decoder.next_out_of_line();
9256            let handles_before = decoder.remaining_handles();
9257            if let Some((inlined, num_bytes, num_handles)) =
9258                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9259            {
9260                let member_inline_size =
9261                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9262                if inlined != (member_inline_size <= 4) {
9263                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9264                }
9265                let inner_offset;
9266                let mut inner_depth = depth.clone();
9267                if inlined {
9268                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9269                    inner_offset = next_offset;
9270                } else {
9271                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9272                    inner_depth.increment()?;
9273                }
9274                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
9275                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
9276                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9277                {
9278                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9279                }
9280                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9281                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9282                }
9283            }
9284
9285            next_offset += envelope_size;
9286            _next_ordinal_to_read += 1;
9287            if next_offset >= end_offset {
9288                return Ok(());
9289            }
9290
9291            // Decode unknown envelopes for gaps in ordinals.
9292            while _next_ordinal_to_read < 2 {
9293                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9294                _next_ordinal_to_read += 1;
9295                next_offset += envelope_size;
9296            }
9297
9298            let next_out_of_line = decoder.next_out_of_line();
9299            let handles_before = decoder.remaining_handles();
9300            if let Some((inlined, num_bytes, num_handles)) =
9301                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9302            {
9303                let member_inline_size =
9304                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9305                if inlined != (member_inline_size <= 4) {
9306                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9307                }
9308                let inner_offset;
9309                let mut inner_depth = depth.clone();
9310                if inlined {
9311                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9312                    inner_offset = next_offset;
9313                } else {
9314                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9315                    inner_depth.increment()?;
9316                }
9317                let val_ref = self.timestamp_nanos.get_or_insert_with(|| fidl::new_empty!(i64, D));
9318                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
9319                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9320                {
9321                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9322                }
9323                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9324                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9325                }
9326            }
9327
9328            next_offset += envelope_size;
9329            _next_ordinal_to_read += 1;
9330            if next_offset >= end_offset {
9331                return Ok(());
9332            }
9333
9334            // Decode unknown envelopes for gaps in ordinals.
9335            while _next_ordinal_to_read < 3 {
9336                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9337                _next_ordinal_to_read += 1;
9338                next_offset += envelope_size;
9339            }
9340
9341            let next_out_of_line = decoder.next_out_of_line();
9342            let handles_before = decoder.remaining_handles();
9343            if let Some((inlined, num_bytes, num_handles)) =
9344                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9345            {
9346                let member_inline_size = <fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9347                if inlined != (member_inline_size <= 4) {
9348                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9349                }
9350                let inner_offset;
9351                let mut inner_depth = depth.clone();
9352                if inlined {
9353                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9354                    inner_offset = next_offset;
9355                } else {
9356                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9357                    inner_depth.increment()?;
9358                }
9359                let val_ref = self.bss.get_or_insert_with(|| {
9360                    fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssDescription, D)
9361                });
9362                fidl::decode!(
9363                    fidl_fuchsia_wlan_common__common::BssDescription,
9364                    D,
9365                    val_ref,
9366                    decoder,
9367                    inner_offset,
9368                    inner_depth
9369                )?;
9370                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9371                {
9372                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9373                }
9374                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9375                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9376                }
9377            }
9378
9379            next_offset += envelope_size;
9380
9381            // Decode the remaining unknown envelopes.
9382            while next_offset < end_offset {
9383                _next_ordinal_to_read += 1;
9384                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9385                next_offset += envelope_size;
9386            }
9387
9388            Ok(())
9389        }
9390    }
9391
9392    impl WlanFullmacImplIfcRoamConfRequest {
9393        #[inline(always)]
9394        fn max_ordinal_present(&self) -> u64 {
9395            if let Some(_) = self.association_ies {
9396                return 6;
9397            }
9398            if let Some(_) = self.association_id {
9399                return 5;
9400            }
9401            if let Some(_) = self.target_bss_authenticated {
9402                return 4;
9403            }
9404            if let Some(_) = self.original_association_maintained {
9405                return 3;
9406            }
9407            if let Some(_) = self.status_code {
9408                return 2;
9409            }
9410            if let Some(_) = self.selected_bssid {
9411                return 1;
9412            }
9413            0
9414        }
9415    }
9416
9417    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcRoamConfRequest {
9418        type Borrowed<'a> = &'a Self;
9419        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9420            value
9421        }
9422    }
9423
9424    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcRoamConfRequest {
9425        type Owned = Self;
9426
9427        #[inline(always)]
9428        fn inline_align(_context: fidl::encoding::Context) -> usize {
9429            8
9430        }
9431
9432        #[inline(always)]
9433        fn inline_size(_context: fidl::encoding::Context) -> usize {
9434            16
9435        }
9436    }
9437
9438    unsafe impl<D: fidl::encoding::ResourceDialect>
9439        fidl::encoding::Encode<WlanFullmacImplIfcRoamConfRequest, D>
9440        for &WlanFullmacImplIfcRoamConfRequest
9441    {
9442        unsafe fn encode(
9443            self,
9444            encoder: &mut fidl::encoding::Encoder<'_, D>,
9445            offset: usize,
9446            mut depth: fidl::encoding::Depth,
9447        ) -> fidl::Result<()> {
9448            encoder.debug_check_bounds::<WlanFullmacImplIfcRoamConfRequest>(offset);
9449            // Vector header
9450            let max_ordinal: u64 = self.max_ordinal_present();
9451            encoder.write_num(max_ordinal, offset);
9452            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9453            // Calling encoder.out_of_line_offset(0) is not allowed.
9454            if max_ordinal == 0 {
9455                return Ok(());
9456            }
9457            depth.increment()?;
9458            let envelope_size = 8;
9459            let bytes_len = max_ordinal as usize * envelope_size;
9460            #[allow(unused_variables)]
9461            let offset = encoder.out_of_line_offset(bytes_len);
9462            let mut _prev_end_offset: usize = 0;
9463            if 1 > max_ordinal {
9464                return Ok(());
9465            }
9466
9467            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9468            // are envelope_size bytes.
9469            let cur_offset: usize = (1 - 1) * envelope_size;
9470
9471            // Zero reserved fields.
9472            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9473
9474            // Safety:
9475            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9476            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9477            //   envelope_size bytes, there is always sufficient room.
9478            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
9479                self.selected_bssid
9480                    .as_ref()
9481                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
9482                encoder,
9483                offset + cur_offset,
9484                depth,
9485            )?;
9486
9487            _prev_end_offset = cur_offset + envelope_size;
9488            if 2 > max_ordinal {
9489                return Ok(());
9490            }
9491
9492            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9493            // are envelope_size bytes.
9494            let cur_offset: usize = (2 - 1) * envelope_size;
9495
9496            // Zero reserved fields.
9497            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9498
9499            // Safety:
9500            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9501            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9502            //   envelope_size bytes, there is always sufficient room.
9503            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>(
9504            self.status_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
9505            encoder, offset + cur_offset, depth
9506        )?;
9507
9508            _prev_end_offset = cur_offset + envelope_size;
9509            if 3 > max_ordinal {
9510                return Ok(());
9511            }
9512
9513            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9514            // are envelope_size bytes.
9515            let cur_offset: usize = (3 - 1) * envelope_size;
9516
9517            // Zero reserved fields.
9518            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9519
9520            // Safety:
9521            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9522            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9523            //   envelope_size bytes, there is always sufficient room.
9524            fidl::encoding::encode_in_envelope_optional::<bool, D>(
9525                self.original_association_maintained
9526                    .as_ref()
9527                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
9528                encoder,
9529                offset + cur_offset,
9530                depth,
9531            )?;
9532
9533            _prev_end_offset = cur_offset + envelope_size;
9534            if 4 > max_ordinal {
9535                return Ok(());
9536            }
9537
9538            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9539            // are envelope_size bytes.
9540            let cur_offset: usize = (4 - 1) * envelope_size;
9541
9542            // Zero reserved fields.
9543            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9544
9545            // Safety:
9546            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9547            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9548            //   envelope_size bytes, there is always sufficient room.
9549            fidl::encoding::encode_in_envelope_optional::<bool, D>(
9550                self.target_bss_authenticated
9551                    .as_ref()
9552                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
9553                encoder,
9554                offset + cur_offset,
9555                depth,
9556            )?;
9557
9558            _prev_end_offset = cur_offset + envelope_size;
9559            if 5 > max_ordinal {
9560                return Ok(());
9561            }
9562
9563            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9564            // are envelope_size bytes.
9565            let cur_offset: usize = (5 - 1) * envelope_size;
9566
9567            // Zero reserved fields.
9568            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9569
9570            // Safety:
9571            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9572            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9573            //   envelope_size bytes, there is always sufficient room.
9574            fidl::encoding::encode_in_envelope_optional::<u16, D>(
9575                self.association_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
9576                encoder,
9577                offset + cur_offset,
9578                depth,
9579            )?;
9580
9581            _prev_end_offset = cur_offset + envelope_size;
9582            if 6 > max_ordinal {
9583                return Ok(());
9584            }
9585
9586            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9587            // are envelope_size bytes.
9588            let cur_offset: usize = (6 - 1) * envelope_size;
9589
9590            // Zero reserved fields.
9591            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9592
9593            // Safety:
9594            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9595            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9596            //   envelope_size bytes, there is always sufficient room.
9597            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
9598            self.association_ies.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
9599            encoder, offset + cur_offset, depth
9600        )?;
9601
9602            _prev_end_offset = cur_offset + envelope_size;
9603
9604            Ok(())
9605        }
9606    }
9607
9608    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9609        for WlanFullmacImplIfcRoamConfRequest
9610    {
9611        #[inline(always)]
9612        fn new_empty() -> Self {
9613            Self::default()
9614        }
9615
9616        unsafe fn decode(
9617            &mut self,
9618            decoder: &mut fidl::encoding::Decoder<'_, D>,
9619            offset: usize,
9620            mut depth: fidl::encoding::Depth,
9621        ) -> fidl::Result<()> {
9622            decoder.debug_check_bounds::<Self>(offset);
9623            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9624                None => return Err(fidl::Error::NotNullable),
9625                Some(len) => len,
9626            };
9627            // Calling decoder.out_of_line_offset(0) is not allowed.
9628            if len == 0 {
9629                return Ok(());
9630            };
9631            depth.increment()?;
9632            let envelope_size = 8;
9633            let bytes_len = len * envelope_size;
9634            let offset = decoder.out_of_line_offset(bytes_len)?;
9635            // Decode the envelope for each type.
9636            let mut _next_ordinal_to_read = 0;
9637            let mut next_offset = offset;
9638            let end_offset = offset + bytes_len;
9639            _next_ordinal_to_read += 1;
9640            if next_offset >= end_offset {
9641                return Ok(());
9642            }
9643
9644            // Decode unknown envelopes for gaps in ordinals.
9645            while _next_ordinal_to_read < 1 {
9646                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9647                _next_ordinal_to_read += 1;
9648                next_offset += envelope_size;
9649            }
9650
9651            let next_out_of_line = decoder.next_out_of_line();
9652            let handles_before = decoder.remaining_handles();
9653            if let Some((inlined, num_bytes, num_handles)) =
9654                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9655            {
9656                let member_inline_size =
9657                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
9658                        decoder.context,
9659                    );
9660                if inlined != (member_inline_size <= 4) {
9661                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9662                }
9663                let inner_offset;
9664                let mut inner_depth = depth.clone();
9665                if inlined {
9666                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9667                    inner_offset = next_offset;
9668                } else {
9669                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9670                    inner_depth.increment()?;
9671                }
9672                let val_ref = self
9673                    .selected_bssid
9674                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
9675                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
9676                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9677                {
9678                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9679                }
9680                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9681                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9682                }
9683            }
9684
9685            next_offset += envelope_size;
9686            _next_ordinal_to_read += 1;
9687            if next_offset >= end_offset {
9688                return Ok(());
9689            }
9690
9691            // Decode unknown envelopes for gaps in ordinals.
9692            while _next_ordinal_to_read < 2 {
9693                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9694                _next_ordinal_to_read += 1;
9695                next_offset += envelope_size;
9696            }
9697
9698            let next_out_of_line = decoder.next_out_of_line();
9699            let handles_before = decoder.remaining_handles();
9700            if let Some((inlined, num_bytes, num_handles)) =
9701                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9702            {
9703                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9704                if inlined != (member_inline_size <= 4) {
9705                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9706                }
9707                let inner_offset;
9708                let mut inner_depth = depth.clone();
9709                if inlined {
9710                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9711                    inner_offset = next_offset;
9712                } else {
9713                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9714                    inner_depth.increment()?;
9715                }
9716                let val_ref = self.status_code.get_or_insert_with(|| {
9717                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D)
9718                });
9719                fidl::decode!(
9720                    fidl_fuchsia_wlan_ieee80211__common::StatusCode,
9721                    D,
9722                    val_ref,
9723                    decoder,
9724                    inner_offset,
9725                    inner_depth
9726                )?;
9727                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9728                {
9729                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9730                }
9731                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9732                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9733                }
9734            }
9735
9736            next_offset += envelope_size;
9737            _next_ordinal_to_read += 1;
9738            if next_offset >= end_offset {
9739                return Ok(());
9740            }
9741
9742            // Decode unknown envelopes for gaps in ordinals.
9743            while _next_ordinal_to_read < 3 {
9744                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9745                _next_ordinal_to_read += 1;
9746                next_offset += envelope_size;
9747            }
9748
9749            let next_out_of_line = decoder.next_out_of_line();
9750            let handles_before = decoder.remaining_handles();
9751            if let Some((inlined, num_bytes, num_handles)) =
9752                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9753            {
9754                let member_inline_size =
9755                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9756                if inlined != (member_inline_size <= 4) {
9757                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9758                }
9759                let inner_offset;
9760                let mut inner_depth = depth.clone();
9761                if inlined {
9762                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9763                    inner_offset = next_offset;
9764                } else {
9765                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9766                    inner_depth.increment()?;
9767                }
9768                let val_ref = self
9769                    .original_association_maintained
9770                    .get_or_insert_with(|| fidl::new_empty!(bool, D));
9771                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
9772                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9773                {
9774                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9775                }
9776                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9777                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9778                }
9779            }
9780
9781            next_offset += envelope_size;
9782            _next_ordinal_to_read += 1;
9783            if next_offset >= end_offset {
9784                return Ok(());
9785            }
9786
9787            // Decode unknown envelopes for gaps in ordinals.
9788            while _next_ordinal_to_read < 4 {
9789                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9790                _next_ordinal_to_read += 1;
9791                next_offset += envelope_size;
9792            }
9793
9794            let next_out_of_line = decoder.next_out_of_line();
9795            let handles_before = decoder.remaining_handles();
9796            if let Some((inlined, num_bytes, num_handles)) =
9797                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9798            {
9799                let member_inline_size =
9800                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9801                if inlined != (member_inline_size <= 4) {
9802                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9803                }
9804                let inner_offset;
9805                let mut inner_depth = depth.clone();
9806                if inlined {
9807                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9808                    inner_offset = next_offset;
9809                } else {
9810                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9811                    inner_depth.increment()?;
9812                }
9813                let val_ref =
9814                    self.target_bss_authenticated.get_or_insert_with(|| fidl::new_empty!(bool, D));
9815                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
9816                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9817                {
9818                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9819                }
9820                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9821                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9822                }
9823            }
9824
9825            next_offset += envelope_size;
9826            _next_ordinal_to_read += 1;
9827            if next_offset >= end_offset {
9828                return Ok(());
9829            }
9830
9831            // Decode unknown envelopes for gaps in ordinals.
9832            while _next_ordinal_to_read < 5 {
9833                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9834                _next_ordinal_to_read += 1;
9835                next_offset += envelope_size;
9836            }
9837
9838            let next_out_of_line = decoder.next_out_of_line();
9839            let handles_before = decoder.remaining_handles();
9840            if let Some((inlined, num_bytes, num_handles)) =
9841                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9842            {
9843                let member_inline_size =
9844                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9845                if inlined != (member_inline_size <= 4) {
9846                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9847                }
9848                let inner_offset;
9849                let mut inner_depth = depth.clone();
9850                if inlined {
9851                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9852                    inner_offset = next_offset;
9853                } else {
9854                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9855                    inner_depth.increment()?;
9856                }
9857                let val_ref = self.association_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
9858                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
9859                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9860                {
9861                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9862                }
9863                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9864                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9865                }
9866            }
9867
9868            next_offset += envelope_size;
9869            _next_ordinal_to_read += 1;
9870            if next_offset >= end_offset {
9871                return Ok(());
9872            }
9873
9874            // Decode unknown envelopes for gaps in ordinals.
9875            while _next_ordinal_to_read < 6 {
9876                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9877                _next_ordinal_to_read += 1;
9878                next_offset += envelope_size;
9879            }
9880
9881            let next_out_of_line = decoder.next_out_of_line();
9882            let handles_before = decoder.remaining_handles();
9883            if let Some((inlined, num_bytes, num_handles)) =
9884                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9885            {
9886                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9887                if inlined != (member_inline_size <= 4) {
9888                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9889                }
9890                let inner_offset;
9891                let mut inner_depth = depth.clone();
9892                if inlined {
9893                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9894                    inner_offset = next_offset;
9895                } else {
9896                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9897                    inner_depth.increment()?;
9898                }
9899                let val_ref = self.association_ies.get_or_insert_with(|| {
9900                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
9901                });
9902                fidl::decode!(
9903                    fidl::encoding::UnboundedVector<u8>,
9904                    D,
9905                    val_ref,
9906                    decoder,
9907                    inner_offset,
9908                    inner_depth
9909                )?;
9910                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9911                {
9912                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9913                }
9914                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9915                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9916                }
9917            }
9918
9919            next_offset += envelope_size;
9920
9921            // Decode the remaining unknown envelopes.
9922            while next_offset < end_offset {
9923                _next_ordinal_to_read += 1;
9924                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9925                next_offset += envelope_size;
9926            }
9927
9928            Ok(())
9929        }
9930    }
9931
9932    impl WlanFullmacImplIfcRoamResultIndRequest {
9933        #[inline(always)]
9934        fn max_ordinal_present(&self) -> u64 {
9935            if let Some(_) = self.association_ies {
9936                return 6;
9937            }
9938            if let Some(_) = self.association_id {
9939                return 5;
9940            }
9941            if let Some(_) = self.target_bss_authenticated {
9942                return 4;
9943            }
9944            if let Some(_) = self.original_association_maintained {
9945                return 3;
9946            }
9947            if let Some(_) = self.status_code {
9948                return 2;
9949            }
9950            if let Some(_) = self.selected_bssid {
9951                return 1;
9952            }
9953            0
9954        }
9955    }
9956
9957    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcRoamResultIndRequest {
9958        type Borrowed<'a> = &'a Self;
9959        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9960            value
9961        }
9962    }
9963
9964    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcRoamResultIndRequest {
9965        type Owned = Self;
9966
9967        #[inline(always)]
9968        fn inline_align(_context: fidl::encoding::Context) -> usize {
9969            8
9970        }
9971
9972        #[inline(always)]
9973        fn inline_size(_context: fidl::encoding::Context) -> usize {
9974            16
9975        }
9976    }
9977
9978    unsafe impl<D: fidl::encoding::ResourceDialect>
9979        fidl::encoding::Encode<WlanFullmacImplIfcRoamResultIndRequest, D>
9980        for &WlanFullmacImplIfcRoamResultIndRequest
9981    {
9982        unsafe fn encode(
9983            self,
9984            encoder: &mut fidl::encoding::Encoder<'_, D>,
9985            offset: usize,
9986            mut depth: fidl::encoding::Depth,
9987        ) -> fidl::Result<()> {
9988            encoder.debug_check_bounds::<WlanFullmacImplIfcRoamResultIndRequest>(offset);
9989            // Vector header
9990            let max_ordinal: u64 = self.max_ordinal_present();
9991            encoder.write_num(max_ordinal, offset);
9992            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9993            // Calling encoder.out_of_line_offset(0) is not allowed.
9994            if max_ordinal == 0 {
9995                return Ok(());
9996            }
9997            depth.increment()?;
9998            let envelope_size = 8;
9999            let bytes_len = max_ordinal as usize * envelope_size;
10000            #[allow(unused_variables)]
10001            let offset = encoder.out_of_line_offset(bytes_len);
10002            let mut _prev_end_offset: usize = 0;
10003            if 1 > max_ordinal {
10004                return Ok(());
10005            }
10006
10007            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10008            // are envelope_size bytes.
10009            let cur_offset: usize = (1 - 1) * envelope_size;
10010
10011            // Zero reserved fields.
10012            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10013
10014            // Safety:
10015            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10016            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10017            //   envelope_size bytes, there is always sufficient room.
10018            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
10019                self.selected_bssid
10020                    .as_ref()
10021                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
10022                encoder,
10023                offset + cur_offset,
10024                depth,
10025            )?;
10026
10027            _prev_end_offset = cur_offset + envelope_size;
10028            if 2 > max_ordinal {
10029                return Ok(());
10030            }
10031
10032            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10033            // are envelope_size bytes.
10034            let cur_offset: usize = (2 - 1) * envelope_size;
10035
10036            // Zero reserved fields.
10037            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10038
10039            // Safety:
10040            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10041            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10042            //   envelope_size bytes, there is always sufficient room.
10043            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>(
10044            self.status_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
10045            encoder, offset + cur_offset, depth
10046        )?;
10047
10048            _prev_end_offset = cur_offset + envelope_size;
10049            if 3 > max_ordinal {
10050                return Ok(());
10051            }
10052
10053            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10054            // are envelope_size bytes.
10055            let cur_offset: usize = (3 - 1) * envelope_size;
10056
10057            // Zero reserved fields.
10058            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10059
10060            // Safety:
10061            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10062            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10063            //   envelope_size bytes, there is always sufficient room.
10064            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10065                self.original_association_maintained
10066                    .as_ref()
10067                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10068                encoder,
10069                offset + cur_offset,
10070                depth,
10071            )?;
10072
10073            _prev_end_offset = cur_offset + envelope_size;
10074            if 4 > max_ordinal {
10075                return Ok(());
10076            }
10077
10078            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10079            // are envelope_size bytes.
10080            let cur_offset: usize = (4 - 1) * envelope_size;
10081
10082            // Zero reserved fields.
10083            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10084
10085            // Safety:
10086            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10087            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10088            //   envelope_size bytes, there is always sufficient room.
10089            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10090                self.target_bss_authenticated
10091                    .as_ref()
10092                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10093                encoder,
10094                offset + cur_offset,
10095                depth,
10096            )?;
10097
10098            _prev_end_offset = cur_offset + envelope_size;
10099            if 5 > max_ordinal {
10100                return Ok(());
10101            }
10102
10103            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10104            // are envelope_size bytes.
10105            let cur_offset: usize = (5 - 1) * envelope_size;
10106
10107            // Zero reserved fields.
10108            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10109
10110            // Safety:
10111            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10112            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10113            //   envelope_size bytes, there is always sufficient room.
10114            fidl::encoding::encode_in_envelope_optional::<u16, D>(
10115                self.association_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
10116                encoder,
10117                offset + cur_offset,
10118                depth,
10119            )?;
10120
10121            _prev_end_offset = cur_offset + envelope_size;
10122            if 6 > max_ordinal {
10123                return Ok(());
10124            }
10125
10126            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10127            // are envelope_size bytes.
10128            let cur_offset: usize = (6 - 1) * envelope_size;
10129
10130            // Zero reserved fields.
10131            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10132
10133            // Safety:
10134            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10135            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10136            //   envelope_size bytes, there is always sufficient room.
10137            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
10138            self.association_ies.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
10139            encoder, offset + cur_offset, depth
10140        )?;
10141
10142            _prev_end_offset = cur_offset + envelope_size;
10143
10144            Ok(())
10145        }
10146    }
10147
10148    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10149        for WlanFullmacImplIfcRoamResultIndRequest
10150    {
10151        #[inline(always)]
10152        fn new_empty() -> Self {
10153            Self::default()
10154        }
10155
10156        unsafe fn decode(
10157            &mut self,
10158            decoder: &mut fidl::encoding::Decoder<'_, D>,
10159            offset: usize,
10160            mut depth: fidl::encoding::Depth,
10161        ) -> fidl::Result<()> {
10162            decoder.debug_check_bounds::<Self>(offset);
10163            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10164                None => return Err(fidl::Error::NotNullable),
10165                Some(len) => len,
10166            };
10167            // Calling decoder.out_of_line_offset(0) is not allowed.
10168            if len == 0 {
10169                return Ok(());
10170            };
10171            depth.increment()?;
10172            let envelope_size = 8;
10173            let bytes_len = len * envelope_size;
10174            let offset = decoder.out_of_line_offset(bytes_len)?;
10175            // Decode the envelope for each type.
10176            let mut _next_ordinal_to_read = 0;
10177            let mut next_offset = offset;
10178            let end_offset = offset + bytes_len;
10179            _next_ordinal_to_read += 1;
10180            if next_offset >= end_offset {
10181                return Ok(());
10182            }
10183
10184            // Decode unknown envelopes for gaps in ordinals.
10185            while _next_ordinal_to_read < 1 {
10186                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10187                _next_ordinal_to_read += 1;
10188                next_offset += envelope_size;
10189            }
10190
10191            let next_out_of_line = decoder.next_out_of_line();
10192            let handles_before = decoder.remaining_handles();
10193            if let Some((inlined, num_bytes, num_handles)) =
10194                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10195            {
10196                let member_inline_size =
10197                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
10198                        decoder.context,
10199                    );
10200                if inlined != (member_inline_size <= 4) {
10201                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10202                }
10203                let inner_offset;
10204                let mut inner_depth = depth.clone();
10205                if inlined {
10206                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10207                    inner_offset = next_offset;
10208                } else {
10209                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10210                    inner_depth.increment()?;
10211                }
10212                let val_ref = self
10213                    .selected_bssid
10214                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
10215                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
10216                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10217                {
10218                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10219                }
10220                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10221                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10222                }
10223            }
10224
10225            next_offset += envelope_size;
10226            _next_ordinal_to_read += 1;
10227            if next_offset >= end_offset {
10228                return Ok(());
10229            }
10230
10231            // Decode unknown envelopes for gaps in ordinals.
10232            while _next_ordinal_to_read < 2 {
10233                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10234                _next_ordinal_to_read += 1;
10235                next_offset += envelope_size;
10236            }
10237
10238            let next_out_of_line = decoder.next_out_of_line();
10239            let handles_before = decoder.remaining_handles();
10240            if let Some((inlined, num_bytes, num_handles)) =
10241                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10242            {
10243                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10244                if inlined != (member_inline_size <= 4) {
10245                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10246                }
10247                let inner_offset;
10248                let mut inner_depth = depth.clone();
10249                if inlined {
10250                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10251                    inner_offset = next_offset;
10252                } else {
10253                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10254                    inner_depth.increment()?;
10255                }
10256                let val_ref = self.status_code.get_or_insert_with(|| {
10257                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D)
10258                });
10259                fidl::decode!(
10260                    fidl_fuchsia_wlan_ieee80211__common::StatusCode,
10261                    D,
10262                    val_ref,
10263                    decoder,
10264                    inner_offset,
10265                    inner_depth
10266                )?;
10267                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10268                {
10269                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10270                }
10271                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10272                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10273                }
10274            }
10275
10276            next_offset += envelope_size;
10277            _next_ordinal_to_read += 1;
10278            if next_offset >= end_offset {
10279                return Ok(());
10280            }
10281
10282            // Decode unknown envelopes for gaps in ordinals.
10283            while _next_ordinal_to_read < 3 {
10284                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10285                _next_ordinal_to_read += 1;
10286                next_offset += envelope_size;
10287            }
10288
10289            let next_out_of_line = decoder.next_out_of_line();
10290            let handles_before = decoder.remaining_handles();
10291            if let Some((inlined, num_bytes, num_handles)) =
10292                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10293            {
10294                let member_inline_size =
10295                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10296                if inlined != (member_inline_size <= 4) {
10297                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10298                }
10299                let inner_offset;
10300                let mut inner_depth = depth.clone();
10301                if inlined {
10302                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10303                    inner_offset = next_offset;
10304                } else {
10305                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10306                    inner_depth.increment()?;
10307                }
10308                let val_ref = self
10309                    .original_association_maintained
10310                    .get_or_insert_with(|| fidl::new_empty!(bool, D));
10311                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
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 < 4 {
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 =
10354                    self.target_bss_authenticated.get_or_insert_with(|| fidl::new_empty!(bool, D));
10355                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10356                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10357                {
10358                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10359                }
10360                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10361                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10362                }
10363            }
10364
10365            next_offset += envelope_size;
10366            _next_ordinal_to_read += 1;
10367            if next_offset >= end_offset {
10368                return Ok(());
10369            }
10370
10371            // Decode unknown envelopes for gaps in ordinals.
10372            while _next_ordinal_to_read < 5 {
10373                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10374                _next_ordinal_to_read += 1;
10375                next_offset += envelope_size;
10376            }
10377
10378            let next_out_of_line = decoder.next_out_of_line();
10379            let handles_before = decoder.remaining_handles();
10380            if let Some((inlined, num_bytes, num_handles)) =
10381                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10382            {
10383                let member_inline_size =
10384                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10385                if inlined != (member_inline_size <= 4) {
10386                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10387                }
10388                let inner_offset;
10389                let mut inner_depth = depth.clone();
10390                if inlined {
10391                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10392                    inner_offset = next_offset;
10393                } else {
10394                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10395                    inner_depth.increment()?;
10396                }
10397                let val_ref = self.association_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
10398                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
10399                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10400                {
10401                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10402                }
10403                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10404                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10405                }
10406            }
10407
10408            next_offset += envelope_size;
10409            _next_ordinal_to_read += 1;
10410            if next_offset >= end_offset {
10411                return Ok(());
10412            }
10413
10414            // Decode unknown envelopes for gaps in ordinals.
10415            while _next_ordinal_to_read < 6 {
10416                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10417                _next_ordinal_to_read += 1;
10418                next_offset += envelope_size;
10419            }
10420
10421            let next_out_of_line = decoder.next_out_of_line();
10422            let handles_before = decoder.remaining_handles();
10423            if let Some((inlined, num_bytes, num_handles)) =
10424                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10425            {
10426                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10427                if inlined != (member_inline_size <= 4) {
10428                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10429                }
10430                let inner_offset;
10431                let mut inner_depth = depth.clone();
10432                if inlined {
10433                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10434                    inner_offset = next_offset;
10435                } else {
10436                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10437                    inner_depth.increment()?;
10438                }
10439                let val_ref = self.association_ies.get_or_insert_with(|| {
10440                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
10441                });
10442                fidl::decode!(
10443                    fidl::encoding::UnboundedVector<u8>,
10444                    D,
10445                    val_ref,
10446                    decoder,
10447                    inner_offset,
10448                    inner_depth
10449                )?;
10450                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10451                {
10452                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10453                }
10454                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10455                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10456                }
10457            }
10458
10459            next_offset += envelope_size;
10460
10461            // Decode the remaining unknown envelopes.
10462            while next_offset < end_offset {
10463                _next_ordinal_to_read += 1;
10464                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10465                next_offset += envelope_size;
10466            }
10467
10468            Ok(())
10469        }
10470    }
10471
10472    impl WlanFullmacImplIfcRoamStartIndRequest {
10473        #[inline(always)]
10474        fn max_ordinal_present(&self) -> u64 {
10475            if let Some(_) = self.original_association_maintained {
10476                return 3;
10477            }
10478            if let Some(_) = self.selected_bss {
10479                return 2;
10480            }
10481            if let Some(_) = self.selected_bssid {
10482                return 1;
10483            }
10484            0
10485        }
10486    }
10487
10488    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcRoamStartIndRequest {
10489        type Borrowed<'a> = &'a Self;
10490        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10491            value
10492        }
10493    }
10494
10495    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcRoamStartIndRequest {
10496        type Owned = Self;
10497
10498        #[inline(always)]
10499        fn inline_align(_context: fidl::encoding::Context) -> usize {
10500            8
10501        }
10502
10503        #[inline(always)]
10504        fn inline_size(_context: fidl::encoding::Context) -> usize {
10505            16
10506        }
10507    }
10508
10509    unsafe impl<D: fidl::encoding::ResourceDialect>
10510        fidl::encoding::Encode<WlanFullmacImplIfcRoamStartIndRequest, D>
10511        for &WlanFullmacImplIfcRoamStartIndRequest
10512    {
10513        unsafe fn encode(
10514            self,
10515            encoder: &mut fidl::encoding::Encoder<'_, D>,
10516            offset: usize,
10517            mut depth: fidl::encoding::Depth,
10518        ) -> fidl::Result<()> {
10519            encoder.debug_check_bounds::<WlanFullmacImplIfcRoamStartIndRequest>(offset);
10520            // Vector header
10521            let max_ordinal: u64 = self.max_ordinal_present();
10522            encoder.write_num(max_ordinal, offset);
10523            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10524            // Calling encoder.out_of_line_offset(0) is not allowed.
10525            if max_ordinal == 0 {
10526                return Ok(());
10527            }
10528            depth.increment()?;
10529            let envelope_size = 8;
10530            let bytes_len = max_ordinal as usize * envelope_size;
10531            #[allow(unused_variables)]
10532            let offset = encoder.out_of_line_offset(bytes_len);
10533            let mut _prev_end_offset: usize = 0;
10534            if 1 > max_ordinal {
10535                return Ok(());
10536            }
10537
10538            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10539            // are envelope_size bytes.
10540            let cur_offset: usize = (1 - 1) * envelope_size;
10541
10542            // Zero reserved fields.
10543            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10544
10545            // Safety:
10546            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10547            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10548            //   envelope_size bytes, there is always sufficient room.
10549            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
10550                self.selected_bssid
10551                    .as_ref()
10552                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
10553                encoder,
10554                offset + cur_offset,
10555                depth,
10556            )?;
10557
10558            _prev_end_offset = cur_offset + envelope_size;
10559            if 2 > max_ordinal {
10560                return Ok(());
10561            }
10562
10563            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10564            // are envelope_size bytes.
10565            let cur_offset: usize = (2 - 1) * envelope_size;
10566
10567            // Zero reserved fields.
10568            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10569
10570            // Safety:
10571            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10572            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10573            //   envelope_size bytes, there is always sufficient room.
10574            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common__common::BssDescription, D>(
10575            self.selected_bss.as_ref().map(<fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow),
10576            encoder, offset + cur_offset, depth
10577        )?;
10578
10579            _prev_end_offset = cur_offset + envelope_size;
10580            if 3 > max_ordinal {
10581                return Ok(());
10582            }
10583
10584            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10585            // are envelope_size bytes.
10586            let cur_offset: usize = (3 - 1) * envelope_size;
10587
10588            // Zero reserved fields.
10589            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10590
10591            // Safety:
10592            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10593            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10594            //   envelope_size bytes, there is always sufficient room.
10595            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10596                self.original_association_maintained
10597                    .as_ref()
10598                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10599                encoder,
10600                offset + cur_offset,
10601                depth,
10602            )?;
10603
10604            _prev_end_offset = cur_offset + envelope_size;
10605
10606            Ok(())
10607        }
10608    }
10609
10610    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10611        for WlanFullmacImplIfcRoamStartIndRequest
10612    {
10613        #[inline(always)]
10614        fn new_empty() -> Self {
10615            Self::default()
10616        }
10617
10618        unsafe fn decode(
10619            &mut self,
10620            decoder: &mut fidl::encoding::Decoder<'_, D>,
10621            offset: usize,
10622            mut depth: fidl::encoding::Depth,
10623        ) -> fidl::Result<()> {
10624            decoder.debug_check_bounds::<Self>(offset);
10625            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10626                None => return Err(fidl::Error::NotNullable),
10627                Some(len) => len,
10628            };
10629            // Calling decoder.out_of_line_offset(0) is not allowed.
10630            if len == 0 {
10631                return Ok(());
10632            };
10633            depth.increment()?;
10634            let envelope_size = 8;
10635            let bytes_len = len * envelope_size;
10636            let offset = decoder.out_of_line_offset(bytes_len)?;
10637            // Decode the envelope for each type.
10638            let mut _next_ordinal_to_read = 0;
10639            let mut next_offset = offset;
10640            let end_offset = offset + bytes_len;
10641            _next_ordinal_to_read += 1;
10642            if next_offset >= end_offset {
10643                return Ok(());
10644            }
10645
10646            // Decode unknown envelopes for gaps in ordinals.
10647            while _next_ordinal_to_read < 1 {
10648                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10649                _next_ordinal_to_read += 1;
10650                next_offset += envelope_size;
10651            }
10652
10653            let next_out_of_line = decoder.next_out_of_line();
10654            let handles_before = decoder.remaining_handles();
10655            if let Some((inlined, num_bytes, num_handles)) =
10656                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10657            {
10658                let member_inline_size =
10659                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
10660                        decoder.context,
10661                    );
10662                if inlined != (member_inline_size <= 4) {
10663                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10664                }
10665                let inner_offset;
10666                let mut inner_depth = depth.clone();
10667                if inlined {
10668                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10669                    inner_offset = next_offset;
10670                } else {
10671                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10672                    inner_depth.increment()?;
10673                }
10674                let val_ref = self
10675                    .selected_bssid
10676                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
10677                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
10678                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10679                {
10680                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10681                }
10682                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10683                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10684                }
10685            }
10686
10687            next_offset += envelope_size;
10688            _next_ordinal_to_read += 1;
10689            if next_offset >= end_offset {
10690                return Ok(());
10691            }
10692
10693            // Decode unknown envelopes for gaps in ordinals.
10694            while _next_ordinal_to_read < 2 {
10695                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10696                _next_ordinal_to_read += 1;
10697                next_offset += envelope_size;
10698            }
10699
10700            let next_out_of_line = decoder.next_out_of_line();
10701            let handles_before = decoder.remaining_handles();
10702            if let Some((inlined, num_bytes, num_handles)) =
10703                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10704            {
10705                let member_inline_size = <fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10706                if inlined != (member_inline_size <= 4) {
10707                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10708                }
10709                let inner_offset;
10710                let mut inner_depth = depth.clone();
10711                if inlined {
10712                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10713                    inner_offset = next_offset;
10714                } else {
10715                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10716                    inner_depth.increment()?;
10717                }
10718                let val_ref = self.selected_bss.get_or_insert_with(|| {
10719                    fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssDescription, D)
10720                });
10721                fidl::decode!(
10722                    fidl_fuchsia_wlan_common__common::BssDescription,
10723                    D,
10724                    val_ref,
10725                    decoder,
10726                    inner_offset,
10727                    inner_depth
10728                )?;
10729                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10730                {
10731                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10732                }
10733                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10734                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10735                }
10736            }
10737
10738            next_offset += envelope_size;
10739            _next_ordinal_to_read += 1;
10740            if next_offset >= end_offset {
10741                return Ok(());
10742            }
10743
10744            // Decode unknown envelopes for gaps in ordinals.
10745            while _next_ordinal_to_read < 3 {
10746                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10747                _next_ordinal_to_read += 1;
10748                next_offset += envelope_size;
10749            }
10750
10751            let next_out_of_line = decoder.next_out_of_line();
10752            let handles_before = decoder.remaining_handles();
10753            if let Some((inlined, num_bytes, num_handles)) =
10754                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10755            {
10756                let member_inline_size =
10757                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10758                if inlined != (member_inline_size <= 4) {
10759                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10760                }
10761                let inner_offset;
10762                let mut inner_depth = depth.clone();
10763                if inlined {
10764                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10765                    inner_offset = next_offset;
10766                } else {
10767                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10768                    inner_depth.increment()?;
10769                }
10770                let val_ref = self
10771                    .original_association_maintained
10772                    .get_or_insert_with(|| fidl::new_empty!(bool, D));
10773                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10774                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10775                {
10776                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10777                }
10778                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10779                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10780                }
10781            }
10782
10783            next_offset += envelope_size;
10784
10785            // Decode the remaining unknown envelopes.
10786            while next_offset < end_offset {
10787                _next_ordinal_to_read += 1;
10788                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10789                next_offset += envelope_size;
10790            }
10791
10792            Ok(())
10793        }
10794    }
10795
10796    impl WlanFullmacImplIfcSaeHandshakeIndRequest {
10797        #[inline(always)]
10798        fn max_ordinal_present(&self) -> u64 {
10799            if let Some(_) = self.peer_sta_address {
10800                return 1;
10801            }
10802            0
10803        }
10804    }
10805
10806    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcSaeHandshakeIndRequest {
10807        type Borrowed<'a> = &'a Self;
10808        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10809            value
10810        }
10811    }
10812
10813    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcSaeHandshakeIndRequest {
10814        type Owned = Self;
10815
10816        #[inline(always)]
10817        fn inline_align(_context: fidl::encoding::Context) -> usize {
10818            8
10819        }
10820
10821        #[inline(always)]
10822        fn inline_size(_context: fidl::encoding::Context) -> usize {
10823            16
10824        }
10825    }
10826
10827    unsafe impl<D: fidl::encoding::ResourceDialect>
10828        fidl::encoding::Encode<WlanFullmacImplIfcSaeHandshakeIndRequest, D>
10829        for &WlanFullmacImplIfcSaeHandshakeIndRequest
10830    {
10831        unsafe fn encode(
10832            self,
10833            encoder: &mut fidl::encoding::Encoder<'_, D>,
10834            offset: usize,
10835            mut depth: fidl::encoding::Depth,
10836        ) -> fidl::Result<()> {
10837            encoder.debug_check_bounds::<WlanFullmacImplIfcSaeHandshakeIndRequest>(offset);
10838            // Vector header
10839            let max_ordinal: u64 = self.max_ordinal_present();
10840            encoder.write_num(max_ordinal, offset);
10841            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10842            // Calling encoder.out_of_line_offset(0) is not allowed.
10843            if max_ordinal == 0 {
10844                return Ok(());
10845            }
10846            depth.increment()?;
10847            let envelope_size = 8;
10848            let bytes_len = max_ordinal as usize * envelope_size;
10849            #[allow(unused_variables)]
10850            let offset = encoder.out_of_line_offset(bytes_len);
10851            let mut _prev_end_offset: usize = 0;
10852            if 1 > max_ordinal {
10853                return Ok(());
10854            }
10855
10856            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10857            // are envelope_size bytes.
10858            let cur_offset: usize = (1 - 1) * envelope_size;
10859
10860            // Zero reserved fields.
10861            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10862
10863            // Safety:
10864            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10865            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10866            //   envelope_size bytes, there is always sufficient room.
10867            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
10868                self.peer_sta_address
10869                    .as_ref()
10870                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
10871                encoder,
10872                offset + cur_offset,
10873                depth,
10874            )?;
10875
10876            _prev_end_offset = cur_offset + envelope_size;
10877
10878            Ok(())
10879        }
10880    }
10881
10882    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10883        for WlanFullmacImplIfcSaeHandshakeIndRequest
10884    {
10885        #[inline(always)]
10886        fn new_empty() -> Self {
10887            Self::default()
10888        }
10889
10890        unsafe fn decode(
10891            &mut self,
10892            decoder: &mut fidl::encoding::Decoder<'_, D>,
10893            offset: usize,
10894            mut depth: fidl::encoding::Depth,
10895        ) -> fidl::Result<()> {
10896            decoder.debug_check_bounds::<Self>(offset);
10897            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10898                None => return Err(fidl::Error::NotNullable),
10899                Some(len) => len,
10900            };
10901            // Calling decoder.out_of_line_offset(0) is not allowed.
10902            if len == 0 {
10903                return Ok(());
10904            };
10905            depth.increment()?;
10906            let envelope_size = 8;
10907            let bytes_len = len * envelope_size;
10908            let offset = decoder.out_of_line_offset(bytes_len)?;
10909            // Decode the envelope for each type.
10910            let mut _next_ordinal_to_read = 0;
10911            let mut next_offset = offset;
10912            let end_offset = offset + bytes_len;
10913            _next_ordinal_to_read += 1;
10914            if next_offset >= end_offset {
10915                return Ok(());
10916            }
10917
10918            // Decode unknown envelopes for gaps in ordinals.
10919            while _next_ordinal_to_read < 1 {
10920                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10921                _next_ordinal_to_read += 1;
10922                next_offset += envelope_size;
10923            }
10924
10925            let next_out_of_line = decoder.next_out_of_line();
10926            let handles_before = decoder.remaining_handles();
10927            if let Some((inlined, num_bytes, num_handles)) =
10928                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10929            {
10930                let member_inline_size =
10931                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
10932                        decoder.context,
10933                    );
10934                if inlined != (member_inline_size <= 4) {
10935                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10936                }
10937                let inner_offset;
10938                let mut inner_depth = depth.clone();
10939                if inlined {
10940                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10941                    inner_offset = next_offset;
10942                } else {
10943                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10944                    inner_depth.increment()?;
10945                }
10946                let val_ref = self
10947                    .peer_sta_address
10948                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
10949                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
10950                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10951                {
10952                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10953                }
10954                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10955                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10956                }
10957            }
10958
10959            next_offset += envelope_size;
10960
10961            // Decode the remaining unknown envelopes.
10962            while next_offset < end_offset {
10963                _next_ordinal_to_read += 1;
10964                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10965                next_offset += envelope_size;
10966            }
10967
10968            Ok(())
10969        }
10970    }
10971
10972    impl WlanFullmacImplIfcStartConfRequest {
10973        #[inline(always)]
10974        fn max_ordinal_present(&self) -> u64 {
10975            if let Some(_) = self.result_code {
10976                return 1;
10977            }
10978            0
10979        }
10980    }
10981
10982    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcStartConfRequest {
10983        type Borrowed<'a> = &'a Self;
10984        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10985            value
10986        }
10987    }
10988
10989    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcStartConfRequest {
10990        type Owned = Self;
10991
10992        #[inline(always)]
10993        fn inline_align(_context: fidl::encoding::Context) -> usize {
10994            8
10995        }
10996
10997        #[inline(always)]
10998        fn inline_size(_context: fidl::encoding::Context) -> usize {
10999            16
11000        }
11001    }
11002
11003    unsafe impl<D: fidl::encoding::ResourceDialect>
11004        fidl::encoding::Encode<WlanFullmacImplIfcStartConfRequest, D>
11005        for &WlanFullmacImplIfcStartConfRequest
11006    {
11007        unsafe fn encode(
11008            self,
11009            encoder: &mut fidl::encoding::Encoder<'_, D>,
11010            offset: usize,
11011            mut depth: fidl::encoding::Depth,
11012        ) -> fidl::Result<()> {
11013            encoder.debug_check_bounds::<WlanFullmacImplIfcStartConfRequest>(offset);
11014            // Vector header
11015            let max_ordinal: u64 = self.max_ordinal_present();
11016            encoder.write_num(max_ordinal, offset);
11017            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11018            // Calling encoder.out_of_line_offset(0) is not allowed.
11019            if max_ordinal == 0 {
11020                return Ok(());
11021            }
11022            depth.increment()?;
11023            let envelope_size = 8;
11024            let bytes_len = max_ordinal as usize * envelope_size;
11025            #[allow(unused_variables)]
11026            let offset = encoder.out_of_line_offset(bytes_len);
11027            let mut _prev_end_offset: usize = 0;
11028            if 1 > max_ordinal {
11029                return Ok(());
11030            }
11031
11032            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11033            // are envelope_size bytes.
11034            let cur_offset: usize = (1 - 1) * envelope_size;
11035
11036            // Zero reserved fields.
11037            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11038
11039            // Safety:
11040            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11041            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11042            //   envelope_size bytes, there is always sufficient room.
11043            fidl::encoding::encode_in_envelope_optional::<StartResult, D>(
11044                self.result_code
11045                    .as_ref()
11046                    .map(<StartResult as fidl::encoding::ValueTypeMarker>::borrow),
11047                encoder,
11048                offset + cur_offset,
11049                depth,
11050            )?;
11051
11052            _prev_end_offset = cur_offset + envelope_size;
11053
11054            Ok(())
11055        }
11056    }
11057
11058    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11059        for WlanFullmacImplIfcStartConfRequest
11060    {
11061        #[inline(always)]
11062        fn new_empty() -> Self {
11063            Self::default()
11064        }
11065
11066        unsafe fn decode(
11067            &mut self,
11068            decoder: &mut fidl::encoding::Decoder<'_, D>,
11069            offset: usize,
11070            mut depth: fidl::encoding::Depth,
11071        ) -> fidl::Result<()> {
11072            decoder.debug_check_bounds::<Self>(offset);
11073            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11074                None => return Err(fidl::Error::NotNullable),
11075                Some(len) => len,
11076            };
11077            // Calling decoder.out_of_line_offset(0) is not allowed.
11078            if len == 0 {
11079                return Ok(());
11080            };
11081            depth.increment()?;
11082            let envelope_size = 8;
11083            let bytes_len = len * envelope_size;
11084            let offset = decoder.out_of_line_offset(bytes_len)?;
11085            // Decode the envelope for each type.
11086            let mut _next_ordinal_to_read = 0;
11087            let mut next_offset = offset;
11088            let end_offset = offset + bytes_len;
11089            _next_ordinal_to_read += 1;
11090            if next_offset >= end_offset {
11091                return Ok(());
11092            }
11093
11094            // Decode unknown envelopes for gaps in ordinals.
11095            while _next_ordinal_to_read < 1 {
11096                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11097                _next_ordinal_to_read += 1;
11098                next_offset += envelope_size;
11099            }
11100
11101            let next_out_of_line = decoder.next_out_of_line();
11102            let handles_before = decoder.remaining_handles();
11103            if let Some((inlined, num_bytes, num_handles)) =
11104                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11105            {
11106                let member_inline_size =
11107                    <StartResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11108                if inlined != (member_inline_size <= 4) {
11109                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11110                }
11111                let inner_offset;
11112                let mut inner_depth = depth.clone();
11113                if inlined {
11114                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11115                    inner_offset = next_offset;
11116                } else {
11117                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11118                    inner_depth.increment()?;
11119                }
11120                let val_ref =
11121                    self.result_code.get_or_insert_with(|| fidl::new_empty!(StartResult, D));
11122                fidl::decode!(StartResult, D, val_ref, decoder, inner_offset, inner_depth)?;
11123                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11124                {
11125                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11126                }
11127                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11128                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11129                }
11130            }
11131
11132            next_offset += envelope_size;
11133
11134            // Decode the remaining unknown envelopes.
11135            while next_offset < end_offset {
11136                _next_ordinal_to_read += 1;
11137                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11138                next_offset += envelope_size;
11139            }
11140
11141            Ok(())
11142        }
11143    }
11144
11145    impl WlanFullmacImplIfcStopConfRequest {
11146        #[inline(always)]
11147        fn max_ordinal_present(&self) -> u64 {
11148            if let Some(_) = self.result_code {
11149                return 1;
11150            }
11151            0
11152        }
11153    }
11154
11155    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcStopConfRequest {
11156        type Borrowed<'a> = &'a Self;
11157        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11158            value
11159        }
11160    }
11161
11162    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcStopConfRequest {
11163        type Owned = Self;
11164
11165        #[inline(always)]
11166        fn inline_align(_context: fidl::encoding::Context) -> usize {
11167            8
11168        }
11169
11170        #[inline(always)]
11171        fn inline_size(_context: fidl::encoding::Context) -> usize {
11172            16
11173        }
11174    }
11175
11176    unsafe impl<D: fidl::encoding::ResourceDialect>
11177        fidl::encoding::Encode<WlanFullmacImplIfcStopConfRequest, D>
11178        for &WlanFullmacImplIfcStopConfRequest
11179    {
11180        unsafe fn encode(
11181            self,
11182            encoder: &mut fidl::encoding::Encoder<'_, D>,
11183            offset: usize,
11184            mut depth: fidl::encoding::Depth,
11185        ) -> fidl::Result<()> {
11186            encoder.debug_check_bounds::<WlanFullmacImplIfcStopConfRequest>(offset);
11187            // Vector header
11188            let max_ordinal: u64 = self.max_ordinal_present();
11189            encoder.write_num(max_ordinal, offset);
11190            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11191            // Calling encoder.out_of_line_offset(0) is not allowed.
11192            if max_ordinal == 0 {
11193                return Ok(());
11194            }
11195            depth.increment()?;
11196            let envelope_size = 8;
11197            let bytes_len = max_ordinal as usize * envelope_size;
11198            #[allow(unused_variables)]
11199            let offset = encoder.out_of_line_offset(bytes_len);
11200            let mut _prev_end_offset: usize = 0;
11201            if 1 > max_ordinal {
11202                return Ok(());
11203            }
11204
11205            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11206            // are envelope_size bytes.
11207            let cur_offset: usize = (1 - 1) * envelope_size;
11208
11209            // Zero reserved fields.
11210            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11211
11212            // Safety:
11213            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11214            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11215            //   envelope_size bytes, there is always sufficient room.
11216            fidl::encoding::encode_in_envelope_optional::<StopResult, D>(
11217                self.result_code
11218                    .as_ref()
11219                    .map(<StopResult as fidl::encoding::ValueTypeMarker>::borrow),
11220                encoder,
11221                offset + cur_offset,
11222                depth,
11223            )?;
11224
11225            _prev_end_offset = cur_offset + envelope_size;
11226
11227            Ok(())
11228        }
11229    }
11230
11231    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11232        for WlanFullmacImplIfcStopConfRequest
11233    {
11234        #[inline(always)]
11235        fn new_empty() -> Self {
11236            Self::default()
11237        }
11238
11239        unsafe fn decode(
11240            &mut self,
11241            decoder: &mut fidl::encoding::Decoder<'_, D>,
11242            offset: usize,
11243            mut depth: fidl::encoding::Depth,
11244        ) -> fidl::Result<()> {
11245            decoder.debug_check_bounds::<Self>(offset);
11246            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11247                None => return Err(fidl::Error::NotNullable),
11248                Some(len) => len,
11249            };
11250            // Calling decoder.out_of_line_offset(0) is not allowed.
11251            if len == 0 {
11252                return Ok(());
11253            };
11254            depth.increment()?;
11255            let envelope_size = 8;
11256            let bytes_len = len * envelope_size;
11257            let offset = decoder.out_of_line_offset(bytes_len)?;
11258            // Decode the envelope for each type.
11259            let mut _next_ordinal_to_read = 0;
11260            let mut next_offset = offset;
11261            let end_offset = offset + bytes_len;
11262            _next_ordinal_to_read += 1;
11263            if next_offset >= end_offset {
11264                return Ok(());
11265            }
11266
11267            // Decode unknown envelopes for gaps in ordinals.
11268            while _next_ordinal_to_read < 1 {
11269                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11270                _next_ordinal_to_read += 1;
11271                next_offset += envelope_size;
11272            }
11273
11274            let next_out_of_line = decoder.next_out_of_line();
11275            let handles_before = decoder.remaining_handles();
11276            if let Some((inlined, num_bytes, num_handles)) =
11277                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11278            {
11279                let member_inline_size =
11280                    <StopResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11281                if inlined != (member_inline_size <= 4) {
11282                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11283                }
11284                let inner_offset;
11285                let mut inner_depth = depth.clone();
11286                if inlined {
11287                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11288                    inner_offset = next_offset;
11289                } else {
11290                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11291                    inner_depth.increment()?;
11292                }
11293                let val_ref =
11294                    self.result_code.get_or_insert_with(|| fidl::new_empty!(StopResult, D));
11295                fidl::decode!(StopResult, D, val_ref, decoder, inner_offset, inner_depth)?;
11296                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11297                {
11298                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11299                }
11300                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11301                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11302                }
11303            }
11304
11305            next_offset += envelope_size;
11306
11307            // Decode the remaining unknown envelopes.
11308            while next_offset < end_offset {
11309                _next_ordinal_to_read += 1;
11310                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11311                next_offset += envelope_size;
11312            }
11313
11314            Ok(())
11315        }
11316    }
11317
11318    impl WlanFullmacImplOnLinkStateChangedRequest {
11319        #[inline(always)]
11320        fn max_ordinal_present(&self) -> u64 {
11321            if let Some(_) = self.online {
11322                return 1;
11323            }
11324            0
11325        }
11326    }
11327
11328    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplOnLinkStateChangedRequest {
11329        type Borrowed<'a> = &'a Self;
11330        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11331            value
11332        }
11333    }
11334
11335    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplOnLinkStateChangedRequest {
11336        type Owned = Self;
11337
11338        #[inline(always)]
11339        fn inline_align(_context: fidl::encoding::Context) -> usize {
11340            8
11341        }
11342
11343        #[inline(always)]
11344        fn inline_size(_context: fidl::encoding::Context) -> usize {
11345            16
11346        }
11347    }
11348
11349    unsafe impl<D: fidl::encoding::ResourceDialect>
11350        fidl::encoding::Encode<WlanFullmacImplOnLinkStateChangedRequest, D>
11351        for &WlanFullmacImplOnLinkStateChangedRequest
11352    {
11353        unsafe fn encode(
11354            self,
11355            encoder: &mut fidl::encoding::Encoder<'_, D>,
11356            offset: usize,
11357            mut depth: fidl::encoding::Depth,
11358        ) -> fidl::Result<()> {
11359            encoder.debug_check_bounds::<WlanFullmacImplOnLinkStateChangedRequest>(offset);
11360            // Vector header
11361            let max_ordinal: u64 = self.max_ordinal_present();
11362            encoder.write_num(max_ordinal, offset);
11363            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11364            // Calling encoder.out_of_line_offset(0) is not allowed.
11365            if max_ordinal == 0 {
11366                return Ok(());
11367            }
11368            depth.increment()?;
11369            let envelope_size = 8;
11370            let bytes_len = max_ordinal as usize * envelope_size;
11371            #[allow(unused_variables)]
11372            let offset = encoder.out_of_line_offset(bytes_len);
11373            let mut _prev_end_offset: usize = 0;
11374            if 1 > max_ordinal {
11375                return Ok(());
11376            }
11377
11378            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11379            // are envelope_size bytes.
11380            let cur_offset: usize = (1 - 1) * envelope_size;
11381
11382            // Zero reserved fields.
11383            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11384
11385            // Safety:
11386            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11387            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11388            //   envelope_size bytes, there is always sufficient room.
11389            fidl::encoding::encode_in_envelope_optional::<bool, D>(
11390                self.online.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
11391                encoder,
11392                offset + cur_offset,
11393                depth,
11394            )?;
11395
11396            _prev_end_offset = cur_offset + envelope_size;
11397
11398            Ok(())
11399        }
11400    }
11401
11402    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11403        for WlanFullmacImplOnLinkStateChangedRequest
11404    {
11405        #[inline(always)]
11406        fn new_empty() -> Self {
11407            Self::default()
11408        }
11409
11410        unsafe fn decode(
11411            &mut self,
11412            decoder: &mut fidl::encoding::Decoder<'_, D>,
11413            offset: usize,
11414            mut depth: fidl::encoding::Depth,
11415        ) -> fidl::Result<()> {
11416            decoder.debug_check_bounds::<Self>(offset);
11417            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11418                None => return Err(fidl::Error::NotNullable),
11419                Some(len) => len,
11420            };
11421            // Calling decoder.out_of_line_offset(0) is not allowed.
11422            if len == 0 {
11423                return Ok(());
11424            };
11425            depth.increment()?;
11426            let envelope_size = 8;
11427            let bytes_len = len * envelope_size;
11428            let offset = decoder.out_of_line_offset(bytes_len)?;
11429            // Decode the envelope for each type.
11430            let mut _next_ordinal_to_read = 0;
11431            let mut next_offset = offset;
11432            let end_offset = offset + bytes_len;
11433            _next_ordinal_to_read += 1;
11434            if next_offset >= end_offset {
11435                return Ok(());
11436            }
11437
11438            // Decode unknown envelopes for gaps in ordinals.
11439            while _next_ordinal_to_read < 1 {
11440                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11441                _next_ordinal_to_read += 1;
11442                next_offset += envelope_size;
11443            }
11444
11445            let next_out_of_line = decoder.next_out_of_line();
11446            let handles_before = decoder.remaining_handles();
11447            if let Some((inlined, num_bytes, num_handles)) =
11448                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11449            {
11450                let member_inline_size =
11451                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11452                if inlined != (member_inline_size <= 4) {
11453                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11454                }
11455                let inner_offset;
11456                let mut inner_depth = depth.clone();
11457                if inlined {
11458                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11459                    inner_offset = next_offset;
11460                } else {
11461                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11462                    inner_depth.increment()?;
11463                }
11464                let val_ref = self.online.get_or_insert_with(|| fidl::new_empty!(bool, D));
11465                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
11466                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11467                {
11468                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11469                }
11470                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11471                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11472                }
11473            }
11474
11475            next_offset += envelope_size;
11476
11477            // Decode the remaining unknown envelopes.
11478            while next_offset < end_offset {
11479                _next_ordinal_to_read += 1;
11480                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11481                next_offset += envelope_size;
11482            }
11483
11484            Ok(())
11485        }
11486    }
11487
11488    impl WlanFullmacImplReconnectRequest {
11489        #[inline(always)]
11490        fn max_ordinal_present(&self) -> u64 {
11491            if let Some(_) = self.peer_sta_address {
11492                return 1;
11493            }
11494            0
11495        }
11496    }
11497
11498    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplReconnectRequest {
11499        type Borrowed<'a> = &'a Self;
11500        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11501            value
11502        }
11503    }
11504
11505    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplReconnectRequest {
11506        type Owned = Self;
11507
11508        #[inline(always)]
11509        fn inline_align(_context: fidl::encoding::Context) -> usize {
11510            8
11511        }
11512
11513        #[inline(always)]
11514        fn inline_size(_context: fidl::encoding::Context) -> usize {
11515            16
11516        }
11517    }
11518
11519    unsafe impl<D: fidl::encoding::ResourceDialect>
11520        fidl::encoding::Encode<WlanFullmacImplReconnectRequest, D>
11521        for &WlanFullmacImplReconnectRequest
11522    {
11523        unsafe fn encode(
11524            self,
11525            encoder: &mut fidl::encoding::Encoder<'_, D>,
11526            offset: usize,
11527            mut depth: fidl::encoding::Depth,
11528        ) -> fidl::Result<()> {
11529            encoder.debug_check_bounds::<WlanFullmacImplReconnectRequest>(offset);
11530            // Vector header
11531            let max_ordinal: u64 = self.max_ordinal_present();
11532            encoder.write_num(max_ordinal, offset);
11533            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11534            // Calling encoder.out_of_line_offset(0) is not allowed.
11535            if max_ordinal == 0 {
11536                return Ok(());
11537            }
11538            depth.increment()?;
11539            let envelope_size = 8;
11540            let bytes_len = max_ordinal as usize * envelope_size;
11541            #[allow(unused_variables)]
11542            let offset = encoder.out_of_line_offset(bytes_len);
11543            let mut _prev_end_offset: usize = 0;
11544            if 1 > max_ordinal {
11545                return Ok(());
11546            }
11547
11548            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11549            // are envelope_size bytes.
11550            let cur_offset: usize = (1 - 1) * envelope_size;
11551
11552            // Zero reserved fields.
11553            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11554
11555            // Safety:
11556            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11557            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11558            //   envelope_size bytes, there is always sufficient room.
11559            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
11560                self.peer_sta_address
11561                    .as_ref()
11562                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
11563                encoder,
11564                offset + cur_offset,
11565                depth,
11566            )?;
11567
11568            _prev_end_offset = cur_offset + envelope_size;
11569
11570            Ok(())
11571        }
11572    }
11573
11574    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11575        for WlanFullmacImplReconnectRequest
11576    {
11577        #[inline(always)]
11578        fn new_empty() -> Self {
11579            Self::default()
11580        }
11581
11582        unsafe fn decode(
11583            &mut self,
11584            decoder: &mut fidl::encoding::Decoder<'_, D>,
11585            offset: usize,
11586            mut depth: fidl::encoding::Depth,
11587        ) -> fidl::Result<()> {
11588            decoder.debug_check_bounds::<Self>(offset);
11589            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11590                None => return Err(fidl::Error::NotNullable),
11591                Some(len) => len,
11592            };
11593            // Calling decoder.out_of_line_offset(0) is not allowed.
11594            if len == 0 {
11595                return Ok(());
11596            };
11597            depth.increment()?;
11598            let envelope_size = 8;
11599            let bytes_len = len * envelope_size;
11600            let offset = decoder.out_of_line_offset(bytes_len)?;
11601            // Decode the envelope for each type.
11602            let mut _next_ordinal_to_read = 0;
11603            let mut next_offset = offset;
11604            let end_offset = offset + bytes_len;
11605            _next_ordinal_to_read += 1;
11606            if next_offset >= end_offset {
11607                return Ok(());
11608            }
11609
11610            // Decode unknown envelopes for gaps in ordinals.
11611            while _next_ordinal_to_read < 1 {
11612                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11613                _next_ordinal_to_read += 1;
11614                next_offset += envelope_size;
11615            }
11616
11617            let next_out_of_line = decoder.next_out_of_line();
11618            let handles_before = decoder.remaining_handles();
11619            if let Some((inlined, num_bytes, num_handles)) =
11620                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11621            {
11622                let member_inline_size =
11623                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
11624                        decoder.context,
11625                    );
11626                if inlined != (member_inline_size <= 4) {
11627                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11628                }
11629                let inner_offset;
11630                let mut inner_depth = depth.clone();
11631                if inlined {
11632                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11633                    inner_offset = next_offset;
11634                } else {
11635                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11636                    inner_depth.increment()?;
11637                }
11638                let val_ref = self
11639                    .peer_sta_address
11640                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
11641                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
11642                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11643                {
11644                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11645                }
11646                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11647                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11648                }
11649            }
11650
11651            next_offset += envelope_size;
11652
11653            // Decode the remaining unknown envelopes.
11654            while next_offset < end_offset {
11655                _next_ordinal_to_read += 1;
11656                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11657                next_offset += envelope_size;
11658            }
11659
11660            Ok(())
11661        }
11662    }
11663
11664    impl WlanFullmacImplRoamRequest {
11665        #[inline(always)]
11666        fn max_ordinal_present(&self) -> u64 {
11667            if let Some(_) = self.selected_bss {
11668                return 1;
11669            }
11670            0
11671        }
11672    }
11673
11674    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplRoamRequest {
11675        type Borrowed<'a> = &'a Self;
11676        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11677            value
11678        }
11679    }
11680
11681    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplRoamRequest {
11682        type Owned = Self;
11683
11684        #[inline(always)]
11685        fn inline_align(_context: fidl::encoding::Context) -> usize {
11686            8
11687        }
11688
11689        #[inline(always)]
11690        fn inline_size(_context: fidl::encoding::Context) -> usize {
11691            16
11692        }
11693    }
11694
11695    unsafe impl<D: fidl::encoding::ResourceDialect>
11696        fidl::encoding::Encode<WlanFullmacImplRoamRequest, D> for &WlanFullmacImplRoamRequest
11697    {
11698        unsafe fn encode(
11699            self,
11700            encoder: &mut fidl::encoding::Encoder<'_, D>,
11701            offset: usize,
11702            mut depth: fidl::encoding::Depth,
11703        ) -> fidl::Result<()> {
11704            encoder.debug_check_bounds::<WlanFullmacImplRoamRequest>(offset);
11705            // Vector header
11706            let max_ordinal: u64 = self.max_ordinal_present();
11707            encoder.write_num(max_ordinal, offset);
11708            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11709            // Calling encoder.out_of_line_offset(0) is not allowed.
11710            if max_ordinal == 0 {
11711                return Ok(());
11712            }
11713            depth.increment()?;
11714            let envelope_size = 8;
11715            let bytes_len = max_ordinal as usize * envelope_size;
11716            #[allow(unused_variables)]
11717            let offset = encoder.out_of_line_offset(bytes_len);
11718            let mut _prev_end_offset: usize = 0;
11719            if 1 > max_ordinal {
11720                return Ok(());
11721            }
11722
11723            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11724            // are envelope_size bytes.
11725            let cur_offset: usize = (1 - 1) * envelope_size;
11726
11727            // Zero reserved fields.
11728            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11729
11730            // Safety:
11731            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11732            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11733            //   envelope_size bytes, there is always sufficient room.
11734            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common__common::BssDescription, D>(
11735            self.selected_bss.as_ref().map(<fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow),
11736            encoder, offset + cur_offset, depth
11737        )?;
11738
11739            _prev_end_offset = cur_offset + envelope_size;
11740
11741            Ok(())
11742        }
11743    }
11744
11745    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11746        for WlanFullmacImplRoamRequest
11747    {
11748        #[inline(always)]
11749        fn new_empty() -> Self {
11750            Self::default()
11751        }
11752
11753        unsafe fn decode(
11754            &mut self,
11755            decoder: &mut fidl::encoding::Decoder<'_, D>,
11756            offset: usize,
11757            mut depth: fidl::encoding::Depth,
11758        ) -> fidl::Result<()> {
11759            decoder.debug_check_bounds::<Self>(offset);
11760            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11761                None => return Err(fidl::Error::NotNullable),
11762                Some(len) => len,
11763            };
11764            // Calling decoder.out_of_line_offset(0) is not allowed.
11765            if len == 0 {
11766                return Ok(());
11767            };
11768            depth.increment()?;
11769            let envelope_size = 8;
11770            let bytes_len = len * envelope_size;
11771            let offset = decoder.out_of_line_offset(bytes_len)?;
11772            // Decode the envelope for each type.
11773            let mut _next_ordinal_to_read = 0;
11774            let mut next_offset = offset;
11775            let end_offset = offset + bytes_len;
11776            _next_ordinal_to_read += 1;
11777            if next_offset >= end_offset {
11778                return Ok(());
11779            }
11780
11781            // Decode unknown envelopes for gaps in ordinals.
11782            while _next_ordinal_to_read < 1 {
11783                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11784                _next_ordinal_to_read += 1;
11785                next_offset += envelope_size;
11786            }
11787
11788            let next_out_of_line = decoder.next_out_of_line();
11789            let handles_before = decoder.remaining_handles();
11790            if let Some((inlined, num_bytes, num_handles)) =
11791                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11792            {
11793                let member_inline_size = <fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11794                if inlined != (member_inline_size <= 4) {
11795                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11796                }
11797                let inner_offset;
11798                let mut inner_depth = depth.clone();
11799                if inlined {
11800                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11801                    inner_offset = next_offset;
11802                } else {
11803                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11804                    inner_depth.increment()?;
11805                }
11806                let val_ref = self.selected_bss.get_or_insert_with(|| {
11807                    fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssDescription, D)
11808                });
11809                fidl::decode!(
11810                    fidl_fuchsia_wlan_common__common::BssDescription,
11811                    D,
11812                    val_ref,
11813                    decoder,
11814                    inner_offset,
11815                    inner_depth
11816                )?;
11817                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11818                {
11819                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11820                }
11821                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11822                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11823                }
11824            }
11825
11826            next_offset += envelope_size;
11827
11828            // Decode the remaining unknown envelopes.
11829            while next_offset < end_offset {
11830                _next_ordinal_to_read += 1;
11831                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11832                next_offset += envelope_size;
11833            }
11834
11835            Ok(())
11836        }
11837    }
11838
11839    impl WlanFullmacImplSaeHandshakeRespRequest {
11840        #[inline(always)]
11841        fn max_ordinal_present(&self) -> u64 {
11842            if let Some(_) = self.status_code {
11843                return 2;
11844            }
11845            if let Some(_) = self.peer_sta_address {
11846                return 1;
11847            }
11848            0
11849        }
11850    }
11851
11852    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSaeHandshakeRespRequest {
11853        type Borrowed<'a> = &'a Self;
11854        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11855            value
11856        }
11857    }
11858
11859    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSaeHandshakeRespRequest {
11860        type Owned = Self;
11861
11862        #[inline(always)]
11863        fn inline_align(_context: fidl::encoding::Context) -> usize {
11864            8
11865        }
11866
11867        #[inline(always)]
11868        fn inline_size(_context: fidl::encoding::Context) -> usize {
11869            16
11870        }
11871    }
11872
11873    unsafe impl<D: fidl::encoding::ResourceDialect>
11874        fidl::encoding::Encode<WlanFullmacImplSaeHandshakeRespRequest, D>
11875        for &WlanFullmacImplSaeHandshakeRespRequest
11876    {
11877        unsafe fn encode(
11878            self,
11879            encoder: &mut fidl::encoding::Encoder<'_, D>,
11880            offset: usize,
11881            mut depth: fidl::encoding::Depth,
11882        ) -> fidl::Result<()> {
11883            encoder.debug_check_bounds::<WlanFullmacImplSaeHandshakeRespRequest>(offset);
11884            // Vector header
11885            let max_ordinal: u64 = self.max_ordinal_present();
11886            encoder.write_num(max_ordinal, offset);
11887            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11888            // Calling encoder.out_of_line_offset(0) is not allowed.
11889            if max_ordinal == 0 {
11890                return Ok(());
11891            }
11892            depth.increment()?;
11893            let envelope_size = 8;
11894            let bytes_len = max_ordinal as usize * envelope_size;
11895            #[allow(unused_variables)]
11896            let offset = encoder.out_of_line_offset(bytes_len);
11897            let mut _prev_end_offset: usize = 0;
11898            if 1 > max_ordinal {
11899                return Ok(());
11900            }
11901
11902            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11903            // are envelope_size bytes.
11904            let cur_offset: usize = (1 - 1) * envelope_size;
11905
11906            // Zero reserved fields.
11907            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11908
11909            // Safety:
11910            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11911            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11912            //   envelope_size bytes, there is always sufficient room.
11913            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
11914                self.peer_sta_address
11915                    .as_ref()
11916                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
11917                encoder,
11918                offset + cur_offset,
11919                depth,
11920            )?;
11921
11922            _prev_end_offset = cur_offset + envelope_size;
11923            if 2 > max_ordinal {
11924                return Ok(());
11925            }
11926
11927            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11928            // are envelope_size bytes.
11929            let cur_offset: usize = (2 - 1) * envelope_size;
11930
11931            // Zero reserved fields.
11932            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11933
11934            // Safety:
11935            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11936            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11937            //   envelope_size bytes, there is always sufficient room.
11938            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>(
11939            self.status_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
11940            encoder, offset + cur_offset, depth
11941        )?;
11942
11943            _prev_end_offset = cur_offset + envelope_size;
11944
11945            Ok(())
11946        }
11947    }
11948
11949    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11950        for WlanFullmacImplSaeHandshakeRespRequest
11951    {
11952        #[inline(always)]
11953        fn new_empty() -> Self {
11954            Self::default()
11955        }
11956
11957        unsafe fn decode(
11958            &mut self,
11959            decoder: &mut fidl::encoding::Decoder<'_, D>,
11960            offset: usize,
11961            mut depth: fidl::encoding::Depth,
11962        ) -> fidl::Result<()> {
11963            decoder.debug_check_bounds::<Self>(offset);
11964            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11965                None => return Err(fidl::Error::NotNullable),
11966                Some(len) => len,
11967            };
11968            // Calling decoder.out_of_line_offset(0) is not allowed.
11969            if len == 0 {
11970                return Ok(());
11971            };
11972            depth.increment()?;
11973            let envelope_size = 8;
11974            let bytes_len = len * envelope_size;
11975            let offset = decoder.out_of_line_offset(bytes_len)?;
11976            // Decode the envelope for each type.
11977            let mut _next_ordinal_to_read = 0;
11978            let mut next_offset = offset;
11979            let end_offset = offset + bytes_len;
11980            _next_ordinal_to_read += 1;
11981            if next_offset >= end_offset {
11982                return Ok(());
11983            }
11984
11985            // Decode unknown envelopes for gaps in ordinals.
11986            while _next_ordinal_to_read < 1 {
11987                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11988                _next_ordinal_to_read += 1;
11989                next_offset += envelope_size;
11990            }
11991
11992            let next_out_of_line = decoder.next_out_of_line();
11993            let handles_before = decoder.remaining_handles();
11994            if let Some((inlined, num_bytes, num_handles)) =
11995                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11996            {
11997                let member_inline_size =
11998                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
11999                        decoder.context,
12000                    );
12001                if inlined != (member_inline_size <= 4) {
12002                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12003                }
12004                let inner_offset;
12005                let mut inner_depth = depth.clone();
12006                if inlined {
12007                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12008                    inner_offset = next_offset;
12009                } else {
12010                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12011                    inner_depth.increment()?;
12012                }
12013                let val_ref = self
12014                    .peer_sta_address
12015                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
12016                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
12017                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12018                {
12019                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12020                }
12021                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12022                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12023                }
12024            }
12025
12026            next_offset += envelope_size;
12027            _next_ordinal_to_read += 1;
12028            if next_offset >= end_offset {
12029                return Ok(());
12030            }
12031
12032            // Decode unknown envelopes for gaps in ordinals.
12033            while _next_ordinal_to_read < 2 {
12034                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12035                _next_ordinal_to_read += 1;
12036                next_offset += envelope_size;
12037            }
12038
12039            let next_out_of_line = decoder.next_out_of_line();
12040            let handles_before = decoder.remaining_handles();
12041            if let Some((inlined, num_bytes, num_handles)) =
12042                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12043            {
12044                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12045                if inlined != (member_inline_size <= 4) {
12046                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12047                }
12048                let inner_offset;
12049                let mut inner_depth = depth.clone();
12050                if inlined {
12051                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12052                    inner_offset = next_offset;
12053                } else {
12054                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12055                    inner_depth.increment()?;
12056                }
12057                let val_ref = self.status_code.get_or_insert_with(|| {
12058                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D)
12059                });
12060                fidl::decode!(
12061                    fidl_fuchsia_wlan_ieee80211__common::StatusCode,
12062                    D,
12063                    val_ref,
12064                    decoder,
12065                    inner_offset,
12066                    inner_depth
12067                )?;
12068                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12069                {
12070                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12071                }
12072                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12073                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12074                }
12075            }
12076
12077            next_offset += envelope_size;
12078
12079            // Decode the remaining unknown envelopes.
12080            while next_offset < end_offset {
12081                _next_ordinal_to_read += 1;
12082                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12083                next_offset += envelope_size;
12084            }
12085
12086            Ok(())
12087        }
12088    }
12089
12090    impl WlanFullmacImplSetKeysRequest {
12091        #[inline(always)]
12092        fn max_ordinal_present(&self) -> u64 {
12093            if let Some(_) = self.key_descriptors {
12094                return 2;
12095            }
12096            if let Some(_) = self.keylist {
12097                return 1;
12098            }
12099            0
12100        }
12101    }
12102
12103    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSetKeysRequest {
12104        type Borrowed<'a> = &'a Self;
12105        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12106            value
12107        }
12108    }
12109
12110    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSetKeysRequest {
12111        type Owned = Self;
12112
12113        #[inline(always)]
12114        fn inline_align(_context: fidl::encoding::Context) -> usize {
12115            8
12116        }
12117
12118        #[inline(always)]
12119        fn inline_size(_context: fidl::encoding::Context) -> usize {
12120            16
12121        }
12122    }
12123
12124    unsafe impl<D: fidl::encoding::ResourceDialect>
12125        fidl::encoding::Encode<WlanFullmacImplSetKeysRequest, D>
12126        for &WlanFullmacImplSetKeysRequest
12127    {
12128        unsafe fn encode(
12129            self,
12130            encoder: &mut fidl::encoding::Encoder<'_, D>,
12131            offset: usize,
12132            mut depth: fidl::encoding::Depth,
12133        ) -> fidl::Result<()> {
12134            encoder.debug_check_bounds::<WlanFullmacImplSetKeysRequest>(offset);
12135            // Vector header
12136            let max_ordinal: u64 = self.max_ordinal_present();
12137            encoder.write_num(max_ordinal, offset);
12138            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12139            // Calling encoder.out_of_line_offset(0) is not allowed.
12140            if max_ordinal == 0 {
12141                return Ok(());
12142            }
12143            depth.increment()?;
12144            let envelope_size = 8;
12145            let bytes_len = max_ordinal as usize * envelope_size;
12146            #[allow(unused_variables)]
12147            let offset = encoder.out_of_line_offset(bytes_len);
12148            let mut _prev_end_offset: usize = 0;
12149            if 1 > max_ordinal {
12150                return Ok(());
12151            }
12152
12153            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12154            // are envelope_size bytes.
12155            let cur_offset: usize = (1 - 1) * envelope_size;
12156
12157            // Zero reserved fields.
12158            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12159
12160            // Safety:
12161            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12162            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12163            //   envelope_size bytes, there is always sufficient room.
12164            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_wlan_common__common::WlanKeyConfig, 4>, D>(
12165            self.keylist.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_wlan_common__common::WlanKeyConfig, 4> as fidl::encoding::ValueTypeMarker>::borrow),
12166            encoder, offset + cur_offset, depth
12167        )?;
12168
12169            _prev_end_offset = cur_offset + envelope_size;
12170            if 2 > max_ordinal {
12171                return Ok(());
12172            }
12173
12174            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12175            // are envelope_size bytes.
12176            let cur_offset: usize = (2 - 1) * envelope_size;
12177
12178            // Zero reserved fields.
12179            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12180
12181            // Safety:
12182            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12183            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12184            //   envelope_size bytes, there is always sufficient room.
12185            fidl::encoding::encode_in_envelope_optional::<
12186                fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor, 4>,
12187                D,
12188            >(
12189                self.key_descriptors.as_ref().map(
12190                    <fidl::encoding::Vector<
12191                        fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor,
12192                        4,
12193                    > as fidl::encoding::ValueTypeMarker>::borrow,
12194                ),
12195                encoder,
12196                offset + cur_offset,
12197                depth,
12198            )?;
12199
12200            _prev_end_offset = cur_offset + envelope_size;
12201
12202            Ok(())
12203        }
12204    }
12205
12206    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12207        for WlanFullmacImplSetKeysRequest
12208    {
12209        #[inline(always)]
12210        fn new_empty() -> Self {
12211            Self::default()
12212        }
12213
12214        unsafe fn decode(
12215            &mut self,
12216            decoder: &mut fidl::encoding::Decoder<'_, D>,
12217            offset: usize,
12218            mut depth: fidl::encoding::Depth,
12219        ) -> fidl::Result<()> {
12220            decoder.debug_check_bounds::<Self>(offset);
12221            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12222                None => return Err(fidl::Error::NotNullable),
12223                Some(len) => len,
12224            };
12225            // Calling decoder.out_of_line_offset(0) is not allowed.
12226            if len == 0 {
12227                return Ok(());
12228            };
12229            depth.increment()?;
12230            let envelope_size = 8;
12231            let bytes_len = len * envelope_size;
12232            let offset = decoder.out_of_line_offset(bytes_len)?;
12233            // Decode the envelope for each type.
12234            let mut _next_ordinal_to_read = 0;
12235            let mut next_offset = offset;
12236            let end_offset = offset + bytes_len;
12237            _next_ordinal_to_read += 1;
12238            if next_offset >= end_offset {
12239                return Ok(());
12240            }
12241
12242            // Decode unknown envelopes for gaps in ordinals.
12243            while _next_ordinal_to_read < 1 {
12244                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12245                _next_ordinal_to_read += 1;
12246                next_offset += envelope_size;
12247            }
12248
12249            let next_out_of_line = decoder.next_out_of_line();
12250            let handles_before = decoder.remaining_handles();
12251            if let Some((inlined, num_bytes, num_handles)) =
12252                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12253            {
12254                let member_inline_size = <fidl::encoding::Vector<
12255                    fidl_fuchsia_wlan_common__common::WlanKeyConfig,
12256                    4,
12257                > as fidl::encoding::TypeMarker>::inline_size(
12258                    decoder.context
12259                );
12260                if inlined != (member_inline_size <= 4) {
12261                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12262                }
12263                let inner_offset;
12264                let mut inner_depth = depth.clone();
12265                if inlined {
12266                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12267                    inner_offset = next_offset;
12268                } else {
12269                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12270                    inner_depth.increment()?;
12271                }
12272                let val_ref =
12273                self.keylist.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_wlan_common__common::WlanKeyConfig, 4>, D));
12274                fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_wlan_common__common::WlanKeyConfig, 4>, D, val_ref, decoder, inner_offset, inner_depth)?;
12275                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12276                {
12277                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12278                }
12279                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12280                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12281                }
12282            }
12283
12284            next_offset += envelope_size;
12285            _next_ordinal_to_read += 1;
12286            if next_offset >= end_offset {
12287                return Ok(());
12288            }
12289
12290            // Decode unknown envelopes for gaps in ordinals.
12291            while _next_ordinal_to_read < 2 {
12292                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12293                _next_ordinal_to_read += 1;
12294                next_offset += envelope_size;
12295            }
12296
12297            let next_out_of_line = decoder.next_out_of_line();
12298            let handles_before = decoder.remaining_handles();
12299            if let Some((inlined, num_bytes, num_handles)) =
12300                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12301            {
12302                let member_inline_size = <fidl::encoding::Vector<
12303                    fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor,
12304                    4,
12305                > as fidl::encoding::TypeMarker>::inline_size(
12306                    decoder.context
12307                );
12308                if inlined != (member_inline_size <= 4) {
12309                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12310                }
12311                let inner_offset;
12312                let mut inner_depth = depth.clone();
12313                if inlined {
12314                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12315                    inner_offset = next_offset;
12316                } else {
12317                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12318                    inner_depth.increment()?;
12319                }
12320                let val_ref =
12321                self.key_descriptors.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor, 4>, D));
12322                fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor, 4>, D, val_ref, decoder, inner_offset, inner_depth)?;
12323                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12324                {
12325                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12326                }
12327                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12328                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12329                }
12330            }
12331
12332            next_offset += envelope_size;
12333
12334            // Decode the remaining unknown envelopes.
12335            while next_offset < end_offset {
12336                _next_ordinal_to_read += 1;
12337                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12338                next_offset += envelope_size;
12339            }
12340
12341            Ok(())
12342        }
12343    }
12344
12345    impl WlanFullmacImplStartBssRequest {
12346        #[inline(always)]
12347        fn max_ordinal_present(&self) -> u64 {
12348            if let Some(_) = self.vendor_ie {
12349                return 7;
12350            }
12351            if let Some(_) = self.rsne {
12352                return 6;
12353            }
12354            if let Some(_) = self.channel {
12355                return 5;
12356            }
12357            if let Some(_) = self.dtim_period {
12358                return 4;
12359            }
12360            if let Some(_) = self.beacon_period {
12361                return 3;
12362            }
12363            if let Some(_) = self.bss_type {
12364                return 2;
12365            }
12366            if let Some(_) = self.ssid {
12367                return 1;
12368            }
12369            0
12370        }
12371    }
12372
12373    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplStartBssRequest {
12374        type Borrowed<'a> = &'a Self;
12375        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12376            value
12377        }
12378    }
12379
12380    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplStartBssRequest {
12381        type Owned = Self;
12382
12383        #[inline(always)]
12384        fn inline_align(_context: fidl::encoding::Context) -> usize {
12385            8
12386        }
12387
12388        #[inline(always)]
12389        fn inline_size(_context: fidl::encoding::Context) -> usize {
12390            16
12391        }
12392    }
12393
12394    unsafe impl<D: fidl::encoding::ResourceDialect>
12395        fidl::encoding::Encode<WlanFullmacImplStartBssRequest, D>
12396        for &WlanFullmacImplStartBssRequest
12397    {
12398        unsafe fn encode(
12399            self,
12400            encoder: &mut fidl::encoding::Encoder<'_, D>,
12401            offset: usize,
12402            mut depth: fidl::encoding::Depth,
12403        ) -> fidl::Result<()> {
12404            encoder.debug_check_bounds::<WlanFullmacImplStartBssRequest>(offset);
12405            // Vector header
12406            let max_ordinal: u64 = self.max_ordinal_present();
12407            encoder.write_num(max_ordinal, offset);
12408            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12409            // Calling encoder.out_of_line_offset(0) is not allowed.
12410            if max_ordinal == 0 {
12411                return Ok(());
12412            }
12413            depth.increment()?;
12414            let envelope_size = 8;
12415            let bytes_len = max_ordinal as usize * envelope_size;
12416            #[allow(unused_variables)]
12417            let offset = encoder.out_of_line_offset(bytes_len);
12418            let mut _prev_end_offset: usize = 0;
12419            if 1 > max_ordinal {
12420                return Ok(());
12421            }
12422
12423            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12424            // are envelope_size bytes.
12425            let cur_offset: usize = (1 - 1) * envelope_size;
12426
12427            // Zero reserved fields.
12428            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12429
12430            // Safety:
12431            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12432            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12433            //   envelope_size bytes, there is always sufficient room.
12434            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
12435                self.ssid.as_ref().map(
12436                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
12437                ),
12438                encoder,
12439                offset + cur_offset,
12440                depth,
12441            )?;
12442
12443            _prev_end_offset = cur_offset + envelope_size;
12444            if 2 > max_ordinal {
12445                return Ok(());
12446            }
12447
12448            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12449            // are envelope_size bytes.
12450            let cur_offset: usize = (2 - 1) * envelope_size;
12451
12452            // Zero reserved fields.
12453            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12454
12455            // Safety:
12456            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12457            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12458            //   envelope_size bytes, there is always sufficient room.
12459            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common__common::BssType, D>(
12460            self.bss_type.as_ref().map(<fidl_fuchsia_wlan_common__common::BssType as fidl::encoding::ValueTypeMarker>::borrow),
12461            encoder, offset + cur_offset, depth
12462        )?;
12463
12464            _prev_end_offset = cur_offset + envelope_size;
12465            if 3 > max_ordinal {
12466                return Ok(());
12467            }
12468
12469            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12470            // are envelope_size bytes.
12471            let cur_offset: usize = (3 - 1) * envelope_size;
12472
12473            // Zero reserved fields.
12474            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12475
12476            // Safety:
12477            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12478            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12479            //   envelope_size bytes, there is always sufficient room.
12480            fidl::encoding::encode_in_envelope_optional::<u32, D>(
12481                self.beacon_period.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
12482                encoder,
12483                offset + cur_offset,
12484                depth,
12485            )?;
12486
12487            _prev_end_offset = cur_offset + envelope_size;
12488            if 4 > max_ordinal {
12489                return Ok(());
12490            }
12491
12492            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12493            // are envelope_size bytes.
12494            let cur_offset: usize = (4 - 1) * envelope_size;
12495
12496            // Zero reserved fields.
12497            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12498
12499            // Safety:
12500            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12501            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12502            //   envelope_size bytes, there is always sufficient room.
12503            fidl::encoding::encode_in_envelope_optional::<u32, D>(
12504                self.dtim_period.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
12505                encoder,
12506                offset + cur_offset,
12507                depth,
12508            )?;
12509
12510            _prev_end_offset = cur_offset + envelope_size;
12511            if 5 > max_ordinal {
12512                return Ok(());
12513            }
12514
12515            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12516            // are envelope_size bytes.
12517            let cur_offset: usize = (5 - 1) * envelope_size;
12518
12519            // Zero reserved fields.
12520            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12521
12522            // Safety:
12523            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12524            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12525            //   envelope_size bytes, there is always sufficient room.
12526            fidl::encoding::encode_in_envelope_optional::<u8, D>(
12527                self.channel.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
12528                encoder,
12529                offset + cur_offset,
12530                depth,
12531            )?;
12532
12533            _prev_end_offset = cur_offset + envelope_size;
12534            if 6 > max_ordinal {
12535                return Ok(());
12536            }
12537
12538            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12539            // are envelope_size bytes.
12540            let cur_offset: usize = (6 - 1) * envelope_size;
12541
12542            // Zero reserved fields.
12543            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12544
12545            // Safety:
12546            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12547            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12548            //   envelope_size bytes, there is always sufficient room.
12549            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 257>, D>(
12550                self.rsne.as_ref().map(
12551                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::ValueTypeMarker>::borrow,
12552                ),
12553                encoder,
12554                offset + cur_offset,
12555                depth,
12556            )?;
12557
12558            _prev_end_offset = cur_offset + envelope_size;
12559            if 7 > max_ordinal {
12560                return Ok(());
12561            }
12562
12563            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12564            // are envelope_size bytes.
12565            let cur_offset: usize = (7 - 1) * envelope_size;
12566
12567            // Zero reserved fields.
12568            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12569
12570            // Safety:
12571            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12572            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12573            //   envelope_size bytes, there is always sufficient room.
12574            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 514>, D>(
12575                self.vendor_ie.as_ref().map(
12576                    <fidl::encoding::Vector<u8, 514> as fidl::encoding::ValueTypeMarker>::borrow,
12577                ),
12578                encoder,
12579                offset + cur_offset,
12580                depth,
12581            )?;
12582
12583            _prev_end_offset = cur_offset + envelope_size;
12584
12585            Ok(())
12586        }
12587    }
12588
12589    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12590        for WlanFullmacImplStartBssRequest
12591    {
12592        #[inline(always)]
12593        fn new_empty() -> Self {
12594            Self::default()
12595        }
12596
12597        unsafe fn decode(
12598            &mut self,
12599            decoder: &mut fidl::encoding::Decoder<'_, D>,
12600            offset: usize,
12601            mut depth: fidl::encoding::Depth,
12602        ) -> fidl::Result<()> {
12603            decoder.debug_check_bounds::<Self>(offset);
12604            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12605                None => return Err(fidl::Error::NotNullable),
12606                Some(len) => len,
12607            };
12608            // Calling decoder.out_of_line_offset(0) is not allowed.
12609            if len == 0 {
12610                return Ok(());
12611            };
12612            depth.increment()?;
12613            let envelope_size = 8;
12614            let bytes_len = len * envelope_size;
12615            let offset = decoder.out_of_line_offset(bytes_len)?;
12616            // Decode the envelope for each type.
12617            let mut _next_ordinal_to_read = 0;
12618            let mut next_offset = offset;
12619            let end_offset = offset + bytes_len;
12620            _next_ordinal_to_read += 1;
12621            if next_offset >= end_offset {
12622                return Ok(());
12623            }
12624
12625            // Decode unknown envelopes for gaps in ordinals.
12626            while _next_ordinal_to_read < 1 {
12627                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12628                _next_ordinal_to_read += 1;
12629                next_offset += envelope_size;
12630            }
12631
12632            let next_out_of_line = decoder.next_out_of_line();
12633            let handles_before = decoder.remaining_handles();
12634            if let Some((inlined, num_bytes, num_handles)) =
12635                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12636            {
12637                let member_inline_size =
12638                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
12639                        decoder.context,
12640                    );
12641                if inlined != (member_inline_size <= 4) {
12642                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12643                }
12644                let inner_offset;
12645                let mut inner_depth = depth.clone();
12646                if inlined {
12647                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12648                    inner_offset = next_offset;
12649                } else {
12650                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12651                    inner_depth.increment()?;
12652                }
12653                let val_ref = self
12654                    .ssid
12655                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
12656                fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
12657                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12658                {
12659                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12660                }
12661                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12662                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12663                }
12664            }
12665
12666            next_offset += envelope_size;
12667            _next_ordinal_to_read += 1;
12668            if next_offset >= end_offset {
12669                return Ok(());
12670            }
12671
12672            // Decode unknown envelopes for gaps in ordinals.
12673            while _next_ordinal_to_read < 2 {
12674                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12675                _next_ordinal_to_read += 1;
12676                next_offset += envelope_size;
12677            }
12678
12679            let next_out_of_line = decoder.next_out_of_line();
12680            let handles_before = decoder.remaining_handles();
12681            if let Some((inlined, num_bytes, num_handles)) =
12682                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12683            {
12684                let member_inline_size = <fidl_fuchsia_wlan_common__common::BssType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12685                if inlined != (member_inline_size <= 4) {
12686                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12687                }
12688                let inner_offset;
12689                let mut inner_depth = depth.clone();
12690                if inlined {
12691                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12692                    inner_offset = next_offset;
12693                } else {
12694                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12695                    inner_depth.increment()?;
12696                }
12697                let val_ref = self.bss_type.get_or_insert_with(|| {
12698                    fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssType, D)
12699                });
12700                fidl::decode!(
12701                    fidl_fuchsia_wlan_common__common::BssType,
12702                    D,
12703                    val_ref,
12704                    decoder,
12705                    inner_offset,
12706                    inner_depth
12707                )?;
12708                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12709                {
12710                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12711                }
12712                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12713                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12714                }
12715            }
12716
12717            next_offset += envelope_size;
12718            _next_ordinal_to_read += 1;
12719            if next_offset >= end_offset {
12720                return Ok(());
12721            }
12722
12723            // Decode unknown envelopes for gaps in ordinals.
12724            while _next_ordinal_to_read < 3 {
12725                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12726                _next_ordinal_to_read += 1;
12727                next_offset += envelope_size;
12728            }
12729
12730            let next_out_of_line = decoder.next_out_of_line();
12731            let handles_before = decoder.remaining_handles();
12732            if let Some((inlined, num_bytes, num_handles)) =
12733                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12734            {
12735                let member_inline_size =
12736                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12737                if inlined != (member_inline_size <= 4) {
12738                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12739                }
12740                let inner_offset;
12741                let mut inner_depth = depth.clone();
12742                if inlined {
12743                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12744                    inner_offset = next_offset;
12745                } else {
12746                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12747                    inner_depth.increment()?;
12748                }
12749                let val_ref = self.beacon_period.get_or_insert_with(|| fidl::new_empty!(u32, D));
12750                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
12751                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12752                {
12753                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12754                }
12755                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12756                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12757                }
12758            }
12759
12760            next_offset += envelope_size;
12761            _next_ordinal_to_read += 1;
12762            if next_offset >= end_offset {
12763                return Ok(());
12764            }
12765
12766            // Decode unknown envelopes for gaps in ordinals.
12767            while _next_ordinal_to_read < 4 {
12768                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12769                _next_ordinal_to_read += 1;
12770                next_offset += envelope_size;
12771            }
12772
12773            let next_out_of_line = decoder.next_out_of_line();
12774            let handles_before = decoder.remaining_handles();
12775            if let Some((inlined, num_bytes, num_handles)) =
12776                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12777            {
12778                let member_inline_size =
12779                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12780                if inlined != (member_inline_size <= 4) {
12781                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12782                }
12783                let inner_offset;
12784                let mut inner_depth = depth.clone();
12785                if inlined {
12786                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12787                    inner_offset = next_offset;
12788                } else {
12789                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12790                    inner_depth.increment()?;
12791                }
12792                let val_ref = self.dtim_period.get_or_insert_with(|| fidl::new_empty!(u32, D));
12793                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
12794                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12795                {
12796                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12797                }
12798                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12799                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12800                }
12801            }
12802
12803            next_offset += envelope_size;
12804            _next_ordinal_to_read += 1;
12805            if next_offset >= end_offset {
12806                return Ok(());
12807            }
12808
12809            // Decode unknown envelopes for gaps in ordinals.
12810            while _next_ordinal_to_read < 5 {
12811                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12812                _next_ordinal_to_read += 1;
12813                next_offset += envelope_size;
12814            }
12815
12816            let next_out_of_line = decoder.next_out_of_line();
12817            let handles_before = decoder.remaining_handles();
12818            if let Some((inlined, num_bytes, num_handles)) =
12819                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12820            {
12821                let member_inline_size =
12822                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12823                if inlined != (member_inline_size <= 4) {
12824                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12825                }
12826                let inner_offset;
12827                let mut inner_depth = depth.clone();
12828                if inlined {
12829                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12830                    inner_offset = next_offset;
12831                } else {
12832                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12833                    inner_depth.increment()?;
12834                }
12835                let val_ref = self.channel.get_or_insert_with(|| fidl::new_empty!(u8, D));
12836                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
12837                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12838                {
12839                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12840                }
12841                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12842                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12843                }
12844            }
12845
12846            next_offset += envelope_size;
12847            _next_ordinal_to_read += 1;
12848            if next_offset >= end_offset {
12849                return Ok(());
12850            }
12851
12852            // Decode unknown envelopes for gaps in ordinals.
12853            while _next_ordinal_to_read < 6 {
12854                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12855                _next_ordinal_to_read += 1;
12856                next_offset += envelope_size;
12857            }
12858
12859            let next_out_of_line = decoder.next_out_of_line();
12860            let handles_before = decoder.remaining_handles();
12861            if let Some((inlined, num_bytes, num_handles)) =
12862                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12863            {
12864                let member_inline_size =
12865                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::TypeMarker>::inline_size(
12866                        decoder.context,
12867                    );
12868                if inlined != (member_inline_size <= 4) {
12869                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12870                }
12871                let inner_offset;
12872                let mut inner_depth = depth.clone();
12873                if inlined {
12874                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12875                    inner_offset = next_offset;
12876                } else {
12877                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12878                    inner_depth.increment()?;
12879                }
12880                let val_ref = self
12881                    .rsne
12882                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 257>, D));
12883                fidl::decode!(fidl::encoding::Vector<u8, 257>, D, val_ref, decoder, inner_offset, inner_depth)?;
12884                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12885                {
12886                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12887                }
12888                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12889                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12890                }
12891            }
12892
12893            next_offset += envelope_size;
12894            _next_ordinal_to_read += 1;
12895            if next_offset >= end_offset {
12896                return Ok(());
12897            }
12898
12899            // Decode unknown envelopes for gaps in ordinals.
12900            while _next_ordinal_to_read < 7 {
12901                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12902                _next_ordinal_to_read += 1;
12903                next_offset += envelope_size;
12904            }
12905
12906            let next_out_of_line = decoder.next_out_of_line();
12907            let handles_before = decoder.remaining_handles();
12908            if let Some((inlined, num_bytes, num_handles)) =
12909                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12910            {
12911                let member_inline_size =
12912                    <fidl::encoding::Vector<u8, 514> as fidl::encoding::TypeMarker>::inline_size(
12913                        decoder.context,
12914                    );
12915                if inlined != (member_inline_size <= 4) {
12916                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12917                }
12918                let inner_offset;
12919                let mut inner_depth = depth.clone();
12920                if inlined {
12921                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12922                    inner_offset = next_offset;
12923                } else {
12924                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12925                    inner_depth.increment()?;
12926                }
12927                let val_ref = self
12928                    .vendor_ie
12929                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 514>, D));
12930                fidl::decode!(fidl::encoding::Vector<u8, 514>, D, val_ref, decoder, inner_offset, inner_depth)?;
12931                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12932                {
12933                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12934                }
12935                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12936                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12937                }
12938            }
12939
12940            next_offset += envelope_size;
12941
12942            // Decode the remaining unknown envelopes.
12943            while next_offset < end_offset {
12944                _next_ordinal_to_read += 1;
12945                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12946                next_offset += envelope_size;
12947            }
12948
12949            Ok(())
12950        }
12951    }
12952
12953    impl WlanFullmacImplStartScanRequest {
12954        #[inline(always)]
12955        fn max_ordinal_present(&self) -> u64 {
12956            if let Some(_) = self.max_channel_time {
12957                return 6;
12958            }
12959            if let Some(_) = self.min_channel_time {
12960                return 5;
12961            }
12962            if let Some(_) = self.ssids {
12963                return 4;
12964            }
12965            if let Some(_) = self.channels {
12966                return 3;
12967            }
12968            if let Some(_) = self.scan_type {
12969                return 2;
12970            }
12971            if let Some(_) = self.txn_id {
12972                return 1;
12973            }
12974            0
12975        }
12976    }
12977
12978    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplStartScanRequest {
12979        type Borrowed<'a> = &'a Self;
12980        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12981            value
12982        }
12983    }
12984
12985    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplStartScanRequest {
12986        type Owned = Self;
12987
12988        #[inline(always)]
12989        fn inline_align(_context: fidl::encoding::Context) -> usize {
12990            8
12991        }
12992
12993        #[inline(always)]
12994        fn inline_size(_context: fidl::encoding::Context) -> usize {
12995            16
12996        }
12997    }
12998
12999    unsafe impl<D: fidl::encoding::ResourceDialect>
13000        fidl::encoding::Encode<WlanFullmacImplStartScanRequest, D>
13001        for &WlanFullmacImplStartScanRequest
13002    {
13003        unsafe fn encode(
13004            self,
13005            encoder: &mut fidl::encoding::Encoder<'_, D>,
13006            offset: usize,
13007            mut depth: fidl::encoding::Depth,
13008        ) -> fidl::Result<()> {
13009            encoder.debug_check_bounds::<WlanFullmacImplStartScanRequest>(offset);
13010            // Vector header
13011            let max_ordinal: u64 = self.max_ordinal_present();
13012            encoder.write_num(max_ordinal, offset);
13013            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13014            // Calling encoder.out_of_line_offset(0) is not allowed.
13015            if max_ordinal == 0 {
13016                return Ok(());
13017            }
13018            depth.increment()?;
13019            let envelope_size = 8;
13020            let bytes_len = max_ordinal as usize * envelope_size;
13021            #[allow(unused_variables)]
13022            let offset = encoder.out_of_line_offset(bytes_len);
13023            let mut _prev_end_offset: usize = 0;
13024            if 1 > max_ordinal {
13025                return Ok(());
13026            }
13027
13028            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13029            // are envelope_size bytes.
13030            let cur_offset: usize = (1 - 1) * envelope_size;
13031
13032            // Zero reserved fields.
13033            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13034
13035            // Safety:
13036            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13037            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13038            //   envelope_size bytes, there is always sufficient room.
13039            fidl::encoding::encode_in_envelope_optional::<u64, D>(
13040                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
13041                encoder,
13042                offset + cur_offset,
13043                depth,
13044            )?;
13045
13046            _prev_end_offset = cur_offset + envelope_size;
13047            if 2 > max_ordinal {
13048                return Ok(());
13049            }
13050
13051            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13052            // are envelope_size bytes.
13053            let cur_offset: usize = (2 - 1) * envelope_size;
13054
13055            // Zero reserved fields.
13056            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13057
13058            // Safety:
13059            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13060            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13061            //   envelope_size bytes, there is always sufficient room.
13062            fidl::encoding::encode_in_envelope_optional::<WlanScanType, D>(
13063                self.scan_type
13064                    .as_ref()
13065                    .map(<WlanScanType as fidl::encoding::ValueTypeMarker>::borrow),
13066                encoder,
13067                offset + cur_offset,
13068                depth,
13069            )?;
13070
13071            _prev_end_offset = cur_offset + envelope_size;
13072            if 3 > max_ordinal {
13073                return Ok(());
13074            }
13075
13076            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13077            // are envelope_size bytes.
13078            let cur_offset: usize = (3 - 1) * envelope_size;
13079
13080            // Zero reserved fields.
13081            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13082
13083            // Safety:
13084            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13085            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13086            //   envelope_size bytes, there is always sufficient room.
13087            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 256>, D>(
13088                self.channels.as_ref().map(
13089                    <fidl::encoding::Vector<u8, 256> as fidl::encoding::ValueTypeMarker>::borrow,
13090                ),
13091                encoder,
13092                offset + cur_offset,
13093                depth,
13094            )?;
13095
13096            _prev_end_offset = cur_offset + envelope_size;
13097            if 4 > max_ordinal {
13098                return Ok(());
13099            }
13100
13101            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13102            // are envelope_size bytes.
13103            let cur_offset: usize = (4 - 1) * envelope_size;
13104
13105            // Zero reserved fields.
13106            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13107
13108            // Safety:
13109            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13110            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13111            //   envelope_size bytes, there is always sufficient room.
13112            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>, D>(
13113            self.ssids.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>> as fidl::encoding::ValueTypeMarker>::borrow),
13114            encoder, offset + cur_offset, depth
13115        )?;
13116
13117            _prev_end_offset = cur_offset + envelope_size;
13118            if 5 > max_ordinal {
13119                return Ok(());
13120            }
13121
13122            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13123            // are envelope_size bytes.
13124            let cur_offset: usize = (5 - 1) * envelope_size;
13125
13126            // Zero reserved fields.
13127            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13128
13129            // Safety:
13130            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13131            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13132            //   envelope_size bytes, there is always sufficient room.
13133            fidl::encoding::encode_in_envelope_optional::<u32, D>(
13134                self.min_channel_time
13135                    .as_ref()
13136                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
13137                encoder,
13138                offset + cur_offset,
13139                depth,
13140            )?;
13141
13142            _prev_end_offset = cur_offset + envelope_size;
13143            if 6 > max_ordinal {
13144                return Ok(());
13145            }
13146
13147            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13148            // are envelope_size bytes.
13149            let cur_offset: usize = (6 - 1) * envelope_size;
13150
13151            // Zero reserved fields.
13152            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13153
13154            // Safety:
13155            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13156            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13157            //   envelope_size bytes, there is always sufficient room.
13158            fidl::encoding::encode_in_envelope_optional::<u32, D>(
13159                self.max_channel_time
13160                    .as_ref()
13161                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
13162                encoder,
13163                offset + cur_offset,
13164                depth,
13165            )?;
13166
13167            _prev_end_offset = cur_offset + envelope_size;
13168
13169            Ok(())
13170        }
13171    }
13172
13173    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
13174        for WlanFullmacImplStartScanRequest
13175    {
13176        #[inline(always)]
13177        fn new_empty() -> Self {
13178            Self::default()
13179        }
13180
13181        unsafe fn decode(
13182            &mut self,
13183            decoder: &mut fidl::encoding::Decoder<'_, D>,
13184            offset: usize,
13185            mut depth: fidl::encoding::Depth,
13186        ) -> fidl::Result<()> {
13187            decoder.debug_check_bounds::<Self>(offset);
13188            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13189                None => return Err(fidl::Error::NotNullable),
13190                Some(len) => len,
13191            };
13192            // Calling decoder.out_of_line_offset(0) is not allowed.
13193            if len == 0 {
13194                return Ok(());
13195            };
13196            depth.increment()?;
13197            let envelope_size = 8;
13198            let bytes_len = len * envelope_size;
13199            let offset = decoder.out_of_line_offset(bytes_len)?;
13200            // Decode the envelope for each type.
13201            let mut _next_ordinal_to_read = 0;
13202            let mut next_offset = offset;
13203            let end_offset = offset + bytes_len;
13204            _next_ordinal_to_read += 1;
13205            if next_offset >= end_offset {
13206                return Ok(());
13207            }
13208
13209            // Decode unknown envelopes for gaps in ordinals.
13210            while _next_ordinal_to_read < 1 {
13211                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13212                _next_ordinal_to_read += 1;
13213                next_offset += envelope_size;
13214            }
13215
13216            let next_out_of_line = decoder.next_out_of_line();
13217            let handles_before = decoder.remaining_handles();
13218            if let Some((inlined, num_bytes, num_handles)) =
13219                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13220            {
13221                let member_inline_size =
13222                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13223                if inlined != (member_inline_size <= 4) {
13224                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13225                }
13226                let inner_offset;
13227                let mut inner_depth = depth.clone();
13228                if inlined {
13229                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13230                    inner_offset = next_offset;
13231                } else {
13232                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13233                    inner_depth.increment()?;
13234                }
13235                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
13236                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
13237                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13238                {
13239                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13240                }
13241                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13242                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13243                }
13244            }
13245
13246            next_offset += envelope_size;
13247            _next_ordinal_to_read += 1;
13248            if next_offset >= end_offset {
13249                return Ok(());
13250            }
13251
13252            // Decode unknown envelopes for gaps in ordinals.
13253            while _next_ordinal_to_read < 2 {
13254                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13255                _next_ordinal_to_read += 1;
13256                next_offset += envelope_size;
13257            }
13258
13259            let next_out_of_line = decoder.next_out_of_line();
13260            let handles_before = decoder.remaining_handles();
13261            if let Some((inlined, num_bytes, num_handles)) =
13262                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13263            {
13264                let member_inline_size =
13265                    <WlanScanType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13266                if inlined != (member_inline_size <= 4) {
13267                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13268                }
13269                let inner_offset;
13270                let mut inner_depth = depth.clone();
13271                if inlined {
13272                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13273                    inner_offset = next_offset;
13274                } else {
13275                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13276                    inner_depth.increment()?;
13277                }
13278                let val_ref =
13279                    self.scan_type.get_or_insert_with(|| fidl::new_empty!(WlanScanType, D));
13280                fidl::decode!(WlanScanType, D, val_ref, decoder, inner_offset, inner_depth)?;
13281                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13282                {
13283                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13284                }
13285                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13286                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13287                }
13288            }
13289
13290            next_offset += envelope_size;
13291            _next_ordinal_to_read += 1;
13292            if next_offset >= end_offset {
13293                return Ok(());
13294            }
13295
13296            // Decode unknown envelopes for gaps in ordinals.
13297            while _next_ordinal_to_read < 3 {
13298                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13299                _next_ordinal_to_read += 1;
13300                next_offset += envelope_size;
13301            }
13302
13303            let next_out_of_line = decoder.next_out_of_line();
13304            let handles_before = decoder.remaining_handles();
13305            if let Some((inlined, num_bytes, num_handles)) =
13306                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13307            {
13308                let member_inline_size =
13309                    <fidl::encoding::Vector<u8, 256> as fidl::encoding::TypeMarker>::inline_size(
13310                        decoder.context,
13311                    );
13312                if inlined != (member_inline_size <= 4) {
13313                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13314                }
13315                let inner_offset;
13316                let mut inner_depth = depth.clone();
13317                if inlined {
13318                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13319                    inner_offset = next_offset;
13320                } else {
13321                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13322                    inner_depth.increment()?;
13323                }
13324                let val_ref = self
13325                    .channels
13326                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 256>, D));
13327                fidl::decode!(fidl::encoding::Vector<u8, 256>, D, val_ref, decoder, inner_offset, inner_depth)?;
13328                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13329                {
13330                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13331                }
13332                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13333                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13334                }
13335            }
13336
13337            next_offset += envelope_size;
13338            _next_ordinal_to_read += 1;
13339            if next_offset >= end_offset {
13340                return Ok(());
13341            }
13342
13343            // Decode unknown envelopes for gaps in ordinals.
13344            while _next_ordinal_to_read < 4 {
13345                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13346                _next_ordinal_to_read += 1;
13347                next_offset += envelope_size;
13348            }
13349
13350            let next_out_of_line = decoder.next_out_of_line();
13351            let handles_before = decoder.remaining_handles();
13352            if let Some((inlined, num_bytes, num_handles)) =
13353                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13354            {
13355                let member_inline_size = <fidl::encoding::UnboundedVector<
13356                    fidl::encoding::Vector<u8, 32>,
13357                > as fidl::encoding::TypeMarker>::inline_size(
13358                    decoder.context
13359                );
13360                if inlined != (member_inline_size <= 4) {
13361                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13362                }
13363                let inner_offset;
13364                let mut inner_depth = depth.clone();
13365                if inlined {
13366                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13367                    inner_offset = next_offset;
13368                } else {
13369                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13370                    inner_depth.increment()?;
13371                }
13372                let val_ref = self.ssids.get_or_insert_with(|| {
13373                    fidl::new_empty!(
13374                        fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>,
13375                        D
13376                    )
13377                });
13378                fidl::decode!(
13379                    fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>,
13380                    D,
13381                    val_ref,
13382                    decoder,
13383                    inner_offset,
13384                    inner_depth
13385                )?;
13386                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13387                {
13388                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13389                }
13390                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13391                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13392                }
13393            }
13394
13395            next_offset += envelope_size;
13396            _next_ordinal_to_read += 1;
13397            if next_offset >= end_offset {
13398                return Ok(());
13399            }
13400
13401            // Decode unknown envelopes for gaps in ordinals.
13402            while _next_ordinal_to_read < 5 {
13403                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13404                _next_ordinal_to_read += 1;
13405                next_offset += envelope_size;
13406            }
13407
13408            let next_out_of_line = decoder.next_out_of_line();
13409            let handles_before = decoder.remaining_handles();
13410            if let Some((inlined, num_bytes, num_handles)) =
13411                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13412            {
13413                let member_inline_size =
13414                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13415                if inlined != (member_inline_size <= 4) {
13416                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13417                }
13418                let inner_offset;
13419                let mut inner_depth = depth.clone();
13420                if inlined {
13421                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13422                    inner_offset = next_offset;
13423                } else {
13424                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13425                    inner_depth.increment()?;
13426                }
13427                let val_ref = self.min_channel_time.get_or_insert_with(|| fidl::new_empty!(u32, D));
13428                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
13429                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13430                {
13431                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13432                }
13433                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13434                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13435                }
13436            }
13437
13438            next_offset += envelope_size;
13439            _next_ordinal_to_read += 1;
13440            if next_offset >= end_offset {
13441                return Ok(());
13442            }
13443
13444            // Decode unknown envelopes for gaps in ordinals.
13445            while _next_ordinal_to_read < 6 {
13446                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13447                _next_ordinal_to_read += 1;
13448                next_offset += envelope_size;
13449            }
13450
13451            let next_out_of_line = decoder.next_out_of_line();
13452            let handles_before = decoder.remaining_handles();
13453            if let Some((inlined, num_bytes, num_handles)) =
13454                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13455            {
13456                let member_inline_size =
13457                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13458                if inlined != (member_inline_size <= 4) {
13459                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13460                }
13461                let inner_offset;
13462                let mut inner_depth = depth.clone();
13463                if inlined {
13464                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13465                    inner_offset = next_offset;
13466                } else {
13467                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13468                    inner_depth.increment()?;
13469                }
13470                let val_ref = self.max_channel_time.get_or_insert_with(|| fidl::new_empty!(u32, D));
13471                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
13472                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13473                {
13474                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13475                }
13476                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13477                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13478                }
13479            }
13480
13481            next_offset += envelope_size;
13482
13483            // Decode the remaining unknown envelopes.
13484            while next_offset < end_offset {
13485                _next_ordinal_to_read += 1;
13486                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13487                next_offset += envelope_size;
13488            }
13489
13490            Ok(())
13491        }
13492    }
13493
13494    impl WlanFullmacImplStopBssRequest {
13495        #[inline(always)]
13496        fn max_ordinal_present(&self) -> u64 {
13497            if let Some(_) = self.ssid {
13498                return 1;
13499            }
13500            0
13501        }
13502    }
13503
13504    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplStopBssRequest {
13505        type Borrowed<'a> = &'a Self;
13506        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13507            value
13508        }
13509    }
13510
13511    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplStopBssRequest {
13512        type Owned = Self;
13513
13514        #[inline(always)]
13515        fn inline_align(_context: fidl::encoding::Context) -> usize {
13516            8
13517        }
13518
13519        #[inline(always)]
13520        fn inline_size(_context: fidl::encoding::Context) -> usize {
13521            16
13522        }
13523    }
13524
13525    unsafe impl<D: fidl::encoding::ResourceDialect>
13526        fidl::encoding::Encode<WlanFullmacImplStopBssRequest, D>
13527        for &WlanFullmacImplStopBssRequest
13528    {
13529        unsafe fn encode(
13530            self,
13531            encoder: &mut fidl::encoding::Encoder<'_, D>,
13532            offset: usize,
13533            mut depth: fidl::encoding::Depth,
13534        ) -> fidl::Result<()> {
13535            encoder.debug_check_bounds::<WlanFullmacImplStopBssRequest>(offset);
13536            // Vector header
13537            let max_ordinal: u64 = self.max_ordinal_present();
13538            encoder.write_num(max_ordinal, offset);
13539            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13540            // Calling encoder.out_of_line_offset(0) is not allowed.
13541            if max_ordinal == 0 {
13542                return Ok(());
13543            }
13544            depth.increment()?;
13545            let envelope_size = 8;
13546            let bytes_len = max_ordinal as usize * envelope_size;
13547            #[allow(unused_variables)]
13548            let offset = encoder.out_of_line_offset(bytes_len);
13549            let mut _prev_end_offset: usize = 0;
13550            if 1 > max_ordinal {
13551                return Ok(());
13552            }
13553
13554            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13555            // are envelope_size bytes.
13556            let cur_offset: usize = (1 - 1) * envelope_size;
13557
13558            // Zero reserved fields.
13559            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13560
13561            // Safety:
13562            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13563            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13564            //   envelope_size bytes, there is always sufficient room.
13565            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
13566                self.ssid.as_ref().map(
13567                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
13568                ),
13569                encoder,
13570                offset + cur_offset,
13571                depth,
13572            )?;
13573
13574            _prev_end_offset = cur_offset + envelope_size;
13575
13576            Ok(())
13577        }
13578    }
13579
13580    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
13581        for WlanFullmacImplStopBssRequest
13582    {
13583        #[inline(always)]
13584        fn new_empty() -> Self {
13585            Self::default()
13586        }
13587
13588        unsafe fn decode(
13589            &mut self,
13590            decoder: &mut fidl::encoding::Decoder<'_, D>,
13591            offset: usize,
13592            mut depth: fidl::encoding::Depth,
13593        ) -> fidl::Result<()> {
13594            decoder.debug_check_bounds::<Self>(offset);
13595            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13596                None => return Err(fidl::Error::NotNullable),
13597                Some(len) => len,
13598            };
13599            // Calling decoder.out_of_line_offset(0) is not allowed.
13600            if len == 0 {
13601                return Ok(());
13602            };
13603            depth.increment()?;
13604            let envelope_size = 8;
13605            let bytes_len = len * envelope_size;
13606            let offset = decoder.out_of_line_offset(bytes_len)?;
13607            // Decode the envelope for each type.
13608            let mut _next_ordinal_to_read = 0;
13609            let mut next_offset = offset;
13610            let end_offset = offset + bytes_len;
13611            _next_ordinal_to_read += 1;
13612            if next_offset >= end_offset {
13613                return Ok(());
13614            }
13615
13616            // Decode unknown envelopes for gaps in ordinals.
13617            while _next_ordinal_to_read < 1 {
13618                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13619                _next_ordinal_to_read += 1;
13620                next_offset += envelope_size;
13621            }
13622
13623            let next_out_of_line = decoder.next_out_of_line();
13624            let handles_before = decoder.remaining_handles();
13625            if let Some((inlined, num_bytes, num_handles)) =
13626                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13627            {
13628                let member_inline_size =
13629                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
13630                        decoder.context,
13631                    );
13632                if inlined != (member_inline_size <= 4) {
13633                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13634                }
13635                let inner_offset;
13636                let mut inner_depth = depth.clone();
13637                if inlined {
13638                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13639                    inner_offset = next_offset;
13640                } else {
13641                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13642                    inner_depth.increment()?;
13643                }
13644                let val_ref = self
13645                    .ssid
13646                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
13647                fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
13648                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13649                {
13650                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13651                }
13652                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13653                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13654                }
13655            }
13656
13657            next_offset += envelope_size;
13658
13659            // Decode the remaining unknown envelopes.
13660            while next_offset < end_offset {
13661                _next_ordinal_to_read += 1;
13662                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13663                next_offset += envelope_size;
13664            }
13665
13666            Ok(())
13667        }
13668    }
13669
13670    impl WlanFullmacImplQuerySecuritySupportResponse {
13671        #[inline(always)]
13672        fn max_ordinal_present(&self) -> u64 {
13673            if let Some(_) = self.resp {
13674                return 1;
13675            }
13676            0
13677        }
13678    }
13679
13680    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplQuerySecuritySupportResponse {
13681        type Borrowed<'a> = &'a Self;
13682        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13683            value
13684        }
13685    }
13686
13687    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplQuerySecuritySupportResponse {
13688        type Owned = Self;
13689
13690        #[inline(always)]
13691        fn inline_align(_context: fidl::encoding::Context) -> usize {
13692            8
13693        }
13694
13695        #[inline(always)]
13696        fn inline_size(_context: fidl::encoding::Context) -> usize {
13697            16
13698        }
13699    }
13700
13701    unsafe impl<D: fidl::encoding::ResourceDialect>
13702        fidl::encoding::Encode<WlanFullmacImplQuerySecuritySupportResponse, D>
13703        for &WlanFullmacImplQuerySecuritySupportResponse
13704    {
13705        unsafe fn encode(
13706            self,
13707            encoder: &mut fidl::encoding::Encoder<'_, D>,
13708            offset: usize,
13709            mut depth: fidl::encoding::Depth,
13710        ) -> fidl::Result<()> {
13711            encoder.debug_check_bounds::<WlanFullmacImplQuerySecuritySupportResponse>(offset);
13712            // Vector header
13713            let max_ordinal: u64 = self.max_ordinal_present();
13714            encoder.write_num(max_ordinal, offset);
13715            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13716            // Calling encoder.out_of_line_offset(0) is not allowed.
13717            if max_ordinal == 0 {
13718                return Ok(());
13719            }
13720            depth.increment()?;
13721            let envelope_size = 8;
13722            let bytes_len = max_ordinal as usize * envelope_size;
13723            #[allow(unused_variables)]
13724            let offset = encoder.out_of_line_offset(bytes_len);
13725            let mut _prev_end_offset: usize = 0;
13726            if 1 > max_ordinal {
13727                return Ok(());
13728            }
13729
13730            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13731            // are envelope_size bytes.
13732            let cur_offset: usize = (1 - 1) * envelope_size;
13733
13734            // Zero reserved fields.
13735            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13736
13737            // Safety:
13738            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13739            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13740            //   envelope_size bytes, there is always sufficient room.
13741            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common__common::SecuritySupport, D>(
13742            self.resp.as_ref().map(<fidl_fuchsia_wlan_common__common::SecuritySupport as fidl::encoding::ValueTypeMarker>::borrow),
13743            encoder, offset + cur_offset, depth
13744        )?;
13745
13746            _prev_end_offset = cur_offset + envelope_size;
13747
13748            Ok(())
13749        }
13750    }
13751
13752    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
13753        for WlanFullmacImplQuerySecuritySupportResponse
13754    {
13755        #[inline(always)]
13756        fn new_empty() -> Self {
13757            Self::default()
13758        }
13759
13760        unsafe fn decode(
13761            &mut self,
13762            decoder: &mut fidl::encoding::Decoder<'_, D>,
13763            offset: usize,
13764            mut depth: fidl::encoding::Depth,
13765        ) -> fidl::Result<()> {
13766            decoder.debug_check_bounds::<Self>(offset);
13767            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13768                None => return Err(fidl::Error::NotNullable),
13769                Some(len) => len,
13770            };
13771            // Calling decoder.out_of_line_offset(0) is not allowed.
13772            if len == 0 {
13773                return Ok(());
13774            };
13775            depth.increment()?;
13776            let envelope_size = 8;
13777            let bytes_len = len * envelope_size;
13778            let offset = decoder.out_of_line_offset(bytes_len)?;
13779            // Decode the envelope for each type.
13780            let mut _next_ordinal_to_read = 0;
13781            let mut next_offset = offset;
13782            let end_offset = offset + bytes_len;
13783            _next_ordinal_to_read += 1;
13784            if next_offset >= end_offset {
13785                return Ok(());
13786            }
13787
13788            // Decode unknown envelopes for gaps in ordinals.
13789            while _next_ordinal_to_read < 1 {
13790                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13791                _next_ordinal_to_read += 1;
13792                next_offset += envelope_size;
13793            }
13794
13795            let next_out_of_line = decoder.next_out_of_line();
13796            let handles_before = decoder.remaining_handles();
13797            if let Some((inlined, num_bytes, num_handles)) =
13798                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13799            {
13800                let member_inline_size = <fidl_fuchsia_wlan_common__common::SecuritySupport as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13801                if inlined != (member_inline_size <= 4) {
13802                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13803                }
13804                let inner_offset;
13805                let mut inner_depth = depth.clone();
13806                if inlined {
13807                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13808                    inner_offset = next_offset;
13809                } else {
13810                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13811                    inner_depth.increment()?;
13812                }
13813                let val_ref = self.resp.get_or_insert_with(|| {
13814                    fidl::new_empty!(fidl_fuchsia_wlan_common__common::SecuritySupport, D)
13815                });
13816                fidl::decode!(
13817                    fidl_fuchsia_wlan_common__common::SecuritySupport,
13818                    D,
13819                    val_ref,
13820                    decoder,
13821                    inner_offset,
13822                    inner_depth
13823                )?;
13824                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13825                {
13826                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13827                }
13828                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13829                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13830                }
13831            }
13832
13833            next_offset += envelope_size;
13834
13835            // Decode the remaining unknown envelopes.
13836            while next_offset < end_offset {
13837                _next_ordinal_to_read += 1;
13838                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13839                next_offset += envelope_size;
13840            }
13841
13842            Ok(())
13843        }
13844    }
13845
13846    impl WlanFullmacImplQuerySpectrumManagementSupportResponse {
13847        #[inline(always)]
13848        fn max_ordinal_present(&self) -> u64 {
13849            if let Some(_) = self.resp {
13850                return 1;
13851            }
13852            0
13853        }
13854    }
13855
13856    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplQuerySpectrumManagementSupportResponse {
13857        type Borrowed<'a> = &'a Self;
13858        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13859            value
13860        }
13861    }
13862
13863    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplQuerySpectrumManagementSupportResponse {
13864        type Owned = Self;
13865
13866        #[inline(always)]
13867        fn inline_align(_context: fidl::encoding::Context) -> usize {
13868            8
13869        }
13870
13871        #[inline(always)]
13872        fn inline_size(_context: fidl::encoding::Context) -> usize {
13873            16
13874        }
13875    }
13876
13877    unsafe impl<D: fidl::encoding::ResourceDialect>
13878        fidl::encoding::Encode<WlanFullmacImplQuerySpectrumManagementSupportResponse, D>
13879        for &WlanFullmacImplQuerySpectrumManagementSupportResponse
13880    {
13881        unsafe fn encode(
13882            self,
13883            encoder: &mut fidl::encoding::Encoder<'_, D>,
13884            offset: usize,
13885            mut depth: fidl::encoding::Depth,
13886        ) -> fidl::Result<()> {
13887            encoder.debug_check_bounds::<WlanFullmacImplQuerySpectrumManagementSupportResponse>(
13888                offset,
13889            );
13890            // Vector header
13891            let max_ordinal: u64 = self.max_ordinal_present();
13892            encoder.write_num(max_ordinal, offset);
13893            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13894            // Calling encoder.out_of_line_offset(0) is not allowed.
13895            if max_ordinal == 0 {
13896                return Ok(());
13897            }
13898            depth.increment()?;
13899            let envelope_size = 8;
13900            let bytes_len = max_ordinal as usize * envelope_size;
13901            #[allow(unused_variables)]
13902            let offset = encoder.out_of_line_offset(bytes_len);
13903            let mut _prev_end_offset: usize = 0;
13904            if 1 > max_ordinal {
13905                return Ok(());
13906            }
13907
13908            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13909            // are envelope_size bytes.
13910            let cur_offset: usize = (1 - 1) * envelope_size;
13911
13912            // Zero reserved fields.
13913            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13914
13915            // Safety:
13916            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13917            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13918            //   envelope_size bytes, there is always sufficient room.
13919            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common__common::SpectrumManagementSupport, D>(
13920            self.resp.as_ref().map(<fidl_fuchsia_wlan_common__common::SpectrumManagementSupport as fidl::encoding::ValueTypeMarker>::borrow),
13921            encoder, offset + cur_offset, depth
13922        )?;
13923
13924            _prev_end_offset = cur_offset + envelope_size;
13925
13926            Ok(())
13927        }
13928    }
13929
13930    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
13931        for WlanFullmacImplQuerySpectrumManagementSupportResponse
13932    {
13933        #[inline(always)]
13934        fn new_empty() -> Self {
13935            Self::default()
13936        }
13937
13938        unsafe fn decode(
13939            &mut self,
13940            decoder: &mut fidl::encoding::Decoder<'_, D>,
13941            offset: usize,
13942            mut depth: fidl::encoding::Depth,
13943        ) -> fidl::Result<()> {
13944            decoder.debug_check_bounds::<Self>(offset);
13945            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13946                None => return Err(fidl::Error::NotNullable),
13947                Some(len) => len,
13948            };
13949            // Calling decoder.out_of_line_offset(0) is not allowed.
13950            if len == 0 {
13951                return Ok(());
13952            };
13953            depth.increment()?;
13954            let envelope_size = 8;
13955            let bytes_len = len * envelope_size;
13956            let offset = decoder.out_of_line_offset(bytes_len)?;
13957            // Decode the envelope for each type.
13958            let mut _next_ordinal_to_read = 0;
13959            let mut next_offset = offset;
13960            let end_offset = offset + bytes_len;
13961            _next_ordinal_to_read += 1;
13962            if next_offset >= end_offset {
13963                return Ok(());
13964            }
13965
13966            // Decode unknown envelopes for gaps in ordinals.
13967            while _next_ordinal_to_read < 1 {
13968                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13969                _next_ordinal_to_read += 1;
13970                next_offset += envelope_size;
13971            }
13972
13973            let next_out_of_line = decoder.next_out_of_line();
13974            let handles_before = decoder.remaining_handles();
13975            if let Some((inlined, num_bytes, num_handles)) =
13976                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13977            {
13978                let member_inline_size = <fidl_fuchsia_wlan_common__common::SpectrumManagementSupport as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13979                if inlined != (member_inline_size <= 4) {
13980                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13981                }
13982                let inner_offset;
13983                let mut inner_depth = depth.clone();
13984                if inlined {
13985                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13986                    inner_offset = next_offset;
13987                } else {
13988                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13989                    inner_depth.increment()?;
13990                }
13991                let val_ref = self.resp.get_or_insert_with(|| {
13992                    fidl::new_empty!(fidl_fuchsia_wlan_common__common::SpectrumManagementSupport, D)
13993                });
13994                fidl::decode!(
13995                    fidl_fuchsia_wlan_common__common::SpectrumManagementSupport,
13996                    D,
13997                    val_ref,
13998                    decoder,
13999                    inner_offset,
14000                    inner_depth
14001                )?;
14002                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14003                {
14004                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14005                }
14006                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14007                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14008                }
14009            }
14010
14011            next_offset += envelope_size;
14012
14013            // Decode the remaining unknown envelopes.
14014            while next_offset < end_offset {
14015                _next_ordinal_to_read += 1;
14016                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14017                next_offset += envelope_size;
14018            }
14019
14020            Ok(())
14021        }
14022    }
14023
14024    impl WlanFullmacImplQueryTelemetrySupportResponse {
14025        #[inline(always)]
14026        fn max_ordinal_present(&self) -> u64 {
14027            if let Some(_) = self.resp {
14028                return 1;
14029            }
14030            0
14031        }
14032    }
14033
14034    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplQueryTelemetrySupportResponse {
14035        type Borrowed<'a> = &'a Self;
14036        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14037            value
14038        }
14039    }
14040
14041    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplQueryTelemetrySupportResponse {
14042        type Owned = Self;
14043
14044        #[inline(always)]
14045        fn inline_align(_context: fidl::encoding::Context) -> usize {
14046            8
14047        }
14048
14049        #[inline(always)]
14050        fn inline_size(_context: fidl::encoding::Context) -> usize {
14051            16
14052        }
14053    }
14054
14055    unsafe impl<D: fidl::encoding::ResourceDialect>
14056        fidl::encoding::Encode<WlanFullmacImplQueryTelemetrySupportResponse, D>
14057        for &WlanFullmacImplQueryTelemetrySupportResponse
14058    {
14059        unsafe fn encode(
14060            self,
14061            encoder: &mut fidl::encoding::Encoder<'_, D>,
14062            offset: usize,
14063            mut depth: fidl::encoding::Depth,
14064        ) -> fidl::Result<()> {
14065            encoder.debug_check_bounds::<WlanFullmacImplQueryTelemetrySupportResponse>(offset);
14066            // Vector header
14067            let max_ordinal: u64 = self.max_ordinal_present();
14068            encoder.write_num(max_ordinal, offset);
14069            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14070            // Calling encoder.out_of_line_offset(0) is not allowed.
14071            if max_ordinal == 0 {
14072                return Ok(());
14073            }
14074            depth.increment()?;
14075            let envelope_size = 8;
14076            let bytes_len = max_ordinal as usize * envelope_size;
14077            #[allow(unused_variables)]
14078            let offset = encoder.out_of_line_offset(bytes_len);
14079            let mut _prev_end_offset: usize = 0;
14080            if 1 > max_ordinal {
14081                return Ok(());
14082            }
14083
14084            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14085            // are envelope_size bytes.
14086            let cur_offset: usize = (1 - 1) * envelope_size;
14087
14088            // Zero reserved fields.
14089            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14090
14091            // Safety:
14092            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14093            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14094            //   envelope_size bytes, there is always sufficient room.
14095            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_stats__common::TelemetrySupport, D>(
14096            self.resp.as_ref().map(<fidl_fuchsia_wlan_stats__common::TelemetrySupport as fidl::encoding::ValueTypeMarker>::borrow),
14097            encoder, offset + cur_offset, depth
14098        )?;
14099
14100            _prev_end_offset = cur_offset + envelope_size;
14101
14102            Ok(())
14103        }
14104    }
14105
14106    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14107        for WlanFullmacImplQueryTelemetrySupportResponse
14108    {
14109        #[inline(always)]
14110        fn new_empty() -> Self {
14111            Self::default()
14112        }
14113
14114        unsafe fn decode(
14115            &mut self,
14116            decoder: &mut fidl::encoding::Decoder<'_, D>,
14117            offset: usize,
14118            mut depth: fidl::encoding::Depth,
14119        ) -> fidl::Result<()> {
14120            decoder.debug_check_bounds::<Self>(offset);
14121            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14122                None => return Err(fidl::Error::NotNullable),
14123                Some(len) => len,
14124            };
14125            // Calling decoder.out_of_line_offset(0) is not allowed.
14126            if len == 0 {
14127                return Ok(());
14128            };
14129            depth.increment()?;
14130            let envelope_size = 8;
14131            let bytes_len = len * envelope_size;
14132            let offset = decoder.out_of_line_offset(bytes_len)?;
14133            // Decode the envelope for each type.
14134            let mut _next_ordinal_to_read = 0;
14135            let mut next_offset = offset;
14136            let end_offset = offset + bytes_len;
14137            _next_ordinal_to_read += 1;
14138            if next_offset >= end_offset {
14139                return Ok(());
14140            }
14141
14142            // Decode unknown envelopes for gaps in ordinals.
14143            while _next_ordinal_to_read < 1 {
14144                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14145                _next_ordinal_to_read += 1;
14146                next_offset += envelope_size;
14147            }
14148
14149            let next_out_of_line = decoder.next_out_of_line();
14150            let handles_before = decoder.remaining_handles();
14151            if let Some((inlined, num_bytes, num_handles)) =
14152                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14153            {
14154                let member_inline_size = <fidl_fuchsia_wlan_stats__common::TelemetrySupport as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14155                if inlined != (member_inline_size <= 4) {
14156                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14157                }
14158                let inner_offset;
14159                let mut inner_depth = depth.clone();
14160                if inlined {
14161                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14162                    inner_offset = next_offset;
14163                } else {
14164                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14165                    inner_depth.increment()?;
14166                }
14167                let val_ref = self.resp.get_or_insert_with(|| {
14168                    fidl::new_empty!(fidl_fuchsia_wlan_stats__common::TelemetrySupport, D)
14169                });
14170                fidl::decode!(
14171                    fidl_fuchsia_wlan_stats__common::TelemetrySupport,
14172                    D,
14173                    val_ref,
14174                    decoder,
14175                    inner_offset,
14176                    inner_depth
14177                )?;
14178                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14179                {
14180                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14181                }
14182                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14183                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14184                }
14185            }
14186
14187            next_offset += envelope_size;
14188
14189            // Decode the remaining unknown envelopes.
14190            while next_offset < end_offset {
14191                _next_ordinal_to_read += 1;
14192                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14193                next_offset += envelope_size;
14194            }
14195
14196            Ok(())
14197        }
14198    }
14199
14200    impl WlanFullmacImplQueryResponse {
14201        #[inline(always)]
14202        fn max_ordinal_present(&self) -> u64 {
14203            if let Some(_) = self.factory_addr {
14204                return 4;
14205            }
14206            if let Some(_) = self.band_caps {
14207                return 3;
14208            }
14209            if let Some(_) = self.role {
14210                return 2;
14211            }
14212            if let Some(_) = self.sta_addr {
14213                return 1;
14214            }
14215            0
14216        }
14217    }
14218
14219    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplQueryResponse {
14220        type Borrowed<'a> = &'a Self;
14221        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14222            value
14223        }
14224    }
14225
14226    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplQueryResponse {
14227        type Owned = Self;
14228
14229        #[inline(always)]
14230        fn inline_align(_context: fidl::encoding::Context) -> usize {
14231            8
14232        }
14233
14234        #[inline(always)]
14235        fn inline_size(_context: fidl::encoding::Context) -> usize {
14236            16
14237        }
14238    }
14239
14240    unsafe impl<D: fidl::encoding::ResourceDialect>
14241        fidl::encoding::Encode<WlanFullmacImplQueryResponse, D> for &WlanFullmacImplQueryResponse
14242    {
14243        unsafe fn encode(
14244            self,
14245            encoder: &mut fidl::encoding::Encoder<'_, D>,
14246            offset: usize,
14247            mut depth: fidl::encoding::Depth,
14248        ) -> fidl::Result<()> {
14249            encoder.debug_check_bounds::<WlanFullmacImplQueryResponse>(offset);
14250            // Vector header
14251            let max_ordinal: u64 = self.max_ordinal_present();
14252            encoder.write_num(max_ordinal, offset);
14253            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14254            // Calling encoder.out_of_line_offset(0) is not allowed.
14255            if max_ordinal == 0 {
14256                return Ok(());
14257            }
14258            depth.increment()?;
14259            let envelope_size = 8;
14260            let bytes_len = max_ordinal as usize * envelope_size;
14261            #[allow(unused_variables)]
14262            let offset = encoder.out_of_line_offset(bytes_len);
14263            let mut _prev_end_offset: usize = 0;
14264            if 1 > max_ordinal {
14265                return Ok(());
14266            }
14267
14268            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14269            // are envelope_size bytes.
14270            let cur_offset: usize = (1 - 1) * envelope_size;
14271
14272            // Zero reserved fields.
14273            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14274
14275            // Safety:
14276            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14277            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14278            //   envelope_size bytes, there is always sufficient room.
14279            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
14280                self.sta_addr
14281                    .as_ref()
14282                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
14283                encoder,
14284                offset + cur_offset,
14285                depth,
14286            )?;
14287
14288            _prev_end_offset = cur_offset + envelope_size;
14289            if 2 > max_ordinal {
14290                return Ok(());
14291            }
14292
14293            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14294            // are envelope_size bytes.
14295            let cur_offset: usize = (2 - 1) * envelope_size;
14296
14297            // Zero reserved fields.
14298            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14299
14300            // Safety:
14301            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14302            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14303            //   envelope_size bytes, there is always sufficient room.
14304            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common__common::WlanMacRole, D>(
14305            self.role.as_ref().map(<fidl_fuchsia_wlan_common__common::WlanMacRole as fidl::encoding::ValueTypeMarker>::borrow),
14306            encoder, offset + cur_offset, depth
14307        )?;
14308
14309            _prev_end_offset = cur_offset + envelope_size;
14310            if 3 > max_ordinal {
14311                return Ok(());
14312            }
14313
14314            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14315            // are envelope_size bytes.
14316            let cur_offset: usize = (3 - 1) * envelope_size;
14317
14318            // Zero reserved fields.
14319            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14320
14321            // Safety:
14322            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14323            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14324            //   envelope_size bytes, there is always sufficient room.
14325            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<BandCapability, 16>, D>(
14326            self.band_caps.as_ref().map(<fidl::encoding::Vector<BandCapability, 16> as fidl::encoding::ValueTypeMarker>::borrow),
14327            encoder, offset + cur_offset, depth
14328        )?;
14329
14330            _prev_end_offset = cur_offset + envelope_size;
14331            if 4 > max_ordinal {
14332                return Ok(());
14333            }
14334
14335            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14336            // are envelope_size bytes.
14337            let cur_offset: usize = (4 - 1) * envelope_size;
14338
14339            // Zero reserved fields.
14340            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14341
14342            // Safety:
14343            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14344            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14345            //   envelope_size bytes, there is always sufficient room.
14346            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
14347                self.factory_addr
14348                    .as_ref()
14349                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
14350                encoder,
14351                offset + cur_offset,
14352                depth,
14353            )?;
14354
14355            _prev_end_offset = cur_offset + envelope_size;
14356
14357            Ok(())
14358        }
14359    }
14360
14361    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14362        for WlanFullmacImplQueryResponse
14363    {
14364        #[inline(always)]
14365        fn new_empty() -> Self {
14366            Self::default()
14367        }
14368
14369        unsafe fn decode(
14370            &mut self,
14371            decoder: &mut fidl::encoding::Decoder<'_, D>,
14372            offset: usize,
14373            mut depth: fidl::encoding::Depth,
14374        ) -> fidl::Result<()> {
14375            decoder.debug_check_bounds::<Self>(offset);
14376            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14377                None => return Err(fidl::Error::NotNullable),
14378                Some(len) => len,
14379            };
14380            // Calling decoder.out_of_line_offset(0) is not allowed.
14381            if len == 0 {
14382                return Ok(());
14383            };
14384            depth.increment()?;
14385            let envelope_size = 8;
14386            let bytes_len = len * envelope_size;
14387            let offset = decoder.out_of_line_offset(bytes_len)?;
14388            // Decode the envelope for each type.
14389            let mut _next_ordinal_to_read = 0;
14390            let mut next_offset = offset;
14391            let end_offset = offset + bytes_len;
14392            _next_ordinal_to_read += 1;
14393            if next_offset >= end_offset {
14394                return Ok(());
14395            }
14396
14397            // Decode unknown envelopes for gaps in ordinals.
14398            while _next_ordinal_to_read < 1 {
14399                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14400                _next_ordinal_to_read += 1;
14401                next_offset += envelope_size;
14402            }
14403
14404            let next_out_of_line = decoder.next_out_of_line();
14405            let handles_before = decoder.remaining_handles();
14406            if let Some((inlined, num_bytes, num_handles)) =
14407                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14408            {
14409                let member_inline_size =
14410                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
14411                        decoder.context,
14412                    );
14413                if inlined != (member_inline_size <= 4) {
14414                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14415                }
14416                let inner_offset;
14417                let mut inner_depth = depth.clone();
14418                if inlined {
14419                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14420                    inner_offset = next_offset;
14421                } else {
14422                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14423                    inner_depth.increment()?;
14424                }
14425                let val_ref = self
14426                    .sta_addr
14427                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
14428                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
14429                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14430                {
14431                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14432                }
14433                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14434                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14435                }
14436            }
14437
14438            next_offset += envelope_size;
14439            _next_ordinal_to_read += 1;
14440            if next_offset >= end_offset {
14441                return Ok(());
14442            }
14443
14444            // Decode unknown envelopes for gaps in ordinals.
14445            while _next_ordinal_to_read < 2 {
14446                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14447                _next_ordinal_to_read += 1;
14448                next_offset += envelope_size;
14449            }
14450
14451            let next_out_of_line = decoder.next_out_of_line();
14452            let handles_before = decoder.remaining_handles();
14453            if let Some((inlined, num_bytes, num_handles)) =
14454                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14455            {
14456                let member_inline_size = <fidl_fuchsia_wlan_common__common::WlanMacRole as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14457                if inlined != (member_inline_size <= 4) {
14458                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14459                }
14460                let inner_offset;
14461                let mut inner_depth = depth.clone();
14462                if inlined {
14463                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14464                    inner_offset = next_offset;
14465                } else {
14466                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14467                    inner_depth.increment()?;
14468                }
14469                let val_ref = self.role.get_or_insert_with(|| {
14470                    fidl::new_empty!(fidl_fuchsia_wlan_common__common::WlanMacRole, D)
14471                });
14472                fidl::decode!(
14473                    fidl_fuchsia_wlan_common__common::WlanMacRole,
14474                    D,
14475                    val_ref,
14476                    decoder,
14477                    inner_offset,
14478                    inner_depth
14479                )?;
14480                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14481                {
14482                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14483                }
14484                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14485                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14486                }
14487            }
14488
14489            next_offset += envelope_size;
14490            _next_ordinal_to_read += 1;
14491            if next_offset >= end_offset {
14492                return Ok(());
14493            }
14494
14495            // Decode unknown envelopes for gaps in ordinals.
14496            while _next_ordinal_to_read < 3 {
14497                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14498                _next_ordinal_to_read += 1;
14499                next_offset += envelope_size;
14500            }
14501
14502            let next_out_of_line = decoder.next_out_of_line();
14503            let handles_before = decoder.remaining_handles();
14504            if let Some((inlined, num_bytes, num_handles)) =
14505                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14506            {
14507                let member_inline_size = <fidl::encoding::Vector<BandCapability, 16> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14508                if inlined != (member_inline_size <= 4) {
14509                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14510                }
14511                let inner_offset;
14512                let mut inner_depth = depth.clone();
14513                if inlined {
14514                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14515                    inner_offset = next_offset;
14516                } else {
14517                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14518                    inner_depth.increment()?;
14519                }
14520                let val_ref = self.band_caps.get_or_insert_with(
14521                    || fidl::new_empty!(fidl::encoding::Vector<BandCapability, 16>, D),
14522                );
14523                fidl::decode!(fidl::encoding::Vector<BandCapability, 16>, D, val_ref, decoder, inner_offset, inner_depth)?;
14524                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14525                {
14526                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14527                }
14528                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14529                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14530                }
14531            }
14532
14533            next_offset += envelope_size;
14534            _next_ordinal_to_read += 1;
14535            if next_offset >= end_offset {
14536                return Ok(());
14537            }
14538
14539            // Decode unknown envelopes for gaps in ordinals.
14540            while _next_ordinal_to_read < 4 {
14541                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14542                _next_ordinal_to_read += 1;
14543                next_offset += envelope_size;
14544            }
14545
14546            let next_out_of_line = decoder.next_out_of_line();
14547            let handles_before = decoder.remaining_handles();
14548            if let Some((inlined, num_bytes, num_handles)) =
14549                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14550            {
14551                let member_inline_size =
14552                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
14553                        decoder.context,
14554                    );
14555                if inlined != (member_inline_size <= 4) {
14556                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14557                }
14558                let inner_offset;
14559                let mut inner_depth = depth.clone();
14560                if inlined {
14561                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14562                    inner_offset = next_offset;
14563                } else {
14564                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14565                    inner_depth.increment()?;
14566                }
14567                let val_ref = self
14568                    .factory_addr
14569                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
14570                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
14571                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14572                {
14573                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14574                }
14575                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14576                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14577                }
14578            }
14579
14580            next_offset += envelope_size;
14581
14582            // Decode the remaining unknown envelopes.
14583            while next_offset < end_offset {
14584                _next_ordinal_to_read += 1;
14585                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14586                next_offset += envelope_size;
14587            }
14588
14589            Ok(())
14590        }
14591    }
14592}