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    /// OWE public key used for Diffie Hellman exchange during association.
777    /// This is only populated for the OWE security type, otherwise this field is empty.
778    pub owe_public_key: Option<WlanFullmacOwePublicKey>,
779    #[doc(hidden)]
780    pub __source_breaking: fidl::marker::SourceBreaking,
781}
782
783impl fidl::Persistable for WlanFullmacImplConnectRequest {}
784
785#[derive(Clone, Debug, Default, PartialEq)]
786pub struct WlanFullmacImplDeauthRequest {
787    pub peer_sta_address: Option<[u8; 6]>,
788    pub reason_code: Option<fidl_fuchsia_wlan_ieee80211__common::ReasonCode>,
789    #[doc(hidden)]
790    pub __source_breaking: fidl::marker::SourceBreaking,
791}
792
793impl fidl::Persistable for WlanFullmacImplDeauthRequest {}
794
795#[derive(Clone, Debug, Default, PartialEq)]
796pub struct WlanFullmacImplDisassocRequest {
797    pub peer_sta_address: Option<[u8; 6]>,
798    pub reason_code: Option<fidl_fuchsia_wlan_ieee80211__common::ReasonCode>,
799    #[doc(hidden)]
800    pub __source_breaking: fidl::marker::SourceBreaking,
801}
802
803impl fidl::Persistable for WlanFullmacImplDisassocRequest {}
804
805#[derive(Clone, Debug, Default, PartialEq)]
806pub struct WlanFullmacImplEapolTxRequest {
807    pub src_addr: Option<[u8; 6]>,
808    pub dst_addr: Option<[u8; 6]>,
809    pub data: Option<Vec<u8>>,
810    #[doc(hidden)]
811    pub __source_breaking: fidl::marker::SourceBreaking,
812}
813
814impl fidl::Persistable for WlanFullmacImplEapolTxRequest {}
815
816#[derive(Clone, Debug, Default, PartialEq)]
817pub struct WlanFullmacImplIfcAssocIndRequest {
818    pub peer_sta_address: Option<[u8; 6]>,
819    pub listen_interval: Option<u16>,
820    pub ssid: Option<Vec<u8>>,
821    pub rsne: Option<Vec<u8>>,
822    pub vendor_ie: Option<Vec<u8>>,
823    #[doc(hidden)]
824    pub __source_breaking: fidl::marker::SourceBreaking,
825}
826
827impl fidl::Persistable for WlanFullmacImplIfcAssocIndRequest {}
828
829#[derive(Clone, Debug, Default, PartialEq)]
830pub struct WlanFullmacImplIfcAuthIndRequest {
831    pub peer_sta_address: Option<[u8; 6]>,
832    pub auth_type: Option<WlanAuthType>,
833    #[doc(hidden)]
834    pub __source_breaking: fidl::marker::SourceBreaking,
835}
836
837impl fidl::Persistable for WlanFullmacImplIfcAuthIndRequest {}
838
839#[derive(Clone, Debug, Default, PartialEq)]
840pub struct WlanFullmacImplIfcConnectConfRequest {
841    pub peer_sta_address: Option<[u8; 6]>,
842    pub result_code: Option<fidl_fuchsia_wlan_ieee80211__common::StatusCode>,
843    pub association_id: Option<u16>,
844    pub association_ies: Option<Vec<u8>>,
845    #[doc(hidden)]
846    pub __source_breaking: fidl::marker::SourceBreaking,
847}
848
849impl fidl::Persistable for WlanFullmacImplIfcConnectConfRequest {}
850
851#[derive(Clone, Debug, Default, PartialEq)]
852pub struct WlanFullmacImplIfcDeauthConfRequest {
853    pub peer_sta_address: Option<[u8; 6]>,
854    #[doc(hidden)]
855    pub __source_breaking: fidl::marker::SourceBreaking,
856}
857
858impl fidl::Persistable for WlanFullmacImplIfcDeauthConfRequest {}
859
860#[derive(Clone, Debug, Default, PartialEq)]
861pub struct WlanFullmacImplIfcDeauthIndRequest {
862    /// MAC address of the peer. Required.
863    pub peer_sta_address: Option<[u8; 6]>,
864    /// Reason code for deauthentication. Required.
865    pub reason_code: Option<fidl_fuchsia_wlan_ieee80211__common::ReasonCode>,
866    /// locally_initiated is true if deauth is initiated from the device,
867    /// and is false if it's initiated remotely (e.g. due to deauth frame)
868    pub locally_initiated: Option<bool>,
869    #[doc(hidden)]
870    pub __source_breaking: fidl::marker::SourceBreaking,
871}
872
873impl fidl::Persistable for WlanFullmacImplIfcDeauthIndRequest {}
874
875#[derive(Clone, Debug, Default, PartialEq)]
876pub struct WlanFullmacImplIfcDisassocConfRequest {
877    /// ZX_OK indicates that the disassociate request was serviced and the peer was
878    /// disassociated. Other errors indicate that the request could not be serviced, for these
879    /// or other reasons:
880    ///   - ZX_ERR_BAD_STATE: association not possible in current state (e.g. disconnected)
881    ///   - ZX_ERR_INVALID_ARGS: no association exists with specified peer
882    ///   - ZX_ERR_SHOULD_WAIT: disassociate request could not be serviced because firmware or
883    ///     driver was busy
884    pub status: Option<i32>,
885    #[doc(hidden)]
886    pub __source_breaking: fidl::marker::SourceBreaking,
887}
888
889impl fidl::Persistable for WlanFullmacImplIfcDisassocConfRequest {}
890
891#[derive(Clone, Debug, Default, PartialEq)]
892pub struct WlanFullmacImplIfcDisassocIndRequest {
893    /// Address of the peer that was disassociated. Required.
894    pub peer_sta_address: Option<[u8; 6]>,
895    /// Reason for the disassociation. Required.
896    pub reason_code: Option<fidl_fuchsia_wlan_ieee80211__common::ReasonCode>,
897    /// Whether the disassociation was initiated from the device. Required.
898    /// locally_initiated is true if disassociation was initiated from the device (e.g. firmware
899    /// or vendor driver started the disassociation); false if the disassociation was initiated
900    /// externally (e.g. due to receipt of a disassociate frame from an AP).
901    pub locally_initiated: Option<bool>,
902    #[doc(hidden)]
903    pub __source_breaking: fidl::marker::SourceBreaking,
904}
905
906impl fidl::Persistable for WlanFullmacImplIfcDisassocIndRequest {}
907
908#[derive(Clone, Debug, Default, PartialEq)]
909pub struct WlanFullmacImplIfcEapolConfRequest {
910    /// The result of the transmission. Required.
911    pub result_code: Option<EapolTxResult>,
912    /// This value corresponds to the dst_addr in the EapolTxRequest we're confirming.
913    /// IEEE 802.11-2020 does not include this field, but we need it to disambiguate
914    /// if multiple EAPoL handshakes are ongoing.
915    /// Required.
916    pub dst_addr: Option<[u8; 6]>,
917    #[doc(hidden)]
918    pub __source_breaking: fidl::marker::SourceBreaking,
919}
920
921impl fidl::Persistable for WlanFullmacImplIfcEapolConfRequest {}
922
923#[derive(Clone, Debug, Default, PartialEq)]
924pub struct WlanFullmacImplIfcEapolIndRequest {
925    /// The address of the sender. Required.
926    pub src_addr: Option<[u8; 6]>,
927    /// The address of the intended destination. Required.
928    pub dst_addr: Option<[u8; 6]>,
929    /// The bytes of the EAPoL frame data. Required.
930    pub data: Option<Vec<u8>>,
931    #[doc(hidden)]
932    pub __source_breaking: fidl::marker::SourceBreaking,
933}
934
935impl fidl::Persistable for WlanFullmacImplIfcEapolIndRequest {}
936
937#[derive(Clone, Debug, Default, PartialEq)]
938pub struct WlanFullmacImplIfcOnPmkAvailableRequest {
939    /// The pairwise master key bytes. Required.
940    pub pmk: Option<Vec<u8>>,
941    /// The PMK IDs. Required.
942    pub pmkid: Option<Vec<u8>>,
943    #[doc(hidden)]
944    pub __source_breaking: fidl::marker::SourceBreaking,
945}
946
947impl fidl::Persistable for WlanFullmacImplIfcOnPmkAvailableRequest {}
948
949#[derive(Clone, Debug, Default, PartialEq)]
950pub struct WlanFullmacImplIfcOnScanEndRequest {
951    pub txn_id: Option<u64>,
952    pub code: Option<WlanScanResult>,
953    #[doc(hidden)]
954    pub __source_breaking: fidl::marker::SourceBreaking,
955}
956
957impl fidl::Persistable for WlanFullmacImplIfcOnScanEndRequest {}
958
959#[derive(Clone, Debug, Default, PartialEq)]
960pub struct WlanFullmacImplIfcOnScanResultRequest {
961    pub txn_id: Option<u64>,
962    pub timestamp_nanos: Option<i64>,
963    pub bss: Option<fidl_fuchsia_wlan_common__common::BssDescription>,
964    #[doc(hidden)]
965    pub __source_breaking: fidl::marker::SourceBreaking,
966}
967
968impl fidl::Persistable for WlanFullmacImplIfcOnScanResultRequest {}
969
970#[derive(Clone, Debug, Default, PartialEq)]
971pub struct WlanFullmacImplIfcRoamConfRequest {
972    /// BSSID of the target BSS. Required.
973    pub selected_bssid: Option<[u8; 6]>,
974    /// Result of the roam attempt. Required.
975    pub status_code: Option<fidl_fuchsia_wlan_ieee80211__common::StatusCode>,
976    /// Whether the original BSS association has been maintained through the roam attempt. Required.
977    /// A successful roam always incurs disassociation from the original BSS, so if `status_code` is
978    /// success then this field must be set to false; a roam failure typically incurs disassociation
979    /// from the original BSS, but may not in some cases (e.g. in some Fast BSS Transition scenarios).
980    pub original_association_maintained: Option<bool>,
981    /// Whether the client is authenticated with the target BSS. If `status_code` is success, then
982    /// this field must be set to true; if the roam attempt failed, this field may be true or false.
983    /// This allows higher layers to decide how to clean up connection state after a failed roam
984    /// attempt.
985    pub target_bss_authenticated: Option<bool>,
986    /// Association ID for this association with the AP. Required if `status_code` is success.
987    pub association_id: Option<u16>,
988    /// IEs for this association with the AP. Required if `status_code` is success.
989    pub association_ies: Option<Vec<u8>>,
990    #[doc(hidden)]
991    pub __source_breaking: fidl::marker::SourceBreaking,
992}
993
994impl fidl::Persistable for WlanFullmacImplIfcRoamConfRequest {}
995
996#[derive(Clone, Debug, Default, PartialEq)]
997pub struct WlanFullmacImplIfcRoamResultIndRequest {
998    /// BSSID of the target BSS. Required.
999    pub selected_bssid: Option<[u8; 6]>,
1000    /// Result of the roam attempt. Required.
1001    pub status_code: Option<fidl_fuchsia_wlan_ieee80211__common::StatusCode>,
1002    /// Whether the original BSS association has been maintained through the roam attempt. Required.
1003    /// A successful roam always incurs disassociation from the original BSS, so if `status_code` is
1004    /// success then this field must be set to false; a roam failure typically incurs disassociation
1005    /// from the original BSS, but may not in some cases (e.g. in some Fast BSS Transition scenarios).
1006    pub original_association_maintained: Option<bool>,
1007    /// Whether the client is authenticated with the target BSS. If `status_code` is success, then
1008    /// this field must be set to true; if the roam attempt failed, this field may be true or false.
1009    /// This allows higher layers to decide how to clean up connection state after a failed roam
1010    /// attempt.
1011    pub target_bss_authenticated: Option<bool>,
1012    /// Association ID for this association with the AP. Required if `status_code` is success.
1013    pub association_id: Option<u16>,
1014    /// IEs for this association with the AP. Required if `status_code` is success.
1015    pub association_ies: Option<Vec<u8>>,
1016    #[doc(hidden)]
1017    pub __source_breaking: fidl::marker::SourceBreaking,
1018}
1019
1020impl fidl::Persistable for WlanFullmacImplIfcRoamResultIndRequest {}
1021
1022#[derive(Clone, Debug, Default, PartialEq)]
1023pub struct WlanFullmacImplIfcRoamStartIndRequest {
1024    /// BSSID of the target BSS. Required.
1025    pub selected_bssid: Option<[u8; 6]>,
1026    /// Full BSS description of the target BSS. Required.
1027    /// If the data in BssDescription is incorrect or incomplete, the roam cannot succeed,
1028    /// because higher layers will not be able to complete required actions (e.g. SAE).
1029    pub selected_bss: Option<fidl_fuchsia_wlan_common__common::BssDescription>,
1030    /// Whether the original BSS association has been maintained at the start of a roam attempt.
1031    /// Required. 802.11 dictates that a STA can only be associated with a single BSS, so a roam
1032    /// attempt typically incurs disassociation at the start of the roam attempt. However,
1033    /// 802.11 also provides a mechanism (i.e. Fast BSS Transition) that allows a device to
1034    /// maintain association with the original BSS while establishing authentication with the
1035    /// target BSS, in order to avoid losing the original association if authentication with the
1036    /// target BSS fails.
1037    pub original_association_maintained: Option<bool>,
1038    #[doc(hidden)]
1039    pub __source_breaking: fidl::marker::SourceBreaking,
1040}
1041
1042impl fidl::Persistable for WlanFullmacImplIfcRoamStartIndRequest {}
1043
1044#[derive(Clone, Debug, Default, PartialEq)]
1045pub struct WlanFullmacImplIfcSaeHandshakeIndRequest {
1046    pub peer_sta_address: Option<[u8; 6]>,
1047    #[doc(hidden)]
1048    pub __source_breaking: fidl::marker::SourceBreaking,
1049}
1050
1051impl fidl::Persistable for WlanFullmacImplIfcSaeHandshakeIndRequest {}
1052
1053#[derive(Clone, Debug, Default, PartialEq)]
1054pub struct WlanFullmacImplIfcStartConfRequest {
1055    /// The result of the StartBss request. Required.
1056    pub result_code: Option<StartResult>,
1057    #[doc(hidden)]
1058    pub __source_breaking: fidl::marker::SourceBreaking,
1059}
1060
1061impl fidl::Persistable for WlanFullmacImplIfcStartConfRequest {}
1062
1063#[derive(Clone, Debug, Default, PartialEq)]
1064pub struct WlanFullmacImplIfcStopConfRequest {
1065    /// The result of the StopBss request. Required.
1066    pub result_code: Option<StopResult>,
1067    #[doc(hidden)]
1068    pub __source_breaking: fidl::marker::SourceBreaking,
1069}
1070
1071impl fidl::Persistable for WlanFullmacImplIfcStopConfRequest {}
1072
1073#[derive(Clone, Debug, Default, PartialEq)]
1074pub struct WlanFullmacImplOnLinkStateChangedRequest {
1075    pub online: Option<bool>,
1076    #[doc(hidden)]
1077    pub __source_breaking: fidl::marker::SourceBreaking,
1078}
1079
1080impl fidl::Persistable for WlanFullmacImplOnLinkStateChangedRequest {}
1081
1082#[derive(Clone, Debug, Default, PartialEq)]
1083pub struct WlanFullmacImplReconnectRequest {
1084    pub peer_sta_address: Option<[u8; 6]>,
1085    #[doc(hidden)]
1086    pub __source_breaking: fidl::marker::SourceBreaking,
1087}
1088
1089impl fidl::Persistable for WlanFullmacImplReconnectRequest {}
1090
1091#[derive(Clone, Debug, Default, PartialEq)]
1092pub struct WlanFullmacImplRoamRequest {
1093    /// Full BSS description of the target BSS. Required.
1094    /// If the data in BssDescription is incorrect or incomplete, the roam cannot succeed,
1095    /// because higher layers will not be able to complete required actions (e.g. SAE).
1096    pub selected_bss: Option<fidl_fuchsia_wlan_common__common::BssDescription>,
1097    #[doc(hidden)]
1098    pub __source_breaking: fidl::marker::SourceBreaking,
1099}
1100
1101impl fidl::Persistable for WlanFullmacImplRoamRequest {}
1102
1103#[derive(Clone, Debug, Default, PartialEq)]
1104pub struct WlanFullmacImplSaeHandshakeRespRequest {
1105    /// The peer's MAC address. Required.
1106    pub peer_sta_address: Option<[u8; 6]>,
1107    /// The status of the SAE handshake. Required.
1108    pub status_code: Option<fidl_fuchsia_wlan_ieee80211__common::StatusCode>,
1109    #[doc(hidden)]
1110    pub __source_breaking: fidl::marker::SourceBreaking,
1111}
1112
1113impl fidl::Persistable for WlanFullmacImplSaeHandshakeRespRequest {}
1114
1115#[derive(Clone, Debug, Default, PartialEq)]
1116pub struct WlanFullmacImplSetKeysRequest {
1117    pub keylist: Option<Vec<fidl_fuchsia_wlan_common__common::WlanKeyConfig>>,
1118    pub key_descriptors: Option<Vec<fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor>>,
1119    #[doc(hidden)]
1120    pub __source_breaking: fidl::marker::SourceBreaking,
1121}
1122
1123impl fidl::Persistable for WlanFullmacImplSetKeysRequest {}
1124
1125#[derive(Clone, Debug, Default, PartialEq)]
1126pub struct WlanFullmacImplStartBssRequest {
1127    pub ssid: Option<Vec<u8>>,
1128    pub bss_type: Option<fidl_fuchsia_wlan_common__common::BssType>,
1129    pub beacon_period: Option<u32>,
1130    pub dtim_period: Option<u32>,
1131    pub channel: Option<u8>,
1132    pub rsne: Option<Vec<u8>>,
1133    pub vendor_ie: Option<Vec<u8>>,
1134    #[doc(hidden)]
1135    pub __source_breaking: fidl::marker::SourceBreaking,
1136}
1137
1138impl fidl::Persistable for WlanFullmacImplStartBssRequest {}
1139
1140#[derive(Clone, Debug, Default, PartialEq)]
1141pub struct WlanFullmacImplStartScanRequest {
1142    /// Unique transaction id (will be indicated in corresponding scan results).
1143    pub txn_id: Option<u64>,
1144    pub scan_type: Option<WlanScanType>,
1145    /// List of channels to scan on. An empty list of channels will cause a
1146    /// scan request to immediately return a OnScanEnd with code INVALID_ARGS.
1147    ///
1148    /// Invalid channel numbers will be silently ignored. The validity of a channel
1149    /// number depends on the current regulatory region, and a FullMAC driver cannot
1150    /// always determine the region setting. This is especially the case when
1151    /// firmware changes the region setting dynamically.
1152    pub channels: Option<Vec<u8>>,
1153    /// List of SSIDs to scan for. An empty list of ssids is the same as specifying
1154    /// a list containing only the wildcard SSID.
1155    ///
1156    /// There is no limit on the number of SSIDs specified. A large number of
1157    /// SSIDs may result in extended scan times because of hardware limitations on
1158    /// the number of SSIDs permitted per scan request and the technical limitation
1159    /// in IEEE 802.11-2016 that limits the number of SSIDs in a single Probe Request
1160    /// frame to ieee80211.SSID_LIST_MAX SSIDs.
1161    pub ssids: Option<Vec<Vec<u8>>>,
1162    /// Minimum amount of time in msecs spent on a channel during scan.
1163    pub min_channel_time: Option<u32>,
1164    /// Maximum amount of time in msecs spent on a channel during scan.
1165    pub max_channel_time: Option<u32>,
1166    #[doc(hidden)]
1167    pub __source_breaking: fidl::marker::SourceBreaking,
1168}
1169
1170impl fidl::Persistable for WlanFullmacImplStartScanRequest {}
1171
1172#[derive(Clone, Debug, Default, PartialEq)]
1173pub struct WlanFullmacImplStopBssRequest {
1174    pub ssid: Option<Vec<u8>>,
1175    #[doc(hidden)]
1176    pub __source_breaking: fidl::marker::SourceBreaking,
1177}
1178
1179impl fidl::Persistable for WlanFullmacImplStopBssRequest {}
1180
1181#[derive(Clone, Debug, Default, PartialEq)]
1182pub struct WlanFullmacImplQuerySecuritySupportResponse {
1183    pub resp: Option<fidl_fuchsia_wlan_common__common::SecuritySupport>,
1184    #[doc(hidden)]
1185    pub __source_breaking: fidl::marker::SourceBreaking,
1186}
1187
1188impl fidl::Persistable for WlanFullmacImplQuerySecuritySupportResponse {}
1189
1190#[derive(Clone, Debug, Default, PartialEq)]
1191pub struct WlanFullmacImplQuerySpectrumManagementSupportResponse {
1192    pub resp: Option<fidl_fuchsia_wlan_common__common::SpectrumManagementSupport>,
1193    #[doc(hidden)]
1194    pub __source_breaking: fidl::marker::SourceBreaking,
1195}
1196
1197impl fidl::Persistable for WlanFullmacImplQuerySpectrumManagementSupportResponse {}
1198
1199#[derive(Clone, Debug, Default, PartialEq)]
1200pub struct WlanFullmacImplQueryTelemetrySupportResponse {
1201    pub resp: Option<fidl_fuchsia_wlan_stats__common::TelemetrySupport>,
1202    #[doc(hidden)]
1203    pub __source_breaking: fidl::marker::SourceBreaking,
1204}
1205
1206impl fidl::Persistable for WlanFullmacImplQueryTelemetrySupportResponse {}
1207
1208#[derive(Clone, Debug, Default, PartialEq)]
1209pub struct WlanFullmacImplQueryResponse {
1210    /// Current station address. Required.
1211    pub sta_addr: Option<[u8; 6]>,
1212    /// MAC role. Required.
1213    pub role: Option<fidl_fuchsia_wlan_common__common::WlanMacRole>,
1214    /// Supported bands. Required.
1215    pub band_caps: Option<Vec<BandCapability>>,
1216    /// Factory mac address. Required.
1217    pub factory_addr: Option<[u8; 6]>,
1218    #[doc(hidden)]
1219    pub __source_breaking: fidl::marker::SourceBreaking,
1220}
1221
1222impl fidl::Persistable for WlanFullmacImplQueryResponse {}
1223
1224#[derive(Clone, Debug, Default, PartialEq)]
1225pub struct WlanFullmacOwePublicKey {
1226    pub group: Option<u16>,
1227    pub key: Option<Vec<u8>>,
1228    #[doc(hidden)]
1229    pub __source_breaking: fidl::marker::SourceBreaking,
1230}
1231
1232impl fidl::Persistable for WlanFullmacOwePublicKey {}
1233
1234pub mod wlan_fullmac_impl__ordinals {
1235    pub const INIT: u64 = 0x593dfb6cb3f0f1aa;
1236    pub const QUERY: u64 = 0x28ac65f9da3941d4;
1237    pub const QUERY_SECURITY_SUPPORT: u64 = 0x11cf3fa6eeb93f84;
1238    pub const QUERY_SPECTRUM_MANAGEMENT_SUPPORT: u64 = 0x22ae7551d855b83a;
1239    pub const QUERY_TELEMETRY_SUPPORT: u64 = 0x4561479ca560827f;
1240    pub const START_SCAN: u64 = 0x26c17bf595aa161c;
1241    pub const CONNECT: u64 = 0x19eb0322efb07a76;
1242    pub const RECONNECT: u64 = 0x474084c4ef19ee71;
1243    pub const ROAM: u64 = 0x1e35dcc98b124b64;
1244    pub const AUTH_RESP: u64 = 0x5f7ea24b44a4aaeb;
1245    pub const DEAUTH: u64 = 0x112786eccbf12f37;
1246    pub const ASSOC_RESP: u64 = 0x5022ce6b8eefec2f;
1247    pub const DISASSOC: u64 = 0x9c0fc4e8de53e01;
1248    pub const START_BSS: u64 = 0x6922644d6b1d341d;
1249    pub const STOP_BSS: u64 = 0x5aeb9b72e7575268;
1250    pub const SET_KEYS: u64 = 0x20f46b1e039f0985;
1251    pub const EAPOL_TX: u64 = 0x529a2d90fd4c8177;
1252    pub const GET_IFACE_STATS: u64 = 0x505563776ef0392f;
1253    pub const GET_IFACE_HISTOGRAM_STATS: u64 = 0x503d586f30ccf2cd;
1254    pub const GET_SIGNAL_REPORT: u64 = 0x5d93f056e4796bb3;
1255    pub const SAE_HANDSHAKE_RESP: u64 = 0x72cd3a31ae5a54f6;
1256    pub const SAE_FRAME_TX: u64 = 0x4715ad5dc5a6340f;
1257    pub const WMM_STATUS_REQ: u64 = 0x635ecef3beb7a059;
1258    pub const ON_LINK_STATE_CHANGED: u64 = 0x4d896e5b68e488d7;
1259    pub const SET_MAC_ADDRESS: u64 = 0x211a97f6f21ae5f0;
1260}
1261
1262pub mod wlan_fullmac_impl_ifc_ordinals {
1263    pub const ON_SCAN_RESULT: u64 = 0x29aa81dc570f7a3e;
1264    pub const ON_SCAN_END: u64 = 0x7cd8aff80d27073c;
1265    pub const CONNECT_CONF: u64 = 0x3c22c6d80b2a2759;
1266    pub const ROAM_CONF: u64 = 0x368b2a5b903b3f7b;
1267    pub const ROAM_START_IND: u64 = 0x23e1d9368935e7e4;
1268    pub const ROAM_RESULT_IND: u64 = 0x7081c1b1ceea4914;
1269    pub const AUTH_IND: u64 = 0x270e1f8889650d0b;
1270    pub const DEAUTH_CONF: u64 = 0x2c94b0d7258111b7;
1271    pub const DEAUTH_IND: u64 = 0x26cd27cdadd8dbaf;
1272    pub const ASSOC_IND: u64 = 0x3e44529e3dc179ce;
1273    pub const DISASSOC_CONF: u64 = 0x7c713bcd58a76cb3;
1274    pub const DISASSOC_IND: u64 = 0x6667b381b7f3990f;
1275    pub const START_CONF: u64 = 0x3e9b9641f3ddc7fc;
1276    pub const STOP_CONF: u64 = 0x320a5ff227a4e9df;
1277    pub const EAPOL_CONF: u64 = 0x77364db9cc3970ec;
1278    pub const ON_CHANNEL_SWITCH: u64 = 0x21db0b8f71cae647;
1279    pub const SIGNAL_REPORT: u64 = 0x79679fa8789c3d9f;
1280    pub const EAPOL_IND: u64 = 0x3de8ec1eda10d1d0;
1281    pub const ON_PMK_AVAILABLE: u64 = 0x5cedd8d9be28a17e;
1282    pub const SAE_HANDSHAKE_IND: u64 = 0x4f3d53885503a1d8;
1283    pub const SAE_FRAME_RX: u64 = 0x51650906857ed4d4;
1284    pub const ON_WMM_STATUS_RESP: u64 = 0x6823a88bf3ba8b2a;
1285}
1286
1287mod internal {
1288    use super::*;
1289    unsafe impl fidl::encoding::TypeMarker for EapolTxResult {
1290        type Owned = Self;
1291
1292        #[inline(always)]
1293        fn inline_align(_context: fidl::encoding::Context) -> usize {
1294            std::mem::align_of::<u8>()
1295        }
1296
1297        #[inline(always)]
1298        fn inline_size(_context: fidl::encoding::Context) -> usize {
1299            std::mem::size_of::<u8>()
1300        }
1301
1302        #[inline(always)]
1303        fn encode_is_copy() -> bool {
1304            false
1305        }
1306
1307        #[inline(always)]
1308        fn decode_is_copy() -> bool {
1309            false
1310        }
1311    }
1312
1313    impl fidl::encoding::ValueTypeMarker for EapolTxResult {
1314        type Borrowed<'a> = Self;
1315        #[inline(always)]
1316        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1317            *value
1318        }
1319    }
1320
1321    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for EapolTxResult {
1322        #[inline]
1323        unsafe fn encode(
1324            self,
1325            encoder: &mut fidl::encoding::Encoder<'_, D>,
1326            offset: usize,
1327            _depth: fidl::encoding::Depth,
1328        ) -> fidl::Result<()> {
1329            encoder.debug_check_bounds::<Self>(offset);
1330            encoder.write_num(self.into_primitive(), offset);
1331            Ok(())
1332        }
1333    }
1334
1335    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EapolTxResult {
1336        #[inline(always)]
1337        fn new_empty() -> Self {
1338            Self::unknown()
1339        }
1340
1341        #[inline]
1342        unsafe fn decode(
1343            &mut self,
1344            decoder: &mut fidl::encoding::Decoder<'_, D>,
1345            offset: usize,
1346            _depth: fidl::encoding::Depth,
1347        ) -> fidl::Result<()> {
1348            decoder.debug_check_bounds::<Self>(offset);
1349            let prim = decoder.read_num::<u8>(offset);
1350
1351            *self = Self::from_primitive_allow_unknown(prim);
1352            Ok(())
1353        }
1354    }
1355    unsafe impl fidl::encoding::TypeMarker for StartResult {
1356        type Owned = Self;
1357
1358        #[inline(always)]
1359        fn inline_align(_context: fidl::encoding::Context) -> usize {
1360            std::mem::align_of::<u8>()
1361        }
1362
1363        #[inline(always)]
1364        fn inline_size(_context: fidl::encoding::Context) -> usize {
1365            std::mem::size_of::<u8>()
1366        }
1367
1368        #[inline(always)]
1369        fn encode_is_copy() -> bool {
1370            false
1371        }
1372
1373        #[inline(always)]
1374        fn decode_is_copy() -> bool {
1375            false
1376        }
1377    }
1378
1379    impl fidl::encoding::ValueTypeMarker for StartResult {
1380        type Borrowed<'a> = Self;
1381        #[inline(always)]
1382        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1383            *value
1384        }
1385    }
1386
1387    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for StartResult {
1388        #[inline]
1389        unsafe fn encode(
1390            self,
1391            encoder: &mut fidl::encoding::Encoder<'_, D>,
1392            offset: usize,
1393            _depth: fidl::encoding::Depth,
1394        ) -> fidl::Result<()> {
1395            encoder.debug_check_bounds::<Self>(offset);
1396            encoder.write_num(self.into_primitive(), offset);
1397            Ok(())
1398        }
1399    }
1400
1401    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StartResult {
1402        #[inline(always)]
1403        fn new_empty() -> Self {
1404            Self::unknown()
1405        }
1406
1407        #[inline]
1408        unsafe fn decode(
1409            &mut self,
1410            decoder: &mut fidl::encoding::Decoder<'_, D>,
1411            offset: usize,
1412            _depth: fidl::encoding::Depth,
1413        ) -> fidl::Result<()> {
1414            decoder.debug_check_bounds::<Self>(offset);
1415            let prim = decoder.read_num::<u8>(offset);
1416
1417            *self = Self::from_primitive_allow_unknown(prim);
1418            Ok(())
1419        }
1420    }
1421    unsafe impl fidl::encoding::TypeMarker for StopResult {
1422        type Owned = Self;
1423
1424        #[inline(always)]
1425        fn inline_align(_context: fidl::encoding::Context) -> usize {
1426            std::mem::align_of::<u8>()
1427        }
1428
1429        #[inline(always)]
1430        fn inline_size(_context: fidl::encoding::Context) -> usize {
1431            std::mem::size_of::<u8>()
1432        }
1433
1434        #[inline(always)]
1435        fn encode_is_copy() -> bool {
1436            false
1437        }
1438
1439        #[inline(always)]
1440        fn decode_is_copy() -> bool {
1441            false
1442        }
1443    }
1444
1445    impl fidl::encoding::ValueTypeMarker for StopResult {
1446        type Borrowed<'a> = Self;
1447        #[inline(always)]
1448        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1449            *value
1450        }
1451    }
1452
1453    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for StopResult {
1454        #[inline]
1455        unsafe fn encode(
1456            self,
1457            encoder: &mut fidl::encoding::Encoder<'_, D>,
1458            offset: usize,
1459            _depth: fidl::encoding::Depth,
1460        ) -> fidl::Result<()> {
1461            encoder.debug_check_bounds::<Self>(offset);
1462            encoder.write_num(self.into_primitive(), offset);
1463            Ok(())
1464        }
1465    }
1466
1467    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StopResult {
1468        #[inline(always)]
1469        fn new_empty() -> Self {
1470            Self::unknown()
1471        }
1472
1473        #[inline]
1474        unsafe fn decode(
1475            &mut self,
1476            decoder: &mut fidl::encoding::Decoder<'_, D>,
1477            offset: usize,
1478            _depth: fidl::encoding::Depth,
1479        ) -> fidl::Result<()> {
1480            decoder.debug_check_bounds::<Self>(offset);
1481            let prim = decoder.read_num::<u8>(offset);
1482
1483            *self = Self::from_primitive_allow_unknown(prim);
1484            Ok(())
1485        }
1486    }
1487    unsafe impl fidl::encoding::TypeMarker for WlanAssocResult {
1488        type Owned = Self;
1489
1490        #[inline(always)]
1491        fn inline_align(_context: fidl::encoding::Context) -> usize {
1492            std::mem::align_of::<u8>()
1493        }
1494
1495        #[inline(always)]
1496        fn inline_size(_context: fidl::encoding::Context) -> usize {
1497            std::mem::size_of::<u8>()
1498        }
1499
1500        #[inline(always)]
1501        fn encode_is_copy() -> bool {
1502            false
1503        }
1504
1505        #[inline(always)]
1506        fn decode_is_copy() -> bool {
1507            false
1508        }
1509    }
1510
1511    impl fidl::encoding::ValueTypeMarker for WlanAssocResult {
1512        type Borrowed<'a> = Self;
1513        #[inline(always)]
1514        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1515            *value
1516        }
1517    }
1518
1519    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1520        for WlanAssocResult
1521    {
1522        #[inline]
1523        unsafe fn encode(
1524            self,
1525            encoder: &mut fidl::encoding::Encoder<'_, D>,
1526            offset: usize,
1527            _depth: fidl::encoding::Depth,
1528        ) -> fidl::Result<()> {
1529            encoder.debug_check_bounds::<Self>(offset);
1530            encoder.write_num(self.into_primitive(), offset);
1531            Ok(())
1532        }
1533    }
1534
1535    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanAssocResult {
1536        #[inline(always)]
1537        fn new_empty() -> Self {
1538            Self::unknown()
1539        }
1540
1541        #[inline]
1542        unsafe fn decode(
1543            &mut self,
1544            decoder: &mut fidl::encoding::Decoder<'_, D>,
1545            offset: usize,
1546            _depth: fidl::encoding::Depth,
1547        ) -> fidl::Result<()> {
1548            decoder.debug_check_bounds::<Self>(offset);
1549            let prim = decoder.read_num::<u8>(offset);
1550
1551            *self = Self::from_primitive_allow_unknown(prim);
1552            Ok(())
1553        }
1554    }
1555    unsafe impl fidl::encoding::TypeMarker for WlanAuthResult {
1556        type Owned = Self;
1557
1558        #[inline(always)]
1559        fn inline_align(_context: fidl::encoding::Context) -> usize {
1560            std::mem::align_of::<u8>()
1561        }
1562
1563        #[inline(always)]
1564        fn inline_size(_context: fidl::encoding::Context) -> usize {
1565            std::mem::size_of::<u8>()
1566        }
1567
1568        #[inline(always)]
1569        fn encode_is_copy() -> bool {
1570            false
1571        }
1572
1573        #[inline(always)]
1574        fn decode_is_copy() -> bool {
1575            false
1576        }
1577    }
1578
1579    impl fidl::encoding::ValueTypeMarker for WlanAuthResult {
1580        type Borrowed<'a> = Self;
1581        #[inline(always)]
1582        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1583            *value
1584        }
1585    }
1586
1587    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanAuthResult {
1588        #[inline]
1589        unsafe fn encode(
1590            self,
1591            encoder: &mut fidl::encoding::Encoder<'_, D>,
1592            offset: usize,
1593            _depth: fidl::encoding::Depth,
1594        ) -> fidl::Result<()> {
1595            encoder.debug_check_bounds::<Self>(offset);
1596            encoder.write_num(self.into_primitive(), offset);
1597            Ok(())
1598        }
1599    }
1600
1601    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanAuthResult {
1602        #[inline(always)]
1603        fn new_empty() -> Self {
1604            Self::unknown()
1605        }
1606
1607        #[inline]
1608        unsafe fn decode(
1609            &mut self,
1610            decoder: &mut fidl::encoding::Decoder<'_, D>,
1611            offset: usize,
1612            _depth: fidl::encoding::Depth,
1613        ) -> fidl::Result<()> {
1614            decoder.debug_check_bounds::<Self>(offset);
1615            let prim = decoder.read_num::<u8>(offset);
1616
1617            *self = Self::from_primitive_allow_unknown(prim);
1618            Ok(())
1619        }
1620    }
1621    unsafe impl fidl::encoding::TypeMarker for WlanAuthType {
1622        type Owned = Self;
1623
1624        #[inline(always)]
1625        fn inline_align(_context: fidl::encoding::Context) -> usize {
1626            std::mem::align_of::<u8>()
1627        }
1628
1629        #[inline(always)]
1630        fn inline_size(_context: fidl::encoding::Context) -> usize {
1631            std::mem::size_of::<u8>()
1632        }
1633
1634        #[inline(always)]
1635        fn encode_is_copy() -> bool {
1636            false
1637        }
1638
1639        #[inline(always)]
1640        fn decode_is_copy() -> bool {
1641            false
1642        }
1643    }
1644
1645    impl fidl::encoding::ValueTypeMarker for WlanAuthType {
1646        type Borrowed<'a> = Self;
1647        #[inline(always)]
1648        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1649            *value
1650        }
1651    }
1652
1653    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanAuthType {
1654        #[inline]
1655        unsafe fn encode(
1656            self,
1657            encoder: &mut fidl::encoding::Encoder<'_, D>,
1658            offset: usize,
1659            _depth: fidl::encoding::Depth,
1660        ) -> fidl::Result<()> {
1661            encoder.debug_check_bounds::<Self>(offset);
1662            encoder.write_num(self.into_primitive(), offset);
1663            Ok(())
1664        }
1665    }
1666
1667    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanAuthType {
1668        #[inline(always)]
1669        fn new_empty() -> Self {
1670            Self::unknown()
1671        }
1672
1673        #[inline]
1674        unsafe fn decode(
1675            &mut self,
1676            decoder: &mut fidl::encoding::Decoder<'_, D>,
1677            offset: usize,
1678            _depth: fidl::encoding::Depth,
1679        ) -> fidl::Result<()> {
1680            decoder.debug_check_bounds::<Self>(offset);
1681            let prim = decoder.read_num::<u8>(offset);
1682
1683            *self = Self::from_primitive_allow_unknown(prim);
1684            Ok(())
1685        }
1686    }
1687    unsafe impl fidl::encoding::TypeMarker for WlanScanResult {
1688        type Owned = Self;
1689
1690        #[inline(always)]
1691        fn inline_align(_context: fidl::encoding::Context) -> usize {
1692            std::mem::align_of::<u8>()
1693        }
1694
1695        #[inline(always)]
1696        fn inline_size(_context: fidl::encoding::Context) -> usize {
1697            std::mem::size_of::<u8>()
1698        }
1699
1700        #[inline(always)]
1701        fn encode_is_copy() -> bool {
1702            false
1703        }
1704
1705        #[inline(always)]
1706        fn decode_is_copy() -> bool {
1707            false
1708        }
1709    }
1710
1711    impl fidl::encoding::ValueTypeMarker for WlanScanResult {
1712        type Borrowed<'a> = Self;
1713        #[inline(always)]
1714        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1715            *value
1716        }
1717    }
1718
1719    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanScanResult {
1720        #[inline]
1721        unsafe fn encode(
1722            self,
1723            encoder: &mut fidl::encoding::Encoder<'_, D>,
1724            offset: usize,
1725            _depth: fidl::encoding::Depth,
1726        ) -> fidl::Result<()> {
1727            encoder.debug_check_bounds::<Self>(offset);
1728            encoder.write_num(self.into_primitive(), offset);
1729            Ok(())
1730        }
1731    }
1732
1733    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanScanResult {
1734        #[inline(always)]
1735        fn new_empty() -> Self {
1736            Self::unknown()
1737        }
1738
1739        #[inline]
1740        unsafe fn decode(
1741            &mut self,
1742            decoder: &mut fidl::encoding::Decoder<'_, D>,
1743            offset: usize,
1744            _depth: fidl::encoding::Depth,
1745        ) -> fidl::Result<()> {
1746            decoder.debug_check_bounds::<Self>(offset);
1747            let prim = decoder.read_num::<u8>(offset);
1748
1749            *self = Self::from_primitive_allow_unknown(prim);
1750            Ok(())
1751        }
1752    }
1753    unsafe impl fidl::encoding::TypeMarker for WlanScanType {
1754        type Owned = Self;
1755
1756        #[inline(always)]
1757        fn inline_align(_context: fidl::encoding::Context) -> usize {
1758            std::mem::align_of::<u8>()
1759        }
1760
1761        #[inline(always)]
1762        fn inline_size(_context: fidl::encoding::Context) -> usize {
1763            std::mem::size_of::<u8>()
1764        }
1765
1766        #[inline(always)]
1767        fn encode_is_copy() -> bool {
1768            false
1769        }
1770
1771        #[inline(always)]
1772        fn decode_is_copy() -> bool {
1773            false
1774        }
1775    }
1776
1777    impl fidl::encoding::ValueTypeMarker for WlanScanType {
1778        type Borrowed<'a> = Self;
1779        #[inline(always)]
1780        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1781            *value
1782        }
1783    }
1784
1785    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanScanType {
1786        #[inline]
1787        unsafe fn encode(
1788            self,
1789            encoder: &mut fidl::encoding::Encoder<'_, D>,
1790            offset: usize,
1791            _depth: fidl::encoding::Depth,
1792        ) -> fidl::Result<()> {
1793            encoder.debug_check_bounds::<Self>(offset);
1794            encoder.write_num(self.into_primitive(), offset);
1795            Ok(())
1796        }
1797    }
1798
1799    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanScanType {
1800        #[inline(always)]
1801        fn new_empty() -> Self {
1802            Self::unknown()
1803        }
1804
1805        #[inline]
1806        unsafe fn decode(
1807            &mut self,
1808            decoder: &mut fidl::encoding::Decoder<'_, D>,
1809            offset: usize,
1810            _depth: fidl::encoding::Depth,
1811        ) -> fidl::Result<()> {
1812            decoder.debug_check_bounds::<Self>(offset);
1813            let prim = decoder.read_num::<u8>(offset);
1814
1815            *self = Self::from_primitive_allow_unknown(prim);
1816            Ok(())
1817        }
1818    }
1819
1820    impl fidl::encoding::ValueTypeMarker for WlanFullmacChannelSwitchInfo {
1821        type Borrowed<'a> = &'a Self;
1822        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1823            value
1824        }
1825    }
1826
1827    unsafe impl fidl::encoding::TypeMarker for WlanFullmacChannelSwitchInfo {
1828        type Owned = Self;
1829
1830        #[inline(always)]
1831        fn inline_align(_context: fidl::encoding::Context) -> usize {
1832            1
1833        }
1834
1835        #[inline(always)]
1836        fn inline_size(_context: fidl::encoding::Context) -> usize {
1837            1
1838        }
1839        #[inline(always)]
1840        fn encode_is_copy() -> bool {
1841            true
1842        }
1843
1844        #[inline(always)]
1845        fn decode_is_copy() -> bool {
1846            true
1847        }
1848    }
1849
1850    unsafe impl<D: fidl::encoding::ResourceDialect>
1851        fidl::encoding::Encode<WlanFullmacChannelSwitchInfo, D> for &WlanFullmacChannelSwitchInfo
1852    {
1853        #[inline]
1854        unsafe fn encode(
1855            self,
1856            encoder: &mut fidl::encoding::Encoder<'_, D>,
1857            offset: usize,
1858            _depth: fidl::encoding::Depth,
1859        ) -> fidl::Result<()> {
1860            encoder.debug_check_bounds::<WlanFullmacChannelSwitchInfo>(offset);
1861            unsafe {
1862                // Copy the object into the buffer.
1863                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1864                (buf_ptr as *mut WlanFullmacChannelSwitchInfo)
1865                    .write_unaligned((self as *const WlanFullmacChannelSwitchInfo).read());
1866                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
1867                // done second because the memcpy will write garbage to these bytes.
1868            }
1869            Ok(())
1870        }
1871    }
1872    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u8, D>>
1873        fidl::encoding::Encode<WlanFullmacChannelSwitchInfo, D> for (T0,)
1874    {
1875        #[inline]
1876        unsafe fn encode(
1877            self,
1878            encoder: &mut fidl::encoding::Encoder<'_, D>,
1879            offset: usize,
1880            depth: fidl::encoding::Depth,
1881        ) -> fidl::Result<()> {
1882            encoder.debug_check_bounds::<WlanFullmacChannelSwitchInfo>(offset);
1883            // Zero out padding regions. There's no need to apply masks
1884            // because the unmasked parts will be overwritten by fields.
1885            // Write the fields.
1886            self.0.encode(encoder, offset + 0, depth)?;
1887            Ok(())
1888        }
1889    }
1890
1891    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1892        for WlanFullmacChannelSwitchInfo
1893    {
1894        #[inline(always)]
1895        fn new_empty() -> Self {
1896            Self { new_channel: fidl::new_empty!(u8, D) }
1897        }
1898
1899        #[inline]
1900        unsafe fn decode(
1901            &mut self,
1902            decoder: &mut fidl::encoding::Decoder<'_, D>,
1903            offset: usize,
1904            _depth: fidl::encoding::Depth,
1905        ) -> fidl::Result<()> {
1906            decoder.debug_check_bounds::<Self>(offset);
1907            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1908            // Verify that padding bytes are zero.
1909            // Copy from the buffer into the object.
1910            unsafe {
1911                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 1);
1912            }
1913            Ok(())
1914        }
1915    }
1916
1917    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnChannelSwitchRequest {
1918        type Borrowed<'a> = &'a Self;
1919        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1920            value
1921        }
1922    }
1923
1924    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcOnChannelSwitchRequest {
1925        type Owned = Self;
1926
1927        #[inline(always)]
1928        fn inline_align(_context: fidl::encoding::Context) -> usize {
1929            1
1930        }
1931
1932        #[inline(always)]
1933        fn inline_size(_context: fidl::encoding::Context) -> usize {
1934            1
1935        }
1936        #[inline(always)]
1937        fn encode_is_copy() -> bool {
1938            true
1939        }
1940
1941        #[inline(always)]
1942        fn decode_is_copy() -> bool {
1943            true
1944        }
1945    }
1946
1947    unsafe impl<D: fidl::encoding::ResourceDialect>
1948        fidl::encoding::Encode<WlanFullmacImplIfcOnChannelSwitchRequest, D>
1949        for &WlanFullmacImplIfcOnChannelSwitchRequest
1950    {
1951        #[inline]
1952        unsafe fn encode(
1953            self,
1954            encoder: &mut fidl::encoding::Encoder<'_, D>,
1955            offset: usize,
1956            _depth: fidl::encoding::Depth,
1957        ) -> fidl::Result<()> {
1958            encoder.debug_check_bounds::<WlanFullmacImplIfcOnChannelSwitchRequest>(offset);
1959            unsafe {
1960                // Copy the object into the buffer.
1961                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1962                (buf_ptr as *mut WlanFullmacImplIfcOnChannelSwitchRequest).write_unaligned(
1963                    (self as *const WlanFullmacImplIfcOnChannelSwitchRequest).read(),
1964                );
1965                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
1966                // done second because the memcpy will write garbage to these bytes.
1967            }
1968            Ok(())
1969        }
1970    }
1971    unsafe impl<
1972        D: fidl::encoding::ResourceDialect,
1973        T0: fidl::encoding::Encode<WlanFullmacChannelSwitchInfo, D>,
1974    > fidl::encoding::Encode<WlanFullmacImplIfcOnChannelSwitchRequest, D> for (T0,)
1975    {
1976        #[inline]
1977        unsafe fn encode(
1978            self,
1979            encoder: &mut fidl::encoding::Encoder<'_, D>,
1980            offset: usize,
1981            depth: fidl::encoding::Depth,
1982        ) -> fidl::Result<()> {
1983            encoder.debug_check_bounds::<WlanFullmacImplIfcOnChannelSwitchRequest>(offset);
1984            // Zero out padding regions. There's no need to apply masks
1985            // because the unmasked parts will be overwritten by fields.
1986            // Write the fields.
1987            self.0.encode(encoder, offset + 0, depth)?;
1988            Ok(())
1989        }
1990    }
1991
1992    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1993        for WlanFullmacImplIfcOnChannelSwitchRequest
1994    {
1995        #[inline(always)]
1996        fn new_empty() -> Self {
1997            Self { ind: fidl::new_empty!(WlanFullmacChannelSwitchInfo, D) }
1998        }
1999
2000        #[inline]
2001        unsafe fn decode(
2002            &mut self,
2003            decoder: &mut fidl::encoding::Decoder<'_, D>,
2004            offset: usize,
2005            _depth: fidl::encoding::Depth,
2006        ) -> fidl::Result<()> {
2007            decoder.debug_check_bounds::<Self>(offset);
2008            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2009            // Verify that padding bytes are zero.
2010            // Copy from the buffer into the object.
2011            unsafe {
2012                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 1);
2013            }
2014            Ok(())
2015        }
2016    }
2017
2018    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnWmmStatusRespRequest {
2019        type Borrowed<'a> = &'a Self;
2020        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2021            value
2022        }
2023    }
2024
2025    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcOnWmmStatusRespRequest {
2026        type Owned = Self;
2027
2028        #[inline(always)]
2029        fn inline_align(_context: fidl::encoding::Context) -> usize {
2030            4
2031        }
2032
2033        #[inline(always)]
2034        fn inline_size(_context: fidl::encoding::Context) -> usize {
2035            40
2036        }
2037    }
2038
2039    unsafe impl<D: fidl::encoding::ResourceDialect>
2040        fidl::encoding::Encode<WlanFullmacImplIfcOnWmmStatusRespRequest, D>
2041        for &WlanFullmacImplIfcOnWmmStatusRespRequest
2042    {
2043        #[inline]
2044        unsafe fn encode(
2045            self,
2046            encoder: &mut fidl::encoding::Encoder<'_, D>,
2047            offset: usize,
2048            _depth: fidl::encoding::Depth,
2049        ) -> fidl::Result<()> {
2050            encoder.debug_check_bounds::<WlanFullmacImplIfcOnWmmStatusRespRequest>(offset);
2051            // Delegate to tuple encoding.
2052            fidl::encoding::Encode::<WlanFullmacImplIfcOnWmmStatusRespRequest, D>::encode(
2053                (
2054                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(&self.status),
2055                    <fidl_fuchsia_wlan_common__common::WlanWmmParameters as fidl::encoding::ValueTypeMarker>::borrow(&self.wmm_params),
2056                ),
2057                encoder, offset, _depth
2058            )
2059        }
2060    }
2061    unsafe impl<
2062        D: fidl::encoding::ResourceDialect,
2063        T0: fidl::encoding::Encode<i32, D>,
2064        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_common__common::WlanWmmParameters, D>,
2065    > fidl::encoding::Encode<WlanFullmacImplIfcOnWmmStatusRespRequest, D> for (T0, T1)
2066    {
2067        #[inline]
2068        unsafe fn encode(
2069            self,
2070            encoder: &mut fidl::encoding::Encoder<'_, D>,
2071            offset: usize,
2072            depth: fidl::encoding::Depth,
2073        ) -> fidl::Result<()> {
2074            encoder.debug_check_bounds::<WlanFullmacImplIfcOnWmmStatusRespRequest>(offset);
2075            // Zero out padding regions. There's no need to apply masks
2076            // because the unmasked parts will be overwritten by fields.
2077            unsafe {
2078                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(36);
2079                (ptr as *mut u32).write_unaligned(0);
2080            }
2081            // Write the fields.
2082            self.0.encode(encoder, offset + 0, depth)?;
2083            self.1.encode(encoder, offset + 4, depth)?;
2084            Ok(())
2085        }
2086    }
2087
2088    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2089        for WlanFullmacImplIfcOnWmmStatusRespRequest
2090    {
2091        #[inline(always)]
2092        fn new_empty() -> Self {
2093            Self {
2094                status: fidl::new_empty!(i32, D),
2095                wmm_params: fidl::new_empty!(
2096                    fidl_fuchsia_wlan_common__common::WlanWmmParameters,
2097                    D
2098                ),
2099            }
2100        }
2101
2102        #[inline]
2103        unsafe fn decode(
2104            &mut self,
2105            decoder: &mut fidl::encoding::Decoder<'_, D>,
2106            offset: usize,
2107            _depth: fidl::encoding::Depth,
2108        ) -> fidl::Result<()> {
2109            decoder.debug_check_bounds::<Self>(offset);
2110            // Verify that padding bytes are zero.
2111            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(36) };
2112            let padval = unsafe { (ptr as *const u32).read_unaligned() };
2113            let mask = 0xffff0000u32;
2114            let maskedval = padval & mask;
2115            if maskedval != 0 {
2116                return Err(fidl::Error::NonZeroPadding {
2117                    padding_start: offset + 36 + ((mask as u64).trailing_zeros() / 8) as usize,
2118                });
2119            }
2120            fidl::decode!(i32, D, &mut self.status, decoder, offset + 0, _depth)?;
2121            fidl::decode!(
2122                fidl_fuchsia_wlan_common__common::WlanWmmParameters,
2123                D,
2124                &mut self.wmm_params,
2125                decoder,
2126                offset + 4,
2127                _depth
2128            )?;
2129            Ok(())
2130        }
2131    }
2132
2133    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcSaeFrameRxRequest {
2134        type Borrowed<'a> = &'a Self;
2135        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2136            value
2137        }
2138    }
2139
2140    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcSaeFrameRxRequest {
2141        type Owned = Self;
2142
2143        #[inline(always)]
2144        fn inline_align(_context: fidl::encoding::Context) -> usize {
2145            8
2146        }
2147
2148        #[inline(always)]
2149        fn inline_size(_context: fidl::encoding::Context) -> usize {
2150            16
2151        }
2152    }
2153
2154    unsafe impl<D: fidl::encoding::ResourceDialect>
2155        fidl::encoding::Encode<WlanFullmacImplIfcSaeFrameRxRequest, D>
2156        for &WlanFullmacImplIfcSaeFrameRxRequest
2157    {
2158        #[inline]
2159        unsafe fn encode(
2160            self,
2161            encoder: &mut fidl::encoding::Encoder<'_, D>,
2162            offset: usize,
2163            _depth: fidl::encoding::Depth,
2164        ) -> fidl::Result<()> {
2165            encoder.debug_check_bounds::<WlanFullmacImplIfcSaeFrameRxRequest>(offset);
2166            // Delegate to tuple encoding.
2167            fidl::encoding::Encode::<WlanFullmacImplIfcSaeFrameRxRequest, D>::encode(
2168                (<SaeFrame as fidl::encoding::ValueTypeMarker>::borrow(&self.frame),),
2169                encoder,
2170                offset,
2171                _depth,
2172            )
2173        }
2174    }
2175    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SaeFrame, D>>
2176        fidl::encoding::Encode<WlanFullmacImplIfcSaeFrameRxRequest, D> for (T0,)
2177    {
2178        #[inline]
2179        unsafe fn encode(
2180            self,
2181            encoder: &mut fidl::encoding::Encoder<'_, D>,
2182            offset: usize,
2183            depth: fidl::encoding::Depth,
2184        ) -> fidl::Result<()> {
2185            encoder.debug_check_bounds::<WlanFullmacImplIfcSaeFrameRxRequest>(offset);
2186            // Zero out padding regions. There's no need to apply masks
2187            // because the unmasked parts will be overwritten by fields.
2188            // Write the fields.
2189            self.0.encode(encoder, offset + 0, depth)?;
2190            Ok(())
2191        }
2192    }
2193
2194    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2195        for WlanFullmacImplIfcSaeFrameRxRequest
2196    {
2197        #[inline(always)]
2198        fn new_empty() -> Self {
2199            Self { frame: fidl::new_empty!(SaeFrame, D) }
2200        }
2201
2202        #[inline]
2203        unsafe fn decode(
2204            &mut self,
2205            decoder: &mut fidl::encoding::Decoder<'_, D>,
2206            offset: usize,
2207            _depth: fidl::encoding::Depth,
2208        ) -> fidl::Result<()> {
2209            decoder.debug_check_bounds::<Self>(offset);
2210            // Verify that padding bytes are zero.
2211            fidl::decode!(SaeFrame, D, &mut self.frame, decoder, offset + 0, _depth)?;
2212            Ok(())
2213        }
2214    }
2215
2216    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcSignalReportRequest {
2217        type Borrowed<'a> = &'a Self;
2218        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2219            value
2220        }
2221    }
2222
2223    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcSignalReportRequest {
2224        type Owned = Self;
2225
2226        #[inline(always)]
2227        fn inline_align(_context: fidl::encoding::Context) -> usize {
2228            1
2229        }
2230
2231        #[inline(always)]
2232        fn inline_size(_context: fidl::encoding::Context) -> usize {
2233            2
2234        }
2235        #[inline(always)]
2236        fn encode_is_copy() -> bool {
2237            true
2238        }
2239
2240        #[inline(always)]
2241        fn decode_is_copy() -> bool {
2242            true
2243        }
2244    }
2245
2246    unsafe impl<D: fidl::encoding::ResourceDialect>
2247        fidl::encoding::Encode<WlanFullmacImplIfcSignalReportRequest, D>
2248        for &WlanFullmacImplIfcSignalReportRequest
2249    {
2250        #[inline]
2251        unsafe fn encode(
2252            self,
2253            encoder: &mut fidl::encoding::Encoder<'_, D>,
2254            offset: usize,
2255            _depth: fidl::encoding::Depth,
2256        ) -> fidl::Result<()> {
2257            encoder.debug_check_bounds::<WlanFullmacImplIfcSignalReportRequest>(offset);
2258            unsafe {
2259                // Copy the object into the buffer.
2260                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2261                (buf_ptr as *mut WlanFullmacImplIfcSignalReportRequest)
2262                    .write_unaligned((self as *const WlanFullmacImplIfcSignalReportRequest).read());
2263                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
2264                // done second because the memcpy will write garbage to these bytes.
2265            }
2266            Ok(())
2267        }
2268    }
2269    unsafe impl<
2270        D: fidl::encoding::ResourceDialect,
2271        T0: fidl::encoding::Encode<WlanFullmacSignalReportIndication, D>,
2272    > fidl::encoding::Encode<WlanFullmacImplIfcSignalReportRequest, D> for (T0,)
2273    {
2274        #[inline]
2275        unsafe fn encode(
2276            self,
2277            encoder: &mut fidl::encoding::Encoder<'_, D>,
2278            offset: usize,
2279            depth: fidl::encoding::Depth,
2280        ) -> fidl::Result<()> {
2281            encoder.debug_check_bounds::<WlanFullmacImplIfcSignalReportRequest>(offset);
2282            // Zero out padding regions. There's no need to apply masks
2283            // because the unmasked parts will be overwritten by fields.
2284            // Write the fields.
2285            self.0.encode(encoder, offset + 0, depth)?;
2286            Ok(())
2287        }
2288    }
2289
2290    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2291        for WlanFullmacImplIfcSignalReportRequest
2292    {
2293        #[inline(always)]
2294        fn new_empty() -> Self {
2295            Self { ind: fidl::new_empty!(WlanFullmacSignalReportIndication, D) }
2296        }
2297
2298        #[inline]
2299        unsafe fn decode(
2300            &mut self,
2301            decoder: &mut fidl::encoding::Decoder<'_, D>,
2302            offset: usize,
2303            _depth: fidl::encoding::Depth,
2304        ) -> fidl::Result<()> {
2305            decoder.debug_check_bounds::<Self>(offset);
2306            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2307            // Verify that padding bytes are zero.
2308            // Copy from the buffer into the object.
2309            unsafe {
2310                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 2);
2311            }
2312            Ok(())
2313        }
2314    }
2315
2316    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSaeFrameTxRequest {
2317        type Borrowed<'a> = &'a Self;
2318        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2319            value
2320        }
2321    }
2322
2323    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSaeFrameTxRequest {
2324        type Owned = Self;
2325
2326        #[inline(always)]
2327        fn inline_align(_context: fidl::encoding::Context) -> usize {
2328            8
2329        }
2330
2331        #[inline(always)]
2332        fn inline_size(_context: fidl::encoding::Context) -> usize {
2333            16
2334        }
2335    }
2336
2337    unsafe impl<D: fidl::encoding::ResourceDialect>
2338        fidl::encoding::Encode<WlanFullmacImplSaeFrameTxRequest, D>
2339        for &WlanFullmacImplSaeFrameTxRequest
2340    {
2341        #[inline]
2342        unsafe fn encode(
2343            self,
2344            encoder: &mut fidl::encoding::Encoder<'_, D>,
2345            offset: usize,
2346            _depth: fidl::encoding::Depth,
2347        ) -> fidl::Result<()> {
2348            encoder.debug_check_bounds::<WlanFullmacImplSaeFrameTxRequest>(offset);
2349            // Delegate to tuple encoding.
2350            fidl::encoding::Encode::<WlanFullmacImplSaeFrameTxRequest, D>::encode(
2351                (<SaeFrame as fidl::encoding::ValueTypeMarker>::borrow(&self.frame),),
2352                encoder,
2353                offset,
2354                _depth,
2355            )
2356        }
2357    }
2358    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SaeFrame, D>>
2359        fidl::encoding::Encode<WlanFullmacImplSaeFrameTxRequest, D> for (T0,)
2360    {
2361        #[inline]
2362        unsafe fn encode(
2363            self,
2364            encoder: &mut fidl::encoding::Encoder<'_, D>,
2365            offset: usize,
2366            depth: fidl::encoding::Depth,
2367        ) -> fidl::Result<()> {
2368            encoder.debug_check_bounds::<WlanFullmacImplSaeFrameTxRequest>(offset);
2369            // Zero out padding regions. There's no need to apply masks
2370            // because the unmasked parts will be overwritten by fields.
2371            // Write the fields.
2372            self.0.encode(encoder, offset + 0, depth)?;
2373            Ok(())
2374        }
2375    }
2376
2377    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2378        for WlanFullmacImplSaeFrameTxRequest
2379    {
2380        #[inline(always)]
2381        fn new_empty() -> Self {
2382            Self { frame: fidl::new_empty!(SaeFrame, D) }
2383        }
2384
2385        #[inline]
2386        unsafe fn decode(
2387            &mut self,
2388            decoder: &mut fidl::encoding::Decoder<'_, D>,
2389            offset: usize,
2390            _depth: fidl::encoding::Depth,
2391        ) -> fidl::Result<()> {
2392            decoder.debug_check_bounds::<Self>(offset);
2393            // Verify that padding bytes are zero.
2394            fidl::decode!(SaeFrame, D, &mut self.frame, decoder, offset + 0, _depth)?;
2395            Ok(())
2396        }
2397    }
2398
2399    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSetKeysResponse {
2400        type Borrowed<'a> = &'a Self;
2401        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2402            value
2403        }
2404    }
2405
2406    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSetKeysResponse {
2407        type Owned = Self;
2408
2409        #[inline(always)]
2410        fn inline_align(_context: fidl::encoding::Context) -> usize {
2411            8
2412        }
2413
2414        #[inline(always)]
2415        fn inline_size(_context: fidl::encoding::Context) -> usize {
2416            16
2417        }
2418    }
2419
2420    unsafe impl<D: fidl::encoding::ResourceDialect>
2421        fidl::encoding::Encode<WlanFullmacImplSetKeysResponse, D>
2422        for &WlanFullmacImplSetKeysResponse
2423    {
2424        #[inline]
2425        unsafe fn encode(
2426            self,
2427            encoder: &mut fidl::encoding::Encoder<'_, D>,
2428            offset: usize,
2429            _depth: fidl::encoding::Depth,
2430        ) -> fidl::Result<()> {
2431            encoder.debug_check_bounds::<WlanFullmacImplSetKeysResponse>(offset);
2432            // Delegate to tuple encoding.
2433            fidl::encoding::Encode::<WlanFullmacImplSetKeysResponse, D>::encode(
2434                (<WlanFullmacSetKeysResp as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
2435                encoder,
2436                offset,
2437                _depth,
2438            )
2439        }
2440    }
2441    unsafe impl<
2442        D: fidl::encoding::ResourceDialect,
2443        T0: fidl::encoding::Encode<WlanFullmacSetKeysResp, D>,
2444    > fidl::encoding::Encode<WlanFullmacImplSetKeysResponse, D> for (T0,)
2445    {
2446        #[inline]
2447        unsafe fn encode(
2448            self,
2449            encoder: &mut fidl::encoding::Encoder<'_, D>,
2450            offset: usize,
2451            depth: fidl::encoding::Depth,
2452        ) -> fidl::Result<()> {
2453            encoder.debug_check_bounds::<WlanFullmacImplSetKeysResponse>(offset);
2454            // Zero out padding regions. There's no need to apply masks
2455            // because the unmasked parts will be overwritten by fields.
2456            // Write the fields.
2457            self.0.encode(encoder, offset + 0, depth)?;
2458            Ok(())
2459        }
2460    }
2461
2462    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2463        for WlanFullmacImplSetKeysResponse
2464    {
2465        #[inline(always)]
2466        fn new_empty() -> Self {
2467            Self { resp: fidl::new_empty!(WlanFullmacSetKeysResp, D) }
2468        }
2469
2470        #[inline]
2471        unsafe fn decode(
2472            &mut self,
2473            decoder: &mut fidl::encoding::Decoder<'_, D>,
2474            offset: usize,
2475            _depth: fidl::encoding::Depth,
2476        ) -> fidl::Result<()> {
2477            decoder.debug_check_bounds::<Self>(offset);
2478            // Verify that padding bytes are zero.
2479            fidl::decode!(WlanFullmacSetKeysResp, D, &mut self.resp, decoder, offset + 0, _depth)?;
2480            Ok(())
2481        }
2482    }
2483
2484    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSetMacAddressRequest {
2485        type Borrowed<'a> = &'a Self;
2486        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2487            value
2488        }
2489    }
2490
2491    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSetMacAddressRequest {
2492        type Owned = Self;
2493
2494        #[inline(always)]
2495        fn inline_align(_context: fidl::encoding::Context) -> usize {
2496            1
2497        }
2498
2499        #[inline(always)]
2500        fn inline_size(_context: fidl::encoding::Context) -> usize {
2501            6
2502        }
2503        #[inline(always)]
2504        fn encode_is_copy() -> bool {
2505            true
2506        }
2507
2508        #[inline(always)]
2509        fn decode_is_copy() -> bool {
2510            true
2511        }
2512    }
2513
2514    unsafe impl<D: fidl::encoding::ResourceDialect>
2515        fidl::encoding::Encode<WlanFullmacImplSetMacAddressRequest, D>
2516        for &WlanFullmacImplSetMacAddressRequest
2517    {
2518        #[inline]
2519        unsafe fn encode(
2520            self,
2521            encoder: &mut fidl::encoding::Encoder<'_, D>,
2522            offset: usize,
2523            _depth: fidl::encoding::Depth,
2524        ) -> fidl::Result<()> {
2525            encoder.debug_check_bounds::<WlanFullmacImplSetMacAddressRequest>(offset);
2526            unsafe {
2527                // Copy the object into the buffer.
2528                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2529                (buf_ptr as *mut WlanFullmacImplSetMacAddressRequest)
2530                    .write_unaligned((self as *const WlanFullmacImplSetMacAddressRequest).read());
2531                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
2532                // done second because the memcpy will write garbage to these bytes.
2533            }
2534            Ok(())
2535        }
2536    }
2537    unsafe impl<
2538        D: fidl::encoding::ResourceDialect,
2539        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2540    > fidl::encoding::Encode<WlanFullmacImplSetMacAddressRequest, D> for (T0,)
2541    {
2542        #[inline]
2543        unsafe fn encode(
2544            self,
2545            encoder: &mut fidl::encoding::Encoder<'_, D>,
2546            offset: usize,
2547            depth: fidl::encoding::Depth,
2548        ) -> fidl::Result<()> {
2549            encoder.debug_check_bounds::<WlanFullmacImplSetMacAddressRequest>(offset);
2550            // Zero out padding regions. There's no need to apply masks
2551            // because the unmasked parts will be overwritten by fields.
2552            // Write the fields.
2553            self.0.encode(encoder, offset + 0, depth)?;
2554            Ok(())
2555        }
2556    }
2557
2558    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2559        for WlanFullmacImplSetMacAddressRequest
2560    {
2561        #[inline(always)]
2562        fn new_empty() -> Self {
2563            Self { mac_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
2564        }
2565
2566        #[inline]
2567        unsafe fn decode(
2568            &mut self,
2569            decoder: &mut fidl::encoding::Decoder<'_, D>,
2570            offset: usize,
2571            _depth: fidl::encoding::Depth,
2572        ) -> fidl::Result<()> {
2573            decoder.debug_check_bounds::<Self>(offset);
2574            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2575            // Verify that padding bytes are zero.
2576            // Copy from the buffer into the object.
2577            unsafe {
2578                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
2579            }
2580            Ok(())
2581        }
2582    }
2583
2584    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplGetIfaceHistogramStatsResponse {
2585        type Borrowed<'a> = &'a Self;
2586        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2587            value
2588        }
2589    }
2590
2591    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplGetIfaceHistogramStatsResponse {
2592        type Owned = Self;
2593
2594        #[inline(always)]
2595        fn inline_align(_context: fidl::encoding::Context) -> usize {
2596            8
2597        }
2598
2599        #[inline(always)]
2600        fn inline_size(_context: fidl::encoding::Context) -> usize {
2601            16
2602        }
2603    }
2604
2605    unsafe impl<D: fidl::encoding::ResourceDialect>
2606        fidl::encoding::Encode<WlanFullmacImplGetIfaceHistogramStatsResponse, D>
2607        for &WlanFullmacImplGetIfaceHistogramStatsResponse
2608    {
2609        #[inline]
2610        unsafe fn encode(
2611            self,
2612            encoder: &mut fidl::encoding::Encoder<'_, D>,
2613            offset: usize,
2614            _depth: fidl::encoding::Depth,
2615        ) -> fidl::Result<()> {
2616            encoder.debug_check_bounds::<WlanFullmacImplGetIfaceHistogramStatsResponse>(offset);
2617            // Delegate to tuple encoding.
2618            fidl::encoding::Encode::<WlanFullmacImplGetIfaceHistogramStatsResponse, D>::encode(
2619                (
2620                    <fidl_fuchsia_wlan_stats__common::IfaceHistogramStats as fidl::encoding::ValueTypeMarker>::borrow(&self.stats),
2621                ),
2622                encoder, offset, _depth
2623            )
2624        }
2625    }
2626    unsafe impl<
2627        D: fidl::encoding::ResourceDialect,
2628        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_stats__common::IfaceHistogramStats, D>,
2629    > fidl::encoding::Encode<WlanFullmacImplGetIfaceHistogramStatsResponse, D> for (T0,)
2630    {
2631        #[inline]
2632        unsafe fn encode(
2633            self,
2634            encoder: &mut fidl::encoding::Encoder<'_, D>,
2635            offset: usize,
2636            depth: fidl::encoding::Depth,
2637        ) -> fidl::Result<()> {
2638            encoder.debug_check_bounds::<WlanFullmacImplGetIfaceHistogramStatsResponse>(offset);
2639            // Zero out padding regions. There's no need to apply masks
2640            // because the unmasked parts will be overwritten by fields.
2641            // Write the fields.
2642            self.0.encode(encoder, offset + 0, depth)?;
2643            Ok(())
2644        }
2645    }
2646
2647    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2648        for WlanFullmacImplGetIfaceHistogramStatsResponse
2649    {
2650        #[inline(always)]
2651        fn new_empty() -> Self {
2652            Self {
2653                stats: fidl::new_empty!(fidl_fuchsia_wlan_stats__common::IfaceHistogramStats, D),
2654            }
2655        }
2656
2657        #[inline]
2658        unsafe fn decode(
2659            &mut self,
2660            decoder: &mut fidl::encoding::Decoder<'_, D>,
2661            offset: usize,
2662            _depth: fidl::encoding::Depth,
2663        ) -> fidl::Result<()> {
2664            decoder.debug_check_bounds::<Self>(offset);
2665            // Verify that padding bytes are zero.
2666            fidl::decode!(
2667                fidl_fuchsia_wlan_stats__common::IfaceHistogramStats,
2668                D,
2669                &mut self.stats,
2670                decoder,
2671                offset + 0,
2672                _depth
2673            )?;
2674            Ok(())
2675        }
2676    }
2677
2678    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplGetIfaceStatsResponse {
2679        type Borrowed<'a> = &'a Self;
2680        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2681            value
2682        }
2683    }
2684
2685    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplGetIfaceStatsResponse {
2686        type Owned = Self;
2687
2688        #[inline(always)]
2689        fn inline_align(_context: fidl::encoding::Context) -> usize {
2690            8
2691        }
2692
2693        #[inline(always)]
2694        fn inline_size(_context: fidl::encoding::Context) -> usize {
2695            16
2696        }
2697    }
2698
2699    unsafe impl<D: fidl::encoding::ResourceDialect>
2700        fidl::encoding::Encode<WlanFullmacImplGetIfaceStatsResponse, D>
2701        for &WlanFullmacImplGetIfaceStatsResponse
2702    {
2703        #[inline]
2704        unsafe fn encode(
2705            self,
2706            encoder: &mut fidl::encoding::Encoder<'_, D>,
2707            offset: usize,
2708            _depth: fidl::encoding::Depth,
2709        ) -> fidl::Result<()> {
2710            encoder.debug_check_bounds::<WlanFullmacImplGetIfaceStatsResponse>(offset);
2711            // Delegate to tuple encoding.
2712            fidl::encoding::Encode::<WlanFullmacImplGetIfaceStatsResponse, D>::encode(
2713                (
2714                    <fidl_fuchsia_wlan_stats__common::IfaceStats as fidl::encoding::ValueTypeMarker>::borrow(&self.stats),
2715                ),
2716                encoder, offset, _depth
2717            )
2718        }
2719    }
2720    unsafe impl<
2721        D: fidl::encoding::ResourceDialect,
2722        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_stats__common::IfaceStats, D>,
2723    > fidl::encoding::Encode<WlanFullmacImplGetIfaceStatsResponse, D> for (T0,)
2724    {
2725        #[inline]
2726        unsafe fn encode(
2727            self,
2728            encoder: &mut fidl::encoding::Encoder<'_, D>,
2729            offset: usize,
2730            depth: fidl::encoding::Depth,
2731        ) -> fidl::Result<()> {
2732            encoder.debug_check_bounds::<WlanFullmacImplGetIfaceStatsResponse>(offset);
2733            // Zero out padding regions. There's no need to apply masks
2734            // because the unmasked parts will be overwritten by fields.
2735            // Write the fields.
2736            self.0.encode(encoder, offset + 0, depth)?;
2737            Ok(())
2738        }
2739    }
2740
2741    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2742        for WlanFullmacImplGetIfaceStatsResponse
2743    {
2744        #[inline(always)]
2745        fn new_empty() -> Self {
2746            Self { stats: fidl::new_empty!(fidl_fuchsia_wlan_stats__common::IfaceStats, D) }
2747        }
2748
2749        #[inline]
2750        unsafe fn decode(
2751            &mut self,
2752            decoder: &mut fidl::encoding::Decoder<'_, D>,
2753            offset: usize,
2754            _depth: fidl::encoding::Depth,
2755        ) -> fidl::Result<()> {
2756            decoder.debug_check_bounds::<Self>(offset);
2757            // Verify that padding bytes are zero.
2758            fidl::decode!(
2759                fidl_fuchsia_wlan_stats__common::IfaceStats,
2760                D,
2761                &mut self.stats,
2762                decoder,
2763                offset + 0,
2764                _depth
2765            )?;
2766            Ok(())
2767        }
2768    }
2769
2770    impl fidl::encoding::ValueTypeMarker for WlanFullmacRssiStats {
2771        type Borrowed<'a> = &'a Self;
2772        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2773            value
2774        }
2775    }
2776
2777    unsafe impl fidl::encoding::TypeMarker for WlanFullmacRssiStats {
2778        type Owned = Self;
2779
2780        #[inline(always)]
2781        fn inline_align(_context: fidl::encoding::Context) -> usize {
2782            8
2783        }
2784
2785        #[inline(always)]
2786        fn inline_size(_context: fidl::encoding::Context) -> usize {
2787            16
2788        }
2789    }
2790
2791    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WlanFullmacRssiStats, D>
2792        for &WlanFullmacRssiStats
2793    {
2794        #[inline]
2795        unsafe fn encode(
2796            self,
2797            encoder: &mut fidl::encoding::Encoder<'_, D>,
2798            offset: usize,
2799            _depth: fidl::encoding::Depth,
2800        ) -> fidl::Result<()> {
2801            encoder.debug_check_bounds::<WlanFullmacRssiStats>(offset);
2802            // Delegate to tuple encoding.
2803            fidl::encoding::Encode::<WlanFullmacRssiStats, D>::encode(
2804                (
2805                    <fidl::encoding::UnboundedVector<u64> as fidl::encoding::ValueTypeMarker>::borrow(&self.hist),
2806                ),
2807                encoder, offset, _depth
2808            )
2809        }
2810    }
2811    unsafe impl<
2812        D: fidl::encoding::ResourceDialect,
2813        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u64>, D>,
2814    > fidl::encoding::Encode<WlanFullmacRssiStats, D> for (T0,)
2815    {
2816        #[inline]
2817        unsafe fn encode(
2818            self,
2819            encoder: &mut fidl::encoding::Encoder<'_, D>,
2820            offset: usize,
2821            depth: fidl::encoding::Depth,
2822        ) -> fidl::Result<()> {
2823            encoder.debug_check_bounds::<WlanFullmacRssiStats>(offset);
2824            // Zero out padding regions. There's no need to apply masks
2825            // because the unmasked parts will be overwritten by fields.
2826            // Write the fields.
2827            self.0.encode(encoder, offset + 0, depth)?;
2828            Ok(())
2829        }
2830    }
2831
2832    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanFullmacRssiStats {
2833        #[inline(always)]
2834        fn new_empty() -> Self {
2835            Self { hist: fidl::new_empty!(fidl::encoding::UnboundedVector<u64>, D) }
2836        }
2837
2838        #[inline]
2839        unsafe fn decode(
2840            &mut self,
2841            decoder: &mut fidl::encoding::Decoder<'_, D>,
2842            offset: usize,
2843            _depth: fidl::encoding::Depth,
2844        ) -> fidl::Result<()> {
2845            decoder.debug_check_bounds::<Self>(offset);
2846            // Verify that padding bytes are zero.
2847            fidl::decode!(
2848                fidl::encoding::UnboundedVector<u64>,
2849                D,
2850                &mut self.hist,
2851                decoder,
2852                offset + 0,
2853                _depth
2854            )?;
2855            Ok(())
2856        }
2857    }
2858
2859    impl fidl::encoding::ValueTypeMarker for WlanFullmacSetKeysResp {
2860        type Borrowed<'a> = &'a Self;
2861        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2862            value
2863        }
2864    }
2865
2866    unsafe impl fidl::encoding::TypeMarker for WlanFullmacSetKeysResp {
2867        type Owned = Self;
2868
2869        #[inline(always)]
2870        fn inline_align(_context: fidl::encoding::Context) -> usize {
2871            8
2872        }
2873
2874        #[inline(always)]
2875        fn inline_size(_context: fidl::encoding::Context) -> usize {
2876            16
2877        }
2878    }
2879
2880    unsafe impl<D: fidl::encoding::ResourceDialect>
2881        fidl::encoding::Encode<WlanFullmacSetKeysResp, D> for &WlanFullmacSetKeysResp
2882    {
2883        #[inline]
2884        unsafe fn encode(
2885            self,
2886            encoder: &mut fidl::encoding::Encoder<'_, D>,
2887            offset: usize,
2888            _depth: fidl::encoding::Depth,
2889        ) -> fidl::Result<()> {
2890            encoder.debug_check_bounds::<WlanFullmacSetKeysResp>(offset);
2891            // Delegate to tuple encoding.
2892            fidl::encoding::Encode::<WlanFullmacSetKeysResp, D>::encode(
2893                (<fidl::encoding::Vector<i32, 4> as fidl::encoding::ValueTypeMarker>::borrow(
2894                    &self.statuslist,
2895                ),),
2896                encoder,
2897                offset,
2898                _depth,
2899            )
2900        }
2901    }
2902    unsafe impl<
2903        D: fidl::encoding::ResourceDialect,
2904        T0: fidl::encoding::Encode<fidl::encoding::Vector<i32, 4>, D>,
2905    > fidl::encoding::Encode<WlanFullmacSetKeysResp, D> for (T0,)
2906    {
2907        #[inline]
2908        unsafe fn encode(
2909            self,
2910            encoder: &mut fidl::encoding::Encoder<'_, D>,
2911            offset: usize,
2912            depth: fidl::encoding::Depth,
2913        ) -> fidl::Result<()> {
2914            encoder.debug_check_bounds::<WlanFullmacSetKeysResp>(offset);
2915            // Zero out padding regions. There's no need to apply masks
2916            // because the unmasked parts will be overwritten by fields.
2917            // Write the fields.
2918            self.0.encode(encoder, offset + 0, depth)?;
2919            Ok(())
2920        }
2921    }
2922
2923    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2924        for WlanFullmacSetKeysResp
2925    {
2926        #[inline(always)]
2927        fn new_empty() -> Self {
2928            Self { statuslist: fidl::new_empty!(fidl::encoding::Vector<i32, 4>, D) }
2929        }
2930
2931        #[inline]
2932        unsafe fn decode(
2933            &mut self,
2934            decoder: &mut fidl::encoding::Decoder<'_, D>,
2935            offset: usize,
2936            _depth: fidl::encoding::Depth,
2937        ) -> fidl::Result<()> {
2938            decoder.debug_check_bounds::<Self>(offset);
2939            // Verify that padding bytes are zero.
2940            fidl::decode!(fidl::encoding::Vector<i32, 4>, D, &mut self.statuslist, decoder, offset + 0, _depth)?;
2941            Ok(())
2942        }
2943    }
2944
2945    impl fidl::encoding::ValueTypeMarker for WlanFullmacSignalReportIndication {
2946        type Borrowed<'a> = &'a Self;
2947        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2948            value
2949        }
2950    }
2951
2952    unsafe impl fidl::encoding::TypeMarker for WlanFullmacSignalReportIndication {
2953        type Owned = Self;
2954
2955        #[inline(always)]
2956        fn inline_align(_context: fidl::encoding::Context) -> usize {
2957            1
2958        }
2959
2960        #[inline(always)]
2961        fn inline_size(_context: fidl::encoding::Context) -> usize {
2962            2
2963        }
2964        #[inline(always)]
2965        fn encode_is_copy() -> bool {
2966            true
2967        }
2968
2969        #[inline(always)]
2970        fn decode_is_copy() -> bool {
2971            true
2972        }
2973    }
2974
2975    unsafe impl<D: fidl::encoding::ResourceDialect>
2976        fidl::encoding::Encode<WlanFullmacSignalReportIndication, D>
2977        for &WlanFullmacSignalReportIndication
2978    {
2979        #[inline]
2980        unsafe fn encode(
2981            self,
2982            encoder: &mut fidl::encoding::Encoder<'_, D>,
2983            offset: usize,
2984            _depth: fidl::encoding::Depth,
2985        ) -> fidl::Result<()> {
2986            encoder.debug_check_bounds::<WlanFullmacSignalReportIndication>(offset);
2987            unsafe {
2988                // Copy the object into the buffer.
2989                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2990                (buf_ptr as *mut WlanFullmacSignalReportIndication)
2991                    .write_unaligned((self as *const WlanFullmacSignalReportIndication).read());
2992                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
2993                // done second because the memcpy will write garbage to these bytes.
2994            }
2995            Ok(())
2996        }
2997    }
2998    unsafe impl<
2999        D: fidl::encoding::ResourceDialect,
3000        T0: fidl::encoding::Encode<i8, D>,
3001        T1: fidl::encoding::Encode<i8, D>,
3002    > fidl::encoding::Encode<WlanFullmacSignalReportIndication, D> for (T0, T1)
3003    {
3004        #[inline]
3005        unsafe fn encode(
3006            self,
3007            encoder: &mut fidl::encoding::Encoder<'_, D>,
3008            offset: usize,
3009            depth: fidl::encoding::Depth,
3010        ) -> fidl::Result<()> {
3011            encoder.debug_check_bounds::<WlanFullmacSignalReportIndication>(offset);
3012            // Zero out padding regions. There's no need to apply masks
3013            // because the unmasked parts will be overwritten by fields.
3014            // Write the fields.
3015            self.0.encode(encoder, offset + 0, depth)?;
3016            self.1.encode(encoder, offset + 1, depth)?;
3017            Ok(())
3018        }
3019    }
3020
3021    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3022        for WlanFullmacSignalReportIndication
3023    {
3024        #[inline(always)]
3025        fn new_empty() -> Self {
3026            Self { rssi_dbm: fidl::new_empty!(i8, D), snr_db: fidl::new_empty!(i8, D) }
3027        }
3028
3029        #[inline]
3030        unsafe fn decode(
3031            &mut self,
3032            decoder: &mut fidl::encoding::Decoder<'_, D>,
3033            offset: usize,
3034            _depth: fidl::encoding::Depth,
3035        ) -> fidl::Result<()> {
3036            decoder.debug_check_bounds::<Self>(offset);
3037            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
3038            // Verify that padding bytes are zero.
3039            // Copy from the buffer into the object.
3040            unsafe {
3041                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 2);
3042            }
3043            Ok(())
3044        }
3045    }
3046
3047    impl BandCapability {
3048        #[inline(always)]
3049        fn max_ordinal_present(&self) -> u64 {
3050            if let Some(_) = self.operating_channels {
3051                return 5;
3052            }
3053            if let Some(_) = self.vht_caps {
3054                return 4;
3055            }
3056            if let Some(_) = self.ht_caps {
3057                return 3;
3058            }
3059            if let Some(_) = self.basic_rates {
3060                return 2;
3061            }
3062            if let Some(_) = self.band {
3063                return 1;
3064            }
3065            0
3066        }
3067    }
3068
3069    impl fidl::encoding::ValueTypeMarker for BandCapability {
3070        type Borrowed<'a> = &'a Self;
3071        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3072            value
3073        }
3074    }
3075
3076    unsafe impl fidl::encoding::TypeMarker for BandCapability {
3077        type Owned = Self;
3078
3079        #[inline(always)]
3080        fn inline_align(_context: fidl::encoding::Context) -> usize {
3081            8
3082        }
3083
3084        #[inline(always)]
3085        fn inline_size(_context: fidl::encoding::Context) -> usize {
3086            16
3087        }
3088    }
3089
3090    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BandCapability, D>
3091        for &BandCapability
3092    {
3093        unsafe fn encode(
3094            self,
3095            encoder: &mut fidl::encoding::Encoder<'_, D>,
3096            offset: usize,
3097            mut depth: fidl::encoding::Depth,
3098        ) -> fidl::Result<()> {
3099            encoder.debug_check_bounds::<BandCapability>(offset);
3100            // Vector header
3101            let max_ordinal: u64 = self.max_ordinal_present();
3102            encoder.write_num(max_ordinal, offset);
3103            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3104            // Calling encoder.out_of_line_offset(0) is not allowed.
3105            if max_ordinal == 0 {
3106                return Ok(());
3107            }
3108            depth.increment()?;
3109            let envelope_size = 8;
3110            let bytes_len = max_ordinal as usize * envelope_size;
3111            #[allow(unused_variables)]
3112            let offset = encoder.out_of_line_offset(bytes_len);
3113            let mut _prev_end_offset: usize = 0;
3114            if 1 > max_ordinal {
3115                return Ok(());
3116            }
3117
3118            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3119            // are envelope_size bytes.
3120            let cur_offset: usize = (1 - 1) * envelope_size;
3121
3122            // Zero reserved fields.
3123            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3124
3125            // Safety:
3126            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3127            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3128            //   envelope_size bytes, there is always sufficient room.
3129            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::WlanBand, D>(
3130            self.band.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::WlanBand as fidl::encoding::ValueTypeMarker>::borrow),
3131            encoder, offset + cur_offset, depth
3132        )?;
3133
3134            _prev_end_offset = cur_offset + envelope_size;
3135            if 2 > max_ordinal {
3136                return Ok(());
3137            }
3138
3139            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3140            // are envelope_size bytes.
3141            let cur_offset: usize = (2 - 1) * envelope_size;
3142
3143            // Zero reserved fields.
3144            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3145
3146            // Safety:
3147            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3148            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3149            //   envelope_size bytes, there is always sufficient room.
3150            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 12>, D>(
3151                self.basic_rates.as_ref().map(
3152                    <fidl::encoding::Vector<u8, 12> as fidl::encoding::ValueTypeMarker>::borrow,
3153                ),
3154                encoder,
3155                offset + cur_offset,
3156                depth,
3157            )?;
3158
3159            _prev_end_offset = cur_offset + envelope_size;
3160            if 3 > max_ordinal {
3161                return Ok(());
3162            }
3163
3164            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3165            // are envelope_size bytes.
3166            let cur_offset: usize = (3 - 1) * envelope_size;
3167
3168            // Zero reserved fields.
3169            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3170
3171            // Safety:
3172            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3173            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3174            //   envelope_size bytes, there is always sufficient room.
3175            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities, D>(
3176            self.ht_caps.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities as fidl::encoding::ValueTypeMarker>::borrow),
3177            encoder, offset + cur_offset, depth
3178        )?;
3179
3180            _prev_end_offset = cur_offset + envelope_size;
3181            if 4 > max_ordinal {
3182                return Ok(());
3183            }
3184
3185            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3186            // are envelope_size bytes.
3187            let cur_offset: usize = (4 - 1) * envelope_size;
3188
3189            // Zero reserved fields.
3190            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3191
3192            // Safety:
3193            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3194            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3195            //   envelope_size bytes, there is always sufficient room.
3196            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities, D>(
3197            self.vht_caps.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities as fidl::encoding::ValueTypeMarker>::borrow),
3198            encoder, offset + cur_offset, depth
3199        )?;
3200
3201            _prev_end_offset = cur_offset + envelope_size;
3202            if 5 > max_ordinal {
3203                return Ok(());
3204            }
3205
3206            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3207            // are envelope_size bytes.
3208            let cur_offset: usize = (5 - 1) * envelope_size;
3209
3210            // Zero reserved fields.
3211            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3212
3213            // Safety:
3214            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3215            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3216            //   envelope_size bytes, there is always sufficient room.
3217            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 256>, D>(
3218                self.operating_channels.as_ref().map(
3219                    <fidl::encoding::Vector<u8, 256> as fidl::encoding::ValueTypeMarker>::borrow,
3220                ),
3221                encoder,
3222                offset + cur_offset,
3223                depth,
3224            )?;
3225
3226            _prev_end_offset = cur_offset + envelope_size;
3227
3228            Ok(())
3229        }
3230    }
3231
3232    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BandCapability {
3233        #[inline(always)]
3234        fn new_empty() -> Self {
3235            Self::default()
3236        }
3237
3238        unsafe fn decode(
3239            &mut self,
3240            decoder: &mut fidl::encoding::Decoder<'_, D>,
3241            offset: usize,
3242            mut depth: fidl::encoding::Depth,
3243        ) -> fidl::Result<()> {
3244            decoder.debug_check_bounds::<Self>(offset);
3245            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3246                None => return Err(fidl::Error::NotNullable),
3247                Some(len) => len,
3248            };
3249            // Calling decoder.out_of_line_offset(0) is not allowed.
3250            if len == 0 {
3251                return Ok(());
3252            };
3253            depth.increment()?;
3254            let envelope_size = 8;
3255            let bytes_len = len * envelope_size;
3256            let offset = decoder.out_of_line_offset(bytes_len)?;
3257            // Decode the envelope for each type.
3258            let mut _next_ordinal_to_read = 0;
3259            let mut next_offset = offset;
3260            let end_offset = offset + bytes_len;
3261            _next_ordinal_to_read += 1;
3262            if next_offset >= end_offset {
3263                return Ok(());
3264            }
3265
3266            // Decode unknown envelopes for gaps in ordinals.
3267            while _next_ordinal_to_read < 1 {
3268                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3269                _next_ordinal_to_read += 1;
3270                next_offset += envelope_size;
3271            }
3272
3273            let next_out_of_line = decoder.next_out_of_line();
3274            let handles_before = decoder.remaining_handles();
3275            if let Some((inlined, num_bytes, num_handles)) =
3276                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3277            {
3278                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::WlanBand as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3279                if inlined != (member_inline_size <= 4) {
3280                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3281                }
3282                let inner_offset;
3283                let mut inner_depth = depth.clone();
3284                if inlined {
3285                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3286                    inner_offset = next_offset;
3287                } else {
3288                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3289                    inner_depth.increment()?;
3290                }
3291                let val_ref = self.band.get_or_insert_with(|| {
3292                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::WlanBand, D)
3293                });
3294                fidl::decode!(
3295                    fidl_fuchsia_wlan_ieee80211__common::WlanBand,
3296                    D,
3297                    val_ref,
3298                    decoder,
3299                    inner_offset,
3300                    inner_depth
3301                )?;
3302                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3303                {
3304                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3305                }
3306                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3307                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3308                }
3309            }
3310
3311            next_offset += envelope_size;
3312            _next_ordinal_to_read += 1;
3313            if next_offset >= end_offset {
3314                return Ok(());
3315            }
3316
3317            // Decode unknown envelopes for gaps in ordinals.
3318            while _next_ordinal_to_read < 2 {
3319                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3320                _next_ordinal_to_read += 1;
3321                next_offset += envelope_size;
3322            }
3323
3324            let next_out_of_line = decoder.next_out_of_line();
3325            let handles_before = decoder.remaining_handles();
3326            if let Some((inlined, num_bytes, num_handles)) =
3327                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3328            {
3329                let member_inline_size =
3330                    <fidl::encoding::Vector<u8, 12> as fidl::encoding::TypeMarker>::inline_size(
3331                        decoder.context,
3332                    );
3333                if inlined != (member_inline_size <= 4) {
3334                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3335                }
3336                let inner_offset;
3337                let mut inner_depth = depth.clone();
3338                if inlined {
3339                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3340                    inner_offset = next_offset;
3341                } else {
3342                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3343                    inner_depth.increment()?;
3344                }
3345                let val_ref = self
3346                    .basic_rates
3347                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 12>, D));
3348                fidl::decode!(fidl::encoding::Vector<u8, 12>, D, val_ref, decoder, inner_offset, inner_depth)?;
3349                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3350                {
3351                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3352                }
3353                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3354                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3355                }
3356            }
3357
3358            next_offset += envelope_size;
3359            _next_ordinal_to_read += 1;
3360            if next_offset >= end_offset {
3361                return Ok(());
3362            }
3363
3364            // Decode unknown envelopes for gaps in ordinals.
3365            while _next_ordinal_to_read < 3 {
3366                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3367                _next_ordinal_to_read += 1;
3368                next_offset += envelope_size;
3369            }
3370
3371            let next_out_of_line = decoder.next_out_of_line();
3372            let handles_before = decoder.remaining_handles();
3373            if let Some((inlined, num_bytes, num_handles)) =
3374                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3375            {
3376                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::HtCapabilities as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3377                if inlined != (member_inline_size <= 4) {
3378                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3379                }
3380                let inner_offset;
3381                let mut inner_depth = depth.clone();
3382                if inlined {
3383                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3384                    inner_offset = next_offset;
3385                } else {
3386                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3387                    inner_depth.increment()?;
3388                }
3389                let val_ref = self.ht_caps.get_or_insert_with(|| {
3390                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::HtCapabilities, D)
3391                });
3392                fidl::decode!(
3393                    fidl_fuchsia_wlan_ieee80211__common::HtCapabilities,
3394                    D,
3395                    val_ref,
3396                    decoder,
3397                    inner_offset,
3398                    inner_depth
3399                )?;
3400                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3401                {
3402                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3403                }
3404                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3405                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3406                }
3407            }
3408
3409            next_offset += envelope_size;
3410            _next_ordinal_to_read += 1;
3411            if next_offset >= end_offset {
3412                return Ok(());
3413            }
3414
3415            // Decode unknown envelopes for gaps in ordinals.
3416            while _next_ordinal_to_read < 4 {
3417                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3418                _next_ordinal_to_read += 1;
3419                next_offset += envelope_size;
3420            }
3421
3422            let next_out_of_line = decoder.next_out_of_line();
3423            let handles_before = decoder.remaining_handles();
3424            if let Some((inlined, num_bytes, num_handles)) =
3425                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3426            {
3427                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3428                if inlined != (member_inline_size <= 4) {
3429                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3430                }
3431                let inner_offset;
3432                let mut inner_depth = depth.clone();
3433                if inlined {
3434                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3435                    inner_offset = next_offset;
3436                } else {
3437                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3438                    inner_depth.increment()?;
3439                }
3440                let val_ref = self.vht_caps.get_or_insert_with(|| {
3441                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities, D)
3442                });
3443                fidl::decode!(
3444                    fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities,
3445                    D,
3446                    val_ref,
3447                    decoder,
3448                    inner_offset,
3449                    inner_depth
3450                )?;
3451                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3452                {
3453                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3454                }
3455                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3456                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3457                }
3458            }
3459
3460            next_offset += envelope_size;
3461            _next_ordinal_to_read += 1;
3462            if next_offset >= end_offset {
3463                return Ok(());
3464            }
3465
3466            // Decode unknown envelopes for gaps in ordinals.
3467            while _next_ordinal_to_read < 5 {
3468                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3469                _next_ordinal_to_read += 1;
3470                next_offset += envelope_size;
3471            }
3472
3473            let next_out_of_line = decoder.next_out_of_line();
3474            let handles_before = decoder.remaining_handles();
3475            if let Some((inlined, num_bytes, num_handles)) =
3476                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3477            {
3478                let member_inline_size =
3479                    <fidl::encoding::Vector<u8, 256> as fidl::encoding::TypeMarker>::inline_size(
3480                        decoder.context,
3481                    );
3482                if inlined != (member_inline_size <= 4) {
3483                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3484                }
3485                let inner_offset;
3486                let mut inner_depth = depth.clone();
3487                if inlined {
3488                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3489                    inner_offset = next_offset;
3490                } else {
3491                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3492                    inner_depth.increment()?;
3493                }
3494                let val_ref = self
3495                    .operating_channels
3496                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 256>, D));
3497                fidl::decode!(fidl::encoding::Vector<u8, 256>, D, val_ref, decoder, inner_offset, inner_depth)?;
3498                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3499                {
3500                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3501                }
3502                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3503                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3504                }
3505            }
3506
3507            next_offset += envelope_size;
3508
3509            // Decode the remaining unknown envelopes.
3510            while next_offset < end_offset {
3511                _next_ordinal_to_read += 1;
3512                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3513                next_offset += envelope_size;
3514            }
3515
3516            Ok(())
3517        }
3518    }
3519
3520    impl SaeFrame {
3521        #[inline(always)]
3522        fn max_ordinal_present(&self) -> u64 {
3523            if let Some(_) = self.sae_fields {
3524                return 4;
3525            }
3526            if let Some(_) = self.seq_num {
3527                return 3;
3528            }
3529            if let Some(_) = self.status_code {
3530                return 2;
3531            }
3532            if let Some(_) = self.peer_sta_address {
3533                return 1;
3534            }
3535            0
3536        }
3537    }
3538
3539    impl fidl::encoding::ValueTypeMarker for SaeFrame {
3540        type Borrowed<'a> = &'a Self;
3541        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3542            value
3543        }
3544    }
3545
3546    unsafe impl fidl::encoding::TypeMarker for SaeFrame {
3547        type Owned = Self;
3548
3549        #[inline(always)]
3550        fn inline_align(_context: fidl::encoding::Context) -> usize {
3551            8
3552        }
3553
3554        #[inline(always)]
3555        fn inline_size(_context: fidl::encoding::Context) -> usize {
3556            16
3557        }
3558    }
3559
3560    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SaeFrame, D> for &SaeFrame {
3561        unsafe fn encode(
3562            self,
3563            encoder: &mut fidl::encoding::Encoder<'_, D>,
3564            offset: usize,
3565            mut depth: fidl::encoding::Depth,
3566        ) -> fidl::Result<()> {
3567            encoder.debug_check_bounds::<SaeFrame>(offset);
3568            // Vector header
3569            let max_ordinal: u64 = self.max_ordinal_present();
3570            encoder.write_num(max_ordinal, offset);
3571            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3572            // Calling encoder.out_of_line_offset(0) is not allowed.
3573            if max_ordinal == 0 {
3574                return Ok(());
3575            }
3576            depth.increment()?;
3577            let envelope_size = 8;
3578            let bytes_len = max_ordinal as usize * envelope_size;
3579            #[allow(unused_variables)]
3580            let offset = encoder.out_of_line_offset(bytes_len);
3581            let mut _prev_end_offset: usize = 0;
3582            if 1 > max_ordinal {
3583                return Ok(());
3584            }
3585
3586            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3587            // are envelope_size bytes.
3588            let cur_offset: usize = (1 - 1) * envelope_size;
3589
3590            // Zero reserved fields.
3591            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3592
3593            // Safety:
3594            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3595            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3596            //   envelope_size bytes, there is always sufficient room.
3597            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
3598                self.peer_sta_address
3599                    .as_ref()
3600                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
3601                encoder,
3602                offset + cur_offset,
3603                depth,
3604            )?;
3605
3606            _prev_end_offset = cur_offset + envelope_size;
3607            if 2 > max_ordinal {
3608                return Ok(());
3609            }
3610
3611            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3612            // are envelope_size bytes.
3613            let cur_offset: usize = (2 - 1) * envelope_size;
3614
3615            // Zero reserved fields.
3616            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3617
3618            // Safety:
3619            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3620            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3621            //   envelope_size bytes, there is always sufficient room.
3622            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>(
3623            self.status_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
3624            encoder, offset + cur_offset, depth
3625        )?;
3626
3627            _prev_end_offset = cur_offset + envelope_size;
3628            if 3 > max_ordinal {
3629                return Ok(());
3630            }
3631
3632            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3633            // are envelope_size bytes.
3634            let cur_offset: usize = (3 - 1) * envelope_size;
3635
3636            // Zero reserved fields.
3637            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3638
3639            // Safety:
3640            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3641            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3642            //   envelope_size bytes, there is always sufficient room.
3643            fidl::encoding::encode_in_envelope_optional::<u16, D>(
3644                self.seq_num.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
3645                encoder,
3646                offset + cur_offset,
3647                depth,
3648            )?;
3649
3650            _prev_end_offset = cur_offset + envelope_size;
3651            if 4 > max_ordinal {
3652                return Ok(());
3653            }
3654
3655            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3656            // are envelope_size bytes.
3657            let cur_offset: usize = (4 - 1) * envelope_size;
3658
3659            // Zero reserved fields.
3660            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3661
3662            // Safety:
3663            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3664            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3665            //   envelope_size bytes, there is always sufficient room.
3666            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
3667            self.sae_fields.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
3668            encoder, offset + cur_offset, depth
3669        )?;
3670
3671            _prev_end_offset = cur_offset + envelope_size;
3672
3673            Ok(())
3674        }
3675    }
3676
3677    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SaeFrame {
3678        #[inline(always)]
3679        fn new_empty() -> Self {
3680            Self::default()
3681        }
3682
3683        unsafe fn decode(
3684            &mut self,
3685            decoder: &mut fidl::encoding::Decoder<'_, D>,
3686            offset: usize,
3687            mut depth: fidl::encoding::Depth,
3688        ) -> fidl::Result<()> {
3689            decoder.debug_check_bounds::<Self>(offset);
3690            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3691                None => return Err(fidl::Error::NotNullable),
3692                Some(len) => len,
3693            };
3694            // Calling decoder.out_of_line_offset(0) is not allowed.
3695            if len == 0 {
3696                return Ok(());
3697            };
3698            depth.increment()?;
3699            let envelope_size = 8;
3700            let bytes_len = len * envelope_size;
3701            let offset = decoder.out_of_line_offset(bytes_len)?;
3702            // Decode the envelope for each type.
3703            let mut _next_ordinal_to_read = 0;
3704            let mut next_offset = offset;
3705            let end_offset = offset + bytes_len;
3706            _next_ordinal_to_read += 1;
3707            if next_offset >= end_offset {
3708                return Ok(());
3709            }
3710
3711            // Decode unknown envelopes for gaps in ordinals.
3712            while _next_ordinal_to_read < 1 {
3713                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3714                _next_ordinal_to_read += 1;
3715                next_offset += envelope_size;
3716            }
3717
3718            let next_out_of_line = decoder.next_out_of_line();
3719            let handles_before = decoder.remaining_handles();
3720            if let Some((inlined, num_bytes, num_handles)) =
3721                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3722            {
3723                let member_inline_size =
3724                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
3725                        decoder.context,
3726                    );
3727                if inlined != (member_inline_size <= 4) {
3728                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3729                }
3730                let inner_offset;
3731                let mut inner_depth = depth.clone();
3732                if inlined {
3733                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3734                    inner_offset = next_offset;
3735                } else {
3736                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3737                    inner_depth.increment()?;
3738                }
3739                let val_ref = self
3740                    .peer_sta_address
3741                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
3742                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
3743                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3744                {
3745                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3746                }
3747                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3748                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3749                }
3750            }
3751
3752            next_offset += envelope_size;
3753            _next_ordinal_to_read += 1;
3754            if next_offset >= end_offset {
3755                return Ok(());
3756            }
3757
3758            // Decode unknown envelopes for gaps in ordinals.
3759            while _next_ordinal_to_read < 2 {
3760                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3761                _next_ordinal_to_read += 1;
3762                next_offset += envelope_size;
3763            }
3764
3765            let next_out_of_line = decoder.next_out_of_line();
3766            let handles_before = decoder.remaining_handles();
3767            if let Some((inlined, num_bytes, num_handles)) =
3768                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3769            {
3770                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3771                if inlined != (member_inline_size <= 4) {
3772                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3773                }
3774                let inner_offset;
3775                let mut inner_depth = depth.clone();
3776                if inlined {
3777                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3778                    inner_offset = next_offset;
3779                } else {
3780                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3781                    inner_depth.increment()?;
3782                }
3783                let val_ref = self.status_code.get_or_insert_with(|| {
3784                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D)
3785                });
3786                fidl::decode!(
3787                    fidl_fuchsia_wlan_ieee80211__common::StatusCode,
3788                    D,
3789                    val_ref,
3790                    decoder,
3791                    inner_offset,
3792                    inner_depth
3793                )?;
3794                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3795                {
3796                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3797                }
3798                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3799                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3800                }
3801            }
3802
3803            next_offset += envelope_size;
3804            _next_ordinal_to_read += 1;
3805            if next_offset >= end_offset {
3806                return Ok(());
3807            }
3808
3809            // Decode unknown envelopes for gaps in ordinals.
3810            while _next_ordinal_to_read < 3 {
3811                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3812                _next_ordinal_to_read += 1;
3813                next_offset += envelope_size;
3814            }
3815
3816            let next_out_of_line = decoder.next_out_of_line();
3817            let handles_before = decoder.remaining_handles();
3818            if let Some((inlined, num_bytes, num_handles)) =
3819                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3820            {
3821                let member_inline_size =
3822                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3823                if inlined != (member_inline_size <= 4) {
3824                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3825                }
3826                let inner_offset;
3827                let mut inner_depth = depth.clone();
3828                if inlined {
3829                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3830                    inner_offset = next_offset;
3831                } else {
3832                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3833                    inner_depth.increment()?;
3834                }
3835                let val_ref = self.seq_num.get_or_insert_with(|| fidl::new_empty!(u16, D));
3836                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
3837                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3838                {
3839                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3840                }
3841                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3842                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3843                }
3844            }
3845
3846            next_offset += envelope_size;
3847            _next_ordinal_to_read += 1;
3848            if next_offset >= end_offset {
3849                return Ok(());
3850            }
3851
3852            // Decode unknown envelopes for gaps in ordinals.
3853            while _next_ordinal_to_read < 4 {
3854                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3855                _next_ordinal_to_read += 1;
3856                next_offset += envelope_size;
3857            }
3858
3859            let next_out_of_line = decoder.next_out_of_line();
3860            let handles_before = decoder.remaining_handles();
3861            if let Some((inlined, num_bytes, num_handles)) =
3862                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3863            {
3864                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3865                if inlined != (member_inline_size <= 4) {
3866                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3867                }
3868                let inner_offset;
3869                let mut inner_depth = depth.clone();
3870                if inlined {
3871                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3872                    inner_offset = next_offset;
3873                } else {
3874                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3875                    inner_depth.increment()?;
3876                }
3877                let val_ref = self.sae_fields.get_or_insert_with(|| {
3878                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
3879                });
3880                fidl::decode!(
3881                    fidl::encoding::UnboundedVector<u8>,
3882                    D,
3883                    val_ref,
3884                    decoder,
3885                    inner_offset,
3886                    inner_depth
3887                )?;
3888                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3889                {
3890                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3891                }
3892                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3893                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3894                }
3895            }
3896
3897            next_offset += envelope_size;
3898
3899            // Decode the remaining unknown envelopes.
3900            while next_offset < end_offset {
3901                _next_ordinal_to_read += 1;
3902                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3903                next_offset += envelope_size;
3904            }
3905
3906            Ok(())
3907        }
3908    }
3909
3910    impl WlanFullmacImplAssocRespRequest {
3911        #[inline(always)]
3912        fn max_ordinal_present(&self) -> u64 {
3913            if let Some(_) = self.association_id {
3914                return 3;
3915            }
3916            if let Some(_) = self.result_code {
3917                return 2;
3918            }
3919            if let Some(_) = self.peer_sta_address {
3920                return 1;
3921            }
3922            0
3923        }
3924    }
3925
3926    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplAssocRespRequest {
3927        type Borrowed<'a> = &'a Self;
3928        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3929            value
3930        }
3931    }
3932
3933    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplAssocRespRequest {
3934        type Owned = Self;
3935
3936        #[inline(always)]
3937        fn inline_align(_context: fidl::encoding::Context) -> usize {
3938            8
3939        }
3940
3941        #[inline(always)]
3942        fn inline_size(_context: fidl::encoding::Context) -> usize {
3943            16
3944        }
3945    }
3946
3947    unsafe impl<D: fidl::encoding::ResourceDialect>
3948        fidl::encoding::Encode<WlanFullmacImplAssocRespRequest, D>
3949        for &WlanFullmacImplAssocRespRequest
3950    {
3951        unsafe fn encode(
3952            self,
3953            encoder: &mut fidl::encoding::Encoder<'_, D>,
3954            offset: usize,
3955            mut depth: fidl::encoding::Depth,
3956        ) -> fidl::Result<()> {
3957            encoder.debug_check_bounds::<WlanFullmacImplAssocRespRequest>(offset);
3958            // Vector header
3959            let max_ordinal: u64 = self.max_ordinal_present();
3960            encoder.write_num(max_ordinal, offset);
3961            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3962            // Calling encoder.out_of_line_offset(0) is not allowed.
3963            if max_ordinal == 0 {
3964                return Ok(());
3965            }
3966            depth.increment()?;
3967            let envelope_size = 8;
3968            let bytes_len = max_ordinal as usize * envelope_size;
3969            #[allow(unused_variables)]
3970            let offset = encoder.out_of_line_offset(bytes_len);
3971            let mut _prev_end_offset: usize = 0;
3972            if 1 > max_ordinal {
3973                return Ok(());
3974            }
3975
3976            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3977            // are envelope_size bytes.
3978            let cur_offset: usize = (1 - 1) * envelope_size;
3979
3980            // Zero reserved fields.
3981            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3982
3983            // Safety:
3984            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3985            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3986            //   envelope_size bytes, there is always sufficient room.
3987            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
3988                self.peer_sta_address
3989                    .as_ref()
3990                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
3991                encoder,
3992                offset + cur_offset,
3993                depth,
3994            )?;
3995
3996            _prev_end_offset = cur_offset + envelope_size;
3997            if 2 > max_ordinal {
3998                return Ok(());
3999            }
4000
4001            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4002            // are envelope_size bytes.
4003            let cur_offset: usize = (2 - 1) * envelope_size;
4004
4005            // Zero reserved fields.
4006            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4007
4008            // Safety:
4009            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4010            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4011            //   envelope_size bytes, there is always sufficient room.
4012            fidl::encoding::encode_in_envelope_optional::<WlanAssocResult, D>(
4013                self.result_code
4014                    .as_ref()
4015                    .map(<WlanAssocResult as fidl::encoding::ValueTypeMarker>::borrow),
4016                encoder,
4017                offset + cur_offset,
4018                depth,
4019            )?;
4020
4021            _prev_end_offset = cur_offset + envelope_size;
4022            if 3 > max_ordinal {
4023                return Ok(());
4024            }
4025
4026            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4027            // are envelope_size bytes.
4028            let cur_offset: usize = (3 - 1) * envelope_size;
4029
4030            // Zero reserved fields.
4031            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4032
4033            // Safety:
4034            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4035            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4036            //   envelope_size bytes, there is always sufficient room.
4037            fidl::encoding::encode_in_envelope_optional::<u16, D>(
4038                self.association_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
4039                encoder,
4040                offset + cur_offset,
4041                depth,
4042            )?;
4043
4044            _prev_end_offset = cur_offset + envelope_size;
4045
4046            Ok(())
4047        }
4048    }
4049
4050    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4051        for WlanFullmacImplAssocRespRequest
4052    {
4053        #[inline(always)]
4054        fn new_empty() -> Self {
4055            Self::default()
4056        }
4057
4058        unsafe fn decode(
4059            &mut self,
4060            decoder: &mut fidl::encoding::Decoder<'_, D>,
4061            offset: usize,
4062            mut depth: fidl::encoding::Depth,
4063        ) -> fidl::Result<()> {
4064            decoder.debug_check_bounds::<Self>(offset);
4065            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4066                None => return Err(fidl::Error::NotNullable),
4067                Some(len) => len,
4068            };
4069            // Calling decoder.out_of_line_offset(0) is not allowed.
4070            if len == 0 {
4071                return Ok(());
4072            };
4073            depth.increment()?;
4074            let envelope_size = 8;
4075            let bytes_len = len * envelope_size;
4076            let offset = decoder.out_of_line_offset(bytes_len)?;
4077            // Decode the envelope for each type.
4078            let mut _next_ordinal_to_read = 0;
4079            let mut next_offset = offset;
4080            let end_offset = offset + bytes_len;
4081            _next_ordinal_to_read += 1;
4082            if next_offset >= end_offset {
4083                return Ok(());
4084            }
4085
4086            // Decode unknown envelopes for gaps in ordinals.
4087            while _next_ordinal_to_read < 1 {
4088                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4089                _next_ordinal_to_read += 1;
4090                next_offset += envelope_size;
4091            }
4092
4093            let next_out_of_line = decoder.next_out_of_line();
4094            let handles_before = decoder.remaining_handles();
4095            if let Some((inlined, num_bytes, num_handles)) =
4096                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4097            {
4098                let member_inline_size =
4099                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
4100                        decoder.context,
4101                    );
4102                if inlined != (member_inline_size <= 4) {
4103                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4104                }
4105                let inner_offset;
4106                let mut inner_depth = depth.clone();
4107                if inlined {
4108                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4109                    inner_offset = next_offset;
4110                } else {
4111                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4112                    inner_depth.increment()?;
4113                }
4114                let val_ref = self
4115                    .peer_sta_address
4116                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
4117                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
4118                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4119                {
4120                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4121                }
4122                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4123                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4124                }
4125            }
4126
4127            next_offset += envelope_size;
4128            _next_ordinal_to_read += 1;
4129            if next_offset >= end_offset {
4130                return Ok(());
4131            }
4132
4133            // Decode unknown envelopes for gaps in ordinals.
4134            while _next_ordinal_to_read < 2 {
4135                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4136                _next_ordinal_to_read += 1;
4137                next_offset += envelope_size;
4138            }
4139
4140            let next_out_of_line = decoder.next_out_of_line();
4141            let handles_before = decoder.remaining_handles();
4142            if let Some((inlined, num_bytes, num_handles)) =
4143                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4144            {
4145                let member_inline_size =
4146                    <WlanAssocResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4147                if inlined != (member_inline_size <= 4) {
4148                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4149                }
4150                let inner_offset;
4151                let mut inner_depth = depth.clone();
4152                if inlined {
4153                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4154                    inner_offset = next_offset;
4155                } else {
4156                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4157                    inner_depth.increment()?;
4158                }
4159                let val_ref =
4160                    self.result_code.get_or_insert_with(|| fidl::new_empty!(WlanAssocResult, D));
4161                fidl::decode!(WlanAssocResult, D, val_ref, decoder, inner_offset, inner_depth)?;
4162                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4163                {
4164                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4165                }
4166                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4167                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4168                }
4169            }
4170
4171            next_offset += envelope_size;
4172            _next_ordinal_to_read += 1;
4173            if next_offset >= end_offset {
4174                return Ok(());
4175            }
4176
4177            // Decode unknown envelopes for gaps in ordinals.
4178            while _next_ordinal_to_read < 3 {
4179                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4180                _next_ordinal_to_read += 1;
4181                next_offset += envelope_size;
4182            }
4183
4184            let next_out_of_line = decoder.next_out_of_line();
4185            let handles_before = decoder.remaining_handles();
4186            if let Some((inlined, num_bytes, num_handles)) =
4187                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4188            {
4189                let member_inline_size =
4190                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4191                if inlined != (member_inline_size <= 4) {
4192                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4193                }
4194                let inner_offset;
4195                let mut inner_depth = depth.clone();
4196                if inlined {
4197                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4198                    inner_offset = next_offset;
4199                } else {
4200                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4201                    inner_depth.increment()?;
4202                }
4203                let val_ref = self.association_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
4204                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
4205                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4206                {
4207                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4208                }
4209                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4210                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4211                }
4212            }
4213
4214            next_offset += envelope_size;
4215
4216            // Decode the remaining unknown envelopes.
4217            while next_offset < end_offset {
4218                _next_ordinal_to_read += 1;
4219                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4220                next_offset += envelope_size;
4221            }
4222
4223            Ok(())
4224        }
4225    }
4226
4227    impl WlanFullmacImplAuthRespRequest {
4228        #[inline(always)]
4229        fn max_ordinal_present(&self) -> u64 {
4230            if let Some(_) = self.result_code {
4231                return 2;
4232            }
4233            if let Some(_) = self.peer_sta_address {
4234                return 1;
4235            }
4236            0
4237        }
4238    }
4239
4240    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplAuthRespRequest {
4241        type Borrowed<'a> = &'a Self;
4242        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4243            value
4244        }
4245    }
4246
4247    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplAuthRespRequest {
4248        type Owned = Self;
4249
4250        #[inline(always)]
4251        fn inline_align(_context: fidl::encoding::Context) -> usize {
4252            8
4253        }
4254
4255        #[inline(always)]
4256        fn inline_size(_context: fidl::encoding::Context) -> usize {
4257            16
4258        }
4259    }
4260
4261    unsafe impl<D: fidl::encoding::ResourceDialect>
4262        fidl::encoding::Encode<WlanFullmacImplAuthRespRequest, D>
4263        for &WlanFullmacImplAuthRespRequest
4264    {
4265        unsafe fn encode(
4266            self,
4267            encoder: &mut fidl::encoding::Encoder<'_, D>,
4268            offset: usize,
4269            mut depth: fidl::encoding::Depth,
4270        ) -> fidl::Result<()> {
4271            encoder.debug_check_bounds::<WlanFullmacImplAuthRespRequest>(offset);
4272            // Vector header
4273            let max_ordinal: u64 = self.max_ordinal_present();
4274            encoder.write_num(max_ordinal, offset);
4275            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4276            // Calling encoder.out_of_line_offset(0) is not allowed.
4277            if max_ordinal == 0 {
4278                return Ok(());
4279            }
4280            depth.increment()?;
4281            let envelope_size = 8;
4282            let bytes_len = max_ordinal as usize * envelope_size;
4283            #[allow(unused_variables)]
4284            let offset = encoder.out_of_line_offset(bytes_len);
4285            let mut _prev_end_offset: usize = 0;
4286            if 1 > max_ordinal {
4287                return Ok(());
4288            }
4289
4290            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4291            // are envelope_size bytes.
4292            let cur_offset: usize = (1 - 1) * envelope_size;
4293
4294            // Zero reserved fields.
4295            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4296
4297            // Safety:
4298            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4299            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4300            //   envelope_size bytes, there is always sufficient room.
4301            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
4302                self.peer_sta_address
4303                    .as_ref()
4304                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
4305                encoder,
4306                offset + cur_offset,
4307                depth,
4308            )?;
4309
4310            _prev_end_offset = cur_offset + envelope_size;
4311            if 2 > max_ordinal {
4312                return Ok(());
4313            }
4314
4315            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4316            // are envelope_size bytes.
4317            let cur_offset: usize = (2 - 1) * envelope_size;
4318
4319            // Zero reserved fields.
4320            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4321
4322            // Safety:
4323            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4324            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4325            //   envelope_size bytes, there is always sufficient room.
4326            fidl::encoding::encode_in_envelope_optional::<WlanAuthResult, D>(
4327                self.result_code
4328                    .as_ref()
4329                    .map(<WlanAuthResult as fidl::encoding::ValueTypeMarker>::borrow),
4330                encoder,
4331                offset + cur_offset,
4332                depth,
4333            )?;
4334
4335            _prev_end_offset = cur_offset + envelope_size;
4336
4337            Ok(())
4338        }
4339    }
4340
4341    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4342        for WlanFullmacImplAuthRespRequest
4343    {
4344        #[inline(always)]
4345        fn new_empty() -> Self {
4346            Self::default()
4347        }
4348
4349        unsafe fn decode(
4350            &mut self,
4351            decoder: &mut fidl::encoding::Decoder<'_, D>,
4352            offset: usize,
4353            mut depth: fidl::encoding::Depth,
4354        ) -> fidl::Result<()> {
4355            decoder.debug_check_bounds::<Self>(offset);
4356            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4357                None => return Err(fidl::Error::NotNullable),
4358                Some(len) => len,
4359            };
4360            // Calling decoder.out_of_line_offset(0) is not allowed.
4361            if len == 0 {
4362                return Ok(());
4363            };
4364            depth.increment()?;
4365            let envelope_size = 8;
4366            let bytes_len = len * envelope_size;
4367            let offset = decoder.out_of_line_offset(bytes_len)?;
4368            // Decode the envelope for each type.
4369            let mut _next_ordinal_to_read = 0;
4370            let mut next_offset = offset;
4371            let end_offset = offset + bytes_len;
4372            _next_ordinal_to_read += 1;
4373            if next_offset >= end_offset {
4374                return Ok(());
4375            }
4376
4377            // Decode unknown envelopes for gaps in ordinals.
4378            while _next_ordinal_to_read < 1 {
4379                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4380                _next_ordinal_to_read += 1;
4381                next_offset += envelope_size;
4382            }
4383
4384            let next_out_of_line = decoder.next_out_of_line();
4385            let handles_before = decoder.remaining_handles();
4386            if let Some((inlined, num_bytes, num_handles)) =
4387                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4388            {
4389                let member_inline_size =
4390                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
4391                        decoder.context,
4392                    );
4393                if inlined != (member_inline_size <= 4) {
4394                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4395                }
4396                let inner_offset;
4397                let mut inner_depth = depth.clone();
4398                if inlined {
4399                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4400                    inner_offset = next_offset;
4401                } else {
4402                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4403                    inner_depth.increment()?;
4404                }
4405                let val_ref = self
4406                    .peer_sta_address
4407                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
4408                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
4409                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4410                {
4411                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4412                }
4413                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4414                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4415                }
4416            }
4417
4418            next_offset += envelope_size;
4419            _next_ordinal_to_read += 1;
4420            if next_offset >= end_offset {
4421                return Ok(());
4422            }
4423
4424            // Decode unknown envelopes for gaps in ordinals.
4425            while _next_ordinal_to_read < 2 {
4426                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4427                _next_ordinal_to_read += 1;
4428                next_offset += envelope_size;
4429            }
4430
4431            let next_out_of_line = decoder.next_out_of_line();
4432            let handles_before = decoder.remaining_handles();
4433            if let Some((inlined, num_bytes, num_handles)) =
4434                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4435            {
4436                let member_inline_size =
4437                    <WlanAuthResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4438                if inlined != (member_inline_size <= 4) {
4439                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4440                }
4441                let inner_offset;
4442                let mut inner_depth = depth.clone();
4443                if inlined {
4444                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4445                    inner_offset = next_offset;
4446                } else {
4447                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4448                    inner_depth.increment()?;
4449                }
4450                let val_ref =
4451                    self.result_code.get_or_insert_with(|| fidl::new_empty!(WlanAuthResult, D));
4452                fidl::decode!(WlanAuthResult, D, val_ref, decoder, inner_offset, inner_depth)?;
4453                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4454                {
4455                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4456                }
4457                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4458                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4459                }
4460            }
4461
4462            next_offset += envelope_size;
4463
4464            // Decode the remaining unknown envelopes.
4465            while next_offset < end_offset {
4466                _next_ordinal_to_read += 1;
4467                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4468                next_offset += envelope_size;
4469            }
4470
4471            Ok(())
4472        }
4473    }
4474
4475    impl WlanFullmacImplConnectRequest {
4476        #[inline(always)]
4477        fn max_ordinal_present(&self) -> u64 {
4478            if let Some(_) = self.owe_public_key {
4479                return 8;
4480            }
4481            if let Some(_) = self.wep_key_desc {
4482                return 7;
4483            }
4484            if let Some(_) = self.security_ie {
4485                return 6;
4486            }
4487            if let Some(_) = self.wep_key {
4488                return 5;
4489            }
4490            if let Some(_) = self.sae_password {
4491                return 4;
4492            }
4493            if let Some(_) = self.auth_type {
4494                return 3;
4495            }
4496            if let Some(_) = self.connect_failure_timeout {
4497                return 2;
4498            }
4499            if let Some(_) = self.selected_bss {
4500                return 1;
4501            }
4502            0
4503        }
4504    }
4505
4506    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplConnectRequest {
4507        type Borrowed<'a> = &'a Self;
4508        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4509            value
4510        }
4511    }
4512
4513    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplConnectRequest {
4514        type Owned = Self;
4515
4516        #[inline(always)]
4517        fn inline_align(_context: fidl::encoding::Context) -> usize {
4518            8
4519        }
4520
4521        #[inline(always)]
4522        fn inline_size(_context: fidl::encoding::Context) -> usize {
4523            16
4524        }
4525    }
4526
4527    unsafe impl<D: fidl::encoding::ResourceDialect>
4528        fidl::encoding::Encode<WlanFullmacImplConnectRequest, D>
4529        for &WlanFullmacImplConnectRequest
4530    {
4531        unsafe fn encode(
4532            self,
4533            encoder: &mut fidl::encoding::Encoder<'_, D>,
4534            offset: usize,
4535            mut depth: fidl::encoding::Depth,
4536        ) -> fidl::Result<()> {
4537            encoder.debug_check_bounds::<WlanFullmacImplConnectRequest>(offset);
4538            // Vector header
4539            let max_ordinal: u64 = self.max_ordinal_present();
4540            encoder.write_num(max_ordinal, offset);
4541            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4542            // Calling encoder.out_of_line_offset(0) is not allowed.
4543            if max_ordinal == 0 {
4544                return Ok(());
4545            }
4546            depth.increment()?;
4547            let envelope_size = 8;
4548            let bytes_len = max_ordinal as usize * envelope_size;
4549            #[allow(unused_variables)]
4550            let offset = encoder.out_of_line_offset(bytes_len);
4551            let mut _prev_end_offset: usize = 0;
4552            if 1 > max_ordinal {
4553                return Ok(());
4554            }
4555
4556            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4557            // are envelope_size bytes.
4558            let cur_offset: usize = (1 - 1) * envelope_size;
4559
4560            // Zero reserved fields.
4561            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4562
4563            // Safety:
4564            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4565            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4566            //   envelope_size bytes, there is always sufficient room.
4567            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common__common::BssDescription, D>(
4568            self.selected_bss.as_ref().map(<fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow),
4569            encoder, offset + cur_offset, depth
4570        )?;
4571
4572            _prev_end_offset = cur_offset + envelope_size;
4573            if 2 > max_ordinal {
4574                return Ok(());
4575            }
4576
4577            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4578            // are envelope_size bytes.
4579            let cur_offset: usize = (2 - 1) * envelope_size;
4580
4581            // Zero reserved fields.
4582            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4583
4584            // Safety:
4585            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4586            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4587            //   envelope_size bytes, there is always sufficient room.
4588            fidl::encoding::encode_in_envelope_optional::<u32, D>(
4589                self.connect_failure_timeout
4590                    .as_ref()
4591                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
4592                encoder,
4593                offset + cur_offset,
4594                depth,
4595            )?;
4596
4597            _prev_end_offset = cur_offset + envelope_size;
4598            if 3 > max_ordinal {
4599                return Ok(());
4600            }
4601
4602            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4603            // are envelope_size bytes.
4604            let cur_offset: usize = (3 - 1) * envelope_size;
4605
4606            // Zero reserved fields.
4607            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4608
4609            // Safety:
4610            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4611            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4612            //   envelope_size bytes, there is always sufficient room.
4613            fidl::encoding::encode_in_envelope_optional::<WlanAuthType, D>(
4614                self.auth_type
4615                    .as_ref()
4616                    .map(<WlanAuthType as fidl::encoding::ValueTypeMarker>::borrow),
4617                encoder,
4618                offset + cur_offset,
4619                depth,
4620            )?;
4621
4622            _prev_end_offset = cur_offset + envelope_size;
4623            if 4 > max_ordinal {
4624                return Ok(());
4625            }
4626
4627            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4628            // are envelope_size bytes.
4629            let cur_offset: usize = (4 - 1) * envelope_size;
4630
4631            // Zero reserved fields.
4632            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4633
4634            // Safety:
4635            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4636            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4637            //   envelope_size bytes, there is always sufficient room.
4638            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
4639            self.sae_password.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
4640            encoder, offset + cur_offset, depth
4641        )?;
4642
4643            _prev_end_offset = cur_offset + envelope_size;
4644            if 5 > max_ordinal {
4645                return Ok(());
4646            }
4647
4648            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4649            // are envelope_size bytes.
4650            let cur_offset: usize = (5 - 1) * envelope_size;
4651
4652            // Zero reserved fields.
4653            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4654
4655            // Safety:
4656            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4657            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4658            //   envelope_size bytes, there is always sufficient room.
4659            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common__common::WlanKeyConfig, D>(
4660            self.wep_key.as_ref().map(<fidl_fuchsia_wlan_common__common::WlanKeyConfig as fidl::encoding::ValueTypeMarker>::borrow),
4661            encoder, offset + cur_offset, depth
4662        )?;
4663
4664            _prev_end_offset = cur_offset + envelope_size;
4665            if 6 > max_ordinal {
4666                return Ok(());
4667            }
4668
4669            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4670            // are envelope_size bytes.
4671            let cur_offset: usize = (6 - 1) * envelope_size;
4672
4673            // Zero reserved fields.
4674            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4675
4676            // Safety:
4677            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4678            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4679            //   envelope_size bytes, there is always sufficient room.
4680            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 257>, D>(
4681                self.security_ie.as_ref().map(
4682                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::ValueTypeMarker>::borrow,
4683                ),
4684                encoder,
4685                offset + cur_offset,
4686                depth,
4687            )?;
4688
4689            _prev_end_offset = cur_offset + envelope_size;
4690            if 7 > max_ordinal {
4691                return Ok(());
4692            }
4693
4694            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4695            // are envelope_size bytes.
4696            let cur_offset: usize = (7 - 1) * envelope_size;
4697
4698            // Zero reserved fields.
4699            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4700
4701            // Safety:
4702            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4703            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4704            //   envelope_size bytes, there is always sufficient room.
4705            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor, D>(
4706            self.wep_key_desc.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor as fidl::encoding::ValueTypeMarker>::borrow),
4707            encoder, offset + cur_offset, depth
4708        )?;
4709
4710            _prev_end_offset = cur_offset + envelope_size;
4711            if 8 > max_ordinal {
4712                return Ok(());
4713            }
4714
4715            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4716            // are envelope_size bytes.
4717            let cur_offset: usize = (8 - 1) * envelope_size;
4718
4719            // Zero reserved fields.
4720            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4721
4722            // Safety:
4723            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4724            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4725            //   envelope_size bytes, there is always sufficient room.
4726            fidl::encoding::encode_in_envelope_optional::<WlanFullmacOwePublicKey, D>(
4727                self.owe_public_key
4728                    .as_ref()
4729                    .map(<WlanFullmacOwePublicKey as fidl::encoding::ValueTypeMarker>::borrow),
4730                encoder,
4731                offset + cur_offset,
4732                depth,
4733            )?;
4734
4735            _prev_end_offset = cur_offset + envelope_size;
4736
4737            Ok(())
4738        }
4739    }
4740
4741    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4742        for WlanFullmacImplConnectRequest
4743    {
4744        #[inline(always)]
4745        fn new_empty() -> Self {
4746            Self::default()
4747        }
4748
4749        unsafe fn decode(
4750            &mut self,
4751            decoder: &mut fidl::encoding::Decoder<'_, D>,
4752            offset: usize,
4753            mut depth: fidl::encoding::Depth,
4754        ) -> fidl::Result<()> {
4755            decoder.debug_check_bounds::<Self>(offset);
4756            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4757                None => return Err(fidl::Error::NotNullable),
4758                Some(len) => len,
4759            };
4760            // Calling decoder.out_of_line_offset(0) is not allowed.
4761            if len == 0 {
4762                return Ok(());
4763            };
4764            depth.increment()?;
4765            let envelope_size = 8;
4766            let bytes_len = len * envelope_size;
4767            let offset = decoder.out_of_line_offset(bytes_len)?;
4768            // Decode the envelope for each type.
4769            let mut _next_ordinal_to_read = 0;
4770            let mut next_offset = offset;
4771            let end_offset = offset + bytes_len;
4772            _next_ordinal_to_read += 1;
4773            if next_offset >= end_offset {
4774                return Ok(());
4775            }
4776
4777            // Decode unknown envelopes for gaps in ordinals.
4778            while _next_ordinal_to_read < 1 {
4779                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4780                _next_ordinal_to_read += 1;
4781                next_offset += envelope_size;
4782            }
4783
4784            let next_out_of_line = decoder.next_out_of_line();
4785            let handles_before = decoder.remaining_handles();
4786            if let Some((inlined, num_bytes, num_handles)) =
4787                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4788            {
4789                let member_inline_size = <fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4790                if inlined != (member_inline_size <= 4) {
4791                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4792                }
4793                let inner_offset;
4794                let mut inner_depth = depth.clone();
4795                if inlined {
4796                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4797                    inner_offset = next_offset;
4798                } else {
4799                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4800                    inner_depth.increment()?;
4801                }
4802                let val_ref = self.selected_bss.get_or_insert_with(|| {
4803                    fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssDescription, D)
4804                });
4805                fidl::decode!(
4806                    fidl_fuchsia_wlan_common__common::BssDescription,
4807                    D,
4808                    val_ref,
4809                    decoder,
4810                    inner_offset,
4811                    inner_depth
4812                )?;
4813                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4814                {
4815                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4816                }
4817                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4818                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4819                }
4820            }
4821
4822            next_offset += envelope_size;
4823            _next_ordinal_to_read += 1;
4824            if next_offset >= end_offset {
4825                return Ok(());
4826            }
4827
4828            // Decode unknown envelopes for gaps in ordinals.
4829            while _next_ordinal_to_read < 2 {
4830                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4831                _next_ordinal_to_read += 1;
4832                next_offset += envelope_size;
4833            }
4834
4835            let next_out_of_line = decoder.next_out_of_line();
4836            let handles_before = decoder.remaining_handles();
4837            if let Some((inlined, num_bytes, num_handles)) =
4838                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4839            {
4840                let member_inline_size =
4841                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4842                if inlined != (member_inline_size <= 4) {
4843                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4844                }
4845                let inner_offset;
4846                let mut inner_depth = depth.clone();
4847                if inlined {
4848                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4849                    inner_offset = next_offset;
4850                } else {
4851                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4852                    inner_depth.increment()?;
4853                }
4854                let val_ref =
4855                    self.connect_failure_timeout.get_or_insert_with(|| fidl::new_empty!(u32, D));
4856                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4857                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4858                {
4859                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4860                }
4861                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4862                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4863                }
4864            }
4865
4866            next_offset += envelope_size;
4867            _next_ordinal_to_read += 1;
4868            if next_offset >= end_offset {
4869                return Ok(());
4870            }
4871
4872            // Decode unknown envelopes for gaps in ordinals.
4873            while _next_ordinal_to_read < 3 {
4874                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4875                _next_ordinal_to_read += 1;
4876                next_offset += envelope_size;
4877            }
4878
4879            let next_out_of_line = decoder.next_out_of_line();
4880            let handles_before = decoder.remaining_handles();
4881            if let Some((inlined, num_bytes, num_handles)) =
4882                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4883            {
4884                let member_inline_size =
4885                    <WlanAuthType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4886                if inlined != (member_inline_size <= 4) {
4887                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4888                }
4889                let inner_offset;
4890                let mut inner_depth = depth.clone();
4891                if inlined {
4892                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4893                    inner_offset = next_offset;
4894                } else {
4895                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4896                    inner_depth.increment()?;
4897                }
4898                let val_ref =
4899                    self.auth_type.get_or_insert_with(|| fidl::new_empty!(WlanAuthType, D));
4900                fidl::decode!(WlanAuthType, D, val_ref, decoder, inner_offset, inner_depth)?;
4901                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4902                {
4903                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4904                }
4905                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4906                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4907                }
4908            }
4909
4910            next_offset += envelope_size;
4911            _next_ordinal_to_read += 1;
4912            if next_offset >= end_offset {
4913                return Ok(());
4914            }
4915
4916            // Decode unknown envelopes for gaps in ordinals.
4917            while _next_ordinal_to_read < 4 {
4918                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4919                _next_ordinal_to_read += 1;
4920                next_offset += envelope_size;
4921            }
4922
4923            let next_out_of_line = decoder.next_out_of_line();
4924            let handles_before = decoder.remaining_handles();
4925            if let Some((inlined, num_bytes, num_handles)) =
4926                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4927            {
4928                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4929                if inlined != (member_inline_size <= 4) {
4930                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4931                }
4932                let inner_offset;
4933                let mut inner_depth = depth.clone();
4934                if inlined {
4935                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4936                    inner_offset = next_offset;
4937                } else {
4938                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4939                    inner_depth.increment()?;
4940                }
4941                let val_ref = self.sae_password.get_or_insert_with(|| {
4942                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
4943                });
4944                fidl::decode!(
4945                    fidl::encoding::UnboundedVector<u8>,
4946                    D,
4947                    val_ref,
4948                    decoder,
4949                    inner_offset,
4950                    inner_depth
4951                )?;
4952                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4953                {
4954                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4955                }
4956                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4957                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4958                }
4959            }
4960
4961            next_offset += envelope_size;
4962            _next_ordinal_to_read += 1;
4963            if next_offset >= end_offset {
4964                return Ok(());
4965            }
4966
4967            // Decode unknown envelopes for gaps in ordinals.
4968            while _next_ordinal_to_read < 5 {
4969                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4970                _next_ordinal_to_read += 1;
4971                next_offset += envelope_size;
4972            }
4973
4974            let next_out_of_line = decoder.next_out_of_line();
4975            let handles_before = decoder.remaining_handles();
4976            if let Some((inlined, num_bytes, num_handles)) =
4977                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4978            {
4979                let member_inline_size = <fidl_fuchsia_wlan_common__common::WlanKeyConfig as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4980                if inlined != (member_inline_size <= 4) {
4981                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4982                }
4983                let inner_offset;
4984                let mut inner_depth = depth.clone();
4985                if inlined {
4986                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4987                    inner_offset = next_offset;
4988                } else {
4989                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4990                    inner_depth.increment()?;
4991                }
4992                let val_ref = self.wep_key.get_or_insert_with(|| {
4993                    fidl::new_empty!(fidl_fuchsia_wlan_common__common::WlanKeyConfig, D)
4994                });
4995                fidl::decode!(
4996                    fidl_fuchsia_wlan_common__common::WlanKeyConfig,
4997                    D,
4998                    val_ref,
4999                    decoder,
5000                    inner_offset,
5001                    inner_depth
5002                )?;
5003                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5004                {
5005                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5006                }
5007                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5008                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5009                }
5010            }
5011
5012            next_offset += envelope_size;
5013            _next_ordinal_to_read += 1;
5014            if next_offset >= end_offset {
5015                return Ok(());
5016            }
5017
5018            // Decode unknown envelopes for gaps in ordinals.
5019            while _next_ordinal_to_read < 6 {
5020                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5021                _next_ordinal_to_read += 1;
5022                next_offset += envelope_size;
5023            }
5024
5025            let next_out_of_line = decoder.next_out_of_line();
5026            let handles_before = decoder.remaining_handles();
5027            if let Some((inlined, num_bytes, num_handles)) =
5028                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5029            {
5030                let member_inline_size =
5031                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::TypeMarker>::inline_size(
5032                        decoder.context,
5033                    );
5034                if inlined != (member_inline_size <= 4) {
5035                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5036                }
5037                let inner_offset;
5038                let mut inner_depth = depth.clone();
5039                if inlined {
5040                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5041                    inner_offset = next_offset;
5042                } else {
5043                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5044                    inner_depth.increment()?;
5045                }
5046                let val_ref = self
5047                    .security_ie
5048                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 257>, D));
5049                fidl::decode!(fidl::encoding::Vector<u8, 257>, D, val_ref, decoder, inner_offset, inner_depth)?;
5050                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5051                {
5052                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5053                }
5054                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5055                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5056                }
5057            }
5058
5059            next_offset += envelope_size;
5060            _next_ordinal_to_read += 1;
5061            if next_offset >= end_offset {
5062                return Ok(());
5063            }
5064
5065            // Decode unknown envelopes for gaps in ordinals.
5066            while _next_ordinal_to_read < 7 {
5067                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5068                _next_ordinal_to_read += 1;
5069                next_offset += envelope_size;
5070            }
5071
5072            let next_out_of_line = decoder.next_out_of_line();
5073            let handles_before = decoder.remaining_handles();
5074            if let Some((inlined, num_bytes, num_handles)) =
5075                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5076            {
5077                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5078                if inlined != (member_inline_size <= 4) {
5079                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5080                }
5081                let inner_offset;
5082                let mut inner_depth = depth.clone();
5083                if inlined {
5084                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5085                    inner_offset = next_offset;
5086                } else {
5087                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5088                    inner_depth.increment()?;
5089                }
5090                let val_ref = self.wep_key_desc.get_or_insert_with(|| {
5091                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor, D)
5092                });
5093                fidl::decode!(
5094                    fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor,
5095                    D,
5096                    val_ref,
5097                    decoder,
5098                    inner_offset,
5099                    inner_depth
5100                )?;
5101                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5102                {
5103                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5104                }
5105                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5106                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5107                }
5108            }
5109
5110            next_offset += envelope_size;
5111            _next_ordinal_to_read += 1;
5112            if next_offset >= end_offset {
5113                return Ok(());
5114            }
5115
5116            // Decode unknown envelopes for gaps in ordinals.
5117            while _next_ordinal_to_read < 8 {
5118                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5119                _next_ordinal_to_read += 1;
5120                next_offset += envelope_size;
5121            }
5122
5123            let next_out_of_line = decoder.next_out_of_line();
5124            let handles_before = decoder.remaining_handles();
5125            if let Some((inlined, num_bytes, num_handles)) =
5126                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5127            {
5128                let member_inline_size =
5129                    <WlanFullmacOwePublicKey as fidl::encoding::TypeMarker>::inline_size(
5130                        decoder.context,
5131                    );
5132                if inlined != (member_inline_size <= 4) {
5133                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5134                }
5135                let inner_offset;
5136                let mut inner_depth = depth.clone();
5137                if inlined {
5138                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5139                    inner_offset = next_offset;
5140                } else {
5141                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5142                    inner_depth.increment()?;
5143                }
5144                let val_ref = self
5145                    .owe_public_key
5146                    .get_or_insert_with(|| fidl::new_empty!(WlanFullmacOwePublicKey, D));
5147                fidl::decode!(
5148                    WlanFullmacOwePublicKey,
5149                    D,
5150                    val_ref,
5151                    decoder,
5152                    inner_offset,
5153                    inner_depth
5154                )?;
5155                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5156                {
5157                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5158                }
5159                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5160                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5161                }
5162            }
5163
5164            next_offset += envelope_size;
5165
5166            // Decode the remaining unknown envelopes.
5167            while next_offset < end_offset {
5168                _next_ordinal_to_read += 1;
5169                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5170                next_offset += envelope_size;
5171            }
5172
5173            Ok(())
5174        }
5175    }
5176
5177    impl WlanFullmacImplDeauthRequest {
5178        #[inline(always)]
5179        fn max_ordinal_present(&self) -> u64 {
5180            if let Some(_) = self.reason_code {
5181                return 2;
5182            }
5183            if let Some(_) = self.peer_sta_address {
5184                return 1;
5185            }
5186            0
5187        }
5188    }
5189
5190    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplDeauthRequest {
5191        type Borrowed<'a> = &'a Self;
5192        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5193            value
5194        }
5195    }
5196
5197    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplDeauthRequest {
5198        type Owned = Self;
5199
5200        #[inline(always)]
5201        fn inline_align(_context: fidl::encoding::Context) -> usize {
5202            8
5203        }
5204
5205        #[inline(always)]
5206        fn inline_size(_context: fidl::encoding::Context) -> usize {
5207            16
5208        }
5209    }
5210
5211    unsafe impl<D: fidl::encoding::ResourceDialect>
5212        fidl::encoding::Encode<WlanFullmacImplDeauthRequest, D> for &WlanFullmacImplDeauthRequest
5213    {
5214        unsafe fn encode(
5215            self,
5216            encoder: &mut fidl::encoding::Encoder<'_, D>,
5217            offset: usize,
5218            mut depth: fidl::encoding::Depth,
5219        ) -> fidl::Result<()> {
5220            encoder.debug_check_bounds::<WlanFullmacImplDeauthRequest>(offset);
5221            // Vector header
5222            let max_ordinal: u64 = self.max_ordinal_present();
5223            encoder.write_num(max_ordinal, offset);
5224            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5225            // Calling encoder.out_of_line_offset(0) is not allowed.
5226            if max_ordinal == 0 {
5227                return Ok(());
5228            }
5229            depth.increment()?;
5230            let envelope_size = 8;
5231            let bytes_len = max_ordinal as usize * envelope_size;
5232            #[allow(unused_variables)]
5233            let offset = encoder.out_of_line_offset(bytes_len);
5234            let mut _prev_end_offset: usize = 0;
5235            if 1 > max_ordinal {
5236                return Ok(());
5237            }
5238
5239            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5240            // are envelope_size bytes.
5241            let cur_offset: usize = (1 - 1) * envelope_size;
5242
5243            // Zero reserved fields.
5244            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5245
5246            // Safety:
5247            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5248            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5249            //   envelope_size bytes, there is always sufficient room.
5250            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5251                self.peer_sta_address
5252                    .as_ref()
5253                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5254                encoder,
5255                offset + cur_offset,
5256                depth,
5257            )?;
5258
5259            _prev_end_offset = cur_offset + envelope_size;
5260            if 2 > max_ordinal {
5261                return Ok(());
5262            }
5263
5264            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5265            // are envelope_size bytes.
5266            let cur_offset: usize = (2 - 1) * envelope_size;
5267
5268            // Zero reserved fields.
5269            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5270
5271            // Safety:
5272            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5273            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5274            //   envelope_size bytes, there is always sufficient room.
5275            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D>(
5276            self.reason_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow),
5277            encoder, offset + cur_offset, depth
5278        )?;
5279
5280            _prev_end_offset = cur_offset + envelope_size;
5281
5282            Ok(())
5283        }
5284    }
5285
5286    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5287        for WlanFullmacImplDeauthRequest
5288    {
5289        #[inline(always)]
5290        fn new_empty() -> Self {
5291            Self::default()
5292        }
5293
5294        unsafe fn decode(
5295            &mut self,
5296            decoder: &mut fidl::encoding::Decoder<'_, D>,
5297            offset: usize,
5298            mut depth: fidl::encoding::Depth,
5299        ) -> fidl::Result<()> {
5300            decoder.debug_check_bounds::<Self>(offset);
5301            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5302                None => return Err(fidl::Error::NotNullable),
5303                Some(len) => len,
5304            };
5305            // Calling decoder.out_of_line_offset(0) is not allowed.
5306            if len == 0 {
5307                return Ok(());
5308            };
5309            depth.increment()?;
5310            let envelope_size = 8;
5311            let bytes_len = len * envelope_size;
5312            let offset = decoder.out_of_line_offset(bytes_len)?;
5313            // Decode the envelope for each type.
5314            let mut _next_ordinal_to_read = 0;
5315            let mut next_offset = offset;
5316            let end_offset = offset + bytes_len;
5317            _next_ordinal_to_read += 1;
5318            if next_offset >= end_offset {
5319                return Ok(());
5320            }
5321
5322            // Decode unknown envelopes for gaps in ordinals.
5323            while _next_ordinal_to_read < 1 {
5324                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5325                _next_ordinal_to_read += 1;
5326                next_offset += envelope_size;
5327            }
5328
5329            let next_out_of_line = decoder.next_out_of_line();
5330            let handles_before = decoder.remaining_handles();
5331            if let Some((inlined, num_bytes, num_handles)) =
5332                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5333            {
5334                let member_inline_size =
5335                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
5336                        decoder.context,
5337                    );
5338                if inlined != (member_inline_size <= 4) {
5339                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5340                }
5341                let inner_offset;
5342                let mut inner_depth = depth.clone();
5343                if inlined {
5344                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5345                    inner_offset = next_offset;
5346                } else {
5347                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5348                    inner_depth.increment()?;
5349                }
5350                let val_ref = self
5351                    .peer_sta_address
5352                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
5353                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
5354                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5355                {
5356                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5357                }
5358                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5359                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5360                }
5361            }
5362
5363            next_offset += envelope_size;
5364            _next_ordinal_to_read += 1;
5365            if next_offset >= end_offset {
5366                return Ok(());
5367            }
5368
5369            // Decode unknown envelopes for gaps in ordinals.
5370            while _next_ordinal_to_read < 2 {
5371                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5372                _next_ordinal_to_read += 1;
5373                next_offset += envelope_size;
5374            }
5375
5376            let next_out_of_line = decoder.next_out_of_line();
5377            let handles_before = decoder.remaining_handles();
5378            if let Some((inlined, num_bytes, num_handles)) =
5379                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5380            {
5381                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5382                if inlined != (member_inline_size <= 4) {
5383                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5384                }
5385                let inner_offset;
5386                let mut inner_depth = depth.clone();
5387                if inlined {
5388                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5389                    inner_offset = next_offset;
5390                } else {
5391                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5392                    inner_depth.increment()?;
5393                }
5394                let val_ref = self.reason_code.get_or_insert_with(|| {
5395                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D)
5396                });
5397                fidl::decode!(
5398                    fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
5399                    D,
5400                    val_ref,
5401                    decoder,
5402                    inner_offset,
5403                    inner_depth
5404                )?;
5405                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5406                {
5407                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5408                }
5409                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5410                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5411                }
5412            }
5413
5414            next_offset += envelope_size;
5415
5416            // Decode the remaining unknown envelopes.
5417            while next_offset < end_offset {
5418                _next_ordinal_to_read += 1;
5419                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5420                next_offset += envelope_size;
5421            }
5422
5423            Ok(())
5424        }
5425    }
5426
5427    impl WlanFullmacImplDisassocRequest {
5428        #[inline(always)]
5429        fn max_ordinal_present(&self) -> u64 {
5430            if let Some(_) = self.reason_code {
5431                return 2;
5432            }
5433            if let Some(_) = self.peer_sta_address {
5434                return 1;
5435            }
5436            0
5437        }
5438    }
5439
5440    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplDisassocRequest {
5441        type Borrowed<'a> = &'a Self;
5442        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5443            value
5444        }
5445    }
5446
5447    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplDisassocRequest {
5448        type Owned = Self;
5449
5450        #[inline(always)]
5451        fn inline_align(_context: fidl::encoding::Context) -> usize {
5452            8
5453        }
5454
5455        #[inline(always)]
5456        fn inline_size(_context: fidl::encoding::Context) -> usize {
5457            16
5458        }
5459    }
5460
5461    unsafe impl<D: fidl::encoding::ResourceDialect>
5462        fidl::encoding::Encode<WlanFullmacImplDisassocRequest, D>
5463        for &WlanFullmacImplDisassocRequest
5464    {
5465        unsafe fn encode(
5466            self,
5467            encoder: &mut fidl::encoding::Encoder<'_, D>,
5468            offset: usize,
5469            mut depth: fidl::encoding::Depth,
5470        ) -> fidl::Result<()> {
5471            encoder.debug_check_bounds::<WlanFullmacImplDisassocRequest>(offset);
5472            // Vector header
5473            let max_ordinal: u64 = self.max_ordinal_present();
5474            encoder.write_num(max_ordinal, offset);
5475            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5476            // Calling encoder.out_of_line_offset(0) is not allowed.
5477            if max_ordinal == 0 {
5478                return Ok(());
5479            }
5480            depth.increment()?;
5481            let envelope_size = 8;
5482            let bytes_len = max_ordinal as usize * envelope_size;
5483            #[allow(unused_variables)]
5484            let offset = encoder.out_of_line_offset(bytes_len);
5485            let mut _prev_end_offset: usize = 0;
5486            if 1 > max_ordinal {
5487                return Ok(());
5488            }
5489
5490            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5491            // are envelope_size bytes.
5492            let cur_offset: usize = (1 - 1) * envelope_size;
5493
5494            // Zero reserved fields.
5495            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5496
5497            // Safety:
5498            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5499            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5500            //   envelope_size bytes, there is always sufficient room.
5501            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5502                self.peer_sta_address
5503                    .as_ref()
5504                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5505                encoder,
5506                offset + cur_offset,
5507                depth,
5508            )?;
5509
5510            _prev_end_offset = cur_offset + envelope_size;
5511            if 2 > max_ordinal {
5512                return Ok(());
5513            }
5514
5515            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5516            // are envelope_size bytes.
5517            let cur_offset: usize = (2 - 1) * envelope_size;
5518
5519            // Zero reserved fields.
5520            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5521
5522            // Safety:
5523            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5524            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5525            //   envelope_size bytes, there is always sufficient room.
5526            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D>(
5527            self.reason_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow),
5528            encoder, offset + cur_offset, depth
5529        )?;
5530
5531            _prev_end_offset = cur_offset + envelope_size;
5532
5533            Ok(())
5534        }
5535    }
5536
5537    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5538        for WlanFullmacImplDisassocRequest
5539    {
5540        #[inline(always)]
5541        fn new_empty() -> Self {
5542            Self::default()
5543        }
5544
5545        unsafe fn decode(
5546            &mut self,
5547            decoder: &mut fidl::encoding::Decoder<'_, D>,
5548            offset: usize,
5549            mut depth: fidl::encoding::Depth,
5550        ) -> fidl::Result<()> {
5551            decoder.debug_check_bounds::<Self>(offset);
5552            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5553                None => return Err(fidl::Error::NotNullable),
5554                Some(len) => len,
5555            };
5556            // Calling decoder.out_of_line_offset(0) is not allowed.
5557            if len == 0 {
5558                return Ok(());
5559            };
5560            depth.increment()?;
5561            let envelope_size = 8;
5562            let bytes_len = len * envelope_size;
5563            let offset = decoder.out_of_line_offset(bytes_len)?;
5564            // Decode the envelope for each type.
5565            let mut _next_ordinal_to_read = 0;
5566            let mut next_offset = offset;
5567            let end_offset = offset + bytes_len;
5568            _next_ordinal_to_read += 1;
5569            if next_offset >= end_offset {
5570                return Ok(());
5571            }
5572
5573            // Decode unknown envelopes for gaps in ordinals.
5574            while _next_ordinal_to_read < 1 {
5575                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5576                _next_ordinal_to_read += 1;
5577                next_offset += envelope_size;
5578            }
5579
5580            let next_out_of_line = decoder.next_out_of_line();
5581            let handles_before = decoder.remaining_handles();
5582            if let Some((inlined, num_bytes, num_handles)) =
5583                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5584            {
5585                let member_inline_size =
5586                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
5587                        decoder.context,
5588                    );
5589                if inlined != (member_inline_size <= 4) {
5590                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5591                }
5592                let inner_offset;
5593                let mut inner_depth = depth.clone();
5594                if inlined {
5595                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5596                    inner_offset = next_offset;
5597                } else {
5598                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5599                    inner_depth.increment()?;
5600                }
5601                let val_ref = self
5602                    .peer_sta_address
5603                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
5604                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
5605                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5606                {
5607                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5608                }
5609                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5610                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5611                }
5612            }
5613
5614            next_offset += envelope_size;
5615            _next_ordinal_to_read += 1;
5616            if next_offset >= end_offset {
5617                return Ok(());
5618            }
5619
5620            // Decode unknown envelopes for gaps in ordinals.
5621            while _next_ordinal_to_read < 2 {
5622                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5623                _next_ordinal_to_read += 1;
5624                next_offset += envelope_size;
5625            }
5626
5627            let next_out_of_line = decoder.next_out_of_line();
5628            let handles_before = decoder.remaining_handles();
5629            if let Some((inlined, num_bytes, num_handles)) =
5630                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5631            {
5632                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5633                if inlined != (member_inline_size <= 4) {
5634                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5635                }
5636                let inner_offset;
5637                let mut inner_depth = depth.clone();
5638                if inlined {
5639                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5640                    inner_offset = next_offset;
5641                } else {
5642                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5643                    inner_depth.increment()?;
5644                }
5645                let val_ref = self.reason_code.get_or_insert_with(|| {
5646                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D)
5647                });
5648                fidl::decode!(
5649                    fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
5650                    D,
5651                    val_ref,
5652                    decoder,
5653                    inner_offset,
5654                    inner_depth
5655                )?;
5656                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5657                {
5658                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5659                }
5660                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5661                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5662                }
5663            }
5664
5665            next_offset += envelope_size;
5666
5667            // Decode the remaining unknown envelopes.
5668            while next_offset < end_offset {
5669                _next_ordinal_to_read += 1;
5670                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5671                next_offset += envelope_size;
5672            }
5673
5674            Ok(())
5675        }
5676    }
5677
5678    impl WlanFullmacImplEapolTxRequest {
5679        #[inline(always)]
5680        fn max_ordinal_present(&self) -> u64 {
5681            if let Some(_) = self.data {
5682                return 3;
5683            }
5684            if let Some(_) = self.dst_addr {
5685                return 2;
5686            }
5687            if let Some(_) = self.src_addr {
5688                return 1;
5689            }
5690            0
5691        }
5692    }
5693
5694    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplEapolTxRequest {
5695        type Borrowed<'a> = &'a Self;
5696        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5697            value
5698        }
5699    }
5700
5701    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplEapolTxRequest {
5702        type Owned = Self;
5703
5704        #[inline(always)]
5705        fn inline_align(_context: fidl::encoding::Context) -> usize {
5706            8
5707        }
5708
5709        #[inline(always)]
5710        fn inline_size(_context: fidl::encoding::Context) -> usize {
5711            16
5712        }
5713    }
5714
5715    unsafe impl<D: fidl::encoding::ResourceDialect>
5716        fidl::encoding::Encode<WlanFullmacImplEapolTxRequest, D>
5717        for &WlanFullmacImplEapolTxRequest
5718    {
5719        unsafe fn encode(
5720            self,
5721            encoder: &mut fidl::encoding::Encoder<'_, D>,
5722            offset: usize,
5723            mut depth: fidl::encoding::Depth,
5724        ) -> fidl::Result<()> {
5725            encoder.debug_check_bounds::<WlanFullmacImplEapolTxRequest>(offset);
5726            // Vector header
5727            let max_ordinal: u64 = self.max_ordinal_present();
5728            encoder.write_num(max_ordinal, offset);
5729            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5730            // Calling encoder.out_of_line_offset(0) is not allowed.
5731            if max_ordinal == 0 {
5732                return Ok(());
5733            }
5734            depth.increment()?;
5735            let envelope_size = 8;
5736            let bytes_len = max_ordinal as usize * envelope_size;
5737            #[allow(unused_variables)]
5738            let offset = encoder.out_of_line_offset(bytes_len);
5739            let mut _prev_end_offset: usize = 0;
5740            if 1 > max_ordinal {
5741                return Ok(());
5742            }
5743
5744            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5745            // are envelope_size bytes.
5746            let cur_offset: usize = (1 - 1) * envelope_size;
5747
5748            // Zero reserved fields.
5749            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5750
5751            // Safety:
5752            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5753            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5754            //   envelope_size bytes, there is always sufficient room.
5755            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5756                self.src_addr
5757                    .as_ref()
5758                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5759                encoder,
5760                offset + cur_offset,
5761                depth,
5762            )?;
5763
5764            _prev_end_offset = cur_offset + envelope_size;
5765            if 2 > max_ordinal {
5766                return Ok(());
5767            }
5768
5769            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5770            // are envelope_size bytes.
5771            let cur_offset: usize = (2 - 1) * envelope_size;
5772
5773            // Zero reserved fields.
5774            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5775
5776            // Safety:
5777            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5778            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5779            //   envelope_size bytes, there is always sufficient room.
5780            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5781                self.dst_addr
5782                    .as_ref()
5783                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5784                encoder,
5785                offset + cur_offset,
5786                depth,
5787            )?;
5788
5789            _prev_end_offset = cur_offset + envelope_size;
5790            if 3 > max_ordinal {
5791                return Ok(());
5792            }
5793
5794            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5795            // are envelope_size bytes.
5796            let cur_offset: usize = (3 - 1) * envelope_size;
5797
5798            // Zero reserved fields.
5799            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5800
5801            // Safety:
5802            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5803            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5804            //   envelope_size bytes, there is always sufficient room.
5805            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
5806            self.data.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
5807            encoder, offset + cur_offset, depth
5808        )?;
5809
5810            _prev_end_offset = cur_offset + envelope_size;
5811
5812            Ok(())
5813        }
5814    }
5815
5816    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5817        for WlanFullmacImplEapolTxRequest
5818    {
5819        #[inline(always)]
5820        fn new_empty() -> Self {
5821            Self::default()
5822        }
5823
5824        unsafe fn decode(
5825            &mut self,
5826            decoder: &mut fidl::encoding::Decoder<'_, D>,
5827            offset: usize,
5828            mut depth: fidl::encoding::Depth,
5829        ) -> fidl::Result<()> {
5830            decoder.debug_check_bounds::<Self>(offset);
5831            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5832                None => return Err(fidl::Error::NotNullable),
5833                Some(len) => len,
5834            };
5835            // Calling decoder.out_of_line_offset(0) is not allowed.
5836            if len == 0 {
5837                return Ok(());
5838            };
5839            depth.increment()?;
5840            let envelope_size = 8;
5841            let bytes_len = len * envelope_size;
5842            let offset = decoder.out_of_line_offset(bytes_len)?;
5843            // Decode the envelope for each type.
5844            let mut _next_ordinal_to_read = 0;
5845            let mut next_offset = offset;
5846            let end_offset = offset + bytes_len;
5847            _next_ordinal_to_read += 1;
5848            if next_offset >= end_offset {
5849                return Ok(());
5850            }
5851
5852            // Decode unknown envelopes for gaps in ordinals.
5853            while _next_ordinal_to_read < 1 {
5854                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5855                _next_ordinal_to_read += 1;
5856                next_offset += envelope_size;
5857            }
5858
5859            let next_out_of_line = decoder.next_out_of_line();
5860            let handles_before = decoder.remaining_handles();
5861            if let Some((inlined, num_bytes, num_handles)) =
5862                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5863            {
5864                let member_inline_size =
5865                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
5866                        decoder.context,
5867                    );
5868                if inlined != (member_inline_size <= 4) {
5869                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5870                }
5871                let inner_offset;
5872                let mut inner_depth = depth.clone();
5873                if inlined {
5874                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5875                    inner_offset = next_offset;
5876                } else {
5877                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5878                    inner_depth.increment()?;
5879                }
5880                let val_ref = self
5881                    .src_addr
5882                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
5883                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
5884                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5885                {
5886                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5887                }
5888                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5889                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5890                }
5891            }
5892
5893            next_offset += envelope_size;
5894            _next_ordinal_to_read += 1;
5895            if next_offset >= end_offset {
5896                return Ok(());
5897            }
5898
5899            // Decode unknown envelopes for gaps in ordinals.
5900            while _next_ordinal_to_read < 2 {
5901                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5902                _next_ordinal_to_read += 1;
5903                next_offset += envelope_size;
5904            }
5905
5906            let next_out_of_line = decoder.next_out_of_line();
5907            let handles_before = decoder.remaining_handles();
5908            if let Some((inlined, num_bytes, num_handles)) =
5909                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5910            {
5911                let member_inline_size =
5912                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
5913                        decoder.context,
5914                    );
5915                if inlined != (member_inline_size <= 4) {
5916                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5917                }
5918                let inner_offset;
5919                let mut inner_depth = depth.clone();
5920                if inlined {
5921                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5922                    inner_offset = next_offset;
5923                } else {
5924                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5925                    inner_depth.increment()?;
5926                }
5927                let val_ref = self
5928                    .dst_addr
5929                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
5930                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
5931                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5932                {
5933                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5934                }
5935                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5936                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5937                }
5938            }
5939
5940            next_offset += envelope_size;
5941            _next_ordinal_to_read += 1;
5942            if next_offset >= end_offset {
5943                return Ok(());
5944            }
5945
5946            // Decode unknown envelopes for gaps in ordinals.
5947            while _next_ordinal_to_read < 3 {
5948                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5949                _next_ordinal_to_read += 1;
5950                next_offset += envelope_size;
5951            }
5952
5953            let next_out_of_line = decoder.next_out_of_line();
5954            let handles_before = decoder.remaining_handles();
5955            if let Some((inlined, num_bytes, num_handles)) =
5956                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5957            {
5958                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5959                if inlined != (member_inline_size <= 4) {
5960                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5961                }
5962                let inner_offset;
5963                let mut inner_depth = depth.clone();
5964                if inlined {
5965                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5966                    inner_offset = next_offset;
5967                } else {
5968                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5969                    inner_depth.increment()?;
5970                }
5971                let val_ref = self.data.get_or_insert_with(|| {
5972                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
5973                });
5974                fidl::decode!(
5975                    fidl::encoding::UnboundedVector<u8>,
5976                    D,
5977                    val_ref,
5978                    decoder,
5979                    inner_offset,
5980                    inner_depth
5981                )?;
5982                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5983                {
5984                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5985                }
5986                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5987                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5988                }
5989            }
5990
5991            next_offset += envelope_size;
5992
5993            // Decode the remaining unknown envelopes.
5994            while next_offset < end_offset {
5995                _next_ordinal_to_read += 1;
5996                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5997                next_offset += envelope_size;
5998            }
5999
6000            Ok(())
6001        }
6002    }
6003
6004    impl WlanFullmacImplIfcAssocIndRequest {
6005        #[inline(always)]
6006        fn max_ordinal_present(&self) -> u64 {
6007            if let Some(_) = self.vendor_ie {
6008                return 5;
6009            }
6010            if let Some(_) = self.rsne {
6011                return 4;
6012            }
6013            if let Some(_) = self.ssid {
6014                return 3;
6015            }
6016            if let Some(_) = self.listen_interval {
6017                return 2;
6018            }
6019            if let Some(_) = self.peer_sta_address {
6020                return 1;
6021            }
6022            0
6023        }
6024    }
6025
6026    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcAssocIndRequest {
6027        type Borrowed<'a> = &'a Self;
6028        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6029            value
6030        }
6031    }
6032
6033    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcAssocIndRequest {
6034        type Owned = Self;
6035
6036        #[inline(always)]
6037        fn inline_align(_context: fidl::encoding::Context) -> usize {
6038            8
6039        }
6040
6041        #[inline(always)]
6042        fn inline_size(_context: fidl::encoding::Context) -> usize {
6043            16
6044        }
6045    }
6046
6047    unsafe impl<D: fidl::encoding::ResourceDialect>
6048        fidl::encoding::Encode<WlanFullmacImplIfcAssocIndRequest, D>
6049        for &WlanFullmacImplIfcAssocIndRequest
6050    {
6051        unsafe fn encode(
6052            self,
6053            encoder: &mut fidl::encoding::Encoder<'_, D>,
6054            offset: usize,
6055            mut depth: fidl::encoding::Depth,
6056        ) -> fidl::Result<()> {
6057            encoder.debug_check_bounds::<WlanFullmacImplIfcAssocIndRequest>(offset);
6058            // Vector header
6059            let max_ordinal: u64 = self.max_ordinal_present();
6060            encoder.write_num(max_ordinal, offset);
6061            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6062            // Calling encoder.out_of_line_offset(0) is not allowed.
6063            if max_ordinal == 0 {
6064                return Ok(());
6065            }
6066            depth.increment()?;
6067            let envelope_size = 8;
6068            let bytes_len = max_ordinal as usize * envelope_size;
6069            #[allow(unused_variables)]
6070            let offset = encoder.out_of_line_offset(bytes_len);
6071            let mut _prev_end_offset: usize = 0;
6072            if 1 > max_ordinal {
6073                return Ok(());
6074            }
6075
6076            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6077            // are envelope_size bytes.
6078            let cur_offset: usize = (1 - 1) * envelope_size;
6079
6080            // Zero reserved fields.
6081            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6082
6083            // Safety:
6084            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6085            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6086            //   envelope_size bytes, there is always sufficient room.
6087            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
6088                self.peer_sta_address
6089                    .as_ref()
6090                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
6091                encoder,
6092                offset + cur_offset,
6093                depth,
6094            )?;
6095
6096            _prev_end_offset = cur_offset + envelope_size;
6097            if 2 > max_ordinal {
6098                return Ok(());
6099            }
6100
6101            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6102            // are envelope_size bytes.
6103            let cur_offset: usize = (2 - 1) * envelope_size;
6104
6105            // Zero reserved fields.
6106            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6107
6108            // Safety:
6109            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6110            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6111            //   envelope_size bytes, there is always sufficient room.
6112            fidl::encoding::encode_in_envelope_optional::<u16, D>(
6113                self.listen_interval.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
6114                encoder,
6115                offset + cur_offset,
6116                depth,
6117            )?;
6118
6119            _prev_end_offset = cur_offset + envelope_size;
6120            if 3 > max_ordinal {
6121                return Ok(());
6122            }
6123
6124            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6125            // are envelope_size bytes.
6126            let cur_offset: usize = (3 - 1) * envelope_size;
6127
6128            // Zero reserved fields.
6129            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6130
6131            // Safety:
6132            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6133            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6134            //   envelope_size bytes, there is always sufficient room.
6135            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
6136                self.ssid.as_ref().map(
6137                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
6138                ),
6139                encoder,
6140                offset + cur_offset,
6141                depth,
6142            )?;
6143
6144            _prev_end_offset = cur_offset + envelope_size;
6145            if 4 > max_ordinal {
6146                return Ok(());
6147            }
6148
6149            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6150            // are envelope_size bytes.
6151            let cur_offset: usize = (4 - 1) * envelope_size;
6152
6153            // Zero reserved fields.
6154            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6155
6156            // Safety:
6157            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6158            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6159            //   envelope_size bytes, there is always sufficient room.
6160            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 257>, D>(
6161                self.rsne.as_ref().map(
6162                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::ValueTypeMarker>::borrow,
6163                ),
6164                encoder,
6165                offset + cur_offset,
6166                depth,
6167            )?;
6168
6169            _prev_end_offset = cur_offset + envelope_size;
6170            if 5 > max_ordinal {
6171                return Ok(());
6172            }
6173
6174            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6175            // are envelope_size bytes.
6176            let cur_offset: usize = (5 - 1) * envelope_size;
6177
6178            // Zero reserved fields.
6179            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6180
6181            // Safety:
6182            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6183            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6184            //   envelope_size bytes, there is always sufficient room.
6185            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 514>, D>(
6186                self.vendor_ie.as_ref().map(
6187                    <fidl::encoding::Vector<u8, 514> as fidl::encoding::ValueTypeMarker>::borrow,
6188                ),
6189                encoder,
6190                offset + cur_offset,
6191                depth,
6192            )?;
6193
6194            _prev_end_offset = cur_offset + envelope_size;
6195
6196            Ok(())
6197        }
6198    }
6199
6200    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6201        for WlanFullmacImplIfcAssocIndRequest
6202    {
6203        #[inline(always)]
6204        fn new_empty() -> Self {
6205            Self::default()
6206        }
6207
6208        unsafe fn decode(
6209            &mut self,
6210            decoder: &mut fidl::encoding::Decoder<'_, D>,
6211            offset: usize,
6212            mut depth: fidl::encoding::Depth,
6213        ) -> fidl::Result<()> {
6214            decoder.debug_check_bounds::<Self>(offset);
6215            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6216                None => return Err(fidl::Error::NotNullable),
6217                Some(len) => len,
6218            };
6219            // Calling decoder.out_of_line_offset(0) is not allowed.
6220            if len == 0 {
6221                return Ok(());
6222            };
6223            depth.increment()?;
6224            let envelope_size = 8;
6225            let bytes_len = len * envelope_size;
6226            let offset = decoder.out_of_line_offset(bytes_len)?;
6227            // Decode the envelope for each type.
6228            let mut _next_ordinal_to_read = 0;
6229            let mut next_offset = offset;
6230            let end_offset = offset + bytes_len;
6231            _next_ordinal_to_read += 1;
6232            if next_offset >= end_offset {
6233                return Ok(());
6234            }
6235
6236            // Decode unknown envelopes for gaps in ordinals.
6237            while _next_ordinal_to_read < 1 {
6238                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6239                _next_ordinal_to_read += 1;
6240                next_offset += envelope_size;
6241            }
6242
6243            let next_out_of_line = decoder.next_out_of_line();
6244            let handles_before = decoder.remaining_handles();
6245            if let Some((inlined, num_bytes, num_handles)) =
6246                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6247            {
6248                let member_inline_size =
6249                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
6250                        decoder.context,
6251                    );
6252                if inlined != (member_inline_size <= 4) {
6253                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6254                }
6255                let inner_offset;
6256                let mut inner_depth = depth.clone();
6257                if inlined {
6258                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6259                    inner_offset = next_offset;
6260                } else {
6261                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6262                    inner_depth.increment()?;
6263                }
6264                let val_ref = self
6265                    .peer_sta_address
6266                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
6267                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
6268                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6269                {
6270                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6271                }
6272                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6273                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6274                }
6275            }
6276
6277            next_offset += envelope_size;
6278            _next_ordinal_to_read += 1;
6279            if next_offset >= end_offset {
6280                return Ok(());
6281            }
6282
6283            // Decode unknown envelopes for gaps in ordinals.
6284            while _next_ordinal_to_read < 2 {
6285                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6286                _next_ordinal_to_read += 1;
6287                next_offset += envelope_size;
6288            }
6289
6290            let next_out_of_line = decoder.next_out_of_line();
6291            let handles_before = decoder.remaining_handles();
6292            if let Some((inlined, num_bytes, num_handles)) =
6293                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6294            {
6295                let member_inline_size =
6296                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6297                if inlined != (member_inline_size <= 4) {
6298                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6299                }
6300                let inner_offset;
6301                let mut inner_depth = depth.clone();
6302                if inlined {
6303                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6304                    inner_offset = next_offset;
6305                } else {
6306                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6307                    inner_depth.increment()?;
6308                }
6309                let val_ref = self.listen_interval.get_or_insert_with(|| fidl::new_empty!(u16, D));
6310                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
6311                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6312                {
6313                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6314                }
6315                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6316                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6317                }
6318            }
6319
6320            next_offset += envelope_size;
6321            _next_ordinal_to_read += 1;
6322            if next_offset >= end_offset {
6323                return Ok(());
6324            }
6325
6326            // Decode unknown envelopes for gaps in ordinals.
6327            while _next_ordinal_to_read < 3 {
6328                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6329                _next_ordinal_to_read += 1;
6330                next_offset += envelope_size;
6331            }
6332
6333            let next_out_of_line = decoder.next_out_of_line();
6334            let handles_before = decoder.remaining_handles();
6335            if let Some((inlined, num_bytes, num_handles)) =
6336                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6337            {
6338                let member_inline_size =
6339                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
6340                        decoder.context,
6341                    );
6342                if inlined != (member_inline_size <= 4) {
6343                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6344                }
6345                let inner_offset;
6346                let mut inner_depth = depth.clone();
6347                if inlined {
6348                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6349                    inner_offset = next_offset;
6350                } else {
6351                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6352                    inner_depth.increment()?;
6353                }
6354                let val_ref = self
6355                    .ssid
6356                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
6357                fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
6358                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6359                {
6360                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6361                }
6362                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6363                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6364                }
6365            }
6366
6367            next_offset += envelope_size;
6368            _next_ordinal_to_read += 1;
6369            if next_offset >= end_offset {
6370                return Ok(());
6371            }
6372
6373            // Decode unknown envelopes for gaps in ordinals.
6374            while _next_ordinal_to_read < 4 {
6375                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6376                _next_ordinal_to_read += 1;
6377                next_offset += envelope_size;
6378            }
6379
6380            let next_out_of_line = decoder.next_out_of_line();
6381            let handles_before = decoder.remaining_handles();
6382            if let Some((inlined, num_bytes, num_handles)) =
6383                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6384            {
6385                let member_inline_size =
6386                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::TypeMarker>::inline_size(
6387                        decoder.context,
6388                    );
6389                if inlined != (member_inline_size <= 4) {
6390                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6391                }
6392                let inner_offset;
6393                let mut inner_depth = depth.clone();
6394                if inlined {
6395                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6396                    inner_offset = next_offset;
6397                } else {
6398                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6399                    inner_depth.increment()?;
6400                }
6401                let val_ref = self
6402                    .rsne
6403                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 257>, D));
6404                fidl::decode!(fidl::encoding::Vector<u8, 257>, D, val_ref, decoder, inner_offset, inner_depth)?;
6405                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6406                {
6407                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6408                }
6409                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6410                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6411                }
6412            }
6413
6414            next_offset += envelope_size;
6415            _next_ordinal_to_read += 1;
6416            if next_offset >= end_offset {
6417                return Ok(());
6418            }
6419
6420            // Decode unknown envelopes for gaps in ordinals.
6421            while _next_ordinal_to_read < 5 {
6422                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6423                _next_ordinal_to_read += 1;
6424                next_offset += envelope_size;
6425            }
6426
6427            let next_out_of_line = decoder.next_out_of_line();
6428            let handles_before = decoder.remaining_handles();
6429            if let Some((inlined, num_bytes, num_handles)) =
6430                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6431            {
6432                let member_inline_size =
6433                    <fidl::encoding::Vector<u8, 514> as fidl::encoding::TypeMarker>::inline_size(
6434                        decoder.context,
6435                    );
6436                if inlined != (member_inline_size <= 4) {
6437                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6438                }
6439                let inner_offset;
6440                let mut inner_depth = depth.clone();
6441                if inlined {
6442                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6443                    inner_offset = next_offset;
6444                } else {
6445                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6446                    inner_depth.increment()?;
6447                }
6448                let val_ref = self
6449                    .vendor_ie
6450                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 514>, D));
6451                fidl::decode!(fidl::encoding::Vector<u8, 514>, D, val_ref, decoder, inner_offset, inner_depth)?;
6452                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6453                {
6454                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6455                }
6456                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6457                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6458                }
6459            }
6460
6461            next_offset += envelope_size;
6462
6463            // Decode the remaining unknown envelopes.
6464            while next_offset < end_offset {
6465                _next_ordinal_to_read += 1;
6466                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6467                next_offset += envelope_size;
6468            }
6469
6470            Ok(())
6471        }
6472    }
6473
6474    impl WlanFullmacImplIfcAuthIndRequest {
6475        #[inline(always)]
6476        fn max_ordinal_present(&self) -> u64 {
6477            if let Some(_) = self.auth_type {
6478                return 2;
6479            }
6480            if let Some(_) = self.peer_sta_address {
6481                return 1;
6482            }
6483            0
6484        }
6485    }
6486
6487    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcAuthIndRequest {
6488        type Borrowed<'a> = &'a Self;
6489        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6490            value
6491        }
6492    }
6493
6494    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcAuthIndRequest {
6495        type Owned = Self;
6496
6497        #[inline(always)]
6498        fn inline_align(_context: fidl::encoding::Context) -> usize {
6499            8
6500        }
6501
6502        #[inline(always)]
6503        fn inline_size(_context: fidl::encoding::Context) -> usize {
6504            16
6505        }
6506    }
6507
6508    unsafe impl<D: fidl::encoding::ResourceDialect>
6509        fidl::encoding::Encode<WlanFullmacImplIfcAuthIndRequest, D>
6510        for &WlanFullmacImplIfcAuthIndRequest
6511    {
6512        unsafe fn encode(
6513            self,
6514            encoder: &mut fidl::encoding::Encoder<'_, D>,
6515            offset: usize,
6516            mut depth: fidl::encoding::Depth,
6517        ) -> fidl::Result<()> {
6518            encoder.debug_check_bounds::<WlanFullmacImplIfcAuthIndRequest>(offset);
6519            // Vector header
6520            let max_ordinal: u64 = self.max_ordinal_present();
6521            encoder.write_num(max_ordinal, offset);
6522            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6523            // Calling encoder.out_of_line_offset(0) is not allowed.
6524            if max_ordinal == 0 {
6525                return Ok(());
6526            }
6527            depth.increment()?;
6528            let envelope_size = 8;
6529            let bytes_len = max_ordinal as usize * envelope_size;
6530            #[allow(unused_variables)]
6531            let offset = encoder.out_of_line_offset(bytes_len);
6532            let mut _prev_end_offset: usize = 0;
6533            if 1 > max_ordinal {
6534                return Ok(());
6535            }
6536
6537            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6538            // are envelope_size bytes.
6539            let cur_offset: usize = (1 - 1) * envelope_size;
6540
6541            // Zero reserved fields.
6542            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6543
6544            // Safety:
6545            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6546            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6547            //   envelope_size bytes, there is always sufficient room.
6548            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
6549                self.peer_sta_address
6550                    .as_ref()
6551                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
6552                encoder,
6553                offset + cur_offset,
6554                depth,
6555            )?;
6556
6557            _prev_end_offset = cur_offset + envelope_size;
6558            if 2 > max_ordinal {
6559                return Ok(());
6560            }
6561
6562            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6563            // are envelope_size bytes.
6564            let cur_offset: usize = (2 - 1) * envelope_size;
6565
6566            // Zero reserved fields.
6567            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6568
6569            // Safety:
6570            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6571            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6572            //   envelope_size bytes, there is always sufficient room.
6573            fidl::encoding::encode_in_envelope_optional::<WlanAuthType, D>(
6574                self.auth_type
6575                    .as_ref()
6576                    .map(<WlanAuthType as fidl::encoding::ValueTypeMarker>::borrow),
6577                encoder,
6578                offset + cur_offset,
6579                depth,
6580            )?;
6581
6582            _prev_end_offset = cur_offset + envelope_size;
6583
6584            Ok(())
6585        }
6586    }
6587
6588    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6589        for WlanFullmacImplIfcAuthIndRequest
6590    {
6591        #[inline(always)]
6592        fn new_empty() -> Self {
6593            Self::default()
6594        }
6595
6596        unsafe fn decode(
6597            &mut self,
6598            decoder: &mut fidl::encoding::Decoder<'_, D>,
6599            offset: usize,
6600            mut depth: fidl::encoding::Depth,
6601        ) -> fidl::Result<()> {
6602            decoder.debug_check_bounds::<Self>(offset);
6603            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6604                None => return Err(fidl::Error::NotNullable),
6605                Some(len) => len,
6606            };
6607            // Calling decoder.out_of_line_offset(0) is not allowed.
6608            if len == 0 {
6609                return Ok(());
6610            };
6611            depth.increment()?;
6612            let envelope_size = 8;
6613            let bytes_len = len * envelope_size;
6614            let offset = decoder.out_of_line_offset(bytes_len)?;
6615            // Decode the envelope for each type.
6616            let mut _next_ordinal_to_read = 0;
6617            let mut next_offset = offset;
6618            let end_offset = offset + bytes_len;
6619            _next_ordinal_to_read += 1;
6620            if next_offset >= end_offset {
6621                return Ok(());
6622            }
6623
6624            // Decode unknown envelopes for gaps in ordinals.
6625            while _next_ordinal_to_read < 1 {
6626                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6627                _next_ordinal_to_read += 1;
6628                next_offset += envelope_size;
6629            }
6630
6631            let next_out_of_line = decoder.next_out_of_line();
6632            let handles_before = decoder.remaining_handles();
6633            if let Some((inlined, num_bytes, num_handles)) =
6634                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6635            {
6636                let member_inline_size =
6637                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
6638                        decoder.context,
6639                    );
6640                if inlined != (member_inline_size <= 4) {
6641                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6642                }
6643                let inner_offset;
6644                let mut inner_depth = depth.clone();
6645                if inlined {
6646                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6647                    inner_offset = next_offset;
6648                } else {
6649                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6650                    inner_depth.increment()?;
6651                }
6652                let val_ref = self
6653                    .peer_sta_address
6654                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
6655                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
6656                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6657                {
6658                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6659                }
6660                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6661                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6662                }
6663            }
6664
6665            next_offset += envelope_size;
6666            _next_ordinal_to_read += 1;
6667            if next_offset >= end_offset {
6668                return Ok(());
6669            }
6670
6671            // Decode unknown envelopes for gaps in ordinals.
6672            while _next_ordinal_to_read < 2 {
6673                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6674                _next_ordinal_to_read += 1;
6675                next_offset += envelope_size;
6676            }
6677
6678            let next_out_of_line = decoder.next_out_of_line();
6679            let handles_before = decoder.remaining_handles();
6680            if let Some((inlined, num_bytes, num_handles)) =
6681                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6682            {
6683                let member_inline_size =
6684                    <WlanAuthType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6685                if inlined != (member_inline_size <= 4) {
6686                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6687                }
6688                let inner_offset;
6689                let mut inner_depth = depth.clone();
6690                if inlined {
6691                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6692                    inner_offset = next_offset;
6693                } else {
6694                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6695                    inner_depth.increment()?;
6696                }
6697                let val_ref =
6698                    self.auth_type.get_or_insert_with(|| fidl::new_empty!(WlanAuthType, D));
6699                fidl::decode!(WlanAuthType, D, val_ref, decoder, inner_offset, inner_depth)?;
6700                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6701                {
6702                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6703                }
6704                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6705                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6706                }
6707            }
6708
6709            next_offset += envelope_size;
6710
6711            // Decode the remaining unknown envelopes.
6712            while next_offset < end_offset {
6713                _next_ordinal_to_read += 1;
6714                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6715                next_offset += envelope_size;
6716            }
6717
6718            Ok(())
6719        }
6720    }
6721
6722    impl WlanFullmacImplIfcConnectConfRequest {
6723        #[inline(always)]
6724        fn max_ordinal_present(&self) -> u64 {
6725            if let Some(_) = self.association_ies {
6726                return 4;
6727            }
6728            if let Some(_) = self.association_id {
6729                return 3;
6730            }
6731            if let Some(_) = self.result_code {
6732                return 2;
6733            }
6734            if let Some(_) = self.peer_sta_address {
6735                return 1;
6736            }
6737            0
6738        }
6739    }
6740
6741    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcConnectConfRequest {
6742        type Borrowed<'a> = &'a Self;
6743        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6744            value
6745        }
6746    }
6747
6748    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcConnectConfRequest {
6749        type Owned = Self;
6750
6751        #[inline(always)]
6752        fn inline_align(_context: fidl::encoding::Context) -> usize {
6753            8
6754        }
6755
6756        #[inline(always)]
6757        fn inline_size(_context: fidl::encoding::Context) -> usize {
6758            16
6759        }
6760    }
6761
6762    unsafe impl<D: fidl::encoding::ResourceDialect>
6763        fidl::encoding::Encode<WlanFullmacImplIfcConnectConfRequest, D>
6764        for &WlanFullmacImplIfcConnectConfRequest
6765    {
6766        unsafe fn encode(
6767            self,
6768            encoder: &mut fidl::encoding::Encoder<'_, D>,
6769            offset: usize,
6770            mut depth: fidl::encoding::Depth,
6771        ) -> fidl::Result<()> {
6772            encoder.debug_check_bounds::<WlanFullmacImplIfcConnectConfRequest>(offset);
6773            // Vector header
6774            let max_ordinal: u64 = self.max_ordinal_present();
6775            encoder.write_num(max_ordinal, offset);
6776            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6777            // Calling encoder.out_of_line_offset(0) is not allowed.
6778            if max_ordinal == 0 {
6779                return Ok(());
6780            }
6781            depth.increment()?;
6782            let envelope_size = 8;
6783            let bytes_len = max_ordinal as usize * envelope_size;
6784            #[allow(unused_variables)]
6785            let offset = encoder.out_of_line_offset(bytes_len);
6786            let mut _prev_end_offset: usize = 0;
6787            if 1 > max_ordinal {
6788                return Ok(());
6789            }
6790
6791            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6792            // are envelope_size bytes.
6793            let cur_offset: usize = (1 - 1) * envelope_size;
6794
6795            // Zero reserved fields.
6796            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6797
6798            // Safety:
6799            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6800            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6801            //   envelope_size bytes, there is always sufficient room.
6802            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
6803                self.peer_sta_address
6804                    .as_ref()
6805                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
6806                encoder,
6807                offset + cur_offset,
6808                depth,
6809            )?;
6810
6811            _prev_end_offset = cur_offset + envelope_size;
6812            if 2 > max_ordinal {
6813                return Ok(());
6814            }
6815
6816            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6817            // are envelope_size bytes.
6818            let cur_offset: usize = (2 - 1) * envelope_size;
6819
6820            // Zero reserved fields.
6821            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6822
6823            // Safety:
6824            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6825            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6826            //   envelope_size bytes, there is always sufficient room.
6827            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>(
6828            self.result_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
6829            encoder, offset + cur_offset, depth
6830        )?;
6831
6832            _prev_end_offset = cur_offset + envelope_size;
6833            if 3 > max_ordinal {
6834                return Ok(());
6835            }
6836
6837            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6838            // are envelope_size bytes.
6839            let cur_offset: usize = (3 - 1) * envelope_size;
6840
6841            // Zero reserved fields.
6842            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6843
6844            // Safety:
6845            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6846            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6847            //   envelope_size bytes, there is always sufficient room.
6848            fidl::encoding::encode_in_envelope_optional::<u16, D>(
6849                self.association_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
6850                encoder,
6851                offset + cur_offset,
6852                depth,
6853            )?;
6854
6855            _prev_end_offset = cur_offset + envelope_size;
6856            if 4 > max_ordinal {
6857                return Ok(());
6858            }
6859
6860            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6861            // are envelope_size bytes.
6862            let cur_offset: usize = (4 - 1) * envelope_size;
6863
6864            // Zero reserved fields.
6865            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6866
6867            // Safety:
6868            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6869            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6870            //   envelope_size bytes, there is always sufficient room.
6871            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
6872            self.association_ies.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
6873            encoder, offset + cur_offset, depth
6874        )?;
6875
6876            _prev_end_offset = cur_offset + envelope_size;
6877
6878            Ok(())
6879        }
6880    }
6881
6882    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6883        for WlanFullmacImplIfcConnectConfRequest
6884    {
6885        #[inline(always)]
6886        fn new_empty() -> Self {
6887            Self::default()
6888        }
6889
6890        unsafe fn decode(
6891            &mut self,
6892            decoder: &mut fidl::encoding::Decoder<'_, D>,
6893            offset: usize,
6894            mut depth: fidl::encoding::Depth,
6895        ) -> fidl::Result<()> {
6896            decoder.debug_check_bounds::<Self>(offset);
6897            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6898                None => return Err(fidl::Error::NotNullable),
6899                Some(len) => len,
6900            };
6901            // Calling decoder.out_of_line_offset(0) is not allowed.
6902            if len == 0 {
6903                return Ok(());
6904            };
6905            depth.increment()?;
6906            let envelope_size = 8;
6907            let bytes_len = len * envelope_size;
6908            let offset = decoder.out_of_line_offset(bytes_len)?;
6909            // Decode the envelope for each type.
6910            let mut _next_ordinal_to_read = 0;
6911            let mut next_offset = offset;
6912            let end_offset = offset + bytes_len;
6913            _next_ordinal_to_read += 1;
6914            if next_offset >= end_offset {
6915                return Ok(());
6916            }
6917
6918            // Decode unknown envelopes for gaps in ordinals.
6919            while _next_ordinal_to_read < 1 {
6920                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6921                _next_ordinal_to_read += 1;
6922                next_offset += envelope_size;
6923            }
6924
6925            let next_out_of_line = decoder.next_out_of_line();
6926            let handles_before = decoder.remaining_handles();
6927            if let Some((inlined, num_bytes, num_handles)) =
6928                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6929            {
6930                let member_inline_size =
6931                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
6932                        decoder.context,
6933                    );
6934                if inlined != (member_inline_size <= 4) {
6935                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6936                }
6937                let inner_offset;
6938                let mut inner_depth = depth.clone();
6939                if inlined {
6940                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6941                    inner_offset = next_offset;
6942                } else {
6943                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6944                    inner_depth.increment()?;
6945                }
6946                let val_ref = self
6947                    .peer_sta_address
6948                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
6949                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
6950                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6951                {
6952                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6953                }
6954                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6955                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6956                }
6957            }
6958
6959            next_offset += envelope_size;
6960            _next_ordinal_to_read += 1;
6961            if next_offset >= end_offset {
6962                return Ok(());
6963            }
6964
6965            // Decode unknown envelopes for gaps in ordinals.
6966            while _next_ordinal_to_read < 2 {
6967                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6968                _next_ordinal_to_read += 1;
6969                next_offset += envelope_size;
6970            }
6971
6972            let next_out_of_line = decoder.next_out_of_line();
6973            let handles_before = decoder.remaining_handles();
6974            if let Some((inlined, num_bytes, num_handles)) =
6975                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6976            {
6977                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6978                if inlined != (member_inline_size <= 4) {
6979                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6980                }
6981                let inner_offset;
6982                let mut inner_depth = depth.clone();
6983                if inlined {
6984                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6985                    inner_offset = next_offset;
6986                } else {
6987                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6988                    inner_depth.increment()?;
6989                }
6990                let val_ref = self.result_code.get_or_insert_with(|| {
6991                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D)
6992                });
6993                fidl::decode!(
6994                    fidl_fuchsia_wlan_ieee80211__common::StatusCode,
6995                    D,
6996                    val_ref,
6997                    decoder,
6998                    inner_offset,
6999                    inner_depth
7000                )?;
7001                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7002                {
7003                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7004                }
7005                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7006                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7007                }
7008            }
7009
7010            next_offset += envelope_size;
7011            _next_ordinal_to_read += 1;
7012            if next_offset >= end_offset {
7013                return Ok(());
7014            }
7015
7016            // Decode unknown envelopes for gaps in ordinals.
7017            while _next_ordinal_to_read < 3 {
7018                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7019                _next_ordinal_to_read += 1;
7020                next_offset += envelope_size;
7021            }
7022
7023            let next_out_of_line = decoder.next_out_of_line();
7024            let handles_before = decoder.remaining_handles();
7025            if let Some((inlined, num_bytes, num_handles)) =
7026                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7027            {
7028                let member_inline_size =
7029                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7030                if inlined != (member_inline_size <= 4) {
7031                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7032                }
7033                let inner_offset;
7034                let mut inner_depth = depth.clone();
7035                if inlined {
7036                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7037                    inner_offset = next_offset;
7038                } else {
7039                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7040                    inner_depth.increment()?;
7041                }
7042                let val_ref = self.association_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
7043                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
7044                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7045                {
7046                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7047                }
7048                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7049                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7050                }
7051            }
7052
7053            next_offset += envelope_size;
7054            _next_ordinal_to_read += 1;
7055            if next_offset >= end_offset {
7056                return Ok(());
7057            }
7058
7059            // Decode unknown envelopes for gaps in ordinals.
7060            while _next_ordinal_to_read < 4 {
7061                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7062                _next_ordinal_to_read += 1;
7063                next_offset += envelope_size;
7064            }
7065
7066            let next_out_of_line = decoder.next_out_of_line();
7067            let handles_before = decoder.remaining_handles();
7068            if let Some((inlined, num_bytes, num_handles)) =
7069                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7070            {
7071                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7072                if inlined != (member_inline_size <= 4) {
7073                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7074                }
7075                let inner_offset;
7076                let mut inner_depth = depth.clone();
7077                if inlined {
7078                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7079                    inner_offset = next_offset;
7080                } else {
7081                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7082                    inner_depth.increment()?;
7083                }
7084                let val_ref = self.association_ies.get_or_insert_with(|| {
7085                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
7086                });
7087                fidl::decode!(
7088                    fidl::encoding::UnboundedVector<u8>,
7089                    D,
7090                    val_ref,
7091                    decoder,
7092                    inner_offset,
7093                    inner_depth
7094                )?;
7095                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7096                {
7097                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7098                }
7099                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7100                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7101                }
7102            }
7103
7104            next_offset += envelope_size;
7105
7106            // Decode the remaining unknown envelopes.
7107            while next_offset < end_offset {
7108                _next_ordinal_to_read += 1;
7109                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7110                next_offset += envelope_size;
7111            }
7112
7113            Ok(())
7114        }
7115    }
7116
7117    impl WlanFullmacImplIfcDeauthConfRequest {
7118        #[inline(always)]
7119        fn max_ordinal_present(&self) -> u64 {
7120            if let Some(_) = self.peer_sta_address {
7121                return 1;
7122            }
7123            0
7124        }
7125    }
7126
7127    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcDeauthConfRequest {
7128        type Borrowed<'a> = &'a Self;
7129        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7130            value
7131        }
7132    }
7133
7134    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcDeauthConfRequest {
7135        type Owned = Self;
7136
7137        #[inline(always)]
7138        fn inline_align(_context: fidl::encoding::Context) -> usize {
7139            8
7140        }
7141
7142        #[inline(always)]
7143        fn inline_size(_context: fidl::encoding::Context) -> usize {
7144            16
7145        }
7146    }
7147
7148    unsafe impl<D: fidl::encoding::ResourceDialect>
7149        fidl::encoding::Encode<WlanFullmacImplIfcDeauthConfRequest, D>
7150        for &WlanFullmacImplIfcDeauthConfRequest
7151    {
7152        unsafe fn encode(
7153            self,
7154            encoder: &mut fidl::encoding::Encoder<'_, D>,
7155            offset: usize,
7156            mut depth: fidl::encoding::Depth,
7157        ) -> fidl::Result<()> {
7158            encoder.debug_check_bounds::<WlanFullmacImplIfcDeauthConfRequest>(offset);
7159            // Vector header
7160            let max_ordinal: u64 = self.max_ordinal_present();
7161            encoder.write_num(max_ordinal, offset);
7162            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7163            // Calling encoder.out_of_line_offset(0) is not allowed.
7164            if max_ordinal == 0 {
7165                return Ok(());
7166            }
7167            depth.increment()?;
7168            let envelope_size = 8;
7169            let bytes_len = max_ordinal as usize * envelope_size;
7170            #[allow(unused_variables)]
7171            let offset = encoder.out_of_line_offset(bytes_len);
7172            let mut _prev_end_offset: usize = 0;
7173            if 1 > max_ordinal {
7174                return Ok(());
7175            }
7176
7177            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7178            // are envelope_size bytes.
7179            let cur_offset: usize = (1 - 1) * envelope_size;
7180
7181            // Zero reserved fields.
7182            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7183
7184            // Safety:
7185            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7186            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7187            //   envelope_size bytes, there is always sufficient room.
7188            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
7189                self.peer_sta_address
7190                    .as_ref()
7191                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
7192                encoder,
7193                offset + cur_offset,
7194                depth,
7195            )?;
7196
7197            _prev_end_offset = cur_offset + envelope_size;
7198
7199            Ok(())
7200        }
7201    }
7202
7203    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7204        for WlanFullmacImplIfcDeauthConfRequest
7205    {
7206        #[inline(always)]
7207        fn new_empty() -> Self {
7208            Self::default()
7209        }
7210
7211        unsafe fn decode(
7212            &mut self,
7213            decoder: &mut fidl::encoding::Decoder<'_, D>,
7214            offset: usize,
7215            mut depth: fidl::encoding::Depth,
7216        ) -> fidl::Result<()> {
7217            decoder.debug_check_bounds::<Self>(offset);
7218            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7219                None => return Err(fidl::Error::NotNullable),
7220                Some(len) => len,
7221            };
7222            // Calling decoder.out_of_line_offset(0) is not allowed.
7223            if len == 0 {
7224                return Ok(());
7225            };
7226            depth.increment()?;
7227            let envelope_size = 8;
7228            let bytes_len = len * envelope_size;
7229            let offset = decoder.out_of_line_offset(bytes_len)?;
7230            // Decode the envelope for each type.
7231            let mut _next_ordinal_to_read = 0;
7232            let mut next_offset = offset;
7233            let end_offset = offset + bytes_len;
7234            _next_ordinal_to_read += 1;
7235            if next_offset >= end_offset {
7236                return Ok(());
7237            }
7238
7239            // Decode unknown envelopes for gaps in ordinals.
7240            while _next_ordinal_to_read < 1 {
7241                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7242                _next_ordinal_to_read += 1;
7243                next_offset += envelope_size;
7244            }
7245
7246            let next_out_of_line = decoder.next_out_of_line();
7247            let handles_before = decoder.remaining_handles();
7248            if let Some((inlined, num_bytes, num_handles)) =
7249                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7250            {
7251                let member_inline_size =
7252                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
7253                        decoder.context,
7254                    );
7255                if inlined != (member_inline_size <= 4) {
7256                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7257                }
7258                let inner_offset;
7259                let mut inner_depth = depth.clone();
7260                if inlined {
7261                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7262                    inner_offset = next_offset;
7263                } else {
7264                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7265                    inner_depth.increment()?;
7266                }
7267                let val_ref = self
7268                    .peer_sta_address
7269                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
7270                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
7271                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7272                {
7273                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7274                }
7275                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7276                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7277                }
7278            }
7279
7280            next_offset += envelope_size;
7281
7282            // Decode the remaining unknown envelopes.
7283            while next_offset < end_offset {
7284                _next_ordinal_to_read += 1;
7285                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7286                next_offset += envelope_size;
7287            }
7288
7289            Ok(())
7290        }
7291    }
7292
7293    impl WlanFullmacImplIfcDeauthIndRequest {
7294        #[inline(always)]
7295        fn max_ordinal_present(&self) -> u64 {
7296            if let Some(_) = self.locally_initiated {
7297                return 3;
7298            }
7299            if let Some(_) = self.reason_code {
7300                return 2;
7301            }
7302            if let Some(_) = self.peer_sta_address {
7303                return 1;
7304            }
7305            0
7306        }
7307    }
7308
7309    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcDeauthIndRequest {
7310        type Borrowed<'a> = &'a Self;
7311        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7312            value
7313        }
7314    }
7315
7316    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcDeauthIndRequest {
7317        type Owned = Self;
7318
7319        #[inline(always)]
7320        fn inline_align(_context: fidl::encoding::Context) -> usize {
7321            8
7322        }
7323
7324        #[inline(always)]
7325        fn inline_size(_context: fidl::encoding::Context) -> usize {
7326            16
7327        }
7328    }
7329
7330    unsafe impl<D: fidl::encoding::ResourceDialect>
7331        fidl::encoding::Encode<WlanFullmacImplIfcDeauthIndRequest, D>
7332        for &WlanFullmacImplIfcDeauthIndRequest
7333    {
7334        unsafe fn encode(
7335            self,
7336            encoder: &mut fidl::encoding::Encoder<'_, D>,
7337            offset: usize,
7338            mut depth: fidl::encoding::Depth,
7339        ) -> fidl::Result<()> {
7340            encoder.debug_check_bounds::<WlanFullmacImplIfcDeauthIndRequest>(offset);
7341            // Vector header
7342            let max_ordinal: u64 = self.max_ordinal_present();
7343            encoder.write_num(max_ordinal, offset);
7344            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7345            // Calling encoder.out_of_line_offset(0) is not allowed.
7346            if max_ordinal == 0 {
7347                return Ok(());
7348            }
7349            depth.increment()?;
7350            let envelope_size = 8;
7351            let bytes_len = max_ordinal as usize * envelope_size;
7352            #[allow(unused_variables)]
7353            let offset = encoder.out_of_line_offset(bytes_len);
7354            let mut _prev_end_offset: usize = 0;
7355            if 1 > max_ordinal {
7356                return Ok(());
7357            }
7358
7359            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7360            // are envelope_size bytes.
7361            let cur_offset: usize = (1 - 1) * envelope_size;
7362
7363            // Zero reserved fields.
7364            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7365
7366            // Safety:
7367            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7368            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7369            //   envelope_size bytes, there is always sufficient room.
7370            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
7371                self.peer_sta_address
7372                    .as_ref()
7373                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
7374                encoder,
7375                offset + cur_offset,
7376                depth,
7377            )?;
7378
7379            _prev_end_offset = cur_offset + envelope_size;
7380            if 2 > max_ordinal {
7381                return Ok(());
7382            }
7383
7384            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7385            // are envelope_size bytes.
7386            let cur_offset: usize = (2 - 1) * envelope_size;
7387
7388            // Zero reserved fields.
7389            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7390
7391            // Safety:
7392            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7393            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7394            //   envelope_size bytes, there is always sufficient room.
7395            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D>(
7396            self.reason_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow),
7397            encoder, offset + cur_offset, depth
7398        )?;
7399
7400            _prev_end_offset = cur_offset + envelope_size;
7401            if 3 > max_ordinal {
7402                return Ok(());
7403            }
7404
7405            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7406            // are envelope_size bytes.
7407            let cur_offset: usize = (3 - 1) * envelope_size;
7408
7409            // Zero reserved fields.
7410            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7411
7412            // Safety:
7413            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7414            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7415            //   envelope_size bytes, there is always sufficient room.
7416            fidl::encoding::encode_in_envelope_optional::<bool, D>(
7417                self.locally_initiated
7418                    .as_ref()
7419                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
7420                encoder,
7421                offset + cur_offset,
7422                depth,
7423            )?;
7424
7425            _prev_end_offset = cur_offset + envelope_size;
7426
7427            Ok(())
7428        }
7429    }
7430
7431    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7432        for WlanFullmacImplIfcDeauthIndRequest
7433    {
7434        #[inline(always)]
7435        fn new_empty() -> Self {
7436            Self::default()
7437        }
7438
7439        unsafe fn decode(
7440            &mut self,
7441            decoder: &mut fidl::encoding::Decoder<'_, D>,
7442            offset: usize,
7443            mut depth: fidl::encoding::Depth,
7444        ) -> fidl::Result<()> {
7445            decoder.debug_check_bounds::<Self>(offset);
7446            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7447                None => return Err(fidl::Error::NotNullable),
7448                Some(len) => len,
7449            };
7450            // Calling decoder.out_of_line_offset(0) is not allowed.
7451            if len == 0 {
7452                return Ok(());
7453            };
7454            depth.increment()?;
7455            let envelope_size = 8;
7456            let bytes_len = len * envelope_size;
7457            let offset = decoder.out_of_line_offset(bytes_len)?;
7458            // Decode the envelope for each type.
7459            let mut _next_ordinal_to_read = 0;
7460            let mut next_offset = offset;
7461            let end_offset = offset + bytes_len;
7462            _next_ordinal_to_read += 1;
7463            if next_offset >= end_offset {
7464                return Ok(());
7465            }
7466
7467            // Decode unknown envelopes for gaps in ordinals.
7468            while _next_ordinal_to_read < 1 {
7469                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7470                _next_ordinal_to_read += 1;
7471                next_offset += envelope_size;
7472            }
7473
7474            let next_out_of_line = decoder.next_out_of_line();
7475            let handles_before = decoder.remaining_handles();
7476            if let Some((inlined, num_bytes, num_handles)) =
7477                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7478            {
7479                let member_inline_size =
7480                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
7481                        decoder.context,
7482                    );
7483                if inlined != (member_inline_size <= 4) {
7484                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7485                }
7486                let inner_offset;
7487                let mut inner_depth = depth.clone();
7488                if inlined {
7489                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7490                    inner_offset = next_offset;
7491                } else {
7492                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7493                    inner_depth.increment()?;
7494                }
7495                let val_ref = self
7496                    .peer_sta_address
7497                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
7498                fidl::decode!(fidl::encoding::Array<u8, 6>, 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            _next_ordinal_to_read += 1;
7510            if next_offset >= end_offset {
7511                return Ok(());
7512            }
7513
7514            // Decode unknown envelopes for gaps in ordinals.
7515            while _next_ordinal_to_read < 2 {
7516                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7517                _next_ordinal_to_read += 1;
7518                next_offset += envelope_size;
7519            }
7520
7521            let next_out_of_line = decoder.next_out_of_line();
7522            let handles_before = decoder.remaining_handles();
7523            if let Some((inlined, num_bytes, num_handles)) =
7524                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7525            {
7526                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7527                if inlined != (member_inline_size <= 4) {
7528                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7529                }
7530                let inner_offset;
7531                let mut inner_depth = depth.clone();
7532                if inlined {
7533                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7534                    inner_offset = next_offset;
7535                } else {
7536                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7537                    inner_depth.increment()?;
7538                }
7539                let val_ref = self.reason_code.get_or_insert_with(|| {
7540                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D)
7541                });
7542                fidl::decode!(
7543                    fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
7544                    D,
7545                    val_ref,
7546                    decoder,
7547                    inner_offset,
7548                    inner_depth
7549                )?;
7550                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7551                {
7552                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7553                }
7554                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7555                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7556                }
7557            }
7558
7559            next_offset += envelope_size;
7560            _next_ordinal_to_read += 1;
7561            if next_offset >= end_offset {
7562                return Ok(());
7563            }
7564
7565            // Decode unknown envelopes for gaps in ordinals.
7566            while _next_ordinal_to_read < 3 {
7567                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7568                _next_ordinal_to_read += 1;
7569                next_offset += envelope_size;
7570            }
7571
7572            let next_out_of_line = decoder.next_out_of_line();
7573            let handles_before = decoder.remaining_handles();
7574            if let Some((inlined, num_bytes, num_handles)) =
7575                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7576            {
7577                let member_inline_size =
7578                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7579                if inlined != (member_inline_size <= 4) {
7580                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7581                }
7582                let inner_offset;
7583                let mut inner_depth = depth.clone();
7584                if inlined {
7585                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7586                    inner_offset = next_offset;
7587                } else {
7588                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7589                    inner_depth.increment()?;
7590                }
7591                let val_ref =
7592                    self.locally_initiated.get_or_insert_with(|| fidl::new_empty!(bool, D));
7593                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
7594                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7595                {
7596                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7597                }
7598                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7599                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7600                }
7601            }
7602
7603            next_offset += envelope_size;
7604
7605            // Decode the remaining unknown envelopes.
7606            while next_offset < end_offset {
7607                _next_ordinal_to_read += 1;
7608                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7609                next_offset += envelope_size;
7610            }
7611
7612            Ok(())
7613        }
7614    }
7615
7616    impl WlanFullmacImplIfcDisassocConfRequest {
7617        #[inline(always)]
7618        fn max_ordinal_present(&self) -> u64 {
7619            if let Some(_) = self.status {
7620                return 1;
7621            }
7622            0
7623        }
7624    }
7625
7626    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcDisassocConfRequest {
7627        type Borrowed<'a> = &'a Self;
7628        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7629            value
7630        }
7631    }
7632
7633    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcDisassocConfRequest {
7634        type Owned = Self;
7635
7636        #[inline(always)]
7637        fn inline_align(_context: fidl::encoding::Context) -> usize {
7638            8
7639        }
7640
7641        #[inline(always)]
7642        fn inline_size(_context: fidl::encoding::Context) -> usize {
7643            16
7644        }
7645    }
7646
7647    unsafe impl<D: fidl::encoding::ResourceDialect>
7648        fidl::encoding::Encode<WlanFullmacImplIfcDisassocConfRequest, D>
7649        for &WlanFullmacImplIfcDisassocConfRequest
7650    {
7651        unsafe fn encode(
7652            self,
7653            encoder: &mut fidl::encoding::Encoder<'_, D>,
7654            offset: usize,
7655            mut depth: fidl::encoding::Depth,
7656        ) -> fidl::Result<()> {
7657            encoder.debug_check_bounds::<WlanFullmacImplIfcDisassocConfRequest>(offset);
7658            // Vector header
7659            let max_ordinal: u64 = self.max_ordinal_present();
7660            encoder.write_num(max_ordinal, offset);
7661            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7662            // Calling encoder.out_of_line_offset(0) is not allowed.
7663            if max_ordinal == 0 {
7664                return Ok(());
7665            }
7666            depth.increment()?;
7667            let envelope_size = 8;
7668            let bytes_len = max_ordinal as usize * envelope_size;
7669            #[allow(unused_variables)]
7670            let offset = encoder.out_of_line_offset(bytes_len);
7671            let mut _prev_end_offset: usize = 0;
7672            if 1 > max_ordinal {
7673                return Ok(());
7674            }
7675
7676            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7677            // are envelope_size bytes.
7678            let cur_offset: usize = (1 - 1) * envelope_size;
7679
7680            // Zero reserved fields.
7681            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7682
7683            // Safety:
7684            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7685            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7686            //   envelope_size bytes, there is always sufficient room.
7687            fidl::encoding::encode_in_envelope_optional::<i32, D>(
7688                self.status.as_ref().map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
7689                encoder,
7690                offset + cur_offset,
7691                depth,
7692            )?;
7693
7694            _prev_end_offset = cur_offset + envelope_size;
7695
7696            Ok(())
7697        }
7698    }
7699
7700    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7701        for WlanFullmacImplIfcDisassocConfRequest
7702    {
7703        #[inline(always)]
7704        fn new_empty() -> Self {
7705            Self::default()
7706        }
7707
7708        unsafe fn decode(
7709            &mut self,
7710            decoder: &mut fidl::encoding::Decoder<'_, D>,
7711            offset: usize,
7712            mut depth: fidl::encoding::Depth,
7713        ) -> fidl::Result<()> {
7714            decoder.debug_check_bounds::<Self>(offset);
7715            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7716                None => return Err(fidl::Error::NotNullable),
7717                Some(len) => len,
7718            };
7719            // Calling decoder.out_of_line_offset(0) is not allowed.
7720            if len == 0 {
7721                return Ok(());
7722            };
7723            depth.increment()?;
7724            let envelope_size = 8;
7725            let bytes_len = len * envelope_size;
7726            let offset = decoder.out_of_line_offset(bytes_len)?;
7727            // Decode the envelope for each type.
7728            let mut _next_ordinal_to_read = 0;
7729            let mut next_offset = offset;
7730            let end_offset = offset + bytes_len;
7731            _next_ordinal_to_read += 1;
7732            if next_offset >= end_offset {
7733                return Ok(());
7734            }
7735
7736            // Decode unknown envelopes for gaps in ordinals.
7737            while _next_ordinal_to_read < 1 {
7738                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7739                _next_ordinal_to_read += 1;
7740                next_offset += envelope_size;
7741            }
7742
7743            let next_out_of_line = decoder.next_out_of_line();
7744            let handles_before = decoder.remaining_handles();
7745            if let Some((inlined, num_bytes, num_handles)) =
7746                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7747            {
7748                let member_inline_size =
7749                    <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7750                if inlined != (member_inline_size <= 4) {
7751                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7752                }
7753                let inner_offset;
7754                let mut inner_depth = depth.clone();
7755                if inlined {
7756                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7757                    inner_offset = next_offset;
7758                } else {
7759                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7760                    inner_depth.increment()?;
7761                }
7762                let val_ref = self.status.get_or_insert_with(|| fidl::new_empty!(i32, D));
7763                fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
7764                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7765                {
7766                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7767                }
7768                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7769                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7770                }
7771            }
7772
7773            next_offset += envelope_size;
7774
7775            // Decode the remaining unknown envelopes.
7776            while next_offset < end_offset {
7777                _next_ordinal_to_read += 1;
7778                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7779                next_offset += envelope_size;
7780            }
7781
7782            Ok(())
7783        }
7784    }
7785
7786    impl WlanFullmacImplIfcDisassocIndRequest {
7787        #[inline(always)]
7788        fn max_ordinal_present(&self) -> u64 {
7789            if let Some(_) = self.locally_initiated {
7790                return 3;
7791            }
7792            if let Some(_) = self.reason_code {
7793                return 2;
7794            }
7795            if let Some(_) = self.peer_sta_address {
7796                return 1;
7797            }
7798            0
7799        }
7800    }
7801
7802    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcDisassocIndRequest {
7803        type Borrowed<'a> = &'a Self;
7804        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7805            value
7806        }
7807    }
7808
7809    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcDisassocIndRequest {
7810        type Owned = Self;
7811
7812        #[inline(always)]
7813        fn inline_align(_context: fidl::encoding::Context) -> usize {
7814            8
7815        }
7816
7817        #[inline(always)]
7818        fn inline_size(_context: fidl::encoding::Context) -> usize {
7819            16
7820        }
7821    }
7822
7823    unsafe impl<D: fidl::encoding::ResourceDialect>
7824        fidl::encoding::Encode<WlanFullmacImplIfcDisassocIndRequest, D>
7825        for &WlanFullmacImplIfcDisassocIndRequest
7826    {
7827        unsafe fn encode(
7828            self,
7829            encoder: &mut fidl::encoding::Encoder<'_, D>,
7830            offset: usize,
7831            mut depth: fidl::encoding::Depth,
7832        ) -> fidl::Result<()> {
7833            encoder.debug_check_bounds::<WlanFullmacImplIfcDisassocIndRequest>(offset);
7834            // Vector header
7835            let max_ordinal: u64 = self.max_ordinal_present();
7836            encoder.write_num(max_ordinal, offset);
7837            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7838            // Calling encoder.out_of_line_offset(0) is not allowed.
7839            if max_ordinal == 0 {
7840                return Ok(());
7841            }
7842            depth.increment()?;
7843            let envelope_size = 8;
7844            let bytes_len = max_ordinal as usize * envelope_size;
7845            #[allow(unused_variables)]
7846            let offset = encoder.out_of_line_offset(bytes_len);
7847            let mut _prev_end_offset: usize = 0;
7848            if 1 > max_ordinal {
7849                return Ok(());
7850            }
7851
7852            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7853            // are envelope_size bytes.
7854            let cur_offset: usize = (1 - 1) * envelope_size;
7855
7856            // Zero reserved fields.
7857            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7858
7859            // Safety:
7860            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7861            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7862            //   envelope_size bytes, there is always sufficient room.
7863            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
7864                self.peer_sta_address
7865                    .as_ref()
7866                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
7867                encoder,
7868                offset + cur_offset,
7869                depth,
7870            )?;
7871
7872            _prev_end_offset = cur_offset + envelope_size;
7873            if 2 > max_ordinal {
7874                return Ok(());
7875            }
7876
7877            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7878            // are envelope_size bytes.
7879            let cur_offset: usize = (2 - 1) * envelope_size;
7880
7881            // Zero reserved fields.
7882            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7883
7884            // Safety:
7885            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7886            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7887            //   envelope_size bytes, there is always sufficient room.
7888            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D>(
7889            self.reason_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow),
7890            encoder, offset + cur_offset, depth
7891        )?;
7892
7893            _prev_end_offset = cur_offset + envelope_size;
7894            if 3 > max_ordinal {
7895                return Ok(());
7896            }
7897
7898            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7899            // are envelope_size bytes.
7900            let cur_offset: usize = (3 - 1) * envelope_size;
7901
7902            // Zero reserved fields.
7903            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7904
7905            // Safety:
7906            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7907            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7908            //   envelope_size bytes, there is always sufficient room.
7909            fidl::encoding::encode_in_envelope_optional::<bool, D>(
7910                self.locally_initiated
7911                    .as_ref()
7912                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
7913                encoder,
7914                offset + cur_offset,
7915                depth,
7916            )?;
7917
7918            _prev_end_offset = cur_offset + envelope_size;
7919
7920            Ok(())
7921        }
7922    }
7923
7924    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7925        for WlanFullmacImplIfcDisassocIndRequest
7926    {
7927        #[inline(always)]
7928        fn new_empty() -> Self {
7929            Self::default()
7930        }
7931
7932        unsafe fn decode(
7933            &mut self,
7934            decoder: &mut fidl::encoding::Decoder<'_, D>,
7935            offset: usize,
7936            mut depth: fidl::encoding::Depth,
7937        ) -> fidl::Result<()> {
7938            decoder.debug_check_bounds::<Self>(offset);
7939            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7940                None => return Err(fidl::Error::NotNullable),
7941                Some(len) => len,
7942            };
7943            // Calling decoder.out_of_line_offset(0) is not allowed.
7944            if len == 0 {
7945                return Ok(());
7946            };
7947            depth.increment()?;
7948            let envelope_size = 8;
7949            let bytes_len = len * envelope_size;
7950            let offset = decoder.out_of_line_offset(bytes_len)?;
7951            // Decode the envelope for each type.
7952            let mut _next_ordinal_to_read = 0;
7953            let mut next_offset = offset;
7954            let end_offset = offset + bytes_len;
7955            _next_ordinal_to_read += 1;
7956            if next_offset >= end_offset {
7957                return Ok(());
7958            }
7959
7960            // Decode unknown envelopes for gaps in ordinals.
7961            while _next_ordinal_to_read < 1 {
7962                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7963                _next_ordinal_to_read += 1;
7964                next_offset += envelope_size;
7965            }
7966
7967            let next_out_of_line = decoder.next_out_of_line();
7968            let handles_before = decoder.remaining_handles();
7969            if let Some((inlined, num_bytes, num_handles)) =
7970                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7971            {
7972                let member_inline_size =
7973                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
7974                        decoder.context,
7975                    );
7976                if inlined != (member_inline_size <= 4) {
7977                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7978                }
7979                let inner_offset;
7980                let mut inner_depth = depth.clone();
7981                if inlined {
7982                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7983                    inner_offset = next_offset;
7984                } else {
7985                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7986                    inner_depth.increment()?;
7987                }
7988                let val_ref = self
7989                    .peer_sta_address
7990                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
7991                fidl::decode!(fidl::encoding::Array<u8, 6>, 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            _next_ordinal_to_read += 1;
8003            if next_offset >= end_offset {
8004                return Ok(());
8005            }
8006
8007            // Decode unknown envelopes for gaps in ordinals.
8008            while _next_ordinal_to_read < 2 {
8009                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8010                _next_ordinal_to_read += 1;
8011                next_offset += envelope_size;
8012            }
8013
8014            let next_out_of_line = decoder.next_out_of_line();
8015            let handles_before = decoder.remaining_handles();
8016            if let Some((inlined, num_bytes, num_handles)) =
8017                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8018            {
8019                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8020                if inlined != (member_inline_size <= 4) {
8021                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8022                }
8023                let inner_offset;
8024                let mut inner_depth = depth.clone();
8025                if inlined {
8026                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8027                    inner_offset = next_offset;
8028                } else {
8029                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8030                    inner_depth.increment()?;
8031                }
8032                let val_ref = self.reason_code.get_or_insert_with(|| {
8033                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D)
8034                });
8035                fidl::decode!(
8036                    fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
8037                    D,
8038                    val_ref,
8039                    decoder,
8040                    inner_offset,
8041                    inner_depth
8042                )?;
8043                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8044                {
8045                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8046                }
8047                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8048                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8049                }
8050            }
8051
8052            next_offset += envelope_size;
8053            _next_ordinal_to_read += 1;
8054            if next_offset >= end_offset {
8055                return Ok(());
8056            }
8057
8058            // Decode unknown envelopes for gaps in ordinals.
8059            while _next_ordinal_to_read < 3 {
8060                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8061                _next_ordinal_to_read += 1;
8062                next_offset += envelope_size;
8063            }
8064
8065            let next_out_of_line = decoder.next_out_of_line();
8066            let handles_before = decoder.remaining_handles();
8067            if let Some((inlined, num_bytes, num_handles)) =
8068                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8069            {
8070                let member_inline_size =
8071                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8072                if inlined != (member_inline_size <= 4) {
8073                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8074                }
8075                let inner_offset;
8076                let mut inner_depth = depth.clone();
8077                if inlined {
8078                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8079                    inner_offset = next_offset;
8080                } else {
8081                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8082                    inner_depth.increment()?;
8083                }
8084                let val_ref =
8085                    self.locally_initiated.get_or_insert_with(|| fidl::new_empty!(bool, D));
8086                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
8087                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8088                {
8089                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8090                }
8091                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8092                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8093                }
8094            }
8095
8096            next_offset += envelope_size;
8097
8098            // Decode the remaining unknown envelopes.
8099            while next_offset < end_offset {
8100                _next_ordinal_to_read += 1;
8101                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8102                next_offset += envelope_size;
8103            }
8104
8105            Ok(())
8106        }
8107    }
8108
8109    impl WlanFullmacImplIfcEapolConfRequest {
8110        #[inline(always)]
8111        fn max_ordinal_present(&self) -> u64 {
8112            if let Some(_) = self.dst_addr {
8113                return 2;
8114            }
8115            if let Some(_) = self.result_code {
8116                return 1;
8117            }
8118            0
8119        }
8120    }
8121
8122    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcEapolConfRequest {
8123        type Borrowed<'a> = &'a Self;
8124        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8125            value
8126        }
8127    }
8128
8129    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcEapolConfRequest {
8130        type Owned = Self;
8131
8132        #[inline(always)]
8133        fn inline_align(_context: fidl::encoding::Context) -> usize {
8134            8
8135        }
8136
8137        #[inline(always)]
8138        fn inline_size(_context: fidl::encoding::Context) -> usize {
8139            16
8140        }
8141    }
8142
8143    unsafe impl<D: fidl::encoding::ResourceDialect>
8144        fidl::encoding::Encode<WlanFullmacImplIfcEapolConfRequest, D>
8145        for &WlanFullmacImplIfcEapolConfRequest
8146    {
8147        unsafe fn encode(
8148            self,
8149            encoder: &mut fidl::encoding::Encoder<'_, D>,
8150            offset: usize,
8151            mut depth: fidl::encoding::Depth,
8152        ) -> fidl::Result<()> {
8153            encoder.debug_check_bounds::<WlanFullmacImplIfcEapolConfRequest>(offset);
8154            // Vector header
8155            let max_ordinal: u64 = self.max_ordinal_present();
8156            encoder.write_num(max_ordinal, offset);
8157            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8158            // Calling encoder.out_of_line_offset(0) is not allowed.
8159            if max_ordinal == 0 {
8160                return Ok(());
8161            }
8162            depth.increment()?;
8163            let envelope_size = 8;
8164            let bytes_len = max_ordinal as usize * envelope_size;
8165            #[allow(unused_variables)]
8166            let offset = encoder.out_of_line_offset(bytes_len);
8167            let mut _prev_end_offset: usize = 0;
8168            if 1 > max_ordinal {
8169                return Ok(());
8170            }
8171
8172            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8173            // are envelope_size bytes.
8174            let cur_offset: usize = (1 - 1) * envelope_size;
8175
8176            // Zero reserved fields.
8177            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8178
8179            // Safety:
8180            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8181            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8182            //   envelope_size bytes, there is always sufficient room.
8183            fidl::encoding::encode_in_envelope_optional::<EapolTxResult, D>(
8184                self.result_code
8185                    .as_ref()
8186                    .map(<EapolTxResult as fidl::encoding::ValueTypeMarker>::borrow),
8187                encoder,
8188                offset + cur_offset,
8189                depth,
8190            )?;
8191
8192            _prev_end_offset = cur_offset + envelope_size;
8193            if 2 > max_ordinal {
8194                return Ok(());
8195            }
8196
8197            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8198            // are envelope_size bytes.
8199            let cur_offset: usize = (2 - 1) * envelope_size;
8200
8201            // Zero reserved fields.
8202            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8203
8204            // Safety:
8205            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8206            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8207            //   envelope_size bytes, there is always sufficient room.
8208            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
8209                self.dst_addr
8210                    .as_ref()
8211                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
8212                encoder,
8213                offset + cur_offset,
8214                depth,
8215            )?;
8216
8217            _prev_end_offset = cur_offset + envelope_size;
8218
8219            Ok(())
8220        }
8221    }
8222
8223    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8224        for WlanFullmacImplIfcEapolConfRequest
8225    {
8226        #[inline(always)]
8227        fn new_empty() -> Self {
8228            Self::default()
8229        }
8230
8231        unsafe fn decode(
8232            &mut self,
8233            decoder: &mut fidl::encoding::Decoder<'_, D>,
8234            offset: usize,
8235            mut depth: fidl::encoding::Depth,
8236        ) -> fidl::Result<()> {
8237            decoder.debug_check_bounds::<Self>(offset);
8238            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8239                None => return Err(fidl::Error::NotNullable),
8240                Some(len) => len,
8241            };
8242            // Calling decoder.out_of_line_offset(0) is not allowed.
8243            if len == 0 {
8244                return Ok(());
8245            };
8246            depth.increment()?;
8247            let envelope_size = 8;
8248            let bytes_len = len * envelope_size;
8249            let offset = decoder.out_of_line_offset(bytes_len)?;
8250            // Decode the envelope for each type.
8251            let mut _next_ordinal_to_read = 0;
8252            let mut next_offset = offset;
8253            let end_offset = offset + bytes_len;
8254            _next_ordinal_to_read += 1;
8255            if next_offset >= end_offset {
8256                return Ok(());
8257            }
8258
8259            // Decode unknown envelopes for gaps in ordinals.
8260            while _next_ordinal_to_read < 1 {
8261                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8262                _next_ordinal_to_read += 1;
8263                next_offset += envelope_size;
8264            }
8265
8266            let next_out_of_line = decoder.next_out_of_line();
8267            let handles_before = decoder.remaining_handles();
8268            if let Some((inlined, num_bytes, num_handles)) =
8269                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8270            {
8271                let member_inline_size =
8272                    <EapolTxResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8273                if inlined != (member_inline_size <= 4) {
8274                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8275                }
8276                let inner_offset;
8277                let mut inner_depth = depth.clone();
8278                if inlined {
8279                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8280                    inner_offset = next_offset;
8281                } else {
8282                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8283                    inner_depth.increment()?;
8284                }
8285                let val_ref =
8286                    self.result_code.get_or_insert_with(|| fidl::new_empty!(EapolTxResult, D));
8287                fidl::decode!(EapolTxResult, D, val_ref, decoder, inner_offset, inner_depth)?;
8288                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8289                {
8290                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8291                }
8292                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8293                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8294                }
8295            }
8296
8297            next_offset += envelope_size;
8298            _next_ordinal_to_read += 1;
8299            if next_offset >= end_offset {
8300                return Ok(());
8301            }
8302
8303            // Decode unknown envelopes for gaps in ordinals.
8304            while _next_ordinal_to_read < 2 {
8305                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8306                _next_ordinal_to_read += 1;
8307                next_offset += envelope_size;
8308            }
8309
8310            let next_out_of_line = decoder.next_out_of_line();
8311            let handles_before = decoder.remaining_handles();
8312            if let Some((inlined, num_bytes, num_handles)) =
8313                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8314            {
8315                let member_inline_size =
8316                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
8317                        decoder.context,
8318                    );
8319                if inlined != (member_inline_size <= 4) {
8320                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8321                }
8322                let inner_offset;
8323                let mut inner_depth = depth.clone();
8324                if inlined {
8325                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8326                    inner_offset = next_offset;
8327                } else {
8328                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8329                    inner_depth.increment()?;
8330                }
8331                let val_ref = self
8332                    .dst_addr
8333                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
8334                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
8335                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8336                {
8337                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8338                }
8339                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8340                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8341                }
8342            }
8343
8344            next_offset += envelope_size;
8345
8346            // Decode the remaining unknown envelopes.
8347            while next_offset < end_offset {
8348                _next_ordinal_to_read += 1;
8349                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8350                next_offset += envelope_size;
8351            }
8352
8353            Ok(())
8354        }
8355    }
8356
8357    impl WlanFullmacImplIfcEapolIndRequest {
8358        #[inline(always)]
8359        fn max_ordinal_present(&self) -> u64 {
8360            if let Some(_) = self.data {
8361                return 3;
8362            }
8363            if let Some(_) = self.dst_addr {
8364                return 2;
8365            }
8366            if let Some(_) = self.src_addr {
8367                return 1;
8368            }
8369            0
8370        }
8371    }
8372
8373    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcEapolIndRequest {
8374        type Borrowed<'a> = &'a Self;
8375        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8376            value
8377        }
8378    }
8379
8380    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcEapolIndRequest {
8381        type Owned = Self;
8382
8383        #[inline(always)]
8384        fn inline_align(_context: fidl::encoding::Context) -> usize {
8385            8
8386        }
8387
8388        #[inline(always)]
8389        fn inline_size(_context: fidl::encoding::Context) -> usize {
8390            16
8391        }
8392    }
8393
8394    unsafe impl<D: fidl::encoding::ResourceDialect>
8395        fidl::encoding::Encode<WlanFullmacImplIfcEapolIndRequest, D>
8396        for &WlanFullmacImplIfcEapolIndRequest
8397    {
8398        unsafe fn encode(
8399            self,
8400            encoder: &mut fidl::encoding::Encoder<'_, D>,
8401            offset: usize,
8402            mut depth: fidl::encoding::Depth,
8403        ) -> fidl::Result<()> {
8404            encoder.debug_check_bounds::<WlanFullmacImplIfcEapolIndRequest>(offset);
8405            // Vector header
8406            let max_ordinal: u64 = self.max_ordinal_present();
8407            encoder.write_num(max_ordinal, offset);
8408            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8409            // Calling encoder.out_of_line_offset(0) is not allowed.
8410            if max_ordinal == 0 {
8411                return Ok(());
8412            }
8413            depth.increment()?;
8414            let envelope_size = 8;
8415            let bytes_len = max_ordinal as usize * envelope_size;
8416            #[allow(unused_variables)]
8417            let offset = encoder.out_of_line_offset(bytes_len);
8418            let mut _prev_end_offset: usize = 0;
8419            if 1 > max_ordinal {
8420                return Ok(());
8421            }
8422
8423            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8424            // are envelope_size bytes.
8425            let cur_offset: usize = (1 - 1) * envelope_size;
8426
8427            // Zero reserved fields.
8428            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8429
8430            // Safety:
8431            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8432            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8433            //   envelope_size bytes, there is always sufficient room.
8434            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
8435                self.src_addr
8436                    .as_ref()
8437                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
8438                encoder,
8439                offset + cur_offset,
8440                depth,
8441            )?;
8442
8443            _prev_end_offset = cur_offset + envelope_size;
8444            if 2 > max_ordinal {
8445                return Ok(());
8446            }
8447
8448            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8449            // are envelope_size bytes.
8450            let cur_offset: usize = (2 - 1) * envelope_size;
8451
8452            // Zero reserved fields.
8453            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8454
8455            // Safety:
8456            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8457            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8458            //   envelope_size bytes, there is always sufficient room.
8459            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
8460                self.dst_addr
8461                    .as_ref()
8462                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
8463                encoder,
8464                offset + cur_offset,
8465                depth,
8466            )?;
8467
8468            _prev_end_offset = cur_offset + envelope_size;
8469            if 3 > max_ordinal {
8470                return Ok(());
8471            }
8472
8473            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8474            // are envelope_size bytes.
8475            let cur_offset: usize = (3 - 1) * envelope_size;
8476
8477            // Zero reserved fields.
8478            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8479
8480            // Safety:
8481            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8482            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8483            //   envelope_size bytes, there is always sufficient room.
8484            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
8485            self.data.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
8486            encoder, offset + cur_offset, depth
8487        )?;
8488
8489            _prev_end_offset = cur_offset + envelope_size;
8490
8491            Ok(())
8492        }
8493    }
8494
8495    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8496        for WlanFullmacImplIfcEapolIndRequest
8497    {
8498        #[inline(always)]
8499        fn new_empty() -> Self {
8500            Self::default()
8501        }
8502
8503        unsafe fn decode(
8504            &mut self,
8505            decoder: &mut fidl::encoding::Decoder<'_, D>,
8506            offset: usize,
8507            mut depth: fidl::encoding::Depth,
8508        ) -> fidl::Result<()> {
8509            decoder.debug_check_bounds::<Self>(offset);
8510            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8511                None => return Err(fidl::Error::NotNullable),
8512                Some(len) => len,
8513            };
8514            // Calling decoder.out_of_line_offset(0) is not allowed.
8515            if len == 0 {
8516                return Ok(());
8517            };
8518            depth.increment()?;
8519            let envelope_size = 8;
8520            let bytes_len = len * envelope_size;
8521            let offset = decoder.out_of_line_offset(bytes_len)?;
8522            // Decode the envelope for each type.
8523            let mut _next_ordinal_to_read = 0;
8524            let mut next_offset = offset;
8525            let end_offset = offset + bytes_len;
8526            _next_ordinal_to_read += 1;
8527            if next_offset >= end_offset {
8528                return Ok(());
8529            }
8530
8531            // Decode unknown envelopes for gaps in ordinals.
8532            while _next_ordinal_to_read < 1 {
8533                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8534                _next_ordinal_to_read += 1;
8535                next_offset += envelope_size;
8536            }
8537
8538            let next_out_of_line = decoder.next_out_of_line();
8539            let handles_before = decoder.remaining_handles();
8540            if let Some((inlined, num_bytes, num_handles)) =
8541                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8542            {
8543                let member_inline_size =
8544                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
8545                        decoder.context,
8546                    );
8547                if inlined != (member_inline_size <= 4) {
8548                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8549                }
8550                let inner_offset;
8551                let mut inner_depth = depth.clone();
8552                if inlined {
8553                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8554                    inner_offset = next_offset;
8555                } else {
8556                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8557                    inner_depth.increment()?;
8558                }
8559                let val_ref = self
8560                    .src_addr
8561                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
8562                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
8563                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8564                {
8565                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8566                }
8567                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8568                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8569                }
8570            }
8571
8572            next_offset += envelope_size;
8573            _next_ordinal_to_read += 1;
8574            if next_offset >= end_offset {
8575                return Ok(());
8576            }
8577
8578            // Decode unknown envelopes for gaps in ordinals.
8579            while _next_ordinal_to_read < 2 {
8580                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8581                _next_ordinal_to_read += 1;
8582                next_offset += envelope_size;
8583            }
8584
8585            let next_out_of_line = decoder.next_out_of_line();
8586            let handles_before = decoder.remaining_handles();
8587            if let Some((inlined, num_bytes, num_handles)) =
8588                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8589            {
8590                let member_inline_size =
8591                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
8592                        decoder.context,
8593                    );
8594                if inlined != (member_inline_size <= 4) {
8595                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8596                }
8597                let inner_offset;
8598                let mut inner_depth = depth.clone();
8599                if inlined {
8600                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8601                    inner_offset = next_offset;
8602                } else {
8603                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8604                    inner_depth.increment()?;
8605                }
8606                let val_ref = self
8607                    .dst_addr
8608                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
8609                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
8610                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8611                {
8612                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8613                }
8614                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8615                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8616                }
8617            }
8618
8619            next_offset += envelope_size;
8620            _next_ordinal_to_read += 1;
8621            if next_offset >= end_offset {
8622                return Ok(());
8623            }
8624
8625            // Decode unknown envelopes for gaps in ordinals.
8626            while _next_ordinal_to_read < 3 {
8627                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8628                _next_ordinal_to_read += 1;
8629                next_offset += envelope_size;
8630            }
8631
8632            let next_out_of_line = decoder.next_out_of_line();
8633            let handles_before = decoder.remaining_handles();
8634            if let Some((inlined, num_bytes, num_handles)) =
8635                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8636            {
8637                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8638                if inlined != (member_inline_size <= 4) {
8639                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8640                }
8641                let inner_offset;
8642                let mut inner_depth = depth.clone();
8643                if inlined {
8644                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8645                    inner_offset = next_offset;
8646                } else {
8647                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8648                    inner_depth.increment()?;
8649                }
8650                let val_ref = self.data.get_or_insert_with(|| {
8651                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
8652                });
8653                fidl::decode!(
8654                    fidl::encoding::UnboundedVector<u8>,
8655                    D,
8656                    val_ref,
8657                    decoder,
8658                    inner_offset,
8659                    inner_depth
8660                )?;
8661                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8662                {
8663                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8664                }
8665                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8666                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8667                }
8668            }
8669
8670            next_offset += envelope_size;
8671
8672            // Decode the remaining unknown envelopes.
8673            while next_offset < end_offset {
8674                _next_ordinal_to_read += 1;
8675                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8676                next_offset += envelope_size;
8677            }
8678
8679            Ok(())
8680        }
8681    }
8682
8683    impl WlanFullmacImplIfcOnPmkAvailableRequest {
8684        #[inline(always)]
8685        fn max_ordinal_present(&self) -> u64 {
8686            if let Some(_) = self.pmkid {
8687                return 2;
8688            }
8689            if let Some(_) = self.pmk {
8690                return 1;
8691            }
8692            0
8693        }
8694    }
8695
8696    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnPmkAvailableRequest {
8697        type Borrowed<'a> = &'a Self;
8698        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8699            value
8700        }
8701    }
8702
8703    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcOnPmkAvailableRequest {
8704        type Owned = Self;
8705
8706        #[inline(always)]
8707        fn inline_align(_context: fidl::encoding::Context) -> usize {
8708            8
8709        }
8710
8711        #[inline(always)]
8712        fn inline_size(_context: fidl::encoding::Context) -> usize {
8713            16
8714        }
8715    }
8716
8717    unsafe impl<D: fidl::encoding::ResourceDialect>
8718        fidl::encoding::Encode<WlanFullmacImplIfcOnPmkAvailableRequest, D>
8719        for &WlanFullmacImplIfcOnPmkAvailableRequest
8720    {
8721        unsafe fn encode(
8722            self,
8723            encoder: &mut fidl::encoding::Encoder<'_, D>,
8724            offset: usize,
8725            mut depth: fidl::encoding::Depth,
8726        ) -> fidl::Result<()> {
8727            encoder.debug_check_bounds::<WlanFullmacImplIfcOnPmkAvailableRequest>(offset);
8728            // Vector header
8729            let max_ordinal: u64 = self.max_ordinal_present();
8730            encoder.write_num(max_ordinal, offset);
8731            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8732            // Calling encoder.out_of_line_offset(0) is not allowed.
8733            if max_ordinal == 0 {
8734                return Ok(());
8735            }
8736            depth.increment()?;
8737            let envelope_size = 8;
8738            let bytes_len = max_ordinal as usize * envelope_size;
8739            #[allow(unused_variables)]
8740            let offset = encoder.out_of_line_offset(bytes_len);
8741            let mut _prev_end_offset: usize = 0;
8742            if 1 > max_ordinal {
8743                return Ok(());
8744            }
8745
8746            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8747            // are envelope_size bytes.
8748            let cur_offset: usize = (1 - 1) * envelope_size;
8749
8750            // Zero reserved fields.
8751            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8752
8753            // Safety:
8754            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8755            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8756            //   envelope_size bytes, there is always sufficient room.
8757            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
8758            self.pmk.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
8759            encoder, offset + cur_offset, depth
8760        )?;
8761
8762            _prev_end_offset = cur_offset + envelope_size;
8763            if 2 > max_ordinal {
8764                return Ok(());
8765            }
8766
8767            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8768            // are envelope_size bytes.
8769            let cur_offset: usize = (2 - 1) * envelope_size;
8770
8771            // Zero reserved fields.
8772            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8773
8774            // Safety:
8775            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8776            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8777            //   envelope_size bytes, there is always sufficient room.
8778            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
8779            self.pmkid.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
8780            encoder, offset + cur_offset, depth
8781        )?;
8782
8783            _prev_end_offset = cur_offset + envelope_size;
8784
8785            Ok(())
8786        }
8787    }
8788
8789    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8790        for WlanFullmacImplIfcOnPmkAvailableRequest
8791    {
8792        #[inline(always)]
8793        fn new_empty() -> Self {
8794            Self::default()
8795        }
8796
8797        unsafe fn decode(
8798            &mut self,
8799            decoder: &mut fidl::encoding::Decoder<'_, D>,
8800            offset: usize,
8801            mut depth: fidl::encoding::Depth,
8802        ) -> fidl::Result<()> {
8803            decoder.debug_check_bounds::<Self>(offset);
8804            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8805                None => return Err(fidl::Error::NotNullable),
8806                Some(len) => len,
8807            };
8808            // Calling decoder.out_of_line_offset(0) is not allowed.
8809            if len == 0 {
8810                return Ok(());
8811            };
8812            depth.increment()?;
8813            let envelope_size = 8;
8814            let bytes_len = len * envelope_size;
8815            let offset = decoder.out_of_line_offset(bytes_len)?;
8816            // Decode the envelope for each type.
8817            let mut _next_ordinal_to_read = 0;
8818            let mut next_offset = offset;
8819            let end_offset = offset + bytes_len;
8820            _next_ordinal_to_read += 1;
8821            if next_offset >= end_offset {
8822                return Ok(());
8823            }
8824
8825            // Decode unknown envelopes for gaps in ordinals.
8826            while _next_ordinal_to_read < 1 {
8827                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8828                _next_ordinal_to_read += 1;
8829                next_offset += envelope_size;
8830            }
8831
8832            let next_out_of_line = decoder.next_out_of_line();
8833            let handles_before = decoder.remaining_handles();
8834            if let Some((inlined, num_bytes, num_handles)) =
8835                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8836            {
8837                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8838                if inlined != (member_inline_size <= 4) {
8839                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8840                }
8841                let inner_offset;
8842                let mut inner_depth = depth.clone();
8843                if inlined {
8844                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8845                    inner_offset = next_offset;
8846                } else {
8847                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8848                    inner_depth.increment()?;
8849                }
8850                let val_ref = self.pmk.get_or_insert_with(|| {
8851                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
8852                });
8853                fidl::decode!(
8854                    fidl::encoding::UnboundedVector<u8>,
8855                    D,
8856                    val_ref,
8857                    decoder,
8858                    inner_offset,
8859                    inner_depth
8860                )?;
8861                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8862                {
8863                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8864                }
8865                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8866                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8867                }
8868            }
8869
8870            next_offset += envelope_size;
8871            _next_ordinal_to_read += 1;
8872            if next_offset >= end_offset {
8873                return Ok(());
8874            }
8875
8876            // Decode unknown envelopes for gaps in ordinals.
8877            while _next_ordinal_to_read < 2 {
8878                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8879                _next_ordinal_to_read += 1;
8880                next_offset += envelope_size;
8881            }
8882
8883            let next_out_of_line = decoder.next_out_of_line();
8884            let handles_before = decoder.remaining_handles();
8885            if let Some((inlined, num_bytes, num_handles)) =
8886                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8887            {
8888                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8889                if inlined != (member_inline_size <= 4) {
8890                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8891                }
8892                let inner_offset;
8893                let mut inner_depth = depth.clone();
8894                if inlined {
8895                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8896                    inner_offset = next_offset;
8897                } else {
8898                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8899                    inner_depth.increment()?;
8900                }
8901                let val_ref = self.pmkid.get_or_insert_with(|| {
8902                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
8903                });
8904                fidl::decode!(
8905                    fidl::encoding::UnboundedVector<u8>,
8906                    D,
8907                    val_ref,
8908                    decoder,
8909                    inner_offset,
8910                    inner_depth
8911                )?;
8912                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8913                {
8914                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8915                }
8916                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8917                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8918                }
8919            }
8920
8921            next_offset += envelope_size;
8922
8923            // Decode the remaining unknown envelopes.
8924            while next_offset < end_offset {
8925                _next_ordinal_to_read += 1;
8926                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8927                next_offset += envelope_size;
8928            }
8929
8930            Ok(())
8931        }
8932    }
8933
8934    impl WlanFullmacImplIfcOnScanEndRequest {
8935        #[inline(always)]
8936        fn max_ordinal_present(&self) -> u64 {
8937            if let Some(_) = self.code {
8938                return 2;
8939            }
8940            if let Some(_) = self.txn_id {
8941                return 1;
8942            }
8943            0
8944        }
8945    }
8946
8947    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnScanEndRequest {
8948        type Borrowed<'a> = &'a Self;
8949        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8950            value
8951        }
8952    }
8953
8954    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcOnScanEndRequest {
8955        type Owned = Self;
8956
8957        #[inline(always)]
8958        fn inline_align(_context: fidl::encoding::Context) -> usize {
8959            8
8960        }
8961
8962        #[inline(always)]
8963        fn inline_size(_context: fidl::encoding::Context) -> usize {
8964            16
8965        }
8966    }
8967
8968    unsafe impl<D: fidl::encoding::ResourceDialect>
8969        fidl::encoding::Encode<WlanFullmacImplIfcOnScanEndRequest, D>
8970        for &WlanFullmacImplIfcOnScanEndRequest
8971    {
8972        unsafe fn encode(
8973            self,
8974            encoder: &mut fidl::encoding::Encoder<'_, D>,
8975            offset: usize,
8976            mut depth: fidl::encoding::Depth,
8977        ) -> fidl::Result<()> {
8978            encoder.debug_check_bounds::<WlanFullmacImplIfcOnScanEndRequest>(offset);
8979            // Vector header
8980            let max_ordinal: u64 = self.max_ordinal_present();
8981            encoder.write_num(max_ordinal, offset);
8982            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8983            // Calling encoder.out_of_line_offset(0) is not allowed.
8984            if max_ordinal == 0 {
8985                return Ok(());
8986            }
8987            depth.increment()?;
8988            let envelope_size = 8;
8989            let bytes_len = max_ordinal as usize * envelope_size;
8990            #[allow(unused_variables)]
8991            let offset = encoder.out_of_line_offset(bytes_len);
8992            let mut _prev_end_offset: usize = 0;
8993            if 1 > max_ordinal {
8994                return Ok(());
8995            }
8996
8997            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8998            // are envelope_size bytes.
8999            let cur_offset: usize = (1 - 1) * envelope_size;
9000
9001            // Zero reserved fields.
9002            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9003
9004            // Safety:
9005            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9006            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9007            //   envelope_size bytes, there is always sufficient room.
9008            fidl::encoding::encode_in_envelope_optional::<u64, D>(
9009                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
9010                encoder,
9011                offset + cur_offset,
9012                depth,
9013            )?;
9014
9015            _prev_end_offset = cur_offset + envelope_size;
9016            if 2 > max_ordinal {
9017                return Ok(());
9018            }
9019
9020            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9021            // are envelope_size bytes.
9022            let cur_offset: usize = (2 - 1) * envelope_size;
9023
9024            // Zero reserved fields.
9025            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9026
9027            // Safety:
9028            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9029            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9030            //   envelope_size bytes, there is always sufficient room.
9031            fidl::encoding::encode_in_envelope_optional::<WlanScanResult, D>(
9032                self.code.as_ref().map(<WlanScanResult as fidl::encoding::ValueTypeMarker>::borrow),
9033                encoder,
9034                offset + cur_offset,
9035                depth,
9036            )?;
9037
9038            _prev_end_offset = cur_offset + envelope_size;
9039
9040            Ok(())
9041        }
9042    }
9043
9044    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9045        for WlanFullmacImplIfcOnScanEndRequest
9046    {
9047        #[inline(always)]
9048        fn new_empty() -> Self {
9049            Self::default()
9050        }
9051
9052        unsafe fn decode(
9053            &mut self,
9054            decoder: &mut fidl::encoding::Decoder<'_, D>,
9055            offset: usize,
9056            mut depth: fidl::encoding::Depth,
9057        ) -> fidl::Result<()> {
9058            decoder.debug_check_bounds::<Self>(offset);
9059            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9060                None => return Err(fidl::Error::NotNullable),
9061                Some(len) => len,
9062            };
9063            // Calling decoder.out_of_line_offset(0) is not allowed.
9064            if len == 0 {
9065                return Ok(());
9066            };
9067            depth.increment()?;
9068            let envelope_size = 8;
9069            let bytes_len = len * envelope_size;
9070            let offset = decoder.out_of_line_offset(bytes_len)?;
9071            // Decode the envelope for each type.
9072            let mut _next_ordinal_to_read = 0;
9073            let mut next_offset = offset;
9074            let end_offset = offset + bytes_len;
9075            _next_ordinal_to_read += 1;
9076            if next_offset >= end_offset {
9077                return Ok(());
9078            }
9079
9080            // Decode unknown envelopes for gaps in ordinals.
9081            while _next_ordinal_to_read < 1 {
9082                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9083                _next_ordinal_to_read += 1;
9084                next_offset += envelope_size;
9085            }
9086
9087            let next_out_of_line = decoder.next_out_of_line();
9088            let handles_before = decoder.remaining_handles();
9089            if let Some((inlined, num_bytes, num_handles)) =
9090                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9091            {
9092                let member_inline_size =
9093                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9094                if inlined != (member_inline_size <= 4) {
9095                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9096                }
9097                let inner_offset;
9098                let mut inner_depth = depth.clone();
9099                if inlined {
9100                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9101                    inner_offset = next_offset;
9102                } else {
9103                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9104                    inner_depth.increment()?;
9105                }
9106                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
9107                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
9108                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9109                {
9110                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9111                }
9112                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9113                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9114                }
9115            }
9116
9117            next_offset += envelope_size;
9118            _next_ordinal_to_read += 1;
9119            if next_offset >= end_offset {
9120                return Ok(());
9121            }
9122
9123            // Decode unknown envelopes for gaps in ordinals.
9124            while _next_ordinal_to_read < 2 {
9125                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9126                _next_ordinal_to_read += 1;
9127                next_offset += envelope_size;
9128            }
9129
9130            let next_out_of_line = decoder.next_out_of_line();
9131            let handles_before = decoder.remaining_handles();
9132            if let Some((inlined, num_bytes, num_handles)) =
9133                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9134            {
9135                let member_inline_size =
9136                    <WlanScanResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9137                if inlined != (member_inline_size <= 4) {
9138                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9139                }
9140                let inner_offset;
9141                let mut inner_depth = depth.clone();
9142                if inlined {
9143                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9144                    inner_offset = next_offset;
9145                } else {
9146                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9147                    inner_depth.increment()?;
9148                }
9149                let val_ref = self.code.get_or_insert_with(|| fidl::new_empty!(WlanScanResult, D));
9150                fidl::decode!(WlanScanResult, D, val_ref, decoder, inner_offset, inner_depth)?;
9151                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9152                {
9153                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9154                }
9155                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9156                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9157                }
9158            }
9159
9160            next_offset += envelope_size;
9161
9162            // Decode the remaining unknown envelopes.
9163            while next_offset < end_offset {
9164                _next_ordinal_to_read += 1;
9165                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9166                next_offset += envelope_size;
9167            }
9168
9169            Ok(())
9170        }
9171    }
9172
9173    impl WlanFullmacImplIfcOnScanResultRequest {
9174        #[inline(always)]
9175        fn max_ordinal_present(&self) -> u64 {
9176            if let Some(_) = self.bss {
9177                return 3;
9178            }
9179            if let Some(_) = self.timestamp_nanos {
9180                return 2;
9181            }
9182            if let Some(_) = self.txn_id {
9183                return 1;
9184            }
9185            0
9186        }
9187    }
9188
9189    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnScanResultRequest {
9190        type Borrowed<'a> = &'a Self;
9191        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9192            value
9193        }
9194    }
9195
9196    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcOnScanResultRequest {
9197        type Owned = Self;
9198
9199        #[inline(always)]
9200        fn inline_align(_context: fidl::encoding::Context) -> usize {
9201            8
9202        }
9203
9204        #[inline(always)]
9205        fn inline_size(_context: fidl::encoding::Context) -> usize {
9206            16
9207        }
9208    }
9209
9210    unsafe impl<D: fidl::encoding::ResourceDialect>
9211        fidl::encoding::Encode<WlanFullmacImplIfcOnScanResultRequest, D>
9212        for &WlanFullmacImplIfcOnScanResultRequest
9213    {
9214        unsafe fn encode(
9215            self,
9216            encoder: &mut fidl::encoding::Encoder<'_, D>,
9217            offset: usize,
9218            mut depth: fidl::encoding::Depth,
9219        ) -> fidl::Result<()> {
9220            encoder.debug_check_bounds::<WlanFullmacImplIfcOnScanResultRequest>(offset);
9221            // Vector header
9222            let max_ordinal: u64 = self.max_ordinal_present();
9223            encoder.write_num(max_ordinal, offset);
9224            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9225            // Calling encoder.out_of_line_offset(0) is not allowed.
9226            if max_ordinal == 0 {
9227                return Ok(());
9228            }
9229            depth.increment()?;
9230            let envelope_size = 8;
9231            let bytes_len = max_ordinal as usize * envelope_size;
9232            #[allow(unused_variables)]
9233            let offset = encoder.out_of_line_offset(bytes_len);
9234            let mut _prev_end_offset: usize = 0;
9235            if 1 > max_ordinal {
9236                return Ok(());
9237            }
9238
9239            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9240            // are envelope_size bytes.
9241            let cur_offset: usize = (1 - 1) * envelope_size;
9242
9243            // Zero reserved fields.
9244            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9245
9246            // Safety:
9247            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9248            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9249            //   envelope_size bytes, there is always sufficient room.
9250            fidl::encoding::encode_in_envelope_optional::<u64, D>(
9251                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
9252                encoder,
9253                offset + cur_offset,
9254                depth,
9255            )?;
9256
9257            _prev_end_offset = cur_offset + envelope_size;
9258            if 2 > max_ordinal {
9259                return Ok(());
9260            }
9261
9262            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9263            // are envelope_size bytes.
9264            let cur_offset: usize = (2 - 1) * envelope_size;
9265
9266            // Zero reserved fields.
9267            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9268
9269            // Safety:
9270            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9271            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9272            //   envelope_size bytes, there is always sufficient room.
9273            fidl::encoding::encode_in_envelope_optional::<i64, D>(
9274                self.timestamp_nanos.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
9275                encoder,
9276                offset + cur_offset,
9277                depth,
9278            )?;
9279
9280            _prev_end_offset = cur_offset + envelope_size;
9281            if 3 > max_ordinal {
9282                return Ok(());
9283            }
9284
9285            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9286            // are envelope_size bytes.
9287            let cur_offset: usize = (3 - 1) * envelope_size;
9288
9289            // Zero reserved fields.
9290            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9291
9292            // Safety:
9293            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9294            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9295            //   envelope_size bytes, there is always sufficient room.
9296            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common__common::BssDescription, D>(
9297            self.bss.as_ref().map(<fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow),
9298            encoder, offset + cur_offset, depth
9299        )?;
9300
9301            _prev_end_offset = cur_offset + envelope_size;
9302
9303            Ok(())
9304        }
9305    }
9306
9307    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9308        for WlanFullmacImplIfcOnScanResultRequest
9309    {
9310        #[inline(always)]
9311        fn new_empty() -> Self {
9312            Self::default()
9313        }
9314
9315        unsafe fn decode(
9316            &mut self,
9317            decoder: &mut fidl::encoding::Decoder<'_, D>,
9318            offset: usize,
9319            mut depth: fidl::encoding::Depth,
9320        ) -> fidl::Result<()> {
9321            decoder.debug_check_bounds::<Self>(offset);
9322            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9323                None => return Err(fidl::Error::NotNullable),
9324                Some(len) => len,
9325            };
9326            // Calling decoder.out_of_line_offset(0) is not allowed.
9327            if len == 0 {
9328                return Ok(());
9329            };
9330            depth.increment()?;
9331            let envelope_size = 8;
9332            let bytes_len = len * envelope_size;
9333            let offset = decoder.out_of_line_offset(bytes_len)?;
9334            // Decode the envelope for each type.
9335            let mut _next_ordinal_to_read = 0;
9336            let mut next_offset = offset;
9337            let end_offset = offset + bytes_len;
9338            _next_ordinal_to_read += 1;
9339            if next_offset >= end_offset {
9340                return Ok(());
9341            }
9342
9343            // Decode unknown envelopes for gaps in ordinals.
9344            while _next_ordinal_to_read < 1 {
9345                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9346                _next_ordinal_to_read += 1;
9347                next_offset += envelope_size;
9348            }
9349
9350            let next_out_of_line = decoder.next_out_of_line();
9351            let handles_before = decoder.remaining_handles();
9352            if let Some((inlined, num_bytes, num_handles)) =
9353                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9354            {
9355                let member_inline_size =
9356                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9357                if inlined != (member_inline_size <= 4) {
9358                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9359                }
9360                let inner_offset;
9361                let mut inner_depth = depth.clone();
9362                if inlined {
9363                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9364                    inner_offset = next_offset;
9365                } else {
9366                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9367                    inner_depth.increment()?;
9368                }
9369                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
9370                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
9371                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9372                {
9373                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9374                }
9375                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9376                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9377                }
9378            }
9379
9380            next_offset += envelope_size;
9381            _next_ordinal_to_read += 1;
9382            if next_offset >= end_offset {
9383                return Ok(());
9384            }
9385
9386            // Decode unknown envelopes for gaps in ordinals.
9387            while _next_ordinal_to_read < 2 {
9388                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9389                _next_ordinal_to_read += 1;
9390                next_offset += envelope_size;
9391            }
9392
9393            let next_out_of_line = decoder.next_out_of_line();
9394            let handles_before = decoder.remaining_handles();
9395            if let Some((inlined, num_bytes, num_handles)) =
9396                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9397            {
9398                let member_inline_size =
9399                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9400                if inlined != (member_inline_size <= 4) {
9401                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9402                }
9403                let inner_offset;
9404                let mut inner_depth = depth.clone();
9405                if inlined {
9406                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9407                    inner_offset = next_offset;
9408                } else {
9409                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9410                    inner_depth.increment()?;
9411                }
9412                let val_ref = self.timestamp_nanos.get_or_insert_with(|| fidl::new_empty!(i64, D));
9413                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
9414                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9415                {
9416                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9417                }
9418                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9419                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9420                }
9421            }
9422
9423            next_offset += envelope_size;
9424            _next_ordinal_to_read += 1;
9425            if next_offset >= end_offset {
9426                return Ok(());
9427            }
9428
9429            // Decode unknown envelopes for gaps in ordinals.
9430            while _next_ordinal_to_read < 3 {
9431                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9432                _next_ordinal_to_read += 1;
9433                next_offset += envelope_size;
9434            }
9435
9436            let next_out_of_line = decoder.next_out_of_line();
9437            let handles_before = decoder.remaining_handles();
9438            if let Some((inlined, num_bytes, num_handles)) =
9439                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9440            {
9441                let member_inline_size = <fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9442                if inlined != (member_inline_size <= 4) {
9443                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9444                }
9445                let inner_offset;
9446                let mut inner_depth = depth.clone();
9447                if inlined {
9448                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9449                    inner_offset = next_offset;
9450                } else {
9451                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9452                    inner_depth.increment()?;
9453                }
9454                let val_ref = self.bss.get_or_insert_with(|| {
9455                    fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssDescription, D)
9456                });
9457                fidl::decode!(
9458                    fidl_fuchsia_wlan_common__common::BssDescription,
9459                    D,
9460                    val_ref,
9461                    decoder,
9462                    inner_offset,
9463                    inner_depth
9464                )?;
9465                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9466                {
9467                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9468                }
9469                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9470                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9471                }
9472            }
9473
9474            next_offset += envelope_size;
9475
9476            // Decode the remaining unknown envelopes.
9477            while next_offset < end_offset {
9478                _next_ordinal_to_read += 1;
9479                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9480                next_offset += envelope_size;
9481            }
9482
9483            Ok(())
9484        }
9485    }
9486
9487    impl WlanFullmacImplIfcRoamConfRequest {
9488        #[inline(always)]
9489        fn max_ordinal_present(&self) -> u64 {
9490            if let Some(_) = self.association_ies {
9491                return 6;
9492            }
9493            if let Some(_) = self.association_id {
9494                return 5;
9495            }
9496            if let Some(_) = self.target_bss_authenticated {
9497                return 4;
9498            }
9499            if let Some(_) = self.original_association_maintained {
9500                return 3;
9501            }
9502            if let Some(_) = self.status_code {
9503                return 2;
9504            }
9505            if let Some(_) = self.selected_bssid {
9506                return 1;
9507            }
9508            0
9509        }
9510    }
9511
9512    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcRoamConfRequest {
9513        type Borrowed<'a> = &'a Self;
9514        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9515            value
9516        }
9517    }
9518
9519    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcRoamConfRequest {
9520        type Owned = Self;
9521
9522        #[inline(always)]
9523        fn inline_align(_context: fidl::encoding::Context) -> usize {
9524            8
9525        }
9526
9527        #[inline(always)]
9528        fn inline_size(_context: fidl::encoding::Context) -> usize {
9529            16
9530        }
9531    }
9532
9533    unsafe impl<D: fidl::encoding::ResourceDialect>
9534        fidl::encoding::Encode<WlanFullmacImplIfcRoamConfRequest, D>
9535        for &WlanFullmacImplIfcRoamConfRequest
9536    {
9537        unsafe fn encode(
9538            self,
9539            encoder: &mut fidl::encoding::Encoder<'_, D>,
9540            offset: usize,
9541            mut depth: fidl::encoding::Depth,
9542        ) -> fidl::Result<()> {
9543            encoder.debug_check_bounds::<WlanFullmacImplIfcRoamConfRequest>(offset);
9544            // Vector header
9545            let max_ordinal: u64 = self.max_ordinal_present();
9546            encoder.write_num(max_ordinal, offset);
9547            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9548            // Calling encoder.out_of_line_offset(0) is not allowed.
9549            if max_ordinal == 0 {
9550                return Ok(());
9551            }
9552            depth.increment()?;
9553            let envelope_size = 8;
9554            let bytes_len = max_ordinal as usize * envelope_size;
9555            #[allow(unused_variables)]
9556            let offset = encoder.out_of_line_offset(bytes_len);
9557            let mut _prev_end_offset: usize = 0;
9558            if 1 > max_ordinal {
9559                return Ok(());
9560            }
9561
9562            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9563            // are envelope_size bytes.
9564            let cur_offset: usize = (1 - 1) * envelope_size;
9565
9566            // Zero reserved fields.
9567            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9568
9569            // Safety:
9570            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9571            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9572            //   envelope_size bytes, there is always sufficient room.
9573            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
9574                self.selected_bssid
9575                    .as_ref()
9576                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
9577                encoder,
9578                offset + cur_offset,
9579                depth,
9580            )?;
9581
9582            _prev_end_offset = cur_offset + envelope_size;
9583            if 2 > max_ordinal {
9584                return Ok(());
9585            }
9586
9587            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9588            // are envelope_size bytes.
9589            let cur_offset: usize = (2 - 1) * envelope_size;
9590
9591            // Zero reserved fields.
9592            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9593
9594            // Safety:
9595            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9596            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9597            //   envelope_size bytes, there is always sufficient room.
9598            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>(
9599            self.status_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
9600            encoder, offset + cur_offset, depth
9601        )?;
9602
9603            _prev_end_offset = cur_offset + envelope_size;
9604            if 3 > max_ordinal {
9605                return Ok(());
9606            }
9607
9608            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9609            // are envelope_size bytes.
9610            let cur_offset: usize = (3 - 1) * envelope_size;
9611
9612            // Zero reserved fields.
9613            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9614
9615            // Safety:
9616            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9617            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9618            //   envelope_size bytes, there is always sufficient room.
9619            fidl::encoding::encode_in_envelope_optional::<bool, D>(
9620                self.original_association_maintained
9621                    .as_ref()
9622                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
9623                encoder,
9624                offset + cur_offset,
9625                depth,
9626            )?;
9627
9628            _prev_end_offset = cur_offset + envelope_size;
9629            if 4 > max_ordinal {
9630                return Ok(());
9631            }
9632
9633            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9634            // are envelope_size bytes.
9635            let cur_offset: usize = (4 - 1) * envelope_size;
9636
9637            // Zero reserved fields.
9638            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9639
9640            // Safety:
9641            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9642            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9643            //   envelope_size bytes, there is always sufficient room.
9644            fidl::encoding::encode_in_envelope_optional::<bool, D>(
9645                self.target_bss_authenticated
9646                    .as_ref()
9647                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
9648                encoder,
9649                offset + cur_offset,
9650                depth,
9651            )?;
9652
9653            _prev_end_offset = cur_offset + envelope_size;
9654            if 5 > max_ordinal {
9655                return Ok(());
9656            }
9657
9658            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9659            // are envelope_size bytes.
9660            let cur_offset: usize = (5 - 1) * envelope_size;
9661
9662            // Zero reserved fields.
9663            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9664
9665            // Safety:
9666            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9667            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9668            //   envelope_size bytes, there is always sufficient room.
9669            fidl::encoding::encode_in_envelope_optional::<u16, D>(
9670                self.association_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
9671                encoder,
9672                offset + cur_offset,
9673                depth,
9674            )?;
9675
9676            _prev_end_offset = cur_offset + envelope_size;
9677            if 6 > max_ordinal {
9678                return Ok(());
9679            }
9680
9681            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9682            // are envelope_size bytes.
9683            let cur_offset: usize = (6 - 1) * envelope_size;
9684
9685            // Zero reserved fields.
9686            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9687
9688            // Safety:
9689            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9690            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9691            //   envelope_size bytes, there is always sufficient room.
9692            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
9693            self.association_ies.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
9694            encoder, offset + cur_offset, depth
9695        )?;
9696
9697            _prev_end_offset = cur_offset + envelope_size;
9698
9699            Ok(())
9700        }
9701    }
9702
9703    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9704        for WlanFullmacImplIfcRoamConfRequest
9705    {
9706        #[inline(always)]
9707        fn new_empty() -> Self {
9708            Self::default()
9709        }
9710
9711        unsafe fn decode(
9712            &mut self,
9713            decoder: &mut fidl::encoding::Decoder<'_, D>,
9714            offset: usize,
9715            mut depth: fidl::encoding::Depth,
9716        ) -> fidl::Result<()> {
9717            decoder.debug_check_bounds::<Self>(offset);
9718            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9719                None => return Err(fidl::Error::NotNullable),
9720                Some(len) => len,
9721            };
9722            // Calling decoder.out_of_line_offset(0) is not allowed.
9723            if len == 0 {
9724                return Ok(());
9725            };
9726            depth.increment()?;
9727            let envelope_size = 8;
9728            let bytes_len = len * envelope_size;
9729            let offset = decoder.out_of_line_offset(bytes_len)?;
9730            // Decode the envelope for each type.
9731            let mut _next_ordinal_to_read = 0;
9732            let mut next_offset = offset;
9733            let end_offset = offset + bytes_len;
9734            _next_ordinal_to_read += 1;
9735            if next_offset >= end_offset {
9736                return Ok(());
9737            }
9738
9739            // Decode unknown envelopes for gaps in ordinals.
9740            while _next_ordinal_to_read < 1 {
9741                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9742                _next_ordinal_to_read += 1;
9743                next_offset += envelope_size;
9744            }
9745
9746            let next_out_of_line = decoder.next_out_of_line();
9747            let handles_before = decoder.remaining_handles();
9748            if let Some((inlined, num_bytes, num_handles)) =
9749                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9750            {
9751                let member_inline_size =
9752                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
9753                        decoder.context,
9754                    );
9755                if inlined != (member_inline_size <= 4) {
9756                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9757                }
9758                let inner_offset;
9759                let mut inner_depth = depth.clone();
9760                if inlined {
9761                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9762                    inner_offset = next_offset;
9763                } else {
9764                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9765                    inner_depth.increment()?;
9766                }
9767                let val_ref = self
9768                    .selected_bssid
9769                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
9770                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
9771                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9772                {
9773                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9774                }
9775                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9776                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9777                }
9778            }
9779
9780            next_offset += envelope_size;
9781            _next_ordinal_to_read += 1;
9782            if next_offset >= end_offset {
9783                return Ok(());
9784            }
9785
9786            // Decode unknown envelopes for gaps in ordinals.
9787            while _next_ordinal_to_read < 2 {
9788                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9789                _next_ordinal_to_read += 1;
9790                next_offset += envelope_size;
9791            }
9792
9793            let next_out_of_line = decoder.next_out_of_line();
9794            let handles_before = decoder.remaining_handles();
9795            if let Some((inlined, num_bytes, num_handles)) =
9796                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9797            {
9798                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9799                if inlined != (member_inline_size <= 4) {
9800                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9801                }
9802                let inner_offset;
9803                let mut inner_depth = depth.clone();
9804                if inlined {
9805                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9806                    inner_offset = next_offset;
9807                } else {
9808                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9809                    inner_depth.increment()?;
9810                }
9811                let val_ref = self.status_code.get_or_insert_with(|| {
9812                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D)
9813                });
9814                fidl::decode!(
9815                    fidl_fuchsia_wlan_ieee80211__common::StatusCode,
9816                    D,
9817                    val_ref,
9818                    decoder,
9819                    inner_offset,
9820                    inner_depth
9821                )?;
9822                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9823                {
9824                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9825                }
9826                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9827                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9828                }
9829            }
9830
9831            next_offset += envelope_size;
9832            _next_ordinal_to_read += 1;
9833            if next_offset >= end_offset {
9834                return Ok(());
9835            }
9836
9837            // Decode unknown envelopes for gaps in ordinals.
9838            while _next_ordinal_to_read < 3 {
9839                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9840                _next_ordinal_to_read += 1;
9841                next_offset += envelope_size;
9842            }
9843
9844            let next_out_of_line = decoder.next_out_of_line();
9845            let handles_before = decoder.remaining_handles();
9846            if let Some((inlined, num_bytes, num_handles)) =
9847                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9848            {
9849                let member_inline_size =
9850                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9851                if inlined != (member_inline_size <= 4) {
9852                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9853                }
9854                let inner_offset;
9855                let mut inner_depth = depth.clone();
9856                if inlined {
9857                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9858                    inner_offset = next_offset;
9859                } else {
9860                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9861                    inner_depth.increment()?;
9862                }
9863                let val_ref = self
9864                    .original_association_maintained
9865                    .get_or_insert_with(|| fidl::new_empty!(bool, D));
9866                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
9867                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9868                {
9869                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9870                }
9871                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9872                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9873                }
9874            }
9875
9876            next_offset += envelope_size;
9877            _next_ordinal_to_read += 1;
9878            if next_offset >= end_offset {
9879                return Ok(());
9880            }
9881
9882            // Decode unknown envelopes for gaps in ordinals.
9883            while _next_ordinal_to_read < 4 {
9884                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9885                _next_ordinal_to_read += 1;
9886                next_offset += envelope_size;
9887            }
9888
9889            let next_out_of_line = decoder.next_out_of_line();
9890            let handles_before = decoder.remaining_handles();
9891            if let Some((inlined, num_bytes, num_handles)) =
9892                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9893            {
9894                let member_inline_size =
9895                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9896                if inlined != (member_inline_size <= 4) {
9897                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9898                }
9899                let inner_offset;
9900                let mut inner_depth = depth.clone();
9901                if inlined {
9902                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9903                    inner_offset = next_offset;
9904                } else {
9905                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9906                    inner_depth.increment()?;
9907                }
9908                let val_ref =
9909                    self.target_bss_authenticated.get_or_insert_with(|| fidl::new_empty!(bool, D));
9910                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
9911                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9912                {
9913                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9914                }
9915                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9916                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9917                }
9918            }
9919
9920            next_offset += envelope_size;
9921            _next_ordinal_to_read += 1;
9922            if next_offset >= end_offset {
9923                return Ok(());
9924            }
9925
9926            // Decode unknown envelopes for gaps in ordinals.
9927            while _next_ordinal_to_read < 5 {
9928                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9929                _next_ordinal_to_read += 1;
9930                next_offset += envelope_size;
9931            }
9932
9933            let next_out_of_line = decoder.next_out_of_line();
9934            let handles_before = decoder.remaining_handles();
9935            if let Some((inlined, num_bytes, num_handles)) =
9936                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9937            {
9938                let member_inline_size =
9939                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9940                if inlined != (member_inline_size <= 4) {
9941                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9942                }
9943                let inner_offset;
9944                let mut inner_depth = depth.clone();
9945                if inlined {
9946                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9947                    inner_offset = next_offset;
9948                } else {
9949                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9950                    inner_depth.increment()?;
9951                }
9952                let val_ref = self.association_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
9953                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
9954                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9955                {
9956                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9957                }
9958                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9959                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9960                }
9961            }
9962
9963            next_offset += envelope_size;
9964            _next_ordinal_to_read += 1;
9965            if next_offset >= end_offset {
9966                return Ok(());
9967            }
9968
9969            // Decode unknown envelopes for gaps in ordinals.
9970            while _next_ordinal_to_read < 6 {
9971                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9972                _next_ordinal_to_read += 1;
9973                next_offset += envelope_size;
9974            }
9975
9976            let next_out_of_line = decoder.next_out_of_line();
9977            let handles_before = decoder.remaining_handles();
9978            if let Some((inlined, num_bytes, num_handles)) =
9979                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9980            {
9981                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9982                if inlined != (member_inline_size <= 4) {
9983                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9984                }
9985                let inner_offset;
9986                let mut inner_depth = depth.clone();
9987                if inlined {
9988                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9989                    inner_offset = next_offset;
9990                } else {
9991                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9992                    inner_depth.increment()?;
9993                }
9994                let val_ref = self.association_ies.get_or_insert_with(|| {
9995                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
9996                });
9997                fidl::decode!(
9998                    fidl::encoding::UnboundedVector<u8>,
9999                    D,
10000                    val_ref,
10001                    decoder,
10002                    inner_offset,
10003                    inner_depth
10004                )?;
10005                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10006                {
10007                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10008                }
10009                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10010                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10011                }
10012            }
10013
10014            next_offset += envelope_size;
10015
10016            // Decode the remaining unknown envelopes.
10017            while next_offset < end_offset {
10018                _next_ordinal_to_read += 1;
10019                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10020                next_offset += envelope_size;
10021            }
10022
10023            Ok(())
10024        }
10025    }
10026
10027    impl WlanFullmacImplIfcRoamResultIndRequest {
10028        #[inline(always)]
10029        fn max_ordinal_present(&self) -> u64 {
10030            if let Some(_) = self.association_ies {
10031                return 6;
10032            }
10033            if let Some(_) = self.association_id {
10034                return 5;
10035            }
10036            if let Some(_) = self.target_bss_authenticated {
10037                return 4;
10038            }
10039            if let Some(_) = self.original_association_maintained {
10040                return 3;
10041            }
10042            if let Some(_) = self.status_code {
10043                return 2;
10044            }
10045            if let Some(_) = self.selected_bssid {
10046                return 1;
10047            }
10048            0
10049        }
10050    }
10051
10052    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcRoamResultIndRequest {
10053        type Borrowed<'a> = &'a Self;
10054        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10055            value
10056        }
10057    }
10058
10059    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcRoamResultIndRequest {
10060        type Owned = Self;
10061
10062        #[inline(always)]
10063        fn inline_align(_context: fidl::encoding::Context) -> usize {
10064            8
10065        }
10066
10067        #[inline(always)]
10068        fn inline_size(_context: fidl::encoding::Context) -> usize {
10069            16
10070        }
10071    }
10072
10073    unsafe impl<D: fidl::encoding::ResourceDialect>
10074        fidl::encoding::Encode<WlanFullmacImplIfcRoamResultIndRequest, D>
10075        for &WlanFullmacImplIfcRoamResultIndRequest
10076    {
10077        unsafe fn encode(
10078            self,
10079            encoder: &mut fidl::encoding::Encoder<'_, D>,
10080            offset: usize,
10081            mut depth: fidl::encoding::Depth,
10082        ) -> fidl::Result<()> {
10083            encoder.debug_check_bounds::<WlanFullmacImplIfcRoamResultIndRequest>(offset);
10084            // Vector header
10085            let max_ordinal: u64 = self.max_ordinal_present();
10086            encoder.write_num(max_ordinal, offset);
10087            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10088            // Calling encoder.out_of_line_offset(0) is not allowed.
10089            if max_ordinal == 0 {
10090                return Ok(());
10091            }
10092            depth.increment()?;
10093            let envelope_size = 8;
10094            let bytes_len = max_ordinal as usize * envelope_size;
10095            #[allow(unused_variables)]
10096            let offset = encoder.out_of_line_offset(bytes_len);
10097            let mut _prev_end_offset: usize = 0;
10098            if 1 > max_ordinal {
10099                return Ok(());
10100            }
10101
10102            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10103            // are envelope_size bytes.
10104            let cur_offset: usize = (1 - 1) * envelope_size;
10105
10106            // Zero reserved fields.
10107            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10108
10109            // Safety:
10110            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10111            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10112            //   envelope_size bytes, there is always sufficient room.
10113            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
10114                self.selected_bssid
10115                    .as_ref()
10116                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
10117                encoder,
10118                offset + cur_offset,
10119                depth,
10120            )?;
10121
10122            _prev_end_offset = cur_offset + envelope_size;
10123            if 2 > max_ordinal {
10124                return Ok(());
10125            }
10126
10127            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10128            // are envelope_size bytes.
10129            let cur_offset: usize = (2 - 1) * envelope_size;
10130
10131            // Zero reserved fields.
10132            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10133
10134            // Safety:
10135            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10136            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10137            //   envelope_size bytes, there is always sufficient room.
10138            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>(
10139            self.status_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
10140            encoder, offset + cur_offset, depth
10141        )?;
10142
10143            _prev_end_offset = cur_offset + envelope_size;
10144            if 3 > max_ordinal {
10145                return Ok(());
10146            }
10147
10148            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10149            // are envelope_size bytes.
10150            let cur_offset: usize = (3 - 1) * envelope_size;
10151
10152            // Zero reserved fields.
10153            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10154
10155            // Safety:
10156            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10157            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10158            //   envelope_size bytes, there is always sufficient room.
10159            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10160                self.original_association_maintained
10161                    .as_ref()
10162                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10163                encoder,
10164                offset + cur_offset,
10165                depth,
10166            )?;
10167
10168            _prev_end_offset = cur_offset + envelope_size;
10169            if 4 > max_ordinal {
10170                return Ok(());
10171            }
10172
10173            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10174            // are envelope_size bytes.
10175            let cur_offset: usize = (4 - 1) * envelope_size;
10176
10177            // Zero reserved fields.
10178            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10179
10180            // Safety:
10181            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10182            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10183            //   envelope_size bytes, there is always sufficient room.
10184            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10185                self.target_bss_authenticated
10186                    .as_ref()
10187                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10188                encoder,
10189                offset + cur_offset,
10190                depth,
10191            )?;
10192
10193            _prev_end_offset = cur_offset + envelope_size;
10194            if 5 > max_ordinal {
10195                return Ok(());
10196            }
10197
10198            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10199            // are envelope_size bytes.
10200            let cur_offset: usize = (5 - 1) * envelope_size;
10201
10202            // Zero reserved fields.
10203            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10204
10205            // Safety:
10206            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10207            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10208            //   envelope_size bytes, there is always sufficient room.
10209            fidl::encoding::encode_in_envelope_optional::<u16, D>(
10210                self.association_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
10211                encoder,
10212                offset + cur_offset,
10213                depth,
10214            )?;
10215
10216            _prev_end_offset = cur_offset + envelope_size;
10217            if 6 > max_ordinal {
10218                return Ok(());
10219            }
10220
10221            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10222            // are envelope_size bytes.
10223            let cur_offset: usize = (6 - 1) * envelope_size;
10224
10225            // Zero reserved fields.
10226            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10227
10228            // Safety:
10229            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10230            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10231            //   envelope_size bytes, there is always sufficient room.
10232            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
10233            self.association_ies.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
10234            encoder, offset + cur_offset, depth
10235        )?;
10236
10237            _prev_end_offset = cur_offset + envelope_size;
10238
10239            Ok(())
10240        }
10241    }
10242
10243    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10244        for WlanFullmacImplIfcRoamResultIndRequest
10245    {
10246        #[inline(always)]
10247        fn new_empty() -> Self {
10248            Self::default()
10249        }
10250
10251        unsafe fn decode(
10252            &mut self,
10253            decoder: &mut fidl::encoding::Decoder<'_, D>,
10254            offset: usize,
10255            mut depth: fidl::encoding::Depth,
10256        ) -> fidl::Result<()> {
10257            decoder.debug_check_bounds::<Self>(offset);
10258            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10259                None => return Err(fidl::Error::NotNullable),
10260                Some(len) => len,
10261            };
10262            // Calling decoder.out_of_line_offset(0) is not allowed.
10263            if len == 0 {
10264                return Ok(());
10265            };
10266            depth.increment()?;
10267            let envelope_size = 8;
10268            let bytes_len = len * envelope_size;
10269            let offset = decoder.out_of_line_offset(bytes_len)?;
10270            // Decode the envelope for each type.
10271            let mut _next_ordinal_to_read = 0;
10272            let mut next_offset = offset;
10273            let end_offset = offset + bytes_len;
10274            _next_ordinal_to_read += 1;
10275            if next_offset >= end_offset {
10276                return Ok(());
10277            }
10278
10279            // Decode unknown envelopes for gaps in ordinals.
10280            while _next_ordinal_to_read < 1 {
10281                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10282                _next_ordinal_to_read += 1;
10283                next_offset += envelope_size;
10284            }
10285
10286            let next_out_of_line = decoder.next_out_of_line();
10287            let handles_before = decoder.remaining_handles();
10288            if let Some((inlined, num_bytes, num_handles)) =
10289                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10290            {
10291                let member_inline_size =
10292                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
10293                        decoder.context,
10294                    );
10295                if inlined != (member_inline_size <= 4) {
10296                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10297                }
10298                let inner_offset;
10299                let mut inner_depth = depth.clone();
10300                if inlined {
10301                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10302                    inner_offset = next_offset;
10303                } else {
10304                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10305                    inner_depth.increment()?;
10306                }
10307                let val_ref = self
10308                    .selected_bssid
10309                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
10310                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
10311                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10312                {
10313                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10314                }
10315                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10316                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10317                }
10318            }
10319
10320            next_offset += envelope_size;
10321            _next_ordinal_to_read += 1;
10322            if next_offset >= end_offset {
10323                return Ok(());
10324            }
10325
10326            // Decode unknown envelopes for gaps in ordinals.
10327            while _next_ordinal_to_read < 2 {
10328                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10329                _next_ordinal_to_read += 1;
10330                next_offset += envelope_size;
10331            }
10332
10333            let next_out_of_line = decoder.next_out_of_line();
10334            let handles_before = decoder.remaining_handles();
10335            if let Some((inlined, num_bytes, num_handles)) =
10336                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10337            {
10338                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10339                if inlined != (member_inline_size <= 4) {
10340                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10341                }
10342                let inner_offset;
10343                let mut inner_depth = depth.clone();
10344                if inlined {
10345                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10346                    inner_offset = next_offset;
10347                } else {
10348                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10349                    inner_depth.increment()?;
10350                }
10351                let val_ref = self.status_code.get_or_insert_with(|| {
10352                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D)
10353                });
10354                fidl::decode!(
10355                    fidl_fuchsia_wlan_ieee80211__common::StatusCode,
10356                    D,
10357                    val_ref,
10358                    decoder,
10359                    inner_offset,
10360                    inner_depth
10361                )?;
10362                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10363                {
10364                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10365                }
10366                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10367                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10368                }
10369            }
10370
10371            next_offset += envelope_size;
10372            _next_ordinal_to_read += 1;
10373            if next_offset >= end_offset {
10374                return Ok(());
10375            }
10376
10377            // Decode unknown envelopes for gaps in ordinals.
10378            while _next_ordinal_to_read < 3 {
10379                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10380                _next_ordinal_to_read += 1;
10381                next_offset += envelope_size;
10382            }
10383
10384            let next_out_of_line = decoder.next_out_of_line();
10385            let handles_before = decoder.remaining_handles();
10386            if let Some((inlined, num_bytes, num_handles)) =
10387                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10388            {
10389                let member_inline_size =
10390                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10391                if inlined != (member_inline_size <= 4) {
10392                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10393                }
10394                let inner_offset;
10395                let mut inner_depth = depth.clone();
10396                if inlined {
10397                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10398                    inner_offset = next_offset;
10399                } else {
10400                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10401                    inner_depth.increment()?;
10402                }
10403                let val_ref = self
10404                    .original_association_maintained
10405                    .get_or_insert_with(|| fidl::new_empty!(bool, D));
10406                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10407                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10408                {
10409                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10410                }
10411                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10412                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10413                }
10414            }
10415
10416            next_offset += envelope_size;
10417            _next_ordinal_to_read += 1;
10418            if next_offset >= end_offset {
10419                return Ok(());
10420            }
10421
10422            // Decode unknown envelopes for gaps in ordinals.
10423            while _next_ordinal_to_read < 4 {
10424                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10425                _next_ordinal_to_read += 1;
10426                next_offset += envelope_size;
10427            }
10428
10429            let next_out_of_line = decoder.next_out_of_line();
10430            let handles_before = decoder.remaining_handles();
10431            if let Some((inlined, num_bytes, num_handles)) =
10432                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10433            {
10434                let member_inline_size =
10435                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10436                if inlined != (member_inline_size <= 4) {
10437                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10438                }
10439                let inner_offset;
10440                let mut inner_depth = depth.clone();
10441                if inlined {
10442                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10443                    inner_offset = next_offset;
10444                } else {
10445                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10446                    inner_depth.increment()?;
10447                }
10448                let val_ref =
10449                    self.target_bss_authenticated.get_or_insert_with(|| fidl::new_empty!(bool, D));
10450                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10451                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10452                {
10453                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10454                }
10455                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10456                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10457                }
10458            }
10459
10460            next_offset += envelope_size;
10461            _next_ordinal_to_read += 1;
10462            if next_offset >= end_offset {
10463                return Ok(());
10464            }
10465
10466            // Decode unknown envelopes for gaps in ordinals.
10467            while _next_ordinal_to_read < 5 {
10468                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10469                _next_ordinal_to_read += 1;
10470                next_offset += envelope_size;
10471            }
10472
10473            let next_out_of_line = decoder.next_out_of_line();
10474            let handles_before = decoder.remaining_handles();
10475            if let Some((inlined, num_bytes, num_handles)) =
10476                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10477            {
10478                let member_inline_size =
10479                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10480                if inlined != (member_inline_size <= 4) {
10481                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10482                }
10483                let inner_offset;
10484                let mut inner_depth = depth.clone();
10485                if inlined {
10486                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10487                    inner_offset = next_offset;
10488                } else {
10489                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10490                    inner_depth.increment()?;
10491                }
10492                let val_ref = self.association_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
10493                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
10494                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10495                {
10496                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10497                }
10498                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10499                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10500                }
10501            }
10502
10503            next_offset += envelope_size;
10504            _next_ordinal_to_read += 1;
10505            if next_offset >= end_offset {
10506                return Ok(());
10507            }
10508
10509            // Decode unknown envelopes for gaps in ordinals.
10510            while _next_ordinal_to_read < 6 {
10511                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10512                _next_ordinal_to_read += 1;
10513                next_offset += envelope_size;
10514            }
10515
10516            let next_out_of_line = decoder.next_out_of_line();
10517            let handles_before = decoder.remaining_handles();
10518            if let Some((inlined, num_bytes, num_handles)) =
10519                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10520            {
10521                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10522                if inlined != (member_inline_size <= 4) {
10523                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10524                }
10525                let inner_offset;
10526                let mut inner_depth = depth.clone();
10527                if inlined {
10528                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10529                    inner_offset = next_offset;
10530                } else {
10531                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10532                    inner_depth.increment()?;
10533                }
10534                let val_ref = self.association_ies.get_or_insert_with(|| {
10535                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
10536                });
10537                fidl::decode!(
10538                    fidl::encoding::UnboundedVector<u8>,
10539                    D,
10540                    val_ref,
10541                    decoder,
10542                    inner_offset,
10543                    inner_depth
10544                )?;
10545                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10546                {
10547                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10548                }
10549                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10550                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10551                }
10552            }
10553
10554            next_offset += envelope_size;
10555
10556            // Decode the remaining unknown envelopes.
10557            while next_offset < end_offset {
10558                _next_ordinal_to_read += 1;
10559                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10560                next_offset += envelope_size;
10561            }
10562
10563            Ok(())
10564        }
10565    }
10566
10567    impl WlanFullmacImplIfcRoamStartIndRequest {
10568        #[inline(always)]
10569        fn max_ordinal_present(&self) -> u64 {
10570            if let Some(_) = self.original_association_maintained {
10571                return 3;
10572            }
10573            if let Some(_) = self.selected_bss {
10574                return 2;
10575            }
10576            if let Some(_) = self.selected_bssid {
10577                return 1;
10578            }
10579            0
10580        }
10581    }
10582
10583    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcRoamStartIndRequest {
10584        type Borrowed<'a> = &'a Self;
10585        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10586            value
10587        }
10588    }
10589
10590    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcRoamStartIndRequest {
10591        type Owned = Self;
10592
10593        #[inline(always)]
10594        fn inline_align(_context: fidl::encoding::Context) -> usize {
10595            8
10596        }
10597
10598        #[inline(always)]
10599        fn inline_size(_context: fidl::encoding::Context) -> usize {
10600            16
10601        }
10602    }
10603
10604    unsafe impl<D: fidl::encoding::ResourceDialect>
10605        fidl::encoding::Encode<WlanFullmacImplIfcRoamStartIndRequest, D>
10606        for &WlanFullmacImplIfcRoamStartIndRequest
10607    {
10608        unsafe fn encode(
10609            self,
10610            encoder: &mut fidl::encoding::Encoder<'_, D>,
10611            offset: usize,
10612            mut depth: fidl::encoding::Depth,
10613        ) -> fidl::Result<()> {
10614            encoder.debug_check_bounds::<WlanFullmacImplIfcRoamStartIndRequest>(offset);
10615            // Vector header
10616            let max_ordinal: u64 = self.max_ordinal_present();
10617            encoder.write_num(max_ordinal, offset);
10618            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10619            // Calling encoder.out_of_line_offset(0) is not allowed.
10620            if max_ordinal == 0 {
10621                return Ok(());
10622            }
10623            depth.increment()?;
10624            let envelope_size = 8;
10625            let bytes_len = max_ordinal as usize * envelope_size;
10626            #[allow(unused_variables)]
10627            let offset = encoder.out_of_line_offset(bytes_len);
10628            let mut _prev_end_offset: usize = 0;
10629            if 1 > max_ordinal {
10630                return Ok(());
10631            }
10632
10633            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10634            // are envelope_size bytes.
10635            let cur_offset: usize = (1 - 1) * envelope_size;
10636
10637            // Zero reserved fields.
10638            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10639
10640            // Safety:
10641            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10642            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10643            //   envelope_size bytes, there is always sufficient room.
10644            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
10645                self.selected_bssid
10646                    .as_ref()
10647                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
10648                encoder,
10649                offset + cur_offset,
10650                depth,
10651            )?;
10652
10653            _prev_end_offset = cur_offset + envelope_size;
10654            if 2 > max_ordinal {
10655                return Ok(());
10656            }
10657
10658            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10659            // are envelope_size bytes.
10660            let cur_offset: usize = (2 - 1) * envelope_size;
10661
10662            // Zero reserved fields.
10663            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10664
10665            // Safety:
10666            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10667            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10668            //   envelope_size bytes, there is always sufficient room.
10669            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common__common::BssDescription, D>(
10670            self.selected_bss.as_ref().map(<fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow),
10671            encoder, offset + cur_offset, depth
10672        )?;
10673
10674            _prev_end_offset = cur_offset + envelope_size;
10675            if 3 > max_ordinal {
10676                return Ok(());
10677            }
10678
10679            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10680            // are envelope_size bytes.
10681            let cur_offset: usize = (3 - 1) * envelope_size;
10682
10683            // Zero reserved fields.
10684            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10685
10686            // Safety:
10687            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10688            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10689            //   envelope_size bytes, there is always sufficient room.
10690            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10691                self.original_association_maintained
10692                    .as_ref()
10693                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10694                encoder,
10695                offset + cur_offset,
10696                depth,
10697            )?;
10698
10699            _prev_end_offset = cur_offset + envelope_size;
10700
10701            Ok(())
10702        }
10703    }
10704
10705    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10706        for WlanFullmacImplIfcRoamStartIndRequest
10707    {
10708        #[inline(always)]
10709        fn new_empty() -> Self {
10710            Self::default()
10711        }
10712
10713        unsafe fn decode(
10714            &mut self,
10715            decoder: &mut fidl::encoding::Decoder<'_, D>,
10716            offset: usize,
10717            mut depth: fidl::encoding::Depth,
10718        ) -> fidl::Result<()> {
10719            decoder.debug_check_bounds::<Self>(offset);
10720            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10721                None => return Err(fidl::Error::NotNullable),
10722                Some(len) => len,
10723            };
10724            // Calling decoder.out_of_line_offset(0) is not allowed.
10725            if len == 0 {
10726                return Ok(());
10727            };
10728            depth.increment()?;
10729            let envelope_size = 8;
10730            let bytes_len = len * envelope_size;
10731            let offset = decoder.out_of_line_offset(bytes_len)?;
10732            // Decode the envelope for each type.
10733            let mut _next_ordinal_to_read = 0;
10734            let mut next_offset = offset;
10735            let end_offset = offset + bytes_len;
10736            _next_ordinal_to_read += 1;
10737            if next_offset >= end_offset {
10738                return Ok(());
10739            }
10740
10741            // Decode unknown envelopes for gaps in ordinals.
10742            while _next_ordinal_to_read < 1 {
10743                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10744                _next_ordinal_to_read += 1;
10745                next_offset += envelope_size;
10746            }
10747
10748            let next_out_of_line = decoder.next_out_of_line();
10749            let handles_before = decoder.remaining_handles();
10750            if let Some((inlined, num_bytes, num_handles)) =
10751                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10752            {
10753                let member_inline_size =
10754                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
10755                        decoder.context,
10756                    );
10757                if inlined != (member_inline_size <= 4) {
10758                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10759                }
10760                let inner_offset;
10761                let mut inner_depth = depth.clone();
10762                if inlined {
10763                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10764                    inner_offset = next_offset;
10765                } else {
10766                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10767                    inner_depth.increment()?;
10768                }
10769                let val_ref = self
10770                    .selected_bssid
10771                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
10772                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
10773                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10774                {
10775                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10776                }
10777                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10778                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10779                }
10780            }
10781
10782            next_offset += envelope_size;
10783            _next_ordinal_to_read += 1;
10784            if next_offset >= end_offset {
10785                return Ok(());
10786            }
10787
10788            // Decode unknown envelopes for gaps in ordinals.
10789            while _next_ordinal_to_read < 2 {
10790                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10791                _next_ordinal_to_read += 1;
10792                next_offset += envelope_size;
10793            }
10794
10795            let next_out_of_line = decoder.next_out_of_line();
10796            let handles_before = decoder.remaining_handles();
10797            if let Some((inlined, num_bytes, num_handles)) =
10798                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10799            {
10800                let member_inline_size = <fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10801                if inlined != (member_inline_size <= 4) {
10802                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10803                }
10804                let inner_offset;
10805                let mut inner_depth = depth.clone();
10806                if inlined {
10807                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10808                    inner_offset = next_offset;
10809                } else {
10810                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10811                    inner_depth.increment()?;
10812                }
10813                let val_ref = self.selected_bss.get_or_insert_with(|| {
10814                    fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssDescription, D)
10815                });
10816                fidl::decode!(
10817                    fidl_fuchsia_wlan_common__common::BssDescription,
10818                    D,
10819                    val_ref,
10820                    decoder,
10821                    inner_offset,
10822                    inner_depth
10823                )?;
10824                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10825                {
10826                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10827                }
10828                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10829                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10830                }
10831            }
10832
10833            next_offset += envelope_size;
10834            _next_ordinal_to_read += 1;
10835            if next_offset >= end_offset {
10836                return Ok(());
10837            }
10838
10839            // Decode unknown envelopes for gaps in ordinals.
10840            while _next_ordinal_to_read < 3 {
10841                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10842                _next_ordinal_to_read += 1;
10843                next_offset += envelope_size;
10844            }
10845
10846            let next_out_of_line = decoder.next_out_of_line();
10847            let handles_before = decoder.remaining_handles();
10848            if let Some((inlined, num_bytes, num_handles)) =
10849                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10850            {
10851                let member_inline_size =
10852                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10853                if inlined != (member_inline_size <= 4) {
10854                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10855                }
10856                let inner_offset;
10857                let mut inner_depth = depth.clone();
10858                if inlined {
10859                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10860                    inner_offset = next_offset;
10861                } else {
10862                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10863                    inner_depth.increment()?;
10864                }
10865                let val_ref = self
10866                    .original_association_maintained
10867                    .get_or_insert_with(|| fidl::new_empty!(bool, D));
10868                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10869                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10870                {
10871                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10872                }
10873                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10874                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10875                }
10876            }
10877
10878            next_offset += envelope_size;
10879
10880            // Decode the remaining unknown envelopes.
10881            while next_offset < end_offset {
10882                _next_ordinal_to_read += 1;
10883                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10884                next_offset += envelope_size;
10885            }
10886
10887            Ok(())
10888        }
10889    }
10890
10891    impl WlanFullmacImplIfcSaeHandshakeIndRequest {
10892        #[inline(always)]
10893        fn max_ordinal_present(&self) -> u64 {
10894            if let Some(_) = self.peer_sta_address {
10895                return 1;
10896            }
10897            0
10898        }
10899    }
10900
10901    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcSaeHandshakeIndRequest {
10902        type Borrowed<'a> = &'a Self;
10903        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10904            value
10905        }
10906    }
10907
10908    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcSaeHandshakeIndRequest {
10909        type Owned = Self;
10910
10911        #[inline(always)]
10912        fn inline_align(_context: fidl::encoding::Context) -> usize {
10913            8
10914        }
10915
10916        #[inline(always)]
10917        fn inline_size(_context: fidl::encoding::Context) -> usize {
10918            16
10919        }
10920    }
10921
10922    unsafe impl<D: fidl::encoding::ResourceDialect>
10923        fidl::encoding::Encode<WlanFullmacImplIfcSaeHandshakeIndRequest, D>
10924        for &WlanFullmacImplIfcSaeHandshakeIndRequest
10925    {
10926        unsafe fn encode(
10927            self,
10928            encoder: &mut fidl::encoding::Encoder<'_, D>,
10929            offset: usize,
10930            mut depth: fidl::encoding::Depth,
10931        ) -> fidl::Result<()> {
10932            encoder.debug_check_bounds::<WlanFullmacImplIfcSaeHandshakeIndRequest>(offset);
10933            // Vector header
10934            let max_ordinal: u64 = self.max_ordinal_present();
10935            encoder.write_num(max_ordinal, offset);
10936            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10937            // Calling encoder.out_of_line_offset(0) is not allowed.
10938            if max_ordinal == 0 {
10939                return Ok(());
10940            }
10941            depth.increment()?;
10942            let envelope_size = 8;
10943            let bytes_len = max_ordinal as usize * envelope_size;
10944            #[allow(unused_variables)]
10945            let offset = encoder.out_of_line_offset(bytes_len);
10946            let mut _prev_end_offset: usize = 0;
10947            if 1 > max_ordinal {
10948                return Ok(());
10949            }
10950
10951            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10952            // are envelope_size bytes.
10953            let cur_offset: usize = (1 - 1) * envelope_size;
10954
10955            // Zero reserved fields.
10956            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10957
10958            // Safety:
10959            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10960            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10961            //   envelope_size bytes, there is always sufficient room.
10962            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
10963                self.peer_sta_address
10964                    .as_ref()
10965                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
10966                encoder,
10967                offset + cur_offset,
10968                depth,
10969            )?;
10970
10971            _prev_end_offset = cur_offset + envelope_size;
10972
10973            Ok(())
10974        }
10975    }
10976
10977    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10978        for WlanFullmacImplIfcSaeHandshakeIndRequest
10979    {
10980        #[inline(always)]
10981        fn new_empty() -> Self {
10982            Self::default()
10983        }
10984
10985        unsafe fn decode(
10986            &mut self,
10987            decoder: &mut fidl::encoding::Decoder<'_, D>,
10988            offset: usize,
10989            mut depth: fidl::encoding::Depth,
10990        ) -> fidl::Result<()> {
10991            decoder.debug_check_bounds::<Self>(offset);
10992            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10993                None => return Err(fidl::Error::NotNullable),
10994                Some(len) => len,
10995            };
10996            // Calling decoder.out_of_line_offset(0) is not allowed.
10997            if len == 0 {
10998                return Ok(());
10999            };
11000            depth.increment()?;
11001            let envelope_size = 8;
11002            let bytes_len = len * envelope_size;
11003            let offset = decoder.out_of_line_offset(bytes_len)?;
11004            // Decode the envelope for each type.
11005            let mut _next_ordinal_to_read = 0;
11006            let mut next_offset = offset;
11007            let end_offset = offset + bytes_len;
11008            _next_ordinal_to_read += 1;
11009            if next_offset >= end_offset {
11010                return Ok(());
11011            }
11012
11013            // Decode unknown envelopes for gaps in ordinals.
11014            while _next_ordinal_to_read < 1 {
11015                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11016                _next_ordinal_to_read += 1;
11017                next_offset += envelope_size;
11018            }
11019
11020            let next_out_of_line = decoder.next_out_of_line();
11021            let handles_before = decoder.remaining_handles();
11022            if let Some((inlined, num_bytes, num_handles)) =
11023                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11024            {
11025                let member_inline_size =
11026                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
11027                        decoder.context,
11028                    );
11029                if inlined != (member_inline_size <= 4) {
11030                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11031                }
11032                let inner_offset;
11033                let mut inner_depth = depth.clone();
11034                if inlined {
11035                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11036                    inner_offset = next_offset;
11037                } else {
11038                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11039                    inner_depth.increment()?;
11040                }
11041                let val_ref = self
11042                    .peer_sta_address
11043                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
11044                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
11045                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11046                {
11047                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11048                }
11049                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11050                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11051                }
11052            }
11053
11054            next_offset += envelope_size;
11055
11056            // Decode the remaining unknown envelopes.
11057            while next_offset < end_offset {
11058                _next_ordinal_to_read += 1;
11059                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11060                next_offset += envelope_size;
11061            }
11062
11063            Ok(())
11064        }
11065    }
11066
11067    impl WlanFullmacImplIfcStartConfRequest {
11068        #[inline(always)]
11069        fn max_ordinal_present(&self) -> u64 {
11070            if let Some(_) = self.result_code {
11071                return 1;
11072            }
11073            0
11074        }
11075    }
11076
11077    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcStartConfRequest {
11078        type Borrowed<'a> = &'a Self;
11079        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11080            value
11081        }
11082    }
11083
11084    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcStartConfRequest {
11085        type Owned = Self;
11086
11087        #[inline(always)]
11088        fn inline_align(_context: fidl::encoding::Context) -> usize {
11089            8
11090        }
11091
11092        #[inline(always)]
11093        fn inline_size(_context: fidl::encoding::Context) -> usize {
11094            16
11095        }
11096    }
11097
11098    unsafe impl<D: fidl::encoding::ResourceDialect>
11099        fidl::encoding::Encode<WlanFullmacImplIfcStartConfRequest, D>
11100        for &WlanFullmacImplIfcStartConfRequest
11101    {
11102        unsafe fn encode(
11103            self,
11104            encoder: &mut fidl::encoding::Encoder<'_, D>,
11105            offset: usize,
11106            mut depth: fidl::encoding::Depth,
11107        ) -> fidl::Result<()> {
11108            encoder.debug_check_bounds::<WlanFullmacImplIfcStartConfRequest>(offset);
11109            // Vector header
11110            let max_ordinal: u64 = self.max_ordinal_present();
11111            encoder.write_num(max_ordinal, offset);
11112            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11113            // Calling encoder.out_of_line_offset(0) is not allowed.
11114            if max_ordinal == 0 {
11115                return Ok(());
11116            }
11117            depth.increment()?;
11118            let envelope_size = 8;
11119            let bytes_len = max_ordinal as usize * envelope_size;
11120            #[allow(unused_variables)]
11121            let offset = encoder.out_of_line_offset(bytes_len);
11122            let mut _prev_end_offset: usize = 0;
11123            if 1 > max_ordinal {
11124                return Ok(());
11125            }
11126
11127            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11128            // are envelope_size bytes.
11129            let cur_offset: usize = (1 - 1) * envelope_size;
11130
11131            // Zero reserved fields.
11132            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11133
11134            // Safety:
11135            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11136            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11137            //   envelope_size bytes, there is always sufficient room.
11138            fidl::encoding::encode_in_envelope_optional::<StartResult, D>(
11139                self.result_code
11140                    .as_ref()
11141                    .map(<StartResult as fidl::encoding::ValueTypeMarker>::borrow),
11142                encoder,
11143                offset + cur_offset,
11144                depth,
11145            )?;
11146
11147            _prev_end_offset = cur_offset + envelope_size;
11148
11149            Ok(())
11150        }
11151    }
11152
11153    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11154        for WlanFullmacImplIfcStartConfRequest
11155    {
11156        #[inline(always)]
11157        fn new_empty() -> Self {
11158            Self::default()
11159        }
11160
11161        unsafe fn decode(
11162            &mut self,
11163            decoder: &mut fidl::encoding::Decoder<'_, D>,
11164            offset: usize,
11165            mut depth: fidl::encoding::Depth,
11166        ) -> fidl::Result<()> {
11167            decoder.debug_check_bounds::<Self>(offset);
11168            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11169                None => return Err(fidl::Error::NotNullable),
11170                Some(len) => len,
11171            };
11172            // Calling decoder.out_of_line_offset(0) is not allowed.
11173            if len == 0 {
11174                return Ok(());
11175            };
11176            depth.increment()?;
11177            let envelope_size = 8;
11178            let bytes_len = len * envelope_size;
11179            let offset = decoder.out_of_line_offset(bytes_len)?;
11180            // Decode the envelope for each type.
11181            let mut _next_ordinal_to_read = 0;
11182            let mut next_offset = offset;
11183            let end_offset = offset + bytes_len;
11184            _next_ordinal_to_read += 1;
11185            if next_offset >= end_offset {
11186                return Ok(());
11187            }
11188
11189            // Decode unknown envelopes for gaps in ordinals.
11190            while _next_ordinal_to_read < 1 {
11191                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11192                _next_ordinal_to_read += 1;
11193                next_offset += envelope_size;
11194            }
11195
11196            let next_out_of_line = decoder.next_out_of_line();
11197            let handles_before = decoder.remaining_handles();
11198            if let Some((inlined, num_bytes, num_handles)) =
11199                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11200            {
11201                let member_inline_size =
11202                    <StartResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11203                if inlined != (member_inline_size <= 4) {
11204                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11205                }
11206                let inner_offset;
11207                let mut inner_depth = depth.clone();
11208                if inlined {
11209                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11210                    inner_offset = next_offset;
11211                } else {
11212                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11213                    inner_depth.increment()?;
11214                }
11215                let val_ref =
11216                    self.result_code.get_or_insert_with(|| fidl::new_empty!(StartResult, D));
11217                fidl::decode!(StartResult, D, val_ref, decoder, inner_offset, inner_depth)?;
11218                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11219                {
11220                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11221                }
11222                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11223                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11224                }
11225            }
11226
11227            next_offset += envelope_size;
11228
11229            // Decode the remaining unknown envelopes.
11230            while next_offset < end_offset {
11231                _next_ordinal_to_read += 1;
11232                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11233                next_offset += envelope_size;
11234            }
11235
11236            Ok(())
11237        }
11238    }
11239
11240    impl WlanFullmacImplIfcStopConfRequest {
11241        #[inline(always)]
11242        fn max_ordinal_present(&self) -> u64 {
11243            if let Some(_) = self.result_code {
11244                return 1;
11245            }
11246            0
11247        }
11248    }
11249
11250    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcStopConfRequest {
11251        type Borrowed<'a> = &'a Self;
11252        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11253            value
11254        }
11255    }
11256
11257    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcStopConfRequest {
11258        type Owned = Self;
11259
11260        #[inline(always)]
11261        fn inline_align(_context: fidl::encoding::Context) -> usize {
11262            8
11263        }
11264
11265        #[inline(always)]
11266        fn inline_size(_context: fidl::encoding::Context) -> usize {
11267            16
11268        }
11269    }
11270
11271    unsafe impl<D: fidl::encoding::ResourceDialect>
11272        fidl::encoding::Encode<WlanFullmacImplIfcStopConfRequest, D>
11273        for &WlanFullmacImplIfcStopConfRequest
11274    {
11275        unsafe fn encode(
11276            self,
11277            encoder: &mut fidl::encoding::Encoder<'_, D>,
11278            offset: usize,
11279            mut depth: fidl::encoding::Depth,
11280        ) -> fidl::Result<()> {
11281            encoder.debug_check_bounds::<WlanFullmacImplIfcStopConfRequest>(offset);
11282            // Vector header
11283            let max_ordinal: u64 = self.max_ordinal_present();
11284            encoder.write_num(max_ordinal, offset);
11285            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11286            // Calling encoder.out_of_line_offset(0) is not allowed.
11287            if max_ordinal == 0 {
11288                return Ok(());
11289            }
11290            depth.increment()?;
11291            let envelope_size = 8;
11292            let bytes_len = max_ordinal as usize * envelope_size;
11293            #[allow(unused_variables)]
11294            let offset = encoder.out_of_line_offset(bytes_len);
11295            let mut _prev_end_offset: usize = 0;
11296            if 1 > max_ordinal {
11297                return Ok(());
11298            }
11299
11300            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11301            // are envelope_size bytes.
11302            let cur_offset: usize = (1 - 1) * envelope_size;
11303
11304            // Zero reserved fields.
11305            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11306
11307            // Safety:
11308            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11309            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11310            //   envelope_size bytes, there is always sufficient room.
11311            fidl::encoding::encode_in_envelope_optional::<StopResult, D>(
11312                self.result_code
11313                    .as_ref()
11314                    .map(<StopResult as fidl::encoding::ValueTypeMarker>::borrow),
11315                encoder,
11316                offset + cur_offset,
11317                depth,
11318            )?;
11319
11320            _prev_end_offset = cur_offset + envelope_size;
11321
11322            Ok(())
11323        }
11324    }
11325
11326    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11327        for WlanFullmacImplIfcStopConfRequest
11328    {
11329        #[inline(always)]
11330        fn new_empty() -> Self {
11331            Self::default()
11332        }
11333
11334        unsafe fn decode(
11335            &mut self,
11336            decoder: &mut fidl::encoding::Decoder<'_, D>,
11337            offset: usize,
11338            mut depth: fidl::encoding::Depth,
11339        ) -> fidl::Result<()> {
11340            decoder.debug_check_bounds::<Self>(offset);
11341            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11342                None => return Err(fidl::Error::NotNullable),
11343                Some(len) => len,
11344            };
11345            // Calling decoder.out_of_line_offset(0) is not allowed.
11346            if len == 0 {
11347                return Ok(());
11348            };
11349            depth.increment()?;
11350            let envelope_size = 8;
11351            let bytes_len = len * envelope_size;
11352            let offset = decoder.out_of_line_offset(bytes_len)?;
11353            // Decode the envelope for each type.
11354            let mut _next_ordinal_to_read = 0;
11355            let mut next_offset = offset;
11356            let end_offset = offset + bytes_len;
11357            _next_ordinal_to_read += 1;
11358            if next_offset >= end_offset {
11359                return Ok(());
11360            }
11361
11362            // Decode unknown envelopes for gaps in ordinals.
11363            while _next_ordinal_to_read < 1 {
11364                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11365                _next_ordinal_to_read += 1;
11366                next_offset += envelope_size;
11367            }
11368
11369            let next_out_of_line = decoder.next_out_of_line();
11370            let handles_before = decoder.remaining_handles();
11371            if let Some((inlined, num_bytes, num_handles)) =
11372                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11373            {
11374                let member_inline_size =
11375                    <StopResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11376                if inlined != (member_inline_size <= 4) {
11377                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11378                }
11379                let inner_offset;
11380                let mut inner_depth = depth.clone();
11381                if inlined {
11382                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11383                    inner_offset = next_offset;
11384                } else {
11385                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11386                    inner_depth.increment()?;
11387                }
11388                let val_ref =
11389                    self.result_code.get_or_insert_with(|| fidl::new_empty!(StopResult, D));
11390                fidl::decode!(StopResult, D, val_ref, decoder, inner_offset, inner_depth)?;
11391                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11392                {
11393                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11394                }
11395                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11396                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11397                }
11398            }
11399
11400            next_offset += envelope_size;
11401
11402            // Decode the remaining unknown envelopes.
11403            while next_offset < end_offset {
11404                _next_ordinal_to_read += 1;
11405                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11406                next_offset += envelope_size;
11407            }
11408
11409            Ok(())
11410        }
11411    }
11412
11413    impl WlanFullmacImplOnLinkStateChangedRequest {
11414        #[inline(always)]
11415        fn max_ordinal_present(&self) -> u64 {
11416            if let Some(_) = self.online {
11417                return 1;
11418            }
11419            0
11420        }
11421    }
11422
11423    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplOnLinkStateChangedRequest {
11424        type Borrowed<'a> = &'a Self;
11425        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11426            value
11427        }
11428    }
11429
11430    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplOnLinkStateChangedRequest {
11431        type Owned = Self;
11432
11433        #[inline(always)]
11434        fn inline_align(_context: fidl::encoding::Context) -> usize {
11435            8
11436        }
11437
11438        #[inline(always)]
11439        fn inline_size(_context: fidl::encoding::Context) -> usize {
11440            16
11441        }
11442    }
11443
11444    unsafe impl<D: fidl::encoding::ResourceDialect>
11445        fidl::encoding::Encode<WlanFullmacImplOnLinkStateChangedRequest, D>
11446        for &WlanFullmacImplOnLinkStateChangedRequest
11447    {
11448        unsafe fn encode(
11449            self,
11450            encoder: &mut fidl::encoding::Encoder<'_, D>,
11451            offset: usize,
11452            mut depth: fidl::encoding::Depth,
11453        ) -> fidl::Result<()> {
11454            encoder.debug_check_bounds::<WlanFullmacImplOnLinkStateChangedRequest>(offset);
11455            // Vector header
11456            let max_ordinal: u64 = self.max_ordinal_present();
11457            encoder.write_num(max_ordinal, offset);
11458            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11459            // Calling encoder.out_of_line_offset(0) is not allowed.
11460            if max_ordinal == 0 {
11461                return Ok(());
11462            }
11463            depth.increment()?;
11464            let envelope_size = 8;
11465            let bytes_len = max_ordinal as usize * envelope_size;
11466            #[allow(unused_variables)]
11467            let offset = encoder.out_of_line_offset(bytes_len);
11468            let mut _prev_end_offset: usize = 0;
11469            if 1 > max_ordinal {
11470                return Ok(());
11471            }
11472
11473            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11474            // are envelope_size bytes.
11475            let cur_offset: usize = (1 - 1) * envelope_size;
11476
11477            // Zero reserved fields.
11478            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11479
11480            // Safety:
11481            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11482            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11483            //   envelope_size bytes, there is always sufficient room.
11484            fidl::encoding::encode_in_envelope_optional::<bool, D>(
11485                self.online.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
11486                encoder,
11487                offset + cur_offset,
11488                depth,
11489            )?;
11490
11491            _prev_end_offset = cur_offset + envelope_size;
11492
11493            Ok(())
11494        }
11495    }
11496
11497    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11498        for WlanFullmacImplOnLinkStateChangedRequest
11499    {
11500        #[inline(always)]
11501        fn new_empty() -> Self {
11502            Self::default()
11503        }
11504
11505        unsafe fn decode(
11506            &mut self,
11507            decoder: &mut fidl::encoding::Decoder<'_, D>,
11508            offset: usize,
11509            mut depth: fidl::encoding::Depth,
11510        ) -> fidl::Result<()> {
11511            decoder.debug_check_bounds::<Self>(offset);
11512            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11513                None => return Err(fidl::Error::NotNullable),
11514                Some(len) => len,
11515            };
11516            // Calling decoder.out_of_line_offset(0) is not allowed.
11517            if len == 0 {
11518                return Ok(());
11519            };
11520            depth.increment()?;
11521            let envelope_size = 8;
11522            let bytes_len = len * envelope_size;
11523            let offset = decoder.out_of_line_offset(bytes_len)?;
11524            // Decode the envelope for each type.
11525            let mut _next_ordinal_to_read = 0;
11526            let mut next_offset = offset;
11527            let end_offset = offset + bytes_len;
11528            _next_ordinal_to_read += 1;
11529            if next_offset >= end_offset {
11530                return Ok(());
11531            }
11532
11533            // Decode unknown envelopes for gaps in ordinals.
11534            while _next_ordinal_to_read < 1 {
11535                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11536                _next_ordinal_to_read += 1;
11537                next_offset += envelope_size;
11538            }
11539
11540            let next_out_of_line = decoder.next_out_of_line();
11541            let handles_before = decoder.remaining_handles();
11542            if let Some((inlined, num_bytes, num_handles)) =
11543                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11544            {
11545                let member_inline_size =
11546                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11547                if inlined != (member_inline_size <= 4) {
11548                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11549                }
11550                let inner_offset;
11551                let mut inner_depth = depth.clone();
11552                if inlined {
11553                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11554                    inner_offset = next_offset;
11555                } else {
11556                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11557                    inner_depth.increment()?;
11558                }
11559                let val_ref = self.online.get_or_insert_with(|| fidl::new_empty!(bool, D));
11560                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
11561                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11562                {
11563                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11564                }
11565                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11566                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11567                }
11568            }
11569
11570            next_offset += envelope_size;
11571
11572            // Decode the remaining unknown envelopes.
11573            while next_offset < end_offset {
11574                _next_ordinal_to_read += 1;
11575                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11576                next_offset += envelope_size;
11577            }
11578
11579            Ok(())
11580        }
11581    }
11582
11583    impl WlanFullmacImplReconnectRequest {
11584        #[inline(always)]
11585        fn max_ordinal_present(&self) -> u64 {
11586            if let Some(_) = self.peer_sta_address {
11587                return 1;
11588            }
11589            0
11590        }
11591    }
11592
11593    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplReconnectRequest {
11594        type Borrowed<'a> = &'a Self;
11595        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11596            value
11597        }
11598    }
11599
11600    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplReconnectRequest {
11601        type Owned = Self;
11602
11603        #[inline(always)]
11604        fn inline_align(_context: fidl::encoding::Context) -> usize {
11605            8
11606        }
11607
11608        #[inline(always)]
11609        fn inline_size(_context: fidl::encoding::Context) -> usize {
11610            16
11611        }
11612    }
11613
11614    unsafe impl<D: fidl::encoding::ResourceDialect>
11615        fidl::encoding::Encode<WlanFullmacImplReconnectRequest, D>
11616        for &WlanFullmacImplReconnectRequest
11617    {
11618        unsafe fn encode(
11619            self,
11620            encoder: &mut fidl::encoding::Encoder<'_, D>,
11621            offset: usize,
11622            mut depth: fidl::encoding::Depth,
11623        ) -> fidl::Result<()> {
11624            encoder.debug_check_bounds::<WlanFullmacImplReconnectRequest>(offset);
11625            // Vector header
11626            let max_ordinal: u64 = self.max_ordinal_present();
11627            encoder.write_num(max_ordinal, offset);
11628            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11629            // Calling encoder.out_of_line_offset(0) is not allowed.
11630            if max_ordinal == 0 {
11631                return Ok(());
11632            }
11633            depth.increment()?;
11634            let envelope_size = 8;
11635            let bytes_len = max_ordinal as usize * envelope_size;
11636            #[allow(unused_variables)]
11637            let offset = encoder.out_of_line_offset(bytes_len);
11638            let mut _prev_end_offset: usize = 0;
11639            if 1 > max_ordinal {
11640                return Ok(());
11641            }
11642
11643            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11644            // are envelope_size bytes.
11645            let cur_offset: usize = (1 - 1) * envelope_size;
11646
11647            // Zero reserved fields.
11648            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11649
11650            // Safety:
11651            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11652            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11653            //   envelope_size bytes, there is always sufficient room.
11654            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
11655                self.peer_sta_address
11656                    .as_ref()
11657                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
11658                encoder,
11659                offset + cur_offset,
11660                depth,
11661            )?;
11662
11663            _prev_end_offset = cur_offset + envelope_size;
11664
11665            Ok(())
11666        }
11667    }
11668
11669    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11670        for WlanFullmacImplReconnectRequest
11671    {
11672        #[inline(always)]
11673        fn new_empty() -> Self {
11674            Self::default()
11675        }
11676
11677        unsafe fn decode(
11678            &mut self,
11679            decoder: &mut fidl::encoding::Decoder<'_, D>,
11680            offset: usize,
11681            mut depth: fidl::encoding::Depth,
11682        ) -> fidl::Result<()> {
11683            decoder.debug_check_bounds::<Self>(offset);
11684            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11685                None => return Err(fidl::Error::NotNullable),
11686                Some(len) => len,
11687            };
11688            // Calling decoder.out_of_line_offset(0) is not allowed.
11689            if len == 0 {
11690                return Ok(());
11691            };
11692            depth.increment()?;
11693            let envelope_size = 8;
11694            let bytes_len = len * envelope_size;
11695            let offset = decoder.out_of_line_offset(bytes_len)?;
11696            // Decode the envelope for each type.
11697            let mut _next_ordinal_to_read = 0;
11698            let mut next_offset = offset;
11699            let end_offset = offset + bytes_len;
11700            _next_ordinal_to_read += 1;
11701            if next_offset >= end_offset {
11702                return Ok(());
11703            }
11704
11705            // Decode unknown envelopes for gaps in ordinals.
11706            while _next_ordinal_to_read < 1 {
11707                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11708                _next_ordinal_to_read += 1;
11709                next_offset += envelope_size;
11710            }
11711
11712            let next_out_of_line = decoder.next_out_of_line();
11713            let handles_before = decoder.remaining_handles();
11714            if let Some((inlined, num_bytes, num_handles)) =
11715                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11716            {
11717                let member_inline_size =
11718                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
11719                        decoder.context,
11720                    );
11721                if inlined != (member_inline_size <= 4) {
11722                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11723                }
11724                let inner_offset;
11725                let mut inner_depth = depth.clone();
11726                if inlined {
11727                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11728                    inner_offset = next_offset;
11729                } else {
11730                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11731                    inner_depth.increment()?;
11732                }
11733                let val_ref = self
11734                    .peer_sta_address
11735                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
11736                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
11737                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11738                {
11739                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11740                }
11741                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11742                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11743                }
11744            }
11745
11746            next_offset += envelope_size;
11747
11748            // Decode the remaining unknown envelopes.
11749            while next_offset < end_offset {
11750                _next_ordinal_to_read += 1;
11751                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11752                next_offset += envelope_size;
11753            }
11754
11755            Ok(())
11756        }
11757    }
11758
11759    impl WlanFullmacImplRoamRequest {
11760        #[inline(always)]
11761        fn max_ordinal_present(&self) -> u64 {
11762            if let Some(_) = self.selected_bss {
11763                return 1;
11764            }
11765            0
11766        }
11767    }
11768
11769    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplRoamRequest {
11770        type Borrowed<'a> = &'a Self;
11771        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11772            value
11773        }
11774    }
11775
11776    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplRoamRequest {
11777        type Owned = Self;
11778
11779        #[inline(always)]
11780        fn inline_align(_context: fidl::encoding::Context) -> usize {
11781            8
11782        }
11783
11784        #[inline(always)]
11785        fn inline_size(_context: fidl::encoding::Context) -> usize {
11786            16
11787        }
11788    }
11789
11790    unsafe impl<D: fidl::encoding::ResourceDialect>
11791        fidl::encoding::Encode<WlanFullmacImplRoamRequest, D> for &WlanFullmacImplRoamRequest
11792    {
11793        unsafe fn encode(
11794            self,
11795            encoder: &mut fidl::encoding::Encoder<'_, D>,
11796            offset: usize,
11797            mut depth: fidl::encoding::Depth,
11798        ) -> fidl::Result<()> {
11799            encoder.debug_check_bounds::<WlanFullmacImplRoamRequest>(offset);
11800            // Vector header
11801            let max_ordinal: u64 = self.max_ordinal_present();
11802            encoder.write_num(max_ordinal, offset);
11803            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11804            // Calling encoder.out_of_line_offset(0) is not allowed.
11805            if max_ordinal == 0 {
11806                return Ok(());
11807            }
11808            depth.increment()?;
11809            let envelope_size = 8;
11810            let bytes_len = max_ordinal as usize * envelope_size;
11811            #[allow(unused_variables)]
11812            let offset = encoder.out_of_line_offset(bytes_len);
11813            let mut _prev_end_offset: usize = 0;
11814            if 1 > max_ordinal {
11815                return Ok(());
11816            }
11817
11818            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11819            // are envelope_size bytes.
11820            let cur_offset: usize = (1 - 1) * envelope_size;
11821
11822            // Zero reserved fields.
11823            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11824
11825            // Safety:
11826            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11827            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11828            //   envelope_size bytes, there is always sufficient room.
11829            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common__common::BssDescription, D>(
11830            self.selected_bss.as_ref().map(<fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow),
11831            encoder, offset + cur_offset, depth
11832        )?;
11833
11834            _prev_end_offset = cur_offset + envelope_size;
11835
11836            Ok(())
11837        }
11838    }
11839
11840    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11841        for WlanFullmacImplRoamRequest
11842    {
11843        #[inline(always)]
11844        fn new_empty() -> Self {
11845            Self::default()
11846        }
11847
11848        unsafe fn decode(
11849            &mut self,
11850            decoder: &mut fidl::encoding::Decoder<'_, D>,
11851            offset: usize,
11852            mut depth: fidl::encoding::Depth,
11853        ) -> fidl::Result<()> {
11854            decoder.debug_check_bounds::<Self>(offset);
11855            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11856                None => return Err(fidl::Error::NotNullable),
11857                Some(len) => len,
11858            };
11859            // Calling decoder.out_of_line_offset(0) is not allowed.
11860            if len == 0 {
11861                return Ok(());
11862            };
11863            depth.increment()?;
11864            let envelope_size = 8;
11865            let bytes_len = len * envelope_size;
11866            let offset = decoder.out_of_line_offset(bytes_len)?;
11867            // Decode the envelope for each type.
11868            let mut _next_ordinal_to_read = 0;
11869            let mut next_offset = offset;
11870            let end_offset = offset + bytes_len;
11871            _next_ordinal_to_read += 1;
11872            if next_offset >= end_offset {
11873                return Ok(());
11874            }
11875
11876            // Decode unknown envelopes for gaps in ordinals.
11877            while _next_ordinal_to_read < 1 {
11878                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11879                _next_ordinal_to_read += 1;
11880                next_offset += envelope_size;
11881            }
11882
11883            let next_out_of_line = decoder.next_out_of_line();
11884            let handles_before = decoder.remaining_handles();
11885            if let Some((inlined, num_bytes, num_handles)) =
11886                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11887            {
11888                let member_inline_size = <fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11889                if inlined != (member_inline_size <= 4) {
11890                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11891                }
11892                let inner_offset;
11893                let mut inner_depth = depth.clone();
11894                if inlined {
11895                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11896                    inner_offset = next_offset;
11897                } else {
11898                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11899                    inner_depth.increment()?;
11900                }
11901                let val_ref = self.selected_bss.get_or_insert_with(|| {
11902                    fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssDescription, D)
11903                });
11904                fidl::decode!(
11905                    fidl_fuchsia_wlan_common__common::BssDescription,
11906                    D,
11907                    val_ref,
11908                    decoder,
11909                    inner_offset,
11910                    inner_depth
11911                )?;
11912                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11913                {
11914                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11915                }
11916                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11917                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11918                }
11919            }
11920
11921            next_offset += envelope_size;
11922
11923            // Decode the remaining unknown envelopes.
11924            while next_offset < end_offset {
11925                _next_ordinal_to_read += 1;
11926                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11927                next_offset += envelope_size;
11928            }
11929
11930            Ok(())
11931        }
11932    }
11933
11934    impl WlanFullmacImplSaeHandshakeRespRequest {
11935        #[inline(always)]
11936        fn max_ordinal_present(&self) -> u64 {
11937            if let Some(_) = self.status_code {
11938                return 2;
11939            }
11940            if let Some(_) = self.peer_sta_address {
11941                return 1;
11942            }
11943            0
11944        }
11945    }
11946
11947    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSaeHandshakeRespRequest {
11948        type Borrowed<'a> = &'a Self;
11949        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11950            value
11951        }
11952    }
11953
11954    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSaeHandshakeRespRequest {
11955        type Owned = Self;
11956
11957        #[inline(always)]
11958        fn inline_align(_context: fidl::encoding::Context) -> usize {
11959            8
11960        }
11961
11962        #[inline(always)]
11963        fn inline_size(_context: fidl::encoding::Context) -> usize {
11964            16
11965        }
11966    }
11967
11968    unsafe impl<D: fidl::encoding::ResourceDialect>
11969        fidl::encoding::Encode<WlanFullmacImplSaeHandshakeRespRequest, D>
11970        for &WlanFullmacImplSaeHandshakeRespRequest
11971    {
11972        unsafe fn encode(
11973            self,
11974            encoder: &mut fidl::encoding::Encoder<'_, D>,
11975            offset: usize,
11976            mut depth: fidl::encoding::Depth,
11977        ) -> fidl::Result<()> {
11978            encoder.debug_check_bounds::<WlanFullmacImplSaeHandshakeRespRequest>(offset);
11979            // Vector header
11980            let max_ordinal: u64 = self.max_ordinal_present();
11981            encoder.write_num(max_ordinal, offset);
11982            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11983            // Calling encoder.out_of_line_offset(0) is not allowed.
11984            if max_ordinal == 0 {
11985                return Ok(());
11986            }
11987            depth.increment()?;
11988            let envelope_size = 8;
11989            let bytes_len = max_ordinal as usize * envelope_size;
11990            #[allow(unused_variables)]
11991            let offset = encoder.out_of_line_offset(bytes_len);
11992            let mut _prev_end_offset: usize = 0;
11993            if 1 > max_ordinal {
11994                return Ok(());
11995            }
11996
11997            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11998            // are envelope_size bytes.
11999            let cur_offset: usize = (1 - 1) * envelope_size;
12000
12001            // Zero reserved fields.
12002            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12003
12004            // Safety:
12005            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12006            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12007            //   envelope_size bytes, there is always sufficient room.
12008            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
12009                self.peer_sta_address
12010                    .as_ref()
12011                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
12012                encoder,
12013                offset + cur_offset,
12014                depth,
12015            )?;
12016
12017            _prev_end_offset = cur_offset + envelope_size;
12018            if 2 > max_ordinal {
12019                return Ok(());
12020            }
12021
12022            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12023            // are envelope_size bytes.
12024            let cur_offset: usize = (2 - 1) * envelope_size;
12025
12026            // Zero reserved fields.
12027            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12028
12029            // Safety:
12030            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12031            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12032            //   envelope_size bytes, there is always sufficient room.
12033            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>(
12034            self.status_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
12035            encoder, offset + cur_offset, depth
12036        )?;
12037
12038            _prev_end_offset = cur_offset + envelope_size;
12039
12040            Ok(())
12041        }
12042    }
12043
12044    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12045        for WlanFullmacImplSaeHandshakeRespRequest
12046    {
12047        #[inline(always)]
12048        fn new_empty() -> Self {
12049            Self::default()
12050        }
12051
12052        unsafe fn decode(
12053            &mut self,
12054            decoder: &mut fidl::encoding::Decoder<'_, D>,
12055            offset: usize,
12056            mut depth: fidl::encoding::Depth,
12057        ) -> fidl::Result<()> {
12058            decoder.debug_check_bounds::<Self>(offset);
12059            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12060                None => return Err(fidl::Error::NotNullable),
12061                Some(len) => len,
12062            };
12063            // Calling decoder.out_of_line_offset(0) is not allowed.
12064            if len == 0 {
12065                return Ok(());
12066            };
12067            depth.increment()?;
12068            let envelope_size = 8;
12069            let bytes_len = len * envelope_size;
12070            let offset = decoder.out_of_line_offset(bytes_len)?;
12071            // Decode the envelope for each type.
12072            let mut _next_ordinal_to_read = 0;
12073            let mut next_offset = offset;
12074            let end_offset = offset + bytes_len;
12075            _next_ordinal_to_read += 1;
12076            if next_offset >= end_offset {
12077                return Ok(());
12078            }
12079
12080            // Decode unknown envelopes for gaps in ordinals.
12081            while _next_ordinal_to_read < 1 {
12082                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12083                _next_ordinal_to_read += 1;
12084                next_offset += envelope_size;
12085            }
12086
12087            let next_out_of_line = decoder.next_out_of_line();
12088            let handles_before = decoder.remaining_handles();
12089            if let Some((inlined, num_bytes, num_handles)) =
12090                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12091            {
12092                let member_inline_size =
12093                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
12094                        decoder.context,
12095                    );
12096                if inlined != (member_inline_size <= 4) {
12097                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12098                }
12099                let inner_offset;
12100                let mut inner_depth = depth.clone();
12101                if inlined {
12102                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12103                    inner_offset = next_offset;
12104                } else {
12105                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12106                    inner_depth.increment()?;
12107                }
12108                let val_ref = self
12109                    .peer_sta_address
12110                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
12111                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
12112                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12113                {
12114                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12115                }
12116                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12117                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12118                }
12119            }
12120
12121            next_offset += envelope_size;
12122            _next_ordinal_to_read += 1;
12123            if next_offset >= end_offset {
12124                return Ok(());
12125            }
12126
12127            // Decode unknown envelopes for gaps in ordinals.
12128            while _next_ordinal_to_read < 2 {
12129                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12130                _next_ordinal_to_read += 1;
12131                next_offset += envelope_size;
12132            }
12133
12134            let next_out_of_line = decoder.next_out_of_line();
12135            let handles_before = decoder.remaining_handles();
12136            if let Some((inlined, num_bytes, num_handles)) =
12137                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12138            {
12139                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12140                if inlined != (member_inline_size <= 4) {
12141                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12142                }
12143                let inner_offset;
12144                let mut inner_depth = depth.clone();
12145                if inlined {
12146                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12147                    inner_offset = next_offset;
12148                } else {
12149                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12150                    inner_depth.increment()?;
12151                }
12152                let val_ref = self.status_code.get_or_insert_with(|| {
12153                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D)
12154                });
12155                fidl::decode!(
12156                    fidl_fuchsia_wlan_ieee80211__common::StatusCode,
12157                    D,
12158                    val_ref,
12159                    decoder,
12160                    inner_offset,
12161                    inner_depth
12162                )?;
12163                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12164                {
12165                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12166                }
12167                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12168                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12169                }
12170            }
12171
12172            next_offset += envelope_size;
12173
12174            // Decode the remaining unknown envelopes.
12175            while next_offset < end_offset {
12176                _next_ordinal_to_read += 1;
12177                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12178                next_offset += envelope_size;
12179            }
12180
12181            Ok(())
12182        }
12183    }
12184
12185    impl WlanFullmacImplSetKeysRequest {
12186        #[inline(always)]
12187        fn max_ordinal_present(&self) -> u64 {
12188            if let Some(_) = self.key_descriptors {
12189                return 2;
12190            }
12191            if let Some(_) = self.keylist {
12192                return 1;
12193            }
12194            0
12195        }
12196    }
12197
12198    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSetKeysRequest {
12199        type Borrowed<'a> = &'a Self;
12200        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12201            value
12202        }
12203    }
12204
12205    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSetKeysRequest {
12206        type Owned = Self;
12207
12208        #[inline(always)]
12209        fn inline_align(_context: fidl::encoding::Context) -> usize {
12210            8
12211        }
12212
12213        #[inline(always)]
12214        fn inline_size(_context: fidl::encoding::Context) -> usize {
12215            16
12216        }
12217    }
12218
12219    unsafe impl<D: fidl::encoding::ResourceDialect>
12220        fidl::encoding::Encode<WlanFullmacImplSetKeysRequest, D>
12221        for &WlanFullmacImplSetKeysRequest
12222    {
12223        unsafe fn encode(
12224            self,
12225            encoder: &mut fidl::encoding::Encoder<'_, D>,
12226            offset: usize,
12227            mut depth: fidl::encoding::Depth,
12228        ) -> fidl::Result<()> {
12229            encoder.debug_check_bounds::<WlanFullmacImplSetKeysRequest>(offset);
12230            // Vector header
12231            let max_ordinal: u64 = self.max_ordinal_present();
12232            encoder.write_num(max_ordinal, offset);
12233            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12234            // Calling encoder.out_of_line_offset(0) is not allowed.
12235            if max_ordinal == 0 {
12236                return Ok(());
12237            }
12238            depth.increment()?;
12239            let envelope_size = 8;
12240            let bytes_len = max_ordinal as usize * envelope_size;
12241            #[allow(unused_variables)]
12242            let offset = encoder.out_of_line_offset(bytes_len);
12243            let mut _prev_end_offset: usize = 0;
12244            if 1 > max_ordinal {
12245                return Ok(());
12246            }
12247
12248            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12249            // are envelope_size bytes.
12250            let cur_offset: usize = (1 - 1) * envelope_size;
12251
12252            // Zero reserved fields.
12253            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12254
12255            // Safety:
12256            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12257            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12258            //   envelope_size bytes, there is always sufficient room.
12259            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_wlan_common__common::WlanKeyConfig, 4>, D>(
12260            self.keylist.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_wlan_common__common::WlanKeyConfig, 4> as fidl::encoding::ValueTypeMarker>::borrow),
12261            encoder, offset + cur_offset, depth
12262        )?;
12263
12264            _prev_end_offset = cur_offset + envelope_size;
12265            if 2 > max_ordinal {
12266                return Ok(());
12267            }
12268
12269            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12270            // are envelope_size bytes.
12271            let cur_offset: usize = (2 - 1) * envelope_size;
12272
12273            // Zero reserved fields.
12274            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12275
12276            // Safety:
12277            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12278            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12279            //   envelope_size bytes, there is always sufficient room.
12280            fidl::encoding::encode_in_envelope_optional::<
12281                fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor, 4>,
12282                D,
12283            >(
12284                self.key_descriptors.as_ref().map(
12285                    <fidl::encoding::Vector<
12286                        fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor,
12287                        4,
12288                    > as fidl::encoding::ValueTypeMarker>::borrow,
12289                ),
12290                encoder,
12291                offset + cur_offset,
12292                depth,
12293            )?;
12294
12295            _prev_end_offset = cur_offset + envelope_size;
12296
12297            Ok(())
12298        }
12299    }
12300
12301    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12302        for WlanFullmacImplSetKeysRequest
12303    {
12304        #[inline(always)]
12305        fn new_empty() -> Self {
12306            Self::default()
12307        }
12308
12309        unsafe fn decode(
12310            &mut self,
12311            decoder: &mut fidl::encoding::Decoder<'_, D>,
12312            offset: usize,
12313            mut depth: fidl::encoding::Depth,
12314        ) -> fidl::Result<()> {
12315            decoder.debug_check_bounds::<Self>(offset);
12316            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12317                None => return Err(fidl::Error::NotNullable),
12318                Some(len) => len,
12319            };
12320            // Calling decoder.out_of_line_offset(0) is not allowed.
12321            if len == 0 {
12322                return Ok(());
12323            };
12324            depth.increment()?;
12325            let envelope_size = 8;
12326            let bytes_len = len * envelope_size;
12327            let offset = decoder.out_of_line_offset(bytes_len)?;
12328            // Decode the envelope for each type.
12329            let mut _next_ordinal_to_read = 0;
12330            let mut next_offset = offset;
12331            let end_offset = offset + bytes_len;
12332            _next_ordinal_to_read += 1;
12333            if next_offset >= end_offset {
12334                return Ok(());
12335            }
12336
12337            // Decode unknown envelopes for gaps in ordinals.
12338            while _next_ordinal_to_read < 1 {
12339                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12340                _next_ordinal_to_read += 1;
12341                next_offset += envelope_size;
12342            }
12343
12344            let next_out_of_line = decoder.next_out_of_line();
12345            let handles_before = decoder.remaining_handles();
12346            if let Some((inlined, num_bytes, num_handles)) =
12347                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12348            {
12349                let member_inline_size = <fidl::encoding::Vector<
12350                    fidl_fuchsia_wlan_common__common::WlanKeyConfig,
12351                    4,
12352                > as fidl::encoding::TypeMarker>::inline_size(
12353                    decoder.context
12354                );
12355                if inlined != (member_inline_size <= 4) {
12356                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12357                }
12358                let inner_offset;
12359                let mut inner_depth = depth.clone();
12360                if inlined {
12361                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12362                    inner_offset = next_offset;
12363                } else {
12364                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12365                    inner_depth.increment()?;
12366                }
12367                let val_ref =
12368                self.keylist.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_wlan_common__common::WlanKeyConfig, 4>, D));
12369                fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_wlan_common__common::WlanKeyConfig, 4>, D, val_ref, decoder, inner_offset, inner_depth)?;
12370                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12371                {
12372                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12373                }
12374                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12375                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12376                }
12377            }
12378
12379            next_offset += envelope_size;
12380            _next_ordinal_to_read += 1;
12381            if next_offset >= end_offset {
12382                return Ok(());
12383            }
12384
12385            // Decode unknown envelopes for gaps in ordinals.
12386            while _next_ordinal_to_read < 2 {
12387                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12388                _next_ordinal_to_read += 1;
12389                next_offset += envelope_size;
12390            }
12391
12392            let next_out_of_line = decoder.next_out_of_line();
12393            let handles_before = decoder.remaining_handles();
12394            if let Some((inlined, num_bytes, num_handles)) =
12395                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12396            {
12397                let member_inline_size = <fidl::encoding::Vector<
12398                    fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor,
12399                    4,
12400                > as fidl::encoding::TypeMarker>::inline_size(
12401                    decoder.context
12402                );
12403                if inlined != (member_inline_size <= 4) {
12404                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12405                }
12406                let inner_offset;
12407                let mut inner_depth = depth.clone();
12408                if inlined {
12409                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12410                    inner_offset = next_offset;
12411                } else {
12412                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12413                    inner_depth.increment()?;
12414                }
12415                let val_ref =
12416                self.key_descriptors.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor, 4>, D));
12417                fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor, 4>, D, val_ref, decoder, inner_offset, inner_depth)?;
12418                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12419                {
12420                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12421                }
12422                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12423                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12424                }
12425            }
12426
12427            next_offset += envelope_size;
12428
12429            // Decode the remaining unknown envelopes.
12430            while next_offset < end_offset {
12431                _next_ordinal_to_read += 1;
12432                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12433                next_offset += envelope_size;
12434            }
12435
12436            Ok(())
12437        }
12438    }
12439
12440    impl WlanFullmacImplStartBssRequest {
12441        #[inline(always)]
12442        fn max_ordinal_present(&self) -> u64 {
12443            if let Some(_) = self.vendor_ie {
12444                return 7;
12445            }
12446            if let Some(_) = self.rsne {
12447                return 6;
12448            }
12449            if let Some(_) = self.channel {
12450                return 5;
12451            }
12452            if let Some(_) = self.dtim_period {
12453                return 4;
12454            }
12455            if let Some(_) = self.beacon_period {
12456                return 3;
12457            }
12458            if let Some(_) = self.bss_type {
12459                return 2;
12460            }
12461            if let Some(_) = self.ssid {
12462                return 1;
12463            }
12464            0
12465        }
12466    }
12467
12468    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplStartBssRequest {
12469        type Borrowed<'a> = &'a Self;
12470        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12471            value
12472        }
12473    }
12474
12475    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplStartBssRequest {
12476        type Owned = Self;
12477
12478        #[inline(always)]
12479        fn inline_align(_context: fidl::encoding::Context) -> usize {
12480            8
12481        }
12482
12483        #[inline(always)]
12484        fn inline_size(_context: fidl::encoding::Context) -> usize {
12485            16
12486        }
12487    }
12488
12489    unsafe impl<D: fidl::encoding::ResourceDialect>
12490        fidl::encoding::Encode<WlanFullmacImplStartBssRequest, D>
12491        for &WlanFullmacImplStartBssRequest
12492    {
12493        unsafe fn encode(
12494            self,
12495            encoder: &mut fidl::encoding::Encoder<'_, D>,
12496            offset: usize,
12497            mut depth: fidl::encoding::Depth,
12498        ) -> fidl::Result<()> {
12499            encoder.debug_check_bounds::<WlanFullmacImplStartBssRequest>(offset);
12500            // Vector header
12501            let max_ordinal: u64 = self.max_ordinal_present();
12502            encoder.write_num(max_ordinal, offset);
12503            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12504            // Calling encoder.out_of_line_offset(0) is not allowed.
12505            if max_ordinal == 0 {
12506                return Ok(());
12507            }
12508            depth.increment()?;
12509            let envelope_size = 8;
12510            let bytes_len = max_ordinal as usize * envelope_size;
12511            #[allow(unused_variables)]
12512            let offset = encoder.out_of_line_offset(bytes_len);
12513            let mut _prev_end_offset: usize = 0;
12514            if 1 > max_ordinal {
12515                return Ok(());
12516            }
12517
12518            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12519            // are envelope_size bytes.
12520            let cur_offset: usize = (1 - 1) * envelope_size;
12521
12522            // Zero reserved fields.
12523            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12524
12525            // Safety:
12526            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12527            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12528            //   envelope_size bytes, there is always sufficient room.
12529            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
12530                self.ssid.as_ref().map(
12531                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
12532                ),
12533                encoder,
12534                offset + cur_offset,
12535                depth,
12536            )?;
12537
12538            _prev_end_offset = cur_offset + envelope_size;
12539            if 2 > max_ordinal {
12540                return Ok(());
12541            }
12542
12543            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12544            // are envelope_size bytes.
12545            let cur_offset: usize = (2 - 1) * envelope_size;
12546
12547            // Zero reserved fields.
12548            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12549
12550            // Safety:
12551            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12552            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12553            //   envelope_size bytes, there is always sufficient room.
12554            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common__common::BssType, D>(
12555            self.bss_type.as_ref().map(<fidl_fuchsia_wlan_common__common::BssType as fidl::encoding::ValueTypeMarker>::borrow),
12556            encoder, offset + cur_offset, depth
12557        )?;
12558
12559            _prev_end_offset = cur_offset + envelope_size;
12560            if 3 > max_ordinal {
12561                return Ok(());
12562            }
12563
12564            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12565            // are envelope_size bytes.
12566            let cur_offset: usize = (3 - 1) * envelope_size;
12567
12568            // Zero reserved fields.
12569            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12570
12571            // Safety:
12572            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12573            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12574            //   envelope_size bytes, there is always sufficient room.
12575            fidl::encoding::encode_in_envelope_optional::<u32, D>(
12576                self.beacon_period.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
12577                encoder,
12578                offset + cur_offset,
12579                depth,
12580            )?;
12581
12582            _prev_end_offset = cur_offset + envelope_size;
12583            if 4 > max_ordinal {
12584                return Ok(());
12585            }
12586
12587            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12588            // are envelope_size bytes.
12589            let cur_offset: usize = (4 - 1) * envelope_size;
12590
12591            // Zero reserved fields.
12592            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12593
12594            // Safety:
12595            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12596            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12597            //   envelope_size bytes, there is always sufficient room.
12598            fidl::encoding::encode_in_envelope_optional::<u32, D>(
12599                self.dtim_period.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
12600                encoder,
12601                offset + cur_offset,
12602                depth,
12603            )?;
12604
12605            _prev_end_offset = cur_offset + envelope_size;
12606            if 5 > max_ordinal {
12607                return Ok(());
12608            }
12609
12610            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12611            // are envelope_size bytes.
12612            let cur_offset: usize = (5 - 1) * envelope_size;
12613
12614            // Zero reserved fields.
12615            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12616
12617            // Safety:
12618            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12619            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12620            //   envelope_size bytes, there is always sufficient room.
12621            fidl::encoding::encode_in_envelope_optional::<u8, D>(
12622                self.channel.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
12623                encoder,
12624                offset + cur_offset,
12625                depth,
12626            )?;
12627
12628            _prev_end_offset = cur_offset + envelope_size;
12629            if 6 > max_ordinal {
12630                return Ok(());
12631            }
12632
12633            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12634            // are envelope_size bytes.
12635            let cur_offset: usize = (6 - 1) * envelope_size;
12636
12637            // Zero reserved fields.
12638            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12639
12640            // Safety:
12641            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12642            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12643            //   envelope_size bytes, there is always sufficient room.
12644            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 257>, D>(
12645                self.rsne.as_ref().map(
12646                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::ValueTypeMarker>::borrow,
12647                ),
12648                encoder,
12649                offset + cur_offset,
12650                depth,
12651            )?;
12652
12653            _prev_end_offset = cur_offset + envelope_size;
12654            if 7 > max_ordinal {
12655                return Ok(());
12656            }
12657
12658            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12659            // are envelope_size bytes.
12660            let cur_offset: usize = (7 - 1) * envelope_size;
12661
12662            // Zero reserved fields.
12663            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12664
12665            // Safety:
12666            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12667            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12668            //   envelope_size bytes, there is always sufficient room.
12669            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 514>, D>(
12670                self.vendor_ie.as_ref().map(
12671                    <fidl::encoding::Vector<u8, 514> as fidl::encoding::ValueTypeMarker>::borrow,
12672                ),
12673                encoder,
12674                offset + cur_offset,
12675                depth,
12676            )?;
12677
12678            _prev_end_offset = cur_offset + envelope_size;
12679
12680            Ok(())
12681        }
12682    }
12683
12684    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12685        for WlanFullmacImplStartBssRequest
12686    {
12687        #[inline(always)]
12688        fn new_empty() -> Self {
12689            Self::default()
12690        }
12691
12692        unsafe fn decode(
12693            &mut self,
12694            decoder: &mut fidl::encoding::Decoder<'_, D>,
12695            offset: usize,
12696            mut depth: fidl::encoding::Depth,
12697        ) -> fidl::Result<()> {
12698            decoder.debug_check_bounds::<Self>(offset);
12699            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12700                None => return Err(fidl::Error::NotNullable),
12701                Some(len) => len,
12702            };
12703            // Calling decoder.out_of_line_offset(0) is not allowed.
12704            if len == 0 {
12705                return Ok(());
12706            };
12707            depth.increment()?;
12708            let envelope_size = 8;
12709            let bytes_len = len * envelope_size;
12710            let offset = decoder.out_of_line_offset(bytes_len)?;
12711            // Decode the envelope for each type.
12712            let mut _next_ordinal_to_read = 0;
12713            let mut next_offset = offset;
12714            let end_offset = offset + bytes_len;
12715            _next_ordinal_to_read += 1;
12716            if next_offset >= end_offset {
12717                return Ok(());
12718            }
12719
12720            // Decode unknown envelopes for gaps in ordinals.
12721            while _next_ordinal_to_read < 1 {
12722                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12723                _next_ordinal_to_read += 1;
12724                next_offset += envelope_size;
12725            }
12726
12727            let next_out_of_line = decoder.next_out_of_line();
12728            let handles_before = decoder.remaining_handles();
12729            if let Some((inlined, num_bytes, num_handles)) =
12730                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12731            {
12732                let member_inline_size =
12733                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
12734                        decoder.context,
12735                    );
12736                if inlined != (member_inline_size <= 4) {
12737                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12738                }
12739                let inner_offset;
12740                let mut inner_depth = depth.clone();
12741                if inlined {
12742                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12743                    inner_offset = next_offset;
12744                } else {
12745                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12746                    inner_depth.increment()?;
12747                }
12748                let val_ref = self
12749                    .ssid
12750                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
12751                fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
12752                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12753                {
12754                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12755                }
12756                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12757                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12758                }
12759            }
12760
12761            next_offset += envelope_size;
12762            _next_ordinal_to_read += 1;
12763            if next_offset >= end_offset {
12764                return Ok(());
12765            }
12766
12767            // Decode unknown envelopes for gaps in ordinals.
12768            while _next_ordinal_to_read < 2 {
12769                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12770                _next_ordinal_to_read += 1;
12771                next_offset += envelope_size;
12772            }
12773
12774            let next_out_of_line = decoder.next_out_of_line();
12775            let handles_before = decoder.remaining_handles();
12776            if let Some((inlined, num_bytes, num_handles)) =
12777                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12778            {
12779                let member_inline_size = <fidl_fuchsia_wlan_common__common::BssType 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.bss_type.get_or_insert_with(|| {
12793                    fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssType, D)
12794                });
12795                fidl::decode!(
12796                    fidl_fuchsia_wlan_common__common::BssType,
12797                    D,
12798                    val_ref,
12799                    decoder,
12800                    inner_offset,
12801                    inner_depth
12802                )?;
12803                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12804                {
12805                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12806                }
12807                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12808                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12809                }
12810            }
12811
12812            next_offset += envelope_size;
12813            _next_ordinal_to_read += 1;
12814            if next_offset >= end_offset {
12815                return Ok(());
12816            }
12817
12818            // Decode unknown envelopes for gaps in ordinals.
12819            while _next_ordinal_to_read < 3 {
12820                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12821                _next_ordinal_to_read += 1;
12822                next_offset += envelope_size;
12823            }
12824
12825            let next_out_of_line = decoder.next_out_of_line();
12826            let handles_before = decoder.remaining_handles();
12827            if let Some((inlined, num_bytes, num_handles)) =
12828                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12829            {
12830                let member_inline_size =
12831                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12832                if inlined != (member_inline_size <= 4) {
12833                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12834                }
12835                let inner_offset;
12836                let mut inner_depth = depth.clone();
12837                if inlined {
12838                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12839                    inner_offset = next_offset;
12840                } else {
12841                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12842                    inner_depth.increment()?;
12843                }
12844                let val_ref = self.beacon_period.get_or_insert_with(|| fidl::new_empty!(u32, D));
12845                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
12846                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12847                {
12848                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12849                }
12850                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12851                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12852                }
12853            }
12854
12855            next_offset += envelope_size;
12856            _next_ordinal_to_read += 1;
12857            if next_offset >= end_offset {
12858                return Ok(());
12859            }
12860
12861            // Decode unknown envelopes for gaps in ordinals.
12862            while _next_ordinal_to_read < 4 {
12863                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12864                _next_ordinal_to_read += 1;
12865                next_offset += envelope_size;
12866            }
12867
12868            let next_out_of_line = decoder.next_out_of_line();
12869            let handles_before = decoder.remaining_handles();
12870            if let Some((inlined, num_bytes, num_handles)) =
12871                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12872            {
12873                let member_inline_size =
12874                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12875                if inlined != (member_inline_size <= 4) {
12876                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12877                }
12878                let inner_offset;
12879                let mut inner_depth = depth.clone();
12880                if inlined {
12881                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12882                    inner_offset = next_offset;
12883                } else {
12884                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12885                    inner_depth.increment()?;
12886                }
12887                let val_ref = self.dtim_period.get_or_insert_with(|| fidl::new_empty!(u32, D));
12888                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
12889                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12890                {
12891                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12892                }
12893                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12894                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12895                }
12896            }
12897
12898            next_offset += envelope_size;
12899            _next_ordinal_to_read += 1;
12900            if next_offset >= end_offset {
12901                return Ok(());
12902            }
12903
12904            // Decode unknown envelopes for gaps in ordinals.
12905            while _next_ordinal_to_read < 5 {
12906                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12907                _next_ordinal_to_read += 1;
12908                next_offset += envelope_size;
12909            }
12910
12911            let next_out_of_line = decoder.next_out_of_line();
12912            let handles_before = decoder.remaining_handles();
12913            if let Some((inlined, num_bytes, num_handles)) =
12914                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12915            {
12916                let member_inline_size =
12917                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12918                if inlined != (member_inline_size <= 4) {
12919                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12920                }
12921                let inner_offset;
12922                let mut inner_depth = depth.clone();
12923                if inlined {
12924                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12925                    inner_offset = next_offset;
12926                } else {
12927                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12928                    inner_depth.increment()?;
12929                }
12930                let val_ref = self.channel.get_or_insert_with(|| fidl::new_empty!(u8, D));
12931                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
12932                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12933                {
12934                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12935                }
12936                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12937                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12938                }
12939            }
12940
12941            next_offset += envelope_size;
12942            _next_ordinal_to_read += 1;
12943            if next_offset >= end_offset {
12944                return Ok(());
12945            }
12946
12947            // Decode unknown envelopes for gaps in ordinals.
12948            while _next_ordinal_to_read < 6 {
12949                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12950                _next_ordinal_to_read += 1;
12951                next_offset += envelope_size;
12952            }
12953
12954            let next_out_of_line = decoder.next_out_of_line();
12955            let handles_before = decoder.remaining_handles();
12956            if let Some((inlined, num_bytes, num_handles)) =
12957                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12958            {
12959                let member_inline_size =
12960                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::TypeMarker>::inline_size(
12961                        decoder.context,
12962                    );
12963                if inlined != (member_inline_size <= 4) {
12964                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12965                }
12966                let inner_offset;
12967                let mut inner_depth = depth.clone();
12968                if inlined {
12969                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12970                    inner_offset = next_offset;
12971                } else {
12972                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12973                    inner_depth.increment()?;
12974                }
12975                let val_ref = self
12976                    .rsne
12977                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 257>, D));
12978                fidl::decode!(fidl::encoding::Vector<u8, 257>, D, val_ref, decoder, inner_offset, inner_depth)?;
12979                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12980                {
12981                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12982                }
12983                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12984                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12985                }
12986            }
12987
12988            next_offset += envelope_size;
12989            _next_ordinal_to_read += 1;
12990            if next_offset >= end_offset {
12991                return Ok(());
12992            }
12993
12994            // Decode unknown envelopes for gaps in ordinals.
12995            while _next_ordinal_to_read < 7 {
12996                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12997                _next_ordinal_to_read += 1;
12998                next_offset += envelope_size;
12999            }
13000
13001            let next_out_of_line = decoder.next_out_of_line();
13002            let handles_before = decoder.remaining_handles();
13003            if let Some((inlined, num_bytes, num_handles)) =
13004                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13005            {
13006                let member_inline_size =
13007                    <fidl::encoding::Vector<u8, 514> as fidl::encoding::TypeMarker>::inline_size(
13008                        decoder.context,
13009                    );
13010                if inlined != (member_inline_size <= 4) {
13011                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13012                }
13013                let inner_offset;
13014                let mut inner_depth = depth.clone();
13015                if inlined {
13016                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13017                    inner_offset = next_offset;
13018                } else {
13019                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13020                    inner_depth.increment()?;
13021                }
13022                let val_ref = self
13023                    .vendor_ie
13024                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 514>, D));
13025                fidl::decode!(fidl::encoding::Vector<u8, 514>, D, val_ref, decoder, inner_offset, inner_depth)?;
13026                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13027                {
13028                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13029                }
13030                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13031                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13032                }
13033            }
13034
13035            next_offset += envelope_size;
13036
13037            // Decode the remaining unknown envelopes.
13038            while next_offset < end_offset {
13039                _next_ordinal_to_read += 1;
13040                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13041                next_offset += envelope_size;
13042            }
13043
13044            Ok(())
13045        }
13046    }
13047
13048    impl WlanFullmacImplStartScanRequest {
13049        #[inline(always)]
13050        fn max_ordinal_present(&self) -> u64 {
13051            if let Some(_) = self.max_channel_time {
13052                return 6;
13053            }
13054            if let Some(_) = self.min_channel_time {
13055                return 5;
13056            }
13057            if let Some(_) = self.ssids {
13058                return 4;
13059            }
13060            if let Some(_) = self.channels {
13061                return 3;
13062            }
13063            if let Some(_) = self.scan_type {
13064                return 2;
13065            }
13066            if let Some(_) = self.txn_id {
13067                return 1;
13068            }
13069            0
13070        }
13071    }
13072
13073    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplStartScanRequest {
13074        type Borrowed<'a> = &'a Self;
13075        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13076            value
13077        }
13078    }
13079
13080    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplStartScanRequest {
13081        type Owned = Self;
13082
13083        #[inline(always)]
13084        fn inline_align(_context: fidl::encoding::Context) -> usize {
13085            8
13086        }
13087
13088        #[inline(always)]
13089        fn inline_size(_context: fidl::encoding::Context) -> usize {
13090            16
13091        }
13092    }
13093
13094    unsafe impl<D: fidl::encoding::ResourceDialect>
13095        fidl::encoding::Encode<WlanFullmacImplStartScanRequest, D>
13096        for &WlanFullmacImplStartScanRequest
13097    {
13098        unsafe fn encode(
13099            self,
13100            encoder: &mut fidl::encoding::Encoder<'_, D>,
13101            offset: usize,
13102            mut depth: fidl::encoding::Depth,
13103        ) -> fidl::Result<()> {
13104            encoder.debug_check_bounds::<WlanFullmacImplStartScanRequest>(offset);
13105            // Vector header
13106            let max_ordinal: u64 = self.max_ordinal_present();
13107            encoder.write_num(max_ordinal, offset);
13108            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13109            // Calling encoder.out_of_line_offset(0) is not allowed.
13110            if max_ordinal == 0 {
13111                return Ok(());
13112            }
13113            depth.increment()?;
13114            let envelope_size = 8;
13115            let bytes_len = max_ordinal as usize * envelope_size;
13116            #[allow(unused_variables)]
13117            let offset = encoder.out_of_line_offset(bytes_len);
13118            let mut _prev_end_offset: usize = 0;
13119            if 1 > max_ordinal {
13120                return Ok(());
13121            }
13122
13123            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13124            // are envelope_size bytes.
13125            let cur_offset: usize = (1 - 1) * envelope_size;
13126
13127            // Zero reserved fields.
13128            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13129
13130            // Safety:
13131            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13132            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13133            //   envelope_size bytes, there is always sufficient room.
13134            fidl::encoding::encode_in_envelope_optional::<u64, D>(
13135                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
13136                encoder,
13137                offset + cur_offset,
13138                depth,
13139            )?;
13140
13141            _prev_end_offset = cur_offset + envelope_size;
13142            if 2 > max_ordinal {
13143                return Ok(());
13144            }
13145
13146            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13147            // are envelope_size bytes.
13148            let cur_offset: usize = (2 - 1) * envelope_size;
13149
13150            // Zero reserved fields.
13151            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13152
13153            // Safety:
13154            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13155            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13156            //   envelope_size bytes, there is always sufficient room.
13157            fidl::encoding::encode_in_envelope_optional::<WlanScanType, D>(
13158                self.scan_type
13159                    .as_ref()
13160                    .map(<WlanScanType as fidl::encoding::ValueTypeMarker>::borrow),
13161                encoder,
13162                offset + cur_offset,
13163                depth,
13164            )?;
13165
13166            _prev_end_offset = cur_offset + envelope_size;
13167            if 3 > max_ordinal {
13168                return Ok(());
13169            }
13170
13171            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13172            // are envelope_size bytes.
13173            let cur_offset: usize = (3 - 1) * envelope_size;
13174
13175            // Zero reserved fields.
13176            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13177
13178            // Safety:
13179            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13180            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13181            //   envelope_size bytes, there is always sufficient room.
13182            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 256>, D>(
13183                self.channels.as_ref().map(
13184                    <fidl::encoding::Vector<u8, 256> as fidl::encoding::ValueTypeMarker>::borrow,
13185                ),
13186                encoder,
13187                offset + cur_offset,
13188                depth,
13189            )?;
13190
13191            _prev_end_offset = cur_offset + envelope_size;
13192            if 4 > max_ordinal {
13193                return Ok(());
13194            }
13195
13196            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13197            // are envelope_size bytes.
13198            let cur_offset: usize = (4 - 1) * envelope_size;
13199
13200            // Zero reserved fields.
13201            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13202
13203            // Safety:
13204            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13205            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13206            //   envelope_size bytes, there is always sufficient room.
13207            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>, D>(
13208            self.ssids.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>> as fidl::encoding::ValueTypeMarker>::borrow),
13209            encoder, offset + cur_offset, depth
13210        )?;
13211
13212            _prev_end_offset = cur_offset + envelope_size;
13213            if 5 > max_ordinal {
13214                return Ok(());
13215            }
13216
13217            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13218            // are envelope_size bytes.
13219            let cur_offset: usize = (5 - 1) * envelope_size;
13220
13221            // Zero reserved fields.
13222            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13223
13224            // Safety:
13225            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13226            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13227            //   envelope_size bytes, there is always sufficient room.
13228            fidl::encoding::encode_in_envelope_optional::<u32, D>(
13229                self.min_channel_time
13230                    .as_ref()
13231                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
13232                encoder,
13233                offset + cur_offset,
13234                depth,
13235            )?;
13236
13237            _prev_end_offset = cur_offset + envelope_size;
13238            if 6 > max_ordinal {
13239                return Ok(());
13240            }
13241
13242            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13243            // are envelope_size bytes.
13244            let cur_offset: usize = (6 - 1) * envelope_size;
13245
13246            // Zero reserved fields.
13247            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13248
13249            // Safety:
13250            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13251            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13252            //   envelope_size bytes, there is always sufficient room.
13253            fidl::encoding::encode_in_envelope_optional::<u32, D>(
13254                self.max_channel_time
13255                    .as_ref()
13256                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
13257                encoder,
13258                offset + cur_offset,
13259                depth,
13260            )?;
13261
13262            _prev_end_offset = cur_offset + envelope_size;
13263
13264            Ok(())
13265        }
13266    }
13267
13268    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
13269        for WlanFullmacImplStartScanRequest
13270    {
13271        #[inline(always)]
13272        fn new_empty() -> Self {
13273            Self::default()
13274        }
13275
13276        unsafe fn decode(
13277            &mut self,
13278            decoder: &mut fidl::encoding::Decoder<'_, D>,
13279            offset: usize,
13280            mut depth: fidl::encoding::Depth,
13281        ) -> fidl::Result<()> {
13282            decoder.debug_check_bounds::<Self>(offset);
13283            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13284                None => return Err(fidl::Error::NotNullable),
13285                Some(len) => len,
13286            };
13287            // Calling decoder.out_of_line_offset(0) is not allowed.
13288            if len == 0 {
13289                return Ok(());
13290            };
13291            depth.increment()?;
13292            let envelope_size = 8;
13293            let bytes_len = len * envelope_size;
13294            let offset = decoder.out_of_line_offset(bytes_len)?;
13295            // Decode the envelope for each type.
13296            let mut _next_ordinal_to_read = 0;
13297            let mut next_offset = offset;
13298            let end_offset = offset + bytes_len;
13299            _next_ordinal_to_read += 1;
13300            if next_offset >= end_offset {
13301                return Ok(());
13302            }
13303
13304            // Decode unknown envelopes for gaps in ordinals.
13305            while _next_ordinal_to_read < 1 {
13306                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13307                _next_ordinal_to_read += 1;
13308                next_offset += envelope_size;
13309            }
13310
13311            let next_out_of_line = decoder.next_out_of_line();
13312            let handles_before = decoder.remaining_handles();
13313            if let Some((inlined, num_bytes, num_handles)) =
13314                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13315            {
13316                let member_inline_size =
13317                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13318                if inlined != (member_inline_size <= 4) {
13319                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13320                }
13321                let inner_offset;
13322                let mut inner_depth = depth.clone();
13323                if inlined {
13324                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13325                    inner_offset = next_offset;
13326                } else {
13327                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13328                    inner_depth.increment()?;
13329                }
13330                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
13331                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
13332                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13333                {
13334                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13335                }
13336                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13337                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13338                }
13339            }
13340
13341            next_offset += envelope_size;
13342            _next_ordinal_to_read += 1;
13343            if next_offset >= end_offset {
13344                return Ok(());
13345            }
13346
13347            // Decode unknown envelopes for gaps in ordinals.
13348            while _next_ordinal_to_read < 2 {
13349                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13350                _next_ordinal_to_read += 1;
13351                next_offset += envelope_size;
13352            }
13353
13354            let next_out_of_line = decoder.next_out_of_line();
13355            let handles_before = decoder.remaining_handles();
13356            if let Some((inlined, num_bytes, num_handles)) =
13357                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13358            {
13359                let member_inline_size =
13360                    <WlanScanType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13361                if inlined != (member_inline_size <= 4) {
13362                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13363                }
13364                let inner_offset;
13365                let mut inner_depth = depth.clone();
13366                if inlined {
13367                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13368                    inner_offset = next_offset;
13369                } else {
13370                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13371                    inner_depth.increment()?;
13372                }
13373                let val_ref =
13374                    self.scan_type.get_or_insert_with(|| fidl::new_empty!(WlanScanType, D));
13375                fidl::decode!(WlanScanType, D, val_ref, decoder, inner_offset, inner_depth)?;
13376                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13377                {
13378                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13379                }
13380                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13381                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13382                }
13383            }
13384
13385            next_offset += envelope_size;
13386            _next_ordinal_to_read += 1;
13387            if next_offset >= end_offset {
13388                return Ok(());
13389            }
13390
13391            // Decode unknown envelopes for gaps in ordinals.
13392            while _next_ordinal_to_read < 3 {
13393                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13394                _next_ordinal_to_read += 1;
13395                next_offset += envelope_size;
13396            }
13397
13398            let next_out_of_line = decoder.next_out_of_line();
13399            let handles_before = decoder.remaining_handles();
13400            if let Some((inlined, num_bytes, num_handles)) =
13401                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13402            {
13403                let member_inline_size =
13404                    <fidl::encoding::Vector<u8, 256> as fidl::encoding::TypeMarker>::inline_size(
13405                        decoder.context,
13406                    );
13407                if inlined != (member_inline_size <= 4) {
13408                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13409                }
13410                let inner_offset;
13411                let mut inner_depth = depth.clone();
13412                if inlined {
13413                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13414                    inner_offset = next_offset;
13415                } else {
13416                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13417                    inner_depth.increment()?;
13418                }
13419                let val_ref = self
13420                    .channels
13421                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 256>, D));
13422                fidl::decode!(fidl::encoding::Vector<u8, 256>, D, val_ref, decoder, inner_offset, inner_depth)?;
13423                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13424                {
13425                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13426                }
13427                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13428                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13429                }
13430            }
13431
13432            next_offset += envelope_size;
13433            _next_ordinal_to_read += 1;
13434            if next_offset >= end_offset {
13435                return Ok(());
13436            }
13437
13438            // Decode unknown envelopes for gaps in ordinals.
13439            while _next_ordinal_to_read < 4 {
13440                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13441                _next_ordinal_to_read += 1;
13442                next_offset += envelope_size;
13443            }
13444
13445            let next_out_of_line = decoder.next_out_of_line();
13446            let handles_before = decoder.remaining_handles();
13447            if let Some((inlined, num_bytes, num_handles)) =
13448                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13449            {
13450                let member_inline_size = <fidl::encoding::UnboundedVector<
13451                    fidl::encoding::Vector<u8, 32>,
13452                > as fidl::encoding::TypeMarker>::inline_size(
13453                    decoder.context
13454                );
13455                if inlined != (member_inline_size <= 4) {
13456                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13457                }
13458                let inner_offset;
13459                let mut inner_depth = depth.clone();
13460                if inlined {
13461                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13462                    inner_offset = next_offset;
13463                } else {
13464                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13465                    inner_depth.increment()?;
13466                }
13467                let val_ref = self.ssids.get_or_insert_with(|| {
13468                    fidl::new_empty!(
13469                        fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>,
13470                        D
13471                    )
13472                });
13473                fidl::decode!(
13474                    fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>,
13475                    D,
13476                    val_ref,
13477                    decoder,
13478                    inner_offset,
13479                    inner_depth
13480                )?;
13481                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13482                {
13483                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13484                }
13485                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13486                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13487                }
13488            }
13489
13490            next_offset += envelope_size;
13491            _next_ordinal_to_read += 1;
13492            if next_offset >= end_offset {
13493                return Ok(());
13494            }
13495
13496            // Decode unknown envelopes for gaps in ordinals.
13497            while _next_ordinal_to_read < 5 {
13498                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13499                _next_ordinal_to_read += 1;
13500                next_offset += envelope_size;
13501            }
13502
13503            let next_out_of_line = decoder.next_out_of_line();
13504            let handles_before = decoder.remaining_handles();
13505            if let Some((inlined, num_bytes, num_handles)) =
13506                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13507            {
13508                let member_inline_size =
13509                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13510                if inlined != (member_inline_size <= 4) {
13511                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13512                }
13513                let inner_offset;
13514                let mut inner_depth = depth.clone();
13515                if inlined {
13516                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13517                    inner_offset = next_offset;
13518                } else {
13519                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13520                    inner_depth.increment()?;
13521                }
13522                let val_ref = self.min_channel_time.get_or_insert_with(|| fidl::new_empty!(u32, D));
13523                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
13524                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13525                {
13526                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13527                }
13528                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13529                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13530                }
13531            }
13532
13533            next_offset += envelope_size;
13534            _next_ordinal_to_read += 1;
13535            if next_offset >= end_offset {
13536                return Ok(());
13537            }
13538
13539            // Decode unknown envelopes for gaps in ordinals.
13540            while _next_ordinal_to_read < 6 {
13541                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13542                _next_ordinal_to_read += 1;
13543                next_offset += envelope_size;
13544            }
13545
13546            let next_out_of_line = decoder.next_out_of_line();
13547            let handles_before = decoder.remaining_handles();
13548            if let Some((inlined, num_bytes, num_handles)) =
13549                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13550            {
13551                let member_inline_size =
13552                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13553                if inlined != (member_inline_size <= 4) {
13554                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13555                }
13556                let inner_offset;
13557                let mut inner_depth = depth.clone();
13558                if inlined {
13559                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13560                    inner_offset = next_offset;
13561                } else {
13562                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13563                    inner_depth.increment()?;
13564                }
13565                let val_ref = self.max_channel_time.get_or_insert_with(|| fidl::new_empty!(u32, D));
13566                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
13567                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13568                {
13569                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13570                }
13571                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13572                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13573                }
13574            }
13575
13576            next_offset += envelope_size;
13577
13578            // Decode the remaining unknown envelopes.
13579            while next_offset < end_offset {
13580                _next_ordinal_to_read += 1;
13581                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13582                next_offset += envelope_size;
13583            }
13584
13585            Ok(())
13586        }
13587    }
13588
13589    impl WlanFullmacImplStopBssRequest {
13590        #[inline(always)]
13591        fn max_ordinal_present(&self) -> u64 {
13592            if let Some(_) = self.ssid {
13593                return 1;
13594            }
13595            0
13596        }
13597    }
13598
13599    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplStopBssRequest {
13600        type Borrowed<'a> = &'a Self;
13601        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13602            value
13603        }
13604    }
13605
13606    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplStopBssRequest {
13607        type Owned = Self;
13608
13609        #[inline(always)]
13610        fn inline_align(_context: fidl::encoding::Context) -> usize {
13611            8
13612        }
13613
13614        #[inline(always)]
13615        fn inline_size(_context: fidl::encoding::Context) -> usize {
13616            16
13617        }
13618    }
13619
13620    unsafe impl<D: fidl::encoding::ResourceDialect>
13621        fidl::encoding::Encode<WlanFullmacImplStopBssRequest, D>
13622        for &WlanFullmacImplStopBssRequest
13623    {
13624        unsafe fn encode(
13625            self,
13626            encoder: &mut fidl::encoding::Encoder<'_, D>,
13627            offset: usize,
13628            mut depth: fidl::encoding::Depth,
13629        ) -> fidl::Result<()> {
13630            encoder.debug_check_bounds::<WlanFullmacImplStopBssRequest>(offset);
13631            // Vector header
13632            let max_ordinal: u64 = self.max_ordinal_present();
13633            encoder.write_num(max_ordinal, offset);
13634            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13635            // Calling encoder.out_of_line_offset(0) is not allowed.
13636            if max_ordinal == 0 {
13637                return Ok(());
13638            }
13639            depth.increment()?;
13640            let envelope_size = 8;
13641            let bytes_len = max_ordinal as usize * envelope_size;
13642            #[allow(unused_variables)]
13643            let offset = encoder.out_of_line_offset(bytes_len);
13644            let mut _prev_end_offset: usize = 0;
13645            if 1 > max_ordinal {
13646                return Ok(());
13647            }
13648
13649            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13650            // are envelope_size bytes.
13651            let cur_offset: usize = (1 - 1) * envelope_size;
13652
13653            // Zero reserved fields.
13654            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13655
13656            // Safety:
13657            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13658            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13659            //   envelope_size bytes, there is always sufficient room.
13660            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
13661                self.ssid.as_ref().map(
13662                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
13663                ),
13664                encoder,
13665                offset + cur_offset,
13666                depth,
13667            )?;
13668
13669            _prev_end_offset = cur_offset + envelope_size;
13670
13671            Ok(())
13672        }
13673    }
13674
13675    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
13676        for WlanFullmacImplStopBssRequest
13677    {
13678        #[inline(always)]
13679        fn new_empty() -> Self {
13680            Self::default()
13681        }
13682
13683        unsafe fn decode(
13684            &mut self,
13685            decoder: &mut fidl::encoding::Decoder<'_, D>,
13686            offset: usize,
13687            mut depth: fidl::encoding::Depth,
13688        ) -> fidl::Result<()> {
13689            decoder.debug_check_bounds::<Self>(offset);
13690            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13691                None => return Err(fidl::Error::NotNullable),
13692                Some(len) => len,
13693            };
13694            // Calling decoder.out_of_line_offset(0) is not allowed.
13695            if len == 0 {
13696                return Ok(());
13697            };
13698            depth.increment()?;
13699            let envelope_size = 8;
13700            let bytes_len = len * envelope_size;
13701            let offset = decoder.out_of_line_offset(bytes_len)?;
13702            // Decode the envelope for each type.
13703            let mut _next_ordinal_to_read = 0;
13704            let mut next_offset = offset;
13705            let end_offset = offset + bytes_len;
13706            _next_ordinal_to_read += 1;
13707            if next_offset >= end_offset {
13708                return Ok(());
13709            }
13710
13711            // Decode unknown envelopes for gaps in ordinals.
13712            while _next_ordinal_to_read < 1 {
13713                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13714                _next_ordinal_to_read += 1;
13715                next_offset += envelope_size;
13716            }
13717
13718            let next_out_of_line = decoder.next_out_of_line();
13719            let handles_before = decoder.remaining_handles();
13720            if let Some((inlined, num_bytes, num_handles)) =
13721                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13722            {
13723                let member_inline_size =
13724                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
13725                        decoder.context,
13726                    );
13727                if inlined != (member_inline_size <= 4) {
13728                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13729                }
13730                let inner_offset;
13731                let mut inner_depth = depth.clone();
13732                if inlined {
13733                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13734                    inner_offset = next_offset;
13735                } else {
13736                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13737                    inner_depth.increment()?;
13738                }
13739                let val_ref = self
13740                    .ssid
13741                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
13742                fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
13743                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13744                {
13745                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13746                }
13747                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13748                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13749                }
13750            }
13751
13752            next_offset += envelope_size;
13753
13754            // Decode the remaining unknown envelopes.
13755            while next_offset < end_offset {
13756                _next_ordinal_to_read += 1;
13757                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13758                next_offset += envelope_size;
13759            }
13760
13761            Ok(())
13762        }
13763    }
13764
13765    impl WlanFullmacImplQuerySecuritySupportResponse {
13766        #[inline(always)]
13767        fn max_ordinal_present(&self) -> u64 {
13768            if let Some(_) = self.resp {
13769                return 1;
13770            }
13771            0
13772        }
13773    }
13774
13775    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplQuerySecuritySupportResponse {
13776        type Borrowed<'a> = &'a Self;
13777        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13778            value
13779        }
13780    }
13781
13782    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplQuerySecuritySupportResponse {
13783        type Owned = Self;
13784
13785        #[inline(always)]
13786        fn inline_align(_context: fidl::encoding::Context) -> usize {
13787            8
13788        }
13789
13790        #[inline(always)]
13791        fn inline_size(_context: fidl::encoding::Context) -> usize {
13792            16
13793        }
13794    }
13795
13796    unsafe impl<D: fidl::encoding::ResourceDialect>
13797        fidl::encoding::Encode<WlanFullmacImplQuerySecuritySupportResponse, D>
13798        for &WlanFullmacImplQuerySecuritySupportResponse
13799    {
13800        unsafe fn encode(
13801            self,
13802            encoder: &mut fidl::encoding::Encoder<'_, D>,
13803            offset: usize,
13804            mut depth: fidl::encoding::Depth,
13805        ) -> fidl::Result<()> {
13806            encoder.debug_check_bounds::<WlanFullmacImplQuerySecuritySupportResponse>(offset);
13807            // Vector header
13808            let max_ordinal: u64 = self.max_ordinal_present();
13809            encoder.write_num(max_ordinal, offset);
13810            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13811            // Calling encoder.out_of_line_offset(0) is not allowed.
13812            if max_ordinal == 0 {
13813                return Ok(());
13814            }
13815            depth.increment()?;
13816            let envelope_size = 8;
13817            let bytes_len = max_ordinal as usize * envelope_size;
13818            #[allow(unused_variables)]
13819            let offset = encoder.out_of_line_offset(bytes_len);
13820            let mut _prev_end_offset: usize = 0;
13821            if 1 > max_ordinal {
13822                return Ok(());
13823            }
13824
13825            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13826            // are envelope_size bytes.
13827            let cur_offset: usize = (1 - 1) * envelope_size;
13828
13829            // Zero reserved fields.
13830            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13831
13832            // Safety:
13833            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13834            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13835            //   envelope_size bytes, there is always sufficient room.
13836            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common__common::SecuritySupport, D>(
13837            self.resp.as_ref().map(<fidl_fuchsia_wlan_common__common::SecuritySupport as fidl::encoding::ValueTypeMarker>::borrow),
13838            encoder, offset + cur_offset, depth
13839        )?;
13840
13841            _prev_end_offset = cur_offset + envelope_size;
13842
13843            Ok(())
13844        }
13845    }
13846
13847    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
13848        for WlanFullmacImplQuerySecuritySupportResponse
13849    {
13850        #[inline(always)]
13851        fn new_empty() -> Self {
13852            Self::default()
13853        }
13854
13855        unsafe fn decode(
13856            &mut self,
13857            decoder: &mut fidl::encoding::Decoder<'_, D>,
13858            offset: usize,
13859            mut depth: fidl::encoding::Depth,
13860        ) -> fidl::Result<()> {
13861            decoder.debug_check_bounds::<Self>(offset);
13862            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13863                None => return Err(fidl::Error::NotNullable),
13864                Some(len) => len,
13865            };
13866            // Calling decoder.out_of_line_offset(0) is not allowed.
13867            if len == 0 {
13868                return Ok(());
13869            };
13870            depth.increment()?;
13871            let envelope_size = 8;
13872            let bytes_len = len * envelope_size;
13873            let offset = decoder.out_of_line_offset(bytes_len)?;
13874            // Decode the envelope for each type.
13875            let mut _next_ordinal_to_read = 0;
13876            let mut next_offset = offset;
13877            let end_offset = offset + bytes_len;
13878            _next_ordinal_to_read += 1;
13879            if next_offset >= end_offset {
13880                return Ok(());
13881            }
13882
13883            // Decode unknown envelopes for gaps in ordinals.
13884            while _next_ordinal_to_read < 1 {
13885                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13886                _next_ordinal_to_read += 1;
13887                next_offset += envelope_size;
13888            }
13889
13890            let next_out_of_line = decoder.next_out_of_line();
13891            let handles_before = decoder.remaining_handles();
13892            if let Some((inlined, num_bytes, num_handles)) =
13893                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13894            {
13895                let member_inline_size = <fidl_fuchsia_wlan_common__common::SecuritySupport as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13896                if inlined != (member_inline_size <= 4) {
13897                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13898                }
13899                let inner_offset;
13900                let mut inner_depth = depth.clone();
13901                if inlined {
13902                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13903                    inner_offset = next_offset;
13904                } else {
13905                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13906                    inner_depth.increment()?;
13907                }
13908                let val_ref = self.resp.get_or_insert_with(|| {
13909                    fidl::new_empty!(fidl_fuchsia_wlan_common__common::SecuritySupport, D)
13910                });
13911                fidl::decode!(
13912                    fidl_fuchsia_wlan_common__common::SecuritySupport,
13913                    D,
13914                    val_ref,
13915                    decoder,
13916                    inner_offset,
13917                    inner_depth
13918                )?;
13919                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13920                {
13921                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13922                }
13923                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13924                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13925                }
13926            }
13927
13928            next_offset += envelope_size;
13929
13930            // Decode the remaining unknown envelopes.
13931            while next_offset < end_offset {
13932                _next_ordinal_to_read += 1;
13933                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13934                next_offset += envelope_size;
13935            }
13936
13937            Ok(())
13938        }
13939    }
13940
13941    impl WlanFullmacImplQuerySpectrumManagementSupportResponse {
13942        #[inline(always)]
13943        fn max_ordinal_present(&self) -> u64 {
13944            if let Some(_) = self.resp {
13945                return 1;
13946            }
13947            0
13948        }
13949    }
13950
13951    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplQuerySpectrumManagementSupportResponse {
13952        type Borrowed<'a> = &'a Self;
13953        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13954            value
13955        }
13956    }
13957
13958    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplQuerySpectrumManagementSupportResponse {
13959        type Owned = Self;
13960
13961        #[inline(always)]
13962        fn inline_align(_context: fidl::encoding::Context) -> usize {
13963            8
13964        }
13965
13966        #[inline(always)]
13967        fn inline_size(_context: fidl::encoding::Context) -> usize {
13968            16
13969        }
13970    }
13971
13972    unsafe impl<D: fidl::encoding::ResourceDialect>
13973        fidl::encoding::Encode<WlanFullmacImplQuerySpectrumManagementSupportResponse, D>
13974        for &WlanFullmacImplQuerySpectrumManagementSupportResponse
13975    {
13976        unsafe fn encode(
13977            self,
13978            encoder: &mut fidl::encoding::Encoder<'_, D>,
13979            offset: usize,
13980            mut depth: fidl::encoding::Depth,
13981        ) -> fidl::Result<()> {
13982            encoder.debug_check_bounds::<WlanFullmacImplQuerySpectrumManagementSupportResponse>(
13983                offset,
13984            );
13985            // Vector header
13986            let max_ordinal: u64 = self.max_ordinal_present();
13987            encoder.write_num(max_ordinal, offset);
13988            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13989            // Calling encoder.out_of_line_offset(0) is not allowed.
13990            if max_ordinal == 0 {
13991                return Ok(());
13992            }
13993            depth.increment()?;
13994            let envelope_size = 8;
13995            let bytes_len = max_ordinal as usize * envelope_size;
13996            #[allow(unused_variables)]
13997            let offset = encoder.out_of_line_offset(bytes_len);
13998            let mut _prev_end_offset: usize = 0;
13999            if 1 > max_ordinal {
14000                return Ok(());
14001            }
14002
14003            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14004            // are envelope_size bytes.
14005            let cur_offset: usize = (1 - 1) * envelope_size;
14006
14007            // Zero reserved fields.
14008            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14009
14010            // Safety:
14011            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14012            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14013            //   envelope_size bytes, there is always sufficient room.
14014            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common__common::SpectrumManagementSupport, D>(
14015            self.resp.as_ref().map(<fidl_fuchsia_wlan_common__common::SpectrumManagementSupport as fidl::encoding::ValueTypeMarker>::borrow),
14016            encoder, offset + cur_offset, depth
14017        )?;
14018
14019            _prev_end_offset = cur_offset + envelope_size;
14020
14021            Ok(())
14022        }
14023    }
14024
14025    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14026        for WlanFullmacImplQuerySpectrumManagementSupportResponse
14027    {
14028        #[inline(always)]
14029        fn new_empty() -> Self {
14030            Self::default()
14031        }
14032
14033        unsafe fn decode(
14034            &mut self,
14035            decoder: &mut fidl::encoding::Decoder<'_, D>,
14036            offset: usize,
14037            mut depth: fidl::encoding::Depth,
14038        ) -> fidl::Result<()> {
14039            decoder.debug_check_bounds::<Self>(offset);
14040            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14041                None => return Err(fidl::Error::NotNullable),
14042                Some(len) => len,
14043            };
14044            // Calling decoder.out_of_line_offset(0) is not allowed.
14045            if len == 0 {
14046                return Ok(());
14047            };
14048            depth.increment()?;
14049            let envelope_size = 8;
14050            let bytes_len = len * envelope_size;
14051            let offset = decoder.out_of_line_offset(bytes_len)?;
14052            // Decode the envelope for each type.
14053            let mut _next_ordinal_to_read = 0;
14054            let mut next_offset = offset;
14055            let end_offset = offset + bytes_len;
14056            _next_ordinal_to_read += 1;
14057            if next_offset >= end_offset {
14058                return Ok(());
14059            }
14060
14061            // Decode unknown envelopes for gaps in ordinals.
14062            while _next_ordinal_to_read < 1 {
14063                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14064                _next_ordinal_to_read += 1;
14065                next_offset += envelope_size;
14066            }
14067
14068            let next_out_of_line = decoder.next_out_of_line();
14069            let handles_before = decoder.remaining_handles();
14070            if let Some((inlined, num_bytes, num_handles)) =
14071                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14072            {
14073                let member_inline_size = <fidl_fuchsia_wlan_common__common::SpectrumManagementSupport as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14074                if inlined != (member_inline_size <= 4) {
14075                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14076                }
14077                let inner_offset;
14078                let mut inner_depth = depth.clone();
14079                if inlined {
14080                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14081                    inner_offset = next_offset;
14082                } else {
14083                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14084                    inner_depth.increment()?;
14085                }
14086                let val_ref = self.resp.get_or_insert_with(|| {
14087                    fidl::new_empty!(fidl_fuchsia_wlan_common__common::SpectrumManagementSupport, D)
14088                });
14089                fidl::decode!(
14090                    fidl_fuchsia_wlan_common__common::SpectrumManagementSupport,
14091                    D,
14092                    val_ref,
14093                    decoder,
14094                    inner_offset,
14095                    inner_depth
14096                )?;
14097                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14098                {
14099                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14100                }
14101                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14102                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14103                }
14104            }
14105
14106            next_offset += envelope_size;
14107
14108            // Decode the remaining unknown envelopes.
14109            while next_offset < end_offset {
14110                _next_ordinal_to_read += 1;
14111                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14112                next_offset += envelope_size;
14113            }
14114
14115            Ok(())
14116        }
14117    }
14118
14119    impl WlanFullmacImplQueryTelemetrySupportResponse {
14120        #[inline(always)]
14121        fn max_ordinal_present(&self) -> u64 {
14122            if let Some(_) = self.resp {
14123                return 1;
14124            }
14125            0
14126        }
14127    }
14128
14129    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplQueryTelemetrySupportResponse {
14130        type Borrowed<'a> = &'a Self;
14131        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14132            value
14133        }
14134    }
14135
14136    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplQueryTelemetrySupportResponse {
14137        type Owned = Self;
14138
14139        #[inline(always)]
14140        fn inline_align(_context: fidl::encoding::Context) -> usize {
14141            8
14142        }
14143
14144        #[inline(always)]
14145        fn inline_size(_context: fidl::encoding::Context) -> usize {
14146            16
14147        }
14148    }
14149
14150    unsafe impl<D: fidl::encoding::ResourceDialect>
14151        fidl::encoding::Encode<WlanFullmacImplQueryTelemetrySupportResponse, D>
14152        for &WlanFullmacImplQueryTelemetrySupportResponse
14153    {
14154        unsafe fn encode(
14155            self,
14156            encoder: &mut fidl::encoding::Encoder<'_, D>,
14157            offset: usize,
14158            mut depth: fidl::encoding::Depth,
14159        ) -> fidl::Result<()> {
14160            encoder.debug_check_bounds::<WlanFullmacImplQueryTelemetrySupportResponse>(offset);
14161            // Vector header
14162            let max_ordinal: u64 = self.max_ordinal_present();
14163            encoder.write_num(max_ordinal, offset);
14164            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14165            // Calling encoder.out_of_line_offset(0) is not allowed.
14166            if max_ordinal == 0 {
14167                return Ok(());
14168            }
14169            depth.increment()?;
14170            let envelope_size = 8;
14171            let bytes_len = max_ordinal as usize * envelope_size;
14172            #[allow(unused_variables)]
14173            let offset = encoder.out_of_line_offset(bytes_len);
14174            let mut _prev_end_offset: usize = 0;
14175            if 1 > max_ordinal {
14176                return Ok(());
14177            }
14178
14179            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14180            // are envelope_size bytes.
14181            let cur_offset: usize = (1 - 1) * envelope_size;
14182
14183            // Zero reserved fields.
14184            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14185
14186            // Safety:
14187            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14188            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14189            //   envelope_size bytes, there is always sufficient room.
14190            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_stats__common::TelemetrySupport, D>(
14191            self.resp.as_ref().map(<fidl_fuchsia_wlan_stats__common::TelemetrySupport as fidl::encoding::ValueTypeMarker>::borrow),
14192            encoder, offset + cur_offset, depth
14193        )?;
14194
14195            _prev_end_offset = cur_offset + envelope_size;
14196
14197            Ok(())
14198        }
14199    }
14200
14201    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14202        for WlanFullmacImplQueryTelemetrySupportResponse
14203    {
14204        #[inline(always)]
14205        fn new_empty() -> Self {
14206            Self::default()
14207        }
14208
14209        unsafe fn decode(
14210            &mut self,
14211            decoder: &mut fidl::encoding::Decoder<'_, D>,
14212            offset: usize,
14213            mut depth: fidl::encoding::Depth,
14214        ) -> fidl::Result<()> {
14215            decoder.debug_check_bounds::<Self>(offset);
14216            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14217                None => return Err(fidl::Error::NotNullable),
14218                Some(len) => len,
14219            };
14220            // Calling decoder.out_of_line_offset(0) is not allowed.
14221            if len == 0 {
14222                return Ok(());
14223            };
14224            depth.increment()?;
14225            let envelope_size = 8;
14226            let bytes_len = len * envelope_size;
14227            let offset = decoder.out_of_line_offset(bytes_len)?;
14228            // Decode the envelope for each type.
14229            let mut _next_ordinal_to_read = 0;
14230            let mut next_offset = offset;
14231            let end_offset = offset + bytes_len;
14232            _next_ordinal_to_read += 1;
14233            if next_offset >= end_offset {
14234                return Ok(());
14235            }
14236
14237            // Decode unknown envelopes for gaps in ordinals.
14238            while _next_ordinal_to_read < 1 {
14239                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14240                _next_ordinal_to_read += 1;
14241                next_offset += envelope_size;
14242            }
14243
14244            let next_out_of_line = decoder.next_out_of_line();
14245            let handles_before = decoder.remaining_handles();
14246            if let Some((inlined, num_bytes, num_handles)) =
14247                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14248            {
14249                let member_inline_size = <fidl_fuchsia_wlan_stats__common::TelemetrySupport as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14250                if inlined != (member_inline_size <= 4) {
14251                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14252                }
14253                let inner_offset;
14254                let mut inner_depth = depth.clone();
14255                if inlined {
14256                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14257                    inner_offset = next_offset;
14258                } else {
14259                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14260                    inner_depth.increment()?;
14261                }
14262                let val_ref = self.resp.get_or_insert_with(|| {
14263                    fidl::new_empty!(fidl_fuchsia_wlan_stats__common::TelemetrySupport, D)
14264                });
14265                fidl::decode!(
14266                    fidl_fuchsia_wlan_stats__common::TelemetrySupport,
14267                    D,
14268                    val_ref,
14269                    decoder,
14270                    inner_offset,
14271                    inner_depth
14272                )?;
14273                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14274                {
14275                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14276                }
14277                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14278                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14279                }
14280            }
14281
14282            next_offset += envelope_size;
14283
14284            // Decode the remaining unknown envelopes.
14285            while next_offset < end_offset {
14286                _next_ordinal_to_read += 1;
14287                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14288                next_offset += envelope_size;
14289            }
14290
14291            Ok(())
14292        }
14293    }
14294
14295    impl WlanFullmacImplQueryResponse {
14296        #[inline(always)]
14297        fn max_ordinal_present(&self) -> u64 {
14298            if let Some(_) = self.factory_addr {
14299                return 4;
14300            }
14301            if let Some(_) = self.band_caps {
14302                return 3;
14303            }
14304            if let Some(_) = self.role {
14305                return 2;
14306            }
14307            if let Some(_) = self.sta_addr {
14308                return 1;
14309            }
14310            0
14311        }
14312    }
14313
14314    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplQueryResponse {
14315        type Borrowed<'a> = &'a Self;
14316        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14317            value
14318        }
14319    }
14320
14321    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplQueryResponse {
14322        type Owned = Self;
14323
14324        #[inline(always)]
14325        fn inline_align(_context: fidl::encoding::Context) -> usize {
14326            8
14327        }
14328
14329        #[inline(always)]
14330        fn inline_size(_context: fidl::encoding::Context) -> usize {
14331            16
14332        }
14333    }
14334
14335    unsafe impl<D: fidl::encoding::ResourceDialect>
14336        fidl::encoding::Encode<WlanFullmacImplQueryResponse, D> for &WlanFullmacImplQueryResponse
14337    {
14338        unsafe fn encode(
14339            self,
14340            encoder: &mut fidl::encoding::Encoder<'_, D>,
14341            offset: usize,
14342            mut depth: fidl::encoding::Depth,
14343        ) -> fidl::Result<()> {
14344            encoder.debug_check_bounds::<WlanFullmacImplQueryResponse>(offset);
14345            // Vector header
14346            let max_ordinal: u64 = self.max_ordinal_present();
14347            encoder.write_num(max_ordinal, offset);
14348            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14349            // Calling encoder.out_of_line_offset(0) is not allowed.
14350            if max_ordinal == 0 {
14351                return Ok(());
14352            }
14353            depth.increment()?;
14354            let envelope_size = 8;
14355            let bytes_len = max_ordinal as usize * envelope_size;
14356            #[allow(unused_variables)]
14357            let offset = encoder.out_of_line_offset(bytes_len);
14358            let mut _prev_end_offset: usize = 0;
14359            if 1 > max_ordinal {
14360                return Ok(());
14361            }
14362
14363            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14364            // are envelope_size bytes.
14365            let cur_offset: usize = (1 - 1) * envelope_size;
14366
14367            // Zero reserved fields.
14368            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14369
14370            // Safety:
14371            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14372            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14373            //   envelope_size bytes, there is always sufficient room.
14374            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
14375                self.sta_addr
14376                    .as_ref()
14377                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
14378                encoder,
14379                offset + cur_offset,
14380                depth,
14381            )?;
14382
14383            _prev_end_offset = cur_offset + envelope_size;
14384            if 2 > max_ordinal {
14385                return Ok(());
14386            }
14387
14388            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14389            // are envelope_size bytes.
14390            let cur_offset: usize = (2 - 1) * envelope_size;
14391
14392            // Zero reserved fields.
14393            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14394
14395            // Safety:
14396            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14397            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14398            //   envelope_size bytes, there is always sufficient room.
14399            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common__common::WlanMacRole, D>(
14400            self.role.as_ref().map(<fidl_fuchsia_wlan_common__common::WlanMacRole as fidl::encoding::ValueTypeMarker>::borrow),
14401            encoder, offset + cur_offset, depth
14402        )?;
14403
14404            _prev_end_offset = cur_offset + envelope_size;
14405            if 3 > max_ordinal {
14406                return Ok(());
14407            }
14408
14409            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14410            // are envelope_size bytes.
14411            let cur_offset: usize = (3 - 1) * envelope_size;
14412
14413            // Zero reserved fields.
14414            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14415
14416            // Safety:
14417            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14418            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14419            //   envelope_size bytes, there is always sufficient room.
14420            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<BandCapability, 16>, D>(
14421            self.band_caps.as_ref().map(<fidl::encoding::Vector<BandCapability, 16> as fidl::encoding::ValueTypeMarker>::borrow),
14422            encoder, offset + cur_offset, depth
14423        )?;
14424
14425            _prev_end_offset = cur_offset + envelope_size;
14426            if 4 > max_ordinal {
14427                return Ok(());
14428            }
14429
14430            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14431            // are envelope_size bytes.
14432            let cur_offset: usize = (4 - 1) * envelope_size;
14433
14434            // Zero reserved fields.
14435            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14436
14437            // Safety:
14438            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14439            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14440            //   envelope_size bytes, there is always sufficient room.
14441            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
14442                self.factory_addr
14443                    .as_ref()
14444                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
14445                encoder,
14446                offset + cur_offset,
14447                depth,
14448            )?;
14449
14450            _prev_end_offset = cur_offset + envelope_size;
14451
14452            Ok(())
14453        }
14454    }
14455
14456    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14457        for WlanFullmacImplQueryResponse
14458    {
14459        #[inline(always)]
14460        fn new_empty() -> Self {
14461            Self::default()
14462        }
14463
14464        unsafe fn decode(
14465            &mut self,
14466            decoder: &mut fidl::encoding::Decoder<'_, D>,
14467            offset: usize,
14468            mut depth: fidl::encoding::Depth,
14469        ) -> fidl::Result<()> {
14470            decoder.debug_check_bounds::<Self>(offset);
14471            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14472                None => return Err(fidl::Error::NotNullable),
14473                Some(len) => len,
14474            };
14475            // Calling decoder.out_of_line_offset(0) is not allowed.
14476            if len == 0 {
14477                return Ok(());
14478            };
14479            depth.increment()?;
14480            let envelope_size = 8;
14481            let bytes_len = len * envelope_size;
14482            let offset = decoder.out_of_line_offset(bytes_len)?;
14483            // Decode the envelope for each type.
14484            let mut _next_ordinal_to_read = 0;
14485            let mut next_offset = offset;
14486            let end_offset = offset + bytes_len;
14487            _next_ordinal_to_read += 1;
14488            if next_offset >= end_offset {
14489                return Ok(());
14490            }
14491
14492            // Decode unknown envelopes for gaps in ordinals.
14493            while _next_ordinal_to_read < 1 {
14494                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14495                _next_ordinal_to_read += 1;
14496                next_offset += envelope_size;
14497            }
14498
14499            let next_out_of_line = decoder.next_out_of_line();
14500            let handles_before = decoder.remaining_handles();
14501            if let Some((inlined, num_bytes, num_handles)) =
14502                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14503            {
14504                let member_inline_size =
14505                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
14506                        decoder.context,
14507                    );
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
14521                    .sta_addr
14522                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
14523                fidl::decode!(fidl::encoding::Array<u8, 6>, 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 < 2 {
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 = <fidl_fuchsia_wlan_common__common::WlanMacRole as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14552                if inlined != (member_inline_size <= 4) {
14553                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14554                }
14555                let inner_offset;
14556                let mut inner_depth = depth.clone();
14557                if inlined {
14558                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14559                    inner_offset = next_offset;
14560                } else {
14561                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14562                    inner_depth.increment()?;
14563                }
14564                let val_ref = self.role.get_or_insert_with(|| {
14565                    fidl::new_empty!(fidl_fuchsia_wlan_common__common::WlanMacRole, D)
14566                });
14567                fidl::decode!(
14568                    fidl_fuchsia_wlan_common__common::WlanMacRole,
14569                    D,
14570                    val_ref,
14571                    decoder,
14572                    inner_offset,
14573                    inner_depth
14574                )?;
14575                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14576                {
14577                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14578                }
14579                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14580                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14581                }
14582            }
14583
14584            next_offset += envelope_size;
14585            _next_ordinal_to_read += 1;
14586            if next_offset >= end_offset {
14587                return Ok(());
14588            }
14589
14590            // Decode unknown envelopes for gaps in ordinals.
14591            while _next_ordinal_to_read < 3 {
14592                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14593                _next_ordinal_to_read += 1;
14594                next_offset += envelope_size;
14595            }
14596
14597            let next_out_of_line = decoder.next_out_of_line();
14598            let handles_before = decoder.remaining_handles();
14599            if let Some((inlined, num_bytes, num_handles)) =
14600                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14601            {
14602                let member_inline_size = <fidl::encoding::Vector<BandCapability, 16> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14603                if inlined != (member_inline_size <= 4) {
14604                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14605                }
14606                let inner_offset;
14607                let mut inner_depth = depth.clone();
14608                if inlined {
14609                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14610                    inner_offset = next_offset;
14611                } else {
14612                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14613                    inner_depth.increment()?;
14614                }
14615                let val_ref = self.band_caps.get_or_insert_with(
14616                    || fidl::new_empty!(fidl::encoding::Vector<BandCapability, 16>, D),
14617                );
14618                fidl::decode!(fidl::encoding::Vector<BandCapability, 16>, D, val_ref, decoder, inner_offset, inner_depth)?;
14619                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14620                {
14621                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14622                }
14623                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14624                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14625                }
14626            }
14627
14628            next_offset += envelope_size;
14629            _next_ordinal_to_read += 1;
14630            if next_offset >= end_offset {
14631                return Ok(());
14632            }
14633
14634            // Decode unknown envelopes for gaps in ordinals.
14635            while _next_ordinal_to_read < 4 {
14636                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14637                _next_ordinal_to_read += 1;
14638                next_offset += envelope_size;
14639            }
14640
14641            let next_out_of_line = decoder.next_out_of_line();
14642            let handles_before = decoder.remaining_handles();
14643            if let Some((inlined, num_bytes, num_handles)) =
14644                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14645            {
14646                let member_inline_size =
14647                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
14648                        decoder.context,
14649                    );
14650                if inlined != (member_inline_size <= 4) {
14651                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14652                }
14653                let inner_offset;
14654                let mut inner_depth = depth.clone();
14655                if inlined {
14656                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14657                    inner_offset = next_offset;
14658                } else {
14659                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14660                    inner_depth.increment()?;
14661                }
14662                let val_ref = self
14663                    .factory_addr
14664                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
14665                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
14666                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14667                {
14668                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14669                }
14670                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14671                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14672                }
14673            }
14674
14675            next_offset += envelope_size;
14676
14677            // Decode the remaining unknown envelopes.
14678            while next_offset < end_offset {
14679                _next_ordinal_to_read += 1;
14680                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14681                next_offset += envelope_size;
14682            }
14683
14684            Ok(())
14685        }
14686    }
14687
14688    impl WlanFullmacOwePublicKey {
14689        #[inline(always)]
14690        fn max_ordinal_present(&self) -> u64 {
14691            if let Some(_) = self.key {
14692                return 2;
14693            }
14694            if let Some(_) = self.group {
14695                return 1;
14696            }
14697            0
14698        }
14699    }
14700
14701    impl fidl::encoding::ValueTypeMarker for WlanFullmacOwePublicKey {
14702        type Borrowed<'a> = &'a Self;
14703        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14704            value
14705        }
14706    }
14707
14708    unsafe impl fidl::encoding::TypeMarker for WlanFullmacOwePublicKey {
14709        type Owned = Self;
14710
14711        #[inline(always)]
14712        fn inline_align(_context: fidl::encoding::Context) -> usize {
14713            8
14714        }
14715
14716        #[inline(always)]
14717        fn inline_size(_context: fidl::encoding::Context) -> usize {
14718            16
14719        }
14720    }
14721
14722    unsafe impl<D: fidl::encoding::ResourceDialect>
14723        fidl::encoding::Encode<WlanFullmacOwePublicKey, D> for &WlanFullmacOwePublicKey
14724    {
14725        unsafe fn encode(
14726            self,
14727            encoder: &mut fidl::encoding::Encoder<'_, D>,
14728            offset: usize,
14729            mut depth: fidl::encoding::Depth,
14730        ) -> fidl::Result<()> {
14731            encoder.debug_check_bounds::<WlanFullmacOwePublicKey>(offset);
14732            // Vector header
14733            let max_ordinal: u64 = self.max_ordinal_present();
14734            encoder.write_num(max_ordinal, offset);
14735            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14736            // Calling encoder.out_of_line_offset(0) is not allowed.
14737            if max_ordinal == 0 {
14738                return Ok(());
14739            }
14740            depth.increment()?;
14741            let envelope_size = 8;
14742            let bytes_len = max_ordinal as usize * envelope_size;
14743            #[allow(unused_variables)]
14744            let offset = encoder.out_of_line_offset(bytes_len);
14745            let mut _prev_end_offset: usize = 0;
14746            if 1 > max_ordinal {
14747                return Ok(());
14748            }
14749
14750            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14751            // are envelope_size bytes.
14752            let cur_offset: usize = (1 - 1) * envelope_size;
14753
14754            // Zero reserved fields.
14755            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14756
14757            // Safety:
14758            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14759            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14760            //   envelope_size bytes, there is always sufficient room.
14761            fidl::encoding::encode_in_envelope_optional::<u16, D>(
14762                self.group.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
14763                encoder,
14764                offset + cur_offset,
14765                depth,
14766            )?;
14767
14768            _prev_end_offset = cur_offset + envelope_size;
14769            if 2 > max_ordinal {
14770                return Ok(());
14771            }
14772
14773            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14774            // are envelope_size bytes.
14775            let cur_offset: usize = (2 - 1) * envelope_size;
14776
14777            // Zero reserved fields.
14778            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14779
14780            // Safety:
14781            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14782            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14783            //   envelope_size bytes, there is always sufficient room.
14784            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
14785            self.key.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
14786            encoder, offset + cur_offset, depth
14787        )?;
14788
14789            _prev_end_offset = cur_offset + envelope_size;
14790
14791            Ok(())
14792        }
14793    }
14794
14795    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14796        for WlanFullmacOwePublicKey
14797    {
14798        #[inline(always)]
14799        fn new_empty() -> Self {
14800            Self::default()
14801        }
14802
14803        unsafe fn decode(
14804            &mut self,
14805            decoder: &mut fidl::encoding::Decoder<'_, D>,
14806            offset: usize,
14807            mut depth: fidl::encoding::Depth,
14808        ) -> fidl::Result<()> {
14809            decoder.debug_check_bounds::<Self>(offset);
14810            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14811                None => return Err(fidl::Error::NotNullable),
14812                Some(len) => len,
14813            };
14814            // Calling decoder.out_of_line_offset(0) is not allowed.
14815            if len == 0 {
14816                return Ok(());
14817            };
14818            depth.increment()?;
14819            let envelope_size = 8;
14820            let bytes_len = len * envelope_size;
14821            let offset = decoder.out_of_line_offset(bytes_len)?;
14822            // Decode the envelope for each type.
14823            let mut _next_ordinal_to_read = 0;
14824            let mut next_offset = offset;
14825            let end_offset = offset + bytes_len;
14826            _next_ordinal_to_read += 1;
14827            if next_offset >= end_offset {
14828                return Ok(());
14829            }
14830
14831            // Decode unknown envelopes for gaps in ordinals.
14832            while _next_ordinal_to_read < 1 {
14833                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14834                _next_ordinal_to_read += 1;
14835                next_offset += envelope_size;
14836            }
14837
14838            let next_out_of_line = decoder.next_out_of_line();
14839            let handles_before = decoder.remaining_handles();
14840            if let Some((inlined, num_bytes, num_handles)) =
14841                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14842            {
14843                let member_inline_size =
14844                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14845                if inlined != (member_inline_size <= 4) {
14846                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14847                }
14848                let inner_offset;
14849                let mut inner_depth = depth.clone();
14850                if inlined {
14851                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14852                    inner_offset = next_offset;
14853                } else {
14854                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14855                    inner_depth.increment()?;
14856                }
14857                let val_ref = self.group.get_or_insert_with(|| fidl::new_empty!(u16, D));
14858                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
14859                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14860                {
14861                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14862                }
14863                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14864                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14865                }
14866            }
14867
14868            next_offset += envelope_size;
14869            _next_ordinal_to_read += 1;
14870            if next_offset >= end_offset {
14871                return Ok(());
14872            }
14873
14874            // Decode unknown envelopes for gaps in ordinals.
14875            while _next_ordinal_to_read < 2 {
14876                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14877                _next_ordinal_to_read += 1;
14878                next_offset += envelope_size;
14879            }
14880
14881            let next_out_of_line = decoder.next_out_of_line();
14882            let handles_before = decoder.remaining_handles();
14883            if let Some((inlined, num_bytes, num_handles)) =
14884                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14885            {
14886                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14887                if inlined != (member_inline_size <= 4) {
14888                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14889                }
14890                let inner_offset;
14891                let mut inner_depth = depth.clone();
14892                if inlined {
14893                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14894                    inner_offset = next_offset;
14895                } else {
14896                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14897                    inner_depth.increment()?;
14898                }
14899                let val_ref = self.key.get_or_insert_with(|| {
14900                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
14901                });
14902                fidl::decode!(
14903                    fidl::encoding::UnboundedVector<u8>,
14904                    D,
14905                    val_ref,
14906                    decoder,
14907                    inner_offset,
14908                    inner_depth
14909                )?;
14910                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14911                {
14912                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14913                }
14914                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14915                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14916                }
14917            }
14918
14919            next_offset += envelope_size;
14920
14921            // Decode the remaining unknown envelopes.
14922            while next_offset < end_offset {
14923                _next_ordinal_to_read += 1;
14924                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14925                next_offset += envelope_size;
14926            }
14927
14928            Ok(())
14929        }
14930    }
14931}